mirror of
https://github.com/thegeeklab/ansible-later.git
synced 2024-11-18 02:40:40 +00:00
252 lines
5.8 KiB
ReStructuredText
252 lines
5.8 KiB
ReStructuredText
|
.. -*- 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.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]
|
||
|
|
||
|
|