14
0
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:
2021-10-16 09:40:35 +00:00
committed by Git OBS Bridge
parent c5965e1f08
commit 0e0f3b8099
5 changed files with 183 additions and 371 deletions

3
pylint-2.11.1-gh.tar.gz Normal file
View File

@@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:b797b4906068c616db2aaf364e56506d42b130474e98a16a0e2b9eb72fa0b1b7
size 967223

View File

@@ -1,3 +0,0 @@
version https://git-lfs.github.com/spec/v1
oid sha256:e6335c810ee3ff4b59e3990db49cf0d1e263e122b766853755436d88133c9496
size 779390

View File

@@ -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

View File

@@ -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>

View File

@@ -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