Skip to content

Releases: netromdk/vermin

Version 0.10.5

28 Sep 18:47
2e6c9f8
Compare
Choose a tag to compare
  • Fixed processing to also work with spawn (#46)
    Since Python 3.8+, the start method used on macOS was changed from fork() to spawn(). This had the side-effect of all invocations of process_individual() wouldn't inherit the config context and thus would fail to detect properly, especially when using backports. But it was fixed by reestablishing the config context if "spawn" is used as start method, which means it works with fork() and spawn() alike.

  • Fixed symbol Y.z detection with module name from import X as Y, like:

import multiprocessing as mp
mp.get_start_method()

Thanks to @adamjstewart for reporting #46!

Version 0.10.4

25 Sep 20:37
d246aee
Compare
Choose a tag to compare
  • Detect member usage in raise expressions and except handlers (#45)
  • Fixed kwarg detection with nested calls (#44)
  • Tokenize comment segments for exclusions detection (#43)
  • Speed up # novermin/# novm comment searching (roughly 8-14%)
  • Added missing # novm
  • Improved test coverage
  • Removed unused code
  • Added .editorconfig (https://editorconfig.org/)

Thanks to @gousaiyang for reporting #43, #44, and #45!

Version 0.10.3

06 Sep 09:22
bbddbe6
Compare
Choose a tag to compare

Fixed #42 by ignoring non top-level imports, like .typing, ..a etc., since they are relative and refer to local packages instead.

Thanks to @gousaiyang for reporting it!

Version 0.10.2

15 Aug 12:48
f4bb3ce
Compare
Choose a tag to compare
  • Disable fstring self-doc detection by default (#39)
    • This is done since the built-in AST cannot distinguish f'{a=}' from f'a={a}', for instance, because it optimizes some information away. And this incorrectly marks some source code as using fstring self-doc when only using general fstring.
    • fstring self-doc detection can be enabled via --feature fstring-self-doc, though it is seen as unstable at this point
  • Correctly enumerate backport modules for stringification (it was correct but now it isn't using a hardcoded list of modules to determine maximum string lengh)
  • Fixed security advisory by upgrading bleach from 3.1.1 to 3.1.2 (GHSA-m6xf-fq7q-8743) and 3.1.2 to 3.1.4 (GHSA-vqhp-cxgc-6wmm)
  • Updated Arch Linux (AUR) installation (#41)

Version 0.10.1

09 Mar 18:48
a328c52
Compare
Choose a tag to compare
  • Speed up file detection via concurrency (it uses the same number of threads specified via -p=N, defaulting to all cores)
  • Fixed literal variable annotation detection exception and improved associated tests (#40)
  • Fixed security advisory by upgrading bleach from 3.1.0 to 3.1.1 (GHSA-q65m-pv3f-wr5r)

Thanks to @JarryShaw for reporting #40.

Version 0.10.0

26 Jan 19:41
eb7cb51
Compare
Choose a tag to compare
  • Detect generalized unpacking (3.5, PEP-448)
  • Detect % formatting and directives for bytes and bytearray (3.5, PEP-461)
  • Detect keyword-only arguments (3.0, #37)
  • ~1700 new/modified rules thanks to @gousaiyang and his Python change parser (#34, #36)
  • Big speedups to file detection by ignoring many file extensions (416) known not to contain Python source code, and by halving the number of calls to os.stat()
  • Huge speedups to source code analysis by executing certain code fragments only once for each source file analysis, and by using isinstance(x, y) instead of type(x) == y
  • Ensure ".py3, ".pyj", and ".pyi" are always analyzed in addition to ".py" and ".pyw"
  • Fixed array.array typecode border case
  • Fixed issues with kwargs handling in rare cases
  • Improved format directives regex
  • Fixed general border case bugs obtained by running on several Python distribution sources

A special thanks to @gousaiyang who's been a great help for this release.

Version 0.9.2

07 Jan 19:26
10a2a1b
Compare
Choose a tag to compare
  • Added 81 new rules
  • Detecting Final qualifiers (3.8, PEP-591)
  • Detecting Literal types (3.8, PEP-586)
  • Detect kwarg text of subprocess.run as 3.7 (#33)
  • Updated misc, bandit, and coverage PyPi requirements

Thanks to @a-tinsmith for reporting #33.

Version 0.9.1

30 Dec 10:43
43280dc
Compare
Choose a tag to compare
  • Only display full CLI help with --help or -h. The short version is enough to understand the purpose of the program and doesn't take up too much screen estate
  • Show program version via --version
  • CLI help text explains meaning of incompatible versions notices
  • Changed byte strings rule from 3+ to 2.6+/3+ for better compatibility (#32)

Thanks to @alalazo for bringing the byte strings issue to attention.

Version 0.9.0

17 Dec 21:33
35982cc
Compare
Choose a tag to compare
  • Backports are now supported which alter the rules slightly when applied (#30). This is especially useful when migrating or if stuck with an older module.
[--backport <name>] ...
      Some features are sometimes backported into packages, in repositories such as
      PyPi, that are widely used but aren't in the standard language. If such a
      backport is specified as being used, the results will reflect that instead.

      Supported backports:
        argparse     - https://pypi.org/project/argparse/
        configparser - https://pypi.org/project/configparser/
        enum         - https://pypi.org/project/enum34/
        faulthandler - https://pypi.org/project/faulthandler/
        typing       - https://pypi.org/project/typing/

When potential backported modules are used, a tip such as the following will be shown:

Tip: You're using potentially backported modules: enum, typing
If so, try using the following for better results: --backport enum --backport typing
  • All tips can be disabled by using --no-tips
  • Changed rules from floats to tuples to support arbitrary version numbers and to be able to distinguish, for example, v3.10 from 3.1 (float)
  • Fixed some tests that required an unnecessarily specific ordering of items (using assertCountEqual() for 3.2+ and assertItemsEqual() for 2.7-3)

Thanks to @ngtvspc for bug fixes (#31) and the idea for the backports feature (#29) and testing thereof.

Version 0.8.2

27 Oct 08:59
c9b5ab5
Compare
Choose a tag to compare
  • Ignore incompatible versions with -i when compatible are detected (#23)
  • Always attempt parsing of directly specified files (#23)
  • Detection and processing messages are verbose level one (#23)
  • Added rule for urlparse module (#24)
  • Added rule for str.format() (#25)
  • Added rule for the with statement (#27)
  • Extended target version checking for input or smaller using -t=V- (#26)
  • Added Arch Linux installation to README

Thanks to @bulletmark, @samuelb, and @Gallaecio for feedback and contributions.