feat: enable go & python bindings

This commit is contained in:
ObserverOfTime
2025-05-16 19:20:03 +03:00
parent 28e327cd3f
commit dffd961034
12 changed files with 231 additions and 9 deletions

12
bindings/python/tests/test_binding.py generated Normal file
View File

@@ -0,0 +1,12 @@
from unittest import TestCase
import tree_sitter
import tree_sitter_hcl
class TestLanguage(TestCase):
def test_can_load_grammar(self):
try:
tree_sitter.Language(tree_sitter_hcl.language())
except Exception:
self.fail("Error loading HCL grammar")

View File

@@ -0,0 +1,5 @@
"""HCL and terraform grammar for tree-sitter"""
from ._binding import language
__all__ = ["language"]

View File

@@ -0,0 +1 @@
def language() -> object: ...

View File

@@ -0,0 +1,35 @@
#include <Python.h>
typedef struct TSLanguage TSLanguage;
TSLanguage *tree_sitter_hcl(void);
static PyObject* _binding_language(PyObject *Py_UNUSED(self), PyObject *Py_UNUSED(args)) {
return PyCapsule_New(tree_sitter_hcl(), "tree_sitter.Language", NULL);
}
static struct PyModuleDef_Slot slots[] = {
#ifdef Py_GIL_DISABLED
{Py_mod_gil, Py_MOD_GIL_NOT_USED},
#endif
{0, NULL}
};
static PyMethodDef methods[] = {
{"language", _binding_language, METH_NOARGS,
"Get the tree-sitter language for this grammar."},
{NULL, NULL, 0, NULL}
};
static struct PyModuleDef module = {
.m_base = PyModuleDef_HEAD_INIT,
.m_name = "_binding",
.m_doc = NULL,
.m_size = 0,
.m_methods = methods,
.m_slots = slots,
};
PyMODINIT_FUNC PyInit__binding(void) {
return PyModuleDef_Init(&module);
}

View File