cq-jt 0.3.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (109) hide show
  1. cq_jt-0.3.0/Cargo.lock +350 -0
  2. cq_jt-0.3.0/Cargo.toml +15 -0
  3. cq_jt-0.3.0/LICENSE +21 -0
  4. cq_jt-0.3.0/PKG-INFO +126 -0
  5. cq_jt-0.3.0/README.md +76 -0
  6. cq_jt-0.3.0/THIRD_PARTY_NOTICES.md +64 -0
  7. cq_jt-0.3.0/crates/cq-jt-py/Cargo.toml +18 -0
  8. cq_jt-0.3.0/crates/cq-jt-py/LICENSE +21 -0
  9. cq_jt-0.3.0/crates/cq-jt-py/src/export.rs +47 -0
  10. cq_jt-0.3.0/crates/cq-jt-py/src/lib.rs +307 -0
  11. cq_jt-0.3.0/crates/cq-jt-py/src/mesh.rs +118 -0
  12. cq_jt-0.3.0/crates/cq-jt-py/src/structure.rs +166 -0
  13. cq_jt-0.3.0/crates/jt-core/Cargo.toml +20 -0
  14. cq_jt-0.3.0/crates/jt-core/LICENSE +21 -0
  15. cq_jt-0.3.0/crates/jt-core/README.md +127 -0
  16. cq_jt-0.3.0/crates/jt-core/src/compression.rs +438 -0
  17. cq_jt-0.3.0/crates/jt-core/src/container.rs +565 -0
  18. cq_jt-0.3.0/crates/jt-core/src/error.rs +91 -0
  19. cq_jt-0.3.0/crates/jt-core/src/export/geometry.rs +167 -0
  20. cq_jt-0.3.0/crates/jt-core/src/export/glb.rs +667 -0
  21. cq_jt-0.3.0/crates/jt-core/src/export/material.rs +126 -0
  22. cq_jt-0.3.0/crates/jt-core/src/export/mod.rs +124 -0
  23. cq_jt-0.3.0/crates/jt-core/src/export/output.rs +87 -0
  24. cq_jt-0.3.0/crates/jt-core/src/io.rs +56 -0
  25. cq_jt-0.3.0/crates/jt-core/src/lib.rs +329 -0
  26. cq_jt-0.3.0/crates/jt-core/src/limits.rs +42 -0
  27. cq_jt-0.3.0/crates/jt-core/src/mesh/codec.rs +791 -0
  28. cq_jt-0.3.0/crates/jt-core/src/mesh/hash.rs +55 -0
  29. cq_jt-0.3.0/crates/jt-core/src/mesh/mod.rs +95 -0
  30. cq_jt-0.3.0/crates/jt-core/src/mesh/reader.rs +547 -0
  31. cq_jt-0.3.0/crates/jt-core/src/mesh/resolver.rs +661 -0
  32. cq_jt-0.3.0/crates/jt-core/src/mesh/scene.rs +440 -0
  33. cq_jt-0.3.0/crates/jt-core/src/mesh/topology.rs +587 -0
  34. cq_jt-0.3.0/crates/jt-core/src/payload.rs +358 -0
  35. cq_jt-0.3.0/crates/jt-core/src/structure/mod.rs +77 -0
  36. cq_jt-0.3.0/crates/jt-core/src/structure/reader.rs +995 -0
  37. cq_jt-0.3.0/crates/jt-core/src/structure/resolve.rs +732 -0
  38. cq_jt-0.3.0/crates/jt-core/src/structure/value.rs +242 -0
  39. cq_jt-0.3.0/crates/jt-py-bridge/Cargo.toml +18 -0
  40. cq_jt-0.3.0/crates/jt-py-bridge/LICENSE +21 -0
  41. cq_jt-0.3.0/crates/jt-py-bridge/README.md +25 -0
  42. cq_jt-0.3.0/crates/jt-py-bridge/src/export.rs +173 -0
  43. cq_jt-0.3.0/crates/jt-py-bridge/src/inspect.rs +203 -0
  44. cq_jt-0.3.0/crates/jt-py-bridge/src/lib.rs +333 -0
  45. cq_jt-0.3.0/crates/jt-py-bridge/src/mesh.rs +216 -0
  46. cq_jt-0.3.0/crates/jt-py-bridge/src/payload.rs +125 -0
  47. cq_jt-0.3.0/crates/jt-py-bridge/src/structure.rs +204 -0
  48. cq_jt-0.3.0/docs/README.md +11 -0
  49. cq_jt-0.3.0/docs/compatibility.md +54 -0
  50. cq_jt-0.3.0/docs/model-api.md +298 -0
  51. cq_jt-0.3.0/examples/README.md +15 -0
  52. cq_jt-0.3.0/examples/convert_to_glb.py +36 -0
  53. cq_jt-0.3.0/licenses/adler2-2.0.1-LICENSE-MIT.txt +23 -0
  54. cq_jt-0.3.0/licenses/block-buffer-0.10.4-LICENSE-MIT.txt +25 -0
  55. cq_jt-0.3.0/licenses/cfg-if-1.0.5-LICENSE-MIT.txt +25 -0
  56. cq_jt-0.3.0/licenses/cpufeatures-0.2.17-LICENSE-MIT.txt +25 -0
  57. cq_jt-0.3.0/licenses/crc32fast-1.5.0-LICENSE-MIT.txt +21 -0
  58. cq_jt-0.3.0/licenses/crypto-common-0.1.7-LICENSE-MIT.txt +25 -0
  59. cq_jt-0.3.0/licenses/digest-0.10.7-LICENSE-MIT.txt +25 -0
  60. cq_jt-0.3.0/licenses/flate2-1.1.10-LICENSE-MIT.txt +25 -0
  61. cq_jt-0.3.0/licenses/generic-array-0.14.7-LICENSE.txt +21 -0
  62. cq_jt-0.3.0/licenses/heck-0.5.0-LICENSE-MIT.txt +25 -0
  63. cq_jt-0.3.0/licenses/itoa-1.0.18-LICENSE-MIT.txt +23 -0
  64. cq_jt-0.3.0/licenses/libc-0.2.191-LICENSE-MIT.txt +25 -0
  65. cq_jt-0.3.0/licenses/lzma-rust2-0.15.8-LICENSE.txt +201 -0
  66. cq_jt-0.3.0/licenses/manifest.json +299 -0
  67. cq_jt-0.3.0/licenses/memchr-2.8.3-LICENSE-MIT.txt +21 -0
  68. cq_jt-0.3.0/licenses/miniz_oxide-0.9.1-LICENSE-MIT.txt +24 -0
  69. cq_jt-0.3.0/licenses/once_cell-1.21.4-LICENSE-MIT.txt +23 -0
  70. cq_jt-0.3.0/licenses/portable-atomic-1.15.0-LICENSE-MIT.txt +23 -0
  71. cq_jt-0.3.0/licenses/proc-macro2-1.0.107-LICENSE-MIT.txt +23 -0
  72. cq_jt-0.3.0/licenses/pyo3-0.29.2-LICENSE-MIT.txt +25 -0
  73. cq_jt-0.3.0/licenses/pyo3-build-config-0.29.2-LICENSE-MIT.txt +25 -0
  74. cq_jt-0.3.0/licenses/pyo3-ffi-0.29.2-LICENSE-MIT.txt +25 -0
  75. cq_jt-0.3.0/licenses/pyo3-macros-0.29.2-LICENSE-MIT.txt +25 -0
  76. cq_jt-0.3.0/licenses/pyo3-macros-backend-0.29.2-LICENSE-MIT.txt +25 -0
  77. cq_jt-0.3.0/licenses/quote-1.0.47-LICENSE-MIT.txt +23 -0
  78. cq_jt-0.3.0/licenses/serde-1.0.229-LICENSE-MIT.txt +23 -0
  79. cq_jt-0.3.0/licenses/serde_core-1.0.229-LICENSE-MIT.txt +23 -0
  80. cq_jt-0.3.0/licenses/serde_derive-1.0.229-LICENSE-MIT.txt +23 -0
  81. cq_jt-0.3.0/licenses/serde_json-1.0.154-LICENSE-MIT.txt +23 -0
  82. cq_jt-0.3.0/licenses/sha2-0.10.9-LICENSE-MIT.txt +27 -0
  83. cq_jt-0.3.0/licenses/simd-adler32-0.3.10-LICENSE.txt +21 -0
  84. cq_jt-0.3.0/licenses/syn-2.0.119-LICENSE-MIT.txt +23 -0
  85. cq_jt-0.3.0/licenses/syn-3.0.9-LICENSE-MIT.txt +23 -0
  86. cq_jt-0.3.0/licenses/target-lexicon-0.13.5-LICENSE.txt +220 -0
  87. cq_jt-0.3.0/licenses/typenum-1.20.1-LICENSE-MIT.txt +21 -0
  88. cq_jt-0.3.0/licenses/unicode-ident-1.0.27-LICENSE-MIT.txt +23 -0
  89. cq_jt-0.3.0/licenses/unicode-ident-1.0.27-LICENSE-UNICODE.txt +39 -0
  90. cq_jt-0.3.0/licenses/version_check-0.9.5-LICENSE-MIT.txt +19 -0
  91. cq_jt-0.3.0/licenses/zmij-1.0.23-LICENSE-MIT.txt +23 -0
  92. cq_jt-0.3.0/pyproject.toml +45 -0
  93. cq_jt-0.3.0/src/cq_jt/__init__.py +62 -0
  94. cq_jt-0.3.0/src/cq_jt/__main__.py +210 -0
  95. cq_jt-0.3.0/src/cq_jt/_native.pyi +120 -0
  96. cq_jt-0.3.0/src/cq_jt/api.py +96 -0
  97. cq_jt-0.3.0/src/cq_jt/arrays.py +9 -0
  98. cq_jt-0.3.0/src/cq_jt/container.py +110 -0
  99. cq_jt-0.3.0/src/cq_jt/docs/README.md +11 -0
  100. cq_jt-0.3.0/src/cq_jt/docs/compatibility.md +54 -0
  101. cq_jt-0.3.0/src/cq_jt/docs/model-api.md +298 -0
  102. cq_jt-0.3.0/src/cq_jt/errors.py +38 -0
  103. cq_jt-0.3.0/src/cq_jt/export.py +59 -0
  104. cq_jt-0.3.0/src/cq_jt/mesh.py +134 -0
  105. cq_jt-0.3.0/src/cq_jt/model.py +77 -0
  106. cq_jt-0.3.0/src/cq_jt/payload.py +32 -0
  107. cq_jt-0.3.0/src/cq_jt/py.typed +0 -0
  108. cq_jt-0.3.0/src/cq_jt/structure.py +209 -0
  109. cq_jt-0.3.0/uv.lock +103 -0
cq_jt-0.3.0/Cargo.lock ADDED
@@ -0,0 +1,350 @@
1
+ # This file is automatically @generated by Cargo.
2
+ # It is not intended for manual editing.
3
+ version = 4
4
+
5
+ [[package]]
6
+ name = "adler2"
7
+ version = "2.0.1"
8
+ source = "registry+https://github.com/rust-lang/crates.io-index"
9
+ checksum = "320119579fcad9c21884f5c4861d16174d0e06250625266f50fe6898340abefa"
10
+
11
+ [[package]]
12
+ name = "block-buffer"
13
+ version = "0.10.4"
14
+ source = "registry+https://github.com/rust-lang/crates.io-index"
15
+ checksum = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71"
16
+ dependencies = [
17
+ "generic-array",
18
+ ]
19
+
20
+ [[package]]
21
+ name = "cfg-if"
22
+ version = "1.0.5"
23
+ source = "registry+https://github.com/rust-lang/crates.io-index"
24
+ checksum = "4e7648175b45a9a48536d676f68d918270699102aa8dab5496df06904c914600"
25
+
26
+ [[package]]
27
+ name = "cpufeatures"
28
+ version = "0.2.17"
29
+ source = "registry+https://github.com/rust-lang/crates.io-index"
30
+ checksum = "59ed5838eebb26a2bb2e58f6d5b5316989ae9d08bab10e0e6d103e656d1b0280"
31
+ dependencies = [
32
+ "libc",
33
+ ]
34
+
35
+ [[package]]
36
+ name = "cq-jt-py"
37
+ version = "0.3.0"
38
+ dependencies = [
39
+ "jt-core",
40
+ "jt-py-bridge",
41
+ "pyo3",
42
+ ]
43
+
44
+ [[package]]
45
+ name = "crc32fast"
46
+ version = "1.5.0"
47
+ source = "registry+https://github.com/rust-lang/crates.io-index"
48
+ checksum = "9481c1c90cbf2ac953f07c8d4a58aa3945c425b7185c9154d67a65e4230da511"
49
+ dependencies = [
50
+ "cfg-if",
51
+ ]
52
+
53
+ [[package]]
54
+ name = "crypto-common"
55
+ version = "0.1.7"
56
+ source = "registry+https://github.com/rust-lang/crates.io-index"
57
+ checksum = "78c8292055d1c1df0cce5d180393dc8cce0abec0a7102adb6c7b1eef6016d60a"
58
+ dependencies = [
59
+ "generic-array",
60
+ "typenum",
61
+ ]
62
+
63
+ [[package]]
64
+ name = "digest"
65
+ version = "0.10.7"
66
+ source = "registry+https://github.com/rust-lang/crates.io-index"
67
+ checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292"
68
+ dependencies = [
69
+ "block-buffer",
70
+ "crypto-common",
71
+ ]
72
+
73
+ [[package]]
74
+ name = "flate2"
75
+ version = "1.1.10"
76
+ source = "registry+https://github.com/rust-lang/crates.io-index"
77
+ checksum = "6e634e2e0ebac1ee034020da1ca582e17ffe4e0f5e985823721e168928136dcb"
78
+ dependencies = [
79
+ "crc32fast",
80
+ "miniz_oxide",
81
+ ]
82
+
83
+ [[package]]
84
+ name = "generic-array"
85
+ version = "0.14.7"
86
+ source = "registry+https://github.com/rust-lang/crates.io-index"
87
+ checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a"
88
+ dependencies = [
89
+ "typenum",
90
+ "version_check",
91
+ ]
92
+
93
+ [[package]]
94
+ name = "heck"
95
+ version = "0.5.0"
96
+ source = "registry+https://github.com/rust-lang/crates.io-index"
97
+ checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea"
98
+
99
+ [[package]]
100
+ name = "itoa"
101
+ version = "1.0.18"
102
+ source = "registry+https://github.com/rust-lang/crates.io-index"
103
+ checksum = "8f42a60cbdf9a97f5d2305f08a87dc4e09308d1276d28c869c684d7777685682"
104
+
105
+ [[package]]
106
+ name = "jt-core"
107
+ version = "0.3.0"
108
+ dependencies = [
109
+ "crc32fast",
110
+ "flate2",
111
+ "lzma-rust2",
112
+ "serde_json",
113
+ ]
114
+
115
+ [[package]]
116
+ name = "jt-py-bridge"
117
+ version = "0.3.0"
118
+ dependencies = [
119
+ "jt-core",
120
+ "pyo3",
121
+ ]
122
+
123
+ [[package]]
124
+ name = "libc"
125
+ version = "0.2.191"
126
+ source = "registry+https://github.com/rust-lang/crates.io-index"
127
+ checksum = "65cd87c9a6d60536580b316ad985726104730a5151c99845f2490428ef91240a"
128
+
129
+ [[package]]
130
+ name = "lzma-rust2"
131
+ version = "0.15.8"
132
+ source = "registry+https://github.com/rust-lang/crates.io-index"
133
+ checksum = "e20f57f9918e5bd7bc58c22cdd70a6afc7375d4dd9683af5f2b34bd3d2bba619"
134
+ dependencies = [
135
+ "sha2",
136
+ ]
137
+
138
+ [[package]]
139
+ name = "memchr"
140
+ version = "2.8.3"
141
+ source = "registry+https://github.com/rust-lang/crates.io-index"
142
+ checksum = "cf8baf1c55e62ffcace7a9f06f4bd9cd3f0c4beb022d3b367256b91b87513d98"
143
+
144
+ [[package]]
145
+ name = "miniz_oxide"
146
+ version = "0.9.1"
147
+ source = "registry+https://github.com/rust-lang/crates.io-index"
148
+ checksum = "b63fbc4a50860e98e7b2aa7804ded1db5cbc3aff9193adaff57a6931bf7c4b4c"
149
+ dependencies = [
150
+ "adler2",
151
+ "simd-adler32",
152
+ ]
153
+
154
+ [[package]]
155
+ name = "once_cell"
156
+ version = "1.21.4"
157
+ source = "registry+https://github.com/rust-lang/crates.io-index"
158
+ checksum = "9f7c3e4beb33f85d45ae3e3a1792185706c8e16d043238c593331cc7cd313b50"
159
+
160
+ [[package]]
161
+ name = "portable-atomic"
162
+ version = "1.15.0"
163
+ source = "registry+https://github.com/rust-lang/crates.io-index"
164
+ checksum = "05c8b63e8d9609db387f0324918f81d68fe27748f084ef092fb35954d0539a85"
165
+
166
+ [[package]]
167
+ name = "proc-macro2"
168
+ version = "1.0.107"
169
+ source = "registry+https://github.com/rust-lang/crates.io-index"
170
+ checksum = "985e7ec9bb745e6ce6535b544d84d6cd6f7ad8bd711c398938ae983b91a766d9"
171
+ dependencies = [
172
+ "unicode-ident",
173
+ ]
174
+
175
+ [[package]]
176
+ name = "pyo3"
177
+ version = "0.29.2"
178
+ source = "registry+https://github.com/rust-lang/crates.io-index"
179
+ checksum = "4688ddedf473e32662b9b067670129a8afb8c18e351482c70d62ba4a88171e8b"
180
+ dependencies = [
181
+ "libc",
182
+ "once_cell",
183
+ "portable-atomic",
184
+ "pyo3-build-config",
185
+ "pyo3-ffi",
186
+ "pyo3-macros",
187
+ ]
188
+
189
+ [[package]]
190
+ name = "pyo3-build-config"
191
+ version = "0.29.2"
192
+ source = "registry+https://github.com/rust-lang/crates.io-index"
193
+ checksum = "f41027e41b4bd03f6e60f9f417fe24a6341a6bb744edd62b6f709f2a52ea30e9"
194
+ dependencies = [
195
+ "target-lexicon",
196
+ ]
197
+
198
+ [[package]]
199
+ name = "pyo3-ffi"
200
+ version = "0.29.2"
201
+ source = "registry+https://github.com/rust-lang/crates.io-index"
202
+ checksum = "e591a95526fead067432c3b3a33fc74770b87b1e04e73671090d9c2055a2b327"
203
+ dependencies = [
204
+ "libc",
205
+ "pyo3-build-config",
206
+ ]
207
+
208
+ [[package]]
209
+ name = "pyo3-macros"
210
+ version = "0.29.2"
211
+ source = "registry+https://github.com/rust-lang/crates.io-index"
212
+ checksum = "73225868fc1cd84eef2c3c230ddb91273bf1de46aeb8a4248da76d32a0924a1c"
213
+ dependencies = [
214
+ "proc-macro2",
215
+ "pyo3-macros-backend",
216
+ "quote",
217
+ "syn 2.0.119",
218
+ ]
219
+
220
+ [[package]]
221
+ name = "pyo3-macros-backend"
222
+ version = "0.29.2"
223
+ source = "registry+https://github.com/rust-lang/crates.io-index"
224
+ checksum = "571575aa3749fa6216757dd47d2a3e7ef360f329a40f0666a9fbd14889024952"
225
+ dependencies = [
226
+ "heck",
227
+ "proc-macro2",
228
+ "quote",
229
+ "syn 2.0.119",
230
+ ]
231
+
232
+ [[package]]
233
+ name = "quote"
234
+ version = "1.0.47"
235
+ source = "registry+https://github.com/rust-lang/crates.io-index"
236
+ checksum = "1fbf4db142a473a8d80c26bbf18454ed458bf8d26c8219c331daecfdbd079001"
237
+ dependencies = [
238
+ "proc-macro2",
239
+ ]
240
+
241
+ [[package]]
242
+ name = "serde"
243
+ version = "1.0.229"
244
+ source = "registry+https://github.com/rust-lang/crates.io-index"
245
+ checksum = "4148590afebada386688f18773da617792bf2ef03ffc1e4cbd2b1d45b023e0ba"
246
+ dependencies = [
247
+ "serde_core",
248
+ ]
249
+
250
+ [[package]]
251
+ name = "serde_core"
252
+ version = "1.0.229"
253
+ source = "registry+https://github.com/rust-lang/crates.io-index"
254
+ checksum = "67dca2c9c51e58a4791a4b1ed58308b39c64224d349a935ab5039aa360942a48"
255
+ dependencies = [
256
+ "serde_derive",
257
+ ]
258
+
259
+ [[package]]
260
+ name = "serde_derive"
261
+ version = "1.0.229"
262
+ source = "registry+https://github.com/rust-lang/crates.io-index"
263
+ checksum = "e7a5d71263a5a7d47b41f6b3f06ba276f10cc18b0931f1799f710578e2309348"
264
+ dependencies = [
265
+ "proc-macro2",
266
+ "quote",
267
+ "syn 3.0.9",
268
+ ]
269
+
270
+ [[package]]
271
+ name = "serde_json"
272
+ version = "1.0.154"
273
+ source = "registry+https://github.com/rust-lang/crates.io-index"
274
+ checksum = "e7e9cc8b1b85264074fbcc02a88680c4096b1e47df8f739dceb03bf482f04bd6"
275
+ dependencies = [
276
+ "itoa",
277
+ "memchr",
278
+ "serde",
279
+ "serde_core",
280
+ "zmij",
281
+ ]
282
+
283
+ [[package]]
284
+ name = "sha2"
285
+ version = "0.10.9"
286
+ source = "registry+https://github.com/rust-lang/crates.io-index"
287
+ checksum = "a7507d819769d01a365ab707794a4084392c824f54a7a6a7862f8c3d0892b283"
288
+ dependencies = [
289
+ "cfg-if",
290
+ "cpufeatures",
291
+ "digest",
292
+ ]
293
+
294
+ [[package]]
295
+ name = "simd-adler32"
296
+ version = "0.3.10"
297
+ source = "registry+https://github.com/rust-lang/crates.io-index"
298
+ checksum = "3a219298ac11a56ea9a6d2120044824d6f01aeb034955e7af7bc16858527deea"
299
+
300
+ [[package]]
301
+ name = "syn"
302
+ version = "2.0.119"
303
+ source = "registry+https://github.com/rust-lang/crates.io-index"
304
+ checksum = "872831b642d1a07999a962a351ed35b955ea2cfc8f3862091e2a240a84f17297"
305
+ dependencies = [
306
+ "proc-macro2",
307
+ "quote",
308
+ "unicode-ident",
309
+ ]
310
+
311
+ [[package]]
312
+ name = "syn"
313
+ version = "3.0.9"
314
+ source = "registry+https://github.com/rust-lang/crates.io-index"
315
+ checksum = "d78c8dee4c7bf0e14673097256fed6142ce9d3b85a408189d07482442145823b"
316
+ dependencies = [
317
+ "proc-macro2",
318
+ "quote",
319
+ "unicode-ident",
320
+ ]
321
+
322
+ [[package]]
323
+ name = "target-lexicon"
324
+ version = "0.13.5"
325
+ source = "registry+https://github.com/rust-lang/crates.io-index"
326
+ checksum = "adb6935a6f5c20170eeceb1a3835a49e12e19d792f6dd344ccc76a985ca5a6ca"
327
+
328
+ [[package]]
329
+ name = "typenum"
330
+ version = "1.20.1"
331
+ source = "registry+https://github.com/rust-lang/crates.io-index"
332
+ checksum = "b6f5e870be6c3b371b77fe0ee0bafb859fa4964b4404c27de1d380043c4dda20"
333
+
334
+ [[package]]
335
+ name = "unicode-ident"
336
+ version = "1.0.27"
337
+ source = "registry+https://github.com/rust-lang/crates.io-index"
338
+ checksum = "a2c754d6c33795a1c324727428e5a7dedb5b06195f9890bdbcba760d3e246563"
339
+
340
+ [[package]]
341
+ name = "version_check"
342
+ version = "0.9.5"
343
+ source = "registry+https://github.com/rust-lang/crates.io-index"
344
+ checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a"
345
+
346
+ [[package]]
347
+ name = "zmij"
348
+ version = "1.0.23"
349
+ source = "registry+https://github.com/rust-lang/crates.io-index"
350
+ checksum = "29666d0abbfad1e3dc4dcf6144730dd3a3ab225bbbdac83319345b1b44ccfc1b"
cq_jt-0.3.0/Cargo.toml ADDED
@@ -0,0 +1,15 @@
1
+ [workspace]
2
+ members = ["crates/cq-jt-py"]
3
+ resolver = "2"
4
+
5
+ [workspace.package]
6
+ version = "0.3.0"
7
+ edition = "2021"
8
+ rust-version = "1.83"
9
+ license = "MIT"
10
+ repository = "https://github.com/monozukuri-ai/cq-jt"
11
+
12
+ [workspace.dependencies]
13
+ jt-core = { path = "crates/jt-core", version = "=0.3.0" }
14
+ jt-py-bridge = { path = "crates/jt-py-bridge", version = "=0.3.0" }
15
+ pyo3 = { version = "=0.29.2", features = ["abi3-py311"] }
cq_jt-0.3.0/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 monozukuri-ai contributors
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
cq_jt-0.3.0/PKG-INFO ADDED
@@ -0,0 +1,126 @@
1
+ Metadata-Version: 2.4
2
+ Name: cq-jt
3
+ Version: 0.3.0
4
+ License-File: LICENSE
5
+ License-File: THIRD_PARTY_NOTICES.md
6
+ License-File: licenses/adler2-2.0.1-LICENSE-MIT.txt
7
+ License-File: licenses/block-buffer-0.10.4-LICENSE-MIT.txt
8
+ License-File: licenses/cfg-if-1.0.5-LICENSE-MIT.txt
9
+ License-File: licenses/cpufeatures-0.2.17-LICENSE-MIT.txt
10
+ License-File: licenses/crc32fast-1.5.0-LICENSE-MIT.txt
11
+ License-File: licenses/crypto-common-0.1.7-LICENSE-MIT.txt
12
+ License-File: licenses/digest-0.10.7-LICENSE-MIT.txt
13
+ License-File: licenses/flate2-1.1.10-LICENSE-MIT.txt
14
+ License-File: licenses/generic-array-0.14.7-LICENSE.txt
15
+ License-File: licenses/heck-0.5.0-LICENSE-MIT.txt
16
+ License-File: licenses/itoa-1.0.18-LICENSE-MIT.txt
17
+ License-File: licenses/libc-0.2.191-LICENSE-MIT.txt
18
+ License-File: licenses/lzma-rust2-0.15.8-LICENSE.txt
19
+ License-File: licenses/memchr-2.8.3-LICENSE-MIT.txt
20
+ License-File: licenses/miniz_oxide-0.9.1-LICENSE-MIT.txt
21
+ License-File: licenses/once_cell-1.21.4-LICENSE-MIT.txt
22
+ License-File: licenses/portable-atomic-1.15.0-LICENSE-MIT.txt
23
+ License-File: licenses/proc-macro2-1.0.107-LICENSE-MIT.txt
24
+ License-File: licenses/pyo3-0.29.2-LICENSE-MIT.txt
25
+ License-File: licenses/pyo3-build-config-0.29.2-LICENSE-MIT.txt
26
+ License-File: licenses/pyo3-ffi-0.29.2-LICENSE-MIT.txt
27
+ License-File: licenses/pyo3-macros-0.29.2-LICENSE-MIT.txt
28
+ License-File: licenses/pyo3-macros-backend-0.29.2-LICENSE-MIT.txt
29
+ License-File: licenses/quote-1.0.47-LICENSE-MIT.txt
30
+ License-File: licenses/serde-1.0.229-LICENSE-MIT.txt
31
+ License-File: licenses/serde_core-1.0.229-LICENSE-MIT.txt
32
+ License-File: licenses/serde_derive-1.0.229-LICENSE-MIT.txt
33
+ License-File: licenses/serde_json-1.0.154-LICENSE-MIT.txt
34
+ License-File: licenses/sha2-0.10.9-LICENSE-MIT.txt
35
+ License-File: licenses/simd-adler32-0.3.10-LICENSE.txt
36
+ License-File: licenses/syn-2.0.119-LICENSE-MIT.txt
37
+ License-File: licenses/syn-3.0.9-LICENSE-MIT.txt
38
+ License-File: licenses/target-lexicon-0.13.5-LICENSE.txt
39
+ License-File: licenses/typenum-1.20.1-LICENSE-MIT.txt
40
+ License-File: licenses/unicode-ident-1.0.27-LICENSE-MIT.txt
41
+ License-File: licenses/unicode-ident-1.0.27-LICENSE-UNICODE.txt
42
+ License-File: licenses/version_check-0.9.5-LICENSE-MIT.txt
43
+ License-File: licenses/zmij-1.0.23-LICENSE-MIT.txt
44
+ License-File: licenses/manifest.json
45
+ Summary: Bounded JT reading and GLB export with a Rust core and Python bindings
46
+ License-Expression: MIT
47
+ Requires-Python: >=3.11
48
+ Description-Content-Type: text/markdown; charset=UTF-8; variant=GFM
49
+
50
+ # cq-jt
51
+
52
+ A JT reader and GLB exporter with a Python-independent Rust core and thin Python bindings.
53
+
54
+ Read product structure, part placements, materials and selected triangle meshes from **JT 9.5, 10.0 and 10.3**. Inspect container boundaries, decode ZLIB/XZ streams, resolve local external JT references, and retain source information and opaque data.
55
+
56
+ JT 10.6 is available as an **explicit experimental opt-in**. Compatibility with native JT 10.6 exports has not been verified. See [compatibility and limitations](docs/compatibility.md).
57
+
58
+ ## Requirements and installation
59
+
60
+ Python 3.11 or later is required. This project is under development and has not been published to PyPI.
61
+
62
+ To build from a source checkout, install Rust 1.83 or later and [uv](https://docs.astral.sh/uv/), then run:
63
+
64
+ ```bash
65
+ uv sync --locked --group dev
66
+ uv run python -m cq_jt --help
67
+ ```
68
+
69
+ To install a locally built wheel, use `python -m pip install /path/to/cq_jt-<version>-<tags>.whl`. Wheel users do not need Rust, CadQuery, NumPy, Java, .NET or a CAD application. Locally verified wheel environments are Linux x86_64 with CPython 3.11–3.14; other platforms are not yet verified.
70
+
71
+ ## Quick start
72
+
73
+ ```python
74
+ import cq_jt as jt
75
+
76
+ scene = jt.read("assembly.jt")
77
+ print(scene.complete, len(scene.meshes), len(scene.instances))
78
+
79
+ buffers = scene.mesh_buffers(0) # Explicit packed-array copies
80
+ print(buffers.positions.dtype, buffers.positions.shape)
81
+ print(buffers.triangles.dtype, buffers.triangles.shape)
82
+
83
+ report = jt.export_glb(scene, "assembly.glb")
84
+ print(report.instance_count, report.placed_triangle_count)
85
+
86
+ # Read and export in one call:
87
+ # report = jt.convert("assembly.jt", "another.glb")
88
+ ```
89
+
90
+ File reads resolve external Partition references within the input file's parent directory by default. Use `ResolverOptions(root=...)` to select another allowed root, or `enabled=False` to disable external reads. Bytes-based and structure-only APIs do not open external files.
91
+
92
+ Missing units or colors require explicit supplements. Partial scenes require explicit export permission. Existing output files are protected by default. GLB output contains display triangles and approximate PBR materials; precise geometry, PMI interpretation and CAD editing history are outside the supported profile.
93
+
94
+ ## Command line
95
+
96
+ ```bash
97
+ python -m cq_jt inspect part.jt --json
98
+ python -m cq_jt decode part.jt --json
99
+ python -m cq_jt structure part.jt --json
100
+ python -m cq_jt mesh part.jt --lod highest --json
101
+ python -m cq_jt convert part.jt part.glb --json
102
+ ```
103
+
104
+ ## Documentation
105
+
106
+ - [Documentation index](docs/README.md)
107
+ - [API guide](docs/model-api.md): reading, arrays, units, external references, export and errors
108
+ - [Compatibility](docs/compatibility.md): supported profiles and experimental JT 10.6
109
+ - [Conversion example](examples/README.md)
110
+ - [Rust core](crates/jt-core/README.md)
111
+
112
+ ## Development
113
+
114
+ ```bash
115
+ uv run pytest
116
+ cargo test -p jt-core --locked --features glb
117
+ uv run python scripts/build_python_release.py
118
+ python scripts/check_publication.py
119
+ ```
120
+
121
+ The included tests and fixtures can run from a public checkout without acquired CAD data or proprietary tools.
122
+
123
+ ## License
124
+
125
+ MIT. Dependency licenses, Siemens format notices and other attributions are included in [THIRD_PARTY_NOTICES.md](THIRD_PARTY_NOTICES.md) and [licenses/](licenses/).
126
+
cq_jt-0.3.0/README.md ADDED
@@ -0,0 +1,76 @@
1
+ # cq-jt
2
+
3
+ A JT reader and GLB exporter with a Python-independent Rust core and thin Python bindings.
4
+
5
+ Read product structure, part placements, materials and selected triangle meshes from **JT 9.5, 10.0 and 10.3**. Inspect container boundaries, decode ZLIB/XZ streams, resolve local external JT references, and retain source information and opaque data.
6
+
7
+ JT 10.6 is available as an **explicit experimental opt-in**. Compatibility with native JT 10.6 exports has not been verified. See [compatibility and limitations](docs/compatibility.md).
8
+
9
+ ## Requirements and installation
10
+
11
+ Python 3.11 or later is required. This project is under development and has not been published to PyPI.
12
+
13
+ To build from a source checkout, install Rust 1.83 or later and [uv](https://docs.astral.sh/uv/), then run:
14
+
15
+ ```bash
16
+ uv sync --locked --group dev
17
+ uv run python -m cq_jt --help
18
+ ```
19
+
20
+ To install a locally built wheel, use `python -m pip install /path/to/cq_jt-<version>-<tags>.whl`. Wheel users do not need Rust, CadQuery, NumPy, Java, .NET or a CAD application. Locally verified wheel environments are Linux x86_64 with CPython 3.11–3.14; other platforms are not yet verified.
21
+
22
+ ## Quick start
23
+
24
+ ```python
25
+ import cq_jt as jt
26
+
27
+ scene = jt.read("assembly.jt")
28
+ print(scene.complete, len(scene.meshes), len(scene.instances))
29
+
30
+ buffers = scene.mesh_buffers(0) # Explicit packed-array copies
31
+ print(buffers.positions.dtype, buffers.positions.shape)
32
+ print(buffers.triangles.dtype, buffers.triangles.shape)
33
+
34
+ report = jt.export_glb(scene, "assembly.glb")
35
+ print(report.instance_count, report.placed_triangle_count)
36
+
37
+ # Read and export in one call:
38
+ # report = jt.convert("assembly.jt", "another.glb")
39
+ ```
40
+
41
+ File reads resolve external Partition references within the input file's parent directory by default. Use `ResolverOptions(root=...)` to select another allowed root, or `enabled=False` to disable external reads. Bytes-based and structure-only APIs do not open external files.
42
+
43
+ Missing units or colors require explicit supplements. Partial scenes require explicit export permission. Existing output files are protected by default. GLB output contains display triangles and approximate PBR materials; precise geometry, PMI interpretation and CAD editing history are outside the supported profile.
44
+
45
+ ## Command line
46
+
47
+ ```bash
48
+ python -m cq_jt inspect part.jt --json
49
+ python -m cq_jt decode part.jt --json
50
+ python -m cq_jt structure part.jt --json
51
+ python -m cq_jt mesh part.jt --lod highest --json
52
+ python -m cq_jt convert part.jt part.glb --json
53
+ ```
54
+
55
+ ## Documentation
56
+
57
+ - [Documentation index](docs/README.md)
58
+ - [API guide](docs/model-api.md): reading, arrays, units, external references, export and errors
59
+ - [Compatibility](docs/compatibility.md): supported profiles and experimental JT 10.6
60
+ - [Conversion example](examples/README.md)
61
+ - [Rust core](crates/jt-core/README.md)
62
+
63
+ ## Development
64
+
65
+ ```bash
66
+ uv run pytest
67
+ cargo test -p jt-core --locked --features glb
68
+ uv run python scripts/build_python_release.py
69
+ python scripts/check_publication.py
70
+ ```
71
+
72
+ The included tests and fixtures can run from a public checkout without acquired CAD data or proprietary tools.
73
+
74
+ ## License
75
+
76
+ MIT. Dependency licenses, Siemens format notices and other attributions are included in [THIRD_PARTY_NOTICES.md](THIRD_PARTY_NOTICES.md) and [licenses/](licenses/).
@@ -0,0 +1,64 @@
1
+ # Third party notices
2
+
3
+ The Python extension uses PyO3 0.29.2 (MIT OR Apache-2.0) and its Rust
4
+ dependencies. Cargo.lock records the resolved versions. `licenses/manifest.json`
5
+ identifies all locked dependencies and their license texts, including build
6
+ dependencies. For dual MIT/Apache-2.0 licenses this distribution retains the
7
+ MIT text; target-lexicon's Apache-2.0 WITH LLVM-exception and unicode-ident's
8
+ additional Unicode-3.0 notice are retained separately. Their original
9
+ copyright and license terms continue to apply.
10
+
11
+ Outer compression uses flate2 1.1.10 (MIT OR Apache-2.0, Rust backend),
12
+ crc32fast 1.5.0 (MIT OR Apache-2.0), and lzma-rust2 0.15.8 (Apache-2.0),
13
+ with their locked Rust dependencies. Their license texts are in licenses/;
14
+ the MIT alternative is retained where offered. lzma-rust2 is a Rust port of
15
+ tukaani xz for java and a continuation of lzma-rust:
16
+ https://github.com/hasenbanck/lzma-rust2/
17
+ No external shared libz or liblzma is used by this package. The bounded XZ
18
+ framing checks follow the public-domain XZ file format specification 1.2.1:
19
+ https://tukaani.org/xz/xz-file-format-1.2.1.txt
20
+
21
+ The package layout and Rust/Python boundary were informed by cq-acis
22
+ (MIT, https://github.com/monozukuri-ai/cq-acis). The scene model is specific
23
+ to this project; ACIS entity implementations are not included.
24
+
25
+ JT is a Siemens format and trademark. The JT data structures and identifiers
26
+ used by the container reader are Copyright 2026 Siemens. They are used under
27
+ the Siemens JT Data Format Reference Intellectual Property License Terms,
28
+ JT 10.6 Rev D (10 February 2026), page ii, for interpreting JT input. Those
29
+ terms permit the necessary use of the listed structures and operators with
30
+ an appropriate copyright notice; they do not grant a license to Siemens SDK
31
+ code, documentation, trademarks or patents. Any applicable patent permission
32
+ is governed separately by Siemens' official clarification notice.
33
+
34
+ The reader's implementation code is MIT licensed. This distribution includes
35
+ no Siemens SDK code, specification documents or sample CAD files. The research
36
+ probe, downloaded third-party source snapshots and research material are also
37
+ excluded from Python distributions. Official specification access and notices:
38
+ https://www.siemens.com/en-us/products/plm-components/jt/jt-open-program/
39
+
40
+ JT 9.5 structures and identifiers are Copyright 2010 Siemens Product Lifecycle
41
+ Management Software Inc. They are used under the JT 9.5 Rev A Data Format
42
+ Reference Intellectual Property License Terms, section 1, for interpreting JT
43
+ input. The structure reader was checked against that Siemens specification and
44
+ the pinned legacy source references; no third-party JT reader code is included.
45
+
46
+ The JT 9.5 mesh data structures and decoding algorithms follow sections
47
+ 7.2.2 and 8, and Appendices C, D and E of that reference, under the same
48
+ Siemens copyright notice and IP license terms. The small hash implementation
49
+ in `mesh/hash.rs` follows Bob Jenkins' 1996 algorithm from Appendix D, whose
50
+ notice permits private, educational and commercial use without restriction.
51
+ No Java or C# runtime or third-party JT reader is bundled or required.
52
+
53
+ JT 10.0 structures and identifiers are Copyright 2015 Siemens Product Lifecycle
54
+ Management Software Inc. (JT File Format Reference Version 10.0 Rev-B, cover;
55
+ internal pages also carry a 2014 notice). They are used under section 1 of that
56
+ reference for interpreting JT input. The 10.0/10.3 reader was checked against
57
+ this specification, later Siemens references and pinned MIT JTReader source.
58
+ No JTReader source, .NET SDK or development-only comparison dependency is
59
+ included in or required by this distribution.
60
+
61
+ The opt-in experimental JT 10.6 structure/mesh profile uses the structures and
62
+ operators from JT 10.6 Rev D, Copyright 2026 Siemens, under the same IP license
63
+ terms noted above. Its authored specification controls are not native CAD exports
64
+ and do not establish JT 10.6 file compatibility.
@@ -0,0 +1,18 @@
1
+ [package]
2
+ name = "cq-jt-py"
3
+ version.workspace = true
4
+ edition.workspace = true
5
+ rust-version.workspace = true
6
+ license.workspace = true
7
+ repository.workspace = true
8
+ description = "Native Python module for the cq-jt model foundation"
9
+ publish = false
10
+
11
+ [lib]
12
+ name = "_native"
13
+ crate-type = ["cdylib", "rlib"]
14
+
15
+ [dependencies]
16
+ jt-core = { workspace = true, features = ["glb"] }
17
+ jt-py-bridge = { workspace = true, features = ["glb"] }
18
+ pyo3.workspace = true