Closed
Description
Python 3.12 is going to have a release candidate soon, so we might as well test it out.
https://peps.python.org/pep-0693/
Apply a patch locally to test it out yourself.
diff --git a/Dockerfile b/Dockerfile
index 0dd6db183..0ccc54548 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -36,7 +36,7 @@ RUN NODE_ENV=production npm run build
# We'll build a light-weight layer along the way with just docs stuff
-FROM python:3.11.5-slim-bookworm as docs
+FROM python:3.12-rc-slim-bookworm as docs
# By default, Docker has special steps to avoid keeping APT caches in the layers, which
# is good, but in our case, we're going to mount a special cache volume (kept between
@@ -105,7 +105,7 @@ USER docs
# Now we're going to build our actual application, but not the actual production
# image that it gets deployed into.
-FROM python:3.11.5-slim-bookworm as build
+FROM python:3.12-rc-slim-bookworm as build
# Define whether we're building a production or a development image. This will
# generally be used to control whether or not we install our development and
@@ -184,7 +184,7 @@ RUN --mount=type=cache,target=/root/.cache/pip \
# Now we're going to build our actual application image, which will eventually
# pull in the static files that were built above.
-FROM python:3.11.5-slim-bookworm
+FROM python:3.12-rc-slim-bookworm
# Setup some basic environment variables that are ~never going to change.
ENV PYTHONUNBUFFERED 1
Notables:
- need
orjson
to release a 3.12 wheel, or we end up installing gcc/rust toolchains inbuild
phase. They've already begun testing.
Released in 3.8.10 and we're already up to 3.9.1 - need
lxml
to release 4.9.3 with 3.12 support - lxml/lxml@da0c433 -
forcediphttpsadapter
- Resolve DeprecationWarning: distutils Roadmaster/forcediphttpsadapter#14 - need
grpcio
to add 3.12 support -Python 3.12 Support grpc/grpc#33063- [Python 3.12] Support Python 3.12 grpc/grpc#34398 -
greenlet
- add 3.12 support - Fix #323: Support Python 3.12 python-greenlet/greenlet#327
- Release version 3.0.0 that includes 3.12 support, or wait until SQLAlchemy 2.1 makes it more optional. If they do, we should update our
main.in
to remove[asyncio]
extras, since we don't use asyncio
- need
venusian
to release a new version that doesn't usefind_module
Please release 3.1.1 / 3.2.0 Pylons/venusian#85 -
passlib is usingNot a blocker, but opened a tracking issue for this.pkg_resources
- https://foss.heptapod.net/python-libs/passlib/-/issues/185 (and may be unmaintained?) - update kombu to 5.3.2 or newer - Python3.12: fix imports in kombu/utils/objects.py celery/kombu#1756 Last time we tried, had a rough time, so might need to revisit once this is solved. Also now seeing Kombu may rely on locking in functools.cached_property that will be removed in Python 3.12 celery/kombu#1668
As of 2023-09-29, these packages are being built into wheels:
grpcio,
hiredis,
paginate,
psycopg-c,
pycurl,
pyqrcode,
zxcvbn,
psutil,
pyyaml,
restructuredtext-lint
I expect psycopg-c
to always be built, since that's what we've opted into with this package, but the others should probably get built as wheels soon.