forked from pool/python-pylint
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
This commit is contained in:
3
pylint-2.11.1-gh.tar.gz
Normal file
3
pylint-2.11.1-gh.tar.gz
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
version https://git-lfs.github.com/spec/v1
|
||||||
|
oid sha256:b797b4906068c616db2aaf364e56506d42b130474e98a16a0e2b9eb72fa0b1b7
|
||||||
|
size 967223
|
@@ -1,3 +0,0 @@
|
|||||||
version https://git-lfs.github.com/spec/v1
|
|
||||||
oid sha256:e6335c810ee3ff4b59e3990db49cf0d1e263e122b766853755436d88133c9496
|
|
||||||
size 779390
|
|
@@ -1,359 +0,0 @@
|
|||||||
From 12097bdb8912abff4edd41e92fffcf780c9cccbc Mon Sep 17 00:00:00 2001
|
|
||||||
From: Pierre Sassoulas <pierre.sassoulas@gmail.com>
|
|
||||||
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
|
|
@@ -1,3 +1,173 @@
|
|||||||
|
-------------------------------------------------------------------
|
||||||
|
Sat Oct 16 09:24:30 UTC 2021 - Ben Greiner <code@bnavigator.de>
|
||||||
|
|
||||||
|
- Dropped pylint-pr4816-astroid27.patch
|
||||||
|
|
||||||
|
-------------------------------------------------------------------
|
||||||
|
Sun Oct 3 17:04:18 UTC 2021 - Ben Greiner <code@bnavigator.de>
|
||||||
|
|
||||||
|
- 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 <code@bnavigator.de>
|
||||||
|
|
||||||
|
- 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 <code@bnavigator.de>
|
Fri Aug 20 10:03:42 UTC 2021 - Ben Greiner <code@bnavigator.de>
|
||||||
|
|
||||||
|
@@ -20,7 +20,7 @@
|
|||||||
%bcond_without tests
|
%bcond_without tests
|
||||||
%define skip_python2 1
|
%define skip_python2 1
|
||||||
Name: python-pylint
|
Name: python-pylint
|
||||||
Version: 2.9.6
|
Version: 2.11.1
|
||||||
Release: 0
|
Release: 0
|
||||||
Summary: Syntax and style checker for Python code
|
Summary: Syntax and style checker for Python code
|
||||||
License: GPL-2.0-or-later
|
License: GPL-2.0-or-later
|
||||||
@@ -28,23 +28,27 @@ Group: Development/Languages/Python
|
|||||||
URL: https://github.com/pycqa/pylint
|
URL: https://github.com/pycqa/pylint
|
||||||
# Tests are no longer packaged in the PyPI sdist, use GitHub archive
|
# 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
|
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: %{python_module setuptools}
|
||||||
BuildRequires: fdupes
|
BuildRequires: fdupes
|
||||||
BuildRequires: python-rpm-macros
|
BuildRequires: python-rpm-macros
|
||||||
Requires: python-astroid >= 2.7
|
Requires: python-astroid >= 2.8
|
||||||
Requires: python-isort >= 4.2.5
|
Requires: python-isort >= 4.2.5
|
||||||
Requires: python-mccabe >= 0.6
|
Requires: python-mccabe >= 0.6
|
||||||
|
Requires: python-platformdirs >= 2.2
|
||||||
Requires: python-toml >= 0.7.1
|
Requires: python-toml >= 0.7.1
|
||||||
|
%if 0%{?python_version_nodots} < 310
|
||||||
|
Requires: python-typing-extensions >= 3.10
|
||||||
|
%endif
|
||||||
%if %{with tests}
|
%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 isort >= 4.2.5}
|
||||||
BuildRequires: %{python_module mccabe >= 0.6}
|
BuildRequires: %{python_module mccabe >= 0.6}
|
||||||
|
BuildRequires: %{python_module platformdirs >= 2.2}
|
||||||
BuildRequires: %{python_module pytest-benchmark}
|
BuildRequires: %{python_module pytest-benchmark}
|
||||||
BuildRequires: %{python_module pytest-xdist}
|
BuildRequires: %{python_module pytest-xdist}
|
||||||
BuildRequires: %{python_module pytest}
|
BuildRequires: %{python_module pytest}
|
||||||
BuildRequires: %{python_module toml >= 0.7.1}
|
BuildRequires: %{python_module toml >= 0.7.1}
|
||||||
|
BuildRequires: %{python_module typing-extensions >= 3.10}
|
||||||
%endif
|
%endif
|
||||||
Requires(post): update-alternatives
|
Requires(post): update-alternatives
|
||||||
Requires(postun):update-alternatives
|
Requires(postun):update-alternatives
|
||||||
@@ -90,10 +94,7 @@ export LC_ALL="en_US.UTF-8"
|
|||||||
# https://github.com/PyCQA/pylint/issues/3636
|
# https://github.com/PyCQA/pylint/issues/3636
|
||||||
# so make sure that the macro set PYTHONPATH does not result in conflicting imports
|
# so make sure that the macro set PYTHONPATH does not result in conflicting imports
|
||||||
mv pylint pylint.tmp
|
mv pylint pylint.tmp
|
||||||
# numpy inference in python39 and python38 broken -- https://github.com/PyCQA/pylint/issues/4877
|
%pytest --benchmark-disable --ignore tests/test_epylint.py
|
||||||
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[@]}"
|
|
||||||
# result of the mentioned tampering: other tests must not have pwd in PYTHONPATH, but test_epylint needs it
|
# result of the mentioned tampering: other tests must not have pwd in PYTHONPATH, but test_epylint needs it
|
||||||
export PYTHONPATH=$PWD
|
export PYTHONPATH=$PWD
|
||||||
%pytest --benchmark-disable tests/test_epylint.py
|
%pytest --benchmark-disable tests/test_epylint.py
|
||||||
|
Reference in New Issue
Block a user