Note: This is a public test instance of Red Hat Bugzilla. The data contained within is a snapshot of the live data so any changes you make will not be reflected in the production Bugzilla. Email is disabled so feel free to test any aspect of the site that you want. File any problems you find or give feedback at bugzilla.redhat.com.
Bug 1948968 - python-cssutils fails to build with Python 3.10: AssertionError: Right exception, wrong message: got 'can't set attribute 'literalname'' instead of 'can't set attribute'
Summary: python-cssutils fails to build with Python 3.10: AssertionError: Right except...
Keywords:
Status: CLOSED UPSTREAM
Alias: None
Product: Fedora
Classification: Fedora
Component: python-cssutils
Version: rawhide
Hardware: Unspecified
OS: Unspecified
unspecified
unspecified
Target Milestone: ---
Assignee: Kevin Fenzi
QA Contact: Fedora Extras Quality Assurance
URL:
Whiteboard:
: 1968942 (view as bug list)
Depends On:
Blocks: PYTHON3.10 1968804
TreeView+ depends on / blocked
 
Reported: 2021-04-13 07:37 UTC by Tomáš Hrnčiar
Modified: 2021-06-21 09:46 UTC (History)
4 users (show)

Fixed In Version:
Doc Type: If docs needed, set a value
Doc Text:
Clone Of:
Environment:
Last Closed: 2021-06-21 09:46:48 UTC
Type: Bug
Embargoed:


Attachments (Terms of Use)

Description Tomáš Hrnčiar 2021-04-13 07:37:04 UTC
python-cssutils fails to build with Python 3.10.0a7.

=================================== FAILURES ===================================
______________________ PropertyTestCase.test_literalname _______________________

self = <cssutils.tests.test_property.PropertyTestCase testMethod=test_literalname>
excClass = <class 'AttributeError'>, msg = "can't set attribute"
callableObj = <method-wrapper '__setattr__' of Property object at 0x7ffa5e2acc70>
args = ('literalname', 'color'), kwargs = {}
excMsg = "can't set attribute 'literalname'"

    def assertRaisesMsg(self, excClass, msg, callableObj, *args, **kwargs):
        """
        Just like unittest.TestCase.assertRaises,
        but checks that the message is right too.
    
        Usage::
    
            self.assertRaisesMsg(
                MyException, "Exception message",
                my_function, (arg1, arg2)
                )
    
        from
        http://www.nedbatchelder.com/blog/200609.html#e20060905T064418
        """
        try:
>           callableObj(*args, **kwargs)
E           AttributeError: can't set attribute 'literalname'

/builddir/build/BUILD/cssutils-2.2.0/cssutils/tests/basetest.py:127: AttributeError

During handling of the above exception, another exception occurred:

self = <cssutils.tests.test_property.PropertyTestCase testMethod=test_literalname>

    def test_literalname(self):
        "Property.literalname"
        p = cssutils.css.property.Property(r'c\olor', 'red')
        self.assertEqual(r'c\olor', p.literalname)
>       self.assertRaisesMsg(
            AttributeError, "can't set attribute", p.__setattr__, 'literalname', 'color'
        )

/builddir/build/BUILD/cssutils-2.2.0/cssutils/tests/test_property.py:162: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <cssutils.tests.test_property.PropertyTestCase testMethod=test_literalname>
excClass = <class 'AttributeError'>, msg = "can't set attribute"
callableObj = <method-wrapper '__setattr__' of Property object at 0x7ffa5e2acc70>
args = ('literalname', 'color'), kwargs = {}
excMsg = "can't set attribute 'literalname'"

    def assertRaisesMsg(self, excClass, msg, callableObj, *args, **kwargs):
        """
        Just like unittest.TestCase.assertRaises,
        but checks that the message is right too.
    
        Usage::
    
            self.assertRaisesMsg(
                MyException, "Exception message",
                my_function, (arg1, arg2)
                )
    
        from
        http://www.nedbatchelder.com/blog/200609.html#e20060905T064418
        """
        try:
            callableObj(*args, **kwargs)
        except excClass as exc:
            excMsg = str(exc)
            if not msg:
                # No message provided: any message is fine.
                return
            elif excMsg == msg:
                # Message provided, and we got the right message: passes.
                return
            else:
                # Message provided, and it didn't match: fail!
>               raise self.failureException(
                    "Right exception, wrong message: got '%s' instead of '%s'"
                    % (excMsg, msg)
                )
E               AssertionError: Right exception, wrong message: got 'can't set attribute 'literalname'' instead of 'can't set attribute'

/builddir/build/BUILD/cssutils-2.2.0/cssutils/tests/basetest.py:138: AssertionError
______________________ SelectorTestCase.test_specificity _______________________

self = <cssutils.tests.test_selector.SelectorTestCase testMethod=test_specificity>
excClass = <class 'AttributeError'>, msg = "can't set attribute"
callableObj = <function SelectorTestCase.test_specificity.<locals>._set at 0x7ffa5e565e10>
args = (), kwargs = {}, excMsg = "can't set attribute 'specificity'"

    def assertRaisesMsg(self, excClass, msg, callableObj, *args, **kwargs):
        """
        Just like unittest.TestCase.assertRaises,
        but checks that the message is right too.
    
        Usage::
    
            self.assertRaisesMsg(
                MyException, "Exception message",
                my_function, (arg1, arg2)
                )
    
        from
        http://www.nedbatchelder.com/blog/200609.html#e20060905T064418
        """
        try:
>           callableObj(*args, **kwargs)

/builddir/build/BUILD/cssutils-2.2.0/cssutils/tests/basetest.py:127: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

    def _set():
>       selector.specificity = 1
E       AttributeError: can't set attribute 'specificity'

/builddir/build/BUILD/cssutils-2.2.0/cssutils/tests/test_selector.py:386: AttributeError

During handling of the above exception, another exception occurred:

self = <cssutils.tests.test_selector.SelectorTestCase testMethod=test_specificity>

    def test_specificity(self):
        "Selector.specificity"
        selector = cssutils.css.Selector()
    
        # readonly
        def _set():
            selector.specificity = 1
    
>       self.assertRaisesMsg(AttributeError, "can't set attribute", _set)

/builddir/build/BUILD/cssutils-2.2.0/cssutils/tests/test_selector.py:388: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <cssutils.tests.test_selector.SelectorTestCase testMethod=test_specificity>
excClass = <class 'AttributeError'>, msg = "can't set attribute"
callableObj = <function SelectorTestCase.test_specificity.<locals>._set at 0x7ffa5e565e10>
args = (), kwargs = {}, excMsg = "can't set attribute 'specificity'"

    def assertRaisesMsg(self, excClass, msg, callableObj, *args, **kwargs):
        """
        Just like unittest.TestCase.assertRaises,
        but checks that the message is right too.
    
        Usage::
    
            self.assertRaisesMsg(
                MyException, "Exception message",
                my_function, (arg1, arg2)
                )
    
        from
        http://www.nedbatchelder.com/blog/200609.html#e20060905T064418
        """
        try:
            callableObj(*args, **kwargs)
        except excClass as exc:
            excMsg = str(exc)
            if not msg:
                # No message provided: any message is fine.
                return
            elif excMsg == msg:
                # Message provided, and we got the right message: passes.
                return
            else:
                # Message provided, and it didn't match: fail!
>               raise self.failureException(
                    "Right exception, wrong message: got '%s' instead of '%s'"
                    % (excMsg, msg)
                )
E               AssertionError: Right exception, wrong message: got 'can't set attribute 'specificity'' instead of 'can't set attribute'

/builddir/build/BUILD/cssutils-2.2.0/cssutils/tests/basetest.py:138: AssertionError
=========================== short test summary info ============================
FAILED cssutils/tests/test_property.py::PropertyTestCase::test_literalname - ...
FAILED cssutils/tests/test_selector.py::SelectorTestCase::test_specificity - ...
======================== 2 failed, 389 passed in 4.12s =========================

For the build logs, see:
https://copr-be.cloud.fedoraproject.org/results/@python/python3.10/fedora-rawhide-x86_64/02125392-python-cssutils/

For all our attempts to build python-cssutils with Python 3.10, see:
https://copr.fedorainfracloud.org/coprs/g/python/python3.10/package/python-cssutils/

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.10:
https://copr.fedorainfracloud.org/coprs/g/python/python3.10/

Let us know here if you have any questions.

Python 3.10 will be included in Fedora 35. To make that update smoother, we're building Fedora packages with early pre-releases of Python 3.10.
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 Miro Hrončok 2021-06-04 20:13:55 UTC
This is a mass-posted update. Sorry if it is not 100% accurate to this bugzilla.


The Python 3.10 rebuild is in progress in a Koji side tag. If you manage to fix the problem, please commit the fix in the rawhide branch, but don't build the package in regular rawhide.

You can either build the package in the side tag, with:

    $ fedpkg build --target=f35-python

Or you can the build and we will eventually build it for you.

Note that the rebuild is still in progress, so not all (build) dependencies of this package might be available right away.

Thanks.

See also https://fedoraproject.org/wiki/Changes/Python3.10

If you have general questions about the rebuild, please use this mailing list thread: https://lists.fedoraproject.org/archives/list/devel@lists.fedoraproject.org/thread/G47SGOYIQLRDTWGOSLSWERZSSHXDEDH5/

Comment 2 Miro Hrončok 2021-06-07 22:58:38 UTC
The f35-python side tag has been merged to Rawhide. From now on, build as you would normally build.

Comment 3 Miro Hrončok 2021-06-08 11:23:18 UTC
*** Bug 1968942 has been marked as a duplicate of this bug. ***

Comment 4 Miro Hrončok 2021-06-15 20:26:45 UTC
Hello,

This is the first reminder (step 3 from https://docs.fedoraproject.org/en-US/fesco/Fails_to_build_from_source_Fails_to_install/#_package_removal_for_long_standing_ftbfs_and_fti_bugs).

If you know about this problem and are planning on fixing it, please acknowledge so by setting the bug status to ASSIGNED. If you don't have time to maintain this package, consider orphaning it, so maintainers of dependent packages realize the problem.

Comment 5 Miro Hrončok 2021-06-21 07:04:24 UTC
> AssertionError: Right exception, wrong message: got 'can't set attribute 'specificity'' instead of 'can't set attribute'

This is an exception message change. Exact wording of exception messages is not considered part of the API. The test should be adapted to check for a moe relaxed regex instead of a specific message. Anyway, this is a problem in tests, so if not feeling like fixing it, consider skipping the 2 tests temporarily and reporting to upstream, which appears affected as well.

Comment 6 Parag Nemade 2021-06-21 08:36:48 UTC
Miro,

I just pushed an update to skip the failing tests. Sorry if I have interrupted your or any other's work on this package.
Also, if my fix is not good, please fix it by pushing another update to this package.

Thanks.

Comment 7 Miro Hrončok 2021-06-21 08:54:03 UTC
Thanks. I'd appreciate if you could report this to upstream, so we can get an actual fix later. Unblocking the relevant trackers, but keeping open for that upstream report.

Comment 8 Parag Nemade 2021-06-21 09:10:56 UTC
Upstream issue: https://github.com/jaraco/cssutils/issues/12

Comment 9 Miro Hrončok 2021-06-21 09:46:48 UTC
Thanks.


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