Repository: python-cmd2/cmd2

Issue:
Fix twine upload
Running the new **invoke pypi** command to build and upload a release to PyPI fails in the very last step with the following error message:

```sh
Uploading distributions to https://pypi.python.org/pypi
Note: you are uploading to the old upload URL. It's recommended to use the new URL "https://upload.pypi.org/legacy/" or to leave the URL unspecified and allow twine to choose.
Uploading cmd2-0.9.0.post1-py3-none-any.whl
100%|██████████| 76.8k/76.8k [00:00<00:00, 721kB/s]
RedirectDetected: "https://pypi.python.org/pypi" attempted to redirect to "https://pypi.org/pypi" during upload. Aborting...
```

The command being executed when this occurs is:
```sh
twine upload dist/*
```

Discussion:

Patch:
diff --git a/cmd2/cmd2.py b/cmd2/cmd2.py
index b6e7cf19..2d8766f4 100644
--- a/cmd2/cmd2.py
+++ b/cmd2/cmd2.py
@@ -124,7 +124,7 @@ try:
 except ImportError:
     ipython_available = False
 
-__version__ = '0.9.1'
+__version__ = '0.9.2a'
 
 
 # optional attribute, when tagged on a function, allows cmd2 to categorize commands
diff --git a/docs/conf.py b/docs/conf.py
index 997405dd..25ba2a78 100644
--- a/docs/conf.py
+++ b/docs/conf.py
@@ -62,7 +62,7 @@ author = 'Catherine Devlin and Todd Leonhardt'
 # The short X.Y version.
 version = '0.9'
 # The full version, including alpha/beta/rc tags.
-release = '0.9.1'
+release = '0.9.2a'
 
 # The language for content autogenerated by Sphinx. Refer to documentation
 # for a list of supported languages.
diff --git a/setup.py b/setup.py
index 0127ae5b..59c53b68 100755
--- a/setup.py
+++ b/setup.py
@@ -5,7 +5,7 @@ Setuptools setup file, used to install or test 'cmd2'
 """
 from setuptools import setup
 
-VERSION = '0.9.1'
+VERSION = '0.9.2a'
 DESCRIPTION = "cmd2 - a tool for building interactive command line applications in Python"
 LONG_DESCRIPTION = """cmd2 is a tool for building interactive command line applications in Python. Its goal is to make
 it quick and easy for developers to build feature-rich and user-friendly interactive command line applications.  It
@@ -73,7 +73,7 @@ EXTRAS_REQUIRE = {
     # install with 'pip install -e .[dev]'
     'dev': [
         'pytest', 'pytest-cov', 'tox', 'pylint', 'sphinx', 'sphinx-rtd-theme',
-        'sphinx-autobuild','invoke', 'twine',
+        'sphinx-autobuild', 'invoke', 'twine>=1.11',
     ]
 }
 
diff --git a/tasks.py b/tasks.py
index 000af0a5..5c0bd772 100644
--- a/tasks.py
+++ b/tasks.py
@@ -1,7 +1,12 @@
 #
 # coding=utf-8
-"""Development related tasks to be run with 'invoke'"""
+"""Development related tasks to be run with 'invoke'.
 
+Make sure you satisfy the following Python module requirements if you are trying to publish a release to PyPI:
+    - twine >= 1.11.0
+    - wheel >= 0.31.0
+    - setuptools >= 39.1.0
+"""
 import os
 import shutil
 


Test patch:
diff --git a/tests/test_cmd2.py b/tests/test_cmd2.py
index 33d9ca41..68aa0b98 100644
--- a/tests/test_cmd2.py
+++ b/tests/test_cmd2.py
@@ -28,7 +28,7 @@ from .conftest import run_cmd, normalize, BASE_HELP, BASE_HELP_VERBOSE, \
 
 
 def test_ver():
-    assert cmd2.__version__ == '0.9.1'
+    assert cmd2.__version__ == '0.9.2a'
 
 
 def test_empty_statement(base_app):