Publishing¶
After your project is built, you can distribute it using the publish
command.
The -p
/--publisher
option controls which publisher to use, with the default being index.
Artifact selection¶
By default, the dist
directory located at the root of your project will be used:
$ hatch publish
dist/hatch_demo-1rc0-py3-none-any.whl ... success
dist/hatch_demo-1rc0.tar.gz ... success
[hatch-demo]
https://pypi.org/project/hatch-demo/1rc0/
You can instead pass specific paths as arguments:
hatch publish /path/to/artifacts foo-1.tar.gz
Only files ending with .whl
or .tar.gz
will be published.
Repository¶
You can select the repository with which to upload using the -r
/--repo
option or by setting the HATCH_INDEX_REPO
environment variable.
Rather than specifying the full URL of a repository, you can use a named repository from a publish.index.repos
table defined in Hatch's config file:
[publish.index.repos.private]
url = "..."
...
The following repository names are reserved by Hatch and cannot be overridden:
Name | Repository |
---|---|
main | https://upload.pypi.org/legacy/ |
test | https://test.pypi.org/legacy/ |
The main
repository is used by default.
Authentication¶
The first time you publish to a repository you need to authenticate using the -u
/--user
(environment variable HATCH_INDEX_USER
) and -a
/--auth
(environment variable HATCH_INDEX_AUTH
) options. You will be prompted if either option is not provided.
The user that most recently published to the chosen repository is cached, with their credentials saved to the system keyring, so that they will no longer need to provide authentication information.
For automated releasing to PyPI, it is recommended that you use per-project API tokens.
Confirmation¶
You can require a confirmation prompt or use of the -y
/--yes
flag by setting publishers' disable
option to true
in either Hatch's config file or project-specific configuration (which takes precedence):
[publish.index]
disable = true
[tool.hatch.publish.index]
disable = true
[publish.index]
disable = true