Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Python 3.10 Incompatibility #102

Open
mjallday opened this issue Dec 8, 2021 · 14 comments
Open

Python 3.10 Incompatibility #102

mjallday opened this issue Dec 8, 2021 · 14 comments
Labels
Milestone

Comments

@mjallday
Copy link

mjallday commented Dec 8, 2021

Traceback (most recent call last):
  File "/app/consumer.py", line 17, in <module>
    import ksql
  File "/usr/local/lib/python3.10/site-packages/ksql/__init__.py", line 6, in <module>
    from ksql.client import KSQLAPI  # noqa
  File "/usr/local/lib/python3.10/site-packages/ksql/client.py", line 4, in <module>
    from ksql.api import SimplifiedAPI
  File "/usr/local/lib/python3.10/site-packages/ksql/api.py", line 12, in <module>
    from hyper import HTTPConnection
  File "/usr/local/lib/python3.10/site-packages/hyper/__init__.py", line 11, in <module>
    from .common.connection import HTTPConnection
  File "/usr/local/lib/python3.10/site-packages/hyper/common/connection.py", line 9, in <module>
    from ..http11.connection import HTTP11Connection
  File "/usr/local/lib/python3.10/site-packages/hyper/http11/connection.py", line 13, in <module>
    from collections import Iterable, Mapping
ImportError: cannot import name 'Iterable' from 'collections' (/usr/local/lib/python3.10/collections/__init__.py)

Looks like this dependency is using a deprecated API

DeprecationWarning: Using or importing the ABCs from 'collections' instead of from 'collections.abc' is deprecated since Python 3.3, and in 3.10 it will stop working

"An ImportError will be raised as collections.Iterable will be in collections.abc.Iterable"

this is coming from https://github.com/python-hyper/hyper which is deprecated so I guess it's time to switch to https://www.python-httpx.org/ or similar.

@udaysankarg
Copy link

I am also facing this issue. Is there any fix for this.

@pravinkusin
Copy link

Is there any fix for this ??

@emrekuecuek
Copy link

emrekuecuek commented Jun 3, 2022

I've been diving into this package's source code for a few days now, the error I'm receiving is given below (by omitting most of the error log on purpose):

ImportError: cannot import name 'Iterable' from 'collections' (/usr/lib/python3.10/collections/__init__.py)

Anyway, after doing some investigation, I realized that hyper package is no longer maintained (hyper). It is used for making requests over HTTP protocol. My suggestion would be changing it to another alternative such as HTTPX.

In api.py file, there are 2 functions which uses HTTPConnection from hyper package. query2 and inserts_stream.

Can we do something about this?
Regards,
Emre

@dgkncelik
Copy link

Hi fellas, i just created a pull request related to that issue, i hope it helps. #107 I will be creating pypi package in couple of days

@dgkncelik
Copy link

@mjallday i've fix the error and create an new pypi package https://pypi.org/project/pykSQL/0.11.0/

@KenCox94
Copy link
Collaborator

#107 should fix this as mentioned by @dgkncelik
@bryanyang0528 hasn't been active but has been merging pull request. He is currently working on some CI stuff so be patient and we should see a merge for this issue soon.

@sauljabin
Copy link

Hello folks same issue, is this project still active?, is there any other alternative?

@sauljabin
Copy link

If someone reading this issue needs a python client check this out : https://github.com/sauljabin/kayak/blob/main/kayak/ksql/ksql_service.py

@AndreaPrati98
Copy link

are there easy straightforward solutions to easily use ksql with python?

Please, fix this compatibility issue :(

@sauljabin
Copy link

are there easy straightforward solutions to easily use ksql with python?

Please, fix this compatibility issue :(

Check this out https://github.com/sauljabin/kayak/blob/main/kayak/ksql/ksql_service.py

@enowy
Copy link

enowy commented Aug 25, 2023

Hi.
Reason is hyper, hyperframe is not compatible with 3.10.

`The Iterable abstract class was removed from collections in Python 3.10. See the deprecation note in the 3.9 collections docs. In the section Removed of the 3.10 docs, the item

Remove deprecated aliases to Collections Abstract Base Classes from the collections module. (Contributed by Victor Stinner in bpo-37324.)
is what results in your error.

You can use Iterable from collections.abc instead, or use Python 3.9 if the problem is in a dependency that can't be updated.`

But hyper and hyperframe is archived on Jan 13, 2021.

We need to change code HTTPConnection on api.py.

@lorenh
Copy link

lorenh commented Nov 27, 2023

We are also facing this problem when running on anything newer than Python 3.9. This module appears to have stopped having PRs merged. Any suggestions for a similar module that does support versions of Python newer than 3.9?

@sheinbergon
Copy link

sheinbergon commented Jul 25, 2024

Hi @lorenh @enowy @sauljabin @AndreaPrati98

I've forked the code, modernized it (replaced hyper with HTTPX, bumped all dependencies, updated to Python 3.9 as the minimal version, and fixed all the tests to behave with latest KSQL DB versions (0.29.0). Could you check if it's still present in my version?

https://github.com/sheinbergon/ksql-python-ng

I'll be making a PYPI release soon enough. In the meanwhile, you can test it by running

pipx install git+https://github.com/sheinbergon/ksql-python-ng.git --include-deps

or

pip install git+https://github.com/sheinbergon/ksql-python-ng.git

@AndreaPrati98
Copy link

AndreaPrati98 commented Jul 26, 2024 via email

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests