From 0e0f3b80991ba170aff813403ccda7fb97d470a965291a1ae48f53ec18be4da7 Mon Sep 17 00:00:00 2001 From: Dirk Mueller Date: Sat, 16 Oct 2021 09:40:35 +0000 Subject: [PATCH] Accepting request 925619 from home:bnavigator:branches:devel:languages:python - Dropped pylint-pr4816-astroid27.patch - Update to 2.11.1 * ``unspecified-encoding`` now checks the encoding of ``pathlib.Path()`` correctly * The python3 porting mode checker and it's ``py3k`` option were removed. You can still find it in older pylints versions. * ``raising-bad-type`` is now properly emitted when raising a string * Added new extension ``SetMembershipChecker`` with ``use-set-for-membership`` check: Emitted when using an in-place defined ``list`` or ``tuple`` to do a membership test. ``sets`` are better optimized for that. * Added ``py-version`` config key (if ``[MASTER]`` section). Used for version dependant checks. Will default to whatever Python version pylint is executed with. * ``CodeStyleChecker`` Added ``consider-using-assignment-expr``: Emitted when an assignment is directly followed by an if statement and both can be combined by using an assignment expression ``:=``. Requires Python 3.8 * Added ``consider-using-f-string``: Emitted when .format() or '%' is being used to format a string. * Fix false positive for ``consider-using-with`` if a context manager is assigned to a variable in different paths of control flow (e. g. if-else clause). * https is now prefered in the documentation and http://pylint.pycqa.org correctly redirect to https://pylint.pycqa.org * Fix false positive for ``function-redefined`` for simple type annotations * Fix false positive for ``protected-access`` if a protected member is used in type hints of function definitions * Fix false positive ``dict-iter-missing-items`` for dictionaries only using tuples as keys * The ``unspecified-encoding`` checker now also checks calls to ``pathlib.Path().read_text()`` and ``pathlib.Path().write_text()`` * Fix false positive ``superfluous-parens`` for tuples created with inner tuples * Fix false positive ``unused-private-member`` for accessing attributes in a class using ``cls`` * Fix false positive ``unused-private-member`` for private staticmethods accessed in classmethods. * Extended ``consider-using-in`` check to work for attribute access. * Setting ``min-similarity-lines`` to 0 now makes the similarty checker stop checking for duplicate code * Fix a bug where pylint complained if the cache's parent directory does not exist * The ``global-variable-not-assigned`` checker now catches global variables that are never reassigned in a local scope and catches (reassigned) functions * Fix false positives for invalid-all-format that are lists or tuples at runtime * Fix ``no-self-use`` and ``docparams extension`` for async functions and methods. * Add documentation for ``pyreverse`` and ``symilar`` * Non symbolic messages with the wrong capitalisation now correctly trigger ``use-symbolic-message-instead`` * The ``consider-iterating-dictionary`` checker now also considers membership checks * The ``invalid-name`` message is now more detailed when using multiple naming style regexes. - Release 2.10.2 * We now use platformdirs instead of appdirs since the latter is not maintained. * Fix a crash in the checker raising ``shallow-copy-environ`` when failing to infer on ``copy.copy`` - Release 2.10.1 * pylint does not crash when PYLINT_HOME does not exist. - Release 2.10.0 * pyreverse: add option to produce colored output. * pyreverse: add output in PlantUML format. * ``consider-using-with`` is no longer triggered if a context manager is returned from a function. * pylint does not crash with a traceback anymore when a file is problematic. It creates a template text file for opening an issue on the bug tracker instead. The linting can go on for other non problematic files instead of being impossible. * pyreverse: Show class has-a relationships inferred from the type-hint * Fixed a crash when importing beyond the top level package during ``import-error`` message creation * Added ``ignored-parents`` option to the design checker to ignore specific classes from the ``too-many-ancestors`` check (R0901). * Added ``unspecified-encoding``: Emitted when open() is called without specifying an encoding * Improved the Similarity checker performance. Fix issue with ``--min-similarity-lines`` used with ``--jobs``. * Don't emit ``no-member`` error if guarded behind if statement. * The default for ``PYLINTHOME`` is now the standard ``XDG_CACHE_HOME``, and pylint now uses ``appdirs``. * Added ``use-list-literal``: Emitted when ``list()`` is called with no arguments instead of using ``[]`` * Added ``use-dict-literal``: Emitted when ``dict()`` is called with no arguments instead of using ``{}`` * Added optional extension ``consider-ternary-expression``: Emitted whenever a variable is assigned in both branches of an if/else block. * Added optional extension ``while-used``: Emitted whenever a ``while`` loop is used. * Added ``forgotten-debug-statement``: Emitted when ``breakpoint``, ``pdb.set_trace`` or ``sys.breakpointhook`` calls are found * Fix false-positive of ``unused-private-member`` when using nested functions in a class * Fix crash for ``unused-private-member`` that occurred with nested attributes. * Fix a false positive for ``unused-private-member`` with class names * Fix false positives for ``superfluous-parens`` with walrus operator, ternary operator and inside list comprehension. * Added ``format-string-without-interpolation`` checker: Emitted when formatting is applied to a string without any variables to be replaced * Refactor of ``--list-msgs`` & ``--list-msgs-enabled``: both options now show whether messages are emittable with the current interpreter. * Fix false negative for ``used-before-assignment`` when the variable is assigned in an exception handler, but used outside of the handler. * Added ``disable-next`` option: allows using `# pylint: disable-next=msgid` to disable a message for the following line * Added ``redundant-u-string-prefix`` checker: Emitted when the u prefix is added to a string * Fixed ``cell-var-from-loop`` checker: handle cell variables in comprehensions within functions, and function default argument expressions. Also handle basic variable shadowing. * Fixed bug with ``cell-var-from-loop`` checker: it no longer has false negatives when both ``unused-variable`` and ``used-before-assignment`` are disabled. * Fix false postive for ``invalid-all-format`` if the list or tuple builtin functions are used * Config files can now contain environment variables * Fix false-positive ``used-before-assignment`` with an assignment expression in a ``Return`` node * Added ``use-sequence-for-iteration``: Emitted when iterating over an in-place defined ``set``. * ``CodeStyleChecker`` * Limit ``consider-using-tuple`` to be emitted only for in-place defined ``lists``. * Emit ``consider-using-tuple`` even if list contains a ``starred`` expression. * Ignore decorators lines by similarities checker when ignore signatures flag enabled * Allow ``true`` and ``false`` values in ``pylintrc`` for better compatibility with ``toml`` config. * Class methods' signatures are ignored the same way as functions' with similarities "ignore-signatures" option enabled * Improve performance when inferring ``Call`` nodes, by utilizing caching. * Improve error message for invalid-metaclass when the node is an Instance. - Unskip the numpy inference tests. Note: always check with a clean environment (osc build --clean) -- gh#PyCQA/pylint#4877 OBS-URL: https://build.opensuse.org/request/show/925619 OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-pylint?expand=0&rev=127 --- pylint-2.11.1-gh.tar.gz | 3 + pylint-2.9.6-gh.tar.gz | 3 - pylint-pr4816-astroid27.patch | 359 ---------------------------------- python-pylint.changes | 170 ++++++++++++++++ python-pylint.spec | 19 +- 5 files changed, 183 insertions(+), 371 deletions(-) create mode 100644 pylint-2.11.1-gh.tar.gz delete mode 100644 pylint-2.9.6-gh.tar.gz delete mode 100644 pylint-pr4816-astroid27.patch diff --git a/pylint-2.11.1-gh.tar.gz b/pylint-2.11.1-gh.tar.gz new file mode 100644 index 0000000..eafe162 --- /dev/null +++ b/pylint-2.11.1-gh.tar.gz @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b797b4906068c616db2aaf364e56506d42b130474e98a16a0e2b9eb72fa0b1b7 +size 967223 diff --git a/pylint-2.9.6-gh.tar.gz b/pylint-2.9.6-gh.tar.gz deleted file mode 100644 index 6ce96aa..0000000 --- a/pylint-2.9.6-gh.tar.gz +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:e6335c810ee3ff4b59e3990db49cf0d1e263e122b766853755436d88133c9496 -size 779390 diff --git a/pylint-pr4816-astroid27.patch b/pylint-pr4816-astroid27.patch deleted file mode 100644 index 0109bdc..0000000 --- a/pylint-pr4816-astroid27.patch +++ /dev/null @@ -1,359 +0,0 @@ -From 12097bdb8912abff4edd41e92fffcf780c9cccbc Mon Sep 17 00:00:00 2001 -From: Pierre Sassoulas -Date: Sun, 8 Aug 2021 20:53:56 +0200 -Subject: [PATCH 1/5] Fix functional test no-value-for-parameter when - instancing an enum - ---- - tests/functional/a/arguments_renamed.py | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -Index: pylint-2.9.6/tests/functional/a/arguments_renamed.py -=================================================================== ---- pylint-2.9.6.orig/tests/functional/a/arguments_renamed.py -+++ pylint-2.9.6/tests/functional/a/arguments_renamed.py -@@ -17,7 +17,7 @@ class Orange(Fruit): - def brew(self, orange_name: str): # [arguments-renamed] - print(f"Brewing an orange named {orange_name}") - -- def eat_with_condiment(self, orange_name: str, condiment: Condiment()): #[arguments-renamed] -+ def eat_with_condiment(self, orange_name: str, condiment: Condiment): #[arguments-renamed] - print(f"Eating a fruit named {orange_name} with {condiment}") - - class Banana(Fruit): -Index: pylint-2.9.6/tests/functional/e/enum_subclasses.py -=================================================================== ---- pylint-2.9.6.orig/tests/functional/e/enum_subclasses.py -+++ pylint-2.9.6/tests/functional/e/enum_subclasses.py -@@ -1,9 +1,10 @@ --# pylint: disable=missing-docstring --from enum import Enum, IntEnum -+# pylint: disable=missing-docstring, invalid-name -+from enum import Enum, IntEnum, auto - - - class Issue1932(IntEnum): - """https://github.com/PyCQA/pylint/issues/1932""" -+ - FOO = 1 - - def whats_my_name(self): -@@ -12,8 +13,67 @@ class Issue1932(IntEnum): - - class Issue2062(Enum): - """https://github.com/PyCQA/pylint/issues/2062""" -+ - FOO = 1 - BAR = 2 - - def __str__(self): - return self.name.lower() -+ -+ -+class OrderedEnum(Enum): -+ def __ge__(self, other): -+ if self.__class__ is other.__class__: -+ return self.value >= other.value # line 11 -+ return NotImplemented -+ -+ def __gt__(self, other): -+ if self.__class__ is other.__class__: -+ return self.value > other.value # line 16 -+ return NotImplemented -+ -+ -+class Color(OrderedEnum): -+ red = 0 -+ green = 1 -+ -+ -+class People(Enum): -+ jack = 0 -+ john = 1 -+ -+ -+print(Color.red.value) # line 29 -+print(People.jack.name) -+ -+ -+class BaseEnum(Enum): -+ def some_behavior(self): -+ pass -+ -+ -+class MyEnum(BaseEnum): -+ -+ FOO = 1 -+ BAR = 2 -+ -+ -+print(MyEnum.FOO.value) -+ -+class TestBase(Enum): -+ """Adds a special method to enums.""" -+ -+ def hello_pylint(self) -> str: -+ """False positive.""" -+ return self.name -+ -+ -+class TestEnum(TestBase): -+ """Tests the false positive for enums.""" -+ -+ a = auto() -+ b = auto() -+ -+ -+test_enum = TestEnum.a -+assert test_enum.hello_pylint() == test_enum.name -Index: pylint-2.9.6/tests/functional/d/dataclass_with_default_factory.py -=================================================================== ---- pylint-2.9.6.orig/tests/functional/d/dataclass_with_default_factory.py -+++ pylint-2.9.6/tests/functional/d/dataclass_with_default_factory.py -@@ -1,6 +1,9 @@ --"""A test script the confuses pylint.""" --# https://github.com/PyCQA/pylint/issues/2605 -+"""Various regression tests for dataclasses.""" -+# See issues: -+# - https://github.com/PyCQA/pylint/issues/2605 -+# - https://github.com/PyCQA/pylint/issues/2698 - from dataclasses import dataclass, field -+import dataclasses as dc - - - @dataclass -@@ -13,3 +16,28 @@ class Test: - TEST = Test() - TEST.test.append(1) - print(TEST.test[0]) -+ -+ -+@dc.dataclass # Note the use of dc instead of dataclasses -+class Test2: -+ """Test dataclass that uses a renamed import of dataclasses""" -+ int_prop: int = dc.field(default=10) -+ list_prop: list = dc.field(default_factory=list) -+ dict_prop: dict = dc.field(default_factory=dict) -+ -+ -+TEST2 = Test2() -+for _ in TEST2.list_prop: # This is okay -+ pass -+ -+ -+TEST2.dict_prop["key"] = "value" # This is okay -+ -+ -+# Test2.int_prop is inferred as 10, not a Field -+print(Test2.int_prop + 1) -+for _ in Test2.int_prop: # [not-an-iterable] -+ pass -+ -+ -+Test2.int_prop["key"] = "value" # [unsupported-assignment-operation] -Index: pylint-2.9.6/tests/functional/d/dataclass_with_default_factory.txt -=================================================================== ---- /dev/null -+++ pylint-2.9.6/tests/functional/d/dataclass_with_default_factory.txt -@@ -0,0 +1,2 @@ -+not-an-iterable:39:9::Non-iterable value Test2.int_prop is used in an iterating context:HIGH -+unsupported-assignment-operation:43:0::'Test2.int_prop' does not support item assignment:HIGH -Index: pylint-2.9.6/tests/functional/i/invalid/invalid_name_issue_3405.py -=================================================================== ---- /dev/null -+++ pylint-2.9.6/tests/functional/i/invalid/invalid_name_issue_3405.py -@@ -0,0 +1,11 @@ -+""" Regression test for https://github.com/PyCQA/pylint/issues/3405. """ -+ -+import dataclasses -+from typing import ClassVar -+ -+ -+@dataclasses.dataclass -+class Foo: -+ """ClassVar attribute should be matched against class-attribute-rgx, not attr-rgx""" -+ # class-attribute-rgx='^y$' -+ x: ClassVar[int] = 0 # [invalid-name] -Index: pylint-2.9.6/tests/functional/i/invalid/invalid_name_issue_3405.rc -=================================================================== ---- /dev/null -+++ pylint-2.9.6/tests/functional/i/invalid/invalid_name_issue_3405.rc -@@ -0,0 +1,9 @@ -+[MESSAGES CONTROL] -+enable=invalid-name -+ -+[BASIC] -+attr-rgx=^x$ -+class-attribute-rgx=^y$ -+ -+[testoptions] -+min_pyver=3.7 -Index: pylint-2.9.6/tests/functional/i/invalid/invalid_name_issue_3405.txt -=================================================================== ---- /dev/null -+++ pylint-2.9.6/tests/functional/i/invalid/invalid_name_issue_3405.txt -@@ -0,0 +1 @@ -+invalid-name:11:4:Foo:"Class attribute name ""x"" doesn't conform to '^y$' pattern":HIGH -Index: pylint-2.9.6/tests/functional/n/no/no_member_dataclasses.py -=================================================================== ---- /dev/null -+++ pylint-2.9.6/tests/functional/n/no/no_member_dataclasses.py -@@ -0,0 +1,83 @@ -+"""Test various regressions for dataclasses and no-member. -+""" -+# pylint: disable=missing-docstring, too-few-public-methods -+from abc import ABCMeta, abstractmethod -+from dataclasses import asdict, dataclass, field -+from typing import Any, Dict -+ -+ -+# https://github.com/PyCQA/pylint/issues/3754 -+@dataclass(frozen=True) -+class DeploymentState(metaclass=ABCMeta): -+ type: str -+ -+ @abstractmethod -+ def to_dict(self) -> Dict: -+ """ -+ Serializes given DeploymentState instance to Dict. -+ :return: -+ """ -+ -+ -+@dataclass(frozen=True) -+class DeploymentStateEcs(DeploymentState): -+ blue: Any -+ green: Any -+ candidate: Any -+ -+ def to_dict(self) -> Dict: -+ return { -+ 'type': self.type, # No error here -+ 'blue': asdict(self.blue), -+ 'green': asdict(self.green), -+ 'candidate': self.candidate.value, -+ } -+ -+ -+@dataclass(frozen=True) -+class DeploymentStateLambda(DeploymentState): -+ current: Any -+ candidate: Any -+ -+ def to_dict(self) -> Dict: -+ return { -+ 'type': self.type, # No error here -+ 'current': asdict(self.current), -+ 'candidate': asdict(self.candidate) if self.candidate else None, -+ } -+ -+ -+# https://github.com/PyCQA/pylint/issues/2600 -+@dataclass -+class TestClass: -+ attr1: str -+ attr2: str -+ dict_prop: Dict[str, str] = field(default_factory=dict) -+ -+ def some_func(self) -> None: -+ for key, value in self.dict_prop.items(): # No error here -+ print(key) -+ print(value) -+ -+ -+class TestClass2: # not a dataclass, field inferred to a Field -+ attr1: str -+ attr2: str -+ dict_prop: Dict[str, str] = field(default_factory=dict) -+ -+ def some_func(self) -> None: -+ for key, value in self.dict_prop.items(): # [no-member] -+ print(key) -+ print(value) -+ -+ -+@dataclass -+class TestClass3: -+ attr1: str -+ attr2: str -+ dict_prop = field(default_factory=dict) # No type annotation, not treated as field -+ -+ def some_func(self) -> None: -+ for key, value in self.dict_prop.items(): # [no-member] -+ print(key) -+ print(value) -Index: pylint-2.9.6/tests/functional/n/no/no_member_dataclasses.rc -=================================================================== ---- /dev/null -+++ pylint-2.9.6/tests/functional/n/no/no_member_dataclasses.rc -@@ -0,0 +1,2 @@ -+[testoptions] -+min_pyver=3.7 -Index: pylint-2.9.6/tests/functional/n/no/no_member_dataclasses.txt -=================================================================== ---- /dev/null -+++ pylint-2.9.6/tests/functional/n/no/no_member_dataclasses.txt -@@ -0,0 +1,2 @@ -+no-member:69:26:TestClass2.some_func:Instance of 'Field' has no 'items' member:INFERENCE -+no-member:81:26:TestClass3.some_func:Instance of 'Field' has no 'items' member:INFERENCE -Index: pylint-2.9.6/tests/functional/t/too/too_many_instance_attributes.py -=================================================================== ---- pylint-2.9.6.orig/tests/functional/t/too/too_many_instance_attributes.py -+++ pylint-2.9.6/tests/functional/t/too/too_many_instance_attributes.py -@@ -1,5 +1,6 @@ - # pylint: disable=missing-docstring, too-few-public-methods, useless-object-inheritance - -+ - class Aaaa(object): # [too-many-instance-attributes] - - def __init__(self): -Index: pylint-2.9.6/tests/functional/t/too/too_many_instance_attributes.txt -=================================================================== ---- pylint-2.9.6.orig/tests/functional/t/too/too_many_instance_attributes.txt -+++ pylint-2.9.6/tests/functional/t/too/too_many_instance_attributes.txt -@@ -1 +1 @@ --too-many-instance-attributes:3:0:Aaaa:Too many instance attributes (21/7) -+too-many-instance-attributes:4:0:Aaaa:Too many instance attributes (21/7):HIGH -Index: pylint-2.9.6/setup.cfg -=================================================================== ---- pylint-2.9.6.orig/setup.cfg -+++ pylint-2.9.6/setup.cfg -@@ -42,7 +42,7 @@ project_urls = - [options] - packages = find: - install_requires = -- astroid>=2.6.5,<2.7 # (You should also upgrade requirements_test_min.txt) -+ astroid>=2.7 - isort>=4.2.5,<6 - mccabe>=0.6,<0.7 - toml>=0.7.1 -Index: pylint-2.9.6/tests/functional/t/too/too_many_instance_attributes_py37.py -=================================================================== ---- /dev/null -+++ pylint-2.9.6/tests/functional/t/too/too_many_instance_attributes_py37.py -@@ -0,0 +1,18 @@ -+# pylint: disable=missing-docstring, too-few-public-methods, useless-object-inheritance -+from dataclasses import dataclass, InitVar -+ -+# InitVars should not count as instance attributes (see issue #3754) -+# Default max_instance_attributes is 7 -+@dataclass -+class Hello: -+ a_1: int -+ a_2: int -+ a_3: int -+ a_4: int -+ a_5: int -+ a_6: int -+ a_7: int -+ a_8: InitVar[int] -+ -+ def __post_init__(self, a_8): -+ self.a_1 += a_8 -Index: pylint-2.9.6/tests/functional/t/too/too_many_instance_attributes_py37.rc -=================================================================== ---- /dev/null -+++ pylint-2.9.6/tests/functional/t/too/too_many_instance_attributes_py37.rc -@@ -0,0 +1,2 @@ -+[testoptions] -+min_pyver=3.7 diff --git a/python-pylint.changes b/python-pylint.changes index 958bd64..790ffaa 100644 --- a/python-pylint.changes +++ b/python-pylint.changes @@ -1,3 +1,173 @@ +------------------------------------------------------------------- +Sat Oct 16 09:24:30 UTC 2021 - Ben Greiner + +- Dropped pylint-pr4816-astroid27.patch + +------------------------------------------------------------------- +Sun Oct 3 17:04:18 UTC 2021 - Ben Greiner + +- Update to 2.11.1 + * ``unspecified-encoding`` now checks the encoding of + ``pathlib.Path()`` correctly + * The python3 porting mode checker and it's ``py3k`` option were + removed. You can still find it in older pylints versions. + * ``raising-bad-type`` is now properly emitted when raising a + string + * Added new extension ``SetMembershipChecker`` with + ``use-set-for-membership`` check: Emitted when using an + in-place defined ``list`` or ``tuple`` to do a membership + test. ``sets`` are better optimized for that. + * Added ``py-version`` config key (if ``[MASTER]`` section). Used + for version dependant checks. + Will default to whatever Python version pylint is executed + with. + * ``CodeStyleChecker`` + Added ``consider-using-assignment-expr``: Emitted when an + assignment is directly followed by an if statement and both can + be combined by using an assignment expression ``:=``. Requires + Python 3.8 + * Added ``consider-using-f-string``: Emitted when .format() or '%' + is being used to format a string. + * Fix false positive for ``consider-using-with`` if a context + manager is assigned to a variable in different paths of control + flow (e. g. if-else clause). + * https is now prefered in the documentation and + http://pylint.pycqa.org correctly redirect to + https://pylint.pycqa.org + * Fix false positive for ``function-redefined`` for simple type + annotations + * Fix false positive for ``protected-access`` if a protected + member is used in type hints of function definitions + * Fix false positive ``dict-iter-missing-items`` for dictionaries + only using tuples as keys + * The ``unspecified-encoding`` checker now also checks calls to + ``pathlib.Path().read_text()`` and + ``pathlib.Path().write_text()`` + * Fix false positive ``superfluous-parens`` for tuples created + with inner tuples + * Fix false positive ``unused-private-member`` for accessing + attributes in a class using ``cls`` + * Fix false positive ``unused-private-member`` for private + staticmethods accessed in classmethods. + * Extended ``consider-using-in`` check to work for attribute + access. + * Setting ``min-similarity-lines`` to 0 now makes the similarty + checker stop checking for duplicate code + * Fix a bug where pylint complained if the cache's parent + directory does not exist + * The ``global-variable-not-assigned`` checker now catches global + variables that are never reassigned in a + local scope and catches (reassigned) functions + * Fix false positives for invalid-all-format that are lists or + tuples at runtime + * Fix ``no-self-use`` and ``docparams extension`` for async + functions and methods. + * Add documentation for ``pyreverse`` and ``symilar`` + * Non symbolic messages with the wrong capitalisation now + correctly trigger ``use-symbolic-message-instead`` + * The ``consider-iterating-dictionary`` checker now also + considers membership checks + * The ``invalid-name`` message is now more detailed when using + multiple naming style regexes. +- Release 2.10.2 + * We now use platformdirs instead of appdirs since the latter is + not maintained. + * Fix a crash in the checker raising ``shallow-copy-environ`` + when failing to infer on ``copy.copy`` +- Release 2.10.1 + * pylint does not crash when PYLINT_HOME does not exist. +- Release 2.10.0 + * pyreverse: add option to produce colored output. + * pyreverse: add output in PlantUML format. + * ``consider-using-with`` is no longer triggered if a context + manager is returned from a function. + * pylint does not crash with a traceback anymore when a file is + problematic. It creates a template text file for opening an + issue on the bug tracker instead. + The linting can go on for other non problematic files instead + of being impossible. + * pyreverse: Show class has-a relationships inferred from the + type-hint + * Fixed a crash when importing beyond the top level package + during ``import-error`` message creation + * Added ``ignored-parents`` option to the design checker to + ignore specific classes from the ``too-many-ancestors`` check + (R0901). + * Added ``unspecified-encoding``: Emitted when open() is called + without specifying an encoding + * Improved the Similarity checker performance. Fix issue with + ``--min-similarity-lines`` used with ``--jobs``. + * Don't emit ``no-member`` error if guarded behind if statement. + * The default for ``PYLINTHOME`` is now the standard + ``XDG_CACHE_HOME``, and pylint now uses ``appdirs``. + * Added ``use-list-literal``: Emitted when ``list()`` is called + with no arguments instead of using ``[]`` + * Added ``use-dict-literal``: Emitted when ``dict()`` is called + with no arguments instead of using ``{}`` + * Added optional extension ``consider-ternary-expression``: + Emitted whenever a variable is assigned in both branches of an + if/else block. + * Added optional extension ``while-used``: Emitted whenever a + ``while`` loop is used. + * Added ``forgotten-debug-statement``: Emitted when + ``breakpoint``, ``pdb.set_trace`` or ``sys.breakpointhook`` + calls are found + * Fix false-positive of ``unused-private-member`` when using + nested functions in a class + * Fix crash for ``unused-private-member`` that occurred with + nested attributes. + * Fix a false positive for ``unused-private-member`` with class + names + * Fix false positives for ``superfluous-parens`` with walrus + operator, ternary operator and inside list comprehension. + * Added ``format-string-without-interpolation`` checker: Emitted + when formatting is applied to a string without any variables to + be replaced + * Refactor of ``--list-msgs`` & ``--list-msgs-enabled``: both + options now show whether messages are emittable with the + current interpreter. + * Fix false negative for ``used-before-assignment`` when the + variable is assigned in an exception handler, but used outside + of the handler. + * Added ``disable-next`` option: allows using `# pylint: + disable-next=msgid` to disable a message for the following line + * Added ``redundant-u-string-prefix`` checker: Emitted when the u + prefix is added to a string + * Fixed ``cell-var-from-loop`` checker: handle cell variables in + comprehensions within functions, and function default argument + expressions. Also handle basic variable shadowing. + * Fixed bug with ``cell-var-from-loop`` checker: it no longer has + false negatives when both ``unused-variable`` and + ``used-before-assignment`` are disabled. + * Fix false postive for ``invalid-all-format`` if the list or + tuple builtin functions are used + * Config files can now contain environment variables + * Fix false-positive ``used-before-assignment`` with an + assignment expression in a ``Return`` node + * Added ``use-sequence-for-iteration``: Emitted when iterating + over an in-place defined ``set``. + * ``CodeStyleChecker`` + * Limit ``consider-using-tuple`` to be emitted only for + in-place defined ``lists``. + * Emit ``consider-using-tuple`` even if list contains a + ``starred`` expression. + * Ignore decorators lines by similarities checker when ignore + signatures flag enabled + * Allow ``true`` and ``false`` values in ``pylintrc`` for better + compatibility with ``toml`` config. + * Class methods' signatures are ignored the same way as + functions' with similarities "ignore-signatures" option enabled + * Improve performance when inferring ``Call`` nodes, by utilizing + caching. + * Improve error message for invalid-metaclass when the node is an + Instance. + +------------------------------------------------------------------- +Fri Aug 20 19:24:31 UTC 2021 - Ben Greiner + +- Unskip the numpy inference tests. Note: always check with a clean + environment (osc build --clean) -- gh#PyCQA/pylint#4877 + ------------------------------------------------------------------- Fri Aug 20 10:03:42 UTC 2021 - Ben Greiner diff --git a/python-pylint.spec b/python-pylint.spec index 585c9d8..1f034fe 100644 --- a/python-pylint.spec +++ b/python-pylint.spec @@ -20,7 +20,7 @@ %bcond_without tests %define skip_python2 1 Name: python-pylint -Version: 2.9.6 +Version: 2.11.1 Release: 0 Summary: Syntax and style checker for Python code License: GPL-2.0-or-later @@ -28,23 +28,27 @@ Group: Development/Languages/Python URL: https://github.com/pycqa/pylint # Tests are no longer packaged in the PyPI sdist, use GitHub archive Source: https://github.com/PyCQA/pylint/archive/refs/tags/v%{version}.tar.gz#/pylint-%{version}-gh.tar.gz -# PATCH-FIX-UPSTREAM pylint-pr4816-astroid27.patch - gh#PyCQA/pylint#4816 + removed upper bound -Patch0: pylint-pr4816-astroid27.patch BuildRequires: %{python_module setuptools} BuildRequires: fdupes BuildRequires: python-rpm-macros -Requires: python-astroid >= 2.7 +Requires: python-astroid >= 2.8 Requires: python-isort >= 4.2.5 Requires: python-mccabe >= 0.6 +Requires: python-platformdirs >= 2.2 Requires: python-toml >= 0.7.1 +%if 0%{?python_version_nodots} < 310 +Requires: python-typing-extensions >= 3.10 +%endif %if %{with tests} -BuildRequires: %{python_module astroid >= 2.7} +BuildRequires: %{python_module astroid >= 2.8} BuildRequires: %{python_module isort >= 4.2.5} BuildRequires: %{python_module mccabe >= 0.6} +BuildRequires: %{python_module platformdirs >= 2.2} BuildRequires: %{python_module pytest-benchmark} BuildRequires: %{python_module pytest-xdist} BuildRequires: %{python_module pytest} BuildRequires: %{python_module toml >= 0.7.1} +BuildRequires: %{python_module typing-extensions >= 3.10} %endif Requires(post): update-alternatives Requires(postun):update-alternatives @@ -90,10 +94,7 @@ export LC_ALL="en_US.UTF-8" # https://github.com/PyCQA/pylint/issues/3636 # so make sure that the macro set PYTHONPATH does not result in conflicting imports mv pylint pylint.tmp -# numpy inference in python39 and python38 broken -- https://github.com/PyCQA/pylint/issues/4877 -python39_donttest=("-k" "not (test_functional and (len_checks or nan_comparison_check))") -python38_donttest=("${python39_donttest[@]}") -%pytest --benchmark-disable --ignore tests/test_epylint.py "${$python_donttest[@]}" +%pytest --benchmark-disable --ignore tests/test_epylint.py # result of the mentioned tampering: other tests must not have pwd in PYTHONPATH, but test_epylint needs it export PYTHONPATH=$PWD %pytest --benchmark-disable tests/test_epylint.py