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.
Files changed (105) hide show
  1. simple_lanelet2-1.0.0/Cargo.lock +348 -0
  2. simple_lanelet2-1.0.0/Cargo.toml +28 -0
  3. simple_lanelet2-1.0.0/LICENSE +31 -0
  4. simple_lanelet2-1.0.0/NOTICE +22 -0
  5. simple_lanelet2-1.0.0/PKG-INFO +166 -0
  6. simple_lanelet2-1.0.0/README.md +137 -0
  7. simple_lanelet2-1.0.0/crates/ll2-core/Cargo.toml +13 -0
  8. simple_lanelet2-1.0.0/crates/ll2-core/src/area.rs +239 -0
  9. simple_lanelet2-1.0.0/crates/ll2-core/src/attribute.rs +204 -0
  10. simple_lanelet2-1.0.0/crates/ll2-core/src/centerline.rs +428 -0
  11. simple_lanelet2-1.0.0/crates/ll2-core/src/compat.rs +184 -0
  12. simple_lanelet2-1.0.0/crates/ll2-core/src/compound.rs +190 -0
  13. simple_lanelet2-1.0.0/crates/ll2-core/src/fmt.rs +200 -0
  14. simple_lanelet2-1.0.0/crates/ll2-core/src/geometry/bbox.rs +278 -0
  15. simple_lanelet2-1.0.0/crates/ll2-core/src/geometry/distance.rs +282 -0
  16. simple_lanelet2-1.0.0/crates/ll2-core/src/geometry/lanelet.rs +404 -0
  17. simple_lanelet2-1.0.0/crates/ll2-core/src/geometry/linestring.rs +749 -0
  18. simple_lanelet2-1.0.0/crates/ll2-core/src/geometry/mod.rs +16 -0
  19. simple_lanelet2-1.0.0/crates/ll2-core/src/geometry/offset.rs +406 -0
  20. simple_lanelet2-1.0.0/crates/ll2-core/src/id.rs +51 -0
  21. simple_lanelet2-1.0.0/crates/ll2-core/src/lanelet.rs +422 -0
  22. simple_lanelet2-1.0.0/crates/ll2-core/src/lib.rs +28 -0
  23. simple_lanelet2-1.0.0/crates/ll2-core/src/linestring.rs +307 -0
  24. simple_lanelet2-1.0.0/crates/ll2-core/src/map.rs +550 -0
  25. simple_lanelet2-1.0.0/crates/ll2-core/src/point.rs +228 -0
  26. simple_lanelet2-1.0.0/crates/ll2-core/src/refs.rs +119 -0
  27. simple_lanelet2-1.0.0/crates/ll2-core/src/regelem.rs +621 -0
  28. simple_lanelet2-1.0.0/crates/ll2-core/tests/data/ostream_double.tsv +1768 -0
  29. simple_lanelet2-1.0.0/crates/ll2-core/tests/ostream_double.rs +57 -0
  30. simple_lanelet2-1.0.0/crates/ll2-io/Cargo.toml +14 -0
  31. simple_lanelet2-1.0.0/crates/ll2-io/src/lib.rs +180 -0
  32. simple_lanelet2-1.0.0/crates/ll2-io/src/load.rs +440 -0
  33. simple_lanelet2-1.0.0/crates/ll2-io/src/osm.rs +452 -0
  34. simple_lanelet2-1.0.0/crates/ll2-io/src/save.rs +255 -0
  35. simple_lanelet2-1.0.0/crates/ll2-matching/Cargo.toml +13 -0
  36. simple_lanelet2-1.0.0/crates/ll2-matching/src/lib.rs +424 -0
  37. simple_lanelet2-1.0.0/crates/ll2-projection/Cargo.toml +11 -0
  38. simple_lanelet2-1.0.0/crates/ll2-projection/src/geocentric.rs +170 -0
  39. simple_lanelet2-1.0.0/crates/ll2-projection/src/lib.rs +256 -0
  40. simple_lanelet2-1.0.0/crates/ll2-projection/src/local_cartesian.rs +123 -0
  41. simple_lanelet2-1.0.0/crates/ll2-projection/src/mercator.rs +93 -0
  42. simple_lanelet2-1.0.0/crates/ll2-projection/src/mgrs.rs +344 -0
  43. simple_lanelet2-1.0.0/crates/ll2-projection/src/transverse_mercator.rs +444 -0
  44. simple_lanelet2-1.0.0/crates/ll2-projection/src/transverse_mercator_projector.rs +119 -0
  45. simple_lanelet2-1.0.0/crates/ll2-projection/src/utm.rs +170 -0
  46. simple_lanelet2-1.0.0/crates/ll2-projection/src/utmups.rs +221 -0
  47. simple_lanelet2-1.0.0/crates/ll2-python/Cargo.toml +25 -0
  48. simple_lanelet2-1.0.0/crates/ll2-python/src/accept.rs +240 -0
  49. simple_lanelet2-1.0.0/crates/ll2-python/src/awext/mod.rs +11 -0
  50. simple_lanelet2-1.0.0/crates/ll2-python/src/awext/projection.rs +155 -0
  51. simple_lanelet2-1.0.0/crates/ll2-python/src/awext/query.rs +296 -0
  52. simple_lanelet2-1.0.0/crates/ll2-python/src/awext/regelem.rs +677 -0
  53. simple_lanelet2-1.0.0/crates/ll2-python/src/conv.rs +68 -0
  54. simple_lanelet2-1.0.0/crates/ll2-python/src/core/area.rs +429 -0
  55. simple_lanelet2-1.0.0/crates/ll2-python/src/core/attribute.rs +182 -0
  56. simple_lanelet2-1.0.0/crates/ll2-python/src/core/basic.rs +328 -0
  57. simple_lanelet2-1.0.0/crates/ll2-python/src/core/compound.rs +252 -0
  58. simple_lanelet2-1.0.0/crates/ll2-python/src/core/convert.rs +75 -0
  59. simple_lanelet2-1.0.0/crates/ll2-python/src/core/gps.rs +95 -0
  60. simple_lanelet2-1.0.0/crates/ll2-python/src/core/lanelet.rs +363 -0
  61. simple_lanelet2-1.0.0/crates/ll2-python/src/core/linestring.rs +411 -0
  62. simple_lanelet2-1.0.0/crates/ll2-python/src/core/map.rs +480 -0
  63. simple_lanelet2-1.0.0/crates/ll2-python/src/core/mod.rs +62 -0
  64. simple_lanelet2-1.0.0/crates/ll2-python/src/core/point.rs +336 -0
  65. simple_lanelet2-1.0.0/crates/ll2-python/src/core/regelem.rs +1459 -0
  66. simple_lanelet2-1.0.0/crates/ll2-python/src/core/sequence.rs +157 -0
  67. simple_lanelet2-1.0.0/crates/ll2-python/src/err.rs +52 -0
  68. simple_lanelet2-1.0.0/crates/ll2-python/src/geometry.rs +948 -0
  69. simple_lanelet2-1.0.0/crates/ll2-python/src/io.rs +271 -0
  70. simple_lanelet2-1.0.0/crates/ll2-python/src/lib.rs +69 -0
  71. simple_lanelet2-1.0.0/crates/ll2-python/src/matching.rs +396 -0
  72. simple_lanelet2-1.0.0/crates/ll2-python/src/projection.rs +197 -0
  73. simple_lanelet2-1.0.0/crates/ll2-python/src/routing.rs +1346 -0
  74. simple_lanelet2-1.0.0/crates/ll2-python/src/traffic_rules.rs +251 -0
  75. simple_lanelet2-1.0.0/crates/ll2-routing/Cargo.toml +13 -0
  76. simple_lanelet2-1.0.0/crates/ll2-routing/src/cost.rs +200 -0
  77. simple_lanelet2-1.0.0/crates/ll2-routing/src/graph.rs +443 -0
  78. simple_lanelet2-1.0.0/crates/ll2-routing/src/lib.rs +907 -0
  79. simple_lanelet2-1.0.0/crates/ll2-routing/src/route.rs +293 -0
  80. simple_lanelet2-1.0.0/crates/ll2-traffic-rules/Cargo.toml +12 -0
  81. simple_lanelet2-1.0.0/crates/ll2-traffic-rules/src/german.rs +203 -0
  82. simple_lanelet2-1.0.0/crates/ll2-traffic-rules/src/lib.rs +594 -0
  83. simple_lanelet2-1.0.0/pyproject.toml +51 -0
  84. simple_lanelet2-1.0.0/python/autoware_lanelet2_extension_python/__init__.py +0 -0
  85. simple_lanelet2-1.0.0/python/autoware_lanelet2_extension_python/projection/__init__.py +14 -0
  86. simple_lanelet2-1.0.0/python/autoware_lanelet2_extension_python/projection.pyi +25 -0
  87. simple_lanelet2-1.0.0/python/autoware_lanelet2_extension_python/py.typed +0 -0
  88. simple_lanelet2-1.0.0/python/autoware_lanelet2_extension_python/regulatory_elements/__init__.py +36 -0
  89. simple_lanelet2-1.0.0/python/autoware_lanelet2_extension_python/regulatory_elements.pyi +119 -0
  90. simple_lanelet2-1.0.0/python/autoware_lanelet2_extension_python/utility/__init__.py +0 -0
  91. simple_lanelet2-1.0.0/python/autoware_lanelet2_extension_python/utility/query.py +512 -0
  92. simple_lanelet2-1.0.0/python/autoware_lanelet2_extension_python/utility/query.pyi +47 -0
  93. simple_lanelet2-1.0.0/python/autoware_lanelet2_extension_python/utility/utilities.py +535 -0
  94. simple_lanelet2-1.0.0/python/autoware_lanelet2_extension_python/utility/utilities.pyi +29 -0
  95. simple_lanelet2-1.0.0/python/lanelet2/__init__.py +81 -0
  96. simple_lanelet2-1.0.0/python/lanelet2/__init__.pyi +23 -0
  97. simple_lanelet2-1.0.0/python/lanelet2/_boost_enum.py +54 -0
  98. simple_lanelet2-1.0.0/python/lanelet2/core.pyi +711 -0
  99. simple_lanelet2-1.0.0/python/lanelet2/geometry.pyi +49 -0
  100. simple_lanelet2-1.0.0/python/lanelet2/io.pyi +17 -0
  101. simple_lanelet2-1.0.0/python/lanelet2/matching.pyi +48 -0
  102. simple_lanelet2-1.0.0/python/lanelet2/projection.pyi +43 -0
  103. simple_lanelet2-1.0.0/python/lanelet2/py.typed +0 -0
  104. simple_lanelet2-1.0.0/python/lanelet2/routing.pyi +163 -0
  105. 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
+