doloopwhile / pyjq

A Python binding for ./jq
MIT License
196 stars 30 forks source link

PyJQ Does Not Build in Python 3.12 #84

Open benbini opened 6 months ago

benbini commented 6 months ago

I recently tried to install pyjq in a Python 3.12 environment, and encountered the following error (along with a slew of deprecation warnings, omitted):

      _pyjq.c:6953:55: error: no member named 'ob_digit' in 'struct _longobject'
                  const digit* digits = ((PyLongObject*)x)->ob_digit;
                                        ~~~~~~~~~~~~~~~~~~  ^
      _pyjq.c:7008:55: error: no member named 'ob_digit' in 'struct _longobject'
                  const digit* digits = ((PyLongObject*)x)->ob_digit;
                                        ~~~~~~~~~~~~~~~~~~  ^
      _pyjq.c:7187:55: error: no member named 'ob_digit' in 'struct _longobject'
                  const digit* digits = ((PyLongObject*)x)->ob_digit;
                                        ~~~~~~~~~~~~~~~~~~  ^
      _pyjq.c:7242:55: error: no member named 'ob_digit' in 'struct _longobject'
                  const digit* digits = ((PyLongObject*)x)->ob_digit;
                                        ~~~~~~~~~~~~~~~~~~  ^
      _pyjq.c:7693:47: error: no member named 'ob_digit' in 'struct _longobject'
          const digit* digits = ((PyLongObject*)b)->ob_digit;

Based on the discussion here I believe references to ob_digit should be changed to ->long_value->ob_digit; I am unsure whether if there other breaking issues in 3.12.

dlangille commented 3 months ago

I came here because of Python 3.11 issues (the FreeBSD ports is tagged as working only with Python 3.8-3.9) and I was hoping for an updated release.