Bug 2095027 - grpc fails to build with Python 3.11: AttributeError: module 'inspect' has no attribute 'getargspec'
Summary: grpc fails to build with Python 3.11: AttributeError: module 'inspect' has no...
Keywords:
Status: CLOSED ERRATA
Alias: None
Product: Fedora
Classification: Fedora
Component: grpc
Version: rawhide
Hardware: Unspecified
OS: Unspecified
unspecified
high
Target Milestone: ---
Assignee: Ben Beasley
QA Contact: Fedora Extras Quality Assurance
URL:
Whiteboard:
Depends On:
Blocks: PYTHON3.11
TreeView+ depends on / blocked
 
Reported: 2022-06-08 20:01 UTC by Miro Hrončok
Modified: 2022-06-10 22:31 UTC (History)
3 users (show)

Fixed In Version: grpc-1.46.3-5.fc37
Doc Type: If docs needed, set a value
Doc Text:
Clone Of:
Environment:
Last Closed: 2022-06-10 22:31:35 UTC
Type: Bug
Embargoed:


Attachments (Terms of Use)

Description Miro Hrončok 2022-06-08 20:01:52 UTC
grpc fails to build with Python 3.11.0b3.

Traceback (most recent call last):
  File "/usr/lib64/python3.11/unittest/case.py", line 57, in testPartExecutor
    yield
    ^^^^^
  File "/usr/lib64/python3.11/unittest/case.py", line 623, in run
    self._callTestMethod(testMethod)
    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib64/python3.11/unittest/case.py", line 579, in _callTestMethod
    if method() is not None:
       ^^^^^^^^
  File "/builddir/build/BUILD/grpc-1.46.3/src/python/grpcio_tests/tests/unit/beta/_implementations_test.py", line 46, in test_google_call_credentials
    call_creds = implementations.google_call_credentials(creds)
                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/builddir/build/BUILDROOT/grpc-1.46.3-4.fc37~bootstrap.x86_64/usr/lib64/python3.11/site-packages/grpc/beta/implementations.py", line 59, in google_call_credentials
    return metadata_call_credentials(_auth.GoogleCallCredentials(credentials))
                                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/builddir/build/BUILDROOT/grpc-1.46.3-4.fc37~bootstrap.x86_64/usr/lib64/python3.11/site-packages/grpc/_auth.py", line 33, in __init__
    self._is_jwt = 'additional_claims' in inspect.getargspec(  # pylint: disable=deprecated-method
                                          ^^^^^^^^^^^^^^^^^^
AttributeError: module 'inspect' has no attribute 'getargspec'


See from https://docs.python.org/3.11/whatsnew/3.11.html#removed

Removed from the inspect module:

    the getargspec function, deprecated since Python 3.0; use inspect.signature() or inspect.getfullargspec() instead.


In the copr, grpc is currently the package that directly blocks most other packages from resolving their buildroot, that is 56 other packages need it and 4 of them are only blocked by grpc and nothing else, hence setting severity to high.





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

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

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/@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 Ben Beasley 2022-06-08 21:02:52 UTC
At a glance, I can easily fix this by using inspect.getfullargspec instead. I’ll get it properly reported and a PR sent upstream soon, probably today or tomorrow, and I’ll fix the Fedora package then.

Comment 2 Miro Hrončok 2022-06-08 21:46:16 UTC
Note that there are a couple more different assertion errors in the log, this might or might not fix them as well.

Comment 3 Ben Beasley 2022-06-09 01:09:02 UTC
(In reply to Miro Hrončok from comment #2)
> Note that there are a couple more different assertion errors in the log,
> this might or might not fix them as well.

Indeed, the PR[1] looks good, but there are still five failures in ChannelzServicerTest:

> FAILURE       channelz._channelz_servicer_test.ChannelzServicerTest.test_get_one_server
> FAILURE       channelz._channelz_servicer_test.ChannelzServicerTest.test_server_basic
> FAILURE       channelz._channelz_servicer_test.ChannelzServicerTest.test_server_call
> FAILURE       channelz._channelz_servicer_test.ChannelzServicerTest.test_server_listen_sockets
> FAILURE       channelz._channelz_servicer_test.ChannelzServicerTest.test_server_sockets

Most likely, reporting and skipping them (without expecting a fix in the short term) will be the best I can do, but I will take a little time to see if I can get anywhere with them first. I also make sure to make sure there aren’t any additional failures after skipping them.

[1] https://src.fedoraproject.org/rpms/grpc/pull-request/13

Comment 4 Ben Beasley 2022-06-10 17:18:10 UTC
New bug for ChannelzServicerTest regressions, which I am simply skipping for now:

https://bugzilla.redhat.com/show_bug.cgi?id=2095832

Comment 5 Fedora Update System 2022-06-10 22:29:53 UTC
FEDORA-2022-928edb022f has been submitted as an update to Fedora 37. https://bodhi.fedoraproject.org/updates/FEDORA-2022-928edb022f

Comment 6 Fedora Update System 2022-06-10 22:31:35 UTC
FEDORA-2022-928edb022f has been pushed to the Fedora 37 stable repository.
If problem still persists, please make note of it in this bug report.


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