1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325
|
3.2.0 (2024-01-04)
- Add support for ``*T`` (TypeVarTuple) and ``**P`` (ParamSpec) in PEP 695
annotations.
3.1.0 (2023-07-29)
- Drop support for EOL python 3.6 / 3.7
- Remove ``ContinueInFinally`` check (only relevant in python < 3.8)
- Fix forward annotations inside a nested scope
- Produce an error when a definition shadows an unused variable
- Fix accessed global annotation being redefined in a local scope
- Allow redefinition of functions across ``match`` arms
- Fix potential ``None`` for ``lineno`` during tokenization errors
- Add support for PEP 695 and python 3.12
3.0.1 (2022-11-24)
- Fix crash on augmented assign to ``print`` builtin
3.0.0 (2022-11-23)
- Detect undefined name in variable defined by an annotated assignment
- Add a new error for names which are annotated but unused
- Remove handling of python 2.x ``# type:`` comments. Use annotations instead
2.5.0 (2022-07-30)
- Drop support for EOL python 2.7 / 3.4 / 3.5
- Ignore ``__all__`` when not directly assigned
- Handle ``TypeAlias`` annotations as aliases (PEP 613)
- Assignment expressions (``:=``) target outer scope in comprehensions
- Add support for new python 3.11 syntax
- Unify output so it is always ``filename:lineno:col: message``
- Properly report ``SyntaxError`` from stdin in python < 3.9
- Fix offsets of ``SyntaxError``s in pypy
2.4.0 (2021-10-06)
- Remove unused tracing code (``traceTree``)
- Add support for ``match`` statement
- Detect ``typing`` module attributes when imported with ``import ... as ...``
2.3.1 (2021-03-24)
- Fix regression in 2.3.0: type annotations no longer redefine imports
2.3.0 (2021-03-14)
- Recognize tuple concatenation in ``__all__`` export definitions
- Better support use of annotation-only assignments when using
``from __future__ import annotations``
- Recognize special-case typing for ``Annotated``
- Fix undefined name ``__qualname__`` in class scope
- Recognize special-cased typing for ``TypeVar``
- Errors for undefined exports in ``__all__`` are shown in a deterministic order
- Fix false positives in certain typing constructs (``TypeVar``,
``NamedTuple``, ``TypedDict``, ``cast``)
2.2.0 (2020-04-08)
- Include column information in error messages
- Fix ``@overload`` detection with other decorators and in non-global scopes
- Fix return-type annotation being a class member
- Fix assignment to ``_`` in doctests with existing ``_`` name
- Namespace attributes which are attached to ast nodes with ``_pyflakes_`` to
avoid conflicts with other libraries (notably bandit)
- Add check for f-strings without placeholders
- Add check for unused/extra/invalid ``'string literal'.format(...)``
- Add check for unused/extra/invalid ``'string literal % ...``
- Improve python shebang detection
- Allow type ignore to be followed by a code ``# type: ignore[attr-defined]``
- Add support for assignment expressions (PEP 572)
- Support ``@overload`` detection from ``typing_extensions`` as well
- Fix ``@overload`` detection for async functions
- Allow ``continue`` inside ``finally`` in python 3.8+
- Fix handling of annotations in positional-only arguments
- Make pyflakes more resistant to future syntax additions
- Fix false positives in partially quoted type annotations
- Warn about ``is`` comparison to tuples
- Fix ``Checker`` usage with async function subtrees
- Add check for ``if`` of non-empty tuple
- Switch from ``optparse`` to ``argparse``
- Fix false positives in partially quoted type annotations in unusual contexts
- Be more cautious when identifying ``Literal`` type expressions
2.1.1 (2019-02-28)
- Fix reported line number for type comment errors
- Fix typing.overload check to only check imported names
2.1.0 (2019-01-23)
- Allow intentional assignment to variables named ``_``
- Recognize ``__module__`` as a valid name in class scope
- ``pyflakes.checker.Checker`` supports checking of partial ``ast`` trees
- Detect assign-before-use for local variables which shadow builtin names
- Detect invalid ``print`` syntax using ``>>`` operator
- Treat ``async for`` the same as a ``for`` loop for introducing variables
- Add detection for list concatenation in ``__all__``
- Exempt ``@typing.overload`` from duplicate function declaration
- Importing a submodule of an ``as``-aliased ``import``-import is marked as
used
- Report undefined names from ``__all__`` as possibly coming from a ``*``
import
- Add support for changes in Python 3.8-dev
- Add support for PEP 563 (``from __future__ import annotations``)
- Include Python version and platform information in ``pyflakes --version``
- Recognize ``__annotations__`` as a valid magic global in Python 3.6+
- Mark names used in PEP 484 ``# type: ...`` comments as used
- Add check for use of ``is`` operator with ``str``, ``bytes``, and ``int``
literals
2.0.0 (2018-05-20)
- Drop support for EOL Python <2.7 and 3.2-3.3
- Check for unused exception binding in ``except:`` block
- Handle string literal type annotations
- Ignore redefinitions of ``_``, unless originally defined by import
- Support ``__class__`` without ``self`` in Python 3
- Issue an error for ``raise NotImplemented(...)``
1.6.0 (2017-08-03)
- Process function scope variable annotations for used names
- Find Python files without extensions by their shebang
1.5.0 (2017-01-09)
- Enable support for PEP 526 annotated assignments
1.4.0 (2016-12-30):
- Change formatting of ImportStarMessage to be consistent with other errors
- Support PEP 498 "f-strings"
1.3.0 (2016-09-01):
- Fix PyPy2 Windows IntegrationTests
- Check for duplicate dictionary keys
- Fix TestMain tests on Windows
- Fix "continue" and "break" checks ignoring py3.5's "async for" loop
1.2.3 (2016-05-12):
- Fix TypeError when processing relative imports
1.2.2 (2016-05-06):
- Avoid traceback when exception is del-ed in except
1.2.1 (2015-05-05):
- Fix false RedefinedWhileUnused for submodule imports
1.2.0 (2016-05-03):
- Warn against reusing exception names after the except: block on Python 3
- Improve the error messages for imports
1.1.0 (2016-03-01):
- Allow main() to accept arguments.
- Support @ matrix-multiplication operator
- Validate ``__future__`` imports
- Fix doctest scope testing
- Warn for tuple assertions which are always true
- Warn for "import \*" not at module level on Python 3
- Catch many more kinds of SyntaxErrors
- Check PEP 498 f-strings
- (and a few more sundry bugfixes)
1.0.0 (2015-09-20):
- Python 3.5 support. async/await statements in particular.
- Fix test_api.py on Windows.
- Eliminate a false UnusedImport warning when the name has been
declared "global"
0.9.2 (2015-06-17):
- Fix a traceback when a global is defined in one scope, and used in another.
0.9.1 (2015-06-09):
- Update NEWS.txt to include 0.9.0, which had been forgotten.
0.9.0 (2015-05-31):
- Exit gracefully, not with a traceback, on SIGINT and SIGPIPE.
- Fix incorrect report of undefined name when using lambda expressions in
generator expressions.
- Don't crash on DOS line endings on Windows and Python 2.6.
- Don't report an undefined name if the 'del' which caused a name to become
undefined is only conditionally executed.
- Properly handle differences in list comprehension scope in Python 3.
- Improve handling of edge cases around 'global' defined variables.
- Report an error for 'return' outside a function.
0.8.1 (2014-03-30):
- Detect the declared encoding in Python 3.
- Do not report redefinition of import in a local scope, if the
global name is used elsewhere in the module.
- Catch undefined variable in loop generator when it is also used as
loop variable.
- Report undefined name for ``(a, b) = (1, 2)`` but not for the general
unpacking ``(a, b) = func()``.
- Correctly detect when an imported module is used in default arguments
of a method, when the method and the module use the same name.
- Distribute a universal wheel file.
0.8.0 (2014-03-22):
- Adapt for the AST in Python 3.4.
- Fix caret position on SyntaxError.
- Fix crash on Python 2.x with some doctest SyntaxError.
- Add tox.ini.
- The ``PYFLAKES_NODOCTEST`` environment variable has been replaced with the
``PYFLAKES_DOCTEST`` environment variable (with the opposite meaning).
Doctest checking is now disabled by default; set the environment variable
to enable it.
- Correctly parse incremental ``__all__ += [...]``.
- Catch return with arguments inside a generator (Python <= 3.2).
- Do not complain about ``_`` in doctests.
- Drop deprecated methods ``pushFunctionScope`` and ``pushClassScope``.
0.7.3 (2013-07-02):
- Do not report undefined name for generator expression and dict or
set comprehension at class level.
- Deprecate ``Checker.pushFunctionScope`` and ``Checker.pushClassScope``:
use ``Checker.pushScope`` instead.
- Remove dependency on Unittest2 for the tests.
0.7.2 (2013-04-24):
- Fix computation of ``DoctestSyntaxError.lineno`` and ``col``.
- Add boolean attribute ``Checker.withDoctest`` to ignore doctests.
- If environment variable ``PYFLAKES_NODOCTEST`` is set, skip doctests.
- Environment variable ``PYFLAKES_BUILTINS`` accepts a comma-separated
list of additional built-in names.
0.7.1 (2013-04-23):
- File ``bin/pyflakes`` was missing in tarball generated with distribute.
- Fix reporting errors in non-ASCII filenames (Python 2.x).
0.7.0 (2013-04-17):
- Add --version and --help options.
- Support ``python -m pyflakes`` (Python 2.7 and Python 3.x).
- Add attribute ``Message.col`` to report column offset.
- Do not report redefinition of variable for a variable used in a list
comprehension in a conditional.
- Do not report redefinition of variable for generator expressions and
set or dict comprehensions.
- Do not report undefined name when the code is protected with a
``NameError`` exception handler.
- Do not report redefinition of variable when unassigning a module imported
for its side-effect.
- Support special locals like ``__tracebackhide__`` for py.test.
- Support checking doctests.
- Fix issue with Turkish locale where ``'i'.upper() == 'i'`` in Python 2.
0.6.1 (2013-01-29):
- Fix detection of variables in augmented assignments.
0.6.0 (2013-01-29):
- Support Python 3 up to 3.3, based on the pyflakes3k project.
- Preserve compatibility with Python 2.5 and all recent versions of Python.
- Support custom reporters in addition to the default Reporter.
- Allow function redefinition for modern property construction via
property.setter/deleter.
- Fix spurious redefinition warnings in conditionals.
- Do not report undefined name in ``__all__`` if import * is used.
- Add WindowsError as a known built-in name on all platforms.
- Support specifying additional built-ins in the ``Checker`` constructor.
- Don't issue Unused Variable warning when using locals() in current scope.
- Handle problems with the encoding of source files.
- Remove dependency on Twisted for the tests.
- Support ``python setup.py test`` and ``python setup.py develop``.
- Create script using setuptools ``entry_points`` to support all platforms,
including Windows.
0.5.0 (2011-09-02):
- Convert pyflakes to use newer _ast infrastructure rather than compiler.
- Support for new syntax in 2.7 (including set literals, set comprehensions,
and dictionary comprehensions).
- Make sure class names don't get bound until after class definition.
0.4.0 (2009-11-25):
- Fix reporting for certain SyntaxErrors which lack line number
information.
- Check for syntax errors more rigorously.
- Support checking names used with the class decorator syntax in versions
of Python which have it.
- Detect local variables which are bound but never used.
- Handle permission errors when trying to read source files.
- Handle problems with the encoding of source files.
- Support importing dotted names so as not to incorrectly report them as
redefined unused names.
- Support all forms of the with statement.
- Consider static ``__all__`` definitions and avoid reporting unused names
if the names are listed there.
- Fix incorrect checking of class names with respect to the names of their
bases in the class statement.
- Support the ``__path__`` global in ``__init__.py``.
0.3.0 (2009-01-30):
- Display more informative SyntaxError messages.
- Don't hang flymake with unmatched triple quotes (only report a single
line of source for a multiline syntax error).
- Recognize ``__builtins__`` as a defined name.
- Improve pyflakes support for python versions 2.3-2.5
- Support for if-else expressions and with statements.
- Warn instead of error on non-existent file paths.
- Check for ``__future__`` imports after other statements.
- Add reporting for some types of import shadowing.
- Improve reporting of unbound locals
|