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

Make lz4 support and dependency optional #461

Open
Jens-Dittrich opened this issue Jan 26, 2025 · 3 comments
Open

Make lz4 support and dependency optional #461

Jens-Dittrich opened this issue Jan 26, 2025 · 3 comments
Labels
enhancement New feature or request

Comments

@Jens-Dittrich
Copy link

Jens-Dittrich commented Jan 26, 2025

Is your feature request related to a problem? Please describe.
The python-lz4 dependency of clickhouse-connect causes issues in supporting newer python versions. Python 3.12 wheels of lz4 were released months after the initial language release, Python 3.13 wheels are not yet built. I am maintaining a larger internal library of 23 packages where the one package dealing with clickhouse is the only one which blocks supporting 3.13 for the entire library because of the dependency.

Describe the solution you'd like
Make python-lz4 an optional dependency to clickhouse-connect. Users who require it can still us it, however not everyone who does not have a C-Compiler on his/her system would be blocked.

Describe alternatives you've considered
Building lz4 wheels myself and upload to our internal pypi/artifactory. However, the very fact that python-lz4 is only maintained by one individual who apparently cannot spend larger amount of time into this project, remains an issue.

Additional context
https://pyreadiness.org/3.13/

@Jens-Dittrich Jens-Dittrich added the enhancement New feature or request label Jan 26, 2025
@genzgd
Copy link
Collaborator

genzgd commented Jan 26, 2025

I'm somewhat confused, since I run 3.13 on my Mac and we run Github CI Ubuntu tests against 3.13 as well, and both places have no issue installing lz4 and running tests. 3.13 wheels appear available with the latest lz4 version as well. Are you getting an error on your installations?

https://pypi.org/project/lz4/#files

@Jens-Dittrich
Copy link
Author

Must have been a race condition with my post and the new release 4.4.3. which was released today and as per their pipeline only some minutes before you wrote. See attached screenshot:

Image

The previous version 4.3.3, did not provide 3.13 wheels on pypi. My problem merely is, all runs fine if you have installed a C compiler and python headers, there was never any issue on 3.13. But, I cannot assume my users would be able compile their dependencies themselfes.

We can however park the issue for the next twelve months now and see how long 3.14 support takes to be enabled for lz4.

@genzgd
Copy link
Collaborator

genzgd commented Jan 27, 2025

Sounds good. We'll check the requirements more carefully for Python 3.14. I really hate to make lz4/zstandard optional because not having compression has a significant performance impact and I don't want to require users to remember to install the optional dependencies. I think that can be done using conditional clauses in setup.py but it doesn't seem necessary quite yet.

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

No branches or pull requests

2 participants