kaggle-environments 1.15.3__tar.gz → 1.16.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.

Potentially problematic release.


This version of kaggle-environments might be problematic. Click here for more details.

Files changed (217) hide show
  1. {kaggle-environments-1.15.3/kaggle_environments.egg-info → kaggle-environments-1.16.1}/PKG-INFO +1 -1
  2. {kaggle-environments-1.15.3 → kaggle-environments-1.16.1}/kaggle_environments/__init__.py +1 -1
  3. {kaggle-environments-1.15.3 → kaggle-environments-1.16.1}/kaggle_environments/envs/chess/chess.js +15 -0
  4. {kaggle-environments-1.15.3 → kaggle-environments-1.16.1}/kaggle_environments/envs/chess/chess.json +5 -4
  5. kaggle-environments-1.16.1/kaggle_environments/envs/chess/chess.py +264 -0
  6. kaggle-environments-1.16.1/kaggle_environments/envs/chess/test_chess.py +50 -0
  7. kaggle-environments-1.16.1/kaggle_environments/envs/lux_ai_s3/agents.py +4 -0
  8. kaggle-environments-1.16.1/kaggle_environments/envs/lux_ai_s3/index.html +42 -0
  9. kaggle-environments-1.16.1/kaggle_environments/envs/lux_ai_s3/lux_ai_s3.json +47 -0
  10. kaggle-environments-1.16.1/kaggle_environments/envs/lux_ai_s3/lux_ai_s3.py +138 -0
  11. kaggle-environments-1.16.1/kaggle_environments/envs/lux_ai_s3/luxai_s3/__init__.py +1 -0
  12. kaggle-environments-1.16.1/kaggle_environments/envs/lux_ai_s3/luxai_s3/env.py +924 -0
  13. kaggle-environments-1.16.1/kaggle_environments/envs/lux_ai_s3/luxai_s3/globals.py +13 -0
  14. kaggle-environments-1.16.1/kaggle_environments/envs/lux_ai_s3/luxai_s3/params.py +101 -0
  15. kaggle-environments-1.16.1/kaggle_environments/envs/lux_ai_s3/luxai_s3/profiler.py +140 -0
  16. kaggle-environments-1.16.1/kaggle_environments/envs/lux_ai_s3/luxai_s3/pygame_render.py +270 -0
  17. kaggle-environments-1.16.1/kaggle_environments/envs/lux_ai_s3/luxai_s3/spaces.py +30 -0
  18. kaggle-environments-1.16.1/kaggle_environments/envs/lux_ai_s3/luxai_s3/state.py +399 -0
  19. kaggle-environments-1.16.1/kaggle_environments/envs/lux_ai_s3/luxai_s3/utils.py +12 -0
  20. kaggle-environments-1.16.1/kaggle_environments/envs/lux_ai_s3/luxai_s3/wrappers.py +187 -0
  21. kaggle-environments-1.16.1/kaggle_environments/envs/lux_ai_s3/test_agents/python/agent.py +71 -0
  22. kaggle-environments-1.16.1/kaggle_environments/envs/lux_ai_s3/test_agents/python/lux/kit.py +27 -0
  23. kaggle-environments-1.16.1/kaggle_environments/envs/lux_ai_s3/test_agents/python/lux/utils.py +17 -0
  24. kaggle-environments-1.16.1/kaggle_environments/envs/lux_ai_s3/test_agents/python/main.py +53 -0
  25. kaggle-environments-1.16.1/kaggle_environments/envs/lux_ai_s3/test_lux.py +9 -0
  26. kaggle-environments-1.16.1/kaggle_environments/envs/rps/__init__.py +0 -0
  27. {kaggle-environments-1.15.3 → kaggle-environments-1.16.1/kaggle_environments.egg-info}/PKG-INFO +1 -1
  28. {kaggle-environments-1.15.3 → kaggle-environments-1.16.1}/kaggle_environments.egg-info/SOURCES.txt +20 -0
  29. {kaggle-environments-1.15.3 → kaggle-environments-1.16.1}/kaggle_environments.egg-info/requires.txt +1 -1
  30. {kaggle-environments-1.15.3 → kaggle-environments-1.16.1}/setup.py +1 -1
  31. kaggle-environments-1.15.3/kaggle_environments/envs/chess/chess.py +0 -109
  32. kaggle-environments-1.15.3/kaggle_environments/envs/chess/test_chess.py +0 -8
  33. {kaggle-environments-1.15.3 → kaggle-environments-1.16.1}/LICENSE +0 -0
  34. {kaggle-environments-1.15.3 → kaggle-environments-1.16.1}/MANIFEST.in +0 -0
  35. {kaggle-environments-1.15.3 → kaggle-environments-1.16.1}/README.md +0 -0
  36. {kaggle-environments-1.15.3 → kaggle-environments-1.16.1}/kaggle_environments/agent.py +0 -0
  37. {kaggle-environments-1.15.3 → kaggle-environments-1.16.1}/kaggle_environments/api.py +0 -0
  38. {kaggle-environments-1.15.3 → kaggle-environments-1.16.1}/kaggle_environments/core.py +0 -0
  39. {kaggle-environments-1.15.3 → kaggle-environments-1.16.1}/kaggle_environments/envs/connectx/connectx.js +0 -0
  40. {kaggle-environments-1.15.3 → kaggle-environments-1.16.1}/kaggle_environments/envs/connectx/connectx.json +0 -0
  41. {kaggle-environments-1.15.3 → kaggle-environments-1.16.1}/kaggle_environments/envs/connectx/connectx.py +0 -0
  42. {kaggle-environments-1.15.3 → kaggle-environments-1.16.1}/kaggle_environments/envs/connectx/test_connectx.py +0 -0
  43. {kaggle-environments-1.15.3 → kaggle-environments-1.16.1}/kaggle_environments/envs/football/football.json +0 -0
  44. {kaggle-environments-1.15.3 → kaggle-environments-1.16.1}/kaggle_environments/envs/football/football.py +0 -0
  45. {kaggle-environments-1.15.3 → kaggle-environments-1.16.1}/kaggle_environments/envs/football/helpers.py +0 -0
  46. {kaggle-environments-1.15.3 → kaggle-environments-1.16.1}/kaggle_environments/envs/football/test_football.py +0 -0
  47. {kaggle-environments-1.15.3 → kaggle-environments-1.16.1}/kaggle_environments/envs/halite/__init__.py +0 -0
  48. {kaggle-environments-1.15.3 → kaggle-environments-1.16.1}/kaggle_environments/envs/halite/halite.js +0 -0
  49. {kaggle-environments-1.15.3 → kaggle-environments-1.16.1}/kaggle_environments/envs/halite/halite.json +0 -0
  50. {kaggle-environments-1.15.3 → kaggle-environments-1.16.1}/kaggle_environments/envs/halite/halite.py +0 -0
  51. {kaggle-environments-1.15.3 → kaggle-environments-1.16.1}/kaggle_environments/envs/halite/helpers.py +0 -0
  52. {kaggle-environments-1.15.3 → kaggle-environments-1.16.1}/kaggle_environments/envs/halite/test_halite.py +0 -0
  53. {kaggle-environments-1.15.3 → kaggle-environments-1.16.1}/kaggle_environments/envs/hungry_geese/__init__.py +0 -0
  54. {kaggle-environments-1.15.3 → kaggle-environments-1.16.1}/kaggle_environments/envs/hungry_geese/hungry_geese.js +0 -0
  55. {kaggle-environments-1.15.3 → kaggle-environments-1.16.1}/kaggle_environments/envs/hungry_geese/hungry_geese.json +0 -0
  56. {kaggle-environments-1.15.3 → kaggle-environments-1.16.1}/kaggle_environments/envs/hungry_geese/hungry_geese.py +0 -0
  57. {kaggle-environments-1.15.3 → kaggle-environments-1.16.1}/kaggle_environments/envs/hungry_geese/test_hungry_geese.py +0 -0
  58. {kaggle-environments-1.15.3 → kaggle-environments-1.16.1}/kaggle_environments/envs/identity/identity.json +0 -0
  59. {kaggle-environments-1.15.3 → kaggle-environments-1.16.1}/kaggle_environments/envs/identity/identity.py +0 -0
  60. {kaggle-environments-1.15.3 → kaggle-environments-1.16.1}/kaggle_environments/envs/kore_fleets/__init__.py +0 -0
  61. {kaggle-environments-1.15.3 → kaggle-environments-1.16.1}/kaggle_environments/envs/kore_fleets/helpers.py +0 -0
  62. {kaggle-environments-1.15.3 → kaggle-environments-1.16.1}/kaggle_environments/envs/kore_fleets/kore_fleets.js +0 -0
  63. {kaggle-environments-1.15.3 → kaggle-environments-1.16.1}/kaggle_environments/envs/kore_fleets/kore_fleets.json +0 -0
  64. {kaggle-environments-1.15.3 → kaggle-environments-1.16.1}/kaggle_environments/envs/kore_fleets/kore_fleets.py +0 -0
  65. {kaggle-environments-1.15.3 → kaggle-environments-1.16.1}/kaggle_environments/envs/kore_fleets/starter_bots/java/main.py +0 -0
  66. {kaggle-environments-1.15.3 → kaggle-environments-1.16.1}/kaggle_environments/envs/kore_fleets/starter_bots/java/test/configuration.json +0 -0
  67. {kaggle-environments-1.15.3 → kaggle-environments-1.16.1}/kaggle_environments/envs/kore_fleets/starter_bots/java/test/fullob.json +0 -0
  68. {kaggle-environments-1.15.3 → kaggle-environments-1.16.1}/kaggle_environments/envs/kore_fleets/starter_bots/java/test/observation.json +0 -0
  69. {kaggle-environments-1.15.3 → kaggle-environments-1.16.1}/kaggle_environments/envs/kore_fleets/starter_bots/python/__init__.py +0 -0
  70. {kaggle-environments-1.15.3 → kaggle-environments-1.16.1}/kaggle_environments/envs/kore_fleets/starter_bots/python/main.py +0 -0
  71. {kaggle-environments-1.15.3 → kaggle-environments-1.16.1}/kaggle_environments/envs/kore_fleets/starter_bots/ts/Bot.ts +0 -0
  72. {kaggle-environments-1.15.3 → kaggle-environments-1.16.1}/kaggle_environments/envs/kore_fleets/starter_bots/ts/DoNothingBot.ts +0 -0
  73. {kaggle-environments-1.15.3 → kaggle-environments-1.16.1}/kaggle_environments/envs/kore_fleets/starter_bots/ts/MinerBot.ts +0 -0
  74. {kaggle-environments-1.15.3 → kaggle-environments-1.16.1}/kaggle_environments/envs/kore_fleets/starter_bots/ts/interpreter.ts +0 -0
  75. {kaggle-environments-1.15.3 → kaggle-environments-1.16.1}/kaggle_environments/envs/kore_fleets/starter_bots/ts/kore/Board.ts +0 -0
  76. {kaggle-environments-1.15.3 → kaggle-environments-1.16.1}/kaggle_environments/envs/kore_fleets/starter_bots/ts/kore/Cell.ts +0 -0
  77. {kaggle-environments-1.15.3 → kaggle-environments-1.16.1}/kaggle_environments/envs/kore_fleets/starter_bots/ts/kore/Configuration.ts +0 -0
  78. {kaggle-environments-1.15.3 → kaggle-environments-1.16.1}/kaggle_environments/envs/kore_fleets/starter_bots/ts/kore/Direction.ts +0 -0
  79. {kaggle-environments-1.15.3 → kaggle-environments-1.16.1}/kaggle_environments/envs/kore_fleets/starter_bots/ts/kore/Fleet.ts +0 -0
  80. {kaggle-environments-1.15.3 → kaggle-environments-1.16.1}/kaggle_environments/envs/kore_fleets/starter_bots/ts/kore/KoreIO.ts +0 -0
  81. {kaggle-environments-1.15.3 → kaggle-environments-1.16.1}/kaggle_environments/envs/kore_fleets/starter_bots/ts/kore/Observation.ts +0 -0
  82. {kaggle-environments-1.15.3 → kaggle-environments-1.16.1}/kaggle_environments/envs/kore_fleets/starter_bots/ts/kore/Pair.ts +0 -0
  83. {kaggle-environments-1.15.3 → kaggle-environments-1.16.1}/kaggle_environments/envs/kore_fleets/starter_bots/ts/kore/Player.ts +0 -0
  84. {kaggle-environments-1.15.3 → kaggle-environments-1.16.1}/kaggle_environments/envs/kore_fleets/starter_bots/ts/kore/Point.ts +0 -0
  85. {kaggle-environments-1.15.3 → kaggle-environments-1.16.1}/kaggle_environments/envs/kore_fleets/starter_bots/ts/kore/Shipyard.ts +0 -0
  86. {kaggle-environments-1.15.3 → kaggle-environments-1.16.1}/kaggle_environments/envs/kore_fleets/starter_bots/ts/kore/ShipyardAction.ts +0 -0
  87. {kaggle-environments-1.15.3 → kaggle-environments-1.16.1}/kaggle_environments/envs/kore_fleets/starter_bots/ts/main.py +0 -0
  88. {kaggle-environments-1.15.3 → kaggle-environments-1.16.1}/kaggle_environments/envs/kore_fleets/starter_bots/ts/miner.py +0 -0
  89. {kaggle-environments-1.15.3 → kaggle-environments-1.16.1}/kaggle_environments/envs/kore_fleets/starter_bots/ts/package.json +0 -0
  90. {kaggle-environments-1.15.3 → kaggle-environments-1.16.1}/kaggle_environments/envs/kore_fleets/starter_bots/ts/test/BoardTest.ts +0 -0
  91. {kaggle-environments-1.15.3 → kaggle-environments-1.16.1}/kaggle_environments/envs/kore_fleets/starter_bots/ts/test/ConfigurationTest.ts +0 -0
  92. {kaggle-environments-1.15.3 → kaggle-environments-1.16.1}/kaggle_environments/envs/kore_fleets/starter_bots/ts/test/ObservationTest.ts +0 -0
  93. {kaggle-environments-1.15.3 → kaggle-environments-1.16.1}/kaggle_environments/envs/kore_fleets/starter_bots/ts/test/PointTest.ts +0 -0
  94. {kaggle-environments-1.15.3 → kaggle-environments-1.16.1}/kaggle_environments/envs/kore_fleets/starter_bots/ts/test/ShipyardTest.ts +0 -0
  95. {kaggle-environments-1.15.3 → kaggle-environments-1.16.1}/kaggle_environments/envs/kore_fleets/starter_bots/ts/test/configuration.json +0 -0
  96. {kaggle-environments-1.15.3 → kaggle-environments-1.16.1}/kaggle_environments/envs/kore_fleets/starter_bots/ts/test/fullob.json +0 -0
  97. {kaggle-environments-1.15.3 → kaggle-environments-1.16.1}/kaggle_environments/envs/kore_fleets/starter_bots/ts/test/observation.json +0 -0
  98. {kaggle-environments-1.15.3 → kaggle-environments-1.16.1}/kaggle_environments/envs/kore_fleets/starter_bots/ts/tsconfig.json +0 -0
  99. {kaggle-environments-1.15.3 → kaggle-environments-1.16.1}/kaggle_environments/envs/kore_fleets/test_kore_fleets.py +0 -0
  100. {kaggle-environments-1.15.3 → kaggle-environments-1.16.1}/kaggle_environments/envs/llm_20_questions/keywords.py +0 -0
  101. {kaggle-environments-1.15.3 → kaggle-environments-1.16.1}/kaggle_environments/envs/llm_20_questions/llm_20_questions.js +0 -0
  102. {kaggle-environments-1.15.3 → kaggle-environments-1.16.1}/kaggle_environments/envs/llm_20_questions/llm_20_questions.json +0 -0
  103. {kaggle-environments-1.15.3 → kaggle-environments-1.16.1}/kaggle_environments/envs/llm_20_questions/llm_20_questions.py +0 -0
  104. {kaggle-environments-1.15.3 → kaggle-environments-1.16.1}/kaggle_environments/envs/llm_20_questions/test_llm_20_questions.py +0 -0
  105. {kaggle-environments-1.15.3 → kaggle-environments-1.16.1}/kaggle_environments/envs/lux_ai_2021/__init__.py +0 -0
  106. {kaggle-environments-1.15.3 → kaggle-environments-1.16.1}/kaggle_environments/envs/lux_ai_2021/agents.py +0 -0
  107. {kaggle-environments-1.15.3 → kaggle-environments-1.16.1}/kaggle_environments/envs/lux_ai_2021/dimensions/754.js +0 -0
  108. {kaggle-environments-1.15.3 → kaggle-environments-1.16.1}/kaggle_environments/envs/lux_ai_2021/dimensions/main.js +0 -0
  109. {kaggle-environments-1.15.3 → kaggle-environments-1.16.1}/kaggle_environments/envs/lux_ai_2021/index.html +0 -0
  110. {kaggle-environments-1.15.3 → kaggle-environments-1.16.1}/kaggle_environments/envs/lux_ai_2021/lux_ai_2021.json +0 -0
  111. {kaggle-environments-1.15.3 → kaggle-environments-1.16.1}/kaggle_environments/envs/lux_ai_2021/lux_ai_2021.py +0 -0
  112. {kaggle-environments-1.15.3 → kaggle-environments-1.16.1}/kaggle_environments/envs/lux_ai_2021/test_agents/__init__.py +0 -0
  113. {kaggle-environments-1.15.3 → kaggle-environments-1.16.1}/kaggle_environments/envs/lux_ai_2021/test_agents/js_simple/lux/game_constants.js +0 -0
  114. {kaggle-environments-1.15.3 → kaggle-environments-1.16.1}/kaggle_environments/envs/lux_ai_2021/test_agents/js_simple/lux/game_constants.json +0 -0
  115. {kaggle-environments-1.15.3 → kaggle-environments-1.16.1}/kaggle_environments/envs/lux_ai_2021/test_agents/js_simple/lux/game_objects.js +0 -0
  116. {kaggle-environments-1.15.3 → kaggle-environments-1.16.1}/kaggle_environments/envs/lux_ai_2021/test_agents/js_simple/lux/io.js +0 -0
  117. {kaggle-environments-1.15.3 → kaggle-environments-1.16.1}/kaggle_environments/envs/lux_ai_2021/test_agents/js_simple/lux/kit.js +0 -0
  118. {kaggle-environments-1.15.3 → kaggle-environments-1.16.1}/kaggle_environments/envs/lux_ai_2021/test_agents/js_simple/lux/map.js +0 -0
  119. {kaggle-environments-1.15.3 → kaggle-environments-1.16.1}/kaggle_environments/envs/lux_ai_2021/test_agents/js_simple/lux/parser.js +0 -0
  120. {kaggle-environments-1.15.3 → kaggle-environments-1.16.1}/kaggle_environments/envs/lux_ai_2021/test_agents/js_simple/main.js +0 -0
  121. {kaggle-environments-1.15.3 → kaggle-environments-1.16.1}/kaggle_environments/envs/lux_ai_2021/test_agents/js_simple/main.py +0 -0
  122. {kaggle-environments-1.15.3 → kaggle-environments-1.16.1}/kaggle_environments/envs/lux_ai_2021/test_agents/python/lux/__init__.py +0 -0
  123. {kaggle-environments-1.15.3 → kaggle-environments-1.16.1}/kaggle_environments/envs/lux_ai_2021/test_agents/python/lux/annotate.py +0 -0
  124. {kaggle-environments-1.15.3 → kaggle-environments-1.16.1}/kaggle_environments/envs/lux_ai_2021/test_agents/python/lux/constants.py +0 -0
  125. {kaggle-environments-1.15.3 → kaggle-environments-1.16.1}/kaggle_environments/envs/lux_ai_2021/test_agents/python/lux/game.py +0 -0
  126. {kaggle-environments-1.15.3 → kaggle-environments-1.16.1}/kaggle_environments/envs/lux_ai_2021/test_agents/python/lux/game_constants.json +0 -0
  127. {kaggle-environments-1.15.3 → kaggle-environments-1.16.1}/kaggle_environments/envs/lux_ai_2021/test_agents/python/lux/game_constants.py +0 -0
  128. {kaggle-environments-1.15.3 → kaggle-environments-1.16.1}/kaggle_environments/envs/lux_ai_2021/test_agents/python/lux/game_map.py +0 -0
  129. {kaggle-environments-1.15.3 → kaggle-environments-1.16.1}/kaggle_environments/envs/lux_ai_2021/test_agents/python/lux/game_objects.py +0 -0
  130. {kaggle-environments-1.15.3 → kaggle-environments-1.16.1}/kaggle_environments/envs/lux_ai_2021/test_agents/python/random_agent.py +0 -0
  131. {kaggle-environments-1.15.3 → kaggle-environments-1.16.1}/kaggle_environments/envs/lux_ai_2021/test_agents/python/simple_agent.py +0 -0
  132. {kaggle-environments-1.15.3 → kaggle-environments-1.16.1}/kaggle_environments/envs/lux_ai_2021/test_lux.py +0 -0
  133. {kaggle-environments-1.15.3 → kaggle-environments-1.16.1}/kaggle_environments/envs/lux_ai_s2/__init__.py +0 -0
  134. {kaggle-environments-1.15.3 → kaggle-environments-1.16.1}/kaggle_environments/envs/lux_ai_s2/agents.py +0 -0
  135. {kaggle-environments-1.15.3 → kaggle-environments-1.16.1}/kaggle_environments/envs/lux_ai_s2/index.html +0 -0
  136. {kaggle-environments-1.15.3 → kaggle-environments-1.16.1}/kaggle_environments/envs/lux_ai_s2/lux_ai_s2.json +0 -0
  137. {kaggle-environments-1.15.3 → kaggle-environments-1.16.1}/kaggle_environments/envs/lux_ai_s2/lux_ai_s2.py +0 -0
  138. {kaggle-environments-1.15.3 → kaggle-environments-1.16.1}/kaggle_environments/envs/lux_ai_s2/luxai_s2/__init__.py +0 -0
  139. {kaggle-environments-1.15.3 → kaggle-environments-1.16.1}/kaggle_environments/envs/lux_ai_s2/luxai_s2/actions.py +0 -0
  140. {kaggle-environments-1.15.3 → kaggle-environments-1.16.1}/kaggle_environments/envs/lux_ai_s2/luxai_s2/config.py +0 -0
  141. {kaggle-environments-1.15.3 → kaggle-environments-1.16.1}/kaggle_environments/envs/lux_ai_s2/luxai_s2/env.py +0 -0
  142. {kaggle-environments-1.15.3 → kaggle-environments-1.16.1}/kaggle_environments/envs/lux_ai_s2/luxai_s2/factory.py +0 -0
  143. {kaggle-environments-1.15.3 → kaggle-environments-1.16.1}/kaggle_environments/envs/lux_ai_s2/luxai_s2/globals.py +0 -0
  144. {kaggle-environments-1.15.3 → kaggle-environments-1.16.1}/kaggle_environments/envs/lux_ai_s2/luxai_s2/map/__init__.py +0 -0
  145. {kaggle-environments-1.15.3 → kaggle-environments-1.16.1}/kaggle_environments/envs/lux_ai_s2/luxai_s2/map/bfs_deltas_gen.py +0 -0
  146. {kaggle-environments-1.15.3 → kaggle-environments-1.16.1}/kaggle_environments/envs/lux_ai_s2/luxai_s2/map/board.py +0 -0
  147. {kaggle-environments-1.15.3 → kaggle-environments-1.16.1}/kaggle_environments/envs/lux_ai_s2/luxai_s2/map/position.py +0 -0
  148. {kaggle-environments-1.15.3 → kaggle-environments-1.16.1}/kaggle_environments/envs/lux_ai_s2/luxai_s2/map_generator/__init__.py +0 -0
  149. {kaggle-environments-1.15.3 → kaggle-environments-1.16.1}/kaggle_environments/envs/lux_ai_s2/luxai_s2/map_generator/generator.py +0 -0
  150. {kaggle-environments-1.15.3 → kaggle-environments-1.16.1}/kaggle_environments/envs/lux_ai_s2/luxai_s2/map_generator/symnoise.py +0 -0
  151. {kaggle-environments-1.15.3 → kaggle-environments-1.16.1}/kaggle_environments/envs/lux_ai_s2/luxai_s2/map_generator/timing.py +0 -0
  152. {kaggle-environments-1.15.3 → kaggle-environments-1.16.1}/kaggle_environments/envs/lux_ai_s2/luxai_s2/map_generator/visualize.py +0 -0
  153. {kaggle-environments-1.15.3 → kaggle-environments-1.16.1}/kaggle_environments/envs/lux_ai_s2/luxai_s2/map_generator/visualize_samples.py +0 -0
  154. {kaggle-environments-1.15.3 → kaggle-environments-1.16.1}/kaggle_environments/envs/lux_ai_s2/luxai_s2/pyvisual/__init__.py +0 -0
  155. {kaggle-environments-1.15.3 → kaggle-environments-1.16.1}/kaggle_environments/envs/lux_ai_s2/luxai_s2/pyvisual/visualizer.py +0 -0
  156. {kaggle-environments-1.15.3 → kaggle-environments-1.16.1}/kaggle_environments/envs/lux_ai_s2/luxai_s2/replay/__init__.py +0 -0
  157. {kaggle-environments-1.15.3 → kaggle-environments-1.16.1}/kaggle_environments/envs/lux_ai_s2/luxai_s2/replay/replay.py +0 -0
  158. {kaggle-environments-1.15.3 → kaggle-environments-1.16.1}/kaggle_environments/envs/lux_ai_s2/luxai_s2/spaces/__init__.py +0 -0
  159. {kaggle-environments-1.15.3 → kaggle-environments-1.16.1}/kaggle_environments/envs/lux_ai_s2/luxai_s2/spaces/act_space.py +0 -0
  160. {kaggle-environments-1.15.3 → kaggle-environments-1.16.1}/kaggle_environments/envs/lux_ai_s2/luxai_s2/spaces/obs_space.py +0 -0
  161. {kaggle-environments-1.15.3 → kaggle-environments-1.16.1}/kaggle_environments/envs/lux_ai_s2/luxai_s2/state/__init__.py +0 -0
  162. {kaggle-environments-1.15.3 → kaggle-environments-1.16.1}/kaggle_environments/envs/lux_ai_s2/luxai_s2/state/state.py +0 -0
  163. {kaggle-environments-1.15.3 → kaggle-environments-1.16.1}/kaggle_environments/envs/lux_ai_s2/luxai_s2/state/stats.py +0 -0
  164. {kaggle-environments-1.15.3 → kaggle-environments-1.16.1}/kaggle_environments/envs/lux_ai_s2/luxai_s2/state/typing.py +0 -0
  165. {kaggle-environments-1.15.3 → kaggle-environments-1.16.1}/kaggle_environments/envs/lux_ai_s2/luxai_s2/team.py +0 -0
  166. {kaggle-environments-1.15.3 → kaggle-environments-1.16.1}/kaggle_environments/envs/lux_ai_s2/luxai_s2/tools/__init__.py +0 -0
  167. {kaggle-environments-1.15.3 → kaggle-environments-1.16.1}/kaggle_environments/envs/lux_ai_s2/luxai_s2/tools/replay.py +0 -0
  168. {kaggle-environments-1.15.3 → kaggle-environments-1.16.1}/kaggle_environments/envs/lux_ai_s2/luxai_s2/unit.py +0 -0
  169. {kaggle-environments-1.15.3 → kaggle-environments-1.16.1}/kaggle_environments/envs/lux_ai_s2/luxai_s2/utils/__init__.py +0 -0
  170. {kaggle-environments-1.15.3 → kaggle-environments-1.16.1}/kaggle_environments/envs/lux_ai_s2/luxai_s2/utils/animate.py +0 -0
  171. {kaggle-environments-1.15.3 → kaggle-environments-1.16.1}/kaggle_environments/envs/lux_ai_s2/luxai_s2/utils/heuristics/__init__.py +0 -0
  172. {kaggle-environments-1.15.3 → kaggle-environments-1.16.1}/kaggle_environments/envs/lux_ai_s2/luxai_s2/utils/heuristics/bidding.py +0 -0
  173. {kaggle-environments-1.15.3 → kaggle-environments-1.16.1}/kaggle_environments/envs/lux_ai_s2/luxai_s2/utils/heuristics/factory.py +0 -0
  174. {kaggle-environments-1.15.3 → kaggle-environments-1.16.1}/kaggle_environments/envs/lux_ai_s2/luxai_s2/utils/heuristics/factory_placement.py +0 -0
  175. {kaggle-environments-1.15.3 → kaggle-environments-1.16.1}/kaggle_environments/envs/lux_ai_s2/luxai_s2/utils/utils.py +0 -0
  176. {kaggle-environments-1.15.3 → kaggle-environments-1.16.1}/kaggle_environments/envs/lux_ai_s2/luxai_s2/version.py +0 -0
  177. {kaggle-environments-1.15.3 → kaggle-environments-1.16.1}/kaggle_environments/envs/lux_ai_s2/luxai_s2/wrappers/__init__.py +0 -0
  178. {kaggle-environments-1.15.3 → kaggle-environments-1.16.1}/kaggle_environments/envs/lux_ai_s2/luxai_s2/wrappers/controllers.py +0 -0
  179. {kaggle-environments-1.15.3 → kaggle-environments-1.16.1}/kaggle_environments/envs/lux_ai_s2/luxai_s2/wrappers/sb3.py +0 -0
  180. {kaggle-environments-1.15.3 → kaggle-environments-1.16.1}/kaggle_environments/envs/lux_ai_s2/test_agents/python/agent.py +0 -0
  181. {kaggle-environments-1.15.3 → kaggle-environments-1.16.1}/kaggle_environments/envs/lux_ai_s2/test_agents/python/lux/cargo.py +0 -0
  182. {kaggle-environments-1.15.3 → kaggle-environments-1.16.1}/kaggle_environments/envs/lux_ai_s2/test_agents/python/lux/config.py +0 -0
  183. {kaggle-environments-1.15.3 → kaggle-environments-1.16.1}/kaggle_environments/envs/lux_ai_s2/test_agents/python/lux/factory.py +0 -0
  184. {kaggle-environments-1.15.3 → kaggle-environments-1.16.1}/kaggle_environments/envs/lux_ai_s2/test_agents/python/lux/kit.py +0 -0
  185. {kaggle-environments-1.15.3 → kaggle-environments-1.16.1}/kaggle_environments/envs/lux_ai_s2/test_agents/python/lux/team.py +0 -0
  186. {kaggle-environments-1.15.3 → kaggle-environments-1.16.1}/kaggle_environments/envs/lux_ai_s2/test_agents/python/lux/unit.py +0 -0
  187. {kaggle-environments-1.15.3 → kaggle-environments-1.16.1}/kaggle_environments/envs/lux_ai_s2/test_agents/python/lux/utils.py +0 -0
  188. {kaggle-environments-1.15.3 → kaggle-environments-1.16.1}/kaggle_environments/envs/lux_ai_s2/test_agents/python/main.py +0 -0
  189. {kaggle-environments-1.15.3 → kaggle-environments-1.16.1}/kaggle_environments/envs/lux_ai_s2/test_lux.py +0 -0
  190. {kaggle-environments-1.15.3/kaggle_environments/envs/mab → kaggle-environments-1.16.1/kaggle_environments/envs/lux_ai_s3/test_agents/python/lux}/__init__.py +0 -0
  191. {kaggle-environments-1.15.3/kaggle_environments/envs/rps → kaggle-environments-1.16.1/kaggle_environments/envs/mab}/__init__.py +0 -0
  192. {kaggle-environments-1.15.3 → kaggle-environments-1.16.1}/kaggle_environments/envs/mab/agents.py +0 -0
  193. {kaggle-environments-1.15.3 → kaggle-environments-1.16.1}/kaggle_environments/envs/mab/mab.js +0 -0
  194. {kaggle-environments-1.15.3 → kaggle-environments-1.16.1}/kaggle_environments/envs/mab/mab.json +0 -0
  195. {kaggle-environments-1.15.3 → kaggle-environments-1.16.1}/kaggle_environments/envs/mab/mab.py +0 -0
  196. {kaggle-environments-1.15.3 → kaggle-environments-1.16.1}/kaggle_environments/envs/rps/agents.py +0 -0
  197. {kaggle-environments-1.15.3 → kaggle-environments-1.16.1}/kaggle_environments/envs/rps/helpers.py +0 -0
  198. {kaggle-environments-1.15.3 → kaggle-environments-1.16.1}/kaggle_environments/envs/rps/rps.js +0 -0
  199. {kaggle-environments-1.15.3 → kaggle-environments-1.16.1}/kaggle_environments/envs/rps/rps.json +0 -0
  200. {kaggle-environments-1.15.3 → kaggle-environments-1.16.1}/kaggle_environments/envs/rps/rps.py +0 -0
  201. {kaggle-environments-1.15.3 → kaggle-environments-1.16.1}/kaggle_environments/envs/rps/test_rps.py +0 -0
  202. {kaggle-environments-1.15.3 → kaggle-environments-1.16.1}/kaggle_environments/envs/rps/utils.py +0 -0
  203. {kaggle-environments-1.15.3 → kaggle-environments-1.16.1}/kaggle_environments/envs/tictactoe/test_tictactoe.py +0 -0
  204. {kaggle-environments-1.15.3 → kaggle-environments-1.16.1}/kaggle_environments/envs/tictactoe/tictactoe.js +0 -0
  205. {kaggle-environments-1.15.3 → kaggle-environments-1.16.1}/kaggle_environments/envs/tictactoe/tictactoe.json +0 -0
  206. {kaggle-environments-1.15.3 → kaggle-environments-1.16.1}/kaggle_environments/envs/tictactoe/tictactoe.py +0 -0
  207. {kaggle-environments-1.15.3 → kaggle-environments-1.16.1}/kaggle_environments/errors.py +0 -0
  208. {kaggle-environments-1.15.3 → kaggle-environments-1.16.1}/kaggle_environments/helpers.py +0 -0
  209. {kaggle-environments-1.15.3 → kaggle-environments-1.16.1}/kaggle_environments/main.py +0 -0
  210. {kaggle-environments-1.15.3 → kaggle-environments-1.16.1}/kaggle_environments/schemas.json +0 -0
  211. {kaggle-environments-1.15.3 → kaggle-environments-1.16.1}/kaggle_environments/static/player.html +0 -0
  212. {kaggle-environments-1.15.3 → kaggle-environments-1.16.1}/kaggle_environments/status_codes.json +0 -0
  213. {kaggle-environments-1.15.3 → kaggle-environments-1.16.1}/kaggle_environments/utils.py +0 -0
  214. {kaggle-environments-1.15.3 → kaggle-environments-1.16.1}/kaggle_environments.egg-info/dependency_links.txt +0 -0
  215. {kaggle-environments-1.15.3 → kaggle-environments-1.16.1}/kaggle_environments.egg-info/entry_points.txt +0 -0
  216. {kaggle-environments-1.15.3 → kaggle-environments-1.16.1}/kaggle_environments.egg-info/top_level.txt +0 -0
  217. {kaggle-environments-1.15.3 → kaggle-environments-1.16.1}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: kaggle-environments
3
- Version: 1.15.3
3
+ Version: 1.16.1
4
4
  Summary: Kaggle Environments
5
5
  Home-page: https://github.com/Kaggle/kaggle-environments
6
6
  Author: Kaggle
@@ -20,7 +20,7 @@ from .core import *
20
20
  from .main import http_request
21
21
  from . import errors
22
22
 
23
- __version__ = "1.15.3"
23
+ __version__ = "1.16.1"
24
24
 
25
25
  __all__ = ["Agent", "environments", "errors", "evaluate", "http_request",
26
26
  "make", "register", "utils", "__version__",
@@ -37,6 +37,21 @@ async function renderer(context) {
37
37
  c.fillRect(x, y, squareSize, squareSize);
38
38
  }
39
39
  }
40
+ // Draw the team names and game status
41
+ const info = environment.info;
42
+ const agent1 = info?.TeamNames?.[0] || "Agent 1";
43
+ const agent2 = info?.TeamNames?.[1] || "Agent 2";
44
+ const firstGame = environment.steps[step][0].observation.mark == "white"
45
+ const white = firstGame ? agent1 : agent2
46
+ const black = firstGame ? agent2 : agent1
47
+ const fontSize = Math.round(.33 * offset)
48
+ c.font = `${fontSize}px sans-serif`;
49
+ c.fillStyle = "#FFFFFF";
50
+ const agent1Reward = environment.steps[step][0].reward;
51
+ const agent2Reward = environment.steps[step][1].reward;
52
+ const charCount = agent1.length + agent2.length + 12;
53
+ const title = `${firstGame ? "\u25A0" : "\u25A1"}${agent1} (${agent1Reward}) vs ${firstGame ? "\u25A1" : "\u25A0"}${agent2} (${agent2Reward})`
54
+ c.fillText(title, offset + 4 * squareSize - Math.floor(charCount * fontSize / 4), 40)
40
55
 
41
56
  // Draw the Pieces
42
57
  const board = environment.steps[step][0].observation.board;
@@ -6,12 +6,13 @@
6
6
  "agents": [2],
7
7
  "configuration": {
8
8
  "episodeSteps": 1000,
9
- "actTimeout": 1,
9
+ "actTimeout": 0.1,
10
+ "runTimeout": 300,
10
11
  "agentTimeout": {
11
12
  "description": "Obsolete field kept for backwards compatibility, please use observation.remainingOverageTime.",
12
13
  "type": "number",
13
14
  "minimum": 0,
14
- "default": 60
15
+ "default": 20
15
16
  }
16
17
  },
17
18
  "reward": {
@@ -31,7 +32,7 @@
31
32
  "defaults": ["white", "black"],
32
33
  "enum": ["white", "black"]
33
34
  },
34
- "remainingOverageTime": 60
35
+ "remainingOverageTime": 20
35
36
  },
36
37
  "action": {
37
38
  "description": "Move in UCI notation (e.g., e2e4)",
@@ -41,4 +42,4 @@
41
42
  "status": {
42
43
  "defaults": ["ACTIVE", "INACTIVE"]
43
44
  }
44
- }
45
+ }
@@ -0,0 +1,264 @@
1
+ import math
2
+ import random
3
+ import json
4
+ from os import path
5
+ from collections import defaultdict
6
+
7
+ from Chessnut import Game
8
+
9
+ ERROR = "ERROR"
10
+ DONE = "DONE"
11
+ INACTIVE = "INACTIVE"
12
+ ACTIVE = "ACTIVE"
13
+ WHITE = "white"
14
+
15
+ OPENINGS = [
16
+ "rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - 0 1",
17
+ "rnbqkbnr/1p2pp1p/p2p2p1/8/2PNP3/8/PP3PPP/RNBQKB1R w KQkq - 0 6",
18
+ "r1b1kb1r/ppppq1pp/2n2n2/1B2p3/4N3/5N2/PPPPQPPP/R1B1K2R w KQkq - 3 7",
19
+ "rnbqkb1r/p2ppppp/5n2/2pP4/2p5/2N5/PP2PPPP/R1BQKBNR w KQkq - 0 5",
20
+ "rnbqk1nr/p1p1bppp/1p2p3/3pP3/3P4/2N5/PPP2PPP/R1BQKBNR w KQkq - 0 5",
21
+ "r2qk1nr/ppp2pp1/2np3p/2b1p3/2B1P1b1/2PP1N2/PP3PPP/RNBQ1RK1 w kq - 0 7",
22
+ "rn1qk1nr/pp2ppbp/3p2p1/2p5/2PP2b1/2N1PN2/PP3PPP/R1BQKB1R w KQkq c6 0 6",
23
+ "rnbqkbnr/1p2pp1p/p2p2p1/8/2PNP3/8/PP3PPP/RNBQKB1R w KQkq - 0 6",
24
+ ]
25
+
26
+
27
+ MOVES = [
28
+ "",
29
+ "e2e4 c7c5 g1f3 d7d6 d2d4 c5d4 f3d4 a7a6 c2c4 g7g6",
30
+ "e2e4 e7e5 g1f3 b8c6 f1b5 f7f5 b1c3 f5e4 c3e4 g8f6 d1e2 d8e7",
31
+ "d2d4 g8f6 c2c4 c7c5 d4d5 b7b5 b1c3 b5c4",
32
+ "e2e4 e7e6 d2d4 d7d5 b1c3 f8e7 e4e5 b7b6",
33
+ "e2e4 e7e5 g1f3 b8c6 f1c4 f8c5 e1g1 d7d6 c2c3 c8g4 d2d3 h7h6",
34
+ "d2d4 g7g6 c2c4 f8g7 b1c3 d7d6 g1f3 c8g4 e2e3 c7c5",
35
+ "e2e4 c7c5 g1f3 d7d6 d2d4 c5d4 f3d4 a7a6 c2c4 g7g6"
36
+ ]
37
+
38
+
39
+ def random_agent(obs):
40
+ """
41
+ Selects a random legal move from the board.
42
+ Returns:
43
+ A string representing the chosen move in UCI notation (e.g., "e2e4").
44
+ """
45
+ game = Game(obs.board)
46
+ moves = list(game.get_moves())
47
+ return random.choice(moves) if moves else None
48
+
49
+
50
+ def king_shuffle_agent(obs):
51
+ """Moves the king pawn and then shuffles the king."""
52
+ game = Game(obs.board)
53
+ moves = list(game.get_moves())
54
+
55
+ to_move = ["e7e5", "e2e4", "e8e7", "e7e8", "e1e2", "e2e1"]
56
+ for move in to_move:
57
+ if move in moves:
58
+ return move
59
+
60
+ # If no other moves are possible, pick a random legal move (or return None)
61
+ return random.choice(moves) if moves else None
62
+
63
+
64
+ def board_shuffle_agent(obs):
65
+ """Moves the king panw and then shuffles pieces."""
66
+ game = Game(obs.board)
67
+ moves = list(game.get_moves())
68
+
69
+ to_move = ["e7e5", "e2e4", "e8e7", "e7e6", "e1e2", "e2e3"]
70
+ for move in to_move:
71
+ if move in moves:
72
+ return move
73
+
74
+ # add shuffle moves for knights and bishop
75
+ to_shuffle = [
76
+ "b1c3",
77
+ "c3b1",
78
+ "g1f3",
79
+ "f3g1",
80
+ "b8c6",
81
+ "c6b8",
82
+ "g8f6",
83
+ "f6g8",
84
+ "f1e2",
85
+ "e2f1",
86
+ "f8e7",
87
+ "e7f8",
88
+ ]
89
+ # filter to only shuffle king moves
90
+ for move in moves:
91
+ f1 = move[0]
92
+ f2 = move[2]
93
+ r1 = int(move[1])
94
+ r2 = int(move[3])
95
+ df = abs(ord(f1) - ord(f2))
96
+ dr = abs(r2 - r1)
97
+ if r1 < 3 or r1 > 6:
98
+ continue
99
+ if r2 < 3 or r2 > 6:
100
+ continue
101
+ if dr > 1 or df > 1:
102
+ continue
103
+ if move[2:4] == "e5":
104
+ continue
105
+ if move[2:4] == "e4":
106
+ continue
107
+ to_shuffle.append(move)
108
+ random.shuffle(to_shuffle)
109
+ for move in to_shuffle:
110
+ if move in moves:
111
+ return move
112
+
113
+ # If no other moves are possible, pick a random legal move (or return None)
114
+ return random.choice(moves) if moves else None
115
+
116
+
117
+ agents = {
118
+ "random": random_agent,
119
+ "king_shuffle": king_shuffle_agent,
120
+ "board_shuffle": board_shuffle_agent}
121
+
122
+
123
+ def sufficient_material(pieces):
124
+ """Checks if the given pieces are sufficient for checkmate."""
125
+ if pieces['q'] > 0 or pieces['r'] > 0 or pieces['p'] > 0:
126
+ return True
127
+ # we only have knights and bishops left on this team
128
+ knight_bishop_count = pieces['n'] + pieces['b']
129
+ if knight_bishop_count >= 3:
130
+ return True
131
+ if knight_bishop_count == 2 and pieces['b'] >= 1:
132
+ return True
133
+
134
+ return False
135
+
136
+
137
+ def is_insufficient_material(board):
138
+ white_pieces = defaultdict(int)
139
+ black_pieces = defaultdict(int)
140
+
141
+ for square in range(64):
142
+ piece = board.get_piece(square)
143
+ if piece and piece != " ":
144
+ if piece.isupper():
145
+ white_pieces[piece.lower()] += 1
146
+ else:
147
+ black_pieces[piece.lower()] += 1
148
+
149
+ if not sufficient_material(
150
+ white_pieces) and not sufficient_material(black_pieces):
151
+ return True
152
+
153
+ return False
154
+
155
+
156
+ def square_str_to_int(square_str):
157
+ """Converts a square string (e.g., "a2") to an integer index (0-63)."""
158
+ if len(square_str) != 2 or not (
159
+ 'a' <= square_str[0] <= 'h' and '1' <= square_str[1] <= '8'):
160
+ raise ValueError("Invalid square string")
161
+
162
+ col = ord(square_str[0]) - ord('a') # Get column index (0-7)
163
+ row = int(square_str[1]) - 1 # Get row index (0-7)
164
+ return row * 8 + col
165
+
166
+
167
+ seen_positions = defaultdict(int)
168
+ game_one_complete = False
169
+ game_start_position = math.floor(random.random() * len(OPENINGS))
170
+
171
+
172
+ def interpreter(state, env):
173
+ global seen_positions
174
+ global game_one_complete
175
+ global game_start_position
176
+ if env.done:
177
+ game_one_complete = False
178
+ seen_positions = defaultdict(int)
179
+ game_start_position = math.floor(random.random() * len(OPENINGS))
180
+ state[0].observation.board = OPENINGS[game_start_position]
181
+ state[1].observation.board = OPENINGS[game_start_position]
182
+ return state
183
+
184
+ if state[0].status == ACTIVE and state[1].status == ACTIVE:
185
+ # set up new game
186
+ state[0].observation.mark, state[1].observation.mark = state[1].observation.mark, state[0].observation.mark
187
+ state[0].observation.board = OPENINGS[game_start_position]
188
+ state[1].observation.board = OPENINGS[game_start_position]
189
+ state[0].status = ACTIVE if state[0].observation.mark == WHITE else INACTIVE
190
+ state[0].status = ACTIVE if state[0].observation.mark == WHITE else INACTIVE
191
+ return state
192
+
193
+ # Isolate the active and inactive agents.
194
+ active = state[0] if state[0].status == ACTIVE else state[1]
195
+ inactive = state[0] if state[0].status == INACTIVE else state[1]
196
+ if active.status != ACTIVE or inactive.status != INACTIVE:
197
+ active.status = DONE if active.status == ACTIVE else active.status
198
+ inactive.status = DONE if inactive.status == INACTIVE else inactive.status
199
+ return state
200
+
201
+ # The board is shared, only update the first state.
202
+ board = state[0].observation.board
203
+
204
+ # Create a chessnut game object from the FEN string
205
+ game = Game(board)
206
+
207
+ # Get the action (move) from the agent
208
+ action = active.action
209
+
210
+ # Check if the move is legal
211
+ try:
212
+ game.apply_move(action)
213
+ except BaseException:
214
+ active.status = ERROR
215
+ active.reward = -1
216
+ inactive.status = DONE
217
+ return state
218
+ fen = game.get_fen()
219
+ board_str = fen.split(" ", maxsplit=1)[0]
220
+ seen_positions[board_str] += 1
221
+
222
+ # Update the board in the observation
223
+ state[0].observation.board = fen
224
+ state[1].observation.board = fen
225
+
226
+ terminal_state = DONE if game_one_complete else ACTIVE
227
+ pawn_or_capture_move_count = int(
228
+ fen.split(" ")[4]) # fen keeps track of this
229
+ # Check for game end conditions
230
+ if pawn_or_capture_move_count == 100 or is_insufficient_material(
231
+ game.board) or seen_positions[board_str] >= 3 or game.status == Game.STALEMATE:
232
+ active.reward += .5
233
+ inactive.reward += .5
234
+ active.status = terminal_state
235
+ inactive.status = terminal_state
236
+ game_one_complete = True
237
+ elif game.status == Game.CHECKMATE:
238
+ active.reward += 1
239
+ active.status = terminal_state
240
+ inactive.status = terminal_state
241
+ game_one_complete = True
242
+ else:
243
+ # Switch turns
244
+ active.status = INACTIVE
245
+ inactive.status = ACTIVE
246
+
247
+ return state
248
+
249
+
250
+ def renderer(state, env):
251
+ board_fen = state[0].observation.board
252
+ game = Game(board_fen)
253
+ return game.board
254
+
255
+
256
+ jsonpath = path.abspath(path.join(path.dirname(__file__), "chess.json"))
257
+ with open(jsonpath) as f:
258
+ specification = json.load(f)
259
+
260
+
261
+ def html_renderer():
262
+ jspath = path.abspath(path.join(path.dirname(__file__), "chess.js"))
263
+ with open(jspath) as g:
264
+ return g.read()
@@ -0,0 +1,50 @@
1
+ from kaggle_environments import make
2
+ from Chessnut import Game
3
+ from chess import is_insufficient_material
4
+
5
+ def test_chess_inits():
6
+ env = make("chess", debug=True)
7
+ env.run(["random", "random"])
8
+ json = env.toJSON()
9
+ assert json["name"] == "chess"
10
+ assert json["statuses"] == ["DONE", "DONE"]
11
+
12
+ def test_chess_three_fold():
13
+ env = make("chess", debug=True)
14
+ env.run(["king_shuffle", "king_shuffle"])
15
+ json = env.toJSON()
16
+ assert json["name"] == "chess"
17
+ assert json["statuses"] == ["DONE", "DONE"]
18
+ assert json["rewards"] == [0, 0]
19
+
20
+ def test_chess_100_move_rule():
21
+ env = make("chess", debug=True)
22
+ env.run(["board_shuffle", "board_shuffle"])
23
+ json = env.toJSON()
24
+ assert json["name"] == "chess"
25
+ assert json["statuses"] == ["DONE", "DONE"]
26
+ assert json["rewards"] == [0, 0]
27
+
28
+ def test_sufficient_material():
29
+ game = Game()
30
+ assert not is_insufficient_material(game.board)
31
+
32
+ def test_insufficient_material_with_two_kings():
33
+ game = Game('8/8/K7/8/8/3k4/8/8 w - - 58 282')
34
+ assert is_insufficient_material(game.board)
35
+
36
+ def test_insufficient_material_with_two_kings_and_bishop():
37
+ game = Game('6k1/8/7B/8/8/8/8/2K5 b - - 90 250')
38
+ assert is_insufficient_material(game.board)
39
+
40
+ def test_insufficient_material_with_two_kings_and_two_knights():
41
+ game = Game('6k1/8/6NN/8/8/8/8/2K5 b - - 90 250')
42
+ assert is_insufficient_material(game.board)
43
+
44
+ def test_sufficient_material_with_king_knight_and_bishop():
45
+ game = Game('6k1/8/6NB/8/8/8/8/2K5 b - - 90 250')
46
+ assert not is_insufficient_material(game.board)
47
+
48
+ def test_sufficient_material_with_king_bishop_and_bishop():
49
+ game = Game('6k1/8/6BB/8/8/8/8/2K5 b - - 90 250')
50
+ assert not is_insufficient_material(game.board)
@@ -0,0 +1,4 @@
1
+ from .test_agents.python.main import agent_fn as random_agent
2
+ all_agents = {
3
+ "random_agent": random_agent,
4
+ }
@@ -0,0 +1,42 @@
1
+ <!DOCTYPE html>
2
+ <html lang="en">
3
+ <head>
4
+ <meta charset="UTF-8" />
5
+ <link rel="icon" type="image/svg+xml" href="https://s3vis.lux-ai.org/eye.svg" />
6
+ <meta name="viewport" content="width=device-width, initial-scale=1.0" />
7
+
8
+ <title>Lux Eye S3</title>
9
+
10
+ <!-- Start Single Page Apps for GitHub Pages -->
11
+ <script type="text/javascript">
12
+ // Single Page Apps for GitHub Pages
13
+ // MIT License
14
+ // https://github.com/rafgraph/spa-github-pages
15
+ // This script checks to see if a redirect is present in the query string,
16
+ // converts it back into the correct url and adds it to the
17
+ // browser's history using window.history.replaceState(...),
18
+ // which won't cause the browser to attempt to load the new url.
19
+ // When the single page app is loaded further down in this file,
20
+ // the correct url will be waiting in the browser's history for
21
+ // the single page app to route accordingly.
22
+ (function (l) {
23
+ if (l.search[1] === '/') {
24
+ const decoded = l.search
25
+ .slice(1)
26
+ .split('&')
27
+ .map(function (s) {
28
+ return s.replace(/~and~/g, '&');
29
+ })
30
+ .join('?');
31
+ window.history.replaceState(null, null, l.pathname.slice(0, -1) + decoded + l.hash);
32
+ }
33
+ })(window.location);
34
+ </script>
35
+ <!-- End Single Page Apps for GitHub Pages -->
36
+ <script type="module" crossorigin src="https://s3vis.lux-ai.org/index.js"></script>
37
+ </head>
38
+ <body>
39
+ <div id="root"></div>
40
+
41
+ </body>
42
+ </html>
@@ -0,0 +1,47 @@
1
+ {
2
+ "name": "lux_ai_s3",
3
+ "title": "Lux AI Challenge Season 3",
4
+ "description": "A Novel AI Programming Challenge about Lux",
5
+ "version": "0.0.1",
6
+ "agents": [2],
7
+ "configuration": {
8
+ "episodeSteps": 506,
9
+ "seed": {
10
+ "description": "Seed to use for episodes",
11
+ "type": "integer"
12
+ },
13
+ "actTimeout": 3,
14
+ "runTimeout": 60,
15
+ "env_cfg": {
16
+ "description": "Environment configuration. Not to be filled out by user as it is randomly generated.",
17
+ "type": "object"
18
+ }
19
+ },
20
+ "reward": {
21
+ "description": "Reward of the agent. Equal to number of games won.",
22
+ "type": "integer",
23
+ "default": 0
24
+ },
25
+ "observation": {
26
+ "remainingOverageTime": 60,
27
+ "reward": {
28
+ "description": "Current reward of the agent. Equal to amount of lichen grown.",
29
+ "type": "integer",
30
+ "default": 0
31
+ },
32
+ "obs": {
33
+ "description": "String containing the observations",
34
+ "type": "string",
35
+ "shared": false
36
+ },
37
+ "player": {
38
+ "description": "Current player's index / team id",
39
+ "type": "string",
40
+ "defaults": "player_0"
41
+ }
42
+ },
43
+ "action": {
44
+ "description": "Actions",
45
+ "type": "object"
46
+ }
47
+ }
@@ -0,0 +1,138 @@
1
+ import dataclasses
2
+ import json
3
+ import math
4
+ import os
5
+ import random
6
+ import sys
7
+ from os import path
8
+ from .agents import all_agents
9
+ from sys import path as syspath
10
+ from os import path as osp
11
+
12
+ # next two lines enables importing local packages e.g. luxai_s3
13
+ __dir__ = osp.dirname(__file__)
14
+ syspath.append(__dir__)
15
+
16
+ from luxai_s3.wrappers import LuxAIS3GymEnv, RecordEpisode
17
+ import numpy as np
18
+
19
+ import copy
20
+ import json
21
+ def to_json(state):
22
+ if isinstance(state, np.ndarray):
23
+ return state.tolist()
24
+ elif isinstance(state, np.int64):
25
+ return state.tolist()
26
+ elif isinstance(state, list):
27
+ return [to_json(s) for s in state]
28
+ elif isinstance(state, dict):
29
+ out = {}
30
+ for k in state:
31
+ out[k] = to_json(state[k])
32
+ return out
33
+ else:
34
+ return state
35
+ prev_step = 0
36
+ luxenv: RecordEpisode = None
37
+ prev_obs = None
38
+ state_obs = None
39
+ default_env_cfg = None
40
+ def enqueue_output(out, queue):
41
+ for line in iter(out.readline, b''):
42
+ queue.put(line)
43
+ out.close()
44
+
45
+ def interpreter(state, env):
46
+ global luxenv, prev_obs, state_obs, default_env_cfg
47
+ player_0 = state[0]
48
+ player_1 = state[1]
49
+ # filter out actions such as debug annotations so they aren't saved
50
+ # filter_actions(state, env)
51
+
52
+ if env.done:
53
+ if "seed" in env.configuration:
54
+ seed = int(env.configuration["seed"])
55
+ else:
56
+ seed = math.floor(random.random() * 1e9);
57
+ env.configuration["seed"] = seed
58
+
59
+ luxenv = LuxAIS3GymEnv(numpy_output=True)
60
+ luxenv = RecordEpisode(luxenv, save_on_close=False, save_on_reset=False)
61
+ obs, info = luxenv.reset(seed=seed)
62
+
63
+ env_cfg_json = info["params"]
64
+
65
+ env.configuration.env_cfg = env_cfg_json
66
+
67
+ player_0.observation.player = "player_0"
68
+ player_1.observation.player = "player_1"
69
+ player_0.observation.obs = json.dumps(to_json(obs["player_0"]))
70
+ player_1.observation.obs = json.dumps(to_json(obs["player_1"]))
71
+
72
+ replay_frame = luxenv.serialize_episode_data(dict(
73
+ states=[luxenv.episode["states"][-1]],
74
+ metadata=luxenv.episode["metadata"],
75
+ params=luxenv.episode["params"]
76
+ ))
77
+ # don't need to keep metadata/params beyond first step
78
+ player_0.info = dict(replay=replay_frame)
79
+ return state
80
+
81
+ new_state_obs, rewards, terminations, truncations, infos = luxenv.step({
82
+ "player_0": np.array(player_0.action["action"]),
83
+ "player_1": np.array(player_1.action["action"])
84
+ })
85
+
86
+ # cannot store np arrays in replay jsons so must convert to list
87
+ player_0.action = player_0.action["action"]
88
+ player_1.action = player_1.action["action"]
89
+
90
+ dones = dict()
91
+ for k in terminations:
92
+ dones[k] = terminations[k] | truncations[k]
93
+
94
+ player_0.observation.player = "player_0"
95
+ player_1.observation.player = "player_1"
96
+
97
+ player_0.observation.obs = json.dumps(to_json(new_state_obs["player_0"]))
98
+ player_1.observation.obs = json.dumps(to_json(new_state_obs["player_1"]))
99
+
100
+
101
+ player_0.reward = int(rewards["player_0"])
102
+ player_1.reward = int(rewards["player_1"])
103
+
104
+ player_0.observation.reward = int(player_0.reward)
105
+ player_1.observation.reward = int(player_1.reward)
106
+ replay_frame = luxenv.serialize_episode_data(dict(
107
+ states=[luxenv.episode["states"][-1]],
108
+ actions=[luxenv.episode["actions"][-1]],
109
+ metadata=luxenv.episode["metadata"],
110
+ params=luxenv.episode["params"]
111
+ ))
112
+ # don't need to keep metadata/params beyond first step
113
+ del replay_frame["metadata"]
114
+ del replay_frame["params"]
115
+ player_0.info = dict(replay=replay_frame)
116
+
117
+ if np.all([dones[k] for k in dones]):
118
+ if player_0.status == "ACTIVE":
119
+ player_0.status = "DONE"
120
+ if player_1.status == "ACTIVE":
121
+ player_1.status = "DONE"
122
+ return state
123
+
124
+ def renderer(state, env):
125
+ raise NotImplementedError("To render the replay, please set the render mode to json or html")
126
+
127
+
128
+ dir_path = path.dirname(__file__)
129
+ json_path = path.abspath(path.join(dir_path, "lux_ai_s3.json"))
130
+ with open(json_path) as json_file:
131
+ specification = json.load(json_file)
132
+
133
+
134
+ def html_renderer():
135
+ html_path = path.abspath(path.join(dir_path, "index.html"))
136
+ return ("html_path", html_path)
137
+
138
+ agents = all_agents
@@ -0,0 +1 @@
1
+ from .env import LuxAIS3Env