ezexb 0.1.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 (78) hide show
  1. ezexb-0.1.0/Cargo.lock +477 -0
  2. ezexb-0.1.0/Cargo.toml +18 -0
  3. ezexb-0.1.0/LICENSE +21 -0
  4. ezexb-0.1.0/PKG-INFO +122 -0
  5. ezexb-0.1.0/README.md +105 -0
  6. ezexb-0.1.0/crates/ezexb-core/Cargo.toml +22 -0
  7. ezexb-0.1.0/crates/ezexb-core/LICENSE +21 -0
  8. ezexb-0.1.0/crates/ezexb-core/README.md +73 -0
  9. ezexb-0.1.0/crates/ezexb-core/examples/analyze.rs +68 -0
  10. ezexb-0.1.0/crates/ezexb-core/examples/inspect.rs +22 -0
  11. ezexb-0.1.0/crates/ezexb-core/examples/make_analysis_fixture.rs +165 -0
  12. ezexb-0.1.0/crates/ezexb-core/examples/make_document_fixture.rs +29 -0
  13. ezexb-0.1.0/crates/ezexb-core/examples/make_fixture.rs +25 -0
  14. ezexb-0.1.0/crates/ezexb-core/examples/make_schema3_fixture.rs +144 -0
  15. ezexb-0.1.0/crates/ezexb-core/examples/read.rs +16 -0
  16. ezexb-0.1.0/crates/ezexb-core/examples/support/document_fixture.rs +351 -0
  17. ezexb-0.1.0/crates/ezexb-core/examples/world.rs +21 -0
  18. ezexb-0.1.0/crates/ezexb-core/src/annotation.rs +601 -0
  19. ezexb-0.1.0/crates/ezexb-core/src/attributes.rs +289 -0
  20. ezexb-0.1.0/crates/ezexb-core/src/complex.rs +1049 -0
  21. ezexb-0.1.0/crates/ezexb-core/src/compression.rs +345 -0
  22. ezexb-0.1.0/crates/ezexb-core/src/container.rs +475 -0
  23. ezexb-0.1.0/crates/ezexb-core/src/container_tests.rs +281 -0
  24. ezexb-0.1.0/crates/ezexb-core/src/context.rs +1774 -0
  25. ezexb-0.1.0/crates/ezexb-core/src/document.rs +707 -0
  26. ezexb-0.1.0/crates/ezexb-core/src/document_tests.rs +179 -0
  27. ezexb-0.1.0/crates/ezexb-core/src/error.rs +65 -0
  28. ezexb-0.1.0/crates/ezexb-core/src/geometry.rs +454 -0
  29. ezexb-0.1.0/crates/ezexb-core/src/lib.rs +131 -0
  30. ezexb-0.1.0/crates/ezexb-core/src/lines.rs +244 -0
  31. ezexb-0.1.0/crates/ezexb-core/src/metadata.rs +419 -0
  32. ezexb-0.1.0/crates/ezexb-core/src/preview.rs +218 -0
  33. ezexb-0.1.0/crates/ezexb-core/src/probe.rs +128 -0
  34. ezexb-0.1.0/crates/ezexb-core/src/records.rs +1380 -0
  35. ezexb-0.1.0/crates/ezexb-core/src/render.rs +550 -0
  36. ezexb-0.1.0/crates/ezexb-core/src/text_style.rs +255 -0
  37. ezexb-0.1.0/crates/ezexb-core/src/world.rs +1004 -0
  38. ezexb-0.1.0/crates/ezexb-python/Cargo.toml +21 -0
  39. ezexb-0.1.0/crates/ezexb-python/src/lib.rs +307 -0
  40. ezexb-0.1.0/docs/README.md +20 -0
  41. ezexb-0.1.0/docs/development.md +81 -0
  42. ezexb-0.1.0/docs/inspection.md +103 -0
  43. ezexb-0.1.0/docs/reading.md +176 -0
  44. ezexb-0.1.0/docs/releasing.md +78 -0
  45. ezexb-0.1.0/docs/stream-analysis.md +212 -0
  46. ezexb-0.1.0/pyproject.toml +63 -0
  47. ezexb-0.1.0/scripts/bump_version.py +95 -0
  48. ezexb-0.1.0/scripts/check_artifacts.py +240 -0
  49. ezexb-0.1.0/scripts/check_docs.py +48 -0
  50. ezexb-0.1.0/scripts/verify_wheel.py +64 -0
  51. ezexb-0.1.0/src/ezexb/__init__.py +257 -0
  52. ezexb-0.1.0/src/ezexb/__main__.py +3 -0
  53. ezexb-0.1.0/src/ezexb/_core.pyi +48 -0
  54. ezexb-0.1.0/src/ezexb/cli.py +219 -0
  55. ezexb-0.1.0/src/ezexb/complex.py +313 -0
  56. ezexb-0.1.0/src/ezexb/content.py +350 -0
  57. ezexb-0.1.0/src/ezexb/document.py +559 -0
  58. ezexb-0.1.0/src/ezexb/inspection.py +45 -0
  59. ezexb-0.1.0/src/ezexb/py.typed +0 -0
  60. ezexb-0.1.0/src/ezexb/raw.py +144 -0
  61. ezexb-0.1.0/src/ezexb/world.py +129 -0
  62. ezexb-0.1.0/tests/python/data/README.md +55 -0
  63. ezexb-0.1.0/tests/python/data/analysis.cfb +0 -0
  64. ezexb-0.1.0/tests/python/data/document-10.cfb +0 -0
  65. ezexb-0.1.0/tests/python/data/document-18.cfb +0 -0
  66. ezexb-0.1.0/tests/python/data/document-partial.cfb +0 -0
  67. ezexb-0.1.0/tests/python/data/schema3-33.cfb +0 -0
  68. ezexb-0.1.0/tests/python/data/schema3-37.cfb +0 -0
  69. ezexb-0.1.0/tests/python/data/synthetic.cfb +0 -0
  70. ezexb-0.1.0/tests/python/test_api.py +76 -0
  71. ezexb-0.1.0/tests/python/test_container.py +188 -0
  72. ezexb-0.1.0/tests/python/test_content.py +230 -0
  73. ezexb-0.1.0/tests/python/test_document.py +81 -0
  74. ezexb-0.1.0/tests/python/test_install.py +40 -0
  75. ezexb-0.1.0/tests/python/test_schema3.py +151 -0
  76. ezexb-0.1.0/tests/python/test_world.py +80 -0
  77. ezexb-0.1.0/tests/tooling/test_artifacts.py +69 -0
  78. ezexb-0.1.0/uv.lock +230 -0
ezexb-0.1.0/Cargo.lock ADDED
@@ -0,0 +1,477 @@
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 = "bumpalo"
22
+ version = "3.20.3"
23
+ source = "registry+https://github.com/rust-lang/crates.io-index"
24
+ checksum = "72f5acc6cb2ba439de613abc23857ec3d78374d8ed5ac84e9d11336e87da8649"
25
+
26
+ [[package]]
27
+ name = "cfb"
28
+ version = "0.15.0"
29
+ source = "registry+https://github.com/rust-lang/crates.io-index"
30
+ checksum = "0f13298d9178622b7916ec5d01d470425c04273c8ed07e87b1c38b34c4f4612b"
31
+ dependencies = [
32
+ "fnv",
33
+ "uuid",
34
+ "web-time",
35
+ ]
36
+
37
+ [[package]]
38
+ name = "cfg-if"
39
+ version = "1.0.5"
40
+ source = "registry+https://github.com/rust-lang/crates.io-index"
41
+ checksum = "4e7648175b45a9a48536d676f68d918270699102aa8dab5496df06904c914600"
42
+
43
+ [[package]]
44
+ name = "cpufeatures"
45
+ version = "0.2.17"
46
+ source = "registry+https://github.com/rust-lang/crates.io-index"
47
+ checksum = "59ed5838eebb26a2bb2e58f6d5b5316989ae9d08bab10e0e6d103e656d1b0280"
48
+ dependencies = [
49
+ "libc",
50
+ ]
51
+
52
+ [[package]]
53
+ name = "crc32fast"
54
+ version = "1.5.2"
55
+ source = "registry+https://github.com/rust-lang/crates.io-index"
56
+ checksum = "01a7799fd6b852db0e61728dde9a204c423b44d689dbd432522543614b490e78"
57
+ dependencies = [
58
+ "cfg-if",
59
+ ]
60
+
61
+ [[package]]
62
+ name = "crypto-common"
63
+ version = "0.1.7"
64
+ source = "registry+https://github.com/rust-lang/crates.io-index"
65
+ checksum = "78c8292055d1c1df0cce5d180393dc8cce0abec0a7102adb6c7b1eef6016d60a"
66
+ dependencies = [
67
+ "generic-array",
68
+ "typenum",
69
+ ]
70
+
71
+ [[package]]
72
+ name = "digest"
73
+ version = "0.10.7"
74
+ source = "registry+https://github.com/rust-lang/crates.io-index"
75
+ checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292"
76
+ dependencies = [
77
+ "block-buffer",
78
+ "crypto-common",
79
+ ]
80
+
81
+ [[package]]
82
+ name = "ezexb-core"
83
+ version = "0.1.0"
84
+ dependencies = [
85
+ "cfb",
86
+ "flate2",
87
+ "serde",
88
+ "serde_json",
89
+ "sha2",
90
+ "uuid",
91
+ ]
92
+
93
+ [[package]]
94
+ name = "ezexb-python"
95
+ version = "0.1.0"
96
+ dependencies = [
97
+ "ezexb-core",
98
+ "pyo3",
99
+ "serde_json",
100
+ ]
101
+
102
+ [[package]]
103
+ name = "flate2"
104
+ version = "1.1.10"
105
+ source = "registry+https://github.com/rust-lang/crates.io-index"
106
+ checksum = "6e634e2e0ebac1ee034020da1ca582e17ffe4e0f5e985823721e168928136dcb"
107
+ dependencies = [
108
+ "crc32fast",
109
+ "miniz_oxide",
110
+ ]
111
+
112
+ [[package]]
113
+ name = "fnv"
114
+ version = "1.0.7"
115
+ source = "registry+https://github.com/rust-lang/crates.io-index"
116
+ checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1"
117
+
118
+ [[package]]
119
+ name = "futures-core"
120
+ version = "0.3.34"
121
+ source = "registry+https://github.com/rust-lang/crates.io-index"
122
+ checksum = "92d699e522242e69e3003b94ecc1f960f3a5e015aa7c5d7486e65ad01dd94f5e"
123
+
124
+ [[package]]
125
+ name = "futures-task"
126
+ version = "0.3.34"
127
+ source = "registry+https://github.com/rust-lang/crates.io-index"
128
+ checksum = "cd417de3d1d015fc3bfd2b1ea46dfc7bab72ef86f1cc7cc9c78e728b34a6d1fd"
129
+
130
+ [[package]]
131
+ name = "futures-util"
132
+ version = "0.3.34"
133
+ source = "registry+https://github.com/rust-lang/crates.io-index"
134
+ checksum = "0d50a92467f8ba5dd6e3ee5d4bd04d73ab2e4e1c44474a0674821dfce14b79bc"
135
+ dependencies = [
136
+ "futures-core",
137
+ "futures-task",
138
+ "pin-project-lite",
139
+ "slab",
140
+ ]
141
+
142
+ [[package]]
143
+ name = "generic-array"
144
+ version = "0.14.7"
145
+ source = "registry+https://github.com/rust-lang/crates.io-index"
146
+ checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a"
147
+ dependencies = [
148
+ "typenum",
149
+ "version_check",
150
+ ]
151
+
152
+ [[package]]
153
+ name = "heck"
154
+ version = "0.5.0"
155
+ source = "registry+https://github.com/rust-lang/crates.io-index"
156
+ checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea"
157
+
158
+ [[package]]
159
+ name = "itoa"
160
+ version = "1.0.18"
161
+ source = "registry+https://github.com/rust-lang/crates.io-index"
162
+ checksum = "8f42a60cbdf9a97f5d2305f08a87dc4e09308d1276d28c869c684d7777685682"
163
+
164
+ [[package]]
165
+ name = "js-sys"
166
+ version = "0.3.106"
167
+ source = "registry+https://github.com/rust-lang/crates.io-index"
168
+ checksum = "7883d941dae510fb2d978fc3fe018c71c9e2892fd38854de3e8b92c2e5ad9cc5"
169
+ dependencies = [
170
+ "cfg-if",
171
+ "futures-util",
172
+ "wasm-bindgen",
173
+ ]
174
+
175
+ [[package]]
176
+ name = "libc"
177
+ version = "0.2.191"
178
+ source = "registry+https://github.com/rust-lang/crates.io-index"
179
+ checksum = "65cd87c9a6d60536580b316ad985726104730a5151c99845f2490428ef91240a"
180
+
181
+ [[package]]
182
+ name = "memchr"
183
+ version = "2.8.3"
184
+ source = "registry+https://github.com/rust-lang/crates.io-index"
185
+ checksum = "cf8baf1c55e62ffcace7a9f06f4bd9cd3f0c4beb022d3b367256b91b87513d98"
186
+
187
+ [[package]]
188
+ name = "miniz_oxide"
189
+ version = "0.9.1"
190
+ source = "registry+https://github.com/rust-lang/crates.io-index"
191
+ checksum = "b63fbc4a50860e98e7b2aa7804ded1db5cbc3aff9193adaff57a6931bf7c4b4c"
192
+ dependencies = [
193
+ "adler2",
194
+ "simd-adler32",
195
+ ]
196
+
197
+ [[package]]
198
+ name = "once_cell"
199
+ version = "1.21.4"
200
+ source = "registry+https://github.com/rust-lang/crates.io-index"
201
+ checksum = "9f7c3e4beb33f85d45ae3e3a1792185706c8e16d043238c593331cc7cd313b50"
202
+
203
+ [[package]]
204
+ name = "pin-project-lite"
205
+ version = "0.2.17"
206
+ source = "registry+https://github.com/rust-lang/crates.io-index"
207
+ checksum = "a89322df9ebe1c1578d689c92318e070967d1042b512afbe49518723f4e6d5cd"
208
+
209
+ [[package]]
210
+ name = "portable-atomic"
211
+ version = "1.15.0"
212
+ source = "registry+https://github.com/rust-lang/crates.io-index"
213
+ checksum = "05c8b63e8d9609db387f0324918f81d68fe27748f084ef092fb35954d0539a85"
214
+
215
+ [[package]]
216
+ name = "proc-macro2"
217
+ version = "1.0.107"
218
+ source = "registry+https://github.com/rust-lang/crates.io-index"
219
+ checksum = "985e7ec9bb745e6ce6535b544d84d6cd6f7ad8bd711c398938ae983b91a766d9"
220
+ dependencies = [
221
+ "unicode-ident",
222
+ ]
223
+
224
+ [[package]]
225
+ name = "pyo3"
226
+ version = "0.29.3"
227
+ source = "registry+https://github.com/rust-lang/crates.io-index"
228
+ checksum = "700d18fa267b73b9b521fd7e13580e2f446916f176cacee1ab63fcc8191f1655"
229
+ dependencies = [
230
+ "libc",
231
+ "once_cell",
232
+ "portable-atomic",
233
+ "pyo3-build-config",
234
+ "pyo3-ffi",
235
+ "pyo3-macros",
236
+ ]
237
+
238
+ [[package]]
239
+ name = "pyo3-build-config"
240
+ version = "0.29.3"
241
+ source = "registry+https://github.com/rust-lang/crates.io-index"
242
+ checksum = "7b3fc0c4d08f6bb10e71fe39dfb9e2f59c6eb6854e22ec8092f50c69a4499adb"
243
+ dependencies = [
244
+ "target-lexicon",
245
+ ]
246
+
247
+ [[package]]
248
+ name = "pyo3-ffi"
249
+ version = "0.29.3"
250
+ source = "registry+https://github.com/rust-lang/crates.io-index"
251
+ checksum = "dfc0b8e19df29aad7086cf977bb0c2a2f143e30567eb113e9cf72b62ca698330"
252
+ dependencies = [
253
+ "libc",
254
+ "pyo3-build-config",
255
+ ]
256
+
257
+ [[package]]
258
+ name = "pyo3-macros"
259
+ version = "0.29.3"
260
+ source = "registry+https://github.com/rust-lang/crates.io-index"
261
+ checksum = "6100e8a4b5eba53afaa5ed078364851a0b2499c553a44c31026b929049b49dc6"
262
+ dependencies = [
263
+ "proc-macro2",
264
+ "pyo3-macros-backend",
265
+ "quote",
266
+ "syn 2.0.119",
267
+ ]
268
+
269
+ [[package]]
270
+ name = "pyo3-macros-backend"
271
+ version = "0.29.3"
272
+ source = "registry+https://github.com/rust-lang/crates.io-index"
273
+ checksum = "6143877a16e82b5a727b7127ff4cd86858a24a28d745d72f43e6f227c7b1bdb3"
274
+ dependencies = [
275
+ "heck",
276
+ "proc-macro2",
277
+ "quote",
278
+ "syn 2.0.119",
279
+ ]
280
+
281
+ [[package]]
282
+ name = "quote"
283
+ version = "1.0.47"
284
+ source = "registry+https://github.com/rust-lang/crates.io-index"
285
+ checksum = "1fbf4db142a473a8d80c26bbf18454ed458bf8d26c8219c331daecfdbd079001"
286
+ dependencies = [
287
+ "proc-macro2",
288
+ ]
289
+
290
+ [[package]]
291
+ name = "rustversion"
292
+ version = "1.0.23"
293
+ source = "registry+https://github.com/rust-lang/crates.io-index"
294
+ checksum = "cf54715a573b99ac80df0bc206da022bcd442c974952c7b9720069370852e21f"
295
+
296
+ [[package]]
297
+ name = "serde"
298
+ version = "1.0.229"
299
+ source = "registry+https://github.com/rust-lang/crates.io-index"
300
+ checksum = "4148590afebada386688f18773da617792bf2ef03ffc1e4cbd2b1d45b023e0ba"
301
+ dependencies = [
302
+ "serde_core",
303
+ "serde_derive",
304
+ ]
305
+
306
+ [[package]]
307
+ name = "serde_core"
308
+ version = "1.0.229"
309
+ source = "registry+https://github.com/rust-lang/crates.io-index"
310
+ checksum = "67dca2c9c51e58a4791a4b1ed58308b39c64224d349a935ab5039aa360942a48"
311
+ dependencies = [
312
+ "serde_derive",
313
+ ]
314
+
315
+ [[package]]
316
+ name = "serde_derive"
317
+ version = "1.0.229"
318
+ source = "registry+https://github.com/rust-lang/crates.io-index"
319
+ checksum = "e7a5d71263a5a7d47b41f6b3f06ba276f10cc18b0931f1799f710578e2309348"
320
+ dependencies = [
321
+ "proc-macro2",
322
+ "quote",
323
+ "syn 3.0.9",
324
+ ]
325
+
326
+ [[package]]
327
+ name = "serde_json"
328
+ version = "1.0.154"
329
+ source = "registry+https://github.com/rust-lang/crates.io-index"
330
+ checksum = "e7e9cc8b1b85264074fbcc02a88680c4096b1e47df8f739dceb03bf482f04bd6"
331
+ dependencies = [
332
+ "itoa",
333
+ "memchr",
334
+ "serde",
335
+ "serde_core",
336
+ "zmij",
337
+ ]
338
+
339
+ [[package]]
340
+ name = "sha2"
341
+ version = "0.10.9"
342
+ source = "registry+https://github.com/rust-lang/crates.io-index"
343
+ checksum = "a7507d819769d01a365ab707794a4084392c824f54a7a6a7862f8c3d0892b283"
344
+ dependencies = [
345
+ "cfg-if",
346
+ "cpufeatures",
347
+ "digest",
348
+ ]
349
+
350
+ [[package]]
351
+ name = "simd-adler32"
352
+ version = "0.3.10"
353
+ source = "registry+https://github.com/rust-lang/crates.io-index"
354
+ checksum = "3a219298ac11a56ea9a6d2120044824d6f01aeb034955e7af7bc16858527deea"
355
+
356
+ [[package]]
357
+ name = "slab"
358
+ version = "0.4.12"
359
+ source = "registry+https://github.com/rust-lang/crates.io-index"
360
+ checksum = "0c790de23124f9ab44544d7ac05d60440adc586479ce501c1d6d7da3cd8c9cf5"
361
+
362
+ [[package]]
363
+ name = "syn"
364
+ version = "2.0.119"
365
+ source = "registry+https://github.com/rust-lang/crates.io-index"
366
+ checksum = "872831b642d1a07999a962a351ed35b955ea2cfc8f3862091e2a240a84f17297"
367
+ dependencies = [
368
+ "proc-macro2",
369
+ "quote",
370
+ "unicode-ident",
371
+ ]
372
+
373
+ [[package]]
374
+ name = "syn"
375
+ version = "3.0.9"
376
+ source = "registry+https://github.com/rust-lang/crates.io-index"
377
+ checksum = "d78c8dee4c7bf0e14673097256fed6142ce9d3b85a408189d07482442145823b"
378
+ dependencies = [
379
+ "proc-macro2",
380
+ "quote",
381
+ "unicode-ident",
382
+ ]
383
+
384
+ [[package]]
385
+ name = "target-lexicon"
386
+ version = "0.13.5"
387
+ source = "registry+https://github.com/rust-lang/crates.io-index"
388
+ checksum = "adb6935a6f5c20170eeceb1a3835a49e12e19d792f6dd344ccc76a985ca5a6ca"
389
+
390
+ [[package]]
391
+ name = "typenum"
392
+ version = "1.20.1"
393
+ source = "registry+https://github.com/rust-lang/crates.io-index"
394
+ checksum = "b6f5e870be6c3b371b77fe0ee0bafb859fa4964b4404c27de1d380043c4dda20"
395
+
396
+ [[package]]
397
+ name = "unicode-ident"
398
+ version = "1.0.27"
399
+ source = "registry+https://github.com/rust-lang/crates.io-index"
400
+ checksum = "a2c754d6c33795a1c324727428e5a7dedb5b06195f9890bdbcba760d3e246563"
401
+
402
+ [[package]]
403
+ name = "uuid"
404
+ version = "1.20.0"
405
+ source = "registry+https://github.com/rust-lang/crates.io-index"
406
+ checksum = "ee48d38b119b0cd71fe4141b30f5ba9c7c5d9f4e7a3a8b4a674e4b6ef789976f"
407
+ dependencies = [
408
+ "js-sys",
409
+ "wasm-bindgen",
410
+ ]
411
+
412
+ [[package]]
413
+ name = "version_check"
414
+ version = "0.9.5"
415
+ source = "registry+https://github.com/rust-lang/crates.io-index"
416
+ checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a"
417
+
418
+ [[package]]
419
+ name = "wasm-bindgen"
420
+ version = "0.2.129"
421
+ source = "registry+https://github.com/rust-lang/crates.io-index"
422
+ checksum = "9bb54f33acc68fd454578d9820b0bde1a1a3d17aa17bb7b6595806d02886d409"
423
+ dependencies = [
424
+ "cfg-if",
425
+ "once_cell",
426
+ "rustversion",
427
+ "wasm-bindgen-macro",
428
+ "wasm-bindgen-shared",
429
+ ]
430
+
431
+ [[package]]
432
+ name = "wasm-bindgen-macro"
433
+ version = "0.2.129"
434
+ source = "registry+https://github.com/rust-lang/crates.io-index"
435
+ checksum = "2e29d0c35b16e224a7eeb5cd2d25e3e1968fbd65604117b44d3b789d00ee8535"
436
+ dependencies = [
437
+ "quote",
438
+ "wasm-bindgen-macro-support",
439
+ ]
440
+
441
+ [[package]]
442
+ name = "wasm-bindgen-macro-support"
443
+ version = "0.2.129"
444
+ source = "registry+https://github.com/rust-lang/crates.io-index"
445
+ checksum = "6f501a8bc3719dba86ef8ae4728879c08001bea749eb1333ac5b91e040e2a6b7"
446
+ dependencies = [
447
+ "bumpalo",
448
+ "proc-macro2",
449
+ "quote",
450
+ "syn 3.0.9",
451
+ "wasm-bindgen-shared",
452
+ ]
453
+
454
+ [[package]]
455
+ name = "wasm-bindgen-shared"
456
+ version = "0.2.129"
457
+ source = "registry+https://github.com/rust-lang/crates.io-index"
458
+ checksum = "23f0c9c52aa7cd7d77769a4cfe2a9adb1b331f489a41d912ce14513d5ab995c6"
459
+ dependencies = [
460
+ "unicode-ident",
461
+ ]
462
+
463
+ [[package]]
464
+ name = "web-time"
465
+ version = "1.1.0"
466
+ source = "registry+https://github.com/rust-lang/crates.io-index"
467
+ checksum = "5a6580f308b1fad9207618087a65c04e7a10bc77e02c8e84e9b00dd4b12fa0bb"
468
+ dependencies = [
469
+ "js-sys",
470
+ "wasm-bindgen",
471
+ ]
472
+
473
+ [[package]]
474
+ name = "zmij"
475
+ version = "1.0.23"
476
+ source = "registry+https://github.com/rust-lang/crates.io-index"
477
+ checksum = "29666d0abbfad1e3dc4dcf6144730dd3a3ab225bbbdac83319345b1b44ccfc1b"
ezexb-0.1.0/Cargo.toml ADDED
@@ -0,0 +1,18 @@
1
+ [workspace]
2
+ members = ["crates/ezexb-core", "crates/ezexb-python"]
3
+ resolver = "2"
4
+
5
+ [workspace.package]
6
+ version = "0.1.0"
7
+ edition = "2021"
8
+ rust-version = "1.83"
9
+ license = "MIT"
10
+ repository = "https://github.com/monozukuri-ai/ezexb"
11
+ authors = ["neka-nat"]
12
+
13
+ [workspace.dependencies]
14
+ pyo3 = { version = "0.29.0", features = ["abi3-py310"] }
15
+
16
+ [profile.release]
17
+ lto = "thin"
18
+ codegen-units = 1
ezexb-0.1.0/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 neka-nat
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.
ezexb-0.1.0/PKG-INFO ADDED
@@ -0,0 +1,122 @@
1
+ Metadata-Version: 2.4
2
+ Name: ezexb
3
+ Version: 0.1.0
4
+ Classifier: Development Status :: 2 - Pre-Alpha
5
+ Classifier: Programming Language :: Python :: 3
6
+ Classifier: Programming Language :: Rust
7
+ License-File: LICENSE
8
+ Summary: Experimental CAXA EXB reader with a Rust core and Python API
9
+ Author: neka-nat
10
+ License-Expression: MIT
11
+ Requires-Python: >=3.10
12
+ Description-Content-Type: text/markdown; charset=UTF-8; variant=GFM
13
+ Project-URL: Documentation, https://github.com/monozukuri-ai/ezexb/tree/main/docs
14
+ Project-URL: Issues, https://github.com/monozukuri-ai/ezexb/issues
15
+ Project-URL: Repository, https://github.com/monozukuri-ai/ezexb
16
+
17
+ # ezexb
18
+
19
+ A read-only CAXA EXB parser with a Rust core, Python API and command-line tools.
20
+ No CAXA installation is required.
21
+
22
+ **Status: experimental.** The reader supports a limited set of EXB layouts and
23
+ returns explicit diagnostics for unsupported content. APIs may change before
24
+ 1.0. Use it to extract supported data; check the read report before relying on a
25
+ complete drawing.
26
+
27
+ ## Install
28
+
29
+ Requires GIL-enabled CPython 3.10 or newer. For a published release:
30
+
31
+ ```sh
32
+ python -m pip install ezexb
33
+ ```
34
+
35
+ To build from a source checkout, install Rust 1.83 or newer and run:
36
+
37
+ ```sh
38
+ python -m pip install .
39
+ ```
40
+
41
+ Prebuilt release wheels target Linux x86_64 (glibc 2.28+), Windows x86_64, and
42
+ macOS Intel / Apple silicon. A source install requires a Rust toolchain.
43
+ See [development](https://github.com/monozukuri-ai/ezexb/blob/main/docs/development.md) for an editable installation and tests.
44
+
45
+ ## Read a drawing
46
+
47
+ ```python
48
+ import ezexb
49
+
50
+ document = ezexb.read("drawing.exb", strict=False)
51
+ print("Complete:", document.report.complete)
52
+
53
+ for diagnostic in document.report.diagnostics:
54
+ print(diagnostic.code, diagnostic.stream_path, diagnostic.span)
55
+
56
+ for entity in document.entities:
57
+ if entity.kind == "Line":
58
+ print(entity.geometry.start, entity.geometry.end)
59
+ ```
60
+
61
+ `strict=False` requests a partial document. The default, `strict=True`, raises
62
+ `IncompleteReadError` when required content cannot be read; the exception carries
63
+ the same structured report. Unknown build profiles raise `UnsupportedFeatureError`
64
+ in both modes. Input and resource errors always raise.
65
+
66
+ Coordinates are stored in each block's coordinate system, and physical units
67
+ are not inferred. Use `read_world()` to expand a selected space. A complete report
68
+ means completeness within the [supported reader profile](https://github.com/monozukuri-ai/ezexb/blob/main/docs/reading.md), not
69
+ full EXB compatibility or CAXA display equivalence.
70
+
71
+ ## Command line
72
+
73
+ ```sh
74
+ ezexb capabilities --json
75
+ ezexb read drawing.exb --partial --json
76
+ ezexb inspect drawing.exb --json
77
+ ezexb streams drawing.exb --sha256 --json
78
+ ezexb metadata drawing.exb --json
79
+ ezexb preview drawing.exb --output preview.bmp
80
+ ```
81
+
82
+ List `document.spaces` to choose a space ID for world coordinates or an approximate
83
+ SVG. For example, if the desired space has ID `-7`:
84
+
85
+ ```sh
86
+ ezexb world drawing.exb --space=-7 --partial --json
87
+ ezexb svg drawing.exb --space=-7 --partial --output drawing.svg --json
88
+ ```
89
+
90
+ `read --partial` can exit successfully with `report.complete=false`; inspect the
91
+ JSON report in automation. Extraction commands refuse to overwrite existing files.
92
+ `preview` extracts a cached BMP; `svg` generates an approximate drawing preview.
93
+
94
+ ## Supported data
95
+
96
+ | Area | Available data |
97
+ | --- | --- |
98
+ | Geometry | LINE, CIRCLE, ARC, POLYLINE, stored NURBS and ELLIPSE parameters |
99
+ | Text and blocks | TEXT, INSERT, attached attributes, attribute definitions |
100
+ | Fills and dimensions | HATCH/SOLID boundaries and parameters; stored data and presentation for five dimension types |
101
+ | Context | Layers, linetypes, text styles, spaces and blocks |
102
+ | Inspection | CFB streams, metadata, embedded BMP, decoded payloads and record headers |
103
+
104
+ Support depends on the exact layout and build profile. Dimension construction
105
+ and associativity, physical units, external references, native font layout and
106
+ complete rendering remain unsupported. SVG uses approximate text and strokes;
107
+ it does not regenerate hatch fills. Writing and DXF export are not provided.
108
+
109
+ ## Documentation
110
+
111
+ - [Documentation index](https://github.com/monozukuri-ai/ezexb/blob/main/docs/README.md)
112
+ - [Reading, supported profiles and diagnostics](https://github.com/monozukuri-ai/ezexb/blob/main/docs/reading.md)
113
+ - [Container and stream inspection](https://github.com/monozukuri-ai/ezexb/blob/main/docs/inspection.md)
114
+ - [Metadata, previews and stream analysis](https://github.com/monozukuri-ai/ezexb/blob/main/docs/stream-analysis.md)
115
+ - [Rust core](https://github.com/monozukuri-ai/ezexb/blob/main/crates/ezexb-core/README.md)
116
+ - [Development](https://github.com/monozukuri-ai/ezexb/blob/main/docs/development.md) and [releasing](https://github.com/monozukuri-ai/ezexb/blob/main/docs/releasing.md)
117
+
118
+ ## License
119
+
120
+ MIT; see [LICENSE](https://github.com/monozukuri-ai/ezexb/blob/main/LICENSE). This license covers ezexb's own code. Third-party
121
+ drawings and vendor materials are not included in source or binary distributions.
122
+