Metadata-Version: 2.1
Name: flake8-builtins
Version: 1.5.2
Summary: Check for python builtins being used as variables or parameters.
Home-page: https://github.com/gforcada/flake8-builtins
Author: Gil Forcada
Author-email: gil.gnome@gmail.com
License: GPL version 2
Description: .. -*- coding: utf-8 -*-
        
        .. image:: https://travis-ci.org/gforcada/flake8-builtins.svg?branch=master
           :target: https://travis-ci.org/gforcada/flake8-builtins
        
        .. image:: https://coveralls.io/repos/gforcada/flake8-builtins/badge.svg?branch=master&service=github
           :target: https://coveralls.io/github/gforcada/flake8-builtins?branch=master
        
        Flake8 Builtins plugin
        ======================
        Check for python builtins being used as variables or parameters.
        
        Imagine some code like this::
        
            def max_values(list, list2):
                max = list[0]
                for x in list:
                    if x > 0:
                        max = x
        
                all_values = list()
                all_values.append(max)
        
                max = list2[0]
                for x in list2:
                    if x > 0:
                        max = x
                all_values.append(max)
        
                return all_values
        
            max_values([3, 4, 5, ], [5, 6, 7])
        
        The last statement is not returning ``[5, 7]`` as one would expect,
        instead is raising this exception::
        
            Traceback (most recent call last):
              File "test.py", line 17, in <module>
                max_values([3,4,5], [4,5,6])
              File "bla.py", line 6, in max_values
                all_values = list()
            TypeError: 'list' object is not callable
        
        **Why?** Because ``max_value`` function's first argument is ``list`` a Python builtin.
        Python allows to override them, but although could be useful in some really specific use cases,
        the general approach is to **not** do that as code then can suddenly break without a clear trace.
        
        Example
        -------
        Given the following code::
        
            def my_method(object, list, dict):
                max = 5
                min = 3
                zip = (4, 3)
        
        The following warnings are shown (via flake8)::
        
           test.py:1:15: A002 "object" is used as an argument and thus shadows a python builtin, consider renaming the argument
           test.py:1:23: A002 "list" is used as an argument and thus shadows a python builtin, consider renaming the argument
           test.py:1:29: A002 "dict" is used as an argument and thus shadows a python builtin, consider renaming the argument
           test.py:2:5: A001 "max" is a python builtin and is being shadowed, consider renaming the variable
           test.py:3:5: A001 "min" is a python builtin and is being shadowed, consider renaming the variable
           test.py:4:5: A001 "zip" is a python builtin and is being shadowed, consider renaming the variable
        
        Install
        -------
        Install with pip::
        
            $ pip install flake8-builtins
        
        Requirements
        ------------
        - Python 2.7, 3.5, 3.6
        - flake8
        
        License
        -------
        GPL 2.0
        
        .. -*- coding: utf-8 -*-
        
        Changelog
        =========
        
        1.5.2 (2020-03-16)
        ------------------
        
        - Add `DictComp`, `SetComp`, and `GeneratorExpr` support.
          [sobolevn]
        
        1.5.1 (2020-03-16)
        ------------------
        
        - Adds kwonly and posonly args support.
          [sobolevn]
        
        1.5.0 (2020-03-14)
        ------------------
        
        - Add ``python3.8`` support.
          [sobolevn]
        
        - Add ``AnnAssign`` support.
          [soboelvn]
        
        - Add ``NamedExpr`` or ``:=`` support.
          [sobolevn]
        
        
        1.4.2 (2019-12-18)
        ------------------
        
        - Fix tuple parsing.
          [memery-imb]
        
        1.4.1 (2018-05-11)
        ------------------
        
        - Fix regression in 1.4.0 and interaction with flake8-bugbear.
          [dirk-thomas]
        
        1.4.0 (2018-05-03)
        ------------------
        
        - Make code more robust by not assuming that a node is an ``ast.Name``
          but actually checking it.
          [gforcada]
        
        - Handle ``ast.Starred`` as well (i.e. ``a, *int = range(4)``)
          [gforcada]
        
        - Handle lists as well, i.e. ``[a, int] = 3, 4``
          [gforcada]
        
        1.3.1 (2018-04-30)
        ------------------
        
        - Fix TypeError.
          Fixes https://github.com/gforcada/flake8-builtins/issues/30
          [gforcada]
        
        1.3.0 (2018-04-13)
        ------------------
        
        - Report different error codes for function (A001) or method definitions (A003).
          Fixes https://github.com/gforcada/flake8-builtins/issues/22#issuecomment-378720168
          [gforcada]
        
        - Ignore underscore variables, django adds it on the list of builtins on its own.
          Fixes https://github.com/gforcada/flake8-builtins/issues/25
          [gforcada]
        
        1.2.3 (2018-04-10)
        ------------------
        
        - Handle cases where an unpacking happens in a with statement.
          Fixes https://github.com/gforcada/flake8-builtins/issues/26
          [gforcada]
        
        1.2.2 (2018-04-03)
        ------------------
        
        - Fix error message in function names shadowing a builtin.
          Fixes https://github.com/gforcada/flake8-builtins/issues/22
          [gforcada]
        
        
        1.2.1 (2018-04-01)
        ------------------
        
        - re-relase 1.2 from master branch.
          [gforcada]
        
        1.2 (2018-04-01)
        ----------------
        - Fix error message in for loops.
          [gforcada]
        
        - Inspect the following places for possible builtins being shadowed:
        
          - with open('/tmp/bla.txt') as int
          - except ValueError as int
          - [int for int in range(4)]
          - from zope.component import provide as int
          - import zope.component as int
          - class int(object)
          - def int()
          - async def int()
          - async for int in range(4)
          - async with open('/tmp/bla.txt') as int
        
          [gforcada]
        
        1.1.1 (2018-03-20)
        ------------------
        
        - Variables assigned in a for loop can be not only a Tuple, but a Tuple inside a Tuple.
          [dopplershift]
        
        1.1.0 (2018-03-17)
        ------------------
        
        - Update more trove classifiers.
          [gforcada]
        
        - Inspect variables assigned in a for loop as well.
          Thanks to sobolevn for reporting it!
          [gforcada]
        
        1.0.post0 (2017-12-02)
        ----------------------
        
        - Update README.
          [DmytroLitvinov]
        
        - Update trove classifiers.
          [dirn]
        
        1.0 (2017-08-19)
        ----------------
        
        - Use requirements.txt to pin dependencies.
          [gforcada]
        
        - Fix tests with newer flake8 version.
          [gforcada]
        
        - BREAKING CHANGE: error codes have been changed from B00X to A00X to not clash with flake8-bugbear,
          see https://github.com/gforcada/flake8-builtins/issues/7
          [gforcada]
        
        0.4 (2017-05-29)
        ----------------
        
        - Use a different code for class attributes.
          [karamanolev]
        
        0.3.1.post0 (2017-05-27)
        ------------------------
        
        - Release universal wheels, not only python 2 wheels.
          [gforcada]
        
        - Update trove classifiers.
          [gforcada]
        
        0.3.1 (2017-05-27)
        ------------------
        
        - Fix stdin handling.
          [sangiovanni]
        
        0.3 (2017-05-15)
        ----------------
        
        - Handle stdin, which is the way flake8 gets integrated into editors.
          [gforcada]
        
        - Test against Python 2.7, 3.5, 3.6 and pypy.
          [gforcada]
        
        0.2 (2016-03-30)
        ----------------
        - Whitelist *some* builtins.
          [gforcada]
        
        0.1 (2016-03-04)
        ----------------
        - Initial release
          [gforcada]
        
        - Add buildout and other stuff.
          [gforcada]
        
        - Add actual code.
          [gforcada]
        
        - Drop support for python 3.3, only python 2.7 and python 3.4 are tested.
          [gforcada]
        
Keywords: pep8 flake8 python
Platform: UNKNOWN
Classifier: Development Status :: 5 - Production/Stable
Classifier: Environment :: Console
Classifier: Framework :: Flake8
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: GNU General Public License v2 (GPLv2)
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.6
Classifier: Programming Language :: Python :: 3.7
Classifier: Programming Language :: Python :: 3.8
Classifier: Programming Language :: Python :: Implementation :: CPython
Classifier: Programming Language :: Python :: Implementation :: PyPy
Classifier: Topic :: Software Development
Classifier: Topic :: Software Development :: Quality Assurance
Provides-Extra: test
