diff -Nru twine-3.1.0/debian/changelog twine-3.1.1/debian/changelog --- twine-3.1.0/debian/changelog 2019-11-27 19:57:17.000000000 +0000 +++ twine-3.1.1/debian/changelog 2019-12-24 07:36:25.000000000 +0000 @@ -1,3 +1,9 @@ +twine (3.1.1-1) unstable; urgency=medium + + * New upstream point release. + + -- Stefano Rivera Tue, 24 Dec 2019 09:36:25 +0200 + twine (3.1.0-1) unstable; urgency=medium * New upstream release. diff -Nru twine-3.1.0/docs/changelog.rst twine-3.1.1/docs/changelog.rst --- twine-3.1.0/docs/changelog.rst 2019-11-23 12:56:06.000000000 +0000 +++ twine-3.1.1/docs/changelog.rst 2019-11-27 16:47:19.000000000 +0000 @@ -3,6 +3,9 @@ ========= Changelog ========= +* :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. diff -Nru twine-3.1.0/PKG-INFO twine-3.1.1/PKG-INFO --- twine-3.1.0/PKG-INFO 2019-11-23 12:56:33.907975400 +0000 +++ twine-3.1.1/PKG-INFO 2019-11-27 16:47:47.881178600 +0000 @@ -1,6 +1,6 @@ Metadata-Version: 1.2 Name: twine -Version: 3.1.0 +Version: 3.1.1 Summary: Collection of utilities for publishing packages on PyPI Home-page: https://twine.readthedocs.io/ Author: Donald Stufft and individual contributors diff -Nru twine-3.1.0/tests/test_settings.py twine-3.1.1/tests/test_settings.py --- twine-3.1.0/tests/test_settings.py 2019-11-23 12:56:06.000000000 +0000 +++ twine-3.1.1/tests/test_settings.py 2019-11-27 16:47:19.000000000 +0000 @@ -14,6 +14,7 @@ # limitations under the License. import os.path import textwrap +import argparse from twine import exceptions from twine import settings @@ -81,3 +82,24 @@ username='fakeuser', password='anything', client_cert=client_cert) assert not settings_obj.password assert settings_obj.client_cert == client_cert + + +class TestArgumentParsing: + + @staticmethod + def parse_args(args): + parser = argparse.ArgumentParser() + settings.Settings.register_argparse_arguments(parser) + return parser.parse_args(args) + + def test_non_interactive_flag(self): + args = self.parse_args(['--non-interactive']) + assert args.non_interactive + + def test_non_interactive_environment(self, monkeypatch): + monkeypatch.setenv("TWINE_NON_INTERACTIVE", "1") + args = self.parse_args([]) + assert args.non_interactive + monkeypatch.setenv("TWINE_NON_INTERACTIVE", "0") + args = self.parse_args([]) + assert not args.non_interactive diff -Nru twine-3.1.0/twine/settings.py twine-3.1.1/twine/settings.py --- twine-3.1.0/twine/settings.py 2019-11-23 12:56:06.000000000 +0000 +++ twine-3.1.1/twine/settings.py 2019-11-27 16:47:19.000000000 +0000 @@ -201,10 +201,8 @@ ) parser.add_argument( "--non-interactive", - action=utils.EnvironmentDefault, + action=utils.EnvironmentFlag, env="TWINE_NON_INTERACTIVE", - default=False, - required=False, help="Do not interactively prompt for username/password if the " "required credentials are missing. (Can also be set via " "%(env)s environment variable.)" diff -Nru twine-3.1.0/twine/utils.py twine-3.1.1/twine/utils.py --- twine-3.1.0/twine/utils.py 2019-11-23 12:56:06.000000000 +0000 +++ twine-3.1.1/twine/utils.py 2019-11-27 16:47:19.000000000 +0000 @@ -233,3 +233,27 @@ def __call__(self, parser, namespace, values, option_string=None): setattr(namespace, self.dest, values) + + +class EnvironmentFlag(argparse.Action): + """Set boolean flag from environment variable.""" + + def __init__( + self, + env: str, + **kwargs + ) -> None: + default = self.bool_from_env(os.environ.get(env)) + self.env = env + super().__init__(default=default, nargs=0, **kwargs) + + def __call__(self, parser, namespace, values, option_string=None): + setattr(namespace, self.dest, True) + + @staticmethod + def bool_from_env(val): + """ + Allow '0' and 'false' and 'no' to be False + """ + falsey = {'0', 'false', 'no'} + return val and val.lower() not in falsey diff -Nru twine-3.1.0/twine.egg-info/PKG-INFO twine-3.1.1/twine.egg-info/PKG-INFO --- twine-3.1.0/twine.egg-info/PKG-INFO 2019-11-23 12:56:33.000000000 +0000 +++ twine-3.1.1/twine.egg-info/PKG-INFO 2019-11-27 16:47:47.000000000 +0000 @@ -1,6 +1,6 @@ Metadata-Version: 1.2 Name: twine -Version: 3.1.0 +Version: 3.1.1 Summary: Collection of utilities for publishing packages on PyPI Home-page: https://twine.readthedocs.io/ Author: Donald Stufft and individual contributors