Metadata-Version: 1.1
Name: pytest-mccabe
Version: 2.0
Summary: pytest plugin to run the mccabe code complexity checker.
Home-page: https://github.com/The-Compiler/pytest-mccabe
Author: Florian Bruhin
Author-email: me@the-compiler.org
License: MIT license
Description: pytest-mccabe
        =============
        
        .. image:: https://travis-ci.org/The-Compiler/pytest-mccabe.svg?branch=master
            :target: https://travis-ci.org/The-Compiler/pytest-mccabe
        
        pytest plugin for checking cyclomatic complexity of python source with
        `mccabe`_.
        
        **NOTE:** I (`@The-Compiler`_) stopped using this plugin in 2016. While I will still review pull requests and release new versions if needed by the community, I do not have the time to continue maintaining this plugin myself. You might want to consider switching to `pytest-flake8`_ or `tox`_ + `flake8`_ instead (see some `arguments`_ on why).
        
        .. _mccabe: https://pypi.python.org/pypi/mccabe/
        .. _@The-Compiler: https://github.com/The-Compiler
        .. _pytest-flake8: https://github.com/tholo/pytest-flake8
        .. _tox: https://tox.readthedocs.io/
        .. _arguments: https://github.com/The-Compiler/pytest-mccabe/issues/7#issuecomment-654698075
        
        Usage
        -----
        
        install via::
        
            pip install pytest-mccabe
        
        if you then type::
        
            pytest --mccabe
        
        every file ending in ``.py`` will be discovered and run through mccabe,
        starting from the command line arguments.
        
        Simple usage example
        --------------------
        
        Consider you have this (deliberately bad and complex) code:
        
        .. code-block:: python
        
            # module.py
        
            import random
            import os.path
        
            def some_function():
                num = random.random()
                if 0 <= num < 0.1:
                    print("1")
                elif 0.1 <= num < 0.2:
                    print("2")
                elif 0.2 <= num < 0.3:
                    print("3")
                elif 0.3 <= num < 0.4:
                    print("4")
                elif 0.4 <= num < 0.5:
                    print("5")
                elif 0.5 <= num < 0.6:
                    print("6")
                elif 0.6 <= num < 0.7:
                    print("7")
                elif 0.7 <= num < 0.8:
                    print("8")
                elif 0.8 <= num < 0.9:
                    print("9")
                elif 0.9 <= num < 1:
                    print("10")
        
        Running pytest with pytest-mccabe installed shows you this function is
        considered too complex::
        
           $ pytest -q --mccabe module.py
           F
           ============================== FAILURES ==============================
           ____________________________ mccabe-check ____________________________
           .../module.py:4: C901 'some_function' is too complex (11)
        
        
        Configuring mccabe complexity per project and file
        --------------------------------------------------
        
        You may configure the maximum complexity for your project
        by adding an ``mccabe-complexity`` entry to pytest config file (e.g.
        ``setup.cfg``) like this:
        
        .. code-block:: ini
        
            [pytest]
            mccabe-complexity=15
        
        Rerunning with the above example will now look better::
        
            $ pytest -q --mccabe foo.py
            .
            1 passed in 0.00 seconds
        
        If you have some files where you want to set a higher complexity than the
        project-wide one, you can start a mccabe-complexity line with a glob-pattern:
        
        .. code-block:: ini
        
            [pytest]
            mccabe-complexity =
                *.py 7
                magic.py 10
        
        Ignoring certain functions
        --------------------------
        
        You can exclude certain functions from the complexity check by adding comments
        like this:
        
        .. code-block:: python
        
            def some_function():  # noqa
                ...
        
            def another_function():  # pragma: no mccabe
                ...
        
        (both will work - ``# noqa`` is mainly there for `flake8`_ compatibility)
        
        .. _flake8: https://pypi.python.org/pypi/flake8
        
        
        Running mccabe checks and no other tests
        ----------------------------------------
        
        You can restrict your test run to only perform "mccabe" tests
        and not any other tests by typing::
        
            pytest --mccabe -m mccabe
        
        This will only run tests that are marked with the "mccabe" keyword
        which is added for the mccabe test items added by this plugin.
        
        If you are using pytest < 2.4, then use the following invocation
        to the same effect::
        
            pytest --mccabe -k mccabe
        
        
        Notes
        -----
        
        The repository of this plugin is at https://github.com/The-Compiler/pytest-mccabe
        
        For more info on pytest see https://pytest.org
        
        The code is based on Florian Schulze's excellent `pytest-flakes`_ - Thanks!
        
        .. _pytest-flakes: https://pypi.python.org/pypi/pytest-flakes
        
        Changes
        =======
        
        0.1
        ---
        
        - Initial release.
        
        1.0
        ---
        
        - Drop support for Python 2.6, 3.2, 3.3 and 3.4
        - Add support for Python 3.5, 3.6 and 3.7
        - Make this plugin compatible with pytest 4.x and 5.x
        - Drop support for "setup.py test"
        - Remove outdated pytest-cache dependency
        - Various code/CI cleanups
        
        2.0
        ---
        
        - Drop support for Python 2.7
        - Drop support for pytest < 5.4
        - Add support for Python 3.8 (no changes required)
        - Fix deprecation warnings with pytest >= 5.4 (thanks to Martin Thoma for the PR!)
        - Various code/CI cleanups
        
Keywords: pytest plugin mccabe complexity
Platform: UNKNOWN
Classifier: Environment :: Plugins
Classifier: Development Status :: 3 - Alpha
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.5
Classifier: Programming Language :: Python :: 3.6
Classifier: Programming Language :: Python :: 3.7
Classifier: Programming Language :: Python :: 3.8
Classifier: Topic :: Software Development :: Quality Assurance
Classifier: Topic :: Software Development :: Testing
