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

Publish Python 3.12 wheels on PyPI #178

Open
mayeut opened this issue Sep 30, 2023 · 10 comments
Open

Publish Python 3.12 wheels on PyPI #178

mayeut opened this issue Sep 30, 2023 · 10 comments
Assignees
Labels
priority: p3 Desirable enhancement or fix. May not be included in next release. type: feature request ‘Nice-to-have’ improvement, new feature or different behavior or design.

Comments

@mayeut
Copy link
Contributor

mayeut commented Sep 30, 2023

Is your feature request related to a problem? Please describe.
For now, installing python-crc32 with Python 3.12 is done by building from sources rather than just installing a wheel.

Describe the solution you'd like
Please publish Python 3.12 wheels.

Describe alternatives you've considered
Building from sources: this is slow & error prone.

Additional context
Python 3.12 will be released next week and has been ABI stable since rc1.

@mayeut mayeut added priority: p3 Desirable enhancement or fix. May not be included in next release. type: feature request ‘Nice-to-have’ improvement, new feature or different behavior or design. labels Sep 30, 2023
@parthea
Copy link
Contributor

parthea commented Nov 16, 2023

Blocked by #149

@bricker
Copy link

bricker commented Jan 13, 2024

@parthea how can I help get this done?

@martin-traverse
Copy link

martin-traverse commented Jan 23, 2024

We have a multi-cloud product and need this to support GCP with Python 3.12. The current situation is that Python 3.12 is supported on AWS, but not on GCP or Azure because of dependency issues. If there is anything I can do to help, please let me know.

@dsotirho-ucsc
Copy link

This is a blocking us from upgrading to Python 3.12. Any news on this issue would be most appreciated. Thanks!

@ADR-007
Copy link

ADR-007 commented Mar 16, 2024

As a workaround you can build it manually in Docker using this instruction (+several hours for debugging 😀):

ENV PY_BIN=$VIRTUAL_ENV/bin/python
RUN git clone --recursive --depth 1 --branch v1.5.0 https://github.com/googleapis/python-crc32c \
    && cd python-crc32c  \
    && pip install -r scripts/dev-requirements.txt \
    && ./scripts/local-linux/build_libcrc32c.sh \
    && pip install --no-index --find-links=wheels google-crc32c \
    && python ./scripts/check_crc32c_extension.py \
    && python -c "from google_crc32c import *" \
    && ls --hide=usr | xargs -d '\n' rm -rf

@edgarrmondragon
Copy link

As a workaround you can build it manually in Docker using this instruction (+several hours for debugging 😀):

ENV PY_BIN=$VIRTUAL_ENV/bin/python
RUN git clone --recursive --depth 1 --branch v1.5.0 https://github.com/googleapis/python-crc32c \
    && cd python-crc32c  \
    && pip install -r scripts/dev-requirements.txt \
    && ./scripts/local-linux/build_libcrc32c.sh \
    && pip install --no-index --find-links=wheels google-crc32c \
    && python ./scripts/check_crc32c_extension.py \
    && python -c "from google_crc32c import *" \
    && ls --hide=usr | xargs -d '\n' rm -rf

Not really a workaround when the request is specifically to avoid having to build from source 😉

@martin-traverse
Copy link

As a workaround you can build it manually in Docker using this instruction (+several hours for debugging 😀):


ENV PY_BIN=$VIRTUAL_ENV/bin/python

RUN git clone --recursive --depth 1 --branch v1.5.0 https://github.com/googleapis/python-crc32c \

    && cd python-crc32c  \

    && pip install -r scripts/dev-requirements.txt \

    && ./scripts/local-linux/build_libcrc32c.sh \

    && pip install --no-index --find-links=wheels google-crc32c \

    && python ./scripts/check_crc32c_extension.py \

    && python -c "from google_crc32c import *" \

    && ls --hide=usr | xargs -d '\n' rm -rf

I do appreciate you trying to offer a solution, but honestly this is a really bad developer experience. If it was just me I wouldn't mind, but our users are modellers, they install our library using pip and expect it to work. We can't start publishing instructions telling them to install Docker and build stuff from source, this is exactly the kind of pain we are trying to solve for them. Also the tools available in enterprise environments are normally hugely restricted, if Docker is even an option you probably have to raise a bunch of requests and go through an approval workflow which can take an unlimited amount of time, maybe you even need an entirely different machine and have to set up all your tools again. It's just not practical and our users won't do it.

We will have to continue telling our users that GCP doesn't support Python 3.12 until the packages are available through the normal mechanism. This is what we need:

pip install google-auth
pip install google-cloud-core
pip install google-cloud-storage

I hope this helps explain the context a little bit! In my field there are lots of people who want to use these tools but issues like this will stop them in their tracks.

@edgarrmondragon
Copy link

Gentle bump. Python 3.12 is now 6 months old.

@parthea parthea assigned andrewsg and unassigned parthea Apr 4, 2024
@parthea
Copy link
Contributor

parthea commented Apr 4, 2024

See #149 (comment) for ETA

@jlaine
Copy link

jlaine commented May 20, 2024

Could you conceivably make use of Python's limited API [1]? This would avoid having to rebuild wheels whenever a new version of Python is released.

[1] https://docs.python.org/3/c-api/stable.html#limited-c-api

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
priority: p3 Desirable enhancement or fix. May not be included in next release. type: feature request ‘Nice-to-have’ improvement, new feature or different behavior or design.
Projects
None yet
Development

No branches or pull requests

9 participants