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.
- ezexb-0.1.0/Cargo.lock +477 -0
- ezexb-0.1.0/Cargo.toml +18 -0
- ezexb-0.1.0/LICENSE +21 -0
- ezexb-0.1.0/PKG-INFO +122 -0
- ezexb-0.1.0/README.md +105 -0
- ezexb-0.1.0/crates/ezexb-core/Cargo.toml +22 -0
- ezexb-0.1.0/crates/ezexb-core/LICENSE +21 -0
- ezexb-0.1.0/crates/ezexb-core/README.md +73 -0
- ezexb-0.1.0/crates/ezexb-core/examples/analyze.rs +68 -0
- ezexb-0.1.0/crates/ezexb-core/examples/inspect.rs +22 -0
- ezexb-0.1.0/crates/ezexb-core/examples/make_analysis_fixture.rs +165 -0
- ezexb-0.1.0/crates/ezexb-core/examples/make_document_fixture.rs +29 -0
- ezexb-0.1.0/crates/ezexb-core/examples/make_fixture.rs +25 -0
- ezexb-0.1.0/crates/ezexb-core/examples/make_schema3_fixture.rs +144 -0
- ezexb-0.1.0/crates/ezexb-core/examples/read.rs +16 -0
- ezexb-0.1.0/crates/ezexb-core/examples/support/document_fixture.rs +351 -0
- ezexb-0.1.0/crates/ezexb-core/examples/world.rs +21 -0
- ezexb-0.1.0/crates/ezexb-core/src/annotation.rs +601 -0
- ezexb-0.1.0/crates/ezexb-core/src/attributes.rs +289 -0
- ezexb-0.1.0/crates/ezexb-core/src/complex.rs +1049 -0
- ezexb-0.1.0/crates/ezexb-core/src/compression.rs +345 -0
- ezexb-0.1.0/crates/ezexb-core/src/container.rs +475 -0
- ezexb-0.1.0/crates/ezexb-core/src/container_tests.rs +281 -0
- ezexb-0.1.0/crates/ezexb-core/src/context.rs +1774 -0
- ezexb-0.1.0/crates/ezexb-core/src/document.rs +707 -0
- ezexb-0.1.0/crates/ezexb-core/src/document_tests.rs +179 -0
- ezexb-0.1.0/crates/ezexb-core/src/error.rs +65 -0
- ezexb-0.1.0/crates/ezexb-core/src/geometry.rs +454 -0
- ezexb-0.1.0/crates/ezexb-core/src/lib.rs +131 -0
- ezexb-0.1.0/crates/ezexb-core/src/lines.rs +244 -0
- ezexb-0.1.0/crates/ezexb-core/src/metadata.rs +419 -0
- ezexb-0.1.0/crates/ezexb-core/src/preview.rs +218 -0
- ezexb-0.1.0/crates/ezexb-core/src/probe.rs +128 -0
- ezexb-0.1.0/crates/ezexb-core/src/records.rs +1380 -0
- ezexb-0.1.0/crates/ezexb-core/src/render.rs +550 -0
- ezexb-0.1.0/crates/ezexb-core/src/text_style.rs +255 -0
- ezexb-0.1.0/crates/ezexb-core/src/world.rs +1004 -0
- ezexb-0.1.0/crates/ezexb-python/Cargo.toml +21 -0
- ezexb-0.1.0/crates/ezexb-python/src/lib.rs +307 -0
- ezexb-0.1.0/docs/README.md +20 -0
- ezexb-0.1.0/docs/development.md +81 -0
- ezexb-0.1.0/docs/inspection.md +103 -0
- ezexb-0.1.0/docs/reading.md +176 -0
- ezexb-0.1.0/docs/releasing.md +78 -0
- ezexb-0.1.0/docs/stream-analysis.md +212 -0
- ezexb-0.1.0/pyproject.toml +63 -0
- ezexb-0.1.0/scripts/bump_version.py +95 -0
- ezexb-0.1.0/scripts/check_artifacts.py +240 -0
- ezexb-0.1.0/scripts/check_docs.py +48 -0
- ezexb-0.1.0/scripts/verify_wheel.py +64 -0
- ezexb-0.1.0/src/ezexb/__init__.py +257 -0
- ezexb-0.1.0/src/ezexb/__main__.py +3 -0
- ezexb-0.1.0/src/ezexb/_core.pyi +48 -0
- ezexb-0.1.0/src/ezexb/cli.py +219 -0
- ezexb-0.1.0/src/ezexb/complex.py +313 -0
- ezexb-0.1.0/src/ezexb/content.py +350 -0
- ezexb-0.1.0/src/ezexb/document.py +559 -0
- ezexb-0.1.0/src/ezexb/inspection.py +45 -0
- ezexb-0.1.0/src/ezexb/py.typed +0 -0
- ezexb-0.1.0/src/ezexb/raw.py +144 -0
- ezexb-0.1.0/src/ezexb/world.py +129 -0
- ezexb-0.1.0/tests/python/data/README.md +55 -0
- ezexb-0.1.0/tests/python/data/analysis.cfb +0 -0
- ezexb-0.1.0/tests/python/data/document-10.cfb +0 -0
- ezexb-0.1.0/tests/python/data/document-18.cfb +0 -0
- ezexb-0.1.0/tests/python/data/document-partial.cfb +0 -0
- ezexb-0.1.0/tests/python/data/schema3-33.cfb +0 -0
- ezexb-0.1.0/tests/python/data/schema3-37.cfb +0 -0
- ezexb-0.1.0/tests/python/data/synthetic.cfb +0 -0
- ezexb-0.1.0/tests/python/test_api.py +76 -0
- ezexb-0.1.0/tests/python/test_container.py +188 -0
- ezexb-0.1.0/tests/python/test_content.py +230 -0
- ezexb-0.1.0/tests/python/test_document.py +81 -0
- ezexb-0.1.0/tests/python/test_install.py +40 -0
- ezexb-0.1.0/tests/python/test_schema3.py +151 -0
- ezexb-0.1.0/tests/python/test_world.py +80 -0
- ezexb-0.1.0/tests/tooling/test_artifacts.py +69 -0
- 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
|
+
|