From 080e15b2de85149750854c4a83d272c52b21dc31 Mon Sep 17 00:00:00 2001 From: Elijah Shaw-Rutschman Date: Wed, 28 Oct 2026 17:55:14 -0500 Subject: [PATCH 1/3] build: pin headerkit dependency to ==0.46.2 --- CHANGELOG.md | 3 +++ pyproject.toml | 4 ++-- uv.lock | 6 +++--- 3 files changed, 8 insertions(+), 5 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 5a83bb1..618c13c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] +### Changed +- Pinned `headerkit` and `headerkit[treesitter]` dependencies to `==0.46.2` in `pyproject.toml` and `uv.lock` so upstream `headerkit` releases cannot break `python-autopxd2` installations or Cython `.pxd` macro heuristics. + ## [4.0.2] - 2026-10-21 ### Changed diff --git a/pyproject.toml b/pyproject.toml index 35b436f..e3626ec 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -31,14 +31,14 @@ classifiers = [ requires-python = ">=3.11" dependencies = [ "Click", - "headerkit>=0.46.2,<1.0.0", + "headerkit==0.46.2", ] [project.optional-dependencies] # libclang backend (C++ support) - headerkit vendors clang bindings, kept for backwards compatibility libclang = [] # tree-sitter backend - headerkit owns the tree-sitter dependency set -treesitter = ["headerkit[treesitter]>=0.46.2,<1.0.0"] +treesitter = ["headerkit[treesitter]==0.46.2"] # Testing # tree-sitter is included so the default dev install exercises both backends diff --git a/uv.lock b/uv.lock index 0b88676..c0249c7 100644 --- a/uv.lock +++ b/uv.lock @@ -72,7 +72,7 @@ wheels = [ [[package]] name = "autopxd2" -version = "4.0.1" +version = "4.0.2" source = { editable = "." } dependencies = [ { name = "click" }, @@ -120,8 +120,8 @@ requires-dist = [ { name = "autopxd2", extras = ["treesitter"], marker = "extra == 'test'" }, { name = "click" }, { name = "cython", marker = "extra == 'test'" }, - { name = "headerkit", specifier = ">=0.46.2,<1.0.0" }, - { name = "headerkit", extras = ["treesitter"], marker = "extra == 'treesitter'", specifier = ">=0.46.2,<1.0.0" }, + { name = "headerkit", specifier = "==0.46.2" }, + { name = "headerkit", extras = ["treesitter"], marker = "extra == 'treesitter'", specifier = "==0.46.2" }, { name = "mike", marker = "extra == 'docs'", specifier = ">=2.0" }, { name = "mkdocs", marker = "extra == 'docs'", specifier = ">=1.5" }, { name = "mkdocs-material", marker = "extra == 'docs'", specifier = ">=9.0" }, From 83178c988660b4af9d4ed61d1bc5d7c5c856d9c4 Mon Sep 17 00:00:00 2001 From: Elijah Shaw-Rutschman Date: Wed, 28 Oct 2026 19:38:15 -0500 Subject: [PATCH 2/3] build: update headerkit pin to ==0.48.1 and refresh macro-function pxd snapshots --- CHANGELOG.md | 2 +- pyproject.toml | 4 +- .../realistic_headers/json_lib.expected.pxd | 2 +- test/real_headers/jansson.expected.pxd | 44 +++++++++---------- test/real_headers/zlib.expected.pxd | 14 +++--- uv.lock | 10 ++--- 6 files changed, 38 insertions(+), 38 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 618c13c..0579b02 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,7 +8,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] ### Changed -- Pinned `headerkit` and `headerkit[treesitter]` dependencies to `==0.46.2` in `pyproject.toml` and `uv.lock` so upstream `headerkit` releases cannot break `python-autopxd2` installations or Cython `.pxd` macro heuristics. +- Pinned `headerkit` and `headerkit[treesitter]` dependencies to `==0.48.1` in `pyproject.toml` and `uv.lock`, and updated Cython macro-function comment snapshot fixtures (`zlib.expected.pxd`, `jansson.expected.pxd`, `json_lib.expected.pxd`) to match `headerkit` 0.48.1 output. ## [4.0.2] - 2026-10-21 diff --git a/pyproject.toml b/pyproject.toml index e3626ec..617cc0f 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -31,14 +31,14 @@ classifiers = [ requires-python = ">=3.11" dependencies = [ "Click", - "headerkit==0.46.2", + "headerkit==0.48.1", ] [project.optional-dependencies] # libclang backend (C++ support) - headerkit vendors clang bindings, kept for backwards compatibility libclang = [] # tree-sitter backend - headerkit owns the tree-sitter dependency set -treesitter = ["headerkit[treesitter]==0.46.2"] +treesitter = ["headerkit[treesitter]==0.48.1"] # Testing # tree-sitter is included so the default dev install exercises both backends diff --git a/test/fixtures/realistic_headers/json_lib.expected.pxd b/test/fixtures/realistic_headers/json_lib.expected.pxd index 4da5081..a004189 100644 --- a/test/fixtures/realistic_headers/json_lib.expected.pxd +++ b/test/fixtures/realistic_headers/json_lib.expected.pxd @@ -31,7 +31,7 @@ cdef extern from "json_lib.h": char text[160] - int JSON_INDENT(int n) + # Macro function 'JSON_INDENT(n)' skipped (preprocessor macro) int json_is_object(const json_t* json) diff --git a/test/real_headers/jansson.expected.pxd b/test/real_headers/jansson.expected.pxd index 9bcdcb6..ba4a4b5 100644 --- a/test/real_headers/jansson.expected.pxd +++ b/test/real_headers/jansson.expected.pxd @@ -15,51 +15,51 @@ cdef extern from "jansson.h": int JANSSON_THREAD_SAFE_REFCOUNT - int JANSSON_ATTRS(int x) + # Macro function 'JANSSON_ATTRS(x)' skipped (preprocessor macro) const char* JSON_INTEGER_FORMAT - int json_typeof(int json) + # Macro function 'json_typeof(json)' skipped (preprocessor macro) - int json_is_object(int json) + # Macro function 'json_is_object(json)' skipped (preprocessor macro) - int json_is_array(int json) + # Macro function 'json_is_array(json)' skipped (preprocessor macro) - int json_is_string(int json) + # Macro function 'json_is_string(json)' skipped (preprocessor macro) - int json_is_integer(int json) + # Macro function 'json_is_integer(json)' skipped (preprocessor macro) - int json_is_real(int json) + # Macro function 'json_is_real(json)' skipped (preprocessor macro) - int json_is_number(int json) + # Macro function 'json_is_number(json)' skipped (preprocessor macro) - int json_is_true(int json) + # Macro function 'json_is_true(json)' skipped (preprocessor macro) - int json_is_false(int json) + # Macro function 'json_is_false(json)' skipped (preprocessor macro) - int json_is_boolean(int json) + # Macro function 'json_is_boolean(json)' skipped (preprocessor macro) - int json_is_null(int json) + # Macro function 'json_is_null(json)' skipped (preprocessor macro) - int json_boolean(int val) + # Macro function 'json_boolean(val)' skipped (preprocessor macro) - int JSON_INTERNAL_INCREF(int json) + # Macro function 'JSON_INTERNAL_INCREF(json)' skipped (preprocessor macro) - int JSON_INTERNAL_DECREF(int json) + # Macro function 'JSON_INTERNAL_DECREF(json)' skipped (preprocessor macro) int JSON_ERROR_TEXT_LENGTH int JSON_ERROR_SOURCE_LENGTH - int json_object_foreach(int object, int key, int value) + # Macro function 'json_object_foreach(object, key, value)' skipped (preprocessor macro) - int json_object_keylen_foreach(int object, int key, int key_len, int value) + # Macro function 'json_object_keylen_foreach(object, key, key_len, value)' skipped (preprocessor macro) - int json_object_foreach_safe(int object, int n, int key, int value) + # Macro function 'json_object_foreach_safe(object, n, key, value)' skipped (preprocessor macro) - int json_object_keylen_foreach_safe(int object, int n, int key, int key_len, int value) + # Macro function 'json_object_keylen_foreach_safe(object, n, key, key_len, value)' skipped (preprocessor macro) - int json_array_foreach(int array, int index, int value) + # Macro function 'json_array_foreach(array, index, value)' skipped (preprocessor macro) int JSON_VALIDATE_ONLY @@ -77,7 +77,7 @@ cdef extern from "jansson.h": int JSON_MAX_INDENT - int JSON_INDENT(int n) + # Macro function 'JSON_INDENT(n)' skipped (preprocessor macro) int JSON_COMPACT @@ -91,7 +91,7 @@ cdef extern from "jansson.h": int JSON_ESCAPE_SLASH - int JSON_REAL_PRECISION(int n) + # Macro function 'JSON_REAL_PRECISION(n)' skipped (preprocessor macro) int JSON_EMBED diff --git a/test/real_headers/zlib.expected.pxd b/test/real_headers/zlib.expected.pxd index bbdd4da..814541e 100644 --- a/test/real_headers/zlib.expected.pxd +++ b/test/real_headers/zlib.expected.pxd @@ -94,17 +94,17 @@ cdef extern from "zlib.h": int Z_NULL - int deflateInit(int strm, int level) + # Macro function 'deflateInit(strm, level)' skipped (preprocessor macro) - int inflateInit(int strm) + # Macro function 'inflateInit(strm)' skipped (preprocessor macro) - int deflateInit2(int strm, int level, int method, int windowBits, int memLevel, int strategy) + # Macro function 'deflateInit2(strm, level, method, windowBits, memLevel, strategy)' skipped (preprocessor macro) - int inflateInit2(int strm, int windowBits) + # Macro function 'inflateInit2(strm, windowBits)' skipped (preprocessor macro) - int inflateBackInit(int strm, int windowBits, int window) + # Macro function 'inflateBackInit(strm, windowBits, window)' skipped (preprocessor macro) - int gzgetc(int g) + # Macro function 'gzgetc(g)' skipped (preprocessor macro) ctypedef voidpf (*alloc_func)(voidpf opaque, uInt items, uInt size) @@ -328,7 +328,7 @@ cdef extern from "zlib.h": int MAX_WBITS - int OF(int args) + # Macro function 'OF(args)' skipped (preprocessor macro) int SEEK_SET diff --git a/uv.lock b/uv.lock index c0249c7..0d0d1ce 100644 --- a/uv.lock +++ b/uv.lock @@ -120,8 +120,8 @@ requires-dist = [ { name = "autopxd2", extras = ["treesitter"], marker = "extra == 'test'" }, { name = "click" }, { name = "cython", marker = "extra == 'test'" }, - { name = "headerkit", specifier = "==0.46.2" }, - { name = "headerkit", extras = ["treesitter"], marker = "extra == 'treesitter'", specifier = "==0.46.2" }, + { name = "headerkit", specifier = "==0.48.1" }, + { name = "headerkit", extras = ["treesitter"], marker = "extra == 'treesitter'", specifier = "==0.48.1" }, { name = "mike", marker = "extra == 'docs'", specifier = ">=2.0" }, { name = "mkdocs", marker = "extra == 'docs'", specifier = ">=1.5" }, { name = "mkdocs-material", marker = "extra == 'docs'", specifier = ">=9.0" }, @@ -418,11 +418,11 @@ wheels = [ [[package]] name = "headerkit" -version = "0.46.2" +version = "0.48.1" source = { registry = "http://proxpi.flanopticon.lan/index/" } -sdist = { url = "http://proxpi.flanopticon.lan/index/headerkit/headerkit-0.46.2.tar.gz", hash = "sha256:dea6c7fba6fdc7b3d23de6c0a6cf6d4b751f0d05962a6d9cedc7fe7233325fc0" } +sdist = { url = "http://proxpi.flanopticon.lan/index/headerkit/headerkit-0.48.1.tar.gz", hash = "sha256:6adc4dd8b0943d1ff8a478ae6a81ebb2089950862deff5db06faf91fe9ddda57" } wheels = [ - { url = "http://proxpi.flanopticon.lan/index/headerkit/headerkit-0.46.2-py3-none-any.whl", hash = "sha256:da01e7bd4d803af364b8fec407205a7ba6bbe7976065a466d11331eb3b9e0448" }, + { url = "http://proxpi.flanopticon.lan/index/headerkit/headerkit-0.48.1-py3-none-any.whl", hash = "sha256:b46fd6a0efbbddd012f08d3e886c98c3663165ee4afa993452e1479128d053d5" }, ] [package.optional-dependencies] From aee3b71025c8f2ad316c1232d74ed4433b66bf3c Mon Sep 17 00:00:00 2001 From: Elijah Shaw-Rutschman Date: Wed, 28 Oct 2026 23:06:42 -0500 Subject: [PATCH 3/3] chore(release): bump version to 4.0.3 --- CHANGELOG.md | 8 +++++++- pyproject.toml | 2 +- uv.lock | 2 +- 3 files changed, 9 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 0579b02..95375d1 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -10,6 +10,11 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Changed - Pinned `headerkit` and `headerkit[treesitter]` dependencies to `==0.48.1` in `pyproject.toml` and `uv.lock`, and updated Cython macro-function comment snapshot fixtures (`zlib.expected.pxd`, `jansson.expected.pxd`, `json_lib.expected.pxd`) to match `headerkit` 0.48.1 output. +## [4.0.3] - 2026-10-28 + +### Changed +- Pinned `headerkit` and `headerkit[treesitter]` dependencies to `==0.48.1` in `pyproject.toml` and `uv.lock`, and updated Cython macro-function comment snapshot fixtures (`zlib.expected.pxd`, `jansson.expected.pxd`, `json_lib.expected.pxd`) to match `headerkit` 0.48.1 output. + ## [4.0.2] - 2026-10-21 ### Changed @@ -320,7 +325,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Added - macOS support -[Unreleased]: https://github.com/elijahr/python-autopxd2/compare/v4.0.2...HEAD +[Unreleased]: https://github.com/elijahr/python-autopxd2/compare/v4.0.3...HEAD +[4.0.3]: https://github.com/elijahr/python-autopxd2/compare/v4.0.2...v4.0.3 [4.0.2]: https://github.com/elijahr/python-autopxd2/compare/v4.0.1...v4.0.2 [4.0.1]: https://github.com/elijahr/python-autopxd2/compare/v4.0.0...v4.0.1 [4.0.0]: https://github.com/elijahr/python-autopxd2/compare/v3.2.3...v4.0.0 diff --git a/pyproject.toml b/pyproject.toml index 617cc0f..3398c44 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta" [project] name = "autopxd2" -version = "4.0.2" +version = "4.0.3" description = "Automatically generate Cython pxd files from C headers" readme = "README.md" license = { file = "LICENSE" } diff --git a/uv.lock b/uv.lock index 0d0d1ce..282fc75 100644 --- a/uv.lock +++ b/uv.lock @@ -72,7 +72,7 @@ wheels = [ [[package]] name = "autopxd2" -version = "4.0.2" +version = "4.0.3" source = { editable = "." } dependencies = [ { name = "click" },