Skip to content

NathanVaughn/poetry-azure-artifacts-plugin

Repository files navigation

Poetry Azure Artifacts Plugin

Ruff pre-commit GitHub license PyPi version PyPi versions PyPi downloads


This is a Poetry plugin that transparently takes care of authentication with Azure Artifacts feeds. This is heavily based on semgrep/poetry-codeartifact-plugin.

Usage

This plugin requires Python 3.9+ which is a bit less lenient than Poetry itself.

Install this plugin with

poetry self add poetry-azure-artifacts-plugin

or

pipx inject poetry poetry-azure-artifacts-plugin

In your pyproject.toml file, add your Azure Artifacts feed URL as a source.

[[tool.poetry.source]]
name = "ado"
url  = "https://pkgs.dev.azure.com/{organization}/_packaging/{feed}/pypi/simple/"
priority = "primary"

Now, when running poetry install, or poetry lock, Poetry will automatically fetch credentials for your Azure Artifacts feed, utilizing artifacts-keyring. Note: artifacts-keyring requires dotnet to be installed and available in your PATH.

This works by recognizing authentication failures to URLs containing pkgs.dev.azure.com or pkgs.visualstudio.com. If you have an on-premises Azure DevOps server that works with artifacts-keyring, instead make the source name include the text azure-artifacts:

[[tool.poetry.source]]
name = "azure-artifacts-feed"
url  = "https://devops.mydomain.com/{organization}/_packaging/{feed}/pypi/simple/"
priority = "primary"

Development

Use the provided devcontainer or run the following for local development:

python -m pip install pipx --upgrade
pipx ensurepath
pipx install poetry
pipx install vscode-task-runner
# (Optionally) Add pre-commit plugin
poetry self add poetry-pre-commit-plugin