mirror of
https://github.com/IfcOpenShell/IfcOpenShell.git
synced 2026-08-14 19:34:34 +00:00
948ffce7e9
generate_stub.py (this branch's earlier commit) regenerates ifcopenshell_wrapper.pyi wholesale from the compiled wrapper: it reliably fixes real drift, but it also discards everything that isn't mechanically recoverable from the wrapper alone - the license header, docstrings, and hand-curated named-parameter signatures for SWIG-overloaded constructors/functions (SWIG itself always emits generic `*args` for those, so a regenerator can't tell a deliberate curation from real drift and just overwrites it). sync_stub.py takes the smaller-blast-radius approach: it only adds top-level symbols/class members that are genuinely missing, and only removes ones that are genuinely gone, cross-checking against validate_stub.py's own full canonicalisation (via the newly-exposed get_names_tree()) so it never mistakes a property()/staticmethod()- wrapped member for something absent just because its own narrower parser skips that form. Anything that exists on both sides under the same name but with a different signature - exactly where curation lives - is left untouched and reported for a human to review instead of guessed at. Verified against a real local build: applying it to the current ifcopenshell_wrapper.pyi produces a small, targeted diff (add one missing method, drop one stale function) with the license header, docstrings, and all 14 curated constructor/function signatures preserved byte-for-byte, versus generate_stub.py's ~1000-line wholesale rewrite for the same underlying fix. Generated with the assistance of an AI coding tool.