diff --git a/changelog/.gitignore b/changelog/.gitignore new file mode 100644 index 00000000..f935021a --- /dev/null +++ b/changelog/.gitignore @@ -0,0 +1 @@ +!.gitignore diff --git a/changelog/670.feature.rst b/changelog/670.feature.rst new file mode 100644 index 00000000..33d0b08e --- /dev/null +++ b/changelog/670.feature.rst @@ -0,0 +1 @@ +Print files to be uploaded using ``upload --verbose`` diff --git a/changelog/675.feature.rst b/changelog/675.feature.rst new file mode 100644 index 00000000..1b3f392c --- /dev/null +++ b/changelog/675.feature.rst @@ -0,0 +1 @@ +Print configuration file location when using ``upload --verbose`` diff --git a/changelog/678.bugfix.rst b/changelog/678.bugfix.rst new file mode 100644 index 00000000..f4932eb8 --- /dev/null +++ b/changelog/678.bugfix.rst @@ -0,0 +1 @@ +Make password optional when using ``upload --client-cert`` diff --git a/changelog/680.doc.rst b/changelog/680.doc.rst new file mode 100644 index 00000000..d0c3ca16 --- /dev/null +++ b/changelog/680.doc.rst @@ -0,0 +1 @@ +Adopt PSF code of conduct diff --git a/changelog/685.feature.rst b/changelog/685.feature.rst new file mode 100644 index 00000000..2e19d059 --- /dev/null +++ b/changelog/685.feature.rst @@ -0,0 +1 @@ +Print source and values of credentials when using ``upload --verbose`` diff --git a/changelog/693.bugfix.rst b/changelog/693.bugfix.rst new file mode 100644 index 00000000..5ba037fe --- /dev/null +++ b/changelog/693.bugfix.rst @@ -0,0 +1 @@ +Support more Nexus versions with ``upload --skip-existing`` diff --git a/changelog/698.bugfix.rst b/changelog/698.bugfix.rst new file mode 100644 index 00000000..2e5df63b --- /dev/null +++ b/changelog/698.bugfix.rst @@ -0,0 +1 @@ +Support Gitlab Enterprise with ``upload --skip-existing`` diff --git a/changelog/708.feature.rst b/changelog/708.feature.rst new file mode 100644 index 00000000..adcccace --- /dev/null +++ b/changelog/708.feature.rst @@ -0,0 +1 @@ +Add support for Python 3.9 diff --git a/changelog/714.bugfix.rst b/changelog/714.bugfix.rst new file mode 100644 index 00000000..4c1187a2 --- /dev/null +++ b/changelog/714.bugfix.rst @@ -0,0 +1 @@ +Show a better error message for malformed files diff --git a/changelog/715.feature.rst b/changelog/715.feature.rst new file mode 100644 index 00000000..b96bbafa --- /dev/null +++ b/changelog/715.feature.rst @@ -0,0 +1 @@ +Turn warnings into errors when using ``check --strict`` diff --git a/changelog/718.doc.rst b/changelog/718.doc.rst new file mode 100644 index 00000000..7609858b --- /dev/null +++ b/changelog/718.doc.rst @@ -0,0 +1 @@ +Adopt towncrier for the changleog diff --git a/docs/changelog.rst b/docs/changelog.rst index 7aa7695b..320cf22b 100644 --- a/docs/changelog.rst +++ b/docs/changelog.rst @@ -1,130 +1,239 @@ -:orphan: - -.. See https://releases.readthedocs.io/ for instructions - ========= Changelog ========= -* :release:`3.2.0 <2020-06-24>` -* :feature:`666` Improve display of HTTP errors during upload -* :feature:`649` Use red text when printing errors on the command line -* :feature:`652` Print packages and signatures to be uploaded when using - ``--verbose`` option -* :bug:`655 major` Update URL to ``.pypirc`` specification -* :feature:`602` Require repository URL scheme to be ``http`` or ``https`` -* :bug:`612 major` Don't raise an exception when Python version can't be - parsed from filename -* :bug:`611 major` Fix inaccurate retry message during ``upload`` -* :bug:`601 major` Clarify error messages for archive format -* :feature:`231` Add type annotations, checked with mypy, with :pep:`561` - support for users of Twine's API -* :release:`3.1.1 <2019-11-27>` -* :bug:`548` Restore ``--non-interactive`` as a flag not expecting an - argument. -* :release:`3.1.0 <2019-11-23>` -* :feature:`547` Add support for specifying ``--non-interactive`` as an - environment variable. -* :release:`3.0.0 <2019-11-18>` -* :feature:`336` When a client certificate is indicated, all password - processing is disabled. -* :feature:`489` Add ``--non-interactive`` flag to abort upload rather than - interactively prompt if credentials are missing. -* :feature:`524` Twine now unconditionally requires the keyring library - and no longer supports uninstalling ``keyring`` as a means to disable - that functionality. Instead, use ``keyring --disable`` keyring functionality - if necessary. -* :feature:`518` Add Python 3.8 to classifiers. -* :bug:`332 major` More robust handling of server response in - ``--skip-existing`` -* :release:`2.0.0 <2019-09-24>` -* :feature:`437` Twine now requires Python 3.6 or later. Use pip - 9 or pin to "twine<2" to install twine on older Python versions. -* :bug:`491 major` Require requests 2.20 or later to avoid reported security - vulnerabilities in earlier releases. -* :release:`1.15.0 <2019-09-17>` -* :feature:`488` Improved output on ``check`` command: - Prints a message when there are no distributions given to check. - Improved handling of errors in a distribution's markup, avoiding - messages flowing through to the next distribution's errors. -* :release:`1.14.0 <2019-09-06>` -* :feature:`456` Better error handling and gpg2 fallback if gpg not available. -* :bug:`341 major` Fail more gracefully when encountering bad metadata -* :feature:`459` Show Warehouse URL after uploading a package -* :feature:`310` Now provide a more meaningful error on redirect during upload. -* :release:`1.13.0 <2019-02-13>` -* :bug:`452 major` Restore prompts while retaining support for suppressing - prompts. -* :bug:`447 major` Avoid requests-toolbelt to 0.9.0 to prevent attempting to - use - openssl when it isn't available. -* :feature:`427` Add disable_progress_bar option to disable tqdm. -* :feature:`426` Allow defining an empty username and password in .pypirc. -* :bug:`441 major` Only install pyblake2 if needed. -* :bug:`444 major` Use io.StringIO instead of StringIO. -* :bug:`436 major` Use modern Python language features. -* :support:`439` Refactor tox env and travis config. -* :bug:`435 major` Specify python_requires in setup.py -* :bug:`432 major` Use https URLs everywhere. -* :bug:`428 major` Fix --skip-existing for Nexus Repos. -* :feature:`419` Support keyring.get_credential. -* :feature:`418` Support keyring.get_username_and_password. -* :bug:`421 major` Remove unnecessary usage of readme_render.markdown. -* :feature:`416` Add Python 3.7 to classifiers. -* :bug:`412 major` Don't crash if there's no package description. -* :bug:`408 major` Fix keyring support. -* :release:`1.12.1 <2018-09-24>` -* :bug:`404` Fix regression with upload exit code -* :release:`1.12.0 <2018-09-24>` -* :feature:`395 major` Add ``twine check`` command to check long description -* :feature:`392 major` Drop support for Python 3.3 -* :feature:`363` Empower ``--skip-existing`` for Artifactory repositories -* :bug:`367 major` Avoid MD5 when Python is compiled in FIPS mode -* :release:`1.11.0 <2018-03-19>` -* :bug:`269 major` Avoid uploading to PyPI when given alternate - repository URL, and require ``http://`` or ``https://`` in - ``repository_url``. -* :support:`277` Add instructions on how to use keyring. -* :support:`314` Add new maintainer, release checklists. -* :bug:`322 major` Raise exception if attempting upload to deprecated legacy - PyPI URLs. -* :feature:`320` Remove PyPI as default ``register`` package index. -* :feature:`319` Support Metadata 2.1 (:pep:`566`), including Markdown - for ``description`` fields. -* :support:`318` `Update PyPI URLs - `_. -* :release:`1.10.0 <2018-03-07>` -* :bug:`315 major` Degrade gracefully when keyring is unavailable -* :feature:`304` Reorganize & improve user & developer documentation. -* :feature:`46` Link to changelog from ``README`` -* :feature:`295` Add doc building instructions -* :feature:`296` Add architecture overview to docs -* :feature:`303` Revise docs predicting future of ``twine`` -* :bug:`298 major` Fix syntax highlighting in ``README`` -* :bug:`299 major` Fix changelog formatting -* :bug:`200 major` Remove obsolete registration guidance -* :bug:`286 major` Fix Travis CI and test configuration -* :feature:`257` Declare support for Python 3.6 -* :bug:`297 major` Fix Read the Docs, tox, Travis configuration -* :bug:`268 major` Print progress to ``stdout``, not ``stderr`` -* :bug:`265 major` Fix ``--repository[-url]`` help text -* :feature:`256` Improve progressbar -* :release:`1.9.1 <2017-05-27>` -* :bug:`-` Blacklist known bad versions of Requests. See also :bug:`253` -* :release:`1.9.0 <2017-05-22>` -* :support:`-` Twine will now resolve passwords using the - `keyring `_ if available. - Module can be required with the ``keyring`` extra. -* :support:`-` Twine will use ``hashlib.blake2b`` on Python 3.6+ - instead of using pyblake2 for Blake2 hashes 256 bit hashes. -* :support:`-` Twine sends less information about the user's system in - the User-Agent string. See also :bug:`229` -* :support:`-` Fix ``--skip-existing`` when used to upload a package - for the first time. See also :bug:`220` -* :support:`-` Fix precedence of ``--repository-url`` over - ``--repository``. See also :bug:`206` -* :release:`1.8.1 <2016-08-09>` -* :support:`-` Check if a package exists if the URL is one of: +This project follows the `semantic versioning `_ +and `pre-release versioning `_ +schemes recommended by the Python Packaging Authority. + +.. Do *NOT* add changelog entries here! + This changelog is managed by towncrier and is built at release time. + See https://twine.readthedocs.io/en/latest/contributing.html#changelog-entries for details. + +.. towncrier release notes start + +3.2.0 (2020-06-24) +------------------ + +Features +^^^^^^^^ + +- Improve display of HTTP errors during upload (`#666 `_) +- Print packages and signatures to be uploaded when using ``--verbose`` option (`#652 `_) +- Use red text when printing errors on the command line (`#649 `_) +- Require repository URL scheme to be ``http`` or ``https`` (`#602 `_) +- Add type annotations, checked with mypy, with :pep:`561` support for users of Twine's API (`#231 `_) + +Bugfixes +^^^^^^^^ + +- Update URL to ``.pypirc`` specification (`#655 `_) +- Don't raise an exception when Python version can't be parsed from filename (`#612 `_) +- Fix inaccurate retry message during ``upload`` (`#611 `_) +- Clarify error messages for archive format (`#601 `_) + +3.1.1 (2019-11-27) +------------------ + +Bugfixes +^^^^^^^^ + +- Restore ``--non-interactive`` as a flag not expecting an argument. (`#548 `_) + +3.1.0 (2019-11-23) +------------------ + +Features +^^^^^^^^ + +- Add support for specifying ``--non-interactive`` as an environment variable. (`#547 `_) + +3.0.0 (2019-11-18) +------------------ + +Features +^^^^^^^^ + +- When a client certificate is indicated, all password processing is disabled. (`#336 `_) +- Add ``--non-interactive`` flag to abort upload rather than interactively prompt if credentials are missing. (`#489 `_) +- Twine now unconditionally requires the keyring library and no longer supports uninstalling ``keyring`` as a means to disable that functionality. Instead, use ``keyring --disable`` keyring functionality if necessary. (`#524 `_) +- Add Python 3.8 to classifiers. (`#518 `_) + +Bugfixes +^^^^^^^^ + +- More robust handling of server response in ``--skip-existing`` (`#332 `_) + +2.0.0 (2019-09-24) +------------------ + +Features +^^^^^^^^ + +- Twine now requires Python 3.6 or later. Use pip 9 or pin to "twine<2" to install twine on older Python versions. (`#437 `_) + +Bugfixes +^^^^^^^^ + +- Require requests 2.20 or later to avoid reported security vulnerabilities in earlier releases. (`#491 `_) + +1.15.0 (2019-09-17) +------------------- + +Features +^^^^^^^^ + +- Improved output on ``check`` command: Prints a message when there are no distributions given to check. Improved handling of errors in a distribution's markup, avoiding messages flowing through to the next distribution's errors. (`#488 `_) + +1.14.0 (2019-09-06) +------------------- + +Features +^^^^^^^^ + +- Show Warehouse URL after uploading a package (`#459 `_) +- Better error handling and gpg2 fallback if gpg not available. (`#456 `_) +- Now provide a more meaningful error on redirect during upload. (`#310 `_) + +Bugfixes +^^^^^^^^ + +- Fail more gracefully when encountering bad metadata (`#341 `_) + +1.13.0 (2019-02-13) +------------------- + +Features +^^^^^^^^ + +- Add disable_progress_bar option to disable tqdm. (`#427 `_) +- Allow defining an empty username and password in .pypirc. (`#426 `_) +- Support keyring.get_credential. (`#419 `_) +- Support keyring.get_username_and_password. (`#418 `_) +- Add Python 3.7 to classifiers. (`#416 `_) + +Bugfixes +^^^^^^^^ + +- Restore prompts while retaining support for suppressing prompts. (`#452 `_) +- Avoid requests-toolbelt to 0.9.0 to prevent attempting to use openssl when it isn't available. (`#447 `_) +- Use io.StringIO instead of StringIO. (`#444 `_) +- Only install pyblake2 if needed. (`#441 `_) +- Use modern Python language features. (`#436 `_) +- Specify python_requires in setup.py (`#435 `_) +- Use https URLs everywhere. (`#432 `_) +- Fix --skip-existing for Nexus Repos. (`#428 `_) +- Remove unnecessary usage of readme_render.markdown. (`#421 `_) +- Don't crash if there's no package description. (`#412 `_) +- Fix keyring support. (`#408 `_) + +Misc +^^^^ + +- Refactor tox env and travis config. (`#439 `_) + +1.12.1 (2018-09-24) +------------------- + +Bugfixes +^^^^^^^^ + +- Fix regression with upload exit code (`#404 `_) + +1.12.0 (2018-09-24) +------------------- + +Features +^^^^^^^^ + +- Add ``twine check`` command to check long description (`#395 `_) +- Drop support for Python 3.3 (`#392 `_) +- Empower ``--skip-existing`` for Artifactory repositories (`#363 `_) + +Bugfixes +^^^^^^^^ + +- Avoid MD5 when Python is compiled in FIPS mode (`#367 `_) + +1.11.0 (2018-03-19) +------------------- + +Features +^^^^^^^^ + +- Remove PyPI as default ``register`` package index. (`#320 `_) +- Support Metadata 2.1 (:pep:`566`), including Markdown for ``description`` fields. (`#319 `_) + +Bugfixes +^^^^^^^^ + +- Raise exception if attempting upload to deprecated legacy PyPI URLs. (`#322 `_) +- Avoid uploading to PyPI when given alternate repository URL, and require ``http://`` or ``https://`` in ``repository_url``. (`#269 `_) + +Misc +^^^^ + +- `Update PyPI URLs `_. (`#318 `_) +- Add new maintainer, release checklists. (`#314 `_) +- Add instructions on how to use keyring. (`#277 `_) + +1.10.0 (2018-03-07) +------------------- + +Features +^^^^^^^^ + +- Link to changelog from ``README`` (`#46 `_) +- Reorganize & improve user & developer documentation. (`#304 `_) +- Revise docs predicting future of ``twine`` (`#303 `_) +- Add architecture overview to docs (`#296 `_) +- Add doc building instructions (`#295 `_) +- Declare support for Python 3.6 (`#257 `_) +- Improve progressbar (`#256 `_) + +Bugfixes +^^^^^^^^ + +- Degrade gracefully when keyring is unavailable (`#315 `_) +- Fix changelog formatting (`#299 `_) +- Fix syntax highlighting in ``README`` (`#298 `_) +- Fix Read the Docs, tox, Travis configuration (`#297 `_) +- Fix Travis CI and test configuration (`#286 `_) +- Print progress to ``stdout``, not ``stderr`` (`#268 `_) +- Fix ``--repository[-url]`` help text (`#265 `_) +- Remove obsolete registration guidance (`#200 `_) + +1.9.1 (2017-05-27) +------------------ + +Bugfixes +^^^^^^^^ + +- Blacklist known bad versions of Requests. (`#253 `_) + +1.9.0 (2017-05-22) +------------------ + +Bugfixes +^^^^^^^^ + +- Twine sends less information about the user's system in the User-Agent string. (`#229 `_) +- Fix ``--skip-existing`` when used to upload a package for the first time. (`#220 `_) +- Fix precedence of ``--repository-url`` over ``--repository``. (`#206 `_) + +Misc +^^^^ + +- Twine will now resolve passwords using the `keyring `_ if available. Module can be required with the ``keyring`` extra. +- Twine will use ``hashlib.blake2b`` on Python 3.6+ instead of pyblake2 + +1.8.1 (2016-08-09) +------------------ + +Misc +^^^^ + +- Check if a package exists if the URL is one of: * ``https://pypi.python.org/pypi/`` * ``https://upload.pypi.org/`` @@ -133,67 +242,116 @@ Changelog This helps people with ``https://upload.pypi.io`` still in their :file:`.pypirc` file. -* :release:`1.8.0 <2016-08-08>` -* :feature:`201` Switch from upload.pypi.io to upload.pypi.org. -* :feature:`144` Retrieve configuration from the environment as a default. + +1.8.0 (2016-08-08) +------------------ + +Features +^^^^^^^^ + +- Switch from upload.pypi.io to upload.pypi.org. (`#201 `_) +- Retrieve configuration from the environment as a default. (`#144 `_) * Repository URL will default to ``TWINE_REPOSITORY`` * Username will default to ``TWINE_USERNAME`` * Password will default to ``TWINE_PASSWORD`` -* :feature:`166` Allow the Repository URL to be provided on the - command-line (``--repository-url``) or via an environment variable - (``TWINE_REPOSITORY_URL``). -* :support:`-` Generate SHA256 digest for all packages - by default. -* :feature:`171` Generate Blake2b 256 digests for packages *if* ``pyblake2`` - is installed. Users can use ``python -m pip install twine[with-blake2]`` - to have ``pyblake2`` installed with Twine. -* :support:`-` Stop testing on Python 2.6. 2.6 support will be "best - effort" until 2.0.0 -* :support:`-` Warn users if they receive a 500 error when uploading - to ``*pypi.python.org`` -* :release:`1.7.4 <2016-07-09>` -* :bug:`-` Correct a packaging error. -* :release:`1.7.3 <2016-07-08>` -* :bug:`195` Fix uploads to instances of pypiserver using - ``--skip-existing``. We were not properly checking the return - status code on the response after attempting an upload. -* :support:`-` Do not generate traffic to Legacy PyPI unless we're - uploading to it or uploading to Warehouse (e.g., pypi.io). This - avoids the attempt to upload a package to the index if we can find - it on Legacy PyPI already. -* :release:`1.7.2 <2016-07-05>` -* :bug:`189`, :bug:`191` Fix issue where we were checking the existence of - packages even if the user didn't specify ``--skip-existing``. -* :release:`1.7.1 <2016-07-05>` -* :bug:`187` Clint was not specified in the wheel metadata as a dependency. -* :release:`1.7.0 <2016-07-04>` -* :feature:`142` Support ``--cert`` and ``--client-cert`` command-line flags - and config file options for feature parity with pip. This allows users to - verify connections to servers other than PyPI (e.g., local package - repositories) with different certificates. -* :feature:`152` Add progress bar to uploads. -* :feature:`162` Allow ``--skip-existing`` to work for 409 status codes. -* :feature:`167` Implement retries when the CDN in front of PyPI gives us a - 5xx error. -* :feature:`177` Switch Twine to upload to pypi.io instead of - pypi.python.org. -* :bug:`186 major` Allow passwords to have ``%``\ s in them. -* :release:`1.6.5 <2015-12-16>` -* :bug:`155` Bump requests-toolbelt version to ensure we avoid - ConnectionErrors -* :release:`1.6.4 <2015-10-27>` -* :bug:`145` Paths with hyphens in them break the Wheel regular expression. -* :bug:`146` Exception while accessing the ``repository`` key (sic) - when raising a redirect exception. -* :release:`1.6.3 <2015-10-05>` -* :bug:`137`, :bug:`140` Uploading signatures was broken due to the pull - request that added large file support via ``requests-toolbelt``. This - caused a 500 error on PyPI and prevented package and signature upload in - twine 1.6.0 -* :release:`1.6.2 <2015-09-28>` -* :bug:`132` Upload signatures with packages appropriately +- Allow the Repository URL to be provided on the command-line (``--repository-url``) or via an environment variable (``TWINE_REPOSITORY_URL``). (`#166 `_) +- Generate Blake2b 256 digests for packages *if* ``pyblake2`` is installed. Users can use ``python -m pip install twine[with-blake2]`` to have ``pyblake2`` installed with Twine. (`#171 `_) + +Misc +^^^^ + +- Generate SHA256 digest for all packages by default. +- Stop testing on Python 2.6. +- Warn users if they receive a 500 error when uploading to ``*pypi.python.org`` (`#199 `_) + +1.7.4 (2016-07-09) +------------------ + +Bugfixes +^^^^^^^^ + +- Correct a packaging error. + +1.7.3 (2016-07-08) +------------------ + +Bugfixes +^^^^^^^^ + +- Fix uploads to instances of pypiserver using ``--skip-existing``. We were not properly checking the return status code on the response after attempting an upload. (`#195 `_) + +Misc +^^^^ + +- Avoid attempts to upload a package if we can find it on Legacy PyPI. + +1.7.2 (2016-07-05) +------------------ + +Bugfixes +^^^^^^^^ + +- Fix issue where we were checking the existence of packages even if the user didn't specify ``--skip-existing``. (`#189 `_) (`#191 `_) + +1.7.1 (2016-07-05) +------------------ + +Bugfixes +^^^^^^^^ + +- Clint was not specified in the wheel metadata as a dependency. (`#187 `_) + +1.7.0 (2016-07-04) +------------------ + +Features +^^^^^^^^ + +- Support ``--cert`` and ``--client-cert`` command-line flags and config file options for feature parity with pip. This allows users to verify connections to servers other than PyPI (e.g., local package repositories) with different certificates. (`#142 `_) +- Add progress bar to uploads. (`#152 `_) +- Allow ``--skip-existing`` to work for 409 status codes. (`#162 `_) +- Implement retries when the CDN in front of PyPI gives us a 5xx error. (`#167 `_) +- Switch Twine to upload to pypi.io instead of pypi.python.org. (`#177 `_) + +Bugfixes +^^^^^^^^ + +- Allow passwords to have ``%``\ s in them. (`#186 `_) + +1.6.5 (2015-12-16) +------------------ + +Bugfixes +^^^^^^^^ + +- Bump requests-toolbelt version to ensure we avoid ConnectionErrors (`#155 `_) + +1.6.4 (2015-10-27) +------------------ + +Bugfixes +^^^^^^^^ + +- Paths with hyphens in them break the Wheel regular expression. (`#145 `_) +- Exception while accessing the ``repository`` key (sic) when raising a redirect exception. (`#146 `_) + +1.6.3 (2015-10-05) +------------------ + +Bugfixes +^^^^^^^^ + +- Fix uploading signatures causing a 500 error after large file support was added. (`#137 `_, `#140 `_) + +1.6.2 (2015-09-28) +------------------ + +Bugfixes +^^^^^^^^ + +- Upload signatures with packages appropriately (`#132 `_) As part of the refactor for the 1.6.0 release, we were using the wrong name to find the signature file. @@ -202,40 +360,85 @@ Changelog ``*`` is not expanded by your shell, we might also miss uploading signatures to PyPI. Both were fixed as part of this. -* :release:`1.6.1 <2015-09-18>` -* :bug:`130` Fix signing support for uploads -* :release:`1.6.0 <2015-09-14>` -* :feature:`106` Upload wheels first to PyPI -* :feature:`104` Large file support via the ``requests-toolbelt`` -* :bug:`92 major` Raise an exception on redirects -* :feature:`97` Allow the user to specify the location of their - :file:`.pypirc` -* :feature:`115` Add the ``--skip-existing`` flag to ``twine upload`` to - allow users to skip releases that already exist on PyPI. -* :bug:`114 major` Warnings triggered by pkginfo searching for - ``PKG-INFO`` files should no longer be user visible. -* :bug:`116 major` Work around problems with Windows when using - ``getpass.getpass`` -* :bug:`111 major` Provide more helpful messages if :file:`.pypirc` is - out of date. -* :feature:`8` Support registering new packages with ``twine register`` -* :release:`1.5.0 <2015-03-10>` -* :bug:`85 major` Display information about the version of setuptools installed -* :bug:`61 major` Support deprecated pypirc file format -* :feature:`29` Support commands not named "gpg" for signing -* :support:`-` Add lower-limit to requests dependency -* :release:`1.4.0 <2014-12-12>` -* :bug:`28 major` Prevent ResourceWarning from being shown -* :bug:`34 major` List registered commands in help text -* :bug:`32 major` Use ``pkg_resources`` to load registered commands -* :bug:`47 major` Fix issue uploading packages with ``_``\ s in the name -* :bug:`26 major` Add support for uploading Windows installers -* :bug:`65 major` Expand globs and check for existence of dists to upload -* :feature:`13` Parse :file:`~/.pypirc` ourselves and use - ``subprocess`` instead of the ``distutils.spawn`` module. -* :feature:`6` Switch to a git style dispatching for the commands to enable - simpler commands and programmatic invocation. -* :release:`1.3.0 <2014-03-31>` -* :feature:`-` Additional functionality. -* :release:`1.2.2 <2013-10-03>` -* :feature:`0` Basic functionality. + +1.6.1 (2015-09-18) +------------------ + +Bugfixes +^^^^^^^^ + +- Fix signing support for uploads (`#130 `_) + +1.6.0 (2015-09-14) +------------------ + +Features +^^^^^^^^ + +- Allow the user to specify the location of their :file:`.pypirc` (`#97 `_) +- Support registering new packages with ``twine register`` (`#8 `_) +- Add the ``--skip-existing`` flag to ``twine upload`` to allow users to skip releases that already exist on PyPI. (`#115 `_) +- Upload wheels first to PyPI (`#106 `_) +- Large file support via the ``requests-toolbelt`` (`#104 `_) + +Bugfixes +^^^^^^^^ + +- Raise an exception on redirects (`#92 `_) +- Work around problems with Windows when using ``getpass.getpass`` (`#116 `_) +- Warnings triggered by pkginfo searching for ``PKG-INFO`` files should no longer be user visible. (`#114 `_) +- Provide more helpful messages if :file:`.pypirc` is out of date. (`#111 `_) + +1.5.0 (2015-03-10) +------------------ + +Features +^^^^^^^^ + +- Support commands not named "gpg" for signing (`#29 `_) + +Bugfixes +^^^^^^^^ + +- Display information about the version of setuptools installed (`#85 `_) +- Support deprecated pypirc file format (`#61 `_) + +Misc +^^^^ + +- Add lower-limit to requests dependency + +1.4.0 (2014-12-12) +------------------ + +Features +^^^^^^^^ + +- Switch to a git style dispatching for the commands to enable simpler commands and programmatic invocation. (`#6 `_) +- Parse :file:`~/.pypirc` ourselves and use ``subprocess`` instead of the ``distutils.spawn`` module. (`#13 `_) + +Bugfixes +^^^^^^^^ + +- Expand globs and check for existence of dists to upload (`#65 `_) +- Fix issue uploading packages with ``_``\ s in the name (`#47 `_) +- List registered commands in help text (`#34 `_) +- Use ``pkg_resources`` to load registered commands (`#32 `_) +- Prevent ResourceWarning from being shown (`#28 `_) +- Add support for uploading Windows installers (`#26 `_) + +1.3.0 (2014-03-31) +------------------ + +Features +^^^^^^^^ + +- Additional functionality. + +1.2.2 (2013-10-03) +------------------ + +Features +^^^^^^^^ + +- Basic functionality. diff --git a/docs/conf.py b/docs/conf.py index 2aa3d89d..1a287338 100644 --- a/docs/conf.py +++ b/docs/conf.py @@ -24,7 +24,7 @@ # -- General configuration ---------------------------------------------------- # If your documentation needs a minimal Sphinx version, state it here. -needs_sphinx = '1.7.0' +needs_sphinx = "1.7.0" # Add any Sphinx extension module names here, as strings. They can be # extensions coming with Sphinx (named 'sphinx.ext.*') or your custom ones. @@ -34,15 +34,8 @@ "sphinx.ext.intersphinx", "sphinx.ext.coverage", "sphinx.ext.viewcode", - "releases", ] -# 'releases' (changelog) settings -releases_issue_uri = "https://github.com/pypa/twine/issues/%s" -releases_release_uri = "https://github.com/pypa/twine/tree/%s" - -releases_debug = False # Change to True to see debug output - # Add any paths that contain templates here, relative to this directory. templates_path = ["_templates"] @@ -188,10 +181,8 @@ latex_elements = { # The paper size ('letterpaper' or 'a4paper'). # 'papersize': 'letterpaper', - # The font size ('10pt', '11pt' or '12pt'). # 'pointsize': '10pt', - # Additional stuff for the LaTeX preamble. # 'preamble': '', } diff --git a/docs/contributing.rst b/docs/contributing.rst index a9652c88..a3e8e064 100644 --- a/docs/contributing.rst +++ b/docs/contributing.rst @@ -130,15 +130,51 @@ and build the documentation, run: Submitting changes -^^^^^^^^^^^^^^^^^^ +------------------ 1. Fork `the GitHub repository`_. 2. Make a branch off of ``master`` and commit your changes to it. 3. Run the tests, check code style, and build the docs as described above. -4. Ensure that your name is added to the end of the :file:`AUTHORS` +4. Optionally, add your name to the end of the :file:`AUTHORS` file using the format ``Name (url)``, where the ``(url)`` portion is optional. -5. Submit a pull request to the ``master`` branch on GitHub. +5. Submit a pull request to the ``master`` branch on GitHub, referencing an + open issue. +6. Add a changelog entry. + +Changelog entries +^^^^^^^^^^^^^^^^^ + +The ``docs/changelog.rst`` file is built by `towncrier`_ from files in the +``changelog/`` directory. To add an entry, create a file in that directory +named ``{number}.{type}.rst``, where ``{number}`` is the pull request number, +and ``{type}`` is ``feature``, ``bugfix``, ``doc``, ``removal``, or ``misc``. + +For example, if your PR number is 1234 and it's fixing a bug, then you +would create ``changelog/1234.bugfix.rst``. PRs can span multiple categories by +creating multiple files: if you added a feature and deprecated/removed an old +feature in PR #5678, you would create ``changelog/5678.feature.rst`` and +``changelog/5678.removal.rst``. + +A changelog entry is meant for end users and should only contain details +relevant to them. In order to maintain a consistent style, please keep the +entry to the point, in sentence case, shorter than 80 characters, and in an +imperative tone. An entry should complete the sentence "This change will ...". +If one line is not enough, use a summary line in an imperative tone, followed +by a description of the change in one or more paragraphs, each wrapped at 80 +characters and separated by blank lines. + +You don't need to reference the pull request or issue number in a changelog +entry, since towncrier will add a link using the number in the file name, +and the pull request should reference an issue number. Similarly, you don't +need to add your name to the entry, since that will be associated with the pull +request. + +Changelog entries are rendered using `reStructuredText`_, but they should only +have minimal formatting (such as ````monospaced text````). + +.. _`towncrier`: https://pypi.org/project/towncrier/ +.. _`reStructuredText`: https://www.writethedocs.org/guide/writing/reStructuredText/ Architectural overview @@ -196,9 +232,9 @@ Making a new release A checklist for creating, testing, and distributing a new version. -#. Add user-facing changes to :file:`docs/changelog.rst`. -#. Choose a version number, e.g. ``3.2.0``. -#. Add a ``:release:`` line to :file:`docs/changelog.rst`. +#. Choose a version number, e.g. ``3.3.0``. +#. Run ``tox -e changelog -- --version {version}`` to build + :file:`docs/changelog.rst`. #. Commit and open a pull request for review. #. Merge the pull request, and ensure the `GitHub Actions`_ build passes. #. Create a new git tag with ``git tag -m "Release v{version}" {version}``. @@ -228,6 +264,5 @@ merge into a single tool; see `ongoing discussion .. _`black`: https://black.readthedocs.io/ .. _`flake8`: https://flake8.pycqa.org/ .. _`mypy`: https://mypy.readthedocs.io/ -.. _`plugin`: https://github.com/bitprophet/releases .. _`projects`: https://packaging.python.org/glossary/#term-Project .. _`open issues`: https://github.com/pypa/twine/issues diff --git a/docs/requirements.txt b/docs/requirements.txt index 7c78e46e..303f6d72 100644 --- a/docs/requirements.txt +++ b/docs/requirements.txt @@ -1,5 +1,4 @@ doc8>=0.8.0 readme-renderer>=17.4 -releases>=1.4.0 Sphinx>=1.7.0 sphinx_rtd_theme>=0.2.4 diff --git a/pyproject.toml b/pyproject.toml index c5effd95..21b5d297 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,3 +1,11 @@ [build-system] requires = ["setuptools>=40.8", "wheel", "setuptools_scm>=1.15"] build-backend = "setuptools.build_meta:__legacy__" + +[tool.towncrier] +package = "twine" +filename = "docs/changelog.rst" +directory = "changelog" +title_format = "{version} ({project_date})" +issue_format = "`#{issue} `_" +underlines = ["-", "^"] diff --git a/tox.ini b/tox.ini index 8de21d14..ae3bc0ea 100644 --- a/tox.ini +++ b/tox.ini @@ -77,6 +77,14 @@ commands = mypy --html-report mypy --txt-report mypy {posargs:twine} python -c 'with open("mypy/index.txt") as f: print(f.read())' +[testenv:changelog] +basepython = python3 +skip_install = true +deps = + towncrier +commands = + towncrier {posargs} + [testenv:release] # disabled for twine to cause it to upload itself # skip_install = True