← Back to issue list

python plugin doesn't properly handle dependencies from extra-require in "python-packages"

View original Launchpad issue

Metadata

Project
snapcraft (launchpad)
Number
#1817771
Type
issue
State
open
Author
~ack
Labels
—
Created
Updated
Closed
—

Current evaluation

Python plugin installs deps from only the first extras spec (SQLAlchemy[postgresql] works, [mysql] dropped). Filed against core18, a base since removed; the python-packages handling now lives in craft-parts, not this repo. Unlabelled, no maintainer response.

Suggested action: close stale

Reason: The reported base is retired from this codebase: commits 40136ea9b ('bases: remove support for core18') and 77edc734b ('spread tests: remove support for core18') dropped core18, and docs/release-notes/index.rst now directs core18 builds to Snapcraft 7 on the separate 7.x track. Separately, the offending code no longer lives here — snapcraft/parts/plugins/python_plugin.py is now a thin subclass of craft_parts.plugins.python_plugin that only overrides interpreter lookup, and grepping for 'extras' and 'python_packages' finds no dedup logic in this repo. The issue has had zero maintainer engagement (no labels, no comments) in 2775 days, so it should be redirected to craft-parts rather than fixed here.

Evaluated by: mr-cal-bot

Impact: 22 Quick Win: 1 Complexity: 70 Confidence: 72 Actionability: 18

Issue body

I'm trying to use the following in a core18-based snap, inside a python part: python-packages: - SQLAlchemy[postgresql] - SQLAlchemy[mysql] What happens is that only the dependencies from the first extra-part (specifically psycopg2) gets installed, whereas mysqlclient doesn't. If I specify them explicitly as python-packages: - psycopg2 - mysqlclient it works as expected. It seems multiple extra-require for the same package are not handled correctly.

Evaluation history

Date Model Scores Action Summary
stealth/space-bunny-alpha
Impact: 22
Quick Win: 1
Complexity: 70
Confidence: 72
Actionability: 18
close stale Python plugin installs deps from only the first extras spec (SQLAlchemy[postgresql] works, [mysql] dropped). Filed against core18, a base since removed; the python-packages handling now lives in craft-parts, not this repo. Unlabelled, no maintainer response.
stealth/space-bunny-alpha
Impact: 38
Quick Win: 9
Complexity: 30
Confidence: 97
Actionability: 35
close stale Core18 Python builds install only the first SQLAlchemy extra’s drivers, omitting mysqlclient; core18 support has since been removed from Snapcraft.
qwen/qwen3.8-27b
Impact: 30
Quick Win: 18
Staleness: 95
Complexity: 40
Confidence: 70
Support Request: 10
close stale Python plugin ignores extra-require dependencies when multiple extras are specified for the same package (e.g. SQLAlchemy[postgresql] and SQLAlchemy[mysql]); only the first extra's deps install. 7+ years old, no maintainer activity, core18-based, superseded by newer plugin architecture.
qwen/qwen3.6-35b-a3b
Staleness: 100
Complexity: 20
Confidence: 90
Support Request: 10
close stale Over 7-year-old report regarding Python plugin dependency handling for extra-requirements. Unaddressed, references deprecated core18 base, and likely irrelevant due to major architectural changes in the project.
qwen/qwen3.6-35b-a3b
Staleness: 100
Complexity: 30
Confidence: 90
Support Request: 20
close stale Python plugin fails to install dependencies for multiple extras of the same package in snapcraft. Issue is completely inactive for over 7 years.
qwen3.6-35b-a3b-mtp-q6
Staleness: 98
Complexity: 40
Confidence: 90
Support Request: 10
close stale Python plugin fails to install dependencies for multiple extras in python-packages, only installing the first extra's dependencies. Untriaged and inactive for over 7 years.

Update history

Date Change
created

Related work

  • Blocked By: snapcraft (launchpad)#1817771 (confidence 55%)

    Placeholder removed — the real upstream target is canonical/craft-parts, which is outside the tools available here and could not be verified.

Related issues

No related issues found above the similarity threshold.