Skip to content

Publishing qcs-api-client-common to PyPI fails due to git-based dependency #15

Description

@asaites

The qcs-api-client-common project uses the pyo3_linter that lives in the rigetti-pyo3 repository. That dependency is specified in the pyproject.toml like this:

[project.optional-dependencies]
dev = [
    "pyo3_linter @ git+https://github.com/rigetti/rigetti-pyo3.git@feat-pyo3-linter#subdirectory=pyo3_linter",
    # other dependencies...
]

PyPI does not allow git-based dependencies like that, so publication fails.

On the one hand, we could publish that package to PyPI to enable this, but it's really quite specific to how rigetti handles its bindings.

Instead, I'd argue that optional-dependencies are the wrong place for dev dependencies; since they aren't meant to enable additional features, they really belong to the domain of developer tooling (in this case uv). For example, quil-rs's pyproject.toml specifies these according to how poetry handles dev dependencies:

[tool.poetry.group.dev]
optional = true
[tool.poetry.group.dev.dependencies]
pyo3_linter =  { git = "https://github.com/rigetti/rigetti-pyo3.git", rev = "feat-pyo3-linter", subdirectory = "pyo3_linter" }
# other dependencies...

uv has it's own flavor of the same, and I think we should use that instead.

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