aboutsummaryrefslogtreecommitdiff
path: root/setup.py
diff options
context:
space:
mode:
Diffstat (limited to 'setup.py')
-rw-r--r--setup.py60
1 files changed, 60 insertions, 0 deletions
diff --git a/setup.py b/setup.py
new file mode 100644
index 0000000..f639ffc
--- /dev/null
+++ b/setup.py
@@ -0,0 +1,60 @@
+from os.path import isdir, join
+from platform import system
+
+from setuptools import Extension, find_packages, setup
+from setuptools.command.build import build
+from wheel.bdist_wheel import bdist_wheel
+
+
+class Build(build):
+ def run(self):
+ if isdir("queries"):
+ dest = join(self.build_lib, "tree_sitter_gsp", "queries")
+ self.copy_tree("queries", dest)
+ super().run()
+
+
+class BdistWheel(bdist_wheel):
+ def get_tag(self):
+ python, abi, platform = super().get_tag()
+ if python.startswith("cp"):
+ python, abi = "cp38", "abi3"
+ return python, abi, platform
+
+
+setup(
+ packages=find_packages("bindings/python"),
+ package_dir={"": "bindings/python"},
+ package_data={
+ "tree_sitter_gsp": ["*.pyi", "py.typed"],
+ "tree_sitter_gsp.queries": ["*.scm"],
+ },
+ ext_package="tree_sitter_gsp",
+ ext_modules=[
+ Extension(
+ name="_binding",
+ sources=[
+ "bindings/python/tree_sitter_gsp/binding.c",
+ "src/parser.c",
+ # NOTE: if your language uses an external scanner, add it here.
+ ],
+ extra_compile_args=[
+ "-std=c11",
+ ] if system() != "Windows" else [
+ "/std:c11",
+ "/utf-8",
+ ],
+ define_macros=[
+ ("Py_LIMITED_API", "0x03080000"),
+ ("PY_SSIZE_T_CLEAN", None)
+ ],
+ include_dirs=["src"],
+ py_limited_api=True,
+ )
+ ],
+ cmdclass={
+ "build": Build,
+ "bdist_wheel": BdistWheel
+ },
+ zip_safe=False
+)