diff -Nru radon-2.3.1+dfsg/CHANGELOG radon-3.0.3+dfsg/CHANGELOG --- radon-2.3.1+dfsg/CHANGELOG 2018-10-06 14:27:42.000000000 +0000 +++ radon-3.0.3+dfsg/CHANGELOG 2019-05-18 17:54:16.000000000 +0000 @@ -1,3 +1,36 @@ +3.0.1 (Feb 03, 2019) +-------------------- + +- Automatically exclude binary files, instead of producing an error: #166 + +3.0.0 (Jan 26, 2019) +-------------------- + +- Include files with no extension but a Python shebang (thanks @hawkeyej): #155 +- Fix calculation of total complexity for classes: #156 +- Update Colorama dependency to avoid conflicts with pytest: #164 +- Fix raw metrics, which were completely broken + +2.4.0 (Oct 11, 2018) +-------------------- + +- Add a `__main__` module (thanks @douardda): #153 +- Add --output-file option (thanks @douardda): #154 + +2.3.1 (Oct 02, 2018) +-------------------- + +- Quickfix for Python 2.7 +- Add official Python 3.7 support + +2.3.0 (Oct 02, 2018) +-------------------- + +- Add Halstead command and harvester (thanks @rwbogl): #136 +- Add --json, --exclude, --ignore to `radon hal` (thanks @rwbogl): #138 +- Add --functions to `radon hal` (thanks @rwbogl): #147 +- Add documentation for the `radon hal` subcommand (thanks @rwbogl): #150 + 2.2.0 (Jan 11, 2018) -------------------- diff -Nru radon-2.3.1+dfsg/debian/changelog radon-3.0.3+dfsg/debian/changelog --- radon-2.3.1+dfsg/debian/changelog 2018-10-09 13:41:16.000000000 +0000 +++ radon-3.0.3+dfsg/debian/changelog 2019-07-28 15:33:16.000000000 +0000 @@ -1,3 +1,16 @@ +radon (3.0.3+dfsg-1) unstable; urgency=medium + + [ Neil Williams ] + * New upstream release + * Stage changes for later upload to unstable once buster is released. + * Apply upstream fix to make the build reproducible (Closes: #912152) + * Add autopkgtest support + + [ Ondřej Nový ] + * Use debhelper-compat instead of debian/compat. + + -- Neil Williams Sun, 28 Jul 2019 16:33:16 +0100 + radon (2.3.1+dfsg-1) unstable; urgency=medium * Repack to remove files already included in libjs-mathjax diff -Nru radon-2.3.1+dfsg/debian/compat radon-3.0.3+dfsg/debian/compat --- radon-2.3.1+dfsg/debian/compat 2018-10-09 13:41:16.000000000 +0000 +++ radon-3.0.3+dfsg/debian/compat 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -11 diff -Nru radon-2.3.1+dfsg/debian/control radon-3.0.3+dfsg/debian/control --- radon-2.3.1+dfsg/debian/control 2018-10-09 13:41:16.000000000 +0000 +++ radon-3.0.3+dfsg/debian/control 2019-07-28 15:33:16.000000000 +0000 @@ -1,14 +1,15 @@ Source: radon Section: devel Priority: optional -Maintainer: Neil Williams -Build-Depends: debhelper (>= 11), dh-python, +Maintainer: Debian Python Modules Team +Uploaders: Neil Williams +Build-Depends: debhelper-compat (= 11), dh-python, python3, python3-flake8-polyfill, python3-sphinx, libjs-mathjax, python3-docutils Standards-Version: 4.2.1 Homepage: https://github.com/rubik/radon -Vcs-Browser: https://github.com/codehelp/pkg-radon -Vcs-Git: https://github.com/codehelp/pkg-radon +Vcs-Git: https://salsa.debian.org/python-team/applications/radon.git +Vcs-Browser: https://salsa.debian.org/python-team/applications/radon.git Package: radon Architecture: all diff -Nru radon-2.3.1+dfsg/debian/copyright radon-3.0.3+dfsg/debian/copyright --- radon-2.3.1+dfsg/debian/copyright 2018-10-09 13:41:16.000000000 +0000 +++ radon-3.0.3+dfsg/debian/copyright 2019-07-28 15:33:16.000000000 +0000 @@ -1,6 +1,8 @@ Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/ Upstream-Name: radon Source: https://github.com/rubik/radon +Files-Excluded: docs/_static +Comment: Repacked to replace docs/_static with libjs-mathjax Files: * Copyright: 2012-2017 Michele Lacchia diff -Nru radon-2.3.1+dfsg/debian/gitlab-ci.yml radon-3.0.3+dfsg/debian/gitlab-ci.yml --- radon-2.3.1+dfsg/debian/gitlab-ci.yml 1970-01-01 00:00:00.000000000 +0000 +++ radon-3.0.3+dfsg/debian/gitlab-ci.yml 2019-07-28 15:33:16.000000000 +0000 @@ -0,0 +1,7 @@ +include: + - https://salsa.debian.org/salsa-ci-team/pipeline/raw/master/salsa-ci.yml + - https://salsa.debian.org/salsa-ci-team/pipeline/raw/master/pipeline-jobs.yml + +variables: + RELEASE: 'unstable' + diff -Nru radon-2.3.1+dfsg/debian/README.source radon-3.0.3+dfsg/debian/README.source --- radon-2.3.1+dfsg/debian/README.source 1970-01-01 00:00:00.000000000 +0000 +++ radon-3.0.3+dfsg/debian/README.source 2019-07-28 15:33:16.000000000 +0000 @@ -0,0 +1,8 @@ +DFSG changes +============ + +Removing docs/_static as this content is replaced by the +dependency on libjs-mathjax in the dependencies of +python-radon-doc. + + diff -Nru radon-2.3.1+dfsg/debian/rules radon-3.0.3+dfsg/debian/rules --- radon-2.3.1+dfsg/debian/rules 2018-10-09 13:41:16.000000000 +0000 +++ radon-3.0.3+dfsg/debian/rules 2019-07-28 15:33:16.000000000 +0000 @@ -33,8 +33,13 @@ dh_installman -pradon debian/radon.1 find . -name objects.inv -delete +override_dh_auto_test: + # uses autopkgtest due to avoid adding extra build deps + true + override_dh_auto_clean: python3 setup.py clean -a find . -path '*/__pycache__/*' -delete find . -type d -name '__pycache__' -empty -delete + ${RM} -r docs/_build/ radon.egg-info .pytest_cache diff -Nru radon-2.3.1+dfsg/debian/tests/control radon-3.0.3+dfsg/debian/tests/control --- radon-2.3.1+dfsg/debian/tests/control 1970-01-01 00:00:00.000000000 +0000 +++ radon-3.0.3+dfsg/debian/tests/control 2019-07-28 15:33:16.000000000 +0000 @@ -0,0 +1,4 @@ +Tests: testsuite +Depends: @builddeps@, python3-pytest-mock, radon +Restrictions: allow-stderr, needs-root + diff -Nru radon-2.3.1+dfsg/debian/tests/testsuite radon-3.0.3+dfsg/debian/tests/testsuite --- radon-2.3.1+dfsg/debian/tests/testsuite 1970-01-01 00:00:00.000000000 +0000 +++ radon-3.0.3+dfsg/debian/tests/testsuite 2019-07-28 15:33:16.000000000 +0000 @@ -0,0 +1 @@ +PYTHONPATH=. pytest-3 radon/ diff -Nru radon-2.3.1+dfsg/docs/conf.py radon-3.0.3+dfsg/docs/conf.py --- radon-2.3.1+dfsg/docs/conf.py 2018-10-06 14:27:42.000000000 +0000 +++ radon-3.0.3+dfsg/docs/conf.py 2019-05-18 17:54:16.000000000 +0000 @@ -13,6 +13,7 @@ import os import sys +import time import datetime sys.path.insert(0, os.path.abspath(os.path.join(os.path.dirname(__file__), '..'))) @@ -46,9 +47,10 @@ # General information about the project. project = u'Radon' +build_date = datetime.datetime.utcfromtimestamp(int(os.environ.get('SOURCE_DATE_EPOCH', time.time()))) copyright = u'{0}, Michele Lacchia'.format('-'.join(map(str, range(2012, - datetime.datetime.now().year + 1)))) + build_date.year + 1)))) # The version info for the project you're documenting, acts as replacement for # |version| and |release|, also used in various other places throughout the diff -Nru radon-2.3.1+dfsg/docs/flake8.rst radon-3.0.3+dfsg/docs/flake8.rst --- radon-2.3.1+dfsg/docs/flake8.rst 2018-10-06 14:27:42.000000000 +0000 +++ radon-3.0.3+dfsg/docs/flake8.rst 2019-05-18 17:54:16.000000000 +0000 @@ -19,8 +19,9 @@ Instruct radon not to count `assert` statements towards cyclomatic complexity. The default behaviour is the opposite. - .. option:: --radon-show-closures - Instruct radon to add closures/inner classes to the output. +.. option:: --radon-show-closures + + Instruct radon to add closures/inner classes to the output. For more information visit the `Flake8 documentation `_. diff -Nru radon-2.3.1+dfsg/PKG-INFO radon-3.0.3+dfsg/PKG-INFO --- radon-2.3.1+dfsg/PKG-INFO 2018-10-06 14:28:41.000000000 +0000 +++ radon-3.0.3+dfsg/PKG-INFO 1970-01-01 00:00:00.000000000 +0000 @@ -1,198 +0,0 @@ -Metadata-Version: 1.1 -Name: radon -Version: 2.3.1 -Summary: Code Metrics in Python -Home-page: https://radon.readthedocs.org/ -Author: Michele Lacchia -Author-email: michelelacchia@gmail.com -License: MIT -Download-URL: https://pypi.python.org/radon/ -Description: Radon - ===== - - .. image:: https://img.shields.io/codacy/623b84f5f6e6708c486f371e10da3610.svg - :alt: Codacy badge - :target: https://www.codacy.com/app/rubik/radon/dashboard - - .. image:: https://img.shields.io/travis/rubik/radon/master.svg - :alt: Travis-CI badge - :target: https://travis-ci.org/rubik/radon - - .. image:: https://img.shields.io/coveralls/rubik/radon/master.svg - :alt: Coveralls badge - :target: https://coveralls.io/r/rubik/radon?branch=master - - .. image:: https://img.shields.io/pypi/v/radon.svg - :alt: PyPI latest version badge - :target: https://pypi.python.org/pypi/radon - - .. image:: https://img.shields.io/pypi/format/radon.svg - :alt: Download format - :target: http://pythonwheels.com/ - - .. image:: https://img.shields.io/pypi/l/radon.svg - :alt: Radon license - :target: https://pypi.python.org/pypi/radon - - - ---- - - Radon is a Python tool that computes various metrics from the source code. - Radon can compute: - - * **McCabe's complexity**, i.e. cyclomatic complexity - * **raw** metrics (these include SLOC, comment lines, blank lines, &c.) - * **Halstead** metrics (all of them) - * **Maintainability Index** (the one used in Visual Studio) - - Requirements - ------------ - - Radon will run from **Python 2.7** to **Python 3.6** with a single code base - and without the need of tools like 2to3 or six. It can also run on **PyPy** - without any problems (currently PyPy 5.8.0 is used in tests). - - Radon depends on as few packages as possible. Currently only `mando` is - strictly required (for the CLI interface). `colorama` is also listed as a - dependency but if Radon cannot import it, the output simply will not be - colored. - - **Note**: - **Python 2.6** was supported until version 1.5.0. Starting from version 2.0, it - is not supported anymore. - - Installation - ------------ - - With Pip: - - .. code-block:: sh - - $ pip install radon - - Or download the source and run the setup file: - - .. code-block:: sh - - $ python setup.py install - - Usage - ----- - - Radon can be used either from the command line or programmatically. - Documentation is at https://radon.readthedocs.org/. - - Cyclomatic Complexity Example - ----------------------------- - - Quick example: - - .. code-block:: sh - - $ radon cc sympy/solvers/solvers.py -a -nc - sympy/solvers/solvers.py - F 346:0 solve - F - F 1093:0 _solve - F - F 1434:0 _solve_system - F - F 2647:0 unrad - F - F 110:0 checksol - F - F 2238:0 _tsolve - F - F 2482:0 _invert - F - F 1862:0 solve_linear_system - E - F 1781:0 minsolve_linear_system - D - F 1636:0 solve_linear - D - F 2382:0 nsolve - C - - 11 blocks (classes, functions, methods) analyzed. - Average complexity: F (61.0) - - Explanation: - - * ``cc`` is the radon command to compute Cyclomatic Complexity - * ``-a`` tells radon to calculate the average complexity at the end. Note that - the average is computed among the *shown* blocks. If you want the total - average, among all the blocks, regardless of what is being shown, you should - use ``--total-average``. - * ``-nc`` tells radon to print only results with a complexity rank of C or - worse. Other examples: ``-na`` (from A to F), or ``-nd`` (from D to F). - * The letter *in front of* the line numbers represents the type of the block - (**F** means function, **M** method and **C** class). - - Actually it's even better: it's got colors! - - .. image:: https://cloud.githubusercontent.com/assets/238549/3707477/5793aeaa-1435-11e4-98fb-00e0bd8137f5.png - :alt: A screen of Radon's cc command - - - **Note about file encoding** - - On some systems, such as Windows, the default encoding is not UTF-8. If you are - using Unicode characters in your Python file and want to analyze it with Radon, - you'll have to set the `RADONFILESENCODING` environment variable to `UTF-8`. - - - On a Continuous Integration server - ---------------------------------- - - If you are looking to use `radon` on a CI server you may be better off with - `xenon `_. Although still experimental, it will - fail (that means exiting with a non-zero exit code) when various thresholds are - surpassed. `radon` is more of a reporting tool, while `xenon` is a monitoring - one. - - If you are looking for more complete solutions, read the following sections. - - Codacy - ++++++++++++ - - `Codacy `_ uses Radon `by default `_ to calculate metrics from the source code. - - Code Climate - ++++++++++++ - - Radon is available as a `Code Climate Engine `_. - To understand how to add Radon's checks to your Code Climate Platform, head - over to their documentation: - https://docs.codeclimate.com/v1.0/docs/radon - - Coala Analyzer - ++++++++++++++ - - Radon is also supported in `coala `_. To add Radon's - checks to coala, simply add the ``RadonBear`` to one of the sections in - your ``.coafile``. - - CodeFactor - ++++++++++++ - - `CodeFactor `_ uses Radon `out-of-the-box `_ to calculate Cyclomatic Complexity. - - - Links - ----- - - * Documentation: https://radon.readthedocs.org - * PyPI: http://pypi.python.org/pypi/radon - * Issue Tracker: https://github.com/rubik/radon/issues - -Keywords: static analysis code complexity metrics -Platform: any -Classifier: Development Status :: 5 - Production/Stable -Classifier: Environment :: Console -Classifier: Intended Audience :: Developers -Classifier: License :: OSI Approved :: MIT License -Classifier: Operating System :: OS Independent -Classifier: Programming Language :: Python -Classifier: Programming Language :: Python :: 2 -Classifier: Programming Language :: Python :: 2.7 -Classifier: Programming Language :: Python :: 3 -Classifier: Programming Language :: Python :: 3.1 -Classifier: Programming Language :: Python :: 3.2 -Classifier: Programming Language :: Python :: 3.3 -Classifier: Programming Language :: Python :: 3.4 -Classifier: Programming Language :: Python :: 3.5 -Classifier: Programming Language :: Python :: 3.6 -Classifier: Topic :: Software Development -Classifier: Topic :: Software Development :: Libraries :: Python Modules -Classifier: Topic :: Software Development :: Quality Assurance -Classifier: Topic :: Utilities diff -Nru radon-2.3.1+dfsg/radon/cli/harvest.py radon-3.0.3+dfsg/radon/cli/harvest.py --- radon-2.3.1+dfsg/radon/cli/harvest.py 2018-10-06 14:27:42.000000000 +0000 +++ radon-3.0.3+dfsg/radon/cli/harvest.py 2019-05-18 17:54:16.000000000 +0000 @@ -1,5 +1,6 @@ '''This module holds the base Harvester class and all its subclassess.''' +from builtins import super import json import collections from radon.raw import analyze diff -Nru radon-2.3.1+dfsg/radon/cli/__init__.py radon-3.0.3+dfsg/radon/cli/__init__.py --- radon-2.3.1+dfsg/radon/cli/__init__.py 2018-10-06 14:27:42.000000000 +0000 +++ radon-3.0.3+dfsg/radon/cli/__init__.py 2019-05-18 17:54:16.000000000 +0000 @@ -2,6 +2,7 @@ import sys import inspect +from contextlib import contextmanager from mando import Program import radon.complexity as cc_mod @@ -16,7 +17,8 @@ @program.arg('paths', nargs='+') def cc(paths, min='A', max='F', show_complexity=False, average=False, exclude=None, ignore=None, order='SCORE', json=False, no_assert=False, - show_closures=False, total_average=False, xml=False, codeclimate=False): + show_closures=False, total_average=False, xml=False, codeclimate=False, + output_file=None, ): '''Analyze the given Python modules and compute Cyclomatic Complexity (CC). @@ -47,6 +49,7 @@ :param --no-assert: Do not count `assert` statements when computing complexity. :param --show-closures: Add closures/inner classes to the output. + :param -O, --output-file : The output file (default to stdout). ''' config = Config( min=min.upper(), @@ -61,12 +64,15 @@ show_closures=show_closures, ) harvester = CCHarvester(paths, config) - log_result(harvester, json=json, xml=xml, codeclimate=codeclimate) + with outstream(output_file) as stream: + log_result(harvester, json=json, xml=xml, codeclimate=codeclimate, + stream=stream) @program.command @program.arg('paths', nargs='+') -def raw(paths, exclude=None, ignore=None, summary=False, json=False): +def raw(paths, exclude=None, ignore=None, summary=False, json=False, + output_file=None): '''Analyze the given Python modules and compute raw metrics. :param paths: The paths where to find modules or packages to analyze. More @@ -79,6 +85,7 @@ :param -s, --summary: If given, at the end of the analysis display the summary of the gathered metrics. Default to False. :param -j, --json: Format results in JSON. + :param -O, --output-file : The output file (default to stdout). ''' config = Config( exclude=exclude, @@ -86,13 +93,14 @@ summary=summary, ) harvester = RawHarvester(paths, config) - log_result(harvester, json=json) + with outstream(output_file) as stream: + log_result(harvester, json=json, stream=stream) @program.command @program.arg('paths', nargs='+') def mi(paths, min='A', max='C', multi=True, exclude=None, ignore=None, - show=False, json=False, sort=False): + show=False, json=False, sort=False, output_file=None): '''Analyze the given Python modules and compute the Maintainability Index. The maintainability index (MI) is a compound metric, with the primary aim @@ -113,6 +121,7 @@ :param -s, --show: If given, the actual MI value is shown in results. :param -j, --json: Format results in JSON. :param --sort: If given, results are sorted in ascending order. + :param -O, --output-file : The output file (default to stdout). ''' config = Config( min=min.upper(), @@ -125,12 +134,14 @@ ) harvester = MIHarvester(paths, config) - log_result(harvester, json=json) + with outstream(output_file) as stream: + log_result(harvester, json=json, stream=stream) @program.command @program.arg("paths", nargs="+") -def hal(paths, exclude=None, ignore=None, json=False, functions=False): +def hal(paths, exclude=None, ignore=None, json=False, functions=False, + output_file=None): """ Analyze the given Python modules and compute their Halstead metrics. @@ -147,6 +158,7 @@ hidden directories (starting with '.') are ignored. :param -j, --json: Format results in JSON. :param -f, --functions: Analyze files by top-level functions instead of as a whole. + :param -O, --output-file : The output file (default to stdout). """ config = Config( exclude=exclude, @@ -155,7 +167,8 @@ ) harvester = HCHarvester(paths, config) - log_result(harvester, json=json, xml=False) + with outstream(output_file) as stream: + log_result(harvester, json=json, xml=False, stream=stream) class Config(object): @@ -209,20 +222,22 @@ passed to the :func:`~radon.cli.log` function. ''' if kwargs.get('json'): - log(harvester.as_json(), noformat=True) + log(harvester.as_json(), noformat=True, **kwargs) elif kwargs.get('xml'): - log(harvester.as_xml(), noformat=True) + log(harvester.as_xml(), noformat=True, **kwargs) elif kwargs.get('codeclimate'): log_list(harvester.as_codeclimate_issues(), delimiter='\0', - noformat=True) + noformat=True, **kwargs) else: - for msg, args, kwargs in harvester.to_terminal(): - if kwargs.get('error', False): - log(msg) - log_error(args[0], indent=1) + for msg, h_args, h_kwargs in harvester.to_terminal(): + kw = kwargs.copy() + kw.update(h_kwargs) + if h_kwargs.get('error', False): + log(msg, **kw) + log_error(h_args[0], indent=1) continue msg = [msg] if not isinstance(msg, (list, tuple)) else msg - log_list(msg, *args, **kwargs) + log_list(msg, *h_args, **kw) def log(msg, *args, **kwargs): @@ -237,7 +252,8 @@ indent = 4 * kwargs.get('indent', 0) delimiter = kwargs.get('delimiter', '\n') m = msg if kwargs.get('noformat', False) else msg.format(*args) - sys.stdout.write(' ' * indent + m + delimiter) + stream = kwargs.get('stream', sys.stdout) + stream.write(' ' * indent + m + delimiter) def log_list(lst, *args, **kwargs): @@ -251,3 +267,13 @@ def log_error(msg, *args, **kwargs): '''Log an error message. Arguments are the same as log().''' log('{0}{1}ERROR{2}: {3}'.format(BRIGHT, RED, RESET, msg), *args, **kwargs) + + +@contextmanager +def outstream(outfile=None): + '''Encapsulate output stream creation as a context manager''' + if outfile: + with open(outfile, 'w') as outstream: + yield outstream + else: + yield sys.stdout diff -Nru radon-2.3.1+dfsg/radon/cli/tools.py radon-3.0.3+dfsg/radon/cli/tools.py --- radon-2.3.1+dfsg/radon/cli/tools.py 2018-10-06 14:27:42.000000000 +0000 +++ radon-3.0.3+dfsg/radon/cli/tools.py 2019-05-18 17:54:16.000000000 +0000 @@ -201,6 +201,20 @@ yield f +def _is_python_file(filename): + '''Check if a file is a Python source file.''' + if filename == '-' or filename.endswith('.py'): + return True + try: + with open(filename) as fobj: + first_line = fobj.readline() + if first_line.startswith('#!') and 'python' in first_line: + return True + except Exception: + return False + return False + + def iter_filenames(paths, exclude=None, ignore=None): '''A generator that yields all sub-paths of the ones specified in `paths`. Optional `exclude` filters can be passed as a comma-separated @@ -212,11 +226,10 @@ if set(paths) == set(('-',)): yield '-' return - e = '*[!p][!y]' - exclude = '{0},{1}'.format(e, exclude).split(',') if exclude else [e] + exclude = exclude.split(',') if exclude else [] ignore = '.*,{0}'.format(ignore).split(',') if ignore else ['.*'] for path in paths: - if (os.path.isfile(path) and + if (os.path.isfile(path) and _is_python_file(path) and (not exclude or not any(fnmatch.fnmatch(path, p) for p in exclude))): yield path @@ -234,7 +247,7 @@ fullpaths = (os.path.normpath(os.path.join(root, p)) for p in files) for filename in filter_out(fullpaths, exclude): if (not os.path.basename(filename).startswith('.') and - filename.endswith('.py')): + _is_python_file(filename)): yield filename diff -Nru radon-2.3.1+dfsg/radon/__init__.py radon-3.0.3+dfsg/radon/__init__.py --- radon-2.3.1+dfsg/radon/__init__.py 2018-10-06 14:27:42.000000000 +0000 +++ radon-3.0.3+dfsg/radon/__init__.py 2019-05-18 17:54:16.000000000 +0000 @@ -1,7 +1,7 @@ '''This module contains the main() function, which is the entry point for the command line interface.''' -__version__ = '2.3.1' +__version__ = '3.0.3' def main(): diff -Nru radon-2.3.1+dfsg/radon/__main__.py radon-3.0.3+dfsg/radon/__main__.py --- radon-2.3.1+dfsg/radon/__main__.py 1970-01-01 00:00:00.000000000 +0000 +++ radon-3.0.3+dfsg/radon/__main__.py 2019-05-18 17:54:16.000000000 +0000 @@ -0,0 +1,4 @@ +"""Module allowing for ``python -m radon ...``.""" +from radon import main + +main() diff -Nru radon-2.3.1+dfsg/radon/raw.py radon-3.0.3+dfsg/radon/raw.py --- radon-2.3.1+dfsg/radon/raw.py 2018-10-06 14:27:42.000000000 +0000 +++ radon-3.0.3+dfsg/radon/raw.py 2019-05-18 17:54:16.000000000 +0000 @@ -13,12 +13,13 @@ import io -__all__ = ['OP', 'COMMENT', 'TOKEN_NUMBER', 'NL', 'EM', 'Module', '_generate', - '_less_tokens', '_find', '_logical', 'analyze'] +__all__ = ['OP', 'COMMENT', 'TOKEN_NUMBER', 'NL', 'NEWLINE', 'EM', 'Module', + '_generate', '_fewer_tokens', '_find', '_logical', 'analyze'] COMMENT = tokenize.COMMENT OP = tokenize.OP NL = tokenize.NL +NEWLINE = tokenize.NEWLINE EM = tokenize.ENDMARKER # Helper for map() @@ -44,7 +45,7 @@ return list(tokenize.generate_tokens(io.StringIO(code).readline)) -def _less_tokens(tokens, remove): +def _fewer_tokens(tokens, remove): '''Process the output of `tokenize.generate_tokens` removing the tokens specified in `remove`. ''' @@ -135,29 +136,33 @@ def aux(sub_tokens): '''The actual function which does the job.''' # Get the tokens and, in the meantime, remove comments - processed = list(_less_tokens(sub_tokens, [COMMENT])) + processed = list(_fewer_tokens(sub_tokens, [COMMENT, NL, NEWLINE])) try: # Verify whether a colon is present among the tokens and that # it is the last token. token_pos = _find(processed, OP, ':') + # We subtract 2 from the total because the last token is always + # ENDMARKER. There are two cases: if the colon is at the end, it + # means that there is only one logical line; if it isn't then there + # are two. return 2 - (token_pos == len(processed) - 2) except ValueError: # The colon is not present # If the line is only composed by comments, newlines and endmarker # then it does not count as a logical line. # Otherwise it count as 1. - if not list(_less_tokens(processed, [NL, EM])): + if not list(_fewer_tokens(processed, [NL, NEWLINE, EM])): return 0 return 1 return sum(aux(sub) for sub in _split_tokens(tokens, OP, ';')) def is_single_token(token_number, tokens): - '''Is this a single token matching token_number followed by ENDMARKER or NL - tokens. + '''Is this a single token matching token_number followed by ENDMARKER, NL + or NEWLINE tokens. ''' return (TOKEN_NUMBER(tokens[0]) == token_number and - all(TOKEN_NUMBER(t) in (tokenize.ENDMARKER, tokenize.NL) + all(TOKEN_NUMBER(t) in (EM, NL, NEWLINE) for t in tokens[1:])) @@ -209,20 +214,15 @@ else: multi += sum(1 for l in parsed_lines if l) # Skip empty lines blank += sum(1 for l in parsed_lines if not l) - else: # Everything else is either code or blank lines - for parsed_line in parsed_lines: if parsed_line: sloc += 1 else: blank += 1 - # Process a logical line - # Split it on semicolons because they increase the number of - # logical lines - for sub_tokens in _split_tokens(tokens, OP, ';'): - lloc += _logical(sub_tokens) + # Process logical lines separately + lloc += _logical(tokens) loc = sloc + blank + multi + single_comments return Module(loc, lloc, sloc, comments, multi, blank, single_comments) diff -Nru radon-2.3.1+dfsg/radon/tests/test_cli_harvest.py radon-3.0.3+dfsg/radon/tests/test_cli_harvest.py --- radon-2.3.1+dfsg/radon/tests/test_cli_harvest.py 2018-10-06 14:27:42.000000000 +0000 +++ radon-3.0.3+dfsg/radon/tests/test_cli_harvest.py 2019-05-18 17:54:16.000000000 +0000 @@ -1,4 +1,7 @@ -import collections.abc +try: + import collections.abc as collections_abc +except ImportError: + import collections as collections_abc import pytest @@ -100,7 +103,7 @@ def test_base_run(base_config): h = harvest.Harvester(['-'], base_config) h.gobble = fake_gobble - assert isinstance(h.run(), collections.abc.Iterator) + assert isinstance(h.run(), collections_abc.Iterator) assert list(h.run()) == [('-', 42)] h.gobble = fake_gobble_raising assert list(h.run()) == [('-', {'error': 'mystr'})] @@ -110,10 +113,10 @@ h = harvest.Harvester([], base_config) h.run = fake_run results = h.results - assert isinstance(results, collections.abc.Iterator) + assert isinstance(results, collections_abc.Iterator) assert list(results) == [{'file-0': 0}, {'file-1': 1}, {'file-2': 4}] - assert not isinstance(h.results, collections.abc.Iterator) - assert isinstance(h.results, collections.abc.Iterable) + assert not isinstance(h.results, collections_abc.Iterator) + assert isinstance(h.results, collections_abc.Iterable) assert isinstance(h.results, list) diff -Nru radon-2.3.1+dfsg/radon/tests/test_cli.py radon-3.0.3+dfsg/radon/tests/test_cli.py --- radon-2.3.1+dfsg/radon/tests/test_cli.py 2018-10-06 14:27:42.000000000 +0000 +++ radon-3.0.3+dfsg/radon/tests/test_cli.py 2019-05-18 17:54:16.000000000 +0000 @@ -79,7 +79,7 @@ average=False, order=getattr(cc_mod, 'SCORE'), no_assert=False, total_average=False, show_closures=False)) log_mock.assert_called_once_with(mocker.sentinel.harvester, - codeclimate=False, json=True, xml=False) + codeclimate=False, json=True, stream=sys.stdout, xml=False) def test_raw(mocker, log_mock): @@ -91,7 +91,8 @@ harv_mock.assert_called_once_with(['-'], cli.Config(exclude=None, ignore=None, summary=True)) - log_mock.assert_called_once_with(mocker.sentinel.harvester, json=True) + log_mock.assert_called_once_with(mocker.sentinel.harvester, + stream=sys.stdout, json=True) def test_mi(mocker, log_mock): @@ -103,7 +104,8 @@ harv_mock.assert_called_once_with(['-'], cli.Config( min='A', max='C', exclude=None, ignore=None, show=True, multi=False, sort=False)) - log_mock.assert_called_once_with(mocker.sentinel.harvester, json=False) + log_mock.assert_called_once_with(mocker.sentinel.harvester, + stream=sys.stdout, json=False) def test_encoding(mocker, log_mock): @@ -203,10 +205,10 @@ h.to_terminal.assert_called_once_with() log_mock.assert_has_calls([ - mocker.call(mocker.sentinel.json, noformat=True), - mocker.call(mocker.sentinel.json, noformat=True), - mocker.call(mocker.sentinel.xml, noformat=True), - mocker.call('a'), + mocker.call(mocker.sentinel.json, json=True, noformat=True), + mocker.call(mocker.sentinel.json, json=True, noformat=True, xml=True), + mocker.call(mocker.sentinel.xml, noformat=True, xml=True), + mocker.call('a', error=True), ]) le_mock.assert_called_once_with('mystr', indent=1) ll_mock.assert_has_calls([ diff -Nru radon-2.3.1+dfsg/radon/tests/test_cli_tools.py radon-3.0.3+dfsg/radon/tests/test_cli_tools.py --- radon-2.3.1+dfsg/radon/tests/test_cli_tools.py 2018-10-06 14:27:42.000000000 +0000 +++ radon-3.0.3+dfsg/radon/tests/test_cli_tools.py 2019-05-18 17:54:16.000000000 +0000 @@ -26,6 +26,10 @@ yield './{0}'.format(d), [], contents[d] +def fake_is_python_file(filename): + return filename.endswith('.py') + + def assert_pequal(a, b): a, b = [list(map(os.path.normpath, p)) for p in (a, b)] assert a == b @@ -72,6 +76,7 @@ os_path_mod.join = os.path.join os_path_mod.isfile.side_effect = fake_isfile os_mod.walk = fake_walk + tools._is_python_file = fake_is_python_file assert_pequal(iter_files(['file.py', 'random/path']), ['file.py', 'amod.py', 'test_all.py', diff -Nru radon-2.3.1+dfsg/radon/tests/test_complexity_visitor.py radon-3.0.3+dfsg/radon/tests/test_complexity_visitor.py --- radon-2.3.1+dfsg/radon/tests/test_complexity_visitor.py 2018-10-06 14:27:42.000000000 +0000 +++ radon-3.0.3+dfsg/radon/tests/test_complexity_visitor.py 2019-05-18 17:54:16.000000000 +0000 @@ -82,9 +82,10 @@ else: pass ''', 5, {}), + # With and async-with statements no longer count towards CC, see #123 (''' with open('raw.py') as fobj: print(fobj.read()) - ''', 2, {}), + ''', 1, {}), (''' [i for i in range(4)] @@ -271,13 +272,14 @@ ] if sys.version_info[:2] >= (3, 5): + # With and async-with statements no longer count towards CC, see #123 SINGLE_FUNCTIONS_CASES.append( (''' async def f(a, b): async with open('blabla.log', 'w') as f: async for i in range(100): f.write(str(i) + '\\n') - ''', (1, 3)), + ''', (1, 2)), ) @@ -289,6 +291,7 @@ FUNCTIONS_CASES = [ + # With and async-with statements no longer count towards CC, see #123 (''' def f(a, b): return a if b else 2 @@ -326,7 +329,7 @@ k += sum(1 / j for j in range(i ** 2) if j > 2) fobj.write(str(k)) return k - 1 - ''', (5, 10)), + ''', (5, 9)), ] @@ -353,7 +356,7 @@ while self.m(k) < k: k -= self.m(k ** 2 - min(self.m(j) for j in range(k ** 4))) return k - ''', (6, 4, 3)), + ''', (8, 4, 3)), (''' class B(object): @@ -374,7 +377,7 @@ elif a > self.ATTR ** 2: yield self.__iter__() yield iter(a) - ''', (5, 1, 3)), + ''', (7, 1, 3)), ] @@ -432,7 +435,7 @@ if a < b: b, a = a, inner(b) return a, b - ''', (3, 1, 2, 6)), + ''', (3, 1, 3, 7)), (''' class f(object): diff -Nru radon-2.3.1+dfsg/radon/tests/test_other_metrics.py radon-3.0.3+dfsg/radon/tests/test_other_metrics.py --- radon-2.3.1+dfsg/radon/tests/test_other_metrics.py 2018-10-06 14:27:42.000000000 +0000 +++ radon-3.0.3+dfsg/radon/tests/test_other_metrics.py 2019-05-18 17:54:16.000000000 +0000 @@ -115,10 +115,10 @@ # CC = 4 # LLOC = 9 # CM % = 38.46153846153847 - (second_mi, 95.10743260514764, True), + (second_mi, 93.84027450359395, True), # CM % = 15.384615384615385 - (second_mi, 90.10892143724502, False), + (second_mi, 88.84176333569131, False), ] diff -Nru radon-2.3.1+dfsg/radon/tests/test_raw.py radon-3.0.3+dfsg/radon/tests/test_raw.py --- radon-2.3.1+dfsg/radon/tests/test_raw.py 2018-10-06 14:27:42.000000000 +0000 +++ radon-3.0.3+dfsg/radon/tests/test_raw.py 2019-05-18 17:54:16.000000000 +0000 @@ -123,6 +123,10 @@ (''' a = 1; b = 2; ''', 2), + + (''' + a = 2; b = 43; c = 42; d = 3; print(a) + ''', 5), ] @@ -140,7 +144,7 @@ """ doc? """ - ''', (3, 0, 0, 0, 3, 0, 0)), + ''', (3, 1, 0, 0, 3, 0, 0)), (''' # just a comment @@ -172,7 +176,7 @@ def f(n): """here""" return n * f(n - 1) - ''', (3, 2, 2, 0, 0, 0, 1)), + ''', (3, 3, 2, 0, 0, 0, 1)), (''' def hip(a, k): @@ -187,7 +191,7 @@ """ if n <= 1: return 1 # otherwise it will melt the cpu return fib(n - 2) + fib(n - 1) - ''', (12, 8, 6, 2, 3, 2, 1)), + ''', (12, 9, 6, 2, 3, 2, 1)), (''' a = [1, 2, 3, @@ -200,7 +204,7 @@ Try it with n = 294942: it will take a fairly long time. """ if n <= 1: return 1 # otherwise it will melt the cpu - ''', (5, 3, 2, 1, 3, 0, 0)), + ''', (5, 4, 2, 1, 3, 0, 0)), (''' def foo(n=1): @@ -209,7 +213,7 @@ """ if n <= 1: return 1 # otherwise it will melt the cpu string = """This is a string not a comment""" - ''', (6, 4, 3, 1, 3, 0, 0)), + ''', (6, 5, 3, 1, 3, 0, 0)), (''' def foo(n=1): @@ -220,7 +224,7 @@ string = """ This is a string not a comment """ - ''', (8, 4, 5, 1, 3, 0, 0)), + ''', (8, 5, 5, 1, 3, 0, 0)), (''' def foo(n=1): @@ -232,7 +236,7 @@ This is a string not a comment """ test = 0 - ''', (9, 5, 6, 1, 3, 0, 0)), + ''', (9, 6, 6, 1, 3, 0, 0)), # Breaking lines still treated as single line of code. (r''' @@ -241,12 +245,12 @@ Try it with n = 294942: it will take a fairly long time. """ if n <= 1: return 1 # otherwise it will melt the cpu - string =\ + string = \ """ This is a string not a comment """ test = 0 - ''', (10, 5, 7, 1, 3, 0, 0)), + ''', (10, 6, 7, 1, 3, 0, 0)), # Test handling of last line comment. (r''' @@ -261,7 +265,7 @@ """ test = 0 # Comment - ''', (11, 5, 7, 2, 3, 0, 1)), + ''', (11, 6, 7, 2, 3, 0, 1)), (r''' def foo(n=1): @@ -270,11 +274,11 @@ """ if n <= 1: return 1 # otherwise it will melt the cpu test = 0 - string =\ + string = \ """ This is a string not a comment """ - ''', (10, 5, 7, 1, 3, 0, 0)), + ''', (10, 6, 7, 1, 3, 0, 0)), (''' def function( @@ -284,7 +288,7 @@ for the function """ pass - ''', (7, 2, 4, 0, 3, 0, 0)), + ''', (7, 3, 4, 0, 3, 0, 0)), (''' def function(): multiline_with_equals_in_it = """ """ @@ -293,7 +297,7 @@ (''' def function(): """ a docstring in a single line counts as a single-line comment """ - ''', (2, 1, 1, 0, 0, 0, 1)), + ''', (2, 2, 1, 0, 0, 0, 1)), (''' def function(): """ this is not a """ """ docstring because it is concatenated """ diff -Nru radon-2.3.1+dfsg/radon/visitors.py radon-3.0.3+dfsg/radon/visitors.py --- radon-2.3.1+dfsg/radon/visitors.py 2018-10-06 14:27:42.000000000 +0000 +++ radon-3.0.3+dfsg/radon/visitors.py 2019-05-18 17:54:16.000000000 +0000 @@ -206,7 +206,7 @@ self.complexity += len(node.values) - 1 # Ifs, with and assert statements count all as 1. # Note: Lambda functions are not counted anymore, see #68 - elif name in ('With', 'If', 'IfExp', 'AsyncWith'): + elif name in ('If', 'IfExp'): self.complexity += 1 # The For and While blocks count as 1 plus the `else` block. elif name in ('For', 'While', 'AsyncFor'): @@ -272,7 +272,8 @@ visitor.visit(child) methods.extend(visitor.functions) body_complexity += (visitor.complexity + - visitor.functions_complexity) + visitor.functions_complexity + + len(visitor.functions)) visitors_max_lines.append(visitor.max_line) inner_classes.extend(visitor.classes) diff -Nru radon-2.3.1+dfsg/radon.egg-info/dependency_links.txt radon-3.0.3+dfsg/radon.egg-info/dependency_links.txt --- radon-2.3.1+dfsg/radon.egg-info/dependency_links.txt 2018-10-06 14:28:41.000000000 +0000 +++ radon-3.0.3+dfsg/radon.egg-info/dependency_links.txt 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ - diff -Nru radon-2.3.1+dfsg/radon.egg-info/entry_points.txt radon-3.0.3+dfsg/radon.egg-info/entry_points.txt --- radon-2.3.1+dfsg/radon.egg-info/entry_points.txt 2018-10-06 14:28:41.000000000 +0000 +++ radon-3.0.3+dfsg/radon.egg-info/entry_points.txt 1970-01-01 00:00:00.000000000 +0000 @@ -1,9 +0,0 @@ -[console_scripts] -radon = radon:main - -[flake8.extension] -R70 = radon.complexity:Flake8Checker - -[setuptools.installation] -eggsecutable = radon:main - diff -Nru radon-2.3.1+dfsg/radon.egg-info/PKG-INFO radon-3.0.3+dfsg/radon.egg-info/PKG-INFO --- radon-2.3.1+dfsg/radon.egg-info/PKG-INFO 2018-10-06 14:28:41.000000000 +0000 +++ radon-3.0.3+dfsg/radon.egg-info/PKG-INFO 1970-01-01 00:00:00.000000000 +0000 @@ -1,198 +0,0 @@ -Metadata-Version: 1.1 -Name: radon -Version: 2.3.1 -Summary: Code Metrics in Python -Home-page: https://radon.readthedocs.org/ -Author: Michele Lacchia -Author-email: michelelacchia@gmail.com -License: MIT -Download-URL: https://pypi.python.org/radon/ -Description: Radon - ===== - - .. image:: https://img.shields.io/codacy/623b84f5f6e6708c486f371e10da3610.svg - :alt: Codacy badge - :target: https://www.codacy.com/app/rubik/radon/dashboard - - .. image:: https://img.shields.io/travis/rubik/radon/master.svg - :alt: Travis-CI badge - :target: https://travis-ci.org/rubik/radon - - .. image:: https://img.shields.io/coveralls/rubik/radon/master.svg - :alt: Coveralls badge - :target: https://coveralls.io/r/rubik/radon?branch=master - - .. image:: https://img.shields.io/pypi/v/radon.svg - :alt: PyPI latest version badge - :target: https://pypi.python.org/pypi/radon - - .. image:: https://img.shields.io/pypi/format/radon.svg - :alt: Download format - :target: http://pythonwheels.com/ - - .. image:: https://img.shields.io/pypi/l/radon.svg - :alt: Radon license - :target: https://pypi.python.org/pypi/radon - - - ---- - - Radon is a Python tool that computes various metrics from the source code. - Radon can compute: - - * **McCabe's complexity**, i.e. cyclomatic complexity - * **raw** metrics (these include SLOC, comment lines, blank lines, &c.) - * **Halstead** metrics (all of them) - * **Maintainability Index** (the one used in Visual Studio) - - Requirements - ------------ - - Radon will run from **Python 2.7** to **Python 3.6** with a single code base - and without the need of tools like 2to3 or six. It can also run on **PyPy** - without any problems (currently PyPy 5.8.0 is used in tests). - - Radon depends on as few packages as possible. Currently only `mando` is - strictly required (for the CLI interface). `colorama` is also listed as a - dependency but if Radon cannot import it, the output simply will not be - colored. - - **Note**: - **Python 2.6** was supported until version 1.5.0. Starting from version 2.0, it - is not supported anymore. - - Installation - ------------ - - With Pip: - - .. code-block:: sh - - $ pip install radon - - Or download the source and run the setup file: - - .. code-block:: sh - - $ python setup.py install - - Usage - ----- - - Radon can be used either from the command line or programmatically. - Documentation is at https://radon.readthedocs.org/. - - Cyclomatic Complexity Example - ----------------------------- - - Quick example: - - .. code-block:: sh - - $ radon cc sympy/solvers/solvers.py -a -nc - sympy/solvers/solvers.py - F 346:0 solve - F - F 1093:0 _solve - F - F 1434:0 _solve_system - F - F 2647:0 unrad - F - F 110:0 checksol - F - F 2238:0 _tsolve - F - F 2482:0 _invert - F - F 1862:0 solve_linear_system - E - F 1781:0 minsolve_linear_system - D - F 1636:0 solve_linear - D - F 2382:0 nsolve - C - - 11 blocks (classes, functions, methods) analyzed. - Average complexity: F (61.0) - - Explanation: - - * ``cc`` is the radon command to compute Cyclomatic Complexity - * ``-a`` tells radon to calculate the average complexity at the end. Note that - the average is computed among the *shown* blocks. If you want the total - average, among all the blocks, regardless of what is being shown, you should - use ``--total-average``. - * ``-nc`` tells radon to print only results with a complexity rank of C or - worse. Other examples: ``-na`` (from A to F), or ``-nd`` (from D to F). - * The letter *in front of* the line numbers represents the type of the block - (**F** means function, **M** method and **C** class). - - Actually it's even better: it's got colors! - - .. image:: https://cloud.githubusercontent.com/assets/238549/3707477/5793aeaa-1435-11e4-98fb-00e0bd8137f5.png - :alt: A screen of Radon's cc command - - - **Note about file encoding** - - On some systems, such as Windows, the default encoding is not UTF-8. If you are - using Unicode characters in your Python file and want to analyze it with Radon, - you'll have to set the `RADONFILESENCODING` environment variable to `UTF-8`. - - - On a Continuous Integration server - ---------------------------------- - - If you are looking to use `radon` on a CI server you may be better off with - `xenon `_. Although still experimental, it will - fail (that means exiting with a non-zero exit code) when various thresholds are - surpassed. `radon` is more of a reporting tool, while `xenon` is a monitoring - one. - - If you are looking for more complete solutions, read the following sections. - - Codacy - ++++++++++++ - - `Codacy `_ uses Radon `by default `_ to calculate metrics from the source code. - - Code Climate - ++++++++++++ - - Radon is available as a `Code Climate Engine `_. - To understand how to add Radon's checks to your Code Climate Platform, head - over to their documentation: - https://docs.codeclimate.com/v1.0/docs/radon - - Coala Analyzer - ++++++++++++++ - - Radon is also supported in `coala `_. To add Radon's - checks to coala, simply add the ``RadonBear`` to one of the sections in - your ``.coafile``. - - CodeFactor - ++++++++++++ - - `CodeFactor `_ uses Radon `out-of-the-box `_ to calculate Cyclomatic Complexity. - - - Links - ----- - - * Documentation: https://radon.readthedocs.org - * PyPI: http://pypi.python.org/pypi/radon - * Issue Tracker: https://github.com/rubik/radon/issues - -Keywords: static analysis code complexity metrics -Platform: any -Classifier: Development Status :: 5 - Production/Stable -Classifier: Environment :: Console -Classifier: Intended Audience :: Developers -Classifier: License :: OSI Approved :: MIT License -Classifier: Operating System :: OS Independent -Classifier: Programming Language :: Python -Classifier: Programming Language :: Python :: 2 -Classifier: Programming Language :: Python :: 2.7 -Classifier: Programming Language :: Python :: 3 -Classifier: Programming Language :: Python :: 3.1 -Classifier: Programming Language :: Python :: 3.2 -Classifier: Programming Language :: Python :: 3.3 -Classifier: Programming Language :: Python :: 3.4 -Classifier: Programming Language :: Python :: 3.5 -Classifier: Programming Language :: Python :: 3.6 -Classifier: Topic :: Software Development -Classifier: Topic :: Software Development :: Libraries :: Python Modules -Classifier: Topic :: Software Development :: Quality Assurance -Classifier: Topic :: Utilities diff -Nru radon-2.3.1+dfsg/radon.egg-info/requires.txt radon-3.0.3+dfsg/radon.egg-info/requires.txt --- radon-2.3.1+dfsg/radon.egg-info/requires.txt 2018-10-06 14:28:41.000000000 +0000 +++ radon-3.0.3+dfsg/radon.egg-info/requires.txt 1970-01-01 00:00:00.000000000 +0000 @@ -1,3 +0,0 @@ -colorama<0.4,>=0.3 -flake8-polyfill -mando<0.7,>=0.6 diff -Nru radon-2.3.1+dfsg/radon.egg-info/SOURCES.txt radon-3.0.3+dfsg/radon.egg-info/SOURCES.txt --- radon-2.3.1+dfsg/radon.egg-info/SOURCES.txt 2018-10-06 14:28:41.000000000 +0000 +++ radon-3.0.3+dfsg/radon.egg-info/SOURCES.txt 1970-01-01 00:00:00.000000000 +0000 @@ -1,298 +0,0 @@ -.codeclimate.yml -.gitignore -.travis.yml -CHANGELOG -Dockerfile -LICENSE -MANIFEST.in -Makefile -Pipfile -Pipfile.lock -README.rst -codeclimate-radon -pylintrc -requirements.txt -setup.cfg -setup.py -test_requirements.txt -tox.ini -docs/Makefile -docs/api.rst -docs/changelog.rst -docs/commandline.rst -docs/conf.py -docs/flake8.rst -docs/index.rst -docs/intro.rst -docs/make.bat -docs/_static/MathJax.js -docs/_static/config/TeX-AMS_HTML.js -docs/_static/extensions/MathEvents.js -docs/_static/extensions/MathMenu.js -docs/_static/extensions/MathZoom.js -docs/_static/extensions/tex2jax.js -docs/_static/extensions/HTML-CSS/handle-floats.js -docs/_static/extensions/TeX/AMScd.js -docs/_static/extensions/TeX/AMSmath.js -docs/_static/extensions/TeX/AMSsymbols.js -docs/_static/extensions/TeX/HTML.js -docs/_static/extensions/TeX/action.js -docs/_static/extensions/TeX/autobold.js -docs/_static/extensions/TeX/autoload-all.js -docs/_static/extensions/TeX/bbox.js -docs/_static/extensions/TeX/begingroup.js -docs/_static/extensions/TeX/boldsymbol.js -docs/_static/extensions/TeX/cancel.js -docs/_static/extensions/TeX/color.js -docs/_static/extensions/TeX/enclose.js -docs/_static/extensions/TeX/extpfeil.js -docs/_static/extensions/TeX/mathchoice.js -docs/_static/extensions/TeX/mhchem.js -docs/_static/extensions/TeX/newcommand.js -docs/_static/extensions/TeX/noErrors.js -docs/_static/extensions/TeX/noUndefined.js -docs/_static/extensions/TeX/unicode.js -docs/_static/extensions/TeX/verb.js -docs/_static/fonts/HTML-CSS/TeX/eot/MathJax_AMS-Regular.eot -docs/_static/fonts/HTML-CSS/TeX/eot/MathJax_Caligraphic-Bold.eot -docs/_static/fonts/HTML-CSS/TeX/eot/MathJax_Caligraphic-Regular.eot -docs/_static/fonts/HTML-CSS/TeX/eot/MathJax_Fraktur-Bold.eot -docs/_static/fonts/HTML-CSS/TeX/eot/MathJax_Fraktur-Regular.eot -docs/_static/fonts/HTML-CSS/TeX/eot/MathJax_Main-Bold.eot -docs/_static/fonts/HTML-CSS/TeX/eot/MathJax_Main-Italic.eot -docs/_static/fonts/HTML-CSS/TeX/eot/MathJax_Main-Regular.eot -docs/_static/fonts/HTML-CSS/TeX/eot/MathJax_Math-BoldItalic.eot -docs/_static/fonts/HTML-CSS/TeX/eot/MathJax_Math-Italic.eot -docs/_static/fonts/HTML-CSS/TeX/eot/MathJax_Math-Regular.eot -docs/_static/fonts/HTML-CSS/TeX/eot/MathJax_SansSerif-Bold.eot -docs/_static/fonts/HTML-CSS/TeX/eot/MathJax_SansSerif-Italic.eot -docs/_static/fonts/HTML-CSS/TeX/eot/MathJax_SansSerif-Regular.eot -docs/_static/fonts/HTML-CSS/TeX/eot/MathJax_Script-Regular.eot -docs/_static/fonts/HTML-CSS/TeX/eot/MathJax_Size1-Regular.eot -docs/_static/fonts/HTML-CSS/TeX/eot/MathJax_Size2-Regular.eot -docs/_static/fonts/HTML-CSS/TeX/eot/MathJax_Size3-Regular.eot -docs/_static/fonts/HTML-CSS/TeX/eot/MathJax_Size4-Regular.eot -docs/_static/fonts/HTML-CSS/TeX/eot/MathJax_Typewriter-Regular.eot -docs/_static/fonts/HTML-CSS/TeX/eot/MathJax_WinIE6-Regular.eot -docs/_static/fonts/HTML-CSS/TeX/otf/MathJax_AMS-Regular.otf -docs/_static/fonts/HTML-CSS/TeX/otf/MathJax_Caligraphic-Bold.otf -docs/_static/fonts/HTML-CSS/TeX/otf/MathJax_Caligraphic-Regular.otf -docs/_static/fonts/HTML-CSS/TeX/otf/MathJax_Fraktur-Bold.otf -docs/_static/fonts/HTML-CSS/TeX/otf/MathJax_Fraktur-Regular.otf -docs/_static/fonts/HTML-CSS/TeX/otf/MathJax_Main-Bold.otf -docs/_static/fonts/HTML-CSS/TeX/otf/MathJax_Main-Italic.otf -docs/_static/fonts/HTML-CSS/TeX/otf/MathJax_Main-Regular.otf -docs/_static/fonts/HTML-CSS/TeX/otf/MathJax_Math-BoldItalic.otf -docs/_static/fonts/HTML-CSS/TeX/otf/MathJax_Math-Italic.otf -docs/_static/fonts/HTML-CSS/TeX/otf/MathJax_Math-Regular.otf -docs/_static/fonts/HTML-CSS/TeX/otf/MathJax_SansSerif-Bold.otf -docs/_static/fonts/HTML-CSS/TeX/otf/MathJax_SansSerif-Italic.otf -docs/_static/fonts/HTML-CSS/TeX/otf/MathJax_SansSerif-Regular.otf -docs/_static/fonts/HTML-CSS/TeX/otf/MathJax_Script-Regular.otf -docs/_static/fonts/HTML-CSS/TeX/otf/MathJax_Size1-Regular.otf -docs/_static/fonts/HTML-CSS/TeX/otf/MathJax_Size2-Regular.otf -docs/_static/fonts/HTML-CSS/TeX/otf/MathJax_Size3-Regular.otf -docs/_static/fonts/HTML-CSS/TeX/otf/MathJax_Size4-Regular.otf -docs/_static/fonts/HTML-CSS/TeX/otf/MathJax_Typewriter-Regular.otf -docs/_static/fonts/HTML-CSS/TeX/otf/MathJax_WinChrome-Regular.otf -docs/_static/fonts/HTML-CSS/TeX/otf/MathJax_WinIE6-Regular.otf -docs/_static/fonts/HTML-CSS/TeX/svg/MathJax_AMS-Regular.svg -docs/_static/fonts/HTML-CSS/TeX/svg/MathJax_Caligraphic-Bold.svg -docs/_static/fonts/HTML-CSS/TeX/svg/MathJax_Caligraphic-Regular.svg -docs/_static/fonts/HTML-CSS/TeX/svg/MathJax_Fraktur-Bold.svg -docs/_static/fonts/HTML-CSS/TeX/svg/MathJax_Fraktur-Regular.svg -docs/_static/fonts/HTML-CSS/TeX/svg/MathJax_Main-Bold.svg -docs/_static/fonts/HTML-CSS/TeX/svg/MathJax_Main-Italic.svg -docs/_static/fonts/HTML-CSS/TeX/svg/MathJax_Main-Regular.svg -docs/_static/fonts/HTML-CSS/TeX/svg/MathJax_Math-BoldItalic.svg -docs/_static/fonts/HTML-CSS/TeX/svg/MathJax_Math-Italic.svg -docs/_static/fonts/HTML-CSS/TeX/svg/MathJax_Math-Regular.svg -docs/_static/fonts/HTML-CSS/TeX/svg/MathJax_SansSerif-Bold.svg -docs/_static/fonts/HTML-CSS/TeX/svg/MathJax_SansSerif-Italic.svg -docs/_static/fonts/HTML-CSS/TeX/svg/MathJax_SansSerif-Regular.svg -docs/_static/fonts/HTML-CSS/TeX/svg/MathJax_Script-Regular.svg -docs/_static/fonts/HTML-CSS/TeX/svg/MathJax_Size1-Regular.svg -docs/_static/fonts/HTML-CSS/TeX/svg/MathJax_Size2-Regular.svg -docs/_static/fonts/HTML-CSS/TeX/svg/MathJax_Size3-Regular.svg -docs/_static/fonts/HTML-CSS/TeX/svg/MathJax_Size4-Regular.svg -docs/_static/fonts/HTML-CSS/TeX/svg/MathJax_Typewriter-Regular.svg -docs/_static/fonts/HTML-CSS/TeX/svg/MathJax_WinChrome-Regular.svg -docs/_static/fonts/HTML-CSS/TeX/woff/MathJax_AMS-Regular.woff -docs/_static/fonts/HTML-CSS/TeX/woff/MathJax_Caligraphic-Bold.woff -docs/_static/fonts/HTML-CSS/TeX/woff/MathJax_Caligraphic-Regular.woff -docs/_static/fonts/HTML-CSS/TeX/woff/MathJax_Fraktur-Bold.woff -docs/_static/fonts/HTML-CSS/TeX/woff/MathJax_Fraktur-Regular.woff -docs/_static/fonts/HTML-CSS/TeX/woff/MathJax_Main-Bold.woff -docs/_static/fonts/HTML-CSS/TeX/woff/MathJax_Main-Italic.woff -docs/_static/fonts/HTML-CSS/TeX/woff/MathJax_Main-Regular.woff -docs/_static/fonts/HTML-CSS/TeX/woff/MathJax_Math-BoldItalic.woff -docs/_static/fonts/HTML-CSS/TeX/woff/MathJax_Math-Italic.woff -docs/_static/fonts/HTML-CSS/TeX/woff/MathJax_Math-Regular.woff -docs/_static/fonts/HTML-CSS/TeX/woff/MathJax_SansSerif-Bold.woff -docs/_static/fonts/HTML-CSS/TeX/woff/MathJax_SansSerif-Italic.woff -docs/_static/fonts/HTML-CSS/TeX/woff/MathJax_SansSerif-Regular.woff -docs/_static/fonts/HTML-CSS/TeX/woff/MathJax_Script-Regular.woff -docs/_static/fonts/HTML-CSS/TeX/woff/MathJax_Size1-Regular.woff -docs/_static/fonts/HTML-CSS/TeX/woff/MathJax_Size2-Regular.woff -docs/_static/fonts/HTML-CSS/TeX/woff/MathJax_Size3-Regular.woff -docs/_static/fonts/HTML-CSS/TeX/woff/MathJax_Size4-Regular.woff -docs/_static/fonts/HTML-CSS/TeX/woff/MathJax_Typewriter-Regular.woff -docs/_static/jax/element/mml/jax.js -docs/_static/jax/element/mml/optable/Arrows.js -docs/_static/jax/element/mml/optable/BasicLatin.js -docs/_static/jax/element/mml/optable/CombDiacritMarks.js -docs/_static/jax/element/mml/optable/CombDiactForSymbols.js -docs/_static/jax/element/mml/optable/Dingbats.js -docs/_static/jax/element/mml/optable/GeneralPunctuation.js -docs/_static/jax/element/mml/optable/GeometricShapes.js -docs/_static/jax/element/mml/optable/GreekAndCoptic.js -docs/_static/jax/element/mml/optable/Latin1Supplement.js -docs/_static/jax/element/mml/optable/LetterlikeSymbols.js -docs/_static/jax/element/mml/optable/MathOperators.js -docs/_static/jax/element/mml/optable/MiscMathSymbolsA.js -docs/_static/jax/element/mml/optable/MiscMathSymbolsB.js -docs/_static/jax/element/mml/optable/MiscSymbolsAndArrows.js -docs/_static/jax/element/mml/optable/MiscTechnical.js -docs/_static/jax/element/mml/optable/SpacingModLetters.js -docs/_static/jax/element/mml/optable/SuppMathOperators.js -docs/_static/jax/element/mml/optable/SupplementalArrowsA.js -docs/_static/jax/element/mml/optable/SupplementalArrowsB.js -docs/_static/jax/input/TeX/config.js -docs/_static/jax/input/TeX/jax.js -docs/_static/jax/output/HTML-CSS/blank.gif -docs/_static/jax/output/HTML-CSS/config.js -docs/_static/jax/output/HTML-CSS/imageFonts.js -docs/_static/jax/output/HTML-CSS/jax.js -docs/_static/jax/output/HTML-CSS/autoload/annotation-xml.js -docs/_static/jax/output/HTML-CSS/autoload/maction.js -docs/_static/jax/output/HTML-CSS/autoload/menclose.js -docs/_static/jax/output/HTML-CSS/autoload/mglyph.js -docs/_static/jax/output/HTML-CSS/autoload/mmultiscripts.js -docs/_static/jax/output/HTML-CSS/autoload/ms.js -docs/_static/jax/output/HTML-CSS/autoload/mtable.js -docs/_static/jax/output/HTML-CSS/autoload/multiline.js -docs/_static/jax/output/HTML-CSS/fonts/TeX/fontdata-extra.js -docs/_static/jax/output/HTML-CSS/fonts/TeX/fontdata.js -docs/_static/jax/output/HTML-CSS/fonts/TeX/AMS/Regular/Arrows.js -docs/_static/jax/output/HTML-CSS/fonts/TeX/AMS/Regular/BBBold.js -docs/_static/jax/output/HTML-CSS/fonts/TeX/AMS/Regular/BoxDrawing.js -docs/_static/jax/output/HTML-CSS/fonts/TeX/AMS/Regular/CombDiacritMarks.js -docs/_static/jax/output/HTML-CSS/fonts/TeX/AMS/Regular/Dingbats.js -docs/_static/jax/output/HTML-CSS/fonts/TeX/AMS/Regular/EnclosedAlphanum.js -docs/_static/jax/output/HTML-CSS/fonts/TeX/AMS/Regular/GeneralPunctuation.js -docs/_static/jax/output/HTML-CSS/fonts/TeX/AMS/Regular/GeometricShapes.js -docs/_static/jax/output/HTML-CSS/fonts/TeX/AMS/Regular/GreekAndCoptic.js -docs/_static/jax/output/HTML-CSS/fonts/TeX/AMS/Regular/Latin1Supplement.js -docs/_static/jax/output/HTML-CSS/fonts/TeX/AMS/Regular/LatinExtendedA.js -docs/_static/jax/output/HTML-CSS/fonts/TeX/AMS/Regular/LetterlikeSymbols.js -docs/_static/jax/output/HTML-CSS/fonts/TeX/AMS/Regular/Main.js -docs/_static/jax/output/HTML-CSS/fonts/TeX/AMS/Regular/MathOperators.js -docs/_static/jax/output/HTML-CSS/fonts/TeX/AMS/Regular/MiscMathSymbolsB.js -docs/_static/jax/output/HTML-CSS/fonts/TeX/AMS/Regular/MiscSymbols.js -docs/_static/jax/output/HTML-CSS/fonts/TeX/AMS/Regular/MiscTechnical.js -docs/_static/jax/output/HTML-CSS/fonts/TeX/AMS/Regular/PUA.js -docs/_static/jax/output/HTML-CSS/fonts/TeX/AMS/Regular/SpacingModLetters.js -docs/_static/jax/output/HTML-CSS/fonts/TeX/AMS/Regular/SuppMathOperators.js -docs/_static/jax/output/HTML-CSS/fonts/TeX/Caligraphic/Bold/Main.js -docs/_static/jax/output/HTML-CSS/fonts/TeX/Caligraphic/Regular/Main.js -docs/_static/jax/output/HTML-CSS/fonts/TeX/Fraktur/Bold/BasicLatin.js -docs/_static/jax/output/HTML-CSS/fonts/TeX/Fraktur/Bold/Main.js -docs/_static/jax/output/HTML-CSS/fonts/TeX/Fraktur/Bold/Other.js -docs/_static/jax/output/HTML-CSS/fonts/TeX/Fraktur/Bold/PUA.js -docs/_static/jax/output/HTML-CSS/fonts/TeX/Fraktur/Regular/BasicLatin.js -docs/_static/jax/output/HTML-CSS/fonts/TeX/Fraktur/Regular/Main.js -docs/_static/jax/output/HTML-CSS/fonts/TeX/Fraktur/Regular/Other.js -docs/_static/jax/output/HTML-CSS/fonts/TeX/Fraktur/Regular/PUA.js -docs/_static/jax/output/HTML-CSS/fonts/TeX/Greek/Bold/Main.js -docs/_static/jax/output/HTML-CSS/fonts/TeX/Greek/BoldItalic/Main.js -docs/_static/jax/output/HTML-CSS/fonts/TeX/Greek/Italic/Main.js -docs/_static/jax/output/HTML-CSS/fonts/TeX/Greek/Regular/Main.js -docs/_static/jax/output/HTML-CSS/fonts/TeX/Main/Bold/Arrows.js -docs/_static/jax/output/HTML-CSS/fonts/TeX/Main/Bold/CombDiacritMarks.js -docs/_static/jax/output/HTML-CSS/fonts/TeX/Main/Bold/CombDiactForSymbols.js -docs/_static/jax/output/HTML-CSS/fonts/TeX/Main/Bold/GeneralPunctuation.js -docs/_static/jax/output/HTML-CSS/fonts/TeX/Main/Bold/GeometricShapes.js -docs/_static/jax/output/HTML-CSS/fonts/TeX/Main/Bold/Latin1Supplement.js -docs/_static/jax/output/HTML-CSS/fonts/TeX/Main/Bold/LatinExtendedA.js -docs/_static/jax/output/HTML-CSS/fonts/TeX/Main/Bold/LatinExtendedB.js -docs/_static/jax/output/HTML-CSS/fonts/TeX/Main/Bold/LetterlikeSymbols.js -docs/_static/jax/output/HTML-CSS/fonts/TeX/Main/Bold/Main.js -docs/_static/jax/output/HTML-CSS/fonts/TeX/Main/Bold/MathOperators.js -docs/_static/jax/output/HTML-CSS/fonts/TeX/Main/Bold/MiscMathSymbolsA.js -docs/_static/jax/output/HTML-CSS/fonts/TeX/Main/Bold/MiscSymbols.js -docs/_static/jax/output/HTML-CSS/fonts/TeX/Main/Bold/MiscTechnical.js -docs/_static/jax/output/HTML-CSS/fonts/TeX/Main/Bold/SpacingModLetters.js -docs/_static/jax/output/HTML-CSS/fonts/TeX/Main/Bold/SuppMathOperators.js -docs/_static/jax/output/HTML-CSS/fonts/TeX/Main/Bold/SupplementalArrowsA.js -docs/_static/jax/output/HTML-CSS/fonts/TeX/Main/Italic/CombDiacritMarks.js -docs/_static/jax/output/HTML-CSS/fonts/TeX/Main/Italic/GeneralPunctuation.js -docs/_static/jax/output/HTML-CSS/fonts/TeX/Main/Italic/Latin1Supplement.js -docs/_static/jax/output/HTML-CSS/fonts/TeX/Main/Italic/LetterlikeSymbols.js -docs/_static/jax/output/HTML-CSS/fonts/TeX/Main/Italic/Main.js -docs/_static/jax/output/HTML-CSS/fonts/TeX/Main/Regular/CombDiacritMarks.js -docs/_static/jax/output/HTML-CSS/fonts/TeX/Main/Regular/GeometricShapes.js -docs/_static/jax/output/HTML-CSS/fonts/TeX/Main/Regular/Main.js -docs/_static/jax/output/HTML-CSS/fonts/TeX/Main/Regular/MiscSymbols.js -docs/_static/jax/output/HTML-CSS/fonts/TeX/Main/Regular/SpacingModLetters.js -docs/_static/jax/output/HTML-CSS/fonts/TeX/Math/BoldItalic/Main.js -docs/_static/jax/output/HTML-CSS/fonts/TeX/Math/Italic/Main.js -docs/_static/jax/output/HTML-CSS/fonts/TeX/SansSerif/Bold/BasicLatin.js -docs/_static/jax/output/HTML-CSS/fonts/TeX/SansSerif/Bold/CombDiacritMarks.js -docs/_static/jax/output/HTML-CSS/fonts/TeX/SansSerif/Bold/Main.js -docs/_static/jax/output/HTML-CSS/fonts/TeX/SansSerif/Bold/Other.js -docs/_static/jax/output/HTML-CSS/fonts/TeX/SansSerif/Italic/BasicLatin.js -docs/_static/jax/output/HTML-CSS/fonts/TeX/SansSerif/Italic/CombDiacritMarks.js -docs/_static/jax/output/HTML-CSS/fonts/TeX/SansSerif/Italic/Main.js -docs/_static/jax/output/HTML-CSS/fonts/TeX/SansSerif/Italic/Other.js -docs/_static/jax/output/HTML-CSS/fonts/TeX/SansSerif/Regular/BasicLatin.js -docs/_static/jax/output/HTML-CSS/fonts/TeX/SansSerif/Regular/CombDiacritMarks.js -docs/_static/jax/output/HTML-CSS/fonts/TeX/SansSerif/Regular/Main.js -docs/_static/jax/output/HTML-CSS/fonts/TeX/SansSerif/Regular/Other.js -docs/_static/jax/output/HTML-CSS/fonts/TeX/Script/Regular/BasicLatin.js -docs/_static/jax/output/HTML-CSS/fonts/TeX/Script/Regular/Main.js -docs/_static/jax/output/HTML-CSS/fonts/TeX/Script/Regular/Other.js -docs/_static/jax/output/HTML-CSS/fonts/TeX/Size1/Regular/Main.js -docs/_static/jax/output/HTML-CSS/fonts/TeX/Size2/Regular/Main.js -docs/_static/jax/output/HTML-CSS/fonts/TeX/Size3/Regular/Main.js -docs/_static/jax/output/HTML-CSS/fonts/TeX/Size4/Regular/Main.js -docs/_static/jax/output/HTML-CSS/fonts/TeX/Typewriter/Regular/BasicLatin.js -docs/_static/jax/output/HTML-CSS/fonts/TeX/Typewriter/Regular/CombDiacritMarks.js -docs/_static/jax/output/HTML-CSS/fonts/TeX/Typewriter/Regular/Main.js -docs/_static/jax/output/HTML-CSS/fonts/TeX/Typewriter/Regular/Other.js -docs/_static/jax/output/HTML-CSS/fonts/TeX/WinChrome/Regular/Main.js -docs/_static/jax/output/HTML-CSS/fonts/TeX/WinIE6/Regular/AMS.js -docs/_static/jax/output/HTML-CSS/fonts/TeX/WinIE6/Regular/Bold.js -docs/_static/jax/output/HTML-CSS/fonts/TeX/WinIE6/Regular/Main.js -docs/_themes/solar/layout.html -docs/_themes/solar/theme.conf -docs/_themes/solar/static/solar.css -docs/_themes/solar/static/solarized-dark.css -docs/_themes/solar/static/subtle_dots.png -radon/__init__.py -radon/complexity.py -radon/metrics.py -radon/raw.py -radon/visitors.py -radon.egg-info/PKG-INFO -radon.egg-info/SOURCES.txt -radon.egg-info/dependency_links.txt -radon.egg-info/entry_points.txt -radon.egg-info/requires.txt -radon.egg-info/top_level.txt -radon/cli/__init__.py -radon/cli/colors.py -radon/cli/harvest.py -radon/cli/tools.py -radon/tests/__init__.py -radon/tests/run.py -radon/tests/test_cli.py -radon/tests/test_cli_harvest.py -radon/tests/test_cli_tools.py -radon/tests/test_complexity_utils.py -radon/tests/test_complexity_visitor.py -radon/tests/test_halstead.py -radon/tests/test_other_metrics.py -radon/tests/test_raw.py -radon/tests/data/__init__.py -radon/tests/data/no_encoding.py -radon/tests/data/py3unicode.py \ No newline at end of file diff -Nru radon-2.3.1+dfsg/radon.egg-info/top_level.txt radon-3.0.3+dfsg/radon.egg-info/top_level.txt --- radon-2.3.1+dfsg/radon.egg-info/top_level.txt 2018-10-06 14:28:41.000000000 +0000 +++ radon-3.0.3+dfsg/radon.egg-info/top_level.txt 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -radon diff -Nru radon-2.3.1+dfsg/README.rst radon-3.0.3+dfsg/README.rst --- radon-2.3.1+dfsg/README.rst 2018-10-06 14:27:42.000000000 +0000 +++ radon-3.0.3+dfsg/README.rst 2019-05-18 17:54:16.000000000 +0000 @@ -1,7 +1,7 @@ Radon ===== -.. image:: https://img.shields.io/codacy/623b84f5f6e6708c486f371e10da3610.svg +.. image:: https://img.shields.io/codacy/grade/623b84f5f6e6708c486f371e10da3610.svg :alt: Codacy badge :target: https://www.codacy.com/app/rubik/radon/dashboard @@ -39,9 +39,10 @@ Requirements ------------ -Radon will run from **Python 2.7** to **Python 3.6** with a single code base -and without the need of tools like 2to3 or six. It can also run on **PyPy** -without any problems (currently PyPy 5.8.0 is used in tests). +Radon will run from **Python 2.7** to **Python 3.7** (except Python versions +from 3.0 to 3.3) with a single code base and without the need of tools like +2to3 or six. It can also run on **PyPy** without any problems (currently PyPy +5.8.0 is used in tests). Radon depends on as few packages as possible. Currently only `mando` is strictly required (for the CLI interface). `colorama` is also listed as a @@ -146,10 +147,10 @@ over to their documentation: https://docs.codeclimate.com/v1.0/docs/radon -Coala Analyzer +coala Analyzer ++++++++++++++ -Radon is also supported in `coala `_. To add Radon's +Radon is also supported in `coala `_. To add Radon's checks to coala, simply add the ``RadonBear`` to one of the sections in your ``.coafile``. diff -Nru radon-2.3.1+dfsg/requirements.txt radon-3.0.3+dfsg/requirements.txt --- radon-2.3.1+dfsg/requirements.txt 2018-10-06 14:27:42.000000000 +0000 +++ radon-3.0.3+dfsg/requirements.txt 2019-05-18 17:54:16.000000000 +0000 @@ -1,3 +1,4 @@ mando>=0.6,<0.7 -colorama>=0.3,<0.4 +colorama>=0.4,<0.5 flake8_polyfill +future diff -Nru radon-2.3.1+dfsg/setup.cfg radon-3.0.3+dfsg/setup.cfg --- radon-2.3.1+dfsg/setup.cfg 2018-10-06 14:28:41.000000000 +0000 +++ radon-3.0.3+dfsg/setup.cfg 2019-05-18 17:54:16.000000000 +0000 @@ -1,7 +1,2 @@ [wheel] -universal = 1 - -[egg_info] -tag_build = -tag_date = 0 - +universal=1 diff -Nru radon-2.3.1+dfsg/setup.py radon-3.0.3+dfsg/setup.py --- radon-2.3.1+dfsg/setup.py 2018-10-06 14:27:42.000000000 +0000 +++ radon-3.0.3+dfsg/setup.py 2019-05-18 17:54:16.000000000 +0000 @@ -20,8 +20,9 @@ tests_require=['tox'], install_requires=[ 'mando>=0.6,<0.7', - 'colorama>=0.3,<0.4', + 'colorama>=0.4,<0.5', 'flake8-polyfill', + 'future', ], entry_points={ 'console_scripts': ['radon = radon:main'], diff -Nru radon-2.3.1+dfsg/.travis.yml radon-3.0.3+dfsg/.travis.yml --- radon-2.3.1+dfsg/.travis.yml 2018-10-06 14:27:42.000000000 +0000 +++ radon-3.0.3+dfsg/.travis.yml 2019-05-18 17:54:16.000000000 +0000 @@ -2,7 +2,6 @@ sudo: false python: - "2.7" - - "3.3" - "3.4" - "3.5" - "3.6"