| from os import path |
| from sysconfig import get_config_var |
| |
| from setuptools import Extension, find_packages, setup |
| from setuptools.command.build import build |
| from setuptools.command.build_ext import build_ext |
| from setuptools.command.egg_info import egg_info |
| from wheel.bdist_wheel import bdist_wheel |
| |
| |
| class Build(build): |
| def run(self): |
| if path.isdir("queries"): |
| dest = path.join(self.build_lib, "tree_sitter_devicetree", "queries") |
| self.copy_tree("queries", dest) |
| super().run() |
| |
| |
| class BuildExt(build_ext): |
| def build_extension(self, ext: Extension): |
| if self.compiler.compiler_type != "msvc": |
| ext.extra_compile_args = ["-std=c11", "-fvisibility=hidden"] |
| else: |
| ext.extra_compile_args = ["/std:c11", "/utf-8"] |
| if path.exists("src/scanner.c"): |
| ext.sources.append("src/scanner.c") |
| if ext.py_limited_api: |
| ext.define_macros.append(("Py_LIMITED_API", "0x030A0000")) |
| super().build_extension(ext) |
| |
| |
| class BdistWheel(bdist_wheel): |
| def get_tag(self): |
| python, abi, platform = super().get_tag() |
| if python.startswith("cp"): |
| python, abi = "cp310", "abi3" |
| return python, abi, platform |
| |
| |
| class EggInfo(egg_info): |
| def find_sources(self): |
| super().find_sources() |
| self.filelist.recursive_include("queries", "*.scm") |
| self.filelist.include("src/tree_sitter/*.h") |
| |
| |
| setup( |
| packages=find_packages("bindings/python"), |
| package_dir={"": "bindings/python"}, |
| package_data={ |
| "tree_sitter_devicetree": ["*.pyi", "py.typed"], |
| "tree_sitter_devicetree.queries": ["*.scm"], |
| }, |
| ext_package="tree_sitter_devicetree", |
| ext_modules=[ |
| Extension( |
| name="_binding", |
| sources=[ |
| "bindings/python/tree_sitter_devicetree/binding.c", |
| "src/parser.c", |
| ], |
| define_macros=[ |
| ("PY_SSIZE_T_CLEAN", None), |
| ("TREE_SITTER_HIDE_SYMBOLS", None), |
| ], |
| include_dirs=["src"], |
| py_limited_api=not get_config_var("Py_GIL_DISABLED"), |
| ) |
| ], |
| cmdclass={ |
| "build": Build, |
| "build_ext": BuildExt, |
| "bdist_wheel": BdistWheel, |
| "egg_info": EggInfo, |
| }, |
| zip_safe=False |
| ) |