← Back to issue list

Poetry integration

View original Github issue

Metadata

Project
charmcraft
Number
#18
Type
issue
State
closed
Author
knkski
Labels
—
Created
Updated
Closed

Current evaluation

Poetry support was ultimately delivered as Charmcraft-specific python/poetry craft-parts plugins, added in PR #1899 (commit 8b748f3e, 2023), superseding the older build.py requirements.txt idea; issue closed once shipped.

Resolution: closed resolved

Reason: After chipaca's initial 2020 refusal, the request was reopened in 2021 and delivered in a different form: PR #1899 (commit 8b748f3e, "feat: add Python and Poetry plugins") added charmcraft/parts/plugins/_poetry.py and _python.py, registered in charmcraft/parts/__init__.py under get_app_plugins(), with follow-up fixes in #1968, #2044 and #2835 and migration docs (docs/howto/migrate-plugins/charm-to-poetry.rst).

Evaluated by: mr-cal-bot

No scores available.

Issue body

I am trying out the new requirements.txt integration, and it is quite nice. However, for more complex dependency management, it would be handy to be able to use [Poetry](https://python-poetry.org/docs/) instead of a plain requirements.txt, as Poetry ensures that dependency installation is deterministic by generating a lock file that can be used to install dependencies.

Evaluation history

Date Model Scores Action Summary
stealth/space-bunny-alpha — closed resolved Poetry support was ultimately delivered as Charmcraft-specific python/poetry craft-parts plugins, added in PR #1899 (commit 8b748f3e, 2023), superseding the older build.py requirements.txt idea; issue closed once shipped.
stealth/space-bunny-alpha — closed resolved Poetry support shipped through Charmcraft-specific Python and Poetry plugins in canonical/charmcraft#1899, commit 8b748f3e.
stealth/space-bunny-alpha — closed resolved Poetry support was delivered through Python and Poetry plugins in merged PR #1899 (commit 8b748f3e), providing the requested dependency workflow.
qwen/qwen3.6-35b-a3b — — Maintainers rejected native Poetry integration due to maintenance overhead. A workaround using poetry export to generate requirements.txt was suggested. The feature request remains unimplemented and the issue is closed.
qwen/qwen3.6-35b-a3b — — Rejected due to maintenance burden and project scope. A workaround exporting Poetry dependencies to requirements.txt was proposed but never implemented. The issue remains closed and abandoned.
qwen/qwen3.6-35b-a3b — — Rejected. Maintainers declined implementing Poetry integration due to high maintenance burden and a need to keep the project narrowly focused. The suggested workaround to export Poetry dependencies to requirements.txt was not adopted, and the feature remains unimplemented.
qwen3.6-35b-a3b-mtp-q6 — — Rejected due to maintenance overhead. A contributor suggested using poetry export to generate requirements.txt as a workaround. The issue was closed without implementation, and later attempts to reopen it failed.

Update history

No update history recorded yet.

Related work

  • Likely Fixed By: canonical/charmcraft#1899 (confidence 95%)

    Merged PR adding Charmcraft-specific Python and Poetry plugins (commit 8b748f3e).

  • Related To: canonical/charmcraft#1873 (confidence 88%)

    Tracking issue for creating Charmcraft-specific python/poetry plugins, implemented by #1899.

  • Superseded By: canonical/charmcraft#1840 (confidence 70%)

    Experimental Poetry plugin PR closed unmerged in favour of #1899.

  • Related To: canonical/charmcraft#2044 (confidence 60%)

    Later fix to the poetry plugin (commit 0db15c18) using params instead of env vars.

Related issues

Issue Project State Summary Similarity
#1840 [EXPERIMENTAL]: poetry plugin charmcraft closed Experimental Poetry plugin PR closed unmerged in favour of charmcraft#1899, merged as commit 8b748f3e, adding charmcraft/parts/plugins/_poetry.py and _python.py with charm-oriented defaults.
81%
#1873 Create charmcraft-specific versions of the upstream `python` and `poetry` plugins charmcraft closed Charmcraft-specific Python and Poetry plugins were added by merged PR #1899 (commit 8b748f3e), replacing the experimental work in #1840.
78%
#1899 feat: add Python and Poetry plugins charmcraft merged Merged into main via commit 8b748f3e, adding Charmcraft-specific Python and Poetry plugins with charm-oriented venv, pip, source-copy, and binary defaults.
77%
#1843 Add charmcraft-specific versions of upstream python plugins charmcraft open Request to add charmcraft-specific python/poetry plugins. Implemented by commit 8b748f3e (PR #1899) alongside #1873; the plugins are registered as 'python'/'poetry' in get_app_plugins() and have received later fixes (#1968, #2044, #2835).
76%
#701 Enable the poetry plugin rockcraft closed Poetry support was implemented by merged PR #717 (commit 422a2e9b), adding a Rockcraft-specific Poetry plugin and shared Python behavior for release 1.6.0.
75%
#2025 Poetry plugin: use parameters rather than env vars charmcraft closed Implemented parameter-based Poetry pip options in charmcraft#2044 (commit 0db15c18); the issue was later closed without a maintainer explanation.
73%
#820 feat(plugin): add poetry plugin craft-parts merged Merged Poetry plugin support in commit 8b0d76c8, adding first-class build-system handling via poetry install and resolving #707.
73%
#1940 feat(docs): add python and poetry plugin docs charmcraft merged PR #1940 merged as commit 408650c8, adding Python and Poetry plugin documentation (+144 lines, 6 files). Builds on #1939 (craft-parts common docs) and required craft-parts#872 anchors; merged despite12 unresolved review comments.
73%
#5025 Enable the poetry plugin snapcraft closed Poetry source support delivered by merged PR canonical/snapcraft#5090 (commit 5a42f0aa5), adding a Snapcraft-specific Poetry plugin for core22/core24, closing the request. Tracked internally as CRAFT-3363.
72%
#2026 Change poetry plugin keep bins default to True charmcraft closed Superseded by charmcraft#2036, merged as craft-parts commit 7fa20644; Python and Poetry charms now always retain a portable venv/bin/activate without Python binaries.
72%