Metadata-Version: 2.1
Name: cognitive_complexity
Version: 1.1.0
Summary: Library to calculate Python functions cognitive complexity via code
Home-page: https://github.com/Melevir/cognitive_complexity
Author: Ilya Lebedev
Author-email: melevir@gmail.com
License: MIT
Description: # congnitive-complexity
        
        [![Build Status](https://travis-ci.org/Melevir/cognitive_complexity.svg?branch=master)](https://travis-ci.org/Melevir/cognitive_complexity)
        [![Maintainability](https://api.codeclimate.com/v1/badges/853d47d353e7becc9f09/maintainability)](https://codeclimate.com/github/Melevir/cognitive_complexity/maintainability)
        [![Test Coverage](https://api.codeclimate.com/v1/badges/853d47d353e7becc9f09/test_coverage)](https://codeclimate.com/github/Melevir/cognitive_complexity/test_coverage)
        [![PyPI version](https://badge.fury.io/py/cognitive-complexity.svg)](https://badge.fury.io/py/cognitive-complexity)
        ![PyPI - Python Version](https://img.shields.io/pypi/pyversions/cognitive-complexity)
        
        Library to calculate Python functions cognitive complexity via code.
        
        ## Installation
        
        ```bash
        pip install cognitive_complexity
        ```
        
        ## Usage
        
        ```python
        >>> import ast
        
        >>> funcdef = ast.parse("""
        ... def f(a):
        ...     return a * f(a - 1)  # +1 for recursion
        ... """).body[0]
        
        >>> from cognitive_complexity.api import get_cognitive_complexity
        >>> get_cognitive_complexity(funcdef)
        1
        ```
        
        ## What is cognitive complexity
        
        Here are some readings about cognitive complexity:
        
        - [Cognitive Complexity, Because Testability != Understandability](https://blog.sonarsource.com/cognitive-complexity-because-testability-understandability);
        - [Cognitive Complexity: A new way of measuring understandability](https://www.sonarsource.com/docs/CognitiveComplexity.pdf),
          white paper by G. Ann Campbell;
        - [Cognitive Complexity: the New Guide to Refactoring for Maintainable Code](https://www.youtube.com/watch?v=5C6AGTlKSjY);
        - [Cognitive Complexity](https://docs.codeclimate.com/docs/cognitive-complexity)
          from CodeClimate docs;
        - [Is Your Code Readable By Humans? Cognitive Complexity Tells You](https://www.tomasvotruba.cz/blog/2018/05/21/is-your-code-readable-by-humans-cognitive-complexity-tells-you/).
        
        ## Realization details
        
        This is not precise realization of original algorithm
        proposed by [G. Ann Campbell](https://github.com/ganncamp),
        but it gives rather similar results.
        The algorithm gives complexity points for breaking control flow, nesting,
        recursion, stacks logic operation etc.
        
        ## Contributing
        
        We would love you to contribute to our project. It's simple:
        
        - Create an issue with bug you found or proposal you have. Wait for
          approve from maintainer.
        - Create a pull request. Make sure all checks are green.
        - Fix review comments if any.
        - Be awesome.
        
        Here are useful tips:
        
        - You can run all checks and tests with `make check`. Please do it
          before TravisCI does.
        - We use [BestDoctor python styleguide](https://github.com/best-doctor/guides/blob/master/guides/python_styleguide.md).
          Sorry, styleguide is available only in Russian for now.
        - We respect [Django CoC](https://www.djangoproject.com/conduct/).
          Make soft, not bullshit.
        
Keywords: flake8
Platform: UNKNOWN
Classifier: Environment :: Console
Classifier: Operating System :: OS Independent
Classifier: Topic :: Software Development :: Documentation
Classifier: Topic :: Software Development :: Libraries :: Python Modules
Classifier: Topic :: Software Development :: Quality Assurance
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 3.6
Classifier: Programming Language :: Python :: 3.7
Classifier: Programming Language :: Python :: 3.8
Requires-Python: >=3.6
Description-Content-Type: text/markdown
