Commit Graph

136 Commits

Author SHA1 Message Date
Andrej730 c4e411c735 Drop use of removed entity_instance.wrapped_data 2026-07-22 19:01:50 +05:00
Andrej730 20b1d98178 downstream: express: drop Python 2 fallbacks 2026-07-22 14:52:28 +05:00
Andrej730 c5634d5160 downstream: express: fix use of non-existent ifcexpressparser
`express.bnf` arg wasn't handled since d506ad77b
`ifcexpressparser` waa moved inside `ifcopenshell-python` awhile ago too
2026-07-22 14:52:28 +05:00
Andrej730 89663b716a downstream: pyparsing: fix using deprecated aliases
Deprecated since pyparsing 3.0 and produce runtime warnings. New
function work exactly the same, except their name is pep8 compatible.
2026-07-22 14:52:28 +05:00
Andrej730 9da1b9e02b downstream: express_parser: fix non-idempotent results 2026-07-22 14:52:28 +05:00
Andrej730 94a7ca6ac5 downstream: express: clean up trailing spaces 2026-07-22 14:52:28 +05:00
Andrej730 90c395bde4 downstream: express: update transpiled express rules using latest Python's AST
AST parser has changed a bit and there are some minor differences in the
.py output. Updating files just to avoid seeing these diffs when
rerunning rule compiler.
2026-07-22 14:52:28 +05:00
Andrej730 9e6179e671 downstream: rule_compiler: fix error running on Python 3.14
Example error:
```
    ast.Str(s=node.attr),
    ^^^^^^^
AttributeError: module 'ast' has no attribute 'Str'
```

`ast.Str` was deprecated since 3.8 and was removed in 3.14, see
https://docs.python.org/3/whatsnew/3.14.html#id9
2026-07-22 14:52:28 +05:00
Petru Conduraru f23db9440f ifcparse: widen all integer attribute types to int64_t for consistency
Follow-up to the scalar-only fix in #8754, per aothms's direct request on
that PR ("Please do make all int types consistent") and his own original
2023 design intent on issue #3058 ("make all integers (incl. schema
namespaces) an int64_t"). Widens the remaining inconsistent spots now that
compatibility isn't a constraint on this v0.9 branch:

- Integer aggregates (IfcTriangulatedFaceSet.CoordIndex and similar
  List<int> attributes), including the SWIG to_vec_int/to_vec_vec_int
  helpers, which previously silently truncated via static_cast<int> on the
  Python-set path - the same bug class as the original scalar issue.
- The schema code generator (express/mapping.py's integer type mapping),
  and all 12 generated schema header/source pairs regenerated to match, so
  every schema-typed getter/setter (e.g. IfcOwnerHistory::CreationDate) is
  int64_t end to end, not just the dynamic attribute-value path.

Instance/reference identifiers (STEP #123 ids) are deliberately left at
32-bit: they're a file-local index into internal maps, not an EXPRESS
domain value an application chooses, and no realistic STEP file has
billions of entities. The lexer's Token_IDENTIFIER parsing still funnels
through a 32-bit int for this reason - flagged as a known, low-risk gap
rather than fixed, since fixing it would mean touching indexing/hashing
code for no realistic benefit.

Verified: original PR's round-trip tests extended with aggregate cases
(IfcTriangulatedFaceSet.CoordIndex, InnerCoordIndices) at 64-bit boundary
values, in memory and through STEP text, IFC2X3 and IFC4. A standalone C++
program exercising the generated schema API directly (Ifc4::IfcOwnerHistory
::setCreationDate/CreationDate, IfcTriangulatedFaceSet::setCoordIndex/
CoordIndex) confirms int64_t end to end, bypassing SWIG. Full build
(BUILD_IFCGEOM, WITH_OPENCASCADE, BUILD_IFCPYTHON, IFC2X3+IFC4) clean.
test/util/test_attribute.py and test_file.py pass unchanged.

This contribution was produced with the assistance of an AI coding tool.
2026-07-19 13:54:16 +02:00
Thomas Krijnen 7fc2d9a998 Merge remote-tracking branch 'origin/v0.8.0' into ifcviewer-wgpu 2026-07-09 13:21:39 +02:00
Thomas Krijnen 77aa080334 Recompile rules 2026-06-28 10:37:33 +02:00
Thomas Krijnen 5afad2b179 Partial revert of 84abf5e91 2026-06-26 16:29:27 +02:00
Thomas Krijnen 98aa2c635e Rerun express-related codegen 2026-06-26 16:09:44 +02:00
Thomas Krijnen 7db1ceb07f Convert to lower() immediately after originalTextFor to retain more similar behaviour 2026-06-26 16:01:46 +02:00
Thomas Krijnen 84abf5e918 Adapt codegen for new parsing 2026-06-25 14:29:14 +02:00
Thomas Krijnen 741e8233ca originalTextFor() for on parsing express string literals 2026-06-25 14:29:14 +02:00
Thomas Krijnen 6a6756de66 Bump binary versions in makefiles; add backwards compatibility to logger usage in python #8167 2026-06-15 09:56:36 +02:00
Ghesselink 2dbb8c59e3 Apply black formatting 2026-06-11 18:29:11 +02:00
Ghesselink aa053bd52c unblock voxel schema loading, add test for express 2026-06-11 18:29:11 +02:00
Thomas Krijnen 98ff457fd6 Continue work on plug-in and tests 2026-05-06 21:17:57 +02:00
Ghesselink c197a45247 Apply black formatting 2026-05-06 13:32:05 +02:00
Ghesselink ab73550059 unblock voxel schema loading, add test for express 2026-05-06 13:32:05 +02:00
Thomas Krijnen f1e93581ec Reuse constructors and return *this from initialize() 2026-04-18 21:01:21 +02:00
Thomas Krijnen 91ae631c7d Merge remote-tracking branch 'origin/v0.8.0' into datamodel-v1.0 2026-04-18 20:15:28 +02:00
Thomas Krijnen a07f56db6f Restructure and rename 2026-03-31 15:32:36 +02:00
Thomas Krijnen 724cdb446e Move schemas into schemas/ subfolder 2026-03-31 10:02:00 +02:00
Thomas Krijnen 95a094d596 Fix some schema generation issues 2026-03-26 10:39:29 +01:00
Andrej730 92c979fbbf black . 2026-02-27 14:52:55 +05:00
Andrej730 333b6210a4 black . 2026-02-26 17:12:52 +05:00
Thomas Krijnen 077a0c3755 Run black on express/ 2026-02-26 12:36:01 +01:00
Thomas Krijnen 18527a78e1 rule_executor.py don't log RecursionError as error 2026-02-26 12:35:40 +01:00
Thomas Krijnen 1137e7b77b Fix rule compilation regarding indeterminate #7529 2026-01-23 14:36:06 +01:00
Thomas Krijnen 4ec643d4e1 schema entity initialize() method, optional argument forwarding in file::create, populate_derived in InstanceData 2026-01-15 19:24:55 +01:00
Thomas Krijnen 6cd1375cf9 Rerun rule compilation for exists() on indeterminate 2026-01-15 13:00:37 +01:00
Thomas Krijnen 2d1250c18f Global file for rule and derived attributes 2026-01-15 12:39:32 +01:00
Thomas Krijnen 33f072e0a7 Account for removed instance factory 2026-01-15 12:37:53 +01:00
Thomas Krijnen b66b04b001 Remove usage of .wrapped_item and some other fixes 2026-01-10 11:01:18 +01:00
Thomas Krijnen ae79996eb6 Fix running of test/tests.py 2026-01-08 11:49:29 +01:00
Thomas Krijnen ccd91c0ff0 No more messing around with specific sfinae as<>() in Select implementations 2026-01-06 11:27:29 +01:00
Thomas Krijnen a1d2c902f3 Add enum to forward declarations for Ifc2x3::IfcNullStyle 2026-01-06 09:56:36 +01:00
Thomas Krijnen 7098beb819 Work towards v1.0 data model with encapsulated weak_ptr as basis for instances 2026-01-05 21:42:01 +01:00
Thomas Krijnen 7fdf815d3c Re-run express rule codegen #7501 2025-12-24 15:33:44 +01:00
Thomas Krijnen 8d3c610965 Map None -> Indeterminate to prevent iterating over none in non-shortcircuiting rule execution #7501 2025-12-24 15:33:44 +01:00
Thomas Krijnen 7575bd4dfb Commit some files because I do not want them cleaned 2025-10-25 15:25:56 +02:00
Thomas Krijnen d697ed3384 Commit some files because I do not want them cleaned 2025-10-25 15:25:10 +02:00
Thomas Krijnen ce4407ff3c Some successes writing and reading 2025-02-27 22:07:31 +01:00
Thomas Krijnen c58c8269af Fix codegen 2025-02-26 09:34:02 +01:00
Thomas Krijnen 1d9dcb3ab7 Add header schema 2025-02-25 21:30:20 +01:00
Thomas Krijnen fb1d78b311 Update codegen 2025-02-21 16:13:21 +01:00
Thomas Krijnen 919df92888 Virtual inheritance configurable at codegen time 2025-01-30 13:12:42 +01:00