How twine 7.0.0 picks the upload password (first hit wins)
- 1
-pflag orTWINE_PASSWORDlong-livedUsually a CI secret such assecrets.PYPI_TOKEN. Logged as "password set by command options". - nothing set
- 2
passwordin~/.pypirclong-livedPlaintext INI file in the home directory. - nothing set
- 3System keyringlong-livedOS credential store. Still a stored token.
- nothing found
- 4Trusted Publishing15 minOnly if the target is PyPI or TestPyPI and the username is
__token__. Exchanges the CI's OIDC token at/_/oidc/mint-token. - not in a supported CI
- 5Interactive prompt"Enter your API token". Fails under
--non-interactive.
A value at step 1, 2, or 3 means step 4 never runs. Source: twine/auth.py and twine/utils.py in twine 7.0.0.
