kaggle-environments 1.15.2__tar.gz → 1.15.3__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 (196) hide show
  1. {kaggle-environments-1.15.2/kaggle_environments.egg-info → kaggle-environments-1.15.3}/PKG-INFO +1 -1
  2. {kaggle-environments-1.15.2 → kaggle-environments-1.15.3}/kaggle_environments/__init__.py +1 -1
  3. kaggle-environments-1.15.3/kaggle_environments/envs/chess/chess.js +123 -0
  4. {kaggle-environments-1.15.2 → kaggle-environments-1.15.3/kaggle_environments.egg-info}/PKG-INFO +1 -1
  5. kaggle-environments-1.15.2/kaggle_environments/envs/chess/chess.js +0 -82
  6. {kaggle-environments-1.15.2 → kaggle-environments-1.15.3}/LICENSE +0 -0
  7. {kaggle-environments-1.15.2 → kaggle-environments-1.15.3}/MANIFEST.in +0 -0
  8. {kaggle-environments-1.15.2 → kaggle-environments-1.15.3}/README.md +0 -0
  9. {kaggle-environments-1.15.2 → kaggle-environments-1.15.3}/kaggle_environments/agent.py +0 -0
  10. {kaggle-environments-1.15.2 → kaggle-environments-1.15.3}/kaggle_environments/api.py +0 -0
  11. {kaggle-environments-1.15.2 → kaggle-environments-1.15.3}/kaggle_environments/core.py +0 -0
  12. {kaggle-environments-1.15.2 → kaggle-environments-1.15.3}/kaggle_environments/envs/chess/chess.json +0 -0
  13. {kaggle-environments-1.15.2 → kaggle-environments-1.15.3}/kaggle_environments/envs/chess/chess.py +0 -0
  14. {kaggle-environments-1.15.2 → kaggle-environments-1.15.3}/kaggle_environments/envs/chess/test_chess.py +0 -0
  15. {kaggle-environments-1.15.2 → kaggle-environments-1.15.3}/kaggle_environments/envs/connectx/connectx.js +0 -0
  16. {kaggle-environments-1.15.2 → kaggle-environments-1.15.3}/kaggle_environments/envs/connectx/connectx.json +0 -0
  17. {kaggle-environments-1.15.2 → kaggle-environments-1.15.3}/kaggle_environments/envs/connectx/connectx.py +0 -0
  18. {kaggle-environments-1.15.2 → kaggle-environments-1.15.3}/kaggle_environments/envs/connectx/test_connectx.py +0 -0
  19. {kaggle-environments-1.15.2 → kaggle-environments-1.15.3}/kaggle_environments/envs/football/football.json +0 -0
  20. {kaggle-environments-1.15.2 → kaggle-environments-1.15.3}/kaggle_environments/envs/football/football.py +0 -0
  21. {kaggle-environments-1.15.2 → kaggle-environments-1.15.3}/kaggle_environments/envs/football/helpers.py +0 -0
  22. {kaggle-environments-1.15.2 → kaggle-environments-1.15.3}/kaggle_environments/envs/football/test_football.py +0 -0
  23. {kaggle-environments-1.15.2 → kaggle-environments-1.15.3}/kaggle_environments/envs/halite/__init__.py +0 -0
  24. {kaggle-environments-1.15.2 → kaggle-environments-1.15.3}/kaggle_environments/envs/halite/halite.js +0 -0
  25. {kaggle-environments-1.15.2 → kaggle-environments-1.15.3}/kaggle_environments/envs/halite/halite.json +0 -0
  26. {kaggle-environments-1.15.2 → kaggle-environments-1.15.3}/kaggle_environments/envs/halite/halite.py +0 -0
  27. {kaggle-environments-1.15.2 → kaggle-environments-1.15.3}/kaggle_environments/envs/halite/helpers.py +0 -0
  28. {kaggle-environments-1.15.2 → kaggle-environments-1.15.3}/kaggle_environments/envs/halite/test_halite.py +0 -0
  29. {kaggle-environments-1.15.2 → kaggle-environments-1.15.3}/kaggle_environments/envs/hungry_geese/__init__.py +0 -0
  30. {kaggle-environments-1.15.2 → kaggle-environments-1.15.3}/kaggle_environments/envs/hungry_geese/hungry_geese.js +0 -0
  31. {kaggle-environments-1.15.2 → kaggle-environments-1.15.3}/kaggle_environments/envs/hungry_geese/hungry_geese.json +0 -0
  32. {kaggle-environments-1.15.2 → kaggle-environments-1.15.3}/kaggle_environments/envs/hungry_geese/hungry_geese.py +0 -0
  33. {kaggle-environments-1.15.2 → kaggle-environments-1.15.3}/kaggle_environments/envs/hungry_geese/test_hungry_geese.py +0 -0
  34. {kaggle-environments-1.15.2 → kaggle-environments-1.15.3}/kaggle_environments/envs/identity/identity.json +0 -0
  35. {kaggle-environments-1.15.2 → kaggle-environments-1.15.3}/kaggle_environments/envs/identity/identity.py +0 -0
  36. {kaggle-environments-1.15.2 → kaggle-environments-1.15.3}/kaggle_environments/envs/kore_fleets/__init__.py +0 -0
  37. {kaggle-environments-1.15.2 → kaggle-environments-1.15.3}/kaggle_environments/envs/kore_fleets/helpers.py +0 -0
  38. {kaggle-environments-1.15.2 → kaggle-environments-1.15.3}/kaggle_environments/envs/kore_fleets/kore_fleets.js +0 -0
  39. {kaggle-environments-1.15.2 → kaggle-environments-1.15.3}/kaggle_environments/envs/kore_fleets/kore_fleets.json +0 -0
  40. {kaggle-environments-1.15.2 → kaggle-environments-1.15.3}/kaggle_environments/envs/kore_fleets/kore_fleets.py +0 -0
  41. {kaggle-environments-1.15.2 → kaggle-environments-1.15.3}/kaggle_environments/envs/kore_fleets/starter_bots/java/main.py +0 -0
  42. {kaggle-environments-1.15.2 → kaggle-environments-1.15.3}/kaggle_environments/envs/kore_fleets/starter_bots/java/test/configuration.json +0 -0
  43. {kaggle-environments-1.15.2 → kaggle-environments-1.15.3}/kaggle_environments/envs/kore_fleets/starter_bots/java/test/fullob.json +0 -0
  44. {kaggle-environments-1.15.2 → kaggle-environments-1.15.3}/kaggle_environments/envs/kore_fleets/starter_bots/java/test/observation.json +0 -0
  45. {kaggle-environments-1.15.2 → kaggle-environments-1.15.3}/kaggle_environments/envs/kore_fleets/starter_bots/python/__init__.py +0 -0
  46. {kaggle-environments-1.15.2 → kaggle-environments-1.15.3}/kaggle_environments/envs/kore_fleets/starter_bots/python/main.py +0 -0
  47. {kaggle-environments-1.15.2 → kaggle-environments-1.15.3}/kaggle_environments/envs/kore_fleets/starter_bots/ts/Bot.ts +0 -0
  48. {kaggle-environments-1.15.2 → kaggle-environments-1.15.3}/kaggle_environments/envs/kore_fleets/starter_bots/ts/DoNothingBot.ts +0 -0
  49. {kaggle-environments-1.15.2 → kaggle-environments-1.15.3}/kaggle_environments/envs/kore_fleets/starter_bots/ts/MinerBot.ts +0 -0
  50. {kaggle-environments-1.15.2 → kaggle-environments-1.15.3}/kaggle_environments/envs/kore_fleets/starter_bots/ts/interpreter.ts +0 -0
  51. {kaggle-environments-1.15.2 → kaggle-environments-1.15.3}/kaggle_environments/envs/kore_fleets/starter_bots/ts/kore/Board.ts +0 -0
  52. {kaggle-environments-1.15.2 → kaggle-environments-1.15.3}/kaggle_environments/envs/kore_fleets/starter_bots/ts/kore/Cell.ts +0 -0
  53. {kaggle-environments-1.15.2 → kaggle-environments-1.15.3}/kaggle_environments/envs/kore_fleets/starter_bots/ts/kore/Configuration.ts +0 -0
  54. {kaggle-environments-1.15.2 → kaggle-environments-1.15.3}/kaggle_environments/envs/kore_fleets/starter_bots/ts/kore/Direction.ts +0 -0
  55. {kaggle-environments-1.15.2 → kaggle-environments-1.15.3}/kaggle_environments/envs/kore_fleets/starter_bots/ts/kore/Fleet.ts +0 -0
  56. {kaggle-environments-1.15.2 → kaggle-environments-1.15.3}/kaggle_environments/envs/kore_fleets/starter_bots/ts/kore/KoreIO.ts +0 -0
  57. {kaggle-environments-1.15.2 → kaggle-environments-1.15.3}/kaggle_environments/envs/kore_fleets/starter_bots/ts/kore/Observation.ts +0 -0
  58. {kaggle-environments-1.15.2 → kaggle-environments-1.15.3}/kaggle_environments/envs/kore_fleets/starter_bots/ts/kore/Pair.ts +0 -0
  59. {kaggle-environments-1.15.2 → kaggle-environments-1.15.3}/kaggle_environments/envs/kore_fleets/starter_bots/ts/kore/Player.ts +0 -0
  60. {kaggle-environments-1.15.2 → kaggle-environments-1.15.3}/kaggle_environments/envs/kore_fleets/starter_bots/ts/kore/Point.ts +0 -0
  61. {kaggle-environments-1.15.2 → kaggle-environments-1.15.3}/kaggle_environments/envs/kore_fleets/starter_bots/ts/kore/Shipyard.ts +0 -0
  62. {kaggle-environments-1.15.2 → kaggle-environments-1.15.3}/kaggle_environments/envs/kore_fleets/starter_bots/ts/kore/ShipyardAction.ts +0 -0
  63. {kaggle-environments-1.15.2 → kaggle-environments-1.15.3}/kaggle_environments/envs/kore_fleets/starter_bots/ts/main.py +0 -0
  64. {kaggle-environments-1.15.2 → kaggle-environments-1.15.3}/kaggle_environments/envs/kore_fleets/starter_bots/ts/miner.py +0 -0
  65. {kaggle-environments-1.15.2 → kaggle-environments-1.15.3}/kaggle_environments/envs/kore_fleets/starter_bots/ts/package.json +0 -0
  66. {kaggle-environments-1.15.2 → kaggle-environments-1.15.3}/kaggle_environments/envs/kore_fleets/starter_bots/ts/test/BoardTest.ts +0 -0
  67. {kaggle-environments-1.15.2 → kaggle-environments-1.15.3}/kaggle_environments/envs/kore_fleets/starter_bots/ts/test/ConfigurationTest.ts +0 -0
  68. {kaggle-environments-1.15.2 → kaggle-environments-1.15.3}/kaggle_environments/envs/kore_fleets/starter_bots/ts/test/ObservationTest.ts +0 -0
  69. {kaggle-environments-1.15.2 → kaggle-environments-1.15.3}/kaggle_environments/envs/kore_fleets/starter_bots/ts/test/PointTest.ts +0 -0
  70. {kaggle-environments-1.15.2 → kaggle-environments-1.15.3}/kaggle_environments/envs/kore_fleets/starter_bots/ts/test/ShipyardTest.ts +0 -0
  71. {kaggle-environments-1.15.2 → kaggle-environments-1.15.3}/kaggle_environments/envs/kore_fleets/starter_bots/ts/test/configuration.json +0 -0
  72. {kaggle-environments-1.15.2 → kaggle-environments-1.15.3}/kaggle_environments/envs/kore_fleets/starter_bots/ts/test/fullob.json +0 -0
  73. {kaggle-environments-1.15.2 → kaggle-environments-1.15.3}/kaggle_environments/envs/kore_fleets/starter_bots/ts/test/observation.json +0 -0
  74. {kaggle-environments-1.15.2 → kaggle-environments-1.15.3}/kaggle_environments/envs/kore_fleets/starter_bots/ts/tsconfig.json +0 -0
  75. {kaggle-environments-1.15.2 → kaggle-environments-1.15.3}/kaggle_environments/envs/kore_fleets/test_kore_fleets.py +0 -0
  76. {kaggle-environments-1.15.2 → kaggle-environments-1.15.3}/kaggle_environments/envs/llm_20_questions/keywords.py +0 -0
  77. {kaggle-environments-1.15.2 → kaggle-environments-1.15.3}/kaggle_environments/envs/llm_20_questions/llm_20_questions.js +0 -0
  78. {kaggle-environments-1.15.2 → kaggle-environments-1.15.3}/kaggle_environments/envs/llm_20_questions/llm_20_questions.json +0 -0
  79. {kaggle-environments-1.15.2 → kaggle-environments-1.15.3}/kaggle_environments/envs/llm_20_questions/llm_20_questions.py +0 -0
  80. {kaggle-environments-1.15.2 → kaggle-environments-1.15.3}/kaggle_environments/envs/llm_20_questions/test_llm_20_questions.py +0 -0
  81. {kaggle-environments-1.15.2 → kaggle-environments-1.15.3}/kaggle_environments/envs/lux_ai_2021/__init__.py +0 -0
  82. {kaggle-environments-1.15.2 → kaggle-environments-1.15.3}/kaggle_environments/envs/lux_ai_2021/agents.py +0 -0
  83. {kaggle-environments-1.15.2 → kaggle-environments-1.15.3}/kaggle_environments/envs/lux_ai_2021/dimensions/754.js +0 -0
  84. {kaggle-environments-1.15.2 → kaggle-environments-1.15.3}/kaggle_environments/envs/lux_ai_2021/dimensions/main.js +0 -0
  85. {kaggle-environments-1.15.2 → kaggle-environments-1.15.3}/kaggle_environments/envs/lux_ai_2021/index.html +0 -0
  86. {kaggle-environments-1.15.2 → kaggle-environments-1.15.3}/kaggle_environments/envs/lux_ai_2021/lux_ai_2021.json +0 -0
  87. {kaggle-environments-1.15.2 → kaggle-environments-1.15.3}/kaggle_environments/envs/lux_ai_2021/lux_ai_2021.py +0 -0
  88. {kaggle-environments-1.15.2 → kaggle-environments-1.15.3}/kaggle_environments/envs/lux_ai_2021/test_agents/__init__.py +0 -0
  89. {kaggle-environments-1.15.2 → kaggle-environments-1.15.3}/kaggle_environments/envs/lux_ai_2021/test_agents/js_simple/lux/game_constants.js +0 -0
  90. {kaggle-environments-1.15.2 → kaggle-environments-1.15.3}/kaggle_environments/envs/lux_ai_2021/test_agents/js_simple/lux/game_constants.json +0 -0
  91. {kaggle-environments-1.15.2 → kaggle-environments-1.15.3}/kaggle_environments/envs/lux_ai_2021/test_agents/js_simple/lux/game_objects.js +0 -0
  92. {kaggle-environments-1.15.2 → kaggle-environments-1.15.3}/kaggle_environments/envs/lux_ai_2021/test_agents/js_simple/lux/io.js +0 -0
  93. {kaggle-environments-1.15.2 → kaggle-environments-1.15.3}/kaggle_environments/envs/lux_ai_2021/test_agents/js_simple/lux/kit.js +0 -0
  94. {kaggle-environments-1.15.2 → kaggle-environments-1.15.3}/kaggle_environments/envs/lux_ai_2021/test_agents/js_simple/lux/map.js +0 -0
  95. {kaggle-environments-1.15.2 → kaggle-environments-1.15.3}/kaggle_environments/envs/lux_ai_2021/test_agents/js_simple/lux/parser.js +0 -0
  96. {kaggle-environments-1.15.2 → kaggle-environments-1.15.3}/kaggle_environments/envs/lux_ai_2021/test_agents/js_simple/main.js +0 -0
  97. {kaggle-environments-1.15.2 → kaggle-environments-1.15.3}/kaggle_environments/envs/lux_ai_2021/test_agents/js_simple/main.py +0 -0
  98. {kaggle-environments-1.15.2 → kaggle-environments-1.15.3}/kaggle_environments/envs/lux_ai_2021/test_agents/python/lux/__init__.py +0 -0
  99. {kaggle-environments-1.15.2 → kaggle-environments-1.15.3}/kaggle_environments/envs/lux_ai_2021/test_agents/python/lux/annotate.py +0 -0
  100. {kaggle-environments-1.15.2 → kaggle-environments-1.15.3}/kaggle_environments/envs/lux_ai_2021/test_agents/python/lux/constants.py +0 -0
  101. {kaggle-environments-1.15.2 → kaggle-environments-1.15.3}/kaggle_environments/envs/lux_ai_2021/test_agents/python/lux/game.py +0 -0
  102. {kaggle-environments-1.15.2 → kaggle-environments-1.15.3}/kaggle_environments/envs/lux_ai_2021/test_agents/python/lux/game_constants.json +0 -0
  103. {kaggle-environments-1.15.2 → kaggle-environments-1.15.3}/kaggle_environments/envs/lux_ai_2021/test_agents/python/lux/game_constants.py +0 -0
  104. {kaggle-environments-1.15.2 → kaggle-environments-1.15.3}/kaggle_environments/envs/lux_ai_2021/test_agents/python/lux/game_map.py +0 -0
  105. {kaggle-environments-1.15.2 → kaggle-environments-1.15.3}/kaggle_environments/envs/lux_ai_2021/test_agents/python/lux/game_objects.py +0 -0
  106. {kaggle-environments-1.15.2 → kaggle-environments-1.15.3}/kaggle_environments/envs/lux_ai_2021/test_agents/python/random_agent.py +0 -0
  107. {kaggle-environments-1.15.2 → kaggle-environments-1.15.3}/kaggle_environments/envs/lux_ai_2021/test_agents/python/simple_agent.py +0 -0
  108. {kaggle-environments-1.15.2 → kaggle-environments-1.15.3}/kaggle_environments/envs/lux_ai_2021/test_lux.py +0 -0
  109. {kaggle-environments-1.15.2 → kaggle-environments-1.15.3}/kaggle_environments/envs/lux_ai_s2/__init__.py +0 -0
  110. {kaggle-environments-1.15.2 → kaggle-environments-1.15.3}/kaggle_environments/envs/lux_ai_s2/agents.py +0 -0
  111. {kaggle-environments-1.15.2 → kaggle-environments-1.15.3}/kaggle_environments/envs/lux_ai_s2/index.html +0 -0
  112. {kaggle-environments-1.15.2 → kaggle-environments-1.15.3}/kaggle_environments/envs/lux_ai_s2/lux_ai_s2.json +0 -0
  113. {kaggle-environments-1.15.2 → kaggle-environments-1.15.3}/kaggle_environments/envs/lux_ai_s2/lux_ai_s2.py +0 -0
  114. {kaggle-environments-1.15.2 → kaggle-environments-1.15.3}/kaggle_environments/envs/lux_ai_s2/luxai_s2/__init__.py +0 -0
  115. {kaggle-environments-1.15.2 → kaggle-environments-1.15.3}/kaggle_environments/envs/lux_ai_s2/luxai_s2/actions.py +0 -0
  116. {kaggle-environments-1.15.2 → kaggle-environments-1.15.3}/kaggle_environments/envs/lux_ai_s2/luxai_s2/config.py +0 -0
  117. {kaggle-environments-1.15.2 → kaggle-environments-1.15.3}/kaggle_environments/envs/lux_ai_s2/luxai_s2/env.py +0 -0
  118. {kaggle-environments-1.15.2 → kaggle-environments-1.15.3}/kaggle_environments/envs/lux_ai_s2/luxai_s2/factory.py +0 -0
  119. {kaggle-environments-1.15.2 → kaggle-environments-1.15.3}/kaggle_environments/envs/lux_ai_s2/luxai_s2/globals.py +0 -0
  120. {kaggle-environments-1.15.2 → kaggle-environments-1.15.3}/kaggle_environments/envs/lux_ai_s2/luxai_s2/map/__init__.py +0 -0
  121. {kaggle-environments-1.15.2 → kaggle-environments-1.15.3}/kaggle_environments/envs/lux_ai_s2/luxai_s2/map/bfs_deltas_gen.py +0 -0
  122. {kaggle-environments-1.15.2 → kaggle-environments-1.15.3}/kaggle_environments/envs/lux_ai_s2/luxai_s2/map/board.py +0 -0
  123. {kaggle-environments-1.15.2 → kaggle-environments-1.15.3}/kaggle_environments/envs/lux_ai_s2/luxai_s2/map/position.py +0 -0
  124. {kaggle-environments-1.15.2 → kaggle-environments-1.15.3}/kaggle_environments/envs/lux_ai_s2/luxai_s2/map_generator/__init__.py +0 -0
  125. {kaggle-environments-1.15.2 → kaggle-environments-1.15.3}/kaggle_environments/envs/lux_ai_s2/luxai_s2/map_generator/generator.py +0 -0
  126. {kaggle-environments-1.15.2 → kaggle-environments-1.15.3}/kaggle_environments/envs/lux_ai_s2/luxai_s2/map_generator/symnoise.py +0 -0
  127. {kaggle-environments-1.15.2 → kaggle-environments-1.15.3}/kaggle_environments/envs/lux_ai_s2/luxai_s2/map_generator/timing.py +0 -0
  128. {kaggle-environments-1.15.2 → kaggle-environments-1.15.3}/kaggle_environments/envs/lux_ai_s2/luxai_s2/map_generator/visualize.py +0 -0
  129. {kaggle-environments-1.15.2 → kaggle-environments-1.15.3}/kaggle_environments/envs/lux_ai_s2/luxai_s2/map_generator/visualize_samples.py +0 -0
  130. {kaggle-environments-1.15.2 → kaggle-environments-1.15.3}/kaggle_environments/envs/lux_ai_s2/luxai_s2/pyvisual/__init__.py +0 -0
  131. {kaggle-environments-1.15.2 → kaggle-environments-1.15.3}/kaggle_environments/envs/lux_ai_s2/luxai_s2/pyvisual/visualizer.py +0 -0
  132. {kaggle-environments-1.15.2 → kaggle-environments-1.15.3}/kaggle_environments/envs/lux_ai_s2/luxai_s2/replay/__init__.py +0 -0
  133. {kaggle-environments-1.15.2 → kaggle-environments-1.15.3}/kaggle_environments/envs/lux_ai_s2/luxai_s2/replay/replay.py +0 -0
  134. {kaggle-environments-1.15.2 → kaggle-environments-1.15.3}/kaggle_environments/envs/lux_ai_s2/luxai_s2/spaces/__init__.py +0 -0
  135. {kaggle-environments-1.15.2 → kaggle-environments-1.15.3}/kaggle_environments/envs/lux_ai_s2/luxai_s2/spaces/act_space.py +0 -0
  136. {kaggle-environments-1.15.2 → kaggle-environments-1.15.3}/kaggle_environments/envs/lux_ai_s2/luxai_s2/spaces/obs_space.py +0 -0
  137. {kaggle-environments-1.15.2 → kaggle-environments-1.15.3}/kaggle_environments/envs/lux_ai_s2/luxai_s2/state/__init__.py +0 -0
  138. {kaggle-environments-1.15.2 → kaggle-environments-1.15.3}/kaggle_environments/envs/lux_ai_s2/luxai_s2/state/state.py +0 -0
  139. {kaggle-environments-1.15.2 → kaggle-environments-1.15.3}/kaggle_environments/envs/lux_ai_s2/luxai_s2/state/stats.py +0 -0
  140. {kaggle-environments-1.15.2 → kaggle-environments-1.15.3}/kaggle_environments/envs/lux_ai_s2/luxai_s2/state/typing.py +0 -0
  141. {kaggle-environments-1.15.2 → kaggle-environments-1.15.3}/kaggle_environments/envs/lux_ai_s2/luxai_s2/team.py +0 -0
  142. {kaggle-environments-1.15.2 → kaggle-environments-1.15.3}/kaggle_environments/envs/lux_ai_s2/luxai_s2/tools/__init__.py +0 -0
  143. {kaggle-environments-1.15.2 → kaggle-environments-1.15.3}/kaggle_environments/envs/lux_ai_s2/luxai_s2/tools/replay.py +0 -0
  144. {kaggle-environments-1.15.2 → kaggle-environments-1.15.3}/kaggle_environments/envs/lux_ai_s2/luxai_s2/unit.py +0 -0
  145. {kaggle-environments-1.15.2 → kaggle-environments-1.15.3}/kaggle_environments/envs/lux_ai_s2/luxai_s2/utils/__init__.py +0 -0
  146. {kaggle-environments-1.15.2 → kaggle-environments-1.15.3}/kaggle_environments/envs/lux_ai_s2/luxai_s2/utils/animate.py +0 -0
  147. {kaggle-environments-1.15.2 → kaggle-environments-1.15.3}/kaggle_environments/envs/lux_ai_s2/luxai_s2/utils/heuristics/__init__.py +0 -0
  148. {kaggle-environments-1.15.2 → kaggle-environments-1.15.3}/kaggle_environments/envs/lux_ai_s2/luxai_s2/utils/heuristics/bidding.py +0 -0
  149. {kaggle-environments-1.15.2 → kaggle-environments-1.15.3}/kaggle_environments/envs/lux_ai_s2/luxai_s2/utils/heuristics/factory.py +0 -0
  150. {kaggle-environments-1.15.2 → kaggle-environments-1.15.3}/kaggle_environments/envs/lux_ai_s2/luxai_s2/utils/heuristics/factory_placement.py +0 -0
  151. {kaggle-environments-1.15.2 → kaggle-environments-1.15.3}/kaggle_environments/envs/lux_ai_s2/luxai_s2/utils/utils.py +0 -0
  152. {kaggle-environments-1.15.2 → kaggle-environments-1.15.3}/kaggle_environments/envs/lux_ai_s2/luxai_s2/version.py +0 -0
  153. {kaggle-environments-1.15.2 → kaggle-environments-1.15.3}/kaggle_environments/envs/lux_ai_s2/luxai_s2/wrappers/__init__.py +0 -0
  154. {kaggle-environments-1.15.2 → kaggle-environments-1.15.3}/kaggle_environments/envs/lux_ai_s2/luxai_s2/wrappers/controllers.py +0 -0
  155. {kaggle-environments-1.15.2 → kaggle-environments-1.15.3}/kaggle_environments/envs/lux_ai_s2/luxai_s2/wrappers/sb3.py +0 -0
  156. {kaggle-environments-1.15.2 → kaggle-environments-1.15.3}/kaggle_environments/envs/lux_ai_s2/test_agents/python/agent.py +0 -0
  157. {kaggle-environments-1.15.2 → kaggle-environments-1.15.3}/kaggle_environments/envs/lux_ai_s2/test_agents/python/lux/cargo.py +0 -0
  158. {kaggle-environments-1.15.2 → kaggle-environments-1.15.3}/kaggle_environments/envs/lux_ai_s2/test_agents/python/lux/config.py +0 -0
  159. {kaggle-environments-1.15.2 → kaggle-environments-1.15.3}/kaggle_environments/envs/lux_ai_s2/test_agents/python/lux/factory.py +0 -0
  160. {kaggle-environments-1.15.2 → kaggle-environments-1.15.3}/kaggle_environments/envs/lux_ai_s2/test_agents/python/lux/kit.py +0 -0
  161. {kaggle-environments-1.15.2 → kaggle-environments-1.15.3}/kaggle_environments/envs/lux_ai_s2/test_agents/python/lux/team.py +0 -0
  162. {kaggle-environments-1.15.2 → kaggle-environments-1.15.3}/kaggle_environments/envs/lux_ai_s2/test_agents/python/lux/unit.py +0 -0
  163. {kaggle-environments-1.15.2 → kaggle-environments-1.15.3}/kaggle_environments/envs/lux_ai_s2/test_agents/python/lux/utils.py +0 -0
  164. {kaggle-environments-1.15.2 → kaggle-environments-1.15.3}/kaggle_environments/envs/lux_ai_s2/test_agents/python/main.py +0 -0
  165. {kaggle-environments-1.15.2 → kaggle-environments-1.15.3}/kaggle_environments/envs/lux_ai_s2/test_lux.py +0 -0
  166. {kaggle-environments-1.15.2 → kaggle-environments-1.15.3}/kaggle_environments/envs/mab/__init__.py +0 -0
  167. {kaggle-environments-1.15.2 → kaggle-environments-1.15.3}/kaggle_environments/envs/mab/agents.py +0 -0
  168. {kaggle-environments-1.15.2 → kaggle-environments-1.15.3}/kaggle_environments/envs/mab/mab.js +0 -0
  169. {kaggle-environments-1.15.2 → kaggle-environments-1.15.3}/kaggle_environments/envs/mab/mab.json +0 -0
  170. {kaggle-environments-1.15.2 → kaggle-environments-1.15.3}/kaggle_environments/envs/mab/mab.py +0 -0
  171. {kaggle-environments-1.15.2 → kaggle-environments-1.15.3}/kaggle_environments/envs/rps/__init__.py +0 -0
  172. {kaggle-environments-1.15.2 → kaggle-environments-1.15.3}/kaggle_environments/envs/rps/agents.py +0 -0
  173. {kaggle-environments-1.15.2 → kaggle-environments-1.15.3}/kaggle_environments/envs/rps/helpers.py +0 -0
  174. {kaggle-environments-1.15.2 → kaggle-environments-1.15.3}/kaggle_environments/envs/rps/rps.js +0 -0
  175. {kaggle-environments-1.15.2 → kaggle-environments-1.15.3}/kaggle_environments/envs/rps/rps.json +0 -0
  176. {kaggle-environments-1.15.2 → kaggle-environments-1.15.3}/kaggle_environments/envs/rps/rps.py +0 -0
  177. {kaggle-environments-1.15.2 → kaggle-environments-1.15.3}/kaggle_environments/envs/rps/test_rps.py +0 -0
  178. {kaggle-environments-1.15.2 → kaggle-environments-1.15.3}/kaggle_environments/envs/rps/utils.py +0 -0
  179. {kaggle-environments-1.15.2 → kaggle-environments-1.15.3}/kaggle_environments/envs/tictactoe/test_tictactoe.py +0 -0
  180. {kaggle-environments-1.15.2 → kaggle-environments-1.15.3}/kaggle_environments/envs/tictactoe/tictactoe.js +0 -0
  181. {kaggle-environments-1.15.2 → kaggle-environments-1.15.3}/kaggle_environments/envs/tictactoe/tictactoe.json +0 -0
  182. {kaggle-environments-1.15.2 → kaggle-environments-1.15.3}/kaggle_environments/envs/tictactoe/tictactoe.py +0 -0
  183. {kaggle-environments-1.15.2 → kaggle-environments-1.15.3}/kaggle_environments/errors.py +0 -0
  184. {kaggle-environments-1.15.2 → kaggle-environments-1.15.3}/kaggle_environments/helpers.py +0 -0
  185. {kaggle-environments-1.15.2 → kaggle-environments-1.15.3}/kaggle_environments/main.py +0 -0
  186. {kaggle-environments-1.15.2 → kaggle-environments-1.15.3}/kaggle_environments/schemas.json +0 -0
  187. {kaggle-environments-1.15.2 → kaggle-environments-1.15.3}/kaggle_environments/static/player.html +0 -0
  188. {kaggle-environments-1.15.2 → kaggle-environments-1.15.3}/kaggle_environments/status_codes.json +0 -0
  189. {kaggle-environments-1.15.2 → kaggle-environments-1.15.3}/kaggle_environments/utils.py +0 -0
  190. {kaggle-environments-1.15.2 → kaggle-environments-1.15.3}/kaggle_environments.egg-info/SOURCES.txt +0 -0
  191. {kaggle-environments-1.15.2 → kaggle-environments-1.15.3}/kaggle_environments.egg-info/dependency_links.txt +0 -0
  192. {kaggle-environments-1.15.2 → kaggle-environments-1.15.3}/kaggle_environments.egg-info/entry_points.txt +0 -0
  193. {kaggle-environments-1.15.2 → kaggle-environments-1.15.3}/kaggle_environments.egg-info/requires.txt +0 -0
  194. {kaggle-environments-1.15.2 → kaggle-environments-1.15.3}/kaggle_environments.egg-info/top_level.txt +0 -0
  195. {kaggle-environments-1.15.2 → kaggle-environments-1.15.3}/setup.cfg +0 -0
  196. {kaggle-environments-1.15.2 → kaggle-environments-1.15.3}/setup.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: kaggle-environments
3
- Version: 1.15.2
3
+ Version: 1.15.3
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.2"
23
+ __version__ = "1.15.3"
24
24
 
25
25
  __all__ = ["Agent", "environments", "errors", "evaluate", "http_request",
26
26
  "make", "register", "utils", "__version__",
@@ -0,0 +1,123 @@
1
+ async function renderer(context) {
2
+ const {
3
+ environment,
4
+ frame,
5
+ height = 400,
6
+ parent,
7
+ step,
8
+ width = 400,
9
+ } = context;
10
+
11
+ // Common Dimensions.
12
+ const canvasSize = Math.min(height, width);
13
+ const boardSize = canvasSize * 0.8;
14
+ const squareSize = boardSize / 8;
15
+ const offset = (canvasSize - boardSize) / 2;
16
+
17
+ // Canvas Setup.
18
+ let canvas = parent.querySelector("canvas");
19
+ if (!canvas) {
20
+ canvas = document.createElement("canvas");
21
+ parent.appendChild(canvas);
22
+ }
23
+
24
+ // Canvas setup and reset.
25
+ let c = canvas.getContext("2d");
26
+ canvas.width = canvasSize;
27
+ canvas.height = canvasSize;
28
+ c.clearRect(0, 0, canvas.width, canvas.height);
29
+ // Draw the Chessboard
30
+ for (let row = 0; row < 8; row++) {
31
+ for (let col = 0; col < 8; col++) {
32
+ const x = col * squareSize + offset;
33
+ const y = row * squareSize + offset;
34
+
35
+ // Alternate colors for squares
36
+ c.fillStyle = (row + col) % 2 === 0 ? "#D18B47" : "#FFCE9E";
37
+ c.fillRect(x, y, squareSize, squareSize);
38
+ }
39
+ }
40
+
41
+ // Draw the Pieces
42
+ const board = environment.steps[step][0].observation.board;
43
+ const chess = new Chess(board);
44
+ const boardObj = chess.board();
45
+
46
+ for (let row = 0; row < 8; row++) {
47
+ for (let col = 0; col < 8; col++) {
48
+ const piece = boardObj[row][col];
49
+ if (piece) {
50
+ const x = col * squareSize + offset;
51
+ const y = row * squareSize + offset;
52
+ drawPiece(c, piece.type, piece.color, x, y, squareSize);
53
+ }
54
+ }
55
+ }
56
+ }
57
+
58
+ const pieceImagesSrc = {
59
+ P: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADwAAAA8CAYAAAA6/NlyAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAN1wAADdcBQiibeAAAABl0RVh0U29mdHdhcmUAd3d3Lmlua3NjYXBlLm9yZ5vuPBoAAAKaSURBVGiB7Zo9axVBFIafNyYoGhSNYFDUoI1CGtEgooIo/oGAhWApWlhoivgLgp32tlqJBEEsBMXGr0ILkYiVhRaCICL4gUXisbi5QaIkOzvnzL25975wujnvnIezOzs7uzIzukl9rS6gtHrAna4ecKerB9zp6jrg/lZMKmknMAbsAF4DL83sa5HJzaxYACPAA8AWxSxwBVgdXYNKbS0lHQbuA4NLDJsBDpnZ96g6itzDkgaBGywNCzAKXI2spdSiNQnsqjj2nKR9UYWUAj4SPL6ySgGndmzFd/hn8PjKKgX8Jnh8ZZUCvpMw9jdwN6qQcGBJJ4GphJQ+YFrSlpB6IjcekvYAL1j++fs/PQaOm9msZ01hHZY0AExTDxbgKI3tpqvCOizpDHAz0+YXsN3MPjuUBMTewxcdPNYA5x18FhQCLGkDcMDJ7oSTDxDX4ar75ira7egVBrzN0WtYkrzMooDfOnrNmOPKGgJsZu+AT052z518gNhV+qmTzzMnHyAW+JGDxxzwxMFnQZHA12lsD3N02cw+eBSzoOBTymHgI/+eUlaJmxE1Re6l1wIXgE01LY5JOuVYUkNBnd0LvKdeZxfHPRzPqyNgtzrCNuMW8y86bQUMrAdeOcM241pbAQMDwMMg2GZMtBPwVDCs0TjvGms5MI1TjS8FgA24nVOr12PpLLDRyWs5jUuq/cqYDSypH7iU65OgPmCidrbD5XyaMpfy3/EDGGrVJT3p4JGq5i4uWVnAkkYI/PC1jMbrJOV2+GBmfo5GJa1LTVrJwKuA/alJucCjmfm5Sp4/F3goMz9XyfP3gBO1OTM/V8nz1wae/zqYvEo6K3k7m/Pr4RytewY39S01odifeO2irvubtgfc6eoBd7q6DvgP/gH4mMhDFawAAAAASUVORK5CYII=",
60
+ R: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADwAAAA8CAYAAAA6/NlyAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAN1wAADdcBQiibeAAAABl0RVh0U29mdHdhcmUAd3d3Lmlua3NjYXBlLm9yZ5vuPBoAAAJSSURBVGiB7ZqxixNBFMa/b/HOFBGbSDRgoRCQK01IndrG1j/BI0QQ7JLG2sIg5AQ7QbCystByIYVFKq1sUh0kmyKolWE37rPwxDOG252ZzcabnR+8YsObt+/bmXkzO1mKCIqEt+sE8sYJth0n2HacYNtxgm1HWzDJEsn3JGWDHZGkgr+Q/ETyyob7HJKM0/onIiJaBqANQM6wq4r+AuD+hvsEKv5JdkH5CaXnLslvp64PUrRpkry39lspw5y22sN5mHIPu6JlO+ddMJNd/sZE8CXf97VrgKnN53N4nnddNWnqnniQ3G+1Wp9rtdoNrQCGLBaLr6PR6KaIfFFqaPKUAewBeIH8q/M7AJd1ctbu4dOQfADgab/f95rNpnG8TUynU3Q6HYjIAMAjEfmhEyeTjYeIPCO5H0XRk+VymUXIfwjDECLySkQeGgXKqoggn42I8kbDbTx2nUDeOMG24wTbjhNsO06w7TjBtuME206WB/EXG40G6vV6hiH/EAQBfN8vGwfK8H34te/7si1ms5mQ/GicZ0ZibwEIkc951h2TXI2HNMlSpVJ5MxgM9spl8xF3FnEco9frvSR5W0SOdWJkMYffrlargzAMsa3zrN9EUYQwDCsAPpCsi8h31RjGp5YkAwBVoyB6XBORQLVR4Zalwgk2nsPVatVrt9tY+8Jhq4zHY0wmE73GGkvQIYAYJ8tEt9s1X2QVGQ6H60vVEU7qUZIpF60dFqkkUhWxws1hJ9h2dAQ/xq9C8T/xHMA8jWMm/w+fJ9yQth0n2HacYNspnOCf287BmtabMhEAAAAASUVORK5CYII=",
61
+ B: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADwAAAA8CAYAAAA6/NlyAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAN1wAADdcBQiibeAAAABl0RVh0U29mdHdhcmUAd3d3Lmlua3NjYXBlLm9yZ5vuPBoAAARpSURBVGiB7Zo/bFtVFMZ/x7EhUdN2cFSkDMSCdEnKgkSH0IAZACkgAgpL2yhCDGz8UZNgRYINhpQgQAgQIwNiARRRJJOJAVhAuEhtBUIijhpRZJyAGpw4jRMfhmcjU/XZ78XnvbhuPunIkt/1ud/ne8699517RVW5lRDZawJhY19wu2NfcLtjTwSLSEJEBkUk9P5D7VBEhkXkZyALXATyIvJcmBxQ1VAMuB8oAXoDS4XFQ8LaeIjIRWDQ5XEJSKjqlaB5hBLSItKLu1iAGPBgGFzCyuHbPbTpDJwFIQlW1Szwe4Nm34XBJcxZ+qU6z95T1V/DIBGm4C+Bj3Fm5Vr8CMyGxiKE5agTOAP8wY2XJAWKwDtAb+B8AhZ7J3C+jtDr7W/g4ZtSMHACyPkQW7Vt4PmbSjDwLHBtF2Jr7UOgo+UFA48A5SbFVu31lhYM9ABXGgmZnZ3VdDqtkUikkeAdYLiVBc97GblsNquqqn19fV5GeQk4bMXRbB0WkceAUY9t//fZAH3AK7smdh2iVo6A024PRISpqSkGB533h56eHgDm5uYoFAqsr68zMzPD2tqam4uTIvKyVsKoKRiFchfwDy5hGY/HdXt7W+thbGysUWifsOBqNcKPAt1uD1dXV0kmk/T39wPOyMbjcaanp1lZWSGfz5NOpxv18TTwbdNMjUb4DD6Wm6WlJVVVTSQSfpaoL1pp0rrNT+OtrS0AyuVyYH24wSqkY34ap1IpBgYGWF5eDqwPVxiF9DPY7Kzq2UetFNLncDb9QWLewomJYFVdBb628OWCIrBg4ciy4nEW56UhCLypqhsmnizyoiaXp7HP3XNAxIyjpeCK6LNAaWhoSHO5nG5ubvqyjY0NnZycrIr9Cjhkyc9yL11FCjja2dn5ZDwep6Ojw9ePVZVoNAqwCJxSVdcN9m5gftQiIi8CbwNEo9Eqec8ol8v/bUyAeVV9ypSgcTjfjTOjWubwaUuO1nXpUeyPTE5aOjPN4fHx8dGRkREiEbv/MZPJPCQiola5ZxjOsYWFhS01RrFY1O7u7geseFqOcGxiYiKWTCa9lm48IZPJUCgUDlj5M52lRSSPU7m0xjFVvWThyHrS+tzYH8AlwO5k0So3KpESAV6gTn3Lh5WBDzDeaQVyx0NEDgKP49ShhnHC3EtirwEXgM+AT1XVV4XAE7fdChZnZuoFjuBUI2rtQOX7OyqfvTiHa0dc3G3gFOiywJ8VywFXcS681NpV4LKqlnbF26tgETkOPAHcC9wFJPB2dyMI7OBcoVgEfgLeVdVFT7/0kJeHgE8IvoTTjJWAV6kMYF09DcR2Ad+0gCCvlgbizQh+vwVE+LXzzey0Cg2e+8VvwA/A9zhL133AceAYdvv6Qr29d8NJS0ROAW/gzLwXgF+AyzWWw1lyokBHxQRnYqnaNpBT1b9c+ujCOSWs9VH9A2p97AAHK22rdhS4BzgMvAW8pqrXXPUEsQ7vBby+UbWNYK/YvxHf7tgX3O645QT/Cym/GLJbVZClAAAAAElFTkSuQmCC",
62
+ Q: "data:image/png;base64,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",
63
+ n: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADwAAAA8CAYAAAA6/NlyAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAN1wAADdcBQiibeAAAABl0RVh0U29mdHdhcmUAd3d3Lmlua3NjYXBlLm9yZ5vuPBoAAAbTSURBVGiB7ZptTFTZGcd/hxmcUq3Z2A+8th+WLBqroOwK1mpDqkkTDU0kRKmSWrWJRk3XqNjYNyx+QI2tC36q1BiJGjcao8sm1sSKaZw1g5ESa9vE+LYgsYHoElyoCtx/P8CZDBSGO8wMuJR/MsmZOc95nud3z73n7Y6RxP+TEiY6gfHWFPBk1xTwZNcUcLxljPnAGPOD8Y5rFTNgY0yJMabFGNNgjJk3gs12oAH4izHmYKxiRyRJMfkAXwAa+LwA3h9S//OQegFfAr5YxXedZwyBuwCtWrXKAj0Apg/UFVnQqqoq5eTkWJvFX2XgVkB+vz8U6M/AQeBzQEeOHJEkFRYW2vo/APOBxK8i8DFAe/bs0d27d+Xz+UJvX2VnZ6uvr0+StGPHjkF1wGugCfgT8P14AntjOBw8AWhra2P+/Pk0NDRw5coVJOHz+diwYQMJCf1jZHl5OcnJyR1NTU3vNDU18ejRo2mScoAcYLMx5p/AH4FaSR0xzDE2PQwY+kdfnT17Vi713BY6Ozt18+ZNVVRUKCMjI7Tnu4AKwPtW3dLATwGlpKTo5cuXboGHVW9vry5evKgVK1bIGGPB/cC33wpg4IOBntCZM2eigh2q+vp6paWlhU51RRMKDCQNPLvaunWrJKmyslLZ2dl6/PixG6a+0Qza29u1cuXK0Nt820QC/wZQfn6+enp6tH379mBily5dcgPc68bIcRwdOnTI+n4DLB13YCAd+NIYo0AgoEAgMGiqaW5udsMSkXbt2mX9PwPSxhu4FlBpaakkqbq6etCcGw/19PSooKDAxvkMmDYuwEAe4CQlJTktLS2SpH379gnQvHnz9PTp07gAS1JbW1vo1FUxXsB+QOXl5cFEWltbVV1drY6OjogAdu/erW3btkXU5saNGxb4C+AbcQUGfgwoPT1dXV1dESU6VH19ffJ6vfJ4PHIcJ6K2y5Yts9C74gYMfA1oBlRbWxsVrCTdu3dPgFJTUyNuW1dXZ4FbiGDzESnwh4AWLlwYcY8Mp9LSUgHasmVLxG0dx9HcuXMt9E9cM7g2hK8D/wZUV1cXJap04sQJATLGuF2k/I9OnjxpgZtcc7g2hDK7yIhW9fX1SkxMFKCkpKQx+3nz5o1mzZplob/lisOVEcwA2gFdvXp1zAlK0v3790OTlMfjicrf6tWrra8NrlhcGcEvAS1dujSq5AKBgNLT022CnwB9Xq83eDAwFh07dsz6q3XFMqpB/173CaBr166NObHjx4+HnoJcB75nFyrRyI70QMtoLHIJvARQRkaGHMdRY2Ojbt265TqhV69eafPmzaHr7N8DHmAjoPXr10cFLEnJycnWd1YsgKsB7dy5U36/P7gpP3fu3KiJNDc3a9GiRaHHsmtD/H4E6PDhw1EDl5SU2BhbR+NxcxD/I4Di4mJevHhhk6W9vT1so+vXr5Obm8vt27eh/8j2u5I+DjF5HyAnJ8dFCuFVUFBgi0tGNXbRw/8CdOfOHfX29uro0aOqrKxUd3f3iFe8qqpKHo/HXvVPgXeG+FwIaMaMGRGvvYdTfX29jfXXUXlcAH8M6NSpU4OCPH/+XDU1NWpsbAz+5jhO6J7VAX4HmGF8fgJo7969UcNK0sOHD23MJ7EA/hUD582hKioqEiCfz6fOzk45jqN169bZwK+AkhH85QGaPn262traYgL8+vVrO7b0AAnRAv8Q0MyZM+X3+4NBMjMzgyPvgwcPdODAAfu9A1g2gq9vAg8BlZWVxQTWKiUlxcbPiBbYAGcBeb1ezZkzRwsWLAjC5ufn68KFC0pISLC3ceEIfhKBG4Byc3Oj3loOVV5ens1pSVTAA8l6gJMDQIPOrjIzM4PrYuC3YS7aCQa2gvaUJJYqLi62OQSnvjEDhySeBHwHWASUDrkAlWHafWSf20AgEHNYadABX1k4hojeLUn6D/CPga+3jTGPgEzgb5LuDdfGGHMA+NDn83H58mXy8vIiCelaaWlptpgazi6ql2mSPqP/9HBYGWN+Afza6/Vy/vx5li9fHk24sPL5fLY4LZxd3P7jYYzZAhxMSEjg9OnTFBYWxisUAF5vsO/CdmJcgI0xqcBRYww1NTWsXbs2HmEGyePx2OL4A9P/CiappKSETZs2xSnEYE1YDxtj3gV+5vF42L9/f6zdj6iJvKVXAYlr1qwhKysrDu6H10QCZwEsXrw4Dq5HVsgznBjOLh7A7wHMnj07Dq5HltsejuWfWqzeA9i4cSPTpoWdEmOq7u5uWxx34M+Bd589exYH167093CVZmCtGzMZYzxABv0bhvFWj6TWcAYxB37bNfV/6cmuKeDJringya7/ArAfRalwNR9/AAAAAElFTkSuQmCC",
64
+ k: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADwAAAA8CAYAAAA6/NlyAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAN1wAADdcBQiibeAAAABl0RVh0U29mdHdhcmUAd3d3Lmlua3NjYXBlLm9yZ5vuPBoAAAhkSURBVGiB7ZptbFPXGcd/105Ck+WNJG1MALdhUUVEI5oOGFC+8NIGBBpKS7Qisk+AxEBQNEWMSUOjm7QJxAcoyxAB1FFVGwTGBFIWqZ0yKpJSJKjKi5gDKBEOcUKImya8LS/2fx/sm9pJTIztOBXlkY7uTe5zzvn/7nP83HPuPYYkfkhmGW8B8bbnwM+6PQd+1m1cgA2f/dIwjMJ49z1eEV4I/AX4fbw7Hi/gJP8xLd4dG/GaeBiGsQSoAlLwAU8E+oAuv0u9pFVjrSNhrDsIsMlA/pD/JQG5/vNX4iEibhEGMAwjB99NXgj8DTgLrPZfvifJM9Ya4hlhJHUCGIZhDuNeSe3x1PD8OTzWZhiGFXjN/2eeYRgvxlWApLgV4MfATUABxQNsj5uGOMJOBe4Cys/P19atW7V8+XJZLBYTfMezBnwS0MKFC3X//n2ZVl1dbUL3AYXPBDAwB1Bqaqru3LmjobZhwwYzyse/t8CAgW8isQyYB+Q+wfc3gLZs2TIMVpKamppM4Lsh6icD04ESYD6QETdg4KfAv4GeIclHwEOgBlgBWALqHAP0ySefjAgsSTk5OWYbNn+dPGAn0DxCPwJagL8CL48JMJAOVPqzqgDl5uZq0aJFmj17trKzs4cKaga2AlbgEKCqqqqQwMnJyWa914ATQL/ZVmJiogoKCrRkyRK98cYbSklJCeznMfAnIC1mwH7R58zOt23bpvb29mGi7969qz179ujVV18NFNQA/BnQtm3bRoS9d++e6fs/oBtQQkKCysrKdPbsWXk8niB/r9crh8Oh8vJyGYZh1r0E/ChWwDsA2Ww2Xbt2LWSUAu3MmTPKy8szxTwCNH369BF9jx49GjQ6Vq1apdbW1rD6uXDhggoKCsy6ZwJ/ShEBA7OBfsMwVFtbG5YI09xut8rKyoJgHA7HML/8/HwBSk5OfuKwD2U3b94MzAF7owWuBrR58+anFmLarl27BoHLy8tHvJaSkqJLly5F3EdDQ4MmTJhg9vNySJ5QF+SDnWBmY6fTGbEYSdqxY4cAWSwWffbZZ5KkTz/9dHCmVV1dHVX7kvTOO++YwOsUIfBSQDNmzIhajCS9//77g9n9/v37KioqEqDt27fHpP2DBw+OOoEZDfhXgNavXx8TQV6vV3PmzBGgN998U4AmTZqkx48fx6T9ixcvmsCXFYJptOWhG+DBgwejuIVnhmFQWVmJxWKhoaEBgIqKCl544YWYtH/nzp3B01A+owHfA3C5XDERBDBr1izWrVsHQE5ODhs2bIhZ2w6HwzxtDukUKvTyDekXgV6r1arbt2/HZNhJUm1trQCVlJTErM3+/n5NmzbNHNJlimRIS7oHVHs8Hvbu3RuLIIyZffzxxzQ1NQFcB/4R0jHUndB3Uf4J4LVaraqrq4tJNGId4StXrig9Pd2M7s/1BJ5R32lJugT8wePx8N5773H9+vUYxCN21trayooVK+jp6QHfqqz6iRWedDf0XZQtwL8Apaenq6amJuy739vbq9u3b+vLL7/UqVOnVFlZqbVr1wpQcXGxTpw4ofr6ejU1NT314+n8+fOB8/V6YMKoLOEA67tZ11H8s6U9e/YME9DT06PTp09r48aNmjlzpnJycgJXM2GViRMnasaMGVq7dq2OHz+uzs7OEWGrqqqUlJRk1vsPkB0Ox1N/eTAM49fAHwHL22+/zb59+7hx4wb79+/n888/p7+/P8g/MTERm83GpEmTgorVaqWtrW2wuFwu2tvb6e3tDapvsViYN28eGzdupKysjEePHlFRUcHhw4dNl31AhaSBsADCjfCQaP8M6MS/bjWjY7VaNX/+fH3wwQf64osv1NHRIa/X+1TD1O126+LFi9q9e7cWL14cuCBQVlaWUlNTA5ec5U+tPRJgP3Q2/rcfU6ZM0e7du+V2u58KLhx78OCBDhw4oMLCwsChX0eEbzij+phmGEYPkNbZ2Ul2dnbQqGlsbKS1tRWXyxU0bM2j1+sNGuJ5eXmDx7y8PAoLC7FarUFtpqWl8fDhQ4CJkr6NSHSkEfbfqG8BdXV1qaOjQx999JFWr14duBiPuGRkZKi0tFQHDhxQS0uLJCkjI8O8nhmp5mgj/C2QsWbNGk6ePBmUcOx2OwUFBYORCydpmefNzc3cunVrsK2EhARKS0upra01FzLjFuFe/x2XxWLR0qVL9eGHH6qxsTHan66cTqcOHTqkd999NyhxEWWEowXuB7Rp0yY1NzeHBeJ2u3X16lVdvnw57Cze3t6unTt3Bj7TsyLVHJMh3dXVRWZmJgADAwOcP3+ehoaGYUmrra1t2HM2MTGR3NzcYUlr7ty5LFiwIGitnJmZSXd3N4x30mpra9Phw4e1cuVKpaWlhUxEFotFNptNxcXFmjVrliZPnhz0HB9akpOTVVJSov3796u7u/t7kbS6gfSsrCy++eYb83+8/vrrvPXWW8OS1ksvvRT0qAHwer10dnYOS1p1dXVcuHABj8e37SM1NZW+vj76+vpgHCPchz8aRUVFOnLkyIhfJCK1rq4uHTt2bPD9V0BJj1RztFseTvsF4HA4OHfuHF999ZUZhajM6/Vy5coV6uvr+frrrwMvnZPUE2m7UW9bMgxjGvBb4Bf4dwWlp6ezbNkyioqKsNvt2O12pk6dypQpU0hKSgqqPzAwgMvlwul00tLSgtPppLGxkZqaGjo6Okw3Af8EfifpWlR6owUebMgHvgYoBYpD+GCz2bDb7VitVlpaWnC5XIO/0xHMAZwC/h4t6KCGWAEHNWoYrwCLgJfx7e2w+8tUYOg72T5833pbAGfA8Zyk/8Zc21gAP7FD3zalqfg+wbbg++ofNxFxBx5ve74T71m358DPuv3ggP8PhiQTuT1l3u4AAAAASUVORK5CYII=",
65
+ p: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADwAAAA8CAYAAAA6/NlyAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAN1wAADdcBQiibeAAAABl0RVh0U29mdHdhcmUAd3d3Lmlua3NjYXBlLm9yZ5vuPBoAAASLSURBVGiB7ZrLS2NnGIefL6YJEuM4GaOiUvDCgJIKI0Y7KFJ3BSm00j9gil1ULbRi+1cUV92U7gahSLvUzeAiVG3QCoOggxmvgRlRY2uKSLSivl3oV2JJgyfnYrw8EDgh3+X35P3ycc7JUSLCXcJ13QGc5l74tnMvfNu5F77t3Dlh93VMqpQKAmGgEVgGfheRbUcmFxHHXkAx8CMgGV4/AaV2Z1BOnVoqpaqAKPCux+Ohra2NUChELBZjZmaGw8NDgF2gXURWbAviYHVfANLS0iJLS0uSTjwel87OTl3pKFBgWw6HZD8BJBAIyNbWlmQimUxKZWWllv7MrixO7dIdAAMDA1RUVGRsUFJSwtDQ0KX2duCU8BOAcDictVHa50/sCuKUcArg5OQka6PT01N9eGRXEKeEXwFMTExkbRSJRPRhzLYkDm1a7wPi8XgkHo9n3LR2d3fF7/frTevDG7tpKaUeA88BPB4P8Xg8Y7u3b9/idv974veDUsqe37HNlS0GXgMSCoUkFotlrK5mY2NDwuGwrvImUGZ5JpuFfwakqalJDg4Osspqjo6OpKOjQ0tP3Bhhzi8MpKioSNbW1q4kq0kkElJaWqqlO6zMZedv+EuA3t5eamtrDXUMBoP09/frt19ZmsrGCq8DMj8/b6i6ms3NTV3hPStz2XK1pJRyA0cul6sglUrh9XpzGicQCJBMJgECIpK0IptdS7oMKCgpKclZFs6FL6iyIhRg65L+A5CNjY2clvTe3p4opQQ4BgqtymXnpjUDMD09nVPnaDSqv7iXInJoVSg7haMAk5OTOXWemprSh79ZlOccG5d0OyBer1dmZ2cNLedYLCbFxcV6l/7I0lx2CV9Ifw9IdXW17OzsXEl2f39fGhoatOwvlmeyWdgNRADp7OyU4+PjrLJnZ2fS09OjZReBohsjzPn+8AXwJyBut1vGxsayCkejUfF6vVr4L+BrwJ33wsBDYPYiuHR1dcni4mJWWc3q6qp0d3en369eACryVhjwAr8CUlVVJaOjo1cS/S/j4+NSV1enpV8C/rwTBhQwqjeqN2/e5CSrSSQSUl9fr6VfAO/km/B3gDx48EAWFhZMyWpWV1elrKxMSz/PG2Ggh4v7VpFIxBJZzdzcnPh8Pi39eb4IzwEyPDxsqaxmZGREC78GXNcqDHzAxV8pV72VY5STkxOpqanR0h/nmtWqc+lv4PyvFJ/PZ9GQlykoKGBwcPDSfDlhQXUbgbPCwkJJJBK2VFdzcHAggUBAV/npdVV4CFDPnj0jGAxaMNz/4/P56Ovr02+/zWkQCyq8A8jy8rKt1dVsb2+Ly+US4G/AazivSdk6QCorKx2R1TQ2Nupl3WY0s9kl/RSgtbXV5DDGSJuvzWhfs8LvATQ3N5scxhhp84WM9jUrXApQXl5uchhjpM33yGhfs8KP4NLtVEdIm8+wsKkb8UqpaaC9trYWv9+f8zhGSaVSrKysALwSEUPL2uyTeA8B1tfXTQ5jbn4jmBX+lPML/usi+0MjGXDsSbx84c49TXsvfNu5F77t3DnhfwDnGIncxPZT9AAAAABJRU5ErkJggg==",
66
+ r: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADwAAAA8CAYAAAA6/NlyAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAN1wAADdcBQiibeAAAABl0RVh0U29mdHdhcmUAd3d3Lmlua3NjYXBlLm9yZ5vuPBoAAAMiSURBVGiB7ZqxTxNRHMc/P2jC2dDCYmhtB8cuJgQaWQwFRx1kdHAQHCr/ghOyMLAQBnRhI4Q4MTBoTEzYJDQhONIOGG3aktCQGHFo6HOAMyBX2nv3oHq9T/JLmrv3fvf73nv37t7vV1FK0Ul0tTuAmyYQ7HcCwX4nEOx3AsF+R1uwiFgi8l5ElIMtiYi4aK9E5IuI3Ha4zrSI1Ftt3xSllJYBY4C6wmIu2yvgpcN1ym7aNzPPUzqTyVxwODAwYJ96IiJPbQMeOrVXSpHNZu0+6fN9zvpZAKVSyam9a0LaPRvQ399PpVIBeNvo/BXHXpzZBXp6erAsy0h8xgWvr68zOztLvV6/dM6yLObn5y8dn5mZ4fj4mIODA0efU1NTjjdKB+OCU6kUq6urrvpYlsXi4qLpUBzxLLhcLrO2tmYilpbZ29vT7+xhlX5G81X3um3Zbdyim/EQkTCQB+6Ew2HGx8fp7e3V8tUqtVqNzc1NDg8PAX4AQ0qpgisnuiN8dqP6gM+ASiaTKp/Pq+vi6OhIjYyM2CO7D9zViVl7hG1EpA/4AIwkk0nm5uYIhYyvhSwsLLC1tQXwFRhTSu3r+PEsGP6I/hSNRoeGh4fPf3wYoVqtsru7S6VSKQIPdMUC3qb0X9P7MaAymYzx6ZzNZu2p/MprnCZ3Sz8N+mpE1auDYHvodwLBficQ7HcCwX4nEOx3AsF+p+MEm9yp9wDs7OwwMTFh0C3kcjn7Z8SrL5OCnwOk02kmJycNuoVIJMLKygqcJg4vJ7bdYGjznwJqXV1dant723gCoFQqqWg0aicBHnmJ1fMIi4gFvANCg4ODFAoFCgV3icRWGB0dZWNjA2BZRO4rpb5pOTIwuh+54Xy0iHwHbrVlhIF7AIlEgu7ubgPurqZYLHJycpLgNEX8y21/Y4tWLpcjFouZcteQWCxmVye16Lj3cMcJ1lmkpoE67S+knbclzooKzcx15UFEyoDZ0oIZ4kqpcrNG2lP6/H8u2mluyzod9wxrv5bi8bjJOG4MnRF+zelC8S/xBmjp5WykXPo/0XHPcCDY7wSC/U4g2O/8BtFWHbaczITCAAAAAElFTkSuQmCC",
67
+ b: "data:image/png;base64,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",
68
+ q: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADwAAAA8CAYAAAA6/NlyAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAN1wAADdcBQiibeAAAABl0RVh0U29mdHdhcmUAd3d3Lmlua3NjYXBlLm9yZ5vuPBoAAAnKSURBVGiB7ZprbBTXFcd/dx9erzfZ4MYYamNiW07kxhEP4z6QI9QEIih5qW6wSqSYSEALal6gpk0qqkilbUiiVgYqpYIo6QM1JSZVRKKIqo0iBUg/bBKpihYkEjDYa2MDsr32Pu21Tz/szDDenX0ajEo40tXcnfOfe89/zmPuzF0lInyVxHatDZhtuUH4epcbhK93uSaElVIOpdSt12LuWSWslCpRSj0PnAUuKaU+VErdN5s2ICIzaiRv2v3A20AXsAZQGbB7AAHE6XSK1p8EvpljjgrAMVNbReSKED6kkzC1Axa4m4FRQA4fPixjY2PS0dGh4/+WYezvAUc1TA/wLOC8ZoSBpYB4vV55+eWX5aWXXhKPx6OTuDMFuwKQhoYG0eXYsWM6tt9i7LuBqZRoEOCVa0n494Bs27bNILF161bdsN+mYG8CgoB0dXXJ0NCQPProozr2LxZj/wOQzZs3SygUkq6uLh0bBG66KoQBB3BrFv2zgKxdu9YgvHLlSt2wJy3wv9M9pZTScQmg2QI7BMgnn3xijL1gwQL9mhXF2JuRMFACPA8EtAk+BO6zwH0NCANSW1srtbW1Zi/cnMGgbUBUw/mzGP8WII8//rgMDw/LgQMH9LGHAU8x9mYjnHc1BdYDA6YcOw/8IEtU2ICQhn09C265Nqc5GtJSpWB7LS4uppqWmAx6Nkea3GnC/jcH9l6S1VmAMeBJwD4Te60mKaiamq7TMSdykHjMhJ0A3FmwZcCIhj2YAVNY9bcYoKBqakFYgNYsuM4U7HeyYDeacH/PgCms+mcYxKimNpvNnBNp1TQD4T9lwR0DzBX3J1mwvlyEs9hrWf0zraV/DmwHzk5NTYl2LgZcyIA3xGazAaxTSt2SqlNK2YAlABs3btRPL7MaRym1DGjJNZ8mX2jHSc3eI8C9IvJZGjJHvtmARVy+y4dzeXj16tU6dqsFpgmQ+vp6OXr0aNbCBewH5LbbbssV0l/ncp4fJ8eiJCthE+moifS6bIRNK6LPLDAdgLS3t0soFNLDL61wAV4gpJSSnTt35iL8tsm2/bn45Hw9FJEp4KTp1F6lVHkm/MMPP8zcuXMBliqlmlPUywCWLVuGx+OhsbERkouRxSm4xwDPqlWraGhoyGibUur7QJvplD8Hnbzfh/1g5Oc84JVMQKfTSUdHh/5zc4q6BZKEzUfS83gLwJYtWzIapNWIP5jsAjiRmYImuUJAC5vnAHnwwQfF7Xbr4fNdq5AWETl58qSOCQJlmt6OtgwdGhoSEZHdu3fruNdN47QCUlVVJRMTE/Lmm29ahjTwR0BWrFgh8+bN0zHVMw5pTfwA8XicF154QT+3TylVagVubGyktbUVkrnYrp3+BlBWX19PeXkyIzJ4eCvApk2bcDgclsYope4GfuRyudi1axeDg4MAQRHpy8kkTw/XA1JdXS0TExOyePHitHUtJg+LiLzxxhs65rim3wDIunXrDEw4HBa73W4ULuBWIGa326W3t1dEJM3DgItkTZGdO3fKRx99pOs/zotLnoRtaOE4PDwsPp/PbOgiK8LhcFi8Xq9uzJ1oC/xdu3aJWZqamowVF/BTQB566CFDb0H4V4DcddddMj4+Lq+++qqufy0fLnmFtLlSnzhxgpaWFp566ilIVtjXlFL21GvKyspYv369/nMTKQVLl5YWY23RAvwYMhcrpVQT8JzNZmP//v04nU78fqMw56zQOpl8vfxnQPbt2yciIqFQyLwo2EaKh0VEfD6frr9ESsHSZc+ePTrmC0Dq6upkcnLSysNvAR8D8sQTTxj6e+65R9evvmIhrRH+GSBPP/20Mdn777+vTxayIiwi5nyXurq6NP3x48fNa3B58cUXp+lNhEOA1NTUyOjoqKGvrKzU9QuuNOH7AVm1atU0g0xvJpaE9+7da+geeeSRNL2pcInT6ZTBwcFMhAWQd99919BdvHjRePzly8O67luLHzDnDACdnZ0cOXKEoaGhaefj8ThDQ0M0NzfjcDhIJBIkEgl2795NMBgkHA5js9nweDyUl5dz6dIlmpubOX36NCMjI1RUVOD1eqeN2d7ezgMPPHDZoMu25F5waKI07+UGKqVIfnXwBAIBvvzySz799FP8fj8ffPAB586dAzDIXQ1pampi6dKlLFmyhOXLl+Pz+XjmmWcguXDZmOt6KIAwgFLqFHB7Plin00lZWRkejwePx5PWLykpIRKJEIlECIfDhMPhaf1oNMrU1FS+pu0Qkd/kAywkpAH6gduVUsyfP5+6ujrq6+vTjvPnz8fpdBY4dLqEw2HOnTtHd3c3Z86cmXbs7u5mbGxMh57Ke9B8k12LhC2ArFy5UqamptIK0GzKqVOnxOVyCcndiVus7LVqhRKeB1wEZMeOHbNK0Cyjo6PmFVraPla2VlAOAyil7gX+CTgOHjxIe3u7oUskEvT09BAIBIhGo8TjceLxOLFYzOjrvxOJBC6XC5fLRWlpqdE3//Z6vdTW1lJZWTktItva2njnnXcgWZ2/LSKhvO0vlLBG+klgT0lJCWvWrCEYDNLd3U1fXx+Tk5MFj5dLysrKqK2tpa6ujgsXLuDz+SC5FfMtETldkO3FEAZQSr1HcjFiiN1up7q6mpqaGjwezzTPpfYdDodlBJj7oVCIs2fPMjAwYGXCfSLy74INLyT+ZXo+u9Hyefv27XLmzBmZmJi4KjkbiUTE7/dLY2Ojnrd/LdruYi8UU9Vua2u7KkTNMjo6qpOdwGKjLt9W6HM4VUoBqqqq6O/vp7e312iBQICRkRFisRjRaJRoNDqtn0gkKC0tpbS0FLfbjdvtntafO3cuNTU109qcOXMYGRlxaNE1lt20KxzSmof/BRiL/6vdTPNYfirOp82kaP0CMJZzFRUVLFy40PDGwoULKS8vNzyW2hwOh+Fxs+ej0SiRSISBgQF6e3vp6ekxoiYSiejTXSS5jRIo2PAiPdsATNjtduns7JRIJHKlUjWr9Pf3S2trq+7lXxdle5GEfwnIhg0bZoWoWQ4dOqQTfq8Y2wv+Y5q2IfZDSO4yzLa43W6926CUKrzoFnqHgLWQ3OSKxWKz5lldYrGY3HHHHbqXNxRqfzF/PRwHmJycxO/3mwvJVRcRIRgMsmjRIv1URaFjFPPy4AT+g2m3YM6cOVRXVxutqqqKyspK4zlr1fSlZSwWs2zhcJjz588TCATo6+ujr6+P/v5+xsfH9WnHgRYR+bwgAoWGhHaDbib52fYsEGcWnsGmFgQ+B9qKsb3o57Au2reuCqAaqNJaNcltk1KL5tKODu1mxUxHc4sAg0AfyS8tfUCfiIRnZO9MCf+/yY1/xF/vcoPw9S5fOcL/AzHnOtrDXjPpAAAAAElFTkSuQmCC",
69
+ N: "data:image/png;base64,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",
70
+ K: "data:image/png;base64,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",
71
+ };
72
+
73
+ // Create an object to store the Image objects
74
+ const pieceImages = {};
75
+
76
+ // Function to initialize the piece images
77
+ function initializePieceImages() {
78
+ const pieces = ["P", "R", "N", "B", "Q", "K"];
79
+ pieces.forEach((piece) => {
80
+ const whiteChar = piece.toLowerCase();
81
+ const blackChar = piece.toUpperCase();
82
+ const whiteImg = new Image();
83
+ const blackImg = new Image();
84
+ whiteImg.src = pieceImagesSrc[whiteChar];
85
+ blackImg.src = pieceImagesSrc[blackChar];
86
+ pieceImages[whiteChar] = whiteImg;
87
+ pieceImages[blackChar] = blackImg;
88
+ });
89
+ }
90
+
91
+ initializePieceImages();
92
+
93
+ // Helper function to draw individual pieces
94
+ function drawPiece(c, type, color, x, y, size) {
95
+ const pieceCode = color === "w" ? type.toLowerCase() : type.toUpperCase();
96
+ const img = pieceImages[pieceCode];
97
+
98
+ if (img) {
99
+ c.drawImage(img, x, y, size, size);
100
+ } else {
101
+ // Fallback to drawing a symbol if the image is not loaded
102
+ const pieceSymbols = {
103
+ P: "♙",
104
+ R: "♖",
105
+ N: "♘",
106
+ B: "♗",
107
+ Q: "♕",
108
+ K: "♔",
109
+ p: "♟",
110
+ r: "♜",
111
+ n: "♞",
112
+ b: "♝",
113
+ q: "♛",
114
+ k: "♚",
115
+ };
116
+
117
+ c.font = `${size * 0.8}px Arial`;
118
+ c.textAlign = "center";
119
+ c.textBaseline = "middle";
120
+ c.fillStyle = color === "w" ? "white" : "black";
121
+ c.fillText(pieceSymbols[pieceCode], x + size / 2, y + size / 2);
122
+ }
123
+ }
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: kaggle-environments
3
- Version: 1.15.2
3
+ Version: 1.15.3
4
4
  Summary: Kaggle Environments
5
5
  Home-page: https://github.com/Kaggle/kaggle-environments
6
6
  Author: Kaggle
@@ -1,82 +0,0 @@
1
- async function renderer(context) {
2
- const {
3
- environment,
4
- frame,
5
- height = 400,
6
- parent,
7
- step,
8
- width = 400,
9
- } = context;
10
-
11
- // Common Dimensions.
12
- const canvasSize = Math.min(height, width);
13
- const boardSize = canvasSize * 0.8;
14
- const squareSize = boardSize / 8;
15
- const offset = (canvasSize - boardSize) / 2;
16
-
17
- // Canvas Setup.
18
- let canvas = parent.querySelector("canvas");
19
- if (!canvas) {
20
- canvas = document.createElement("canvas");
21
- parent.appendChild(canvas);
22
- }
23
-
24
- // Canvas setup and reset.
25
- let c = canvas.getContext("2d");
26
- canvas.width = canvasSize;
27
- canvas.height = canvasSize;
28
- c.clearRect(0, 0, canvas.width, canvas.height);
29
- // Draw the Chessboard
30
- for (let row = 0; row < 8; row++) {
31
- for (let col = 0; col < 8; col++) {
32
- const x = col * squareSize + offset;
33
- const y = row * squareSize + offset;
34
-
35
- // Alternate colors for squares
36
- c.fillStyle = (row + col) % 2 === 0 ? "#D18B47" : "#FFCE9E";
37
- c.fillRect(x, y, squareSize, squareSize);
38
- }
39
- }
40
-
41
- // Draw the Pieces
42
- const board = environment.steps[step][0].observation.board;
43
- const chess = new Chess(board);
44
- const boardObj = chess.board();
45
-
46
- for (let row = 0; row < 8; row++) {
47
- for (let col = 0; col < 8; col++) {
48
- const piece = boardObj[row][col];
49
- if (piece) {
50
- const x = col * squareSize + offset;
51
- const y = row * squareSize + offset;
52
- drawPiece(c, piece.type, piece.color, x, y, squareSize);
53
- }
54
- }
55
- }
56
- }
57
-
58
- // Helper function to draw individual pieces (replace with your own images/logic)
59
- function drawPiece(c, type, color, x, y, size) {
60
- const pieceCode = color === "w" ? type.toUpperCase() : type.toLowerCase();
61
- // Unicode characters for chess pieces
62
- const pieceSymbols = {
63
- P: "♙",
64
- R: "♖",
65
- N: "♘",
66
- B: "♗",
67
- Q: "♕",
68
- K: "♔",
69
- p: "♟",
70
- r: "♜",
71
- n: "♞",
72
- b: "♝",
73
- q: "♛",
74
- k: "♚",
75
- };
76
-
77
- c.font = `${size * 0.8}px Arial`;
78
- c.textAlign = "center";
79
- c.textBaseline = "middle";
80
- c.fillStyle = color === "w" ? "white" : "black";
81
- c.fillText(pieceSymbols[pieceCode], x + size / 2, y + size / 2);
82
- }