tree-sitter / py-tree-sitter

Python bindings to the Tree-sitter parsing library
https://tree-sitter.github.io/py-tree-sitter/
MIT License
817 stars 96 forks source link

How to build 0.22.x from source #238

Closed notEvil closed 4 months ago

notEvil commented 4 months ago

Hi,

I'm maintaining the Arch AUR package and fail to compile the latest release from source. pipenv run pip install --no-binary :all: tree-sitter==0.22.1 fails with

``` Creating a virtualenv for this project... Pipfile: /home/user/Pipfile Using /usr/bin/python (3.12.3) to create virtualenv... ⠙ Creating virtual environment...created virtual environment CPython3.12.3.final.0-64 in 113ms creator CPython3Posix(dest=/home/user/.local/share/virtualenvs/user-arBjbYq4, clear=False, no_vcs_ignore=False, global=False) seeder FromAppData(download=False, pip=bundle, via=copy, app_data_dir=/home/user/.local/share/virtualenv) added seed packages: pip==24.0 activators BashActivator,CShellActivator,FishActivator,NushellActivator,PowerShellActivator,PythonActivator ✔ Successfully created virtual environment! Virtualenv location: /home/user/.local/share/virtualenvs/user-arBjbYq4 Collecting tree-sitter==0.22.1 Using cached tree-sitter-0.22.1.tar.gz (160 kB) Installing build dependencies ... done Getting requirements to build wheel ... done Installing backend dependencies ... done Preparing metadata (pyproject.toml) ... done Building wheels for collected packages: tree-sitter Building wheel for tree-sitter (pyproject.toml) ... error error: subprocess-exited-with-error × Building wheel for tree-sitter (pyproject.toml) did not run successfully. │ exit code: 1 ╰─> [733 lines of output] running bdist_wheel running build running build_py creating build creating build/lib.linux-x86_64-cpython-312 creating build/lib.linux-x86_64-cpython-312/tree_sitter copying tree_sitter/__init__.py -> build/lib.linux-x86_64-cpython-312/tree_sitter copying tree_sitter/__init__.pyi -> build/lib.linux-x86_64-cpython-312/tree_sitter copying tree_sitter/py.typed -> build/lib.linux-x86_64-cpython-312/tree_sitter warning: build_py: byte-compiling is disabled, skipping. running build_ext building 'tree_sitter._binding' extension creating build/temp.linux-x86_64-cpython-312 creating build/temp.linux-x86_64-cpython-312/tree_sitter creating build/temp.linux-x86_64-cpython-312/tree_sitter/binding creating build/temp.linux-x86_64-cpython-312/tree_sitter/core creating build/temp.linux-x86_64-cpython-312/tree_sitter/core/lib creating build/temp.linux-x86_64-cpython-312/tree_sitter/core/lib/src gcc -fno-strict-overflow -DNDEBUG -g -O3 -Wall -march=x86-64 -mtune=generic -O3 -pipe -fno-plt -fexceptions -Wp,-D_FORTIFY_SOURCE=2 -Wformat -Werror=format-security -fstack-clash-protection -fcf-protection -g -ffile-prefix-map=/build/python/src=/usr/src/debug/python -flto=auto -ffat-lto-objects -march=x86-64 -mtune=generic -O3 -pipe -fno-plt -fexceptions -Wp,-D_FORTIFY_SOURCE=2 -Wformat -Werror=format-security -fstack-clash-protection -fcf-protection -g -ffile-prefix-map=/build/python/src=/usr/src/debug/python -flto=auto -march=x86-64 -mtune=generic -O3 -pipe -fno-plt -fexceptions -Wp,-D_FORTIFY_SOURCE=2 -Wformat -Werror=format-security -fstack-clash-protection -fcf-protection -g -ffile-prefix-map=/build/python/src=/usr/src/debug/python -flto=auto -fPIC -DPY_SSIZE_T_CLEAN -DTREE_SITTER_HIDE_SYMBOLS -UTREE_SITTER_FEATURE_WASM -Itree_sitter/binding -Itree_sitter/core/lib/include -Itree_sitter/core/lib/src -I/home/user/.local/share/virtualenvs/user-arBjbYq4/include -I/usr/include/python3.12 -c tree_sitter/binding/language.c -o build/temp.linux-x86_64-cpython-312/tree_sitter/binding/language.o -std=c11 -fvisibility=hidden -Wno-cast-function-type -Werror=implicit-function-declaration tree_sitter/binding/language.c:3:19: error: unknown type name ‘Language’; did you mean ‘TSLanguage’? 3 | int language_init(Language *self, PyObject *args, PyObject *Py_UNUSED(kwargs)) { | ^~~~~~~~ | TSLanguage tree_sitter/binding/language.c:3:35: error: unknown type name ‘PyObject’ 3 | int language_init(Language *self, PyObject *args, PyObject *Py_UNUSED(kwargs)) { | ^~~~~~~~ tree_sitter/binding/language.c:3:51: error: unknown type name ‘PyObject’ 3 | int language_init(Language *self, PyObject *args, PyObject *Py_UNUSED(kwargs)) { | ^~~~~~~~ tree_sitter/binding/language.c:27:23: error: unknown type name ‘Language’; did you mean ‘TSLanguage’? 27 | void language_dealloc(Language *self) { | ^~~~~~~~ | TSLanguage tree_sitter/binding/language.c:32:1: error: unknown type name ‘PyObject’ 32 | PyObject *language_repr(Language *self) { | ^~~~~~~~ tree_sitter/binding/language.c:32:25: error: unknown type name ‘Language’; did you mean ‘TSLanguage’? 32 | PyObject *language_repr(Language *self) { | ^~~~~~~~ | TSLanguage tree_sitter/binding/language.c:46:1: error: unknown type name ‘Py_hash_t’ 46 | Py_hash_t language_hash(Language *self) { return (Py_hash_t)self->language; } | ^~~~~~~~~ tree_sitter/binding/language.c:46:25: error: unknown type name ‘Language’; did you mean ‘TSLanguage’? 46 | Py_hash_t language_hash(Language *self) { return (Py_hash_t)self->language; } | ^~~~~~~~ | TSLanguage tree_sitter/binding/language.c:48:1: error: unknown type name ‘PyObject’ 48 | PyObject *language_compare(Language *self, PyObject *other, int op) { | ^~~~~~~~ tree_sitter/binding/language.c:48:28: error: unknown type name ‘Language’; did you mean ‘TSLanguage’? 48 | PyObject *language_compare(Language *self, PyObject *other, int op) { | ^~~~~~~~ | TSLanguage tree_sitter/binding/language.c:48:44: error: unknown type name ‘PyObject’ 48 | PyObject *language_compare(Language *self, PyObject *other, int op) { | ^~~~~~~~ tree_sitter/binding/language.c:64:1: error: unknown type name ‘PyObject’ 64 | PyObject *language_get_version(Language *self, void *Py_UNUSED(payload)) { | ^~~~~~~~ tree_sitter/binding/language.c:64:32: error: unknown type name ‘Language’; did you mean ‘TSLanguage’? 64 | PyObject *language_get_version(Language *self, void *Py_UNUSED(payload)) { | ^~~~~~~~ | TSLanguage tree_sitter/binding/language.c:64:32: error: parameter names (without types) in function declaration [-Wdeclaration-missing-parameter-type] tree_sitter/binding/language.c:68:1: error: unknown type name ‘PyObject’ 68 | PyObject *language_get_node_kind_count(Language *self, void *Py_UNUSED(payload)) { | ^~~~~~~~ tree_sitter/binding/language.c:68:40: error: unknown type name ‘Language’; did you mean ‘TSLanguage’? 68 | PyObject *language_get_node_kind_count(Language *self, void *Py_UNUSED(payload)) { | ^~~~~~~~ | TSLanguage tree_sitter/binding/language.c:68:40: error: parameter names (without types) in function declaration [-Wdeclaration-missing-parameter-type] tree_sitter/binding/language.c:72:1: error: unknown type name ‘PyObject’ 72 | PyObject *language_get_parse_state_count(Language *self, void *Py_UNUSED(payload)) { | ^~~~~~~~ tree_sitter/binding/language.c:72:42: error: unknown type name ‘Language’; did you mean ‘TSLanguage’? 72 | PyObject *language_get_parse_state_count(Language *self, void *Py_UNUSED(payload)) { | ^~~~~~~~ | TSLanguage tree_sitter/binding/language.c:72:42: error: parameter names (without types) in function declaration [-Wdeclaration-missing-parameter-type] tree_sitter/binding/language.c:76:1: error: unknown type name ‘PyObject’ 76 | PyObject *language_get_field_count(Language *self, void *Py_UNUSED(payload)) { | ^~~~~~~~ tree_sitter/binding/language.c:76:36: error: unknown type name ‘Language’; did you mean ‘TSLanguage’? 76 | PyObject *language_get_field_count(Language *self, void *Py_UNUSED(payload)) { | ^~~~~~~~ | TSLanguage tree_sitter/binding/language.c:76:36: error: parameter names (without types) in function declaration [-Wdeclaration-missing-parameter-type] tree_sitter/binding/language.c:80:1: error: unknown type name ‘PyObject’ 80 | PyObject *language_node_kind_for_id(Language *self, PyObject *args) { | ^~~~~~~~ tree_sitter/binding/language.c:80:37: error: unknown type name ‘Language’; did you mean ‘TSLanguage’? 80 | PyObject *language_node_kind_for_id(Language *self, PyObject *args) { | ^~~~~~~~ | TSLanguage tree_sitter/binding/language.c:80:53: error: unknown type name ‘PyObject’ 80 | PyObject *language_node_kind_for_id(Language *self, PyObject *args) { | ^~~~~~~~ tree_sitter/binding/language.c:92:1: error: unknown type name ‘PyObject’ 92 | PyObject *language_id_for_node_kind(Language *self, PyObject *args) { | ^~~~~~~~ tree_sitter/binding/language.c:92:37: error: unknown type name ‘Language’; did you mean ‘TSLanguage’? 92 | PyObject *language_id_for_node_kind(Language *self, PyObject *args) { | ^~~~~~~~ | TSLanguage tree_sitter/binding/language.c:92:53: error: unknown type name ‘PyObject’ 92 | PyObject *language_id_for_node_kind(Language *self, PyObject *args) { | ^~~~~~~~ tree_sitter/binding/language.c:106:1: error: unknown type name ‘PyObject’ 106 | PyObject *language_node_kind_is_named(Language *self, PyObject *args) { | ^~~~~~~~ tree_sitter/binding/language.c:106:39: error: unknown type name ‘Language’; did you mean ‘TSLanguage’? 106 | PyObject *language_node_kind_is_named(Language *self, PyObject *args) { | ^~~~~~~~ | TSLanguage tree_sitter/binding/language.c:106:55: error: unknown type name ‘PyObject’ 106 | PyObject *language_node_kind_is_named(Language *self, PyObject *args) { | ^~~~~~~~ tree_sitter/binding/language.c:115:1: error: unknown type name ‘PyObject’ 115 | PyObject *language_node_kind_is_visible(Language *self, PyObject *args) { | ^~~~~~~~ tree_sitter/binding/language.c:115:41: error: unknown type name ‘Language’; did you mean ‘TSLanguage’? 115 | PyObject *language_node_kind_is_visible(Language *self, PyObject *args) { | ^~~~~~~~ | TSLanguage tree_sitter/binding/language.c:115:57: error: unknown type name ‘PyObject’ 115 | PyObject *language_node_kind_is_visible(Language *self, PyObject *args) { | ^~~~~~~~ tree_sitter/binding/language.c:124:1: error: unknown type name ‘PyObject’ 124 | PyObject *language_field_name_for_id(Language *self, PyObject *args) { | ^~~~~~~~ tree_sitter/binding/language.c:124:38: error: unknown type name ‘Language’; did you mean ‘TSLanguage’? 124 | PyObject *language_field_name_for_id(Language *self, PyObject *args) { | ^~~~~~~~ | TSLanguage tree_sitter/binding/language.c:124:54: error: unknown type name ‘PyObject’ 124 | PyObject *language_field_name_for_id(Language *self, PyObject *args) { | ^~~~~~~~ tree_sitter/binding/language.c:136:1: error: unknown type name ‘PyObject’ 136 | PyObject *language_field_id_for_name(Language *self, PyObject *args) { | ^~~~~~~~ tree_sitter/binding/language.c:136:38: error: unknown type name ‘Language’; did you mean ‘TSLanguage’? 136 | PyObject *language_field_id_for_name(Language *self, PyObject *args) { | ^~~~~~~~ | TSLanguage tree_sitter/binding/language.c:136:54: error: unknown type name ‘PyObject’ 136 | PyObject *language_field_id_for_name(Language *self, PyObject *args) { | ^~~~~~~~ tree_sitter/binding/language.c:149:1: error: unknown type name ‘PyObject’ 149 | PyObject *language_next_state(Language *self, PyObject *args) { | ^~~~~~~~ tree_sitter/binding/language.c:149:31: error: unknown type name ‘Language’; did you mean ‘TSLanguage’? 149 | PyObject *language_next_state(Language *self, PyObject *args) { | ^~~~~~~~ | TSLanguage tree_sitter/binding/language.c:149:47: error: unknown type name ‘PyObject’ 149 | PyObject *language_next_state(Language *self, PyObject *args) { | ^~~~~~~~ tree_sitter/binding/language.c:158:1: error: unknown type name ‘PyObject’ 158 | PyObject *language_lookahead_iterator(Language *self, PyObject *args) { | ^~~~~~~~ tree_sitter/binding/language.c:158:39: error: unknown type name ‘Language’; did you mean ‘TSLanguage’? 158 | PyObject *language_lookahead_iterator(Language *self, PyObject *args) { | ^~~~~~~~ | TSLanguage tree_sitter/binding/language.c:158:55: error: unknown type name ‘PyObject’ 158 | PyObject *language_lookahead_iterator(Language *self, PyObject *args) { | ^~~~~~~~ tree_sitter/binding/language.c:178:1: error: unknown type name ‘PyObject’ 178 | PyObject *language_query(Language *self, PyObject *args) { | ^~~~~~~~ tree_sitter/binding/language.c:178:26: error: unknown type name ‘Language’; did you mean ‘TSLanguage’? 178 | PyObject *language_query(Language *self, PyObject *args) { | ^~~~~~~~ | TSLanguage tree_sitter/binding/language.c:178:42: error: unknown type name ‘PyObject’ 178 | PyObject *language_query(Language *self, PyObject *args) { | ^~~~~~~~ tree_sitter/binding/language.c:188:44: error: expected ‘)’ before string constant 188 | PyDoc_STRVAR(language_node_kind_for_id_doc, | ^ | ) 189 | "node_kind_for_id(self, id, /)\n--\n\n" | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ tree_sitter/binding/language.c:191:44: error: expected ‘)’ before string constant 191 | PyDoc_STRVAR(language_id_for_node_kind_doc, "id_for_node_kind(self, kind, named, /)\n--\n\n" | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | ) tree_sitter/binding/language.c:193:46: error: expected ‘)’ before string constant 193 | PyDoc_STRVAR(language_node_kind_is_named_doc, "node_kind_is_named(self, id, /)\n--\n\n" | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | ) tree_sitter/binding/language.c:196:48: error: expected ‘)’ before string constant 196 | PyDoc_STRVAR(language_node_kind_is_visible_doc, | ^ | ) 197 | "node_kind_is_visible(self, id, /)\n--\n\n" | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ tree_sitter/binding/language.c:200:45: error: expected ‘)’ before string constant 200 | PyDoc_STRVAR(language_field_name_for_id_doc, "field_name_for_id(self, field_id, /)\n--\n\n" | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | ) tree_sitter/binding/language.c:202:45: error: expected ‘)’ before string constant 202 | PyDoc_STRVAR(language_field_id_for_name_doc, "field_id_for_name(self, name, /)\n--\n\n" | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | ) tree_sitter/binding/language.c:204:38: error: expected ‘)’ before string constant 204 | PyDoc_STRVAR(language_next_state_doc, | ^ | ) 205 | "next_state(self, state, id, /)\n--\n\n" | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ tree_sitter/binding/language.c:209:46: error: expected ‘)’ before string constant 209 | PyDoc_STRVAR(language_lookahead_iterator_doc, | ^ | ) 210 | "lookahead_iterator(self, state, /)\n--\n\n" | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ tree_sitter/binding/language.c:213:24: error: expected ‘)’ before string constant 213 | language_query_doc, | ^ | ) 214 | "query(self, source, /)\n--\n\n" | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ tree_sitter/binding/language.c:217:8: error: unknown type name ‘PyMethodDef’ 217 | static PyMethodDef language_methods[] = { | ^~~~~~~~~~~ tree_sitter/binding/language.c:218:5: warning: braces around scalar initializer 218 | { | ^ tree_sitter/binding/language.c:218:5: note: (near initialization for ‘language_methods[0]’) tree_sitter/binding/language.c:219:9: error: field name not in record or union initializer 219 | .ml_name = "node_kind_for_id", | ^ tree_sitter/binding/language.c:219:9: note: (near initialization for ‘language_methods[0]’) tree_sitter/binding/language.c:219:20: error: initialization of ‘int’ from ‘char *’ makes integer from pointer without a cast [-Wint-conversion] 219 | .ml_name = "node_kind_for_id", | ^~~~~~~~~~~~~~~~~~ tree_sitter/binding/language.c:219:20: note: (near initialization for ‘language_methods[0]’) tree_sitter/binding/language.c:219:20: error: initializer element is not computable at load time tree_sitter/binding/language.c:219:20: note: (near initialization for ‘language_methods[0]’) tree_sitter/binding/language.c:220:9: error: field name not in record or union initializer 220 | .ml_meth = (PyCFunction)language_node_kind_for_id, | ^ tree_sitter/binding/language.c:220:9: note: (near initialization for ‘language_methods[0]’) tree_sitter/binding/language.c:220:21: error: ‘PyCFunction’ undeclared here (not in a function) 220 | .ml_meth = (PyCFunction)language_node_kind_for_id, | ^~~~~~~~~~~ tree_sitter/binding/language.c:220:20: warning: excess elements in scalar initializer 220 | .ml_meth = (PyCFunction)language_node_kind_for_id, | ^ tree_sitter/binding/language.c:220:20: note: (near initialization for ‘language_methods[0]’) tree_sitter/binding/language.c:220:33: error: expected ‘}’ before ‘language_node_kind_for_id’ 220 | .ml_meth = (PyCFunction)language_node_kind_for_id, | ^~~~~~~~~~~~~~~~~~~~~~~~~ tree_sitter/binding/language.c:218:5: note: to match this ‘{’ 218 | { | ^ tree_sitter/binding/language.c:224:5: warning: braces around scalar initializer 224 | { | ^ tree_sitter/binding/language.c:224:5: note: (near initialization for ‘language_methods[1]’) tree_sitter/binding/language.c:225:9: error: field name not in record or union initializer 225 | .ml_name = "id_for_node_kind", | ^ tree_sitter/binding/language.c:225:9: note: (near initialization for ‘language_methods[1]’) tree_sitter/binding/language.c:225:20: error: initialization of ‘int’ from ‘char *’ makes integer from pointer without a cast [-Wint-conversion] 225 | .ml_name = "id_for_node_kind", | ^~~~~~~~~~~~~~~~~~ tree_sitter/binding/language.c:225:20: note: (near initialization for ‘language_methods[1]’) tree_sitter/binding/language.c:225:20: error: initializer element is not computable at load time tree_sitter/binding/language.c:225:20: note: (near initialization for ‘language_methods[1]’) tree_sitter/binding/language.c:226:9: error: field name not in record or union initializer 226 | .ml_meth = (PyCFunction)language_id_for_node_kind, | ^ tree_sitter/binding/language.c:226:9: note: (near initialization for ‘language_methods[1]’) tree_sitter/binding/language.c:226:20: warning: excess elements in scalar initializer 226 | .ml_meth = (PyCFunction)language_id_for_node_kind, | ^ tree_sitter/binding/language.c:226:20: note: (near initialization for ‘language_methods[1]’) tree_sitter/binding/language.c:226:33: error: expected ‘}’ before ‘language_id_for_node_kind’ 226 | .ml_meth = (PyCFunction)language_id_for_node_kind, | ^~~~~~~~~~~~~~~~~~~~~~~~~ tree_sitter/binding/language.c:224:5: note: to match this ‘{’ 224 | { | ^ tree_sitter/binding/language.c:230:5: warning: braces around scalar initializer 230 | { | ^ tree_sitter/binding/language.c:230:5: note: (near initialization for ‘language_methods[2]’) tree_sitter/binding/language.c:231:9: error: field name not in record or union initializer 231 | .ml_name = "node_kind_is_named", | ^ tree_sitter/binding/language.c:231:9: note: (near initialization for ‘language_methods[2]’) tree_sitter/binding/language.c:231:20: error: initialization of ‘int’ from ‘char *’ makes integer from pointer without a cast [-Wint-conversion] 231 | .ml_name = "node_kind_is_named", | ^~~~~~~~~~~~~~~~~~~~ tree_sitter/binding/language.c:231:20: note: (near initialization for ‘language_methods[2]’) tree_sitter/binding/language.c:231:20: error: initializer element is not computable at load time tree_sitter/binding/language.c:231:20: note: (near initialization for ‘language_methods[2]’) tree_sitter/binding/language.c:232:9: error: field name not in record or union initializer 232 | .ml_meth = (PyCFunction)language_node_kind_is_named, | ^ tree_sitter/binding/language.c:232:9: note: (near initialization for ‘language_methods[2]’) tree_sitter/binding/language.c:232:20: warning: excess elements in scalar initializer 232 | .ml_meth = (PyCFunction)language_node_kind_is_named, | ^ tree_sitter/binding/language.c:232:20: note: (near initialization for ‘language_methods[2]’) tree_sitter/binding/language.c:232:33: error: expected ‘}’ before ‘language_node_kind_is_named’ 232 | .ml_meth = (PyCFunction)language_node_kind_is_named, | ^~~~~~~~~~~~~~~~~~~~~~~~~~~ tree_sitter/binding/language.c:230:5: note: to match this ‘{’ 230 | { | ^ tree_sitter/binding/language.c:236:5: warning: braces around scalar initializer 236 | { | ^ tree_sitter/binding/language.c:236:5: note: (near initialization for ‘language_methods[3]’) tree_sitter/binding/language.c:237:9: error: field name not in record or union initializer 237 | .ml_name = "node_kind_is_visible", | ^ tree_sitter/binding/language.c:237:9: note: (near initialization for ‘language_methods[3]’) tree_sitter/binding/language.c:237:20: error: initialization of ‘int’ from ‘char *’ makes integer from pointer without a cast [-Wint-conversion] 237 | .ml_name = "node_kind_is_visible", | ^~~~~~~~~~~~~~~~~~~~~~ tree_sitter/binding/language.c:237:20: note: (near initialization for ‘language_methods[3]’) tree_sitter/binding/language.c:237:20: error: initializer element is not computable at load time tree_sitter/binding/language.c:237:20: note: (near initialization for ‘language_methods[3]’) tree_sitter/binding/language.c:238:9: error: field name not in record or union initializer 238 | .ml_meth = (PyCFunction)language_node_kind_is_visible, | ^ tree_sitter/binding/language.c:238:9: note: (near initialization for ‘language_methods[3]’) tree_sitter/binding/language.c:238:20: warning: excess elements in scalar initializer 238 | .ml_meth = (PyCFunction)language_node_kind_is_visible, | ^ tree_sitter/binding/language.c:238:20: note: (near initialization for ‘language_methods[3]’) tree_sitter/binding/language.c:238:33: error: expected ‘}’ before ‘language_node_kind_is_visible’ 238 | .ml_meth = (PyCFunction)language_node_kind_is_visible, | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~ tree_sitter/binding/language.c:236:5: note: to match this ‘{’ 236 | { | ^ tree_sitter/binding/language.c:242:5: warning: braces around scalar initializer 242 | { | ^ tree_sitter/binding/language.c:242:5: note: (near initialization for ‘language_methods[4]’) tree_sitter/binding/language.c:243:9: error: field name not in record or union initializer 243 | .ml_name = "field_name_for_id", | ^ tree_sitter/binding/language.c:243:9: note: (near initialization for ‘language_methods[4]’) tree_sitter/binding/language.c:243:20: error: initialization of ‘int’ from ‘char *’ makes integer from pointer without a cast [-Wint-conversion] 243 | .ml_name = "field_name_for_id", | ^~~~~~~~~~~~~~~~~~~ tree_sitter/binding/language.c:243:20: note: (near initialization for ‘language_methods[4]’) tree_sitter/binding/language.c:243:20: error: initializer element is not computable at load time tree_sitter/binding/language.c:243:20: note: (near initialization for ‘language_methods[4]’) tree_sitter/binding/language.c:244:9: error: field name not in record or union initializer 244 | .ml_meth = (PyCFunction)language_field_name_for_id, | ^ tree_sitter/binding/language.c:244:9: note: (near initialization for ‘language_methods[4]’) tree_sitter/binding/language.c:244:20: warning: excess elements in scalar initializer 244 | .ml_meth = (PyCFunction)language_field_name_for_id, | ^ tree_sitter/binding/language.c:244:20: note: (near initialization for ‘language_methods[4]’) tree_sitter/binding/language.c:244:33: error: expected ‘}’ before ‘language_field_name_for_id’ 244 | .ml_meth = (PyCFunction)language_field_name_for_id, | ^~~~~~~~~~~~~~~~~~~~~~~~~~ tree_sitter/binding/language.c:242:5: note: to match this ‘{’ 242 | { | ^ tree_sitter/binding/language.c:248:5: warning: braces around scalar initializer 248 | { | ^ tree_sitter/binding/language.c:248:5: note: (near initialization for ‘language_methods[5]’) tree_sitter/binding/language.c:249:9: error: field name not in record or union initializer 249 | .ml_name = "field_id_for_name", | ^ tree_sitter/binding/language.c:249:9: note: (near initialization for ‘language_methods[5]’) tree_sitter/binding/language.c:249:20: error: initialization of ‘int’ from ‘char *’ makes integer from pointer without a cast [-Wint-conversion] 249 | .ml_name = "field_id_for_name", | ^~~~~~~~~~~~~~~~~~~ tree_sitter/binding/language.c:249:20: note: (near initialization for ‘language_methods[5]’) tree_sitter/binding/language.c:249:20: error: initializer element is not computable at load time tree_sitter/binding/language.c:249:20: note: (near initialization for ‘language_methods[5]’) tree_sitter/binding/language.c:250:9: error: field name not in record or union initializer 250 | .ml_meth = (PyCFunction)language_field_id_for_name, | ^ tree_sitter/binding/language.c:250:9: note: (near initialization for ‘language_methods[5]’) tree_sitter/binding/language.c:250:20: warning: excess elements in scalar initializer 250 | .ml_meth = (PyCFunction)language_field_id_for_name, | ^ tree_sitter/binding/language.c:250:20: note: (near initialization for ‘language_methods[5]’) tree_sitter/binding/language.c:250:33: error: expected ‘}’ before ‘language_field_id_for_name’ 250 | .ml_meth = (PyCFunction)language_field_id_for_name, | ^~~~~~~~~~~~~~~~~~~~~~~~~~ tree_sitter/binding/language.c:248:5: note: to match this ‘{’ 248 | { | ^ tree_sitter/binding/language.c:254:5: warning: braces around scalar initializer 254 | { | ^ tree_sitter/binding/language.c:254:5: note: (near initialization for ‘language_methods[6]’) tree_sitter/binding/language.c:255:9: error: field name not in record or union initializer 255 | .ml_name = "next_state", | ^ tree_sitter/binding/language.c:255:9: note: (near initialization for ‘language_methods[6]’) tree_sitter/binding/language.c:255:20: error: initialization of ‘int’ from ‘char *’ makes integer from pointer without a cast [-Wint-conversion] 255 | .ml_name = "next_state", | ^~~~~~~~~~~~ tree_sitter/binding/language.c:255:20: note: (near initialization for ‘language_methods[6]’) tree_sitter/binding/language.c:255:20: error: initializer element is not computable at load time tree_sitter/binding/language.c:255:20: note: (near initialization for ‘language_methods[6]’) tree_sitter/binding/language.c:256:9: error: field name not in record or union initializer 256 | .ml_meth = (PyCFunction)language_next_state, | ^ tree_sitter/binding/language.c:256:9: note: (near initialization for ‘language_methods[6]’) tree_sitter/binding/language.c:256:20: warning: excess elements in scalar initializer 256 | .ml_meth = (PyCFunction)language_next_state, | ^ tree_sitter/binding/language.c:256:20: note: (near initialization for ‘language_methods[6]’) tree_sitter/binding/language.c:256:33: error: expected ‘}’ before ‘language_next_state’ 256 | .ml_meth = (PyCFunction)language_next_state, | ^~~~~~~~~~~~~~~~~~~ tree_sitter/binding/language.c:254:5: note: to match this ‘{’ 254 | { | ^ tree_sitter/binding/language.c:260:5: warning: braces around scalar initializer 260 | { | ^ tree_sitter/binding/language.c:260:5: note: (near initialization for ‘language_methods[7]’) tree_sitter/binding/language.c:261:9: error: field name not in record or union initializer 261 | .ml_name = "lookahead_iterator", | ^ tree_sitter/binding/language.c:261:9: note: (near initialization for ‘language_methods[7]’) tree_sitter/binding/language.c:261:20: error: initialization of ‘int’ from ‘char *’ makes integer from pointer without a cast [-Wint-conversion] 261 | .ml_name = "lookahead_iterator", | ^~~~~~~~~~~~~~~~~~~~ tree_sitter/binding/language.c:261:20: note: (near initialization for ‘language_methods[7]’) tree_sitter/binding/language.c:261:20: error: initializer element is not computable at load time tree_sitter/binding/language.c:261:20: note: (near initialization for ‘language_methods[7]’) tree_sitter/binding/language.c:262:9: error: field name not in record or union initializer 262 | .ml_meth = (PyCFunction)language_lookahead_iterator, | ^ tree_sitter/binding/language.c:262:9: note: (near initialization for ‘language_methods[7]’) tree_sitter/binding/language.c:262:20: warning: excess elements in scalar initializer 262 | .ml_meth = (PyCFunction)language_lookahead_iterator, | ^ tree_sitter/binding/language.c:262:20: note: (near initialization for ‘language_methods[7]’) tree_sitter/binding/language.c:262:33: error: expected ‘}’ before ‘language_lookahead_iterator’ 262 | .ml_meth = (PyCFunction)language_lookahead_iterator, | ^~~~~~~~~~~~~~~~~~~~~~~~~~~ tree_sitter/binding/language.c:260:5: note: to match this ‘{’ 260 | { | ^ tree_sitter/binding/language.c:266:5: warning: braces around scalar initializer 266 | { | ^ tree_sitter/binding/language.c:266:5: note: (near initialization for ‘language_methods[8]’) tree_sitter/binding/language.c:267:9: error: field name not in record or union initializer 267 | .ml_name = "query", | ^ tree_sitter/binding/language.c:267:9: note: (near initialization for ‘language_methods[8]’) tree_sitter/binding/language.c:267:20: error: initialization of ‘int’ from ‘char *’ makes integer from pointer without a cast [-Wint-conversion] 267 | .ml_name = "query", | ^~~~~~~ tree_sitter/binding/language.c:267:20: note: (near initialization for ‘language_methods[8]’) tree_sitter/binding/language.c:267:20: error: initializer element is not computable at load time tree_sitter/binding/language.c:267:20: note: (near initialization for ‘language_methods[8]’) tree_sitter/binding/language.c:268:9: error: field name not in record or union initializer 268 | .ml_meth = (PyCFunction)language_query, | ^ tree_sitter/binding/language.c:268:9: note: (near initialization for ‘language_methods[8]’) tree_sitter/binding/language.c:268:20: warning: excess elements in scalar initializer 268 | .ml_meth = (PyCFunction)language_query, | ^ tree_sitter/binding/language.c:268:20: note: (near initialization for ‘language_methods[8]’) tree_sitter/binding/language.c:268:33: error: expected ‘}’ before ‘language_query’ 268 | .ml_meth = (PyCFunction)language_query, | ^~~~~~~~~~~~~~ tree_sitter/binding/language.c:266:5: note: to match this ‘{’ 266 | { | ^ tree_sitter/binding/language.c:272:5: warning: braces around scalar initializer 272 | {NULL}, | ^ tree_sitter/binding/language.c:272:5: note: (near initialization for ‘language_methods[9]’) tree_sitter/binding/language.c:272:6: error: initialization of ‘int’ from ‘void *’ makes integer from pointer without a cast [-Wint-conversion] 272 | {NULL}, | ^~~~ tree_sitter/binding/language.c:272:6: note: (near initialization for ‘language_methods[9]’) tree_sitter/binding/language.c:275:8: error: unknown type name ‘PyGetSetDef’ 275 | static PyGetSetDef language_accessors[] = { | ^~~~~~~~~~~ tree_sitter/binding/language.c:279:5: warning: braces around scalar initializer 279 | {"version", (getter)language_get_version, NULL, | ^ tree_sitter/binding/language.c:279:5: note: (near initialization for ‘language_accessors[0]’) tree_sitter/binding/language.c:279:6: error: initialization of ‘int’ from ‘char *’ makes integer from pointer without a cast [-Wint-conversion] 279 | {"version", (getter)language_get_version, NULL, | ^~~~~~~~~ tree_sitter/binding/language.c:279:6: note: (near initialization for ‘language_accessors[0]’) tree_sitter/binding/language.c:279:6: error: initializer element is not computable at load time tree_sitter/binding/language.c:279:6: note: (near initialization for ‘language_accessors[0]’) tree_sitter/binding/language.c:279:18: error: ‘getter’ undeclared here (not in a function) 279 | {"version", (getter)language_get_version, NULL, | ^~~~~~ tree_sitter/binding/language.c:279:17: warning: excess elements in scalar initializer 279 | {"version", (getter)language_get_version, NULL, | ^ tree_sitter/binding/language.c:279:17: note: (near initialization for ‘language_accessors[0]’) tree_sitter/binding/language.c:279:25: error: expected ‘}’ before ‘language_get_version’ 279 | {"version", (getter)language_get_version, NULL, | ~ ^~~~~~~~~~~~~~~~~~~~ tree_sitter/binding/language.c:283:5: warning: braces around scalar initializer 283 | {"node_kind_count", (getter)language_get_node_kind_count, NULL, | ^ tree_sitter/binding/language.c:283:5: note: (near initialization for ‘language_accessors[1]’) tree_sitter/binding/language.c:283:6: error: initialization of ‘int’ from ‘char *’ makes integer from pointer without a cast [-Wint-conversion] 283 | {"node_kind_count", (getter)language_get_node_kind_count, NULL, | ^~~~~~~~~~~~~~~~~ tree_sitter/binding/language.c:283:6: note: (near initialization for ‘language_accessors[1]’) tree_sitter/binding/language.c:283:6: error: initializer element is not computable at load time tree_sitter/binding/language.c:283:6: note: (near initialization for ‘language_accessors[1]’) tree_sitter/binding/language.c:283:25: warning: excess elements in scalar initializer 283 | {"node_kind_count", (getter)language_get_node_kind_count, NULL, | ^ tree_sitter/binding/language.c:283:25: note: (near initialization for ‘language_accessors[1]’) tree_sitter/binding/language.c:283:33: error: expected ‘}’ before ‘language_get_node_kind_count’ 283 | {"node_kind_count", (getter)language_get_node_kind_count, NULL, | ~ ^~~~~~~~~~~~~~~~~~~~~~~~~~~~ tree_sitter/binding/language.c:285:5: warning: braces around scalar initializer 285 | {"parse_state_count", (getter)language_get_parse_state_count, NULL, | ^ tree_sitter/binding/language.c:285:5: note: (near initialization for ‘language_accessors[2]’) tree_sitter/binding/language.c:285:6: error: initialization of ‘int’ from ‘char *’ makes integer from pointer without a cast [-Wint-conversion] 285 | {"parse_state_count", (getter)language_get_parse_state_count, NULL, | ^~~~~~~~~~~~~~~~~~~ tree_sitter/binding/language.c:285:6: note: (near initialization for ‘language_accessors[2]’) tree_sitter/binding/language.c:285:6: error: initializer element is not computable at load time tree_sitter/binding/language.c:285:6: note: (near initialization for ‘language_accessors[2]’) tree_sitter/binding/language.c:285:27: warning: excess elements in scalar initializer 285 | {"parse_state_count", (getter)language_get_parse_state_count, NULL, | ^ tree_sitter/binding/language.c:285:27: note: (near initialization for ‘language_accessors[2]’) tree_sitter/binding/language.c:285:35: error: expected ‘}’ before ‘language_get_parse_state_count’ 285 | {"parse_state_count", (getter)language_get_parse_state_count, NULL, | ~ ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ tree_sitter/binding/language.c:287:5: warning: braces around scalar initializer 287 | {"field_count", (getter)language_get_field_count, NULL, | ^ tree_sitter/binding/language.c:287:5: note: (near initialization for ‘language_accessors[3]’) tree_sitter/binding/language.c:287:6: error: initialization of ‘int’ from ‘char *’ makes integer from pointer without a cast [-Wint-conversion] 287 | {"field_count", (getter)language_get_field_count, NULL, | ^~~~~~~~~~~~~ tree_sitter/binding/language.c:287:6: note: (near initialization for ‘language_accessors[3]’) tree_sitter/binding/language.c:287:6: error: initializer element is not computable at load time tree_sitter/binding/language.c:287:6: note: (near initialization for ‘language_accessors[3]’) tree_sitter/binding/language.c:287:21: warning: excess elements in scalar initializer 287 | {"field_count", (getter)language_get_field_count, NULL, | ^ tree_sitter/binding/language.c:287:21: note: (near initialization for ‘language_accessors[3]’) tree_sitter/binding/language.c:287:29: error: expected ‘}’ before ‘language_get_field_count’ 287 | {"field_count", (getter)language_get_field_count, NULL, | ~ ^~~~~~~~~~~~~~~~~~~~~~~~ tree_sitter/binding/language.c:289:5: warning: braces around scalar initializer 289 | {NULL}, | ^ tree_sitter/binding/language.c:289:5: note: (near initialization for ‘language_accessors[4]’) tree_sitter/binding/language.c:289:6: error: initialization of ‘int’ from ‘void *’ makes integer from pointer without a cast [-Wint-conversion] 289 | {NULL}, | ^~~~ tree_sitter/binding/language.c:289:6: note: (near initialization for ‘language_accessors[4]’) tree_sitter/binding/language.c:292:8: error: unknown type name ‘PyType_Slot’ 292 | static PyType_Slot language_type_slots[] = { | ^~~~~~~~~~~ tree_sitter/binding/language.c:293:5: warning: braces around scalar initializer 293 | {Py_tp_doc, PyDoc_STR("A class that defines how to parse a particular language.")}, | ^ tree_sitter/binding/language.c:293:5: note: (near initialization for ‘language_type_slots[0]’) tree_sitter/binding/language.c:293:6: error: ‘Py_tp_doc’ undeclared here (not in a function) 293 | {Py_tp_doc, PyDoc_STR("A class that defines how to parse a particular language.")}, | ^~~~~~~~~ tree_sitter/binding/language.c:293:17: error: implicit declaration of function ‘PyDoc_STR’ [-Wimplicit-function-declaration] 293 | {Py_tp_doc, PyDoc_STR("A class that defines how to parse a particular language.")}, | ^~~~~~~~~ tree_sitter/binding/language.c:293:17: warning: excess elements in scalar initializer tree_sitter/binding/language.c:293:17: note: (near initialization for ‘language_type_slots[0]’) tree_sitter/binding/language.c:294:5: warning: braces around scalar initializer 294 | {Py_tp_init, language_init}, | ^ tree_sitter/binding/language.c:294:5: note: (near initialization for ‘language_type_slots[1]’) tree_sitter/binding/language.c:294:6: error: ‘Py_tp_init’ undeclared here (not in a function) 294 | {Py_tp_init, language_init}, | ^~~~~~~~~~ tree_sitter/binding/language.c:294:18: error: ‘language_init’ undeclared here (not in a function) 294 | {Py_tp_init, language_init}, | ^~~~~~~~~~~~~ tree_sitter/binding/language.c:294:18: warning: excess elements in scalar initializer tree_sitter/binding/language.c:294:18: note: (near initialization for ‘language_type_slots[1]’) tree_sitter/binding/language.c:295:5: warning: braces around scalar initializer 295 | {Py_tp_repr, language_repr}, | ^ tree_sitter/binding/language.c:295:5: note: (near initialization for ‘language_type_slots[2]’) tree_sitter/binding/language.c:295:6: error: ‘Py_tp_repr’ undeclared here (not in a function) 295 | {Py_tp_repr, language_repr}, | ^~~~~~~~~~ tree_sitter/binding/language.c:295:18: error: ‘language_repr’ undeclared here (not in a function); did you mean ‘language_methods’? 295 | {Py_tp_repr, language_repr}, | ^~~~~~~~~~~~~ | language_methods tree_sitter/binding/language.c:295:18: warning: excess elements in scalar initializer tree_sitter/binding/language.c:295:18: note: (near initialization for ‘language_type_slots[2]’) tree_sitter/binding/language.c:296:5: warning: braces around scalar initializer 296 | {Py_tp_hash, language_hash}, | ^ tree_sitter/binding/language.c:296:5: note: (near initialization for ‘language_type_slots[3]’) tree_sitter/binding/language.c:296:6: error: ‘Py_tp_hash’ undeclared here (not in a function) 296 | {Py_tp_hash, language_hash}, | ^~~~~~~~~~ tree_sitter/binding/language.c:296:18: error: ‘language_hash’ undeclared here (not in a function); did you mean ‘language_methods’? 296 | {Py_tp_hash, language_hash}, | ^~~~~~~~~~~~~ | language_methods tree_sitter/binding/language.c:296:18: warning: excess elements in scalar initializer tree_sitter/binding/language.c:296:18: note: (near initialization for ‘language_type_slots[3]’) tree_sitter/binding/language.c:297:5: warning: braces around scalar initializer 297 | {Py_tp_richcompare, language_compare}, | ^ tree_sitter/binding/language.c:297:5: note: (near initialization for ‘language_type_slots[4]’) tree_sitter/binding/language.c:297:6: error: ‘Py_tp_richcompare’ undeclared here (not in a function) 297 | {Py_tp_richcompare, language_compare}, | ^~~~~~~~~~~~~~~~~ tree_sitter/binding/language.c:297:25: error: ‘language_compare’ undeclared here (not in a function) 297 | {Py_tp_richcompare, language_compare}, | ^~~~~~~~~~~~~~~~ tree_sitter/binding/language.c:297:25: warning: excess elements in scalar initializer tree_sitter/binding/language.c:297:25: note: (near initialization for ‘language_type_slots[4]’) tree_sitter/binding/language.c:298:5: warning: braces around scalar initializer 298 | {Py_tp_dealloc, language_dealloc}, | ^ tree_sitter/binding/language.c:298:5: note: (near initialization for ‘language_type_slots[5]’) tree_sitter/binding/language.c:298:6: error: ‘Py_tp_dealloc’ undeclared here (not in a function); did you mean ‘ts_realloc’? 298 | {Py_tp_dealloc, language_dealloc}, | ^~~~~~~~~~~~~ | ts_realloc tree_sitter/binding/language.c:298:21: error: ‘language_dealloc’ undeclared here (not in a function) 298 | {Py_tp_dealloc, language_dealloc}, | ^~~~~~~~~~~~~~~~ tree_sitter/binding/language.c:298:21: warning: excess elements in scalar initializer tree_sitter/binding/language.c:298:21: note: (near initialization for ‘language_type_slots[5]’) tree_sitter/binding/language.c:299:5: warning: braces around scalar initializer 299 | {Py_tp_methods, language_methods}, | ^ tree_sitter/binding/language.c:299:5: note: (near initialization for ‘language_type_slots[6]’) tree_sitter/binding/language.c:299:6: error: ‘Py_tp_methods’ undeclared here (not in a function) 299 | {Py_tp_methods, language_methods}, | ^~~~~~~~~~~~~ tree_sitter/binding/language.c:299:21: warning: excess elements in scalar initializer 299 | {Py_tp_methods, language_methods}, | ^~~~~~~~~~~~~~~~ tree_sitter/binding/language.c:299:21: note: (near initialization for ‘language_type_slots[6]’) tree_sitter/binding/language.c:300:5: warning: braces around scalar initializer 300 | {Py_tp_getset, language_accessors}, | ^ tree_sitter/binding/language.c:300:5: note: (near initialization for ‘language_type_slots[7]’) tree_sitter/binding/language.c:300:6: error: ‘Py_tp_getset’ undeclared here (not in a function) 300 | {Py_tp_getset, language_accessors}, | ^~~~~~~~~~~~ tree_sitter/binding/language.c:300:20: warning: excess elements in scalar initializer 300 | {Py_tp_getset, language_accessors}, | ^~~~~~~~~~~~~~~~~~ tree_sitter/binding/language.c:300:20: note: (near initialization for ‘language_type_slots[7]’) tree_sitter/binding/language.c:301:5: warning: braces around scalar initializer 301 | {0, NULL}, | ^ tree_sitter/binding/language.c:301:5: note: (near initialization for ‘language_type_slots[8]’) tree_sitter/binding/language.c:301:9: warning: excess elements in scalar initializer 301 | {0, NULL}, | ^~~~ tree_sitter/binding/language.c:301:9: note: (near initialization for ‘language_type_slots[8]’) tree_sitter/binding/language.c:304:1: error: unknown type name ‘PyType_Spec’ 304 | PyType_Spec language_type_spec = { | ^~~~~~~~~~~ tree_sitter/binding/language.c:305:5: error: field name not in record or union initializer 305 | .name = "tree_sitter.Language", | ^ tree_sitter/binding/language.c:305:5: note: (near initialization for ‘language_type_spec’) tree_sitter/binding/language.c:305:13: error: initialization of ‘int’ from ‘char *’ makes integer from pointer without a cast [-Wint-conversion] 305 | .name = "tree_sitter.Language", | ^~~~~~~~~~~~~~~~~~~~~~ tree_sitter/binding/language.c:305:13: note: (near initialization for ‘language_type_spec’) tree_sitter/binding/language.c:305:13: error: initializer element is not computable at load time tree_sitter/binding/language.c:305:13: note: (near initialization for ‘language_type_spec’) tree_sitter/binding/language.c:306:5: error: field name not in record or union initializer 306 | .basicsize = sizeof(Language), | ^ tree_sitter/binding/language.c:306:5: note: (near initialization for ‘language_type_spec’) tree_sitter/binding/language.c:306:25: error: ‘Language’ undeclared here (not in a function); did you mean ‘TSLanguage’? 306 | .basicsize = sizeof(Language), | ^~~~~~~~ | TSLanguage tree_sitter/binding/language.c:306:18: warning: excess elements in scalar initializer 306 | .basicsize = sizeof(Language), | ^~~~~~ tree_sitter/binding/language.c:306:18: note: (near initialization for ‘language_type_spec’) tree_sitter/binding/language.c:307:5: error: field name not in record or union initializer 307 | .itemsize = 0, | ^ tree_sitter/binding/language.c:307:5: note: (near initialization for ‘language_type_spec’) tree_sitter/binding/language.c:307:17: warning: excess elements in scalar initializer 307 | .itemsize = 0, | ^ tree_sitter/binding/language.c:307:17: note: (near initialization for ‘language_type_spec’) tree_sitter/binding/language.c:308:5: error: field name not in record or union initializer 308 | .flags = Py_TPFLAGS_DEFAULT, | ^ tree_sitter/binding/language.c:308:5: note: (near initialization for ‘language_type_spec’) tree_sitter/binding/language.c:308:14: error: ‘Py_TPFLAGS_DEFAULT’ undeclared here (not in a function) 308 | .flags = Py_TPFLAGS_DEFAULT, | ^~~~~~~~~~~~~~~~~~ tree_sitter/binding/language.c:308:14: warning: excess elements in scalar initializer tree_sitter/binding/language.c:308:14: note: (near initialization for ‘language_type_spec’) tree_sitter/binding/language.c:309:5: error: field name not in record or union initializer 309 | .slots = language_type_slots, | ^ tree_sitter/binding/language.c:309:5: note: (near initialization for ‘language_type_spec’) tree_sitter/binding/language.c:309:14: warning: excess elements in scalar initializer 309 | .slots = language_type_slots, | ^~~~~~~~~~~~~~~~~~~ tree_sitter/binding/language.c:309:14: note: (near initialization for ‘language_type_spec’) error: command '/usr/bin/gcc' failed with exit code 1 [end of output] note: This error originates from a subprocess, and is likely not a problem with pip. ERROR: Failed building wheel for tree-sitter Failed to build tree-sitter ERROR: Could not build wheels for tree-sitter, which is required to install pyproject.toml-based projects ```

0.21.3 builds just fine. I also tried to run python -m build . in the repo with the same outcome.

ObserverOfTime commented 4 months ago

The sdist was missing the header files. Fixed in 0.22.2.