Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package python-pylint for openSUSE:Factory 
checked in at 2021-08-24 10:54:04
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-pylint (Old)
 and      /work/SRC/openSUSE:Factory/.python-pylint.new.1899 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "python-pylint"

Tue Aug 24 10:54:04 2021 rev:25 rq:913352 version:2.9.6

Changes:
--------
--- /work/SRC/openSUSE:Factory/python-pylint/python-pylint.changes      
2021-06-11 22:30:28.590109669 +0200
+++ /work/SRC/openSUSE:Factory/.python-pylint.new.1899/python-pylint.changes    
2021-08-24 10:54:31.528348552 +0200
@@ -1,0 +2,25 @@
+Fri Aug 20 10:03:42 UTC 2021 - Ben Greiner <[email protected]>
+
+- Update to 2.9.6
+  * Fix a false positive undefined-variable when variable name in
+    decoration matches function argument
+- Many more release notes from 2.9.0 to 2.9.5:
+  * https://github.com/PyCQA/pylint/releases
+  * Added time.clock to deprecated functions/methods for python 3.3
+  * No longer emit consider-using-with for ThreadPoolExecutor and
+    ProcessPoolExecutor as they have legitimate use cases without a
+    with block.
+  * The similarity checker no longer add three trailing whitespaces
+    for empty lines in its report.
+  * Python 3.10 is now supported.
+  * Added various deprecated functions/methods for python 3.10,
+    3.7, 3.6 and 3.3
+  * setuptools_scm has been removed and replaced by tbump in order
+    to not have hidden runtime dependencies to setuptools
+- Drop pylint-pr4450-import-init.patch
+- Add pylint-pr4816-astroid27.patch
+  * gh#PyCQA/pylint#4816
+  * remove astroid upper bound -- the previous pin broke a lot of
+    packages through the pkg_resources check
+
+-------------------------------------------------------------------

Old:
----
  pylint-2.8.3.tar.gz
  pylint-pr4450-import-init.patch

New:
----
  pylint-2.9.6-gh.tar.gz
  pylint-pr4816-astroid27.patch

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ python-pylint.spec ++++++
--- /var/tmp/diff_new_pack.cKs79j/_old  2021-08-24 10:54:32.228347625 +0200
+++ /var/tmp/diff_new_pack.cKs79j/_new  2021-08-24 10:54:32.232347620 +0200
@@ -20,29 +20,28 @@
 %bcond_without tests
 %define skip_python2 1
 Name:           python-pylint
-Version:        2.8.3
+Version:        2.9.6
 Release:        0
 Summary:        Syntax and style checker for Python code
 License:        GPL-2.0-or-later
 Group:          Development/Languages/Python
 URL:            https://github.com/pycqa/pylint
-Source:         
https://files.pythonhosted.org/packages/source/p/pylint/pylint-%{version}.tar.gz
-# PATCH-FIX-UPSTREAM pylint-pr4450-import-init.patch -- gh#PyCQA/pylint#4450 
fix broken tests
-Patch1:         
https://github.com/PyCQA/pylint/pull/4450.patch#/pylint-pr4450-import-init.patch
-BuildRequires:  %{python_module setuptools_scm}
+# 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.5.6
+Requires:       python-astroid >= 2.7
 Requires:       python-isort >= 4.2.5
 Requires:       python-mccabe >= 0.6
 Requires:       python-toml >= 0.7.1
 %if %{with tests}
-BuildRequires:  %{python_module astroid >= 2.5.6}
+BuildRequires:  %{python_module astroid >= 2.7}
 BuildRequires:  %{python_module isort >= 4.2.5}
 BuildRequires:  %{python_module mccabe >= 0.6}
 BuildRequires:  %{python_module pytest-benchmark}
-BuildRequires:  %{python_module pytest-runner}
 BuildRequires:  %{python_module pytest-xdist}
 BuildRequires:  %{python_module pytest}
 BuildRequires:  %{python_module toml >= 0.7.1}
@@ -91,7 +90,10 @@
 # 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
-%pytest --benchmark-disable --ignore tests/test_epylint.py
+# 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[@]}"
 # 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

++++++ pylint-pr4816-astroid27.patch ++++++
>From 12097bdb8912abff4edd41e92fffcf780c9cccbc Mon Sep 17 00:00:00 2001
From: Pierre Sassoulas <[email protected]>
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])
+
+
[email protected]  # 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
+
+
[email protected]
+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

Reply via email to