From c9fb680dffa37517bbda76cc2b572d6f192508bd Mon Sep 17 00:00:00 2001 From: Ian Cordasco Date: Tue, 28 Jun 2016 13:02:50 -0500 Subject: [PATCH] Add python and platform details to --version On Flake8 2.x we added the information about the implementation, version, and operating system to the --version output to make helping users easier. In short they can pretty simply just give us the output from flake8 --version And we can get a lot of the information that we need. --- src/flake8/options/manager.py | 6 ++++-- src/flake8/utils.py | 17 +++++++++++++++++ tests/unit/test_option_manager.py | 4 +++- 3 files changed, 24 insertions(+), 3 deletions(-) diff --git a/src/flake8/options/manager.py b/src/flake8/options/manager.py index fe3b13b..c6a3fcb 100644 --- a/src/flake8/options/manager.py +++ b/src/flake8/options/manager.py @@ -236,8 +236,10 @@ class OptionManager(object): def update_version_string(self): """Update the flake8 version string.""" - self.parser.version = (self.version + ' (' + - self.generate_versions() + ')') + self.parser.version = ( + self.version + ' (' + self.generate_versions() + ') ' + + utils.get_python_version() + ) def generate_epilog(self): """Create an epilog with the version and name of each of plugin.""" diff --git a/src/flake8/utils.py b/src/flake8/utils.py index fbd15b9..68ed530 100644 --- a/src/flake8/utils.py +++ b/src/flake8/utils.py @@ -4,6 +4,7 @@ import fnmatch as _fnmatch import inspect import io import os +import platform import re import sys @@ -290,3 +291,19 @@ def parameters_for(plugin): parameters.pop('self', None) return parameters + + +def get_python_version(): + """Find and format the python implementation and version. + + :returns: + Implementation name, version, and platform as a string. + :rtype: + str + """ + # The implementation isn't all that important. + try: + impl = platform.python_implementation() + " " + except AttributeError: # Python 2.5 + impl = '' + return '%s%s on %s' % (impl, platform.python_version(), platform.system()) diff --git a/tests/unit/test_option_manager.py b/tests/unit/test_option_manager.py index 53e8bf1..6f6cb17 100644 --- a/tests/unit/test_option_manager.py +++ b/tests/unit/test_option_manager.py @@ -4,6 +4,7 @@ import os import pytest +from flake8 import utils from flake8.options import manager TEST_VERSION = '3.0.0b1' @@ -162,7 +163,8 @@ def test_update_version_string(optmanager): assert optmanager.version == TEST_VERSION assert (optmanager.parser.version == TEST_VERSION + ' (' - 'Testing 100: 0.0.0, Testing 101: 0.0.0, Testing 300: 0.0.0)') + 'Testing 100: 0.0.0, Testing 101: 0.0.0, Testing 300: 0.0.0) ' + + utils.get_python_version()) def test_generate_epilog(optmanager):