Skip to content

Build from source fails: project.license SPDX string incompatible with setuptools<77 #840

@fruch

Description

@fruch

Problem

Installing scylla-driver from source (git) fails with:

configuration error: `project.license` must be valid exactly by one definition (2 matches found):

Root Cause

The pyproject.toml uses the PEP 639 SPDX license expression format:

license = "Apache-2.0"

This format is only supported by setuptools >= 77. However, the [build-system] section requires only setuptools>=70:

[build-system]
requires = ["setuptools>=70", "Cython"]

When a downstream project constrains setuptools to <75 (e.g., via build-constraint-dependencies), setuptools 74 sees the SPDX string and interprets it as matching both the old dict-style and new string-style license definitions, causing the error.

Suggested Fix

Either:

  1. Bump the minimum setuptools to >=77 in [build-system].requires
  2. Or use the old format: license = {text = "Apache-2.0"}

Option 2 is more compatible with downstream consumers that pin older setuptools versions.

Reproduction

pip install "setuptools>=70,<75"
pip install "scylla-driver @ git+https://github.com/scylladb/python-driver.git@dk/fix-for-proxy-access-2"

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions