This is a Poetry plugin that transparently takes care of authentication with Azure Artifacts feeds. This is heavily based on semgrep/poetry-codeartifact-plugin.
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"
Use the provided devcontainer or run the following for local development:
# Install uv
# https://docs.astral.sh/uv/getting-started/installation/
uv tool install vscode-task-runner
vtr install