laser-learning-environment 2.2.2__tar.gz → 2.3.1__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 (114) hide show
  1. {laser_learning_environment-2.2.2 → laser_learning_environment-2.3.1}/.github/workflows/docs.yml +2 -2
  2. {laser_learning_environment-2.2.2 → laser_learning_environment-2.3.1}/Cargo.lock +63 -148
  3. {laser_learning_environment-2.2.2 → laser_learning_environment-2.3.1}/Cargo.toml +1 -1
  4. {laser_learning_environment-2.2.2 → laser_learning_environment-2.3.1}/PKG-INFO +12 -16
  5. {laser_learning_environment-2.2.2 → laser_learning_environment-2.3.1}/pyproject.toml +1 -0
  6. laser_learning_environment-2.3.1/python/lle/env/__init__.py +15 -0
  7. {laser_learning_environment-2.2.2 → laser_learning_environment-2.3.1}/python/lle/env/builder.py +8 -0
  8. {laser_learning_environment-2.2.2 → laser_learning_environment-2.3.1}/python/lle/env/env.py +36 -12
  9. {laser_learning_environment-2.2.2 → laser_learning_environment-2.3.1}/python/lle/env/extras_generators.py +18 -0
  10. {laser_learning_environment-2.2.2 → laser_learning_environment-2.3.1}/python/lle/env/reward_strategy.py +18 -10
  11. {laser_learning_environment-2.2.2 → laser_learning_environment-2.3.1}/python/lle/lle.pyi +26 -0
  12. {laser_learning_environment-2.2.2 → laser_learning_environment-2.3.1}/python/lle/observations.py +3 -0
  13. {laser_learning_environment-2.2.2 → laser_learning_environment-2.3.1}/readme.md +10 -15
  14. {laser_learning_environment-2.2.2 → laser_learning_environment-2.3.1}/src/bindings/pyexceptions.rs +1 -1
  15. {laser_learning_environment-2.2.2 → laser_learning_environment-2.3.1}/src/bindings/pyworld.rs +49 -1
  16. {laser_learning_environment-2.2.2 → laser_learning_environment-2.3.1}/src/core/parsing/world_config.rs +1 -1
  17. {laser_learning_environment-2.2.2 → laser_learning_environment-2.3.1}/src/core/tiles/tile.rs +1 -1
  18. {laser_learning_environment-2.2.2 → laser_learning_environment-2.3.1}/src/core/tiles/void.rs +0 -4
  19. {laser_learning_environment-2.2.2 → laser_learning_environment-2.3.1}/src/core/world/world.rs +1 -1
  20. {laser_learning_environment-2.2.2 → laser_learning_environment-2.3.1}/src/unit_tests/test_tile.rs +3 -3
  21. laser_learning_environment-2.2.2/python/lle/env/__init__.py +0 -5
  22. {laser_learning_environment-2.2.2 → laser_learning_environment-2.3.1}/.github/workflows/test_and_release.yaml +0 -0
  23. {laser_learning_environment-2.2.2 → laser_learning_environment-2.3.1}/.gitignore +0 -0
  24. {laser_learning_environment-2.2.2 → laser_learning_environment-2.3.1}/build.rs +0 -0
  25. {laser_learning_environment-2.2.2 → laser_learning_environment-2.3.1}/licence +0 -0
  26. {laser_learning_environment-2.2.2 → laser_learning_environment-2.3.1}/python/lle/__init__.py +0 -0
  27. {laser_learning_environment-2.2.2 → laser_learning_environment-2.3.1}/python/lle/env/utils.py +0 -0
  28. {laser_learning_environment-2.2.2 → laser_learning_environment-2.3.1}/python/lle/exceptions.pyi +0 -0
  29. {laser_learning_environment-2.2.2 → laser_learning_environment-2.3.1}/python/lle/py.typed +0 -0
  30. {laser_learning_environment-2.2.2 → laser_learning_environment-2.3.1}/python/lle/tiles.pyi +0 -0
  31. {laser_learning_environment-2.2.2 → laser_learning_environment-2.3.1}/python/lle/types.py +0 -0
  32. {laser_learning_environment-2.2.2 → laser_learning_environment-2.3.1}/resources/levels/lvl1 +0 -0
  33. {laser_learning_environment-2.2.2 → laser_learning_environment-2.3.1}/resources/levels/lvl2 +0 -0
  34. {laser_learning_environment-2.2.2 → laser_learning_environment-2.3.1}/resources/levels/lvl3 +0 -0
  35. {laser_learning_environment-2.2.2 → laser_learning_environment-2.3.1}/resources/levels/lvl4 +0 -0
  36. {laser_learning_environment-2.2.2 → laser_learning_environment-2.3.1}/resources/levels/lvl5 +0 -0
  37. {laser_learning_environment-2.2.2 → laser_learning_environment-2.3.1}/resources/levels/lvl6 +0 -0
  38. {laser_learning_environment-2.2.2 → laser_learning_environment-2.3.1}/resources/sprites/agents/blue.png +0 -0
  39. {laser_learning_environment-2.2.2 → laser_learning_environment-2.3.1}/resources/sprites/agents/green.png +0 -0
  40. {laser_learning_environment-2.2.2 → laser_learning_environment-2.3.1}/resources/sprites/agents/red.png +0 -0
  41. {laser_learning_environment-2.2.2 → laser_learning_environment-2.3.1}/resources/sprites/agents/yellow.png +0 -0
  42. {laser_learning_environment-2.2.2 → laser_learning_environment-2.3.1}/resources/sprites/convert.py +0 -0
  43. {laser_learning_environment-2.2.2 → laser_learning_environment-2.3.1}/resources/sprites/gem.png +0 -0
  44. {laser_learning_environment-2.2.2 → laser_learning_environment-2.3.1}/resources/sprites/laser_sources/east/blue.png +0 -0
  45. {laser_learning_environment-2.2.2 → laser_learning_environment-2.3.1}/resources/sprites/laser_sources/east/green.png +0 -0
  46. {laser_learning_environment-2.2.2 → laser_learning_environment-2.3.1}/resources/sprites/laser_sources/east/red.png +0 -0
  47. {laser_learning_environment-2.2.2 → laser_learning_environment-2.3.1}/resources/sprites/laser_sources/east/yellow.png +0 -0
  48. {laser_learning_environment-2.2.2 → laser_learning_environment-2.3.1}/resources/sprites/laser_sources/north/blue.png +0 -0
  49. {laser_learning_environment-2.2.2 → laser_learning_environment-2.3.1}/resources/sprites/laser_sources/north/green.png +0 -0
  50. {laser_learning_environment-2.2.2 → laser_learning_environment-2.3.1}/resources/sprites/laser_sources/north/red.png +0 -0
  51. {laser_learning_environment-2.2.2 → laser_learning_environment-2.3.1}/resources/sprites/laser_sources/north/yellow.png +0 -0
  52. {laser_learning_environment-2.2.2 → laser_learning_environment-2.3.1}/resources/sprites/laser_sources/south/blue.png +0 -0
  53. {laser_learning_environment-2.2.2 → laser_learning_environment-2.3.1}/resources/sprites/laser_sources/south/green.png +0 -0
  54. {laser_learning_environment-2.2.2 → laser_learning_environment-2.3.1}/resources/sprites/laser_sources/south/red.png +0 -0
  55. {laser_learning_environment-2.2.2 → laser_learning_environment-2.3.1}/resources/sprites/laser_sources/south/yellow.png +0 -0
  56. {laser_learning_environment-2.2.2 → laser_learning_environment-2.3.1}/resources/sprites/laser_sources/west/blue.png +0 -0
  57. {laser_learning_environment-2.2.2 → laser_learning_environment-2.3.1}/resources/sprites/laser_sources/west/green.png +0 -0
  58. {laser_learning_environment-2.2.2 → laser_learning_environment-2.3.1}/resources/sprites/laser_sources/west/red.png +0 -0
  59. {laser_learning_environment-2.2.2 → laser_learning_environment-2.3.1}/resources/sprites/laser_sources/west/yellow.png +0 -0
  60. {laser_learning_environment-2.2.2 → laser_learning_environment-2.3.1}/resources/sprites/lasers/horizontal/blue.png +0 -0
  61. {laser_learning_environment-2.2.2 → laser_learning_environment-2.3.1}/resources/sprites/lasers/horizontal/green.png +0 -0
  62. {laser_learning_environment-2.2.2 → laser_learning_environment-2.3.1}/resources/sprites/lasers/horizontal/red.png +0 -0
  63. {laser_learning_environment-2.2.2 → laser_learning_environment-2.3.1}/resources/sprites/lasers/horizontal/yellow.png +0 -0
  64. {laser_learning_environment-2.2.2 → laser_learning_environment-2.3.1}/resources/sprites/lasers/vertical/blue.png +0 -0
  65. {laser_learning_environment-2.2.2 → laser_learning_environment-2.3.1}/resources/sprites/lasers/vertical/green.png +0 -0
  66. {laser_learning_environment-2.2.2 → laser_learning_environment-2.3.1}/resources/sprites/lasers/vertical/red.png +0 -0
  67. {laser_learning_environment-2.2.2 → laser_learning_environment-2.3.1}/resources/sprites/lasers/vertical/yellow.png +0 -0
  68. {laser_learning_environment-2.2.2 → laser_learning_environment-2.3.1}/resources/sprites/void.png +0 -0
  69. {laser_learning_environment-2.2.2 → laser_learning_environment-2.3.1}/src/action.rs +0 -0
  70. {laser_learning_environment-2.2.2 → laser_learning_environment-2.3.1}/src/agent.rs +0 -0
  71. {laser_learning_environment-2.2.2 → laser_learning_environment-2.3.1}/src/bindings/mod.rs +0 -0
  72. {laser_learning_environment-2.2.2 → laser_learning_environment-2.3.1}/src/bindings/pyaction.rs +0 -0
  73. {laser_learning_environment-2.2.2 → laser_learning_environment-2.3.1}/src/bindings/pyagent.rs +0 -0
  74. {laser_learning_environment-2.2.2 → laser_learning_environment-2.3.1}/src/bindings/pydirection.rs +0 -0
  75. {laser_learning_environment-2.2.2 → laser_learning_environment-2.3.1}/src/bindings/pyevent.rs +0 -0
  76. {laser_learning_environment-2.2.2 → laser_learning_environment-2.3.1}/src/bindings/pyposition.rs +0 -0
  77. {laser_learning_environment-2.2.2 → laser_learning_environment-2.3.1}/src/bindings/pytile/mod.rs +0 -0
  78. {laser_learning_environment-2.2.2 → laser_learning_environment-2.3.1}/src/bindings/pytile/pygem.rs +0 -0
  79. {laser_learning_environment-2.2.2 → laser_learning_environment-2.3.1}/src/bindings/pytile/pylaser.rs +0 -0
  80. {laser_learning_environment-2.2.2 → laser_learning_environment-2.3.1}/src/bindings/pytile/pylaser_source.rs +0 -0
  81. {laser_learning_environment-2.2.2 → laser_learning_environment-2.3.1}/src/bindings/pyworld_builder.rs +0 -0
  82. {laser_learning_environment-2.2.2 → laser_learning_environment-2.3.1}/src/bindings/pyworld_state.rs +0 -0
  83. {laser_learning_environment-2.2.2 → laser_learning_environment-2.3.1}/src/core/errors.rs +0 -0
  84. {laser_learning_environment-2.2.2 → laser_learning_environment-2.3.1}/src/core/levels.rs +0 -0
  85. {laser_learning_environment-2.2.2 → laser_learning_environment-2.3.1}/src/core/mod.rs +0 -0
  86. {laser_learning_environment-2.2.2 → laser_learning_environment-2.3.1}/src/core/parsing/errors.rs +0 -0
  87. {laser_learning_environment-2.2.2 → laser_learning_environment-2.3.1}/src/core/parsing/laser_config.rs +0 -0
  88. {laser_learning_environment-2.2.2 → laser_learning_environment-2.3.1}/src/core/parsing/mod.rs +0 -0
  89. {laser_learning_environment-2.2.2 → laser_learning_environment-2.3.1}/src/core/parsing/parser_v1.rs +0 -0
  90. {laser_learning_environment-2.2.2 → laser_learning_environment-2.3.1}/src/core/parsing/toml/agent_config.rs +0 -0
  91. {laser_learning_environment-2.2.2 → laser_learning_environment-2.3.1}/src/core/parsing/toml/mod.rs +0 -0
  92. {laser_learning_environment-2.2.2 → laser_learning_environment-2.3.1}/src/core/parsing/toml/position_config.rs +0 -0
  93. {laser_learning_environment-2.2.2 → laser_learning_environment-2.3.1}/src/core/parsing/toml/toml_config.rs +0 -0
  94. {laser_learning_environment-2.2.2 → laser_learning_environment-2.3.1}/src/core/parsing/toml/toml_laser_config.rs +0 -0
  95. {laser_learning_environment-2.2.2 → laser_learning_environment-2.3.1}/src/core/tiles/direction.rs +0 -0
  96. {laser_learning_environment-2.2.2 → laser_learning_environment-2.3.1}/src/core/tiles/gem.rs +0 -0
  97. {laser_learning_environment-2.2.2 → laser_learning_environment-2.3.1}/src/core/tiles/laser.rs +0 -0
  98. {laser_learning_environment-2.2.2 → laser_learning_environment-2.3.1}/src/core/tiles/laser_source.rs +0 -0
  99. {laser_learning_environment-2.2.2 → laser_learning_environment-2.3.1}/src/core/tiles/mod.rs +0 -0
  100. {laser_learning_environment-2.2.2 → laser_learning_environment-2.3.1}/src/core/tiles/start.rs +0 -0
  101. {laser_learning_environment-2.2.2 → laser_learning_environment-2.3.1}/src/core/world/event.rs +0 -0
  102. {laser_learning_environment-2.2.2 → laser_learning_environment-2.3.1}/src/core/world/mod.rs +0 -0
  103. {laser_learning_environment-2.2.2 → laser_learning_environment-2.3.1}/src/core/world/world/test.rs +0 -0
  104. {laser_learning_environment-2.2.2 → laser_learning_environment-2.3.1}/src/core/world/world_state.rs +0 -0
  105. {laser_learning_environment-2.2.2 → laser_learning_environment-2.3.1}/src/lib.rs +0 -0
  106. {laser_learning_environment-2.2.2 → laser_learning_environment-2.3.1}/src/position.rs +0 -0
  107. {laser_learning_environment-2.2.2 → laser_learning_environment-2.3.1}/src/rendering/mod.rs +0 -0
  108. {laser_learning_environment-2.2.2 → laser_learning_environment-2.3.1}/src/rendering/renderer.rs +0 -0
  109. {laser_learning_environment-2.2.2 → laser_learning_environment-2.3.1}/src/rendering/sprites.rs +0 -0
  110. {laser_learning_environment-2.2.2 → laser_learning_environment-2.3.1}/src/rendering/tile_visitor.rs +0 -0
  111. {laser_learning_environment-2.2.2 → laser_learning_environment-2.3.1}/src/stub_gen.rs +0 -0
  112. {laser_learning_environment-2.2.2 → laser_learning_environment-2.3.1}/src/utils/mod.rs +0 -0
  113. {laser_learning_environment-2.2.2 → laser_learning_environment-2.3.1}/src/utils/test.rs +0 -0
  114. {laser_learning_environment-2.2.2 → laser_learning_environment-2.3.1}/tests/world_integration_tests.rs +0 -0
@@ -4,7 +4,7 @@ name: Deploy static content to Pages
4
4
  on:
5
5
  # Runs on pushes targeting the default branch
6
6
  push:
7
- branches: ["master"]
7
+ branches: ["master", "main"]
8
8
  # Only deploy the documentation on new version tags
9
9
  tags:
10
10
  - 'v[0-9]+.[0-9]+.[0-9]+'
@@ -45,7 +45,7 @@ jobs:
45
45
  - name: Install UV
46
46
  uses: yezz123/setup-uv@v4
47
47
  with:
48
- uv-version: 0.3.0
48
+ uv-version: 0.6.4
49
49
  - name: Install dependencies
50
50
  run: |
51
51
  uv sync
@@ -16,9 +16,9 @@ checksum = "4aa90d7ce82d4be67b64039a3d588d38dbcc6736577de4a847025ce5b0c468d1"
16
16
 
17
17
  [[package]]
18
18
  name = "anyhow"
19
- version = "1.0.96"
19
+ version = "1.0.97"
20
20
  source = "registry+https://github.com/rust-lang/crates.io-index"
21
- checksum = "6b964d184e89d9b6b67dd2715bc8e74cf3107fb2b529990c90cf517326150bf4"
21
+ checksum = "dcfed56ad506cb2c684a14971b8861fdc3baaaae314b9e5f9bb532cbe3ba7a4f"
22
22
 
23
23
  [[package]]
24
24
  name = "arbitrary"
@@ -110,15 +110,9 @@ checksum = "1628fb46dfa0b37568d12e5edd512553eccf6a22a78e8bde00bb4aed84d5bdbf"
110
110
 
111
111
  [[package]]
112
112
  name = "bytemuck"
113
- version = "1.21.0"
113
+ version = "1.22.0"
114
114
  source = "registry+https://github.com/rust-lang/crates.io-index"
115
- checksum = "ef657dfab802224e671f5818e9a4935f9b1957ed18e58292690cc39e7a4092a3"
116
-
117
- [[package]]
118
- name = "byteorder"
119
- version = "1.5.0"
120
- source = "registry+https://github.com/rust-lang/crates.io-index"
121
- checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b"
115
+ checksum = "b6b1fc10dbac614ebc03540c9dbd60e83887fda27794998c6528f1782047d540"
122
116
 
123
117
  [[package]]
124
118
  name = "byteorder-lite"
@@ -201,9 +195,9 @@ checksum = "43da5946c66ffcc7745f48db692ffbb10a83bfe0afd96235c5c2a4fb23994929"
201
195
 
202
196
  [[package]]
203
197
  name = "either"
204
- version = "1.14.0"
198
+ version = "1.15.0"
205
199
  source = "registry+https://github.com/rust-lang/crates.io-index"
206
- checksum = "b7914353092ddf589ad78f25c5c1c21b7f80b0ff8621e7c814c3485b5306da9d"
200
+ checksum = "48c757948c5ede0e46177b7add2e67155f70e33c07fea8284df6576da70b3719"
207
201
 
208
202
  [[package]]
209
203
  name = "equivalent"
@@ -258,14 +252,14 @@ dependencies = [
258
252
 
259
253
  [[package]]
260
254
  name = "getrandom"
261
- version = "0.3.1"
255
+ version = "0.3.2"
262
256
  source = "registry+https://github.com/rust-lang/crates.io-index"
263
- checksum = "43a49c392881ce6d5c3b8cb70f98717b7c07aabbdff06687b9030dbfbe2725f8"
257
+ checksum = "73fea8450eea4bac3940448fb7ae50d91f034f941199fcd9d909a5a07aa455f0"
264
258
  dependencies = [
265
259
  "cfg-if",
266
260
  "libc",
267
- "wasi 0.13.3+wasi-0.2.2",
268
- "windows-targets",
261
+ "r-efi",
262
+ "wasi 0.14.2+wasi-0.2.4",
269
263
  ]
270
264
 
271
265
  [[package]]
@@ -280,9 +274,9 @@ dependencies = [
280
274
 
281
275
  [[package]]
282
276
  name = "half"
283
- version = "2.4.1"
277
+ version = "2.5.0"
284
278
  source = "registry+https://github.com/rust-lang/crates.io-index"
285
- checksum = "6dd08c532ae367adf81c312a4580bc67f1d0fe8bc9c460520283f4c0ff277888"
279
+ checksum = "7db2ff139bba50379da6aa0766b52fdcb62cb5b263009b09ed58ba604e14bbd1"
286
280
  dependencies = [
287
281
  "cfg-if",
288
282
  "crunchy",
@@ -341,9 +335,9 @@ checksum = "d0263a3d970d5c054ed9312c0057b4f3bde9c0b33836d3637361d4a9e6e7a408"
341
335
 
342
336
  [[package]]
343
337
  name = "indexmap"
344
- version = "2.7.1"
338
+ version = "2.8.0"
345
339
  source = "registry+https://github.com/rust-lang/crates.io-index"
346
- checksum = "8c9c992b02b5b4c94ea26e32fe5bccb7aa7d9f390ab5c1221ff895bc7ea8b652"
340
+ checksum = "3954d50fe15b02142bf25d3b8bdadb634ec3948f103d04ffe3031bc8fe9d7058"
347
341
  dependencies = [
348
342
  "equivalent",
349
343
  "hashbrown",
@@ -351,9 +345,9 @@ dependencies = [
351
345
 
352
346
  [[package]]
353
347
  name = "indoc"
354
- version = "2.0.5"
348
+ version = "2.0.6"
355
349
  source = "registry+https://github.com/rust-lang/crates.io-index"
356
- checksum = "b248f5224d1d606005e02c97f5aa4e88eeb230488bcc03bc9ca4d7991399f2b5"
350
+ checksum = "f4c7245a08504955605670dbf141fceab975f15ca21570696aebe9d2e71576bd"
357
351
 
358
352
  [[package]]
359
353
  name = "interpolate_name"
@@ -368,9 +362,9 @@ dependencies = [
368
362
 
369
363
  [[package]]
370
364
  name = "inventory"
371
- version = "0.3.19"
365
+ version = "0.3.20"
372
366
  source = "registry+https://github.com/rust-lang/crates.io-index"
373
- checksum = "54b12ebb6799019b044deaf431eadfe23245b259bba5a2c0796acec3943a3cdb"
367
+ checksum = "ab08d7cd2c5897f2c949e5383ea7c7db03fb19130ffcfbf7eda795137ae3cb83"
374
368
  dependencies = [
375
369
  "rustversion",
376
370
  ]
@@ -431,9 +425,9 @@ checksum = "03087c2bad5e1034e8cace5926dec053fb3790248370865f5117a7d0213354c8"
431
425
 
432
426
  [[package]]
433
427
  name = "libc"
434
- version = "0.2.170"
428
+ version = "0.2.171"
435
429
  source = "registry+https://github.com/rust-lang/crates.io-index"
436
- checksum = "875b3680cb2f8f71bdcf9a30f38d48282f5d3c95cbf9b3fa57269bb5d5c06828"
430
+ checksum = "c19937216e9d3aa9956d9bb8dfc0b0c8beb6058fc4f7a4dc4d850edf86a237d6"
437
431
 
438
432
  [[package]]
439
433
  name = "libfuzzer-sys"
@@ -447,7 +441,7 @@ dependencies = [
447
441
 
448
442
  [[package]]
449
443
  name = "lle"
450
- version = "2.2.2"
444
+ version = "2.3.1"
451
445
  dependencies = [
452
446
  "image",
453
447
  "itertools 0.14.0",
@@ -645,9 +639,9 @@ dependencies = [
645
639
 
646
640
  [[package]]
647
641
  name = "once_cell"
648
- version = "1.20.3"
642
+ version = "1.21.1"
649
643
  source = "registry+https://github.com/rust-lang/crates.io-index"
650
- checksum = "945462a4b81e43c4e3ba96bd7b49d834c6f61198356aa858733bc4acf3cbe62e"
644
+ checksum = "d75b0bedcc4fe52caa0e03d9f1151a323e4aa5e2d78ba3580400cd3c9e2bc4bc"
651
645
 
652
646
  [[package]]
653
647
  name = "paste"
@@ -657,9 +651,9 @@ checksum = "57c0d7b74b563b49d38dae00a0c37d4d6de9b432382b2892f0574ddcae73fd0a"
657
651
 
658
652
  [[package]]
659
653
  name = "pkg-config"
660
- version = "0.3.31"
654
+ version = "0.3.32"
661
655
  source = "registry+https://github.com/rust-lang/crates.io-index"
662
- checksum = "953ec861398dccce10c670dfeaf3ec4911ca479e9c02154b3a215178c5f566f2"
656
+ checksum = "7edddbd0b52d732b21ad9a5fab5c704c14cd949e5e9a1ec5929a24fded1b904c"
663
657
 
664
658
  [[package]]
665
659
  name = "png"
@@ -691,18 +685,18 @@ dependencies = [
691
685
 
692
686
  [[package]]
693
687
  name = "ppv-lite86"
694
- version = "0.2.20"
688
+ version = "0.2.21"
695
689
  source = "registry+https://github.com/rust-lang/crates.io-index"
696
- checksum = "77957b295656769bb8ad2b6a6b09d897d94f05c41b069aede1fcdaa675eaea04"
690
+ checksum = "85eae3c4ed2f50dcfe72643da4befc30deadb458a9b590d720cde2f2b1e97da9"
697
691
  dependencies = [
698
- "zerocopy 0.7.35",
692
+ "zerocopy",
699
693
  ]
700
694
 
701
695
  [[package]]
702
696
  name = "proc-macro2"
703
- version = "1.0.93"
697
+ version = "1.0.94"
704
698
  source = "registry+https://github.com/rust-lang/crates.io-index"
705
- checksum = "60946a68e5f9d28b0dc1c21bb8a97ee7d018a8b322fa57838ba31cc878e22d99"
699
+ checksum = "a31971752e70b8b2686d7e46ec17fb38dad4051d94024c88df49b667caea9c84"
706
700
  dependencies = [
707
701
  "unicode-ident",
708
702
  ]
@@ -834,13 +828,19 @@ checksum = "a993555f31e5a609f617c12db6250dedcac1b0a85076912c436e6fc9b2c8e6a3"
834
828
 
835
829
  [[package]]
836
830
  name = "quote"
837
- version = "1.0.38"
831
+ version = "1.0.40"
838
832
  source = "registry+https://github.com/rust-lang/crates.io-index"
839
- checksum = "0e4dccaaaf89514f546c693ddc140f729f958c247918a13380cccc6078391acc"
833
+ checksum = "1885c039570dc00dcb4ff087a89e185fd56bae234ddc7f056a945bf36467248d"
840
834
  dependencies = [
841
835
  "proc-macro2",
842
836
  ]
843
837
 
838
+ [[package]]
839
+ name = "r-efi"
840
+ version = "5.2.0"
841
+ source = "registry+https://github.com/rust-lang/crates.io-index"
842
+ checksum = "74765f6d916ee2faa39bc8e68e4f3ed8949b48cccdac59983d287a7cb71ce9c5"
843
+
844
844
  [[package]]
845
845
  name = "rand"
846
846
  version = "0.8.5"
@@ -860,7 +860,7 @@ checksum = "3779b94aeb87e8bd4e834cee3650289ee9e0d5677f976ecdb6d219e5f4f6cd94"
860
860
  dependencies = [
861
861
  "rand_chacha 0.9.0",
862
862
  "rand_core 0.9.3",
863
- "zerocopy 0.8.21",
863
+ "zerocopy",
864
864
  ]
865
865
 
866
866
  [[package]]
@@ -898,7 +898,7 @@ version = "0.9.3"
898
898
  source = "registry+https://github.com/rust-lang/crates.io-index"
899
899
  checksum = "99d9a13982dcf210057a8a78572b2217b667c3beacbf3a0d8b454f6f82837d38"
900
900
  dependencies = [
901
- "getrandom 0.3.1",
901
+ "getrandom 0.3.2",
902
902
  ]
903
903
 
904
904
  [[package]]
@@ -991,24 +991,24 @@ checksum = "357703d41365b4b27c590e3ed91eabb1b663f07c4c084095e60cbed4362dff0d"
991
991
 
992
992
  [[package]]
993
993
  name = "rustversion"
994
- version = "1.0.19"
994
+ version = "1.0.20"
995
995
  source = "registry+https://github.com/rust-lang/crates.io-index"
996
- checksum = "f7c45b9784283f1b2e7fb61b42047c2fd678ef0960d4f6f1eba131594cc369d4"
996
+ checksum = "eded382c5f5f786b989652c49544c4877d9f015cc22e145a5ea8ea66c2921cd2"
997
997
 
998
998
  [[package]]
999
999
  name = "serde"
1000
- version = "1.0.218"
1000
+ version = "1.0.219"
1001
1001
  source = "registry+https://github.com/rust-lang/crates.io-index"
1002
- checksum = "e8dfc9d19bdbf6d17e22319da49161d5d0108e4188e8b680aef6299eed22df60"
1002
+ checksum = "5f0e2c6ed6606019b4e29e69dbaba95b11854410e5347d525002456dbbb786b6"
1003
1003
  dependencies = [
1004
1004
  "serde_derive",
1005
1005
  ]
1006
1006
 
1007
1007
  [[package]]
1008
1008
  name = "serde_derive"
1009
- version = "1.0.218"
1009
+ version = "1.0.219"
1010
1010
  source = "registry+https://github.com/rust-lang/crates.io-index"
1011
- checksum = "f09503e191f4e797cb8aac08e9a4a4695c5edf6a2e70e376d961ddd5c969f82b"
1011
+ checksum = "5b0276cf7f2c73365f7157c8123c21cd9a50fbbd844757af28ca1f5925fc2a00"
1012
1012
  dependencies = [
1013
1013
  "proc-macro2",
1014
1014
  "quote",
@@ -1053,9 +1053,9 @@ checksum = "7fcf8323ef1faaee30a44a340193b1ac6814fd9b7b4e88e9d4519a3e4abe1cfd"
1053
1053
 
1054
1054
  [[package]]
1055
1055
  name = "syn"
1056
- version = "2.0.98"
1056
+ version = "2.0.100"
1057
1057
  source = "registry+https://github.com/rust-lang/crates.io-index"
1058
- checksum = "36147f1a48ae0ec2b5b3bc5b537d267457555a10dc06f3dbc8cb11ba3006d3b1"
1058
+ checksum = "b09a44accad81e1ba1cd74a32461ba89dee89095ba17b32f5d03683b1b1fc2a0"
1059
1059
  dependencies = [
1060
1060
  "proc-macro2",
1061
1061
  "quote",
@@ -1148,15 +1148,15 @@ dependencies = [
1148
1148
 
1149
1149
  [[package]]
1150
1150
  name = "unicode-ident"
1151
- version = "1.0.17"
1151
+ version = "1.0.18"
1152
1152
  source = "registry+https://github.com/rust-lang/crates.io-index"
1153
- checksum = "00e2473a93778eb0bad35909dff6a10d28e63f792f16ed15e404fca9d5eeedbe"
1153
+ checksum = "5a5f39404a5da50712a4c1eecf25e90dd62b613502b7e925fd4e4d19b5c96512"
1154
1154
 
1155
1155
  [[package]]
1156
1156
  name = "unindent"
1157
- version = "0.2.3"
1157
+ version = "0.2.4"
1158
1158
  source = "registry+https://github.com/rust-lang/crates.io-index"
1159
- checksum = "c7de7d73e1754487cb58364ee906a499937a0dfabd86bcb980fa99ec8c8fa2ce"
1159
+ checksum = "7264e107f553ccae879d21fbea1d6724ac785e8c3bfc762137959b5802826ef3"
1160
1160
 
1161
1161
  [[package]]
1162
1162
  name = "v_frame"
@@ -1183,9 +1183,9 @@ checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423"
1183
1183
 
1184
1184
  [[package]]
1185
1185
  name = "wasi"
1186
- version = "0.13.3+wasi-0.2.2"
1186
+ version = "0.14.2+wasi-0.2.4"
1187
1187
  source = "registry+https://github.com/rust-lang/crates.io-index"
1188
- checksum = "26816d2e1a4a36a2940b96c5296ce403917633dff8f3440e9b236ed6f6bacad2"
1188
+ checksum = "9683f9a5a998d873c0d21fcbe3c083009670149a8fab228644b8bd36b2c48cb3"
1189
1189
  dependencies = [
1190
1190
  "wit-bindgen-rt",
1191
1191
  ]
@@ -1254,123 +1254,38 @@ version = "0.1.8"
1254
1254
  source = "registry+https://github.com/rust-lang/crates.io-index"
1255
1255
  checksum = "53a85b86a771b1c87058196170769dd264f66c0782acf1ae6cc51bfd64b39082"
1256
1256
 
1257
- [[package]]
1258
- name = "windows-targets"
1259
- version = "0.52.6"
1260
- source = "registry+https://github.com/rust-lang/crates.io-index"
1261
- checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973"
1262
- dependencies = [
1263
- "windows_aarch64_gnullvm",
1264
- "windows_aarch64_msvc",
1265
- "windows_i686_gnu",
1266
- "windows_i686_gnullvm",
1267
- "windows_i686_msvc",
1268
- "windows_x86_64_gnu",
1269
- "windows_x86_64_gnullvm",
1270
- "windows_x86_64_msvc",
1271
- ]
1272
-
1273
- [[package]]
1274
- name = "windows_aarch64_gnullvm"
1275
- version = "0.52.6"
1276
- source = "registry+https://github.com/rust-lang/crates.io-index"
1277
- checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3"
1278
-
1279
- [[package]]
1280
- name = "windows_aarch64_msvc"
1281
- version = "0.52.6"
1282
- source = "registry+https://github.com/rust-lang/crates.io-index"
1283
- checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469"
1284
-
1285
- [[package]]
1286
- name = "windows_i686_gnu"
1287
- version = "0.52.6"
1288
- source = "registry+https://github.com/rust-lang/crates.io-index"
1289
- checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b"
1290
-
1291
- [[package]]
1292
- name = "windows_i686_gnullvm"
1293
- version = "0.52.6"
1294
- source = "registry+https://github.com/rust-lang/crates.io-index"
1295
- checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66"
1296
-
1297
- [[package]]
1298
- name = "windows_i686_msvc"
1299
- version = "0.52.6"
1300
- source = "registry+https://github.com/rust-lang/crates.io-index"
1301
- checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66"
1302
-
1303
- [[package]]
1304
- name = "windows_x86_64_gnu"
1305
- version = "0.52.6"
1306
- source = "registry+https://github.com/rust-lang/crates.io-index"
1307
- checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78"
1308
-
1309
- [[package]]
1310
- name = "windows_x86_64_gnullvm"
1311
- version = "0.52.6"
1312
- source = "registry+https://github.com/rust-lang/crates.io-index"
1313
- checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d"
1314
-
1315
- [[package]]
1316
- name = "windows_x86_64_msvc"
1317
- version = "0.52.6"
1318
- source = "registry+https://github.com/rust-lang/crates.io-index"
1319
- checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec"
1320
-
1321
1257
  [[package]]
1322
1258
  name = "winnow"
1323
- version = "0.7.3"
1259
+ version = "0.7.4"
1324
1260
  source = "registry+https://github.com/rust-lang/crates.io-index"
1325
- checksum = "0e7f4ea97f6f78012141bcdb6a216b2609f0979ada50b20ca5b52dde2eac2bb1"
1261
+ checksum = "0e97b544156e9bebe1a0ffbc03484fc1ffe3100cbce3ffb17eac35f7cdd7ab36"
1326
1262
  dependencies = [
1327
1263
  "memchr",
1328
1264
  ]
1329
1265
 
1330
1266
  [[package]]
1331
1267
  name = "wit-bindgen-rt"
1332
- version = "0.33.0"
1268
+ version = "0.39.0"
1333
1269
  source = "registry+https://github.com/rust-lang/crates.io-index"
1334
- checksum = "3268f3d866458b787f390cf61f4bbb563b922d091359f9608842999eaee3943c"
1270
+ checksum = "6f42320e61fe2cfd34354ecb597f86f413484a798ba44a8ca1165c58d42da6c1"
1335
1271
  dependencies = [
1336
1272
  "bitflags 2.9.0",
1337
1273
  ]
1338
1274
 
1339
1275
  [[package]]
1340
1276
  name = "zerocopy"
1341
- version = "0.7.35"
1342
- source = "registry+https://github.com/rust-lang/crates.io-index"
1343
- checksum = "1b9b4fd18abc82b8136838da5d50bae7bdea537c574d8dc1a34ed098d6c166f0"
1344
- dependencies = [
1345
- "byteorder",
1346
- "zerocopy-derive 0.7.35",
1347
- ]
1348
-
1349
- [[package]]
1350
- name = "zerocopy"
1351
- version = "0.8.21"
1352
- source = "registry+https://github.com/rust-lang/crates.io-index"
1353
- checksum = "dcf01143b2dd5d134f11f545cf9f1431b13b749695cb33bcce051e7568f99478"
1354
- dependencies = [
1355
- "zerocopy-derive 0.8.21",
1356
- ]
1357
-
1358
- [[package]]
1359
- name = "zerocopy-derive"
1360
- version = "0.7.35"
1277
+ version = "0.8.23"
1361
1278
  source = "registry+https://github.com/rust-lang/crates.io-index"
1362
- checksum = "fa4f8080344d4671fb4e831a13ad1e68092748387dfc4f55e356242fae12ce3e"
1279
+ checksum = "fd97444d05a4328b90e75e503a34bad781f14e28a823ad3557f0750df1ebcbc6"
1363
1280
  dependencies = [
1364
- "proc-macro2",
1365
- "quote",
1366
- "syn",
1281
+ "zerocopy-derive",
1367
1282
  ]
1368
1283
 
1369
1284
  [[package]]
1370
1285
  name = "zerocopy-derive"
1371
- version = "0.8.21"
1286
+ version = "0.8.23"
1372
1287
  source = "registry+https://github.com/rust-lang/crates.io-index"
1373
- checksum = "712c8386f4f4299382c9abee219bee7084f78fb939d88b6840fcc1320d5f6da2"
1288
+ checksum = "6352c01d0edd5db859a63e2605f4ea3183ddbd15e2c4a9e7d32184df75e4f154"
1374
1289
  dependencies = [
1375
1290
  "proc-macro2",
1376
1291
  "quote",
@@ -1,6 +1,6 @@
1
1
  [package]
2
2
  name = "lle"
3
- version = "2.2.2"
3
+ version = "2.3.1"
4
4
  edition = "2021"
5
5
  readme = "readme.md"
6
6
  license-file = "licence"
@@ -1,12 +1,13 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: laser-learning-environment
3
- Version: 2.2.2
3
+ Version: 2.3.1
4
4
  Classifier: Programming Language :: Rust
5
5
  Classifier: Programming Language :: Python :: Implementation :: CPython
6
6
  Classifier: Programming Language :: Python :: Implementation :: PyPy
7
7
  Requires-Dist: numpy>=2.0.0
8
8
  Requires-Dist: multi-agent-rlenv>=3.2.0
9
9
  Requires-Dist: opencv-python>=4.0.0
10
+ Requires-Dist: orjson>=3.10.15
10
11
  License-File: licence
11
12
  Summary: Laser Learning Environment (LLE) for Multi-Agent Reinforcement Learning
12
13
  Keywords: marl,rl,lle,laser,environment
@@ -27,28 +28,30 @@ When an agent enters a laser of its own colour, it blocks it. Otherwise, it dies
27
28
 
28
29
  # Quick start
29
30
  ## Installation
30
- You can install the Laser Learning Environment with pip or poetry.
31
+ Install the Laser Learning Environment with uv, pip, poetry, ...
31
32
  ```bash
32
33
  pip install laser-learning-environment # Latest stable release with pip
33
34
  pip install git+https://github.com/yamoling/lle # latest push on master
34
35
  ```
35
36
 
36
37
  ## Usage
37
- LLE can be used at two levels of abstraction: as an `RLEnv` for cooperative multi-agent reinforcement learning or as a `World` for many other purposes.
38
+ LLE can be used at two levels of abstraction: as an `MARLEnv` for cooperative multi-agent reinforcement learning or as a `World` for many other purposes.
38
39
  ### For cooperative multi-agent reinforcement learning
39
- The `LLE` class inherits from the `RLEnv` class in the [rlenv](https://github.com/yamoling/rlenv) framework. Here is an example with the following map: ![LLE](docs/3x1.png)
40
+ The `LLE` class inherits from the `MARLEnv` class in the [marlenv](https://github.com/yamoling/multi-agent-rlenv) framework. Here is an example with the following map: ![LLE](docs/3x1.png)
40
41
 
41
42
 
42
43
  ```python
43
44
  from lle import LLE
44
45
 
45
- env = LLE.from_str("S0 G X").single_objective()
46
- done = truncated = False
46
+ env = LLE.from_str("S0 G X").build()
47
+ done = False
47
48
  obs, state = env.reset()
48
- while not (done or truncated):
49
+ while not done:
49
50
  # env.render() # Uncomment to render
50
51
  actions = env.sample_action()
51
- obs, state, reward, done, truncated, info = env.step(actions)
52
+ step = env.step(actions)
53
+ # Access the step data with `step.obs`, `step.reward`, ...
54
+ done = step.is_terminal # Either done or truncated
52
55
  ```
53
56
 
54
57
 
@@ -109,16 +112,9 @@ cargo run --bin stub-gen
109
112
 
110
113
 
111
114
  ## Tests
112
- This project **does not** respect Rust unit tests convention and takes inspiration from [this structure](http://xion.io/post/code/rust-unit-test-placement.html). Unit tests are in the `src/unit_tests` folder and are explicitely linked to in each file with the `#path` directive.
113
- Integration tests are written on the python side.
114
-
115
- Run unit tests with
115
+ Run unit tests in rust & python with
116
116
  ```bash
117
117
  cargo test
118
- ```
119
-
120
- Run integration tests with
121
- ```bash
122
118
  maturin develop
123
119
  pytest
124
120
  ```
@@ -12,6 +12,7 @@ dependencies = [
12
12
  "numpy>=2.0.0",
13
13
  "multi-agent-rlenv>=3.2.0",
14
14
  "opencv-python>=4.0.0",
15
+ "orjson>=3.10.15",
15
16
  ]
16
17
  description = "Laser Learning Environment (LLE) for Multi-Agent Reinforcement Learning"
17
18
  name = "laser-learning-environment"
@@ -0,0 +1,15 @@
1
+ from .reward_strategy import RewardStrategy, SingleObjective, MultiObjective
2
+ from .extras_generators import ExtraGenerator, NoExtras, LaserSubgoal
3
+ from .env import LLE
4
+ from .builder import Builder
5
+
6
+ __all__ = [
7
+ "LLE",
8
+ "Builder",
9
+ "RewardStrategy",
10
+ "SingleObjective",
11
+ "MultiObjective",
12
+ "ExtraGenerator",
13
+ "NoExtras",
14
+ "LaserSubgoal",
15
+ ]
@@ -19,6 +19,7 @@ class Builder:
19
19
  _env_name: str
20
20
  _reward_strategy: RewardStrategy
21
21
  _extras_generator: ExtraGenerator
22
+ _randomize_lasers: bool
22
23
 
23
24
  def __init__(self, world: World):
24
25
  self._world = world
@@ -29,6 +30,7 @@ class Builder:
29
30
  self._env_name = "LLE"
30
31
  self._reward_strategy = SingleObjective(world.n_agents)
31
32
  self._extras_generator = NoExtras(world.n_agents)
33
+ self._randomize_lasers = False
32
34
 
33
35
  def obs_type(
34
36
  self,
@@ -120,6 +122,11 @@ class Builder:
120
122
  )
121
123
  return self
122
124
 
125
+ def randomize_lasers(self):
126
+ """Randomize the colour of the lasers at each reset."""
127
+ self._randomize_lasers = True
128
+ return self
129
+
123
130
  def add_extras(self, *extras: Literal["laser_subgoal"] | ExtraGenerator):
124
131
  """
125
132
  Add extra information to the observation.
@@ -161,6 +168,7 @@ class Builder:
161
168
  name=self._env_name,
162
169
  reward_strategy=self._reward_strategy,
163
170
  extras_generator=self._extras_generator,
171
+ randomize_lasers=self._randomize_lasers,
164
172
  )
165
173
  return env
166
174