Bug 2026772 - pyzor fails to build with Python 3.11: AttributeError: 'LoadAccountTest' object has no attribute 'assertEquals'
Summary: pyzor fails to build with Python 3.11: AttributeError: 'LoadAccountTest' obje...
Keywords:
Status: CLOSED RAWHIDE
Alias: None
Product: Fedora
Classification: Fedora
Component: pyzor
Version: rawhide
Hardware: Unspecified
OS: Unspecified
unspecified
unspecified
Target Milestone: ---
Assignee: Andreas Thienemann
QA Contact: Fedora Extras Quality Assurance
URL:
Whiteboard:
Depends On:
Blocks: PYTHON3.11
TreeView+ depends on / blocked
 
Reported: 2021-11-25 19:07 UTC by Tomáš Hrnčiar
Modified: 2021-12-23 17:24 UTC (History)
6 users (show)

Fixed In Version: pyzor-1.0.0-28.20200530gitf46159b.fc36
Clone Of:
Environment:
Last Closed: 2021-12-23 17:24:42 UTC
Type: Bug
Embargoed:


Attachments (Terms of Use)

Description Tomáš Hrnčiar 2021-11-25 19:07:37 UTC
pyzor fails to build with Python 3.11.0a2.


=================================== FAILURES ===================================
________________ LoadAccountTest.test_load_accounts_invalid_key ________________

self = <tests.unit.test_account.LoadAccountTest testMethod=test_load_accounts_invalid_key>

    def test_load_accounts_invalid_key(self):
        """Test loading the account file"""
        self.mock_file.write(u"public.pyzor.org : 24441 : test : ,\n"
                             u"public2.pyzor.org : 24441 : test2 : 123abc,cba321")
        result = pyzor.config.load_accounts(self.filepath)
        self.assertNotIn(("public.pyzor.org", 24441), result)
>       self.assertEquals(len(result), 1)
E       AttributeError: 'LoadAccountTest' object has no attribute 'assertEquals'

tests/unit/test_account.py:165: AttributeError
------------------------------ Captured log call -------------------------------
WARNING  pyzor:config.py:163 account file: invalid line 0: keystuff can't be all None's
_______________ LoadAccountTest.test_load_accounts_invalid_line ________________

self = <tests.unit.test_account.LoadAccountTest testMethod=test_load_accounts_invalid_line>

    def test_load_accounts_invalid_line(self):
        """Test loading the account file"""
        self.mock_file.write(u"public.pyzor.org : 24441 ; test : 123abc,cba321\n"
                             u"public2.pyzor.org : 24441 : test2 : 123abc,cba321")
        result = pyzor.config.load_accounts(self.filepath)
        self.assertNotIn(("public.pyzor.org", 24441), result)
>       self.assertEquals(len(result), 1)
E       AttributeError: 'LoadAccountTest' object has no attribute 'assertEquals'

tests/unit/test_account.py:141: AttributeError
------------------------------ Captured log call -------------------------------
WARNING  pyzor:config.py:148 account file: invalid line 0: wrong number of parts
___________ LoadAccountTest.test_load_accounts_invalid_missing_comma ___________

self = <tests.unit.test_account.LoadAccountTest testMethod=test_load_accounts_invalid_missing_comma>

    def test_load_accounts_invalid_missing_comma(self):
        """Test loading the account file"""
        self.mock_file.write(u"public.pyzor.org : 24441 : test : 123abccba321\n"
                             u"public2.pyzor.org : 24441 : test2 : 123abc,cba321")
        result = pyzor.config.load_accounts(self.filepath)
        self.assertNotIn(("public.pyzor.org", 24441), result)
>       self.assertEquals(len(result), 1)
E       AttributeError: 'LoadAccountTest' object has no attribute 'assertEquals'

tests/unit/test_account.py:177: AttributeError
------------------------------ Captured log call -------------------------------
WARNING  pyzor:config.py:160 account file: invalid line 0: Invalid number of parts for key; perhaps you forgot the comma at the beginning for the salt divider?
_______________ LoadAccountTest.test_load_accounts_invalid_port ________________

self = <tests.unit.test_account.LoadAccountTest testMethod=test_load_accounts_invalid_port>

    def test_load_accounts_invalid_port(self):
        """Test loading the account file"""
        self.mock_file.write(u"public.pyzor.org : a4441 : test : 123abc,cba321\n"
                             u"public2.pyzor.org : 24441 : test2 : 123abc,cba321")
        result = pyzor.config.load_accounts(self.filepath)
        self.assertNotIn(("public.pyzor.org", 24441), result)
>       self.assertEquals(len(result), 1)
E       AttributeError: 'LoadAccountTest' object has no attribute 'assertEquals'

tests/unit/test_account.py:153: AttributeError
------------------------------ Captured log call -------------------------------
WARNING  pyzor:config.py:154 account file: invalid line 0: invalid literal for int() with base 10: 'a4441'
________________________ ClientTest.test_handle_account ________________________

self = <tests.unit.test_client.ClientTest testMethod=test_handle_account>

    def test_handle_account(self):
        """Test client handling accounts"""
        test_account = pyzor.account.Account("TestUser", "TestKey", "TestSalt")
        self.expected["Op"] = "ping"
        self.expected["User"] = "TestUser"
        self.patch_all()
>       self.check_client({("public.pyzor.org", 24441): test_account}, "ping")

tests/unit/test_client.py:155: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
tests/unit/test_client.py:96: in check_client
    self.check_request()
tests/unit/test_client.py:62: in check_request
    self.assertEqual(req, self.expected)
E   AssertionError: {'Op': 'ping', 'Thread': '33715', 'PV': '2.[58 chars]Sig'} != {'Thread': '33715', 'PV': '2.1', 'User': 'T[58 chars]ing'}
E     {'Op': 'ping',
E      'PV': '2.1',
E      'Sig': 'TestSig',
E      'Thread': '33715',
E   -  'Time': '1637831992',
E   ?                    ^
E   
E   +  'Time': '1637831991',
E   ?                    ^
E   
E      'User': 'TestUser'}
=============================== warnings summary ===============================
../../../../usr/lib/python3.11/site-packages/redis/connection.py:2
  /usr/lib/python3.11/site-packages/redis/connection.py:2: DeprecationWarning: The distutils package is deprecated and slated for removal in Python 3.12. Use setuptools or check PEP 632 for potential alternatives
    from distutils.version import StrictVersion

tests/unit/test_account.py::LoadAccountTest::test_load_accounts_invalid_key
  /builddir/build/BUILD/pyzor-f46159bd6519cebcebf59e9334a7920371111d75/pyzor/config.py:163: DeprecationWarning: The 'warn' method is deprecated, use 'warning' instead
    log.warn("account file: invalid line %d: keystuff can't be "

tests/unit/test_account.py::LoadAccountTest::test_load_accounts_invalid_line
  /builddir/build/BUILD/pyzor-f46159bd6519cebcebf59e9334a7920371111d75/pyzor/config.py:148: DeprecationWarning: The 'warn' method is deprecated, use 'warning' instead
    log.warn("account file: invalid line %d: wrong number of "

tests/unit/test_account.py::LoadAccountTest::test_load_accounts_invalid_missing_comma
  /builddir/build/BUILD/pyzor-f46159bd6519cebcebf59e9334a7920371111d75/pyzor/config.py:160: DeprecationWarning: The 'warn' method is deprecated, use 'warning' instead
    log.warn("account file: invalid line %d: %s", lineno, ex)

tests/unit/test_account.py::LoadAccountTest::test_load_accounts_invalid_port
  /builddir/build/BUILD/pyzor-f46159bd6519cebcebf59e9334a7920371111d75/pyzor/config.py:154: DeprecationWarning: The 'warn' method is deprecated, use 'warning' instead
    log.warn("account file: invalid line %d: %s", lineno, ex)

tests/unit/test_account.py::LoadAccountTest::test_load_accounts_nothing
  /builddir/build/BUILD/pyzor-f46159bd6519cebcebf59e9334a7920371111d75/pyzor/config.py:170: DeprecationWarning: The 'warn' method is deprecated, use 'warning' instead
    log.warn("No accounts are setup.  All commands will be executed by "

tests/unit/test_config.py::TestPasswdLoad::test_invalid_line
  /builddir/build/BUILD/pyzor-f46159bd6519cebcebf59e9334a7920371111d75/pyzor/config.py:121: DeprecationWarning: The 'warn' method is deprecated, use 'warning' instead
    log.warn("Invalid accounts line: %r", line)

tests/unit/test_config.py::TestAccessLoad::test_invalid_action
  /builddir/build/BUILD/pyzor-f46159bd6519cebcebf59e9334a7920371111d75/pyzor/config.py:71: DeprecationWarning: The 'warn' method is deprecated, use 'warning' instead
    log.warn("Invalid ACL line: %r", line)

tests/unit/test_config.py::TestAccessLoad::test_invalid_line
  /builddir/build/BUILD/pyzor-f46159bd6519cebcebf59e9334a7920371111d75/pyzor/config.py:66: DeprecationWarning: The 'warn' method is deprecated, use 'warning' instead
    log.warn("Invalid ACL line: %r", line)

tests/unit/test_server.py::RequestHandlerTest::test_invalid_pv
  /builddir/build/BUILD/pyzor-f46159bd6519cebcebf59e9334a7920371111d75/pyzor/server.py:275: DeprecationWarning: The 'warn' method is deprecated, use 'warning' instead
    self.server.log.warn("Invalid PV: %s", request["PV"])

-- Docs: https://docs.pytest.org/en/stable/warnings.html

---------- coverage: platform linux, python 3.11.0-alpha-2 -----------
Name                        Stmts   Miss  Cover   Missing
---------------------------------------------------------
pyzor/__init__.py              23      0   100%
pyzor/account.py               35      0   100%
pyzor/client.py               202     34    83%   120-123, 148-150, 153-159, 162, 169-174, 187, 190, 233-234, 238-239, 260-263, 268, 289-290, 293, 314
pyzor/config.py               156     11    93%   10, 197-207, 242
pyzor/digest.py               123     14    89%   23, 94-95, 117-118, 138-146, 189-190
pyzor/engines/__init__.py       6      0   100%
pyzor/engines/common.py        53      9    83%   62, 66, 70, 74, 80, 84, 92, 102, 109
pyzor/engines/gdbm_.py        147     21    86%   5, 10-11, 24, 27-28, 66-67, 70, 144-145, 150, 154, 160-166, 202
pyzor/engines/mysql.py        220     66    70%   17-18, 69-72, 77, 79-82, 85-87, 116, 126-127, 132-139, 142, 145, 158-167, 170-179, 192-194, 235-236, 251-253, 260, 265, 271, 279-290, 297-298, 301-305, 310-316, 334-336, 347
pyzor/engines/redis_.py       121     31    74%   11-13, 44-47, 85, 101-102, 105, 117, 139-146, 150-157, 164-165, 180, 184
pyzor/engines/redis_v0.py      84     15    82%   14-16, 35-38, 74, 91-92, 95, 107, 133-134, 139, 143
pyzor/forwarder.py             38      3    92%   49-50, 59
pyzor/hacks/__init__.py         0      0   100%
pyzor/hacks/py26.py            24     12    50%   22, 31-44
pyzor/hacks/py3.py              9      9     0%   3-21
pyzor/message.py               99      7    93%   40, 45, 59, 82, 86, 152, 157
pyzor/server.py               228     51    78%   49-54, 66, 106-108, 114-116, 119, 133-135, 139-152, 158-161, 167-170, 186-188, 191-192, 195-196, 206-207, 338, 348-349, 357, 367-368
---------------------------------------------------------
TOTAL                        1568    283    82%

=========================== short test summary info ============================
FAILED tests/unit/test_account.py::LoadAccountTest::test_load_accounts_invalid_key
FAILED tests/unit/test_account.py::LoadAccountTest::test_load_accounts_invalid_line
FAILED tests/unit/test_account.py::LoadAccountTest::test_load_accounts_invalid_missing_comma
FAILED tests/unit/test_account.py::LoadAccountTest::test_load_accounts_invalid_port
FAILED tests/unit/test_client.py::ClientTest::test_handle_account - Assertion...
================== 5 failed, 156 passed, 10 warnings in 8.45s ==================

Removed many old deprecated unittest features:
    TestCase method aliases failUnlessEqual, failIfEqual, failUnless, failIf, failUnlessRaises, failUnlessAlmostEqual, failIfAlmostEqual (deprecated in Python 3.1), assertEquals, assertNotEquals, assert_, assertAlmostEquals, assertNotAlmostEquals, assertRegexpMatches, assertRaisesRegexp (deprecated in Python 3.2), and assertNotRegexpMatches (deprecated in Python 3.5).
    Undocumented and broken TestCase method assertDictContainsSubset (deprecated in Python 3.2).
    Undocumented <unittest.TestLoader.loadTestsFromModule> TestLoader.loadTestsFromModule() parameter use_load_tests (deprecated and ignored since Python 3.2).
    An alias of the TextTestResult class: _TextTestResult (deprecated in Python 3.2).

(Contributed by Serhiy Storchaka in bpo-45162.)

https://bugs.python.org/issue45162
https://docs.python.org/3.11/whatsnew/3.11.html

For the build logs, see:
https://copr-be.cloud.fedoraproject.org/results/@python/python3.11/fedora-rawhide-x86_64/02988879-pyzor/

For all our attempts to build pyzor with Python 3.11, see:
https://copr.fedorainfracloud.org/coprs/g/python/python3.11/package/pyzor/

Testing and mass rebuild of packages is happening in copr. You can follow these instructions to test locally in mock if your package builds with Python 3.11:
https://copr.fedorainfracloud.org/coprs/g/python/python3.11/

Let us know here if you have any questions.

Python 3.11 is planned to be included in Fedora 37. To make that update smoother, we're building Fedora packages with all pre-releases of Python 3.11.
A build failure prevents us from testing all dependent packages (transitive [Build]Requires), so if this package is required a lot, it's important for us to get it fixed soon.
We'd appreciate help from the people who know this package best, but if you don't want to work on this now, let us know so we can try to work around it on our side.

Comment 1 Jason Tibbitts 2021-11-29 18:18:29 UTC
It's probably time to just drop this package entirely.  Upstream hasn't done much of anything in quite some time.  They might merge a PR if one were contributed, but I don't have the time to come up with one.


Note You need to log in before you can comment on or make changes to this bug.