Cython 3.0.x required to build on Python 3.12
robd003 opened this issue · comments
- asyncpg version: 0.29.0b0
- PostgreSQL version: Postgres 15 / CrateDB 5.4.3
- Do you use a PostgreSQL SaaS? If so, which? Can you reproduce
the issue with a local PostgreSQL install?: Tested against AWS RDS & local deployments - Python version: 3.12
- Platform: Linux aarch64
- Do you use pgbouncer?: No
- Did you install asyncpg with pip?: No
- If you built asyncpg locally, which version of Cython did you use?: 3.0.3
- Can the issue be reproduced under both asyncio and
uvloop?: uvloop works just fine
asyncpg will not compile for Python 3.12 without updating the cython dependency. I merely did a version bump to cython >= 3.0.0
and it compiled just fine.
I don't think it's true. The master branch is building and running against 3.12 just fine.
Weird... I'm seeing the following when trying to compile from master on macOS:
asyncpg/pgproto/pgproto.c:40800:55: error: no member named 'ob_digit' in 'struct _longobject'
const digit* digits = ((PyLongObject*)x)->ob_digit;
~~~~~~~~~~~~~~~~~~ ^
asyncpg/pgproto/pgproto.c:40855:55: error: no member named 'ob_digit' in 'struct _longobject'
const digit* digits = ((PyLongObject*)x)->ob_digit;
~~~~~~~~~~~~~~~~~~ ^
asyncpg/pgproto/pgproto.c:41034:55: error: no member named 'ob_digit' in 'struct _longobject'
const digit* digits = ((PyLongObject*)x)->ob_digit;
~~~~~~~~~~~~~~~~~~ ^
asyncpg/pgproto/pgproto.c:41089:55: error: no member named 'ob_digit' in 'struct _longobject'
const digit* digits = ((PyLongObject*)x)->ob_digit;
~~~~~~~~~~~~~~~~~~ ^
asyncpg/pgproto/pgproto.c:41230:55: error: no member named 'ob_digit' in 'struct _longobject'
const digit* digits = ((PyLongObject*)x)->ob_digit;
~~~~~~~~~~~~~~~~~~ ^
asyncpg/pgproto/pgproto.c:41285:55: error: no member named 'ob_digit' in 'struct _longobject'
const digit* digits = ((PyLongObject*)x)->ob_digit;
~~~~~~~~~~~~~~~~~~ ^
asyncpg/pgproto/pgproto.c:41426:55: error: no member named 'ob_digit' in 'struct _longobject'
const digit* digits = ((PyLongObject*)x)->ob_digit;
~~~~~~~~~~~~~~~~~~ ^
asyncpg/pgproto/pgproto.c:41481:55: error: no member named 'ob_digit' in 'struct _longobject'
const digit* digits = ((PyLongObject*)x)->ob_digit;
~~~~~~~~~~~~~~~~~~ ^
asyncpg/pgproto/pgproto.c:41736:55: error: no member named 'ob_digit' in 'struct _longobject'
const digit* digits = ((PyLongObject*)x)->ob_digit;
~~~~~~~~~~~~~~~~~~ ^
asyncpg/pgproto/pgproto.c:41791:55: error: no member named 'ob_digit' in 'struct _longobject'
const digit* digits = ((PyLongObject*)x)->ob_digit;