https://github.com/nightlark updated 
https://github.com/llvm/llvm-project/pull/125806

>From 6bb389392615b27c167a718b275bd497c1201f9c Mon Sep 17 00:00:00 2001
From: Ryan Mast <[email protected]>
Date: Tue, 4 Feb 2025 21:59:28 -0800
Subject: [PATCH] [libclang/python] Enable packaging clang python bindings

This adds a pyproject.toml file for creating sdist and wheel packages for the 
clang python bindings. It is required to move updates of the clang and libclang 
PyPI packages to the LLVM monorepo. Versioning information is derived from LLVM 
git tags, so no manual updates are needed to bump version numbers. The minimum 
python version required is set to 3.10 due to cindex.py using PEP 604 union 
type syntax (str | bytes | None).

Signed-off-by: Ryan Mast <[email protected]>
---
 .gitattributes                          |  2 ++
 clang/bindings/python/.git_archival.txt |  3 ++
 clang/bindings/python/.gitignore        | 21 ++++++++++++
 clang/bindings/python/pyproject.toml    | 43 +++++++++++++++++++++++++
 4 files changed, 69 insertions(+)
 create mode 100644 clang/bindings/python/.git_archival.txt
 create mode 100644 clang/bindings/python/.gitignore
 create mode 100644 clang/bindings/python/pyproject.toml

diff --git a/.gitattributes b/.gitattributes
index 6b281f33f737d..142d6689f1088 100644
--- a/.gitattributes
+++ b/.gitattributes
@@ -1,3 +1,5 @@
+clang/bindings/python/.git_archival.txt  export-subst
+
 libcxx/src/**/*.cpp     merge=libcxx-reformat
 libcxx/include/**/*.h   merge=libcxx-reformat
 
diff --git a/clang/bindings/python/.git_archival.txt 
b/clang/bindings/python/.git_archival.txt
new file mode 100644
index 0000000000000..7876d4af4c620
--- /dev/null
+++ b/clang/bindings/python/.git_archival.txt
@@ -0,0 +1,3 @@
+node: $Format:%H$
+node-date: $Format:%cI$
+describe-name: $Format:%(describe:tags=true,match=llvmorg-*[0-9]*)$
diff --git a/clang/bindings/python/.gitignore b/clang/bindings/python/.gitignore
new file mode 100644
index 0000000000000..1641a745fb682
--- /dev/null
+++ b/clang/bindings/python/.gitignore
@@ -0,0 +1,21 @@
+# setuptools_scm auto-generated version file
+_version.py
+
+# Byte-compiled / optimized / DLL files
+__pycache__/
+*.py[cod]
+*$py.class
+
+# Distribution / packaging
+build/
+dist/
+*.egg-info/
+
+# Environments
+.env
+.venv
+env/
+venv/
+ENV/
+env.bak/
+venv.bak/
diff --git a/clang/bindings/python/pyproject.toml 
b/clang/bindings/python/pyproject.toml
new file mode 100644
index 0000000000000..69fd628e8222a
--- /dev/null
+++ b/clang/bindings/python/pyproject.toml
@@ -0,0 +1,43 @@
+[build-system]
+requires = ["hatchling>=1.27", "hatch-vcs>=0.4"]
+build-backend = "hatchling.build"
+
+[project]
+name = "clang"
+description = "clang python bindings"
+readme = {file = "README.txt", content-type = "text/plain"}
+
+license = "Apache-2.0 WITH LLVM-exception"
+authors = [
+    { name = "LLVM" }
+]
+keywords = ["llvm", "clang", "libclang"]
+classifiers = [
+    "Intended Audience :: Developers",
+    "Development Status :: 5 - Production/Stable",
+    "Topic :: Software Development :: Compilers",
+    "Operating System :: OS Independent",
+    "Programming Language :: Python :: 3",
+]
+requires-python = ">=3.10"
+dynamic = ["version"]
+
+[project.urls]
+Homepage = "https://clang.llvm.org/";
+Download = "https://llvm.org/releases/download.html";
+Discussions = "https://discourse.llvm.org/";
+"Issue Tracker" = "https://github.com/llvm/llvm-project/issues";
+"Source Code" = 
"https://github.com/llvm/llvm-project/tree/main/clang/bindings/python";
+
+[tool.hatch.version]
+source = "vcs"
+version-scheme = "no-guess-dev"
+# regex version capture group gets x.y.z with optional -rcN, -aN, -bN 
suffixes; -init is just consumed
+tag-pattern = "^llvmorg-(?P<version>\\d+(?:\\.\\d+)*(?:-rc\\d+)?)"
+
+[tool.hatch.build.hooks.vcs]
+version-file = "clang/_version.py"
+
+[tool.hatch.version.raw-options]
+search_parent_directories = true
+version_scheme = "no-guess-dev"

_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to