Releases: netromdk/vermin
Version 0.10.5
-
Fixed processing to also work with spawn (#46)
Since Python 3.8+, the start method used on macOS was changed fromfork()
tospawn()
. This had the side-effect of all invocations ofprocess_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 withfork()
andspawn()
alike. -
Fixed symbol
Y.z
detection with module name fromimport X as Y
, like:
import multiprocessing as mp
mp.get_start_method()
Thanks to @adamjstewart for reporting #46!
Version 0.10.4
- 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
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
- Disable fstring self-doc detection by default (#39)
- This is done since the built-in AST cannot distinguish
f'{a=}'
fromf'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
- This is done since the built-in AST cannot distinguish
- 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
- 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
- Detect generalized unpacking (3.5, PEP-448)
- Detect
%
formatting and directives forbytes
andbytearray
(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 oftype(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
- Added 81 new rules
- Detecting Final qualifiers (3.8, PEP-591)
- Detecting Literal types (3.8, PEP-586)
- Detect kwarg
text
ofsubprocess.run
as 3.7 (#33) - Updated misc, bandit, and coverage PyPi requirements
Thanks to @a-tinsmith for reporting #33.
Version 0.9.1
- 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
- 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+ andassertItemsEqual()
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
- 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.