crossbario / autobahn-python

WebSocket and WAMP in Python for Twisted and asyncio
https://crossbar.io/autobahn
MIT License
2.48k stars 768 forks source link

Support Python 3.11 #1572

Open mgorny opened 2 years ago

mgorny commented 2 years ago

pyqrcode has not received a single commit since 2016. It still uses nosetests, and after being abandoned for equally as long they no longer work on Python 3.11. This effectively means this dependency is a lot of pain for distributions that can't test these packages properly.

oberstet commented 2 years ago

I've just tested pyqrcode on Python 3.11, works:

Bildschirmfoto von 2022-05-19 17-39-49

Yes, pyqrcode should probably move to pytest or similar, a "standard" Python test tool. Please report to upstream.


Apart from that, the real issues pop up with pip install autobahn[all]:

  1. A couple of Cython related issues since the CPy ABI changed: fatal error: longintrepr.h not found

https://github.com/aio-libs/aiohttp/issues/6600 https://github.com/aio-libs/yarl/issues/673 https://github.com/aio-libs/yarl/issues/706

These can be worked around with

export AIOHTTP_NO_EXTENSIONS=1
export FROZENLIST_NO_EXTENSIONS=1
export YARL_NO_EXTENSIONS=1
  1. eth-typing limits to python 3.10

Created a PR for that https://github.com/ethereum/eth-typing/pull/29

Similar for web3.

At this point, I gave up for now ... lots of projects are only just now adjusting to py 3.11, and I don't need it now

mgorny commented 2 years ago

I'm sorry but I left my time machine in the other pants' pocket.

oberstet commented 2 years ago

Part of the deps of autobahn[all] install web3, and of the web3 deps

pip install "aiohttp>=3.7.4.post0,<4"
pip install "eth-abi>=3.0.0,<4.0.0"
pip install "eth-account>=0.6.0,<0.7.0"
pip install "eth-hash[pycryptodome]>=0.2.0,<1.0.0"
pip install "eth-typing>=3.0.0,<4.0.0"
pip install "eth-utils>=2.0.0,<3.0.0"
pip install "hexbytes>=0.1.0,<1.0.0"
pip install "ipfshttpclient==0.8.0a2"
pip install "jsonschema>=4.0.0,<5"
pip install "lru-dict>=1.1.6,<2.0.0"
pip install "protobuf>=3.10.0,<4"
pip install "requests>=2.16.0,<3.0.0"
pip install "typing-extensions>=3.7.4.1,<5;python_version<'3.8'"
pip install "websockets>=10.0.0,<11"

this one fails

pip install "eth-account>=0.6.0,<0.7.0"

as does this

pip install git+https://github.com/ethereum/eth-account.git

with the same error

      bitarray/_bitarray.c:3276:33: error: lvalue required as left operand of assignment
       3276 |     Py_TYPE(&BitarrayIter_Type) = &PyType_Type;
oberstet commented 2 years ago

so the actual reason is bitarray<1.3.0,>=1.2.1 upper version limits in eth-account latest ..

https://github.com/ethereum/eth-account/issues/160 https://github.com/ethereum/eth-account/pull/161

mgorny commented 2 years ago

I;m sorry but why did you hijack my bug report? pyqrcode is the real problem for us. We won't package something in Gentoo that hasn't had any activity since 2015 and doesn't have a working test suite anymore.

oberstet commented 2 years ago

I;m sorry but why did you hijack my bug report?

Because Autobahn should run on Python 3.11 - and it doesn't, but not because of pyqrcode, but because of above.

We won't package something in Gentoo that hasn't had any activity since 2015 and doesn't have a working test suite anymore.

I don't use Gentoo, and from my point of view, the whole approach of distributing Python packages as OS packages is "wrong" - but sure, I am aware, this is probably non-mainstream opinion.

I agree about pyqrcode btw: it could need a maintainer, proper refresh etc. - or, indeed, replacing it with sth else - if s.o. comes up with a PR ..

We still need a bug to track autobahn[all] on Python 3.11 .. sorry for hijacking!

mgorny commented 2 years ago

Made #1573 for that.

om26er commented 1 year ago

I think we can close this now as 3.11 support was fixed for asyncio. Didn't test twisted though

om26er commented 1 year ago

This works now, so issue can be closed.