simple-lanelet2 1.0.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.
- simple_lanelet2-1.0.0/Cargo.lock +348 -0
- simple_lanelet2-1.0.0/Cargo.toml +28 -0
- simple_lanelet2-1.0.0/LICENSE +31 -0
- simple_lanelet2-1.0.0/NOTICE +22 -0
- simple_lanelet2-1.0.0/PKG-INFO +166 -0
- simple_lanelet2-1.0.0/README.md +137 -0
- simple_lanelet2-1.0.0/crates/ll2-core/Cargo.toml +13 -0
- simple_lanelet2-1.0.0/crates/ll2-core/src/area.rs +239 -0
- simple_lanelet2-1.0.0/crates/ll2-core/src/attribute.rs +204 -0
- simple_lanelet2-1.0.0/crates/ll2-core/src/centerline.rs +428 -0
- simple_lanelet2-1.0.0/crates/ll2-core/src/compat.rs +184 -0
- simple_lanelet2-1.0.0/crates/ll2-core/src/compound.rs +190 -0
- simple_lanelet2-1.0.0/crates/ll2-core/src/fmt.rs +200 -0
- simple_lanelet2-1.0.0/crates/ll2-core/src/geometry/bbox.rs +278 -0
- simple_lanelet2-1.0.0/crates/ll2-core/src/geometry/distance.rs +282 -0
- simple_lanelet2-1.0.0/crates/ll2-core/src/geometry/lanelet.rs +404 -0
- simple_lanelet2-1.0.0/crates/ll2-core/src/geometry/linestring.rs +749 -0
- simple_lanelet2-1.0.0/crates/ll2-core/src/geometry/mod.rs +16 -0
- simple_lanelet2-1.0.0/crates/ll2-core/src/geometry/offset.rs +406 -0
- simple_lanelet2-1.0.0/crates/ll2-core/src/id.rs +51 -0
- simple_lanelet2-1.0.0/crates/ll2-core/src/lanelet.rs +422 -0
- simple_lanelet2-1.0.0/crates/ll2-core/src/lib.rs +28 -0
- simple_lanelet2-1.0.0/crates/ll2-core/src/linestring.rs +307 -0
- simple_lanelet2-1.0.0/crates/ll2-core/src/map.rs +550 -0
- simple_lanelet2-1.0.0/crates/ll2-core/src/point.rs +228 -0
- simple_lanelet2-1.0.0/crates/ll2-core/src/refs.rs +119 -0
- simple_lanelet2-1.0.0/crates/ll2-core/src/regelem.rs +621 -0
- simple_lanelet2-1.0.0/crates/ll2-core/tests/data/ostream_double.tsv +1768 -0
- simple_lanelet2-1.0.0/crates/ll2-core/tests/ostream_double.rs +57 -0
- simple_lanelet2-1.0.0/crates/ll2-io/Cargo.toml +14 -0
- simple_lanelet2-1.0.0/crates/ll2-io/src/lib.rs +180 -0
- simple_lanelet2-1.0.0/crates/ll2-io/src/load.rs +440 -0
- simple_lanelet2-1.0.0/crates/ll2-io/src/osm.rs +452 -0
- simple_lanelet2-1.0.0/crates/ll2-io/src/save.rs +255 -0
- simple_lanelet2-1.0.0/crates/ll2-matching/Cargo.toml +13 -0
- simple_lanelet2-1.0.0/crates/ll2-matching/src/lib.rs +424 -0
- simple_lanelet2-1.0.0/crates/ll2-projection/Cargo.toml +11 -0
- simple_lanelet2-1.0.0/crates/ll2-projection/src/geocentric.rs +170 -0
- simple_lanelet2-1.0.0/crates/ll2-projection/src/lib.rs +256 -0
- simple_lanelet2-1.0.0/crates/ll2-projection/src/local_cartesian.rs +123 -0
- simple_lanelet2-1.0.0/crates/ll2-projection/src/mercator.rs +93 -0
- simple_lanelet2-1.0.0/crates/ll2-projection/src/mgrs.rs +344 -0
- simple_lanelet2-1.0.0/crates/ll2-projection/src/transverse_mercator.rs +444 -0
- simple_lanelet2-1.0.0/crates/ll2-projection/src/transverse_mercator_projector.rs +119 -0
- simple_lanelet2-1.0.0/crates/ll2-projection/src/utm.rs +170 -0
- simple_lanelet2-1.0.0/crates/ll2-projection/src/utmups.rs +221 -0
- simple_lanelet2-1.0.0/crates/ll2-python/Cargo.toml +25 -0
- simple_lanelet2-1.0.0/crates/ll2-python/src/accept.rs +240 -0
- simple_lanelet2-1.0.0/crates/ll2-python/src/awext/mod.rs +11 -0
- simple_lanelet2-1.0.0/crates/ll2-python/src/awext/projection.rs +155 -0
- simple_lanelet2-1.0.0/crates/ll2-python/src/awext/query.rs +296 -0
- simple_lanelet2-1.0.0/crates/ll2-python/src/awext/regelem.rs +677 -0
- simple_lanelet2-1.0.0/crates/ll2-python/src/conv.rs +68 -0
- simple_lanelet2-1.0.0/crates/ll2-python/src/core/area.rs +429 -0
- simple_lanelet2-1.0.0/crates/ll2-python/src/core/attribute.rs +182 -0
- simple_lanelet2-1.0.0/crates/ll2-python/src/core/basic.rs +328 -0
- simple_lanelet2-1.0.0/crates/ll2-python/src/core/compound.rs +252 -0
- simple_lanelet2-1.0.0/crates/ll2-python/src/core/convert.rs +75 -0
- simple_lanelet2-1.0.0/crates/ll2-python/src/core/gps.rs +95 -0
- simple_lanelet2-1.0.0/crates/ll2-python/src/core/lanelet.rs +363 -0
- simple_lanelet2-1.0.0/crates/ll2-python/src/core/linestring.rs +411 -0
- simple_lanelet2-1.0.0/crates/ll2-python/src/core/map.rs +480 -0
- simple_lanelet2-1.0.0/crates/ll2-python/src/core/mod.rs +62 -0
- simple_lanelet2-1.0.0/crates/ll2-python/src/core/point.rs +336 -0
- simple_lanelet2-1.0.0/crates/ll2-python/src/core/regelem.rs +1459 -0
- simple_lanelet2-1.0.0/crates/ll2-python/src/core/sequence.rs +157 -0
- simple_lanelet2-1.0.0/crates/ll2-python/src/err.rs +52 -0
- simple_lanelet2-1.0.0/crates/ll2-python/src/geometry.rs +948 -0
- simple_lanelet2-1.0.0/crates/ll2-python/src/io.rs +271 -0
- simple_lanelet2-1.0.0/crates/ll2-python/src/lib.rs +69 -0
- simple_lanelet2-1.0.0/crates/ll2-python/src/matching.rs +396 -0
- simple_lanelet2-1.0.0/crates/ll2-python/src/projection.rs +197 -0
- simple_lanelet2-1.0.0/crates/ll2-python/src/routing.rs +1346 -0
- simple_lanelet2-1.0.0/crates/ll2-python/src/traffic_rules.rs +251 -0
- simple_lanelet2-1.0.0/crates/ll2-routing/Cargo.toml +13 -0
- simple_lanelet2-1.0.0/crates/ll2-routing/src/cost.rs +200 -0
- simple_lanelet2-1.0.0/crates/ll2-routing/src/graph.rs +443 -0
- simple_lanelet2-1.0.0/crates/ll2-routing/src/lib.rs +907 -0
- simple_lanelet2-1.0.0/crates/ll2-routing/src/route.rs +293 -0
- simple_lanelet2-1.0.0/crates/ll2-traffic-rules/Cargo.toml +12 -0
- simple_lanelet2-1.0.0/crates/ll2-traffic-rules/src/german.rs +203 -0
- simple_lanelet2-1.0.0/crates/ll2-traffic-rules/src/lib.rs +594 -0
- simple_lanelet2-1.0.0/pyproject.toml +51 -0
- simple_lanelet2-1.0.0/python/autoware_lanelet2_extension_python/__init__.py +0 -0
- simple_lanelet2-1.0.0/python/autoware_lanelet2_extension_python/projection/__init__.py +14 -0
- simple_lanelet2-1.0.0/python/autoware_lanelet2_extension_python/projection.pyi +25 -0
- simple_lanelet2-1.0.0/python/autoware_lanelet2_extension_python/py.typed +0 -0
- simple_lanelet2-1.0.0/python/autoware_lanelet2_extension_python/regulatory_elements/__init__.py +36 -0
- simple_lanelet2-1.0.0/python/autoware_lanelet2_extension_python/regulatory_elements.pyi +119 -0
- simple_lanelet2-1.0.0/python/autoware_lanelet2_extension_python/utility/__init__.py +0 -0
- simple_lanelet2-1.0.0/python/autoware_lanelet2_extension_python/utility/query.py +512 -0
- simple_lanelet2-1.0.0/python/autoware_lanelet2_extension_python/utility/query.pyi +47 -0
- simple_lanelet2-1.0.0/python/autoware_lanelet2_extension_python/utility/utilities.py +535 -0
- simple_lanelet2-1.0.0/python/autoware_lanelet2_extension_python/utility/utilities.pyi +29 -0
- simple_lanelet2-1.0.0/python/lanelet2/__init__.py +81 -0
- simple_lanelet2-1.0.0/python/lanelet2/__init__.pyi +23 -0
- simple_lanelet2-1.0.0/python/lanelet2/_boost_enum.py +54 -0
- simple_lanelet2-1.0.0/python/lanelet2/core.pyi +711 -0
- simple_lanelet2-1.0.0/python/lanelet2/geometry.pyi +49 -0
- simple_lanelet2-1.0.0/python/lanelet2/io.pyi +17 -0
- simple_lanelet2-1.0.0/python/lanelet2/matching.pyi +48 -0
- simple_lanelet2-1.0.0/python/lanelet2/projection.pyi +43 -0
- simple_lanelet2-1.0.0/python/lanelet2/py.typed +0 -0
- simple_lanelet2-1.0.0/python/lanelet2/routing.pyi +163 -0
- simple_lanelet2-1.0.0/python/lanelet2/traffic_rules.pyi +50 -0
|
@@ -0,0 +1,348 @@
|
|
|
1
|
+
# This file is automatically @generated by Cargo.
|
|
2
|
+
# It is not intended for manual editing.
|
|
3
|
+
version = 4
|
|
4
|
+
|
|
5
|
+
[[package]]
|
|
6
|
+
name = "autocfg"
|
|
7
|
+
version = "1.5.1"
|
|
8
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
9
|
+
checksum = "f2032f911046de80f0a198e0901378627c33f59ea0ac00e363d481118bd70a53"
|
|
10
|
+
|
|
11
|
+
[[package]]
|
|
12
|
+
name = "bitflags"
|
|
13
|
+
version = "2.13.1"
|
|
14
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
15
|
+
checksum = "b588b76d00fde79687d7646a9b5bdf3cc0f655e0bbd080335a95d7e96f3587da"
|
|
16
|
+
|
|
17
|
+
[[package]]
|
|
18
|
+
name = "byteorder"
|
|
19
|
+
version = "1.5.0"
|
|
20
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
21
|
+
checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b"
|
|
22
|
+
|
|
23
|
+
[[package]]
|
|
24
|
+
name = "cfg-if"
|
|
25
|
+
version = "1.0.4"
|
|
26
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
27
|
+
checksum = "9330f8b2ff13f34540b44e946ef35111825727b38d33286ef986142615121801"
|
|
28
|
+
|
|
29
|
+
[[package]]
|
|
30
|
+
name = "hash32"
|
|
31
|
+
version = "0.3.1"
|
|
32
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
33
|
+
checksum = "47d60b12902ba28e2730cd37e95b8c9223af2808df9e902d4df49588d1470606"
|
|
34
|
+
dependencies = [
|
|
35
|
+
"byteorder",
|
|
36
|
+
]
|
|
37
|
+
|
|
38
|
+
[[package]]
|
|
39
|
+
name = "heapless"
|
|
40
|
+
version = "0.8.0"
|
|
41
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
42
|
+
checksum = "0bfb9eb618601c89945a70e254898da93b13be0388091d42117462b265bb3fad"
|
|
43
|
+
dependencies = [
|
|
44
|
+
"hash32",
|
|
45
|
+
"stable_deref_trait",
|
|
46
|
+
]
|
|
47
|
+
|
|
48
|
+
[[package]]
|
|
49
|
+
name = "heck"
|
|
50
|
+
version = "0.5.0"
|
|
51
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
52
|
+
checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea"
|
|
53
|
+
|
|
54
|
+
[[package]]
|
|
55
|
+
name = "inventory"
|
|
56
|
+
version = "0.3.24"
|
|
57
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
58
|
+
checksum = "a4f0c30c76f2f4ccee3fe55a2435f691ca00c0e4bd87abe4f4a851b1d4dac39b"
|
|
59
|
+
dependencies = [
|
|
60
|
+
"rustversion",
|
|
61
|
+
]
|
|
62
|
+
|
|
63
|
+
[[package]]
|
|
64
|
+
name = "libc"
|
|
65
|
+
version = "0.2.189"
|
|
66
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
67
|
+
checksum = "3eaf3ede3fee6db1a4c2ee091bf8a8b4dccdc6d17f656fb07896ee72867612f2"
|
|
68
|
+
|
|
69
|
+
[[package]]
|
|
70
|
+
name = "libm"
|
|
71
|
+
version = "0.2.16"
|
|
72
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
73
|
+
checksum = "b6d2cec3eae94f9f509c767b45932f1ada8350c4bdb85af2fcab4a3c14807981"
|
|
74
|
+
|
|
75
|
+
[[package]]
|
|
76
|
+
name = "ll2-core"
|
|
77
|
+
version = "1.0.0"
|
|
78
|
+
dependencies = [
|
|
79
|
+
"parking_lot",
|
|
80
|
+
"rstar",
|
|
81
|
+
]
|
|
82
|
+
|
|
83
|
+
[[package]]
|
|
84
|
+
name = "ll2-io"
|
|
85
|
+
version = "1.0.0"
|
|
86
|
+
dependencies = [
|
|
87
|
+
"ll2-core",
|
|
88
|
+
"ll2-projection",
|
|
89
|
+
"quick-xml",
|
|
90
|
+
]
|
|
91
|
+
|
|
92
|
+
[[package]]
|
|
93
|
+
name = "ll2-matching"
|
|
94
|
+
version = "1.0.0"
|
|
95
|
+
dependencies = [
|
|
96
|
+
"ll2-core",
|
|
97
|
+
"ll2-traffic-rules",
|
|
98
|
+
]
|
|
99
|
+
|
|
100
|
+
[[package]]
|
|
101
|
+
name = "ll2-projection"
|
|
102
|
+
version = "1.0.0"
|
|
103
|
+
|
|
104
|
+
[[package]]
|
|
105
|
+
name = "ll2-python"
|
|
106
|
+
version = "1.0.0"
|
|
107
|
+
dependencies = [
|
|
108
|
+
"ll2-core",
|
|
109
|
+
"ll2-io",
|
|
110
|
+
"ll2-matching",
|
|
111
|
+
"ll2-projection",
|
|
112
|
+
"ll2-routing",
|
|
113
|
+
"ll2-traffic-rules",
|
|
114
|
+
"pyo3",
|
|
115
|
+
]
|
|
116
|
+
|
|
117
|
+
[[package]]
|
|
118
|
+
name = "ll2-routing"
|
|
119
|
+
version = "1.0.0"
|
|
120
|
+
dependencies = [
|
|
121
|
+
"ll2-core",
|
|
122
|
+
"ll2-traffic-rules",
|
|
123
|
+
]
|
|
124
|
+
|
|
125
|
+
[[package]]
|
|
126
|
+
name = "ll2-traffic-rules"
|
|
127
|
+
version = "1.0.0"
|
|
128
|
+
dependencies = [
|
|
129
|
+
"ll2-core",
|
|
130
|
+
]
|
|
131
|
+
|
|
132
|
+
[[package]]
|
|
133
|
+
name = "lock_api"
|
|
134
|
+
version = "0.4.14"
|
|
135
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
136
|
+
checksum = "224399e74b87b5f3557511d98dff8b14089b3dadafcab6bb93eab67d3aace965"
|
|
137
|
+
dependencies = [
|
|
138
|
+
"scopeguard",
|
|
139
|
+
]
|
|
140
|
+
|
|
141
|
+
[[package]]
|
|
142
|
+
name = "memchr"
|
|
143
|
+
version = "2.8.3"
|
|
144
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
145
|
+
checksum = "cf8baf1c55e62ffcace7a9f06f4bd9cd3f0c4beb022d3b367256b91b87513d98"
|
|
146
|
+
|
|
147
|
+
[[package]]
|
|
148
|
+
name = "num-traits"
|
|
149
|
+
version = "0.2.19"
|
|
150
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
151
|
+
checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841"
|
|
152
|
+
dependencies = [
|
|
153
|
+
"autocfg",
|
|
154
|
+
"libm",
|
|
155
|
+
]
|
|
156
|
+
|
|
157
|
+
[[package]]
|
|
158
|
+
name = "once_cell"
|
|
159
|
+
version = "1.21.4"
|
|
160
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
161
|
+
checksum = "9f7c3e4beb33f85d45ae3e3a1792185706c8e16d043238c593331cc7cd313b50"
|
|
162
|
+
|
|
163
|
+
[[package]]
|
|
164
|
+
name = "parking_lot"
|
|
165
|
+
version = "0.12.5"
|
|
166
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
167
|
+
checksum = "93857453250e3077bd71ff98b6a65ea6621a19bb0f559a85248955ac12c45a1a"
|
|
168
|
+
dependencies = [
|
|
169
|
+
"lock_api",
|
|
170
|
+
"parking_lot_core",
|
|
171
|
+
]
|
|
172
|
+
|
|
173
|
+
[[package]]
|
|
174
|
+
name = "parking_lot_core"
|
|
175
|
+
version = "0.9.12"
|
|
176
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
177
|
+
checksum = "2621685985a2ebf1c516881c026032ac7deafcda1a2c9b7850dc81e3dfcb64c1"
|
|
178
|
+
dependencies = [
|
|
179
|
+
"cfg-if",
|
|
180
|
+
"libc",
|
|
181
|
+
"redox_syscall",
|
|
182
|
+
"smallvec",
|
|
183
|
+
"windows-link",
|
|
184
|
+
]
|
|
185
|
+
|
|
186
|
+
[[package]]
|
|
187
|
+
name = "portable-atomic"
|
|
188
|
+
version = "1.14.0"
|
|
189
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
190
|
+
checksum = "3d20d5497ef88037a52ff98267d066e7f11fcc5e99bbfbd58a42336193aacec3"
|
|
191
|
+
|
|
192
|
+
[[package]]
|
|
193
|
+
name = "proc-macro2"
|
|
194
|
+
version = "1.0.107"
|
|
195
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
196
|
+
checksum = "985e7ec9bb745e6ce6535b544d84d6cd6f7ad8bd711c398938ae983b91a766d9"
|
|
197
|
+
dependencies = [
|
|
198
|
+
"unicode-ident",
|
|
199
|
+
]
|
|
200
|
+
|
|
201
|
+
[[package]]
|
|
202
|
+
name = "pyo3"
|
|
203
|
+
version = "0.29.0"
|
|
204
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
205
|
+
checksum = "cd274650b21d4bfc26a0a47587962c1edb425f69287324355cd040c3ea66071c"
|
|
206
|
+
dependencies = [
|
|
207
|
+
"inventory",
|
|
208
|
+
"libc",
|
|
209
|
+
"once_cell",
|
|
210
|
+
"portable-atomic",
|
|
211
|
+
"pyo3-build-config",
|
|
212
|
+
"pyo3-ffi",
|
|
213
|
+
"pyo3-macros",
|
|
214
|
+
]
|
|
215
|
+
|
|
216
|
+
[[package]]
|
|
217
|
+
name = "pyo3-build-config"
|
|
218
|
+
version = "0.29.0"
|
|
219
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
220
|
+
checksum = "c5e2a7d2f0d013342f295c048ad19237add5154a55b1c5a254c0ec93d4109078"
|
|
221
|
+
dependencies = [
|
|
222
|
+
"target-lexicon",
|
|
223
|
+
]
|
|
224
|
+
|
|
225
|
+
[[package]]
|
|
226
|
+
name = "pyo3-ffi"
|
|
227
|
+
version = "0.29.0"
|
|
228
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
229
|
+
checksum = "ca85c467da1bbc8d866eea5deff9cf29ea5f7785054a17da36e65bda9c05845b"
|
|
230
|
+
dependencies = [
|
|
231
|
+
"libc",
|
|
232
|
+
"pyo3-build-config",
|
|
233
|
+
]
|
|
234
|
+
|
|
235
|
+
[[package]]
|
|
236
|
+
name = "pyo3-macros"
|
|
237
|
+
version = "0.29.0"
|
|
238
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
239
|
+
checksum = "9ac53762fd065daa3194dd09337a38bd793a188100fd1a9304c4ab312d901771"
|
|
240
|
+
dependencies = [
|
|
241
|
+
"proc-macro2",
|
|
242
|
+
"pyo3-macros-backend",
|
|
243
|
+
"quote",
|
|
244
|
+
"syn",
|
|
245
|
+
]
|
|
246
|
+
|
|
247
|
+
[[package]]
|
|
248
|
+
name = "pyo3-macros-backend"
|
|
249
|
+
version = "0.29.0"
|
|
250
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
251
|
+
checksum = "4ca3a1557399783172dc5bf39cfca835157732532cba56b71d2292161e53b362"
|
|
252
|
+
dependencies = [
|
|
253
|
+
"heck",
|
|
254
|
+
"proc-macro2",
|
|
255
|
+
"quote",
|
|
256
|
+
"syn",
|
|
257
|
+
]
|
|
258
|
+
|
|
259
|
+
[[package]]
|
|
260
|
+
name = "quick-xml"
|
|
261
|
+
version = "0.41.0"
|
|
262
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
263
|
+
checksum = "e660451e55124f798a69a5af3f49ccfbefbd41910eefd25caf2393e1f3473ec1"
|
|
264
|
+
dependencies = [
|
|
265
|
+
"memchr",
|
|
266
|
+
]
|
|
267
|
+
|
|
268
|
+
[[package]]
|
|
269
|
+
name = "quote"
|
|
270
|
+
version = "1.0.47"
|
|
271
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
272
|
+
checksum = "1fbf4db142a473a8d80c26bbf18454ed458bf8d26c8219c331daecfdbd079001"
|
|
273
|
+
dependencies = [
|
|
274
|
+
"proc-macro2",
|
|
275
|
+
]
|
|
276
|
+
|
|
277
|
+
[[package]]
|
|
278
|
+
name = "redox_syscall"
|
|
279
|
+
version = "0.5.18"
|
|
280
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
281
|
+
checksum = "ed2bf2547551a7053d6fdfafda3f938979645c44812fbfcda098faae3f1a362d"
|
|
282
|
+
dependencies = [
|
|
283
|
+
"bitflags",
|
|
284
|
+
]
|
|
285
|
+
|
|
286
|
+
[[package]]
|
|
287
|
+
name = "rstar"
|
|
288
|
+
version = "0.13.0"
|
|
289
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
290
|
+
checksum = "5912b862fa5ffb462607bfd1e35036c458c537921f508c8235a83d5f3987edfe"
|
|
291
|
+
dependencies = [
|
|
292
|
+
"heapless",
|
|
293
|
+
"num-traits",
|
|
294
|
+
"smallvec",
|
|
295
|
+
]
|
|
296
|
+
|
|
297
|
+
[[package]]
|
|
298
|
+
name = "rustversion"
|
|
299
|
+
version = "1.0.23"
|
|
300
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
301
|
+
checksum = "cf54715a573b99ac80df0bc206da022bcd442c974952c7b9720069370852e21f"
|
|
302
|
+
|
|
303
|
+
[[package]]
|
|
304
|
+
name = "scopeguard"
|
|
305
|
+
version = "1.2.0"
|
|
306
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
307
|
+
checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49"
|
|
308
|
+
|
|
309
|
+
[[package]]
|
|
310
|
+
name = "smallvec"
|
|
311
|
+
version = "1.15.2"
|
|
312
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
313
|
+
checksum = "8ed6a63f02c8539c91a8685a86f4099661ba3da017932f6ebbea6de3f0fa7c90"
|
|
314
|
+
|
|
315
|
+
[[package]]
|
|
316
|
+
name = "stable_deref_trait"
|
|
317
|
+
version = "1.2.1"
|
|
318
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
319
|
+
checksum = "6ce2be8dc25455e1f91df71bfa12ad37d7af1092ae736f3a6cd0e37bc7810596"
|
|
320
|
+
|
|
321
|
+
[[package]]
|
|
322
|
+
name = "syn"
|
|
323
|
+
version = "2.0.119"
|
|
324
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
325
|
+
checksum = "872831b642d1a07999a962a351ed35b955ea2cfc8f3862091e2a240a84f17297"
|
|
326
|
+
dependencies = [
|
|
327
|
+
"proc-macro2",
|
|
328
|
+
"quote",
|
|
329
|
+
"unicode-ident",
|
|
330
|
+
]
|
|
331
|
+
|
|
332
|
+
[[package]]
|
|
333
|
+
name = "target-lexicon"
|
|
334
|
+
version = "0.13.5"
|
|
335
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
336
|
+
checksum = "adb6935a6f5c20170eeceb1a3835a49e12e19d792f6dd344ccc76a985ca5a6ca"
|
|
337
|
+
|
|
338
|
+
[[package]]
|
|
339
|
+
name = "unicode-ident"
|
|
340
|
+
version = "1.0.24"
|
|
341
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
342
|
+
checksum = "e6e4313cd5fcd3dad5cafa179702e2b244f760991f45397d14d4ebf38247da75"
|
|
343
|
+
|
|
344
|
+
[[package]]
|
|
345
|
+
name = "windows-link"
|
|
346
|
+
version = "0.2.1"
|
|
347
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
348
|
+
checksum = "f0805222e57f7521d6a62e36fa9163bc891acd422f971defe97d64e70d0a4fe5"
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
[workspace]
|
|
2
|
+
resolver = "3"
|
|
3
|
+
members = ["crates/*"]
|
|
4
|
+
|
|
5
|
+
[workspace.package]
|
|
6
|
+
version = "1.0.0"
|
|
7
|
+
edition = "2024"
|
|
8
|
+
license = "BSD-3-Clause"
|
|
9
|
+
repository = "https://github.com/hakuturu583/simple_lanelet2"
|
|
10
|
+
homepage = "https://github.com/hakuturu583/simple_lanelet2"
|
|
11
|
+
rust-version = "1.85"
|
|
12
|
+
|
|
13
|
+
[workspace.dependencies]
|
|
14
|
+
ll2-core = { path = "crates/ll2-core" }
|
|
15
|
+
ll2-matching = { path = "crates/ll2-matching" }
|
|
16
|
+
ll2-io = { path = "crates/ll2-io" }
|
|
17
|
+
ll2-projection = { path = "crates/ll2-projection" }
|
|
18
|
+
ll2-routing = { path = "crates/ll2-routing" }
|
|
19
|
+
ll2-traffic-rules = { path = "crates/ll2-traffic-rules" }
|
|
20
|
+
|
|
21
|
+
parking_lot = "0.12"
|
|
22
|
+
rstar = "0.13"
|
|
23
|
+
quick-xml = "0.41"
|
|
24
|
+
|
|
25
|
+
[profile.release]
|
|
26
|
+
opt-level = 3
|
|
27
|
+
lto = "thin"
|
|
28
|
+
codegen-units = 1
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
BSD 3-Clause License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026, simple_lanelet2 contributors
|
|
4
|
+
Copyright (c) 2018, Fraunhofer IOSB, Karlsruhe Institute of Technology (FZI)
|
|
5
|
+
|
|
6
|
+
This project reimplements the Python API of Lanelet2, which is distributed under the
|
|
7
|
+
same licence. See NOTICE for the attribution of vendored assets.
|
|
8
|
+
|
|
9
|
+
Redistribution and use in source and binary forms, with or without modification, are
|
|
10
|
+
permitted provided that the following conditions are met:
|
|
11
|
+
|
|
12
|
+
1. Redistributions of source code must retain the above copyright notice, this list of
|
|
13
|
+
conditions and the following disclaimer.
|
|
14
|
+
|
|
15
|
+
2. Redistributions in binary form must reproduce the above copyright notice, this list
|
|
16
|
+
of conditions and the following disclaimer in the documentation and/or other
|
|
17
|
+
materials provided with the distribution.
|
|
18
|
+
|
|
19
|
+
3. Neither the name of the copyright holder nor the names of its contributors may be
|
|
20
|
+
used to endorse or promote products derived from this software without specific
|
|
21
|
+
prior written permission.
|
|
22
|
+
|
|
23
|
+
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY
|
|
24
|
+
EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
|
25
|
+
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
|
|
26
|
+
THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
|
27
|
+
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
|
28
|
+
PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
|
29
|
+
INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
|
30
|
+
LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
|
31
|
+
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
simple_lanelet2
|
|
2
|
+
Copyright (c) 2026
|
|
3
|
+
|
|
4
|
+
This product is a reimplementation of the Python API of Lanelet2:
|
|
5
|
+
|
|
6
|
+
Lanelet2
|
|
7
|
+
Copyright (c) 2018, FZI Forschungszentrum Informatik
|
|
8
|
+
Licensed under the BSD 3-Clause License
|
|
9
|
+
https://github.com/fzi-forschungszentrum-informatik/Lanelet2
|
|
10
|
+
|
|
11
|
+
The API shape, semantics and several algorithms in this project are ports of the
|
|
12
|
+
Lanelet2 C++ sources. Ported algorithms carry a reference to the originating
|
|
13
|
+
upstream file and line in their doc comments.
|
|
14
|
+
|
|
15
|
+
Test fixtures under tests/data/ are vendored from the Lanelet2 repository
|
|
16
|
+
(lanelet2_maps/res/) and remain under the BSD 3-Clause License.
|
|
17
|
+
|
|
18
|
+
tests/data/mapping_example.osm is vendored unchanged from
|
|
19
|
+
lanelet2_maps/res/mapping_example.osm in the Lanelet2 repository.
|
|
20
|
+
|
|
21
|
+
tests/upstream/ contains the Lanelet2 Python test files, vendored unchanged from
|
|
22
|
+
lanelet2_python/test/.
|
|
@@ -0,0 +1,166 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: simple-lanelet2
|
|
3
|
+
Version: 1.0.0
|
|
4
|
+
Classifier: Development Status :: 5 - Production/Stable
|
|
5
|
+
Classifier: Intended Audience :: Science/Research
|
|
6
|
+
Classifier: License :: OSI Approved :: BSD License
|
|
7
|
+
Classifier: Operating System :: POSIX :: Linux
|
|
8
|
+
Classifier: Programming Language :: Rust
|
|
9
|
+
Classifier: Programming Language :: Python :: 3
|
|
10
|
+
Classifier: Programming Language :: Python :: 3.9
|
|
11
|
+
Classifier: Programming Language :: Python :: 3.10
|
|
12
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
13
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
14
|
+
Classifier: Programming Language :: Python :: 3.13
|
|
15
|
+
Classifier: Programming Language :: Python :: Implementation :: CPython
|
|
16
|
+
Classifier: Topic :: Scientific/Engineering :: GIS
|
|
17
|
+
License-File: LICENSE
|
|
18
|
+
License-File: NOTICE
|
|
19
|
+
Summary: A drop-in reimplementation of the Lanelet2 Python API, in Rust
|
|
20
|
+
Keywords: lanelet2,hd-map,autonomous-driving,autoware,gis
|
|
21
|
+
Home-Page: https://github.com/hakuturu583/simple_lanelet2
|
|
22
|
+
License: BSD-3-Clause
|
|
23
|
+
Requires-Python: >=3.9
|
|
24
|
+
Description-Content-Type: text/markdown; charset=UTF-8; variant=GFM
|
|
25
|
+
Project-URL: Homepage, https://github.com/hakuturu583/simple_lanelet2
|
|
26
|
+
Project-URL: Issues, https://github.com/hakuturu583/simple_lanelet2/issues
|
|
27
|
+
Project-URL: Repository, https://github.com/hakuturu583/simple_lanelet2
|
|
28
|
+
|
|
29
|
+
# simple_lanelet2
|
|
30
|
+
|
|
31
|
+
A reimplementation of the [Lanelet2](https://github.com/fzi-forschungszentrum-informatik/Lanelet2)
|
|
32
|
+
Python API with a Rust core and PyO3 bindings.
|
|
33
|
+
|
|
34
|
+
The goal is a **drop-in replacement**: `import lanelet2` keeps working, unchanged, but
|
|
35
|
+
installation is a single wheel with no Boost, no GeographicLib and no C++ toolchain.
|
|
36
|
+
|
|
37
|
+
```python
|
|
38
|
+
import lanelet2
|
|
39
|
+
from lanelet2.core import Point3d, LineString3d, Lanelet, getId
|
|
40
|
+
|
|
41
|
+
left = LineString3d(getId(), [Point3d(getId(), 0, 0, 0), Point3d(getId(), 1, 0, 0)])
|
|
42
|
+
right = LineString3d(getId(), [Point3d(getId(), 0, 1, 0), Point3d(getId(), 1, 1, 0)])
|
|
43
|
+
lanelet = Lanelet(getId(), left, right)
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
**Status.** All seven submodules are implemented. The library exposes **100% of
|
|
47
|
+
the reference's public API** — 633 names across every module and class — and
|
|
48
|
+
upstream's own test suite passes against it **unmodified**, in both modes.
|
|
49
|
+
|
|
50
|
+
## Bug-compatibility mode
|
|
51
|
+
|
|
52
|
+
Upstream has a number of outright defects — a `__hash__` that contradicts `__eq__`, a
|
|
53
|
+
misnamed keyword argument on `Origin`, a routing filter that silently does nothing.
|
|
54
|
+
By default this library **fixes** them. Setting `LANELET2_BUG_COMPAT` restores
|
|
55
|
+
upstream's behaviour exactly:
|
|
56
|
+
|
|
57
|
+
```bash
|
|
58
|
+
LANELET2_BUG_COMPAT=1 python my_script.py # byte-for-byte upstream behaviour
|
|
59
|
+
python my_script.py # repaired behaviour (default)
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
The flag is read once at import time and is reported as `lanelet2.BUG_COMPAT`.
|
|
63
|
+
Every switched behaviour is listed in [`docs/DIVERGENCE.md`](docs/DIVERGENCE.md) and
|
|
64
|
+
enforced by the test harness.
|
|
65
|
+
|
|
66
|
+
## Verification
|
|
67
|
+
|
|
68
|
+
Compatibility is not asserted, it is measured. Every case in `tests/cases/` is run
|
|
69
|
+
three ways and the JSON-Lines output is compared:
|
|
70
|
+
|
|
71
|
+
| run | interpreter | environment |
|
|
72
|
+
| --- | --- | --- |
|
|
73
|
+
| `REF` | `.venv-ref` | the real `lanelet2==1.2.3` from PyPI |
|
|
74
|
+
| `COMPAT` | `.venv` | ours, `LANELET2_BUG_COMPAT=1` |
|
|
75
|
+
| `FIXED` | `.venv` | ours, default |
|
|
76
|
+
|
|
77
|
+
`REF` and `COMPAT` must agree exactly. `COMPAT` and `FIXED` must differ in exactly
|
|
78
|
+
the places listed in `tests/compat_matrix.toml` — no more, and no fewer, so neither
|
|
79
|
+
an accidental behaviour change nor an unwired repair can slip through.
|
|
80
|
+
|
|
81
|
+
```bash
|
|
82
|
+
just venvs # create both virtualenvs
|
|
83
|
+
just build # build and install into .venv
|
|
84
|
+
just diff # run the harness
|
|
85
|
+
just upstream-tests # upstream's own tests, unmodified, in both modes
|
|
86
|
+
just test-rust # the Rust unit tests
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
What the harness checks, beyond "it runs":
|
|
90
|
+
|
|
91
|
+
- the 594 KB example map from the Lanelet2 repository loads, and writing it back
|
|
92
|
+
reproduces the reference's file **byte for byte** — every node, way, relation and
|
|
93
|
+
tag, in the same order — and a second pass is identical again;
|
|
94
|
+
- every lanelet's full centerline matches, on that map and on forty procedurally
|
|
95
|
+
generated shapes chosen to exercise the parts of the algorithm a rectangular
|
|
96
|
+
lanelet never reaches;
|
|
97
|
+
- the projections agree with GeographicLib to **7e-15 m** across zone edges, the
|
|
98
|
+
Norway and Svalbard zone irregularities, both hemispheres and the antimeridian;
|
|
99
|
+
- the traffic-rule tables are swept exhaustively — every participant against every
|
|
100
|
+
way subtype, both directions, both locations — rather than spot-checked;
|
|
101
|
+
- the routing graph's whole edge list is compared before any query is.
|
|
102
|
+
|
|
103
|
+
## Autoware maps
|
|
104
|
+
|
|
105
|
+
`autoware_lanelet2_extension`'s regulatory elements and its transverse Mercator
|
|
106
|
+
projector are provided under the upstream import path, in this same wheel:
|
|
107
|
+
|
|
108
|
+
```python
|
|
109
|
+
import lanelet2
|
|
110
|
+
import autoware_lanelet2_extension_python.regulatory_elements # registers the subtypes
|
|
111
|
+
from autoware_lanelet2_extension_python.projection import TransverseMercatorProjector
|
|
112
|
+
```
|
|
113
|
+
|
|
114
|
+
Importing `regulatory_elements` is what makes `road_marking`, `crosswalk`,
|
|
115
|
+
`detection_area` and the rest resolvable, and it makes `traffic_light` resolve to
|
|
116
|
+
`AutowareTrafficLight`. Before that import a map carrying them is refused, exactly as
|
|
117
|
+
stock Lanelet2 refuses it. That is upstream's behaviour, not an accident of packaging:
|
|
118
|
+
registration there happens when the extension's shared library loads. Note that it is
|
|
119
|
+
process-wide and cannot be undone, so an unrelated module importing the extension
|
|
120
|
+
changes what `lanelet2.io.load` produces from that point on.
|
|
121
|
+
|
|
122
|
+
**Coordinates come from latitude and longitude, not from `local_x`/`local_y`.**
|
|
123
|
+
Autoware's C++ `AutowareOsmParser` prefers those tags, and a real Autoware map is full
|
|
124
|
+
of them — the Nishi-Shinjuku example carries 36,936. That parser is not reachable from
|
|
125
|
+
Python in the reference either, so `lanelet2.io.load` behaves the same in both; our
|
|
126
|
+
output on that map is byte-identical to the reference's. But it does mean the numbers
|
|
127
|
+
differ from what Autoware's own C++ tooling produces.
|
|
128
|
+
|
|
129
|
+
`utility.query` and `utility.utilities` are provided apart from their ROS-dependent
|
|
130
|
+
halves, which are defined but raise when called — upstream imports `geometry_msgs` and
|
|
131
|
+
`rclpy` at module top, so its versions cannot be imported at all without ROS. Several
|
|
132
|
+
of upstream's own bindings do not work; those are repaired here and reproduced under
|
|
133
|
+
`LANELET2_BUG_COMPAT=1`. See [`docs/DIVERGENCE.md`](docs/DIVERGENCE.md) for the list.
|
|
134
|
+
|
|
135
|
+
## CI
|
|
136
|
+
|
|
137
|
+
Four jobs, arranged around the compatibility claim rather than around the test suite:
|
|
138
|
+
|
|
139
|
+
| job | what it proves | needs |
|
|
140
|
+
|---|---|---|
|
|
141
|
+
| `check` | it builds, lints, and the wheel installs into an empty venv and imports | nothing |
|
|
142
|
+
| `diff` | 20 cases against the PyPI `lanelet2==1.2.3`, plus upstream's vendored tests | a wheel |
|
|
143
|
+
| `upstream` | upstream's *own* tests, cloned at HEAD each run, unmodified, both modes | network |
|
|
144
|
+
| `oracle` | 31 cases, including the Autoware extension and the two-reference skew check | pixi + colcon |
|
|
145
|
+
|
|
146
|
+
One case is not in that count. `1150_aw_map` loads a real 10.5 MB Autoware map and
|
|
147
|
+
checks it writes back byte for byte; the map it was developed against is CC BY-NC
|
|
148
|
+
licensed, so it can neither be vendored here nor fetched by CI. Point
|
|
149
|
+
`SIMPLE_LL2_AW_MAP` at a real Autoware map to run it. `1160_aw_synthetic_map` covers
|
|
150
|
+
the same behaviour on a map small enough to write inline, and does run in CI.
|
|
151
|
+
|
|
152
|
+
One caveat on what `upstream` proves. Lanelet2's own tests are substantive; the
|
|
153
|
+
Autoware extension's Python tests are import smoke tests, and its real suite is C++
|
|
154
|
+
gtest that cannot run against a Python implementation. The extension is verified by the
|
|
155
|
+
`# ORACLE: aw` diff cases instead — see [`tests/upstream-awext/README.md`](tests/upstream-awext/README.md).
|
|
156
|
+
|
|
157
|
+
`upstream` fetching at HEAD rather than a pin is deliberate. A vendored copy proves
|
|
158
|
+
compatibility with whatever upstream looked like the day it was copied; fetching proves
|
|
159
|
+
it against upstream as it stands, and a test they change becomes a signal rather than a
|
|
160
|
+
silent drift. It runs on a schedule too, since upstream moves without anyone touching
|
|
161
|
+
this repository. Locally: `just upstream-fresh`.
|
|
162
|
+
|
|
163
|
+
## Licence
|
|
164
|
+
|
|
165
|
+
BSD-3-Clause, matching upstream Lanelet2. See [`NOTICE`](NOTICE) for vendored assets.
|
|
166
|
+
|