kaggle-environments 0.2.1__py3-none-any.whl → 1.20.0__py3-none-any.whl

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 (215) hide show
  1. kaggle_environments/__init__.py +49 -13
  2. kaggle_environments/agent.py +177 -124
  3. kaggle_environments/api.py +31 -0
  4. kaggle_environments/core.py +295 -170
  5. kaggle_environments/envs/cabt/cabt.js +164 -0
  6. kaggle_environments/envs/cabt/cabt.json +28 -0
  7. kaggle_environments/envs/cabt/cabt.py +186 -0
  8. kaggle_environments/envs/cabt/cg/__init__.py +0 -0
  9. kaggle_environments/envs/cabt/cg/cg.dll +0 -0
  10. kaggle_environments/envs/cabt/cg/game.py +75 -0
  11. kaggle_environments/envs/cabt/cg/libcg.so +0 -0
  12. kaggle_environments/envs/cabt/cg/sim.py +48 -0
  13. kaggle_environments/envs/cabt/test_cabt.py +120 -0
  14. kaggle_environments/envs/chess/chess.js +4289 -0
  15. kaggle_environments/envs/chess/chess.json +60 -0
  16. kaggle_environments/envs/chess/chess.py +4241 -0
  17. kaggle_environments/envs/chess/test_chess.py +60 -0
  18. kaggle_environments/envs/connectx/connectx.ipynb +3186 -0
  19. kaggle_environments/envs/connectx/connectx.js +1 -1
  20. kaggle_environments/envs/connectx/connectx.json +15 -1
  21. kaggle_environments/envs/connectx/connectx.py +6 -23
  22. kaggle_environments/envs/connectx/test_connectx.py +70 -24
  23. kaggle_environments/envs/football/football.ipynb +75 -0
  24. kaggle_environments/envs/football/football.json +91 -0
  25. kaggle_environments/envs/football/football.py +277 -0
  26. kaggle_environments/envs/football/helpers.py +95 -0
  27. kaggle_environments/envs/football/test_football.py +360 -0
  28. kaggle_environments/envs/halite/__init__.py +0 -0
  29. kaggle_environments/envs/halite/halite.ipynb +44741 -0
  30. kaggle_environments/envs/halite/halite.js +199 -83
  31. kaggle_environments/envs/halite/halite.json +31 -18
  32. kaggle_environments/envs/halite/halite.py +164 -303
  33. kaggle_environments/envs/halite/helpers.py +720 -0
  34. kaggle_environments/envs/halite/test_halite.py +190 -0
  35. kaggle_environments/envs/hungry_geese/__init__.py +0 -0
  36. kaggle_environments/envs/{battlegeese/battlegeese.js → hungry_geese/hungry_geese.js} +38 -22
  37. kaggle_environments/envs/{battlegeese/battlegeese.json → hungry_geese/hungry_geese.json} +21 -14
  38. kaggle_environments/envs/hungry_geese/hungry_geese.py +316 -0
  39. kaggle_environments/envs/hungry_geese/test_hungry_geese.py +0 -0
  40. kaggle_environments/envs/identity/identity.json +6 -5
  41. kaggle_environments/envs/identity/identity.py +15 -2
  42. kaggle_environments/envs/kore_fleets/__init__.py +0 -0
  43. kaggle_environments/envs/kore_fleets/helpers.py +1005 -0
  44. kaggle_environments/envs/kore_fleets/kore_fleets.ipynb +114 -0
  45. kaggle_environments/envs/kore_fleets/kore_fleets.js +658 -0
  46. kaggle_environments/envs/kore_fleets/kore_fleets.json +164 -0
  47. kaggle_environments/envs/kore_fleets/kore_fleets.py +555 -0
  48. kaggle_environments/envs/kore_fleets/starter_bots/java/Bot.java +54 -0
  49. kaggle_environments/envs/kore_fleets/starter_bots/java/README.md +26 -0
  50. kaggle_environments/envs/kore_fleets/starter_bots/java/jars/hamcrest-core-1.3.jar +0 -0
  51. kaggle_environments/envs/kore_fleets/starter_bots/java/jars/junit-4.13.2.jar +0 -0
  52. kaggle_environments/envs/kore_fleets/starter_bots/java/kore/Board.java +518 -0
  53. kaggle_environments/envs/kore_fleets/starter_bots/java/kore/Cell.java +61 -0
  54. kaggle_environments/envs/kore_fleets/starter_bots/java/kore/Configuration.java +24 -0
  55. kaggle_environments/envs/kore_fleets/starter_bots/java/kore/Direction.java +166 -0
  56. kaggle_environments/envs/kore_fleets/starter_bots/java/kore/Fleet.java +72 -0
  57. kaggle_environments/envs/kore_fleets/starter_bots/java/kore/KoreJson.java +97 -0
  58. kaggle_environments/envs/kore_fleets/starter_bots/java/kore/Observation.java +72 -0
  59. kaggle_environments/envs/kore_fleets/starter_bots/java/kore/Pair.java +13 -0
  60. kaggle_environments/envs/kore_fleets/starter_bots/java/kore/Player.java +68 -0
  61. kaggle_environments/envs/kore_fleets/starter_bots/java/kore/Point.java +65 -0
  62. kaggle_environments/envs/kore_fleets/starter_bots/java/kore/Shipyard.java +70 -0
  63. kaggle_environments/envs/kore_fleets/starter_bots/java/kore/ShipyardAction.java +59 -0
  64. kaggle_environments/envs/kore_fleets/starter_bots/java/main.py +73 -0
  65. kaggle_environments/envs/kore_fleets/starter_bots/java/test/BoardTest.java +567 -0
  66. kaggle_environments/envs/kore_fleets/starter_bots/java/test/ConfigurationTest.java +25 -0
  67. kaggle_environments/envs/kore_fleets/starter_bots/java/test/KoreJsonTest.java +62 -0
  68. kaggle_environments/envs/kore_fleets/starter_bots/java/test/ObservationTest.java +46 -0
  69. kaggle_environments/envs/kore_fleets/starter_bots/java/test/PointTest.java +21 -0
  70. kaggle_environments/envs/kore_fleets/starter_bots/java/test/ShipyardTest.java +22 -0
  71. kaggle_environments/envs/kore_fleets/starter_bots/java/test/configuration.json +1 -0
  72. kaggle_environments/envs/kore_fleets/starter_bots/java/test/fullob.json +1 -0
  73. kaggle_environments/envs/kore_fleets/starter_bots/java/test/observation.json +1 -0
  74. kaggle_environments/envs/kore_fleets/starter_bots/python/__init__.py +0 -0
  75. kaggle_environments/envs/kore_fleets/starter_bots/python/main.py +27 -0
  76. kaggle_environments/envs/kore_fleets/starter_bots/ts/Bot.ts +34 -0
  77. kaggle_environments/envs/kore_fleets/starter_bots/ts/DoNothingBot.ts +12 -0
  78. kaggle_environments/envs/kore_fleets/starter_bots/ts/MinerBot.ts +62 -0
  79. kaggle_environments/envs/kore_fleets/starter_bots/ts/README.md +55 -0
  80. kaggle_environments/envs/kore_fleets/starter_bots/ts/interpreter.ts +402 -0
  81. kaggle_environments/envs/kore_fleets/starter_bots/ts/kore/Board.ts +514 -0
  82. kaggle_environments/envs/kore_fleets/starter_bots/ts/kore/Cell.ts +63 -0
  83. kaggle_environments/envs/kore_fleets/starter_bots/ts/kore/Configuration.ts +25 -0
  84. kaggle_environments/envs/kore_fleets/starter_bots/ts/kore/Direction.ts +169 -0
  85. kaggle_environments/envs/kore_fleets/starter_bots/ts/kore/Fleet.ts +76 -0
  86. kaggle_environments/envs/kore_fleets/starter_bots/ts/kore/KoreIO.ts +70 -0
  87. kaggle_environments/envs/kore_fleets/starter_bots/ts/kore/Observation.ts +45 -0
  88. kaggle_environments/envs/kore_fleets/starter_bots/ts/kore/Pair.ts +11 -0
  89. kaggle_environments/envs/kore_fleets/starter_bots/ts/kore/Player.ts +68 -0
  90. kaggle_environments/envs/kore_fleets/starter_bots/ts/kore/Point.ts +65 -0
  91. kaggle_environments/envs/kore_fleets/starter_bots/ts/kore/Shipyard.ts +72 -0
  92. kaggle_environments/envs/kore_fleets/starter_bots/ts/kore/ShipyardAction.ts +58 -0
  93. kaggle_environments/envs/kore_fleets/starter_bots/ts/main.py +73 -0
  94. kaggle_environments/envs/kore_fleets/starter_bots/ts/miner.py +73 -0
  95. kaggle_environments/envs/kore_fleets/starter_bots/ts/package.json +23 -0
  96. kaggle_environments/envs/kore_fleets/starter_bots/ts/test/BoardTest.ts +551 -0
  97. kaggle_environments/envs/kore_fleets/starter_bots/ts/test/ConfigurationTest.ts +16 -0
  98. kaggle_environments/envs/kore_fleets/starter_bots/ts/test/ObservationTest.ts +33 -0
  99. kaggle_environments/envs/kore_fleets/starter_bots/ts/test/PointTest.ts +17 -0
  100. kaggle_environments/envs/kore_fleets/starter_bots/ts/test/ShipyardTest.ts +18 -0
  101. kaggle_environments/envs/kore_fleets/starter_bots/ts/test/configuration.json +1 -0
  102. kaggle_environments/envs/kore_fleets/starter_bots/ts/test/fullob.json +1 -0
  103. kaggle_environments/envs/kore_fleets/starter_bots/ts/test/observation.json +1 -0
  104. kaggle_environments/envs/kore_fleets/starter_bots/ts/tsconfig.json +22 -0
  105. kaggle_environments/envs/kore_fleets/test_kore_fleets.py +331 -0
  106. kaggle_environments/envs/lux_ai_2021/README.md +3 -0
  107. kaggle_environments/envs/lux_ai_2021/__init__.py +0 -0
  108. kaggle_environments/envs/lux_ai_2021/agents.py +11 -0
  109. kaggle_environments/envs/lux_ai_2021/dimensions/754.js +2 -0
  110. kaggle_environments/envs/lux_ai_2021/dimensions/754.js.LICENSE.txt +296 -0
  111. kaggle_environments/envs/lux_ai_2021/dimensions/main.js +1 -0
  112. kaggle_environments/envs/lux_ai_2021/index.html +43 -0
  113. kaggle_environments/envs/lux_ai_2021/lux_ai_2021.json +100 -0
  114. kaggle_environments/envs/lux_ai_2021/lux_ai_2021.py +231 -0
  115. kaggle_environments/envs/lux_ai_2021/test_agents/__init__.py +0 -0
  116. kaggle_environments/envs/lux_ai_2021/test_agents/js_simple/lux/game_constants.js +6 -0
  117. kaggle_environments/envs/lux_ai_2021/test_agents/js_simple/lux/game_constants.json +59 -0
  118. kaggle_environments/envs/lux_ai_2021/test_agents/js_simple/lux/game_objects.js +145 -0
  119. kaggle_environments/envs/lux_ai_2021/test_agents/js_simple/lux/io.js +14 -0
  120. kaggle_environments/envs/lux_ai_2021/test_agents/js_simple/lux/kit.js +209 -0
  121. kaggle_environments/envs/lux_ai_2021/test_agents/js_simple/lux/map.js +107 -0
  122. kaggle_environments/envs/lux_ai_2021/test_agents/js_simple/lux/parser.js +79 -0
  123. kaggle_environments/envs/lux_ai_2021/test_agents/js_simple/main.js +88 -0
  124. kaggle_environments/envs/lux_ai_2021/test_agents/js_simple/main.py +75 -0
  125. kaggle_environments/envs/lux_ai_2021/test_agents/js_simple/simple.tar.gz +0 -0
  126. kaggle_environments/envs/lux_ai_2021/test_agents/python/lux/__init__.py +0 -0
  127. kaggle_environments/envs/lux_ai_2021/test_agents/python/lux/annotate.py +20 -0
  128. kaggle_environments/envs/lux_ai_2021/test_agents/python/lux/constants.py +25 -0
  129. kaggle_environments/envs/lux_ai_2021/test_agents/python/lux/game.py +86 -0
  130. kaggle_environments/envs/lux_ai_2021/test_agents/python/lux/game_constants.json +59 -0
  131. kaggle_environments/envs/lux_ai_2021/test_agents/python/lux/game_constants.py +7 -0
  132. kaggle_environments/envs/lux_ai_2021/test_agents/python/lux/game_map.py +106 -0
  133. kaggle_environments/envs/lux_ai_2021/test_agents/python/lux/game_objects.py +154 -0
  134. kaggle_environments/envs/lux_ai_2021/test_agents/python/random_agent.py +38 -0
  135. kaggle_environments/envs/lux_ai_2021/test_agents/python/simple_agent.py +82 -0
  136. kaggle_environments/envs/lux_ai_2021/test_lux.py +19 -0
  137. kaggle_environments/envs/lux_ai_2021/testing.md +23 -0
  138. kaggle_environments/envs/lux_ai_2021/todo.md.og +18 -0
  139. kaggle_environments/envs/lux_ai_s3/README.md +21 -0
  140. kaggle_environments/envs/lux_ai_s3/agents.py +5 -0
  141. kaggle_environments/envs/lux_ai_s3/index.html +42 -0
  142. kaggle_environments/envs/lux_ai_s3/lux_ai_s3.json +47 -0
  143. kaggle_environments/envs/lux_ai_s3/lux_ai_s3.py +178 -0
  144. kaggle_environments/envs/lux_ai_s3/luxai_s3/__init__.py +1 -0
  145. kaggle_environments/envs/lux_ai_s3/luxai_s3/env.py +819 -0
  146. kaggle_environments/envs/lux_ai_s3/luxai_s3/globals.py +9 -0
  147. kaggle_environments/envs/lux_ai_s3/luxai_s3/params.py +101 -0
  148. kaggle_environments/envs/lux_ai_s3/luxai_s3/profiler.py +141 -0
  149. kaggle_environments/envs/lux_ai_s3/luxai_s3/pygame_render.py +222 -0
  150. kaggle_environments/envs/lux_ai_s3/luxai_s3/spaces.py +27 -0
  151. kaggle_environments/envs/lux_ai_s3/luxai_s3/state.py +464 -0
  152. kaggle_environments/envs/lux_ai_s3/luxai_s3/utils.py +12 -0
  153. kaggle_environments/envs/lux_ai_s3/luxai_s3/wrappers.py +156 -0
  154. kaggle_environments/envs/lux_ai_s3/test_agents/python/agent.py +78 -0
  155. kaggle_environments/envs/lux_ai_s3/test_agents/python/lux/__init__.py +0 -0
  156. kaggle_environments/envs/lux_ai_s3/test_agents/python/lux/kit.py +31 -0
  157. kaggle_environments/envs/lux_ai_s3/test_agents/python/lux/utils.py +17 -0
  158. kaggle_environments/envs/lux_ai_s3/test_agents/python/main.py +66 -0
  159. kaggle_environments/envs/lux_ai_s3/test_lux.py +9 -0
  160. kaggle_environments/envs/mab/__init__.py +0 -0
  161. kaggle_environments/envs/mab/agents.py +12 -0
  162. kaggle_environments/envs/mab/mab.js +100 -0
  163. kaggle_environments/envs/mab/mab.json +74 -0
  164. kaggle_environments/envs/mab/mab.py +146 -0
  165. kaggle_environments/envs/open_spiel/__init__.py +0 -0
  166. kaggle_environments/envs/open_spiel/games/__init__.py +0 -0
  167. kaggle_environments/envs/open_spiel/games/chess/chess.js +441 -0
  168. kaggle_environments/envs/open_spiel/games/chess/image_config.jsonl +20 -0
  169. kaggle_environments/envs/open_spiel/games/chess/openings.jsonl +20 -0
  170. kaggle_environments/envs/open_spiel/games/connect_four/__init__.py +0 -0
  171. kaggle_environments/envs/open_spiel/games/connect_four/connect_four.js +284 -0
  172. kaggle_environments/envs/open_spiel/games/connect_four/connect_four_proxy.py +86 -0
  173. kaggle_environments/envs/open_spiel/games/go/__init__.py +0 -0
  174. kaggle_environments/envs/open_spiel/games/go/go.js +481 -0
  175. kaggle_environments/envs/open_spiel/games/go/go_proxy.py +99 -0
  176. kaggle_environments/envs/open_spiel/games/tic_tac_toe/__init__.py +0 -0
  177. kaggle_environments/envs/open_spiel/games/tic_tac_toe/tic_tac_toe.js +345 -0
  178. kaggle_environments/envs/open_spiel/games/tic_tac_toe/tic_tac_toe_proxy.py +98 -0
  179. kaggle_environments/envs/open_spiel/games/universal_poker/__init__.py +0 -0
  180. kaggle_environments/envs/open_spiel/games/universal_poker/universal_poker.js +431 -0
  181. kaggle_environments/envs/open_spiel/games/universal_poker/universal_poker_proxy.py +159 -0
  182. kaggle_environments/envs/open_spiel/html_playthrough_generator.py +31 -0
  183. kaggle_environments/envs/open_spiel/observation.py +128 -0
  184. kaggle_environments/envs/open_spiel/open_spiel.py +565 -0
  185. kaggle_environments/envs/open_spiel/proxy.py +138 -0
  186. kaggle_environments/envs/open_spiel/test_open_spiel.py +191 -0
  187. kaggle_environments/envs/rps/__init__.py +0 -0
  188. kaggle_environments/envs/rps/agents.py +84 -0
  189. kaggle_environments/envs/rps/helpers.py +25 -0
  190. kaggle_environments/envs/rps/rps.js +117 -0
  191. kaggle_environments/envs/rps/rps.json +63 -0
  192. kaggle_environments/envs/rps/rps.py +90 -0
  193. kaggle_environments/envs/rps/test_rps.py +110 -0
  194. kaggle_environments/envs/rps/utils.py +7 -0
  195. kaggle_environments/envs/tictactoe/test_tictactoe.py +43 -77
  196. kaggle_environments/envs/tictactoe/tictactoe.ipynb +1397 -0
  197. kaggle_environments/envs/tictactoe/tictactoe.json +10 -2
  198. kaggle_environments/envs/tictactoe/tictactoe.py +1 -1
  199. kaggle_environments/errors.py +2 -4
  200. kaggle_environments/helpers.py +377 -0
  201. kaggle_environments/main.py +340 -0
  202. kaggle_environments/schemas.json +23 -18
  203. kaggle_environments/static/player.html +206 -74
  204. kaggle_environments/utils.py +46 -73
  205. kaggle_environments-1.20.0.dist-info/METADATA +25 -0
  206. kaggle_environments-1.20.0.dist-info/RECORD +211 -0
  207. {kaggle_environments-0.2.1.dist-info → kaggle_environments-1.20.0.dist-info}/WHEEL +1 -2
  208. kaggle_environments-1.20.0.dist-info/entry_points.txt +3 -0
  209. kaggle_environments/envs/battlegeese/battlegeese.py +0 -223
  210. kaggle_environments/temp.py +0 -14
  211. kaggle_environments-0.2.1.dist-info/METADATA +0 -393
  212. kaggle_environments-0.2.1.dist-info/RECORD +0 -32
  213. kaggle_environments-0.2.1.dist-info/entry_points.txt +0 -3
  214. kaggle_environments-0.2.1.dist-info/top_level.txt +0 -1
  215. {kaggle_environments-0.2.1.dist-info → kaggle_environments-1.20.0.dist-info/licenses}/LICENSE +0 -0
@@ -0,0 +1,360 @@
1
+ env = None
2
+
3
+ # Temporarily disable these tests until we can fix the gfootball env
4
+ """
5
+ def before_each(state=None, configuration=None, info=None):
6
+ if info is None:
7
+ info = {}
8
+ global env
9
+ steps = [] if state == None else [state]
10
+ env = make("football", steps=steps,
11
+ configuration=configuration, info=info, debug=True)
12
+
13
+
14
+ def test_to_json():
15
+ before_each()
16
+ json = env.toJSON()
17
+ assert json["name"] == "football"
18
+ assert json["rewards"] == [0.0, 0.0]
19
+ assert json["statuses"] == ["ACTIVE", "ACTIVE"]
20
+ assert json["specification"]["reward"]["type"] == ["number", "null"]
21
+
22
+ def clear_players_raw(state):
23
+ state = copy.deepcopy(state)
24
+ for entry in state:
25
+ entry.observation.players_raw = []
26
+ return state
27
+
28
+
29
+ @helpers.human_readable_agent
30
+ def human_readable_agent(obs):
31
+ if Action.Sprint not in obs['sticky_actions']:
32
+ return Action.Sprint
33
+ controlled_player_pos = obs['left_team'][obs['active']]
34
+ if obs['ball_owned_player'] == obs['active'] and obs['ball_owned_team'] == 0:
35
+ if controlled_player_pos[0] > 0.5:
36
+ return Action.Shot
37
+ return Action.Right
38
+ else:
39
+ return Action.Slide
40
+
41
+
42
+ def test_single_agent():
43
+ before_each(configuration={"team_1": 1, "team_2": 0, "scenario_name": "11_vs_11_stochastic"})
44
+ x = env.reset()
45
+
46
+ assert clear_players_raw(env.reset()) == [
47
+ {
48
+ "action": [],
49
+ "status": "ACTIVE",
50
+ "reward": 0,
51
+ "info": {},
52
+ "observation": {
53
+ "remainingOverageTime": 60,
54
+ "controlled_players": 1,
55
+ "players_raw": [],
56
+ "step": 0
57
+ }
58
+ },
59
+ {
60
+ "action": [],
61
+ "status": "ACTIVE",
62
+ "reward": 0,
63
+ "info": {},
64
+ "observation": {
65
+ "remainingOverageTime": 60,
66
+ "controlled_players": 0,
67
+ "players_raw": []
68
+ }
69
+ }
70
+ ]
71
+
72
+ # Correct step from agent 0.
73
+ assert clear_players_raw(env.step([[0],[]])) == [
74
+ {
75
+ "action": [0],
76
+ "status": "ACTIVE",
77
+ "reward": 0,
78
+ "info": {},
79
+ "observation": {
80
+ "remainingOverageTime": 60,
81
+ "controlled_players": 1,
82
+ "players_raw": [],
83
+ "step": 1
84
+ }
85
+ },
86
+ {
87
+ "action": [],
88
+ "status": "ACTIVE",
89
+ "reward": 0,
90
+ "info": {},
91
+ "observation": {
92
+ "remainingOverageTime": 60,
93
+ "controlled_players": 0,
94
+ "players_raw": []
95
+ }
96
+ }
97
+ ]
98
+
99
+ # Incorrect step from agent 1 (it is forbidden to act in this scenario,
100
+ # as 'team_2' players is set to 0).
101
+ assert clear_players_raw(env.step([[0],[1]])) == [
102
+ {
103
+ "action": [0],
104
+ "status": "DONE",
105
+ "reward": 100,
106
+ 'info': {'debug_info': 'Opponent forfeited. You win.'},
107
+ "observation": {
108
+ "remainingOverageTime": 60,
109
+ "controlled_players": 1,
110
+ "players_raw": [],
111
+ "step": 2
112
+ }
113
+ },
114
+ {
115
+ "action": [1],
116
+ "status": "INVALID",
117
+ "reward": None,
118
+ 'info': {'debug_info': 'Invalid number of actions provided: Expected 0, got 1.'},
119
+ "observation": {
120
+ "remainingOverageTime": 60,
121
+ "controlled_players": 0,
122
+ "players_raw": []
123
+ }
124
+ }
125
+ ]
126
+
127
+ # Incorrect step from agent 1 (out of range).
128
+ before_each(configuration={"team_1": 1, "team_2": 0, "scenario_name": "11_vs_11_stochastic", "save_video": True})
129
+ x = env.reset()
130
+ assert clear_players_raw(env.step([[100],[]])) == [
131
+ {
132
+ "action": [100],
133
+ "status": "INVALID",
134
+ "reward": None,
135
+ 'info': {'debug_info': 'Invalid action provided: [100].'},
136
+ "observation": {
137
+ "remainingOverageTime": 60,
138
+ "controlled_players": 1,
139
+ "players_raw": [],
140
+ "step": 1
141
+ }
142
+ },
143
+ {
144
+ "action": [],
145
+ "status": "DONE",
146
+ "reward": 100,
147
+ 'info': {'debug_info': 'Opponent forfeited. You win.'},
148
+ "observation": {
149
+ "remainingOverageTime": 60,
150
+ "controlled_players": 0,
151
+ "players_raw": []
152
+ }
153
+ }
154
+ ]
155
+ # We can render even an "empty" episode...
156
+ env.render(mode="human", width=800, height=600)
157
+
158
+ # Incorrect step from agent 1 (not a list).
159
+ before_each(configuration={"team_1": 1, "team_2": 0, "scenario_name": "11_vs_11_stochastic"})
160
+ x = env.reset()
161
+ assert clear_players_raw(env.step([100, []])) == [
162
+ {
163
+ "action": [],
164
+ "status": "INVALID",
165
+ "reward": None,
166
+ 'info': {'debug_info': 'Invalid number of actions provided: Expected 1, got 0.'},
167
+ "observation": {
168
+ "remainingOverageTime": 60,
169
+ "controlled_players": 1,
170
+ "players_raw": [],
171
+ "step": 1
172
+ }
173
+ },
174
+ {
175
+ "action": [],
176
+ "status": "DONE",
177
+ "reward": 100,
178
+ 'info': {'debug_info': 'Opponent forfeited. You win.'},
179
+ "observation": {
180
+ "remainingOverageTime": 60,
181
+ "controlled_players": 0,
182
+ "players_raw": []
183
+ }
184
+ }
185
+ ]
186
+
187
+
188
+ def test_multi_agent():
189
+ before_each(configuration={"team_1": 2, "team_2": 1, "scenario_name": "11_vs_11_stochastic"})
190
+ x = env.reset()
191
+
192
+ assert clear_players_raw(env.reset()) == [
193
+ {
194
+ "action": [],
195
+ "status": "ACTIVE",
196
+ "reward": 0,
197
+ "info": {},
198
+ "observation": {
199
+ "remainingOverageTime": 60,
200
+ "controlled_players": 2,
201
+ "players_raw": [],
202
+ "step": 0
203
+ }
204
+ },
205
+ {
206
+ "action": [],
207
+ "status": "ACTIVE",
208
+ "reward": 0,
209
+ "info": {},
210
+ "observation": {
211
+ "remainingOverageTime": 60,
212
+ "controlled_players": 1,
213
+ "players_raw": []
214
+ }
215
+ }
216
+ ]
217
+
218
+ # Correct step from both agents.
219
+ assert clear_players_raw(env.step([[0, 2],[4]])) == [
220
+ {
221
+ "action": [0, 2],
222
+ "status": "ACTIVE",
223
+ "reward": 0,
224
+ "info": {},
225
+ "observation": {
226
+ "remainingOverageTime": 60,
227
+ "controlled_players": 2,
228
+ "players_raw": [],
229
+ "step": 1
230
+ }
231
+ },
232
+ {
233
+ "action": [4],
234
+ "status": "ACTIVE",
235
+ "reward": 0,
236
+ "info": {},
237
+ "observation": {
238
+ "remainingOverageTime": 60,
239
+ "controlled_players": 1,
240
+ "players_raw": []
241
+ }
242
+ }
243
+ ]
244
+
245
+ # Incorrect step from agent 1 - too many actions passed.
246
+ assert clear_players_raw(env.step([[0, 1, 2], [1]])) == [
247
+ {
248
+ "action": [0, 1, 2],
249
+ "status": "INVALID",
250
+ "reward": None,
251
+ 'info': {'debug_info': 'Invalid number of actions provided: Expected 2, got 3.'},
252
+ "observation": {
253
+ "remainingOverageTime": 60,
254
+ "controlled_players": 2,
255
+ "players_raw": [],
256
+ "step": 2
257
+ }
258
+ },
259
+ {
260
+ "action": [1],
261
+ "status": "DONE",
262
+ "reward": 100,
263
+ 'info': {'debug_info': 'Opponent forfeited. You win.'},
264
+ "observation": {
265
+ "remainingOverageTime": 60,
266
+ "controlled_players": 1,
267
+ "players_raw": []
268
+ }
269
+ }
270
+ ]
271
+
272
+ def test_deadline():
273
+ before_each(configuration={"team_1": 1, "team_2": 0, "scenario_name": "11_vs_11_stochastic"})
274
+ x = env.reset()
275
+
276
+ assert clear_players_raw(env.reset()) == [
277
+ {
278
+ "action": [],
279
+ "status": "ACTIVE",
280
+ "reward": 0,
281
+ "info": {},
282
+ "observation": {
283
+ "remainingOverageTime": 60,
284
+ "controlled_players": 1,
285
+ "players_raw": [],
286
+ "step": 0
287
+ }
288
+ },
289
+ {
290
+ "action": [],
291
+ "status": "ACTIVE",
292
+ "reward": 0,
293
+ "info": {},
294
+ "observation": {
295
+ "remainingOverageTime": 60,
296
+ "controlled_players": 0,
297
+ "players_raw": []
298
+ }
299
+ }
300
+ ]
301
+
302
+ # Correct step from agent 0.
303
+ assert clear_players_raw(env.step([DeadlineExceeded(),[]])) == [
304
+ {
305
+ "action": None,
306
+ "status": "TIMEOUT",
307
+ "reward": None,
308
+ "info": {},
309
+ "observation": {
310
+ "remainingOverageTime": 60,
311
+ "controlled_players": 1,
312
+ "players_raw": [],
313
+ "step": 1
314
+ }
315
+ },
316
+ {
317
+ "action": [],
318
+ "status": "DONE",
319
+ "reward": 100,
320
+ "info": {'debug_info': 'Opponent forfeited. You win.'},
321
+ "observation": {
322
+ "remainingOverageTime": 60,
323
+ "controlled_players": 0,
324
+ "players_raw": []
325
+ }
326
+ }
327
+ ]
328
+
329
+
330
+ def test_render():
331
+ video_file = "/tmp/video.webm"
332
+ before_each(configuration={"team_1": 1, "team_2": 1, "scenario_name": "tests.penalty", "save_video": True},
333
+ info={"LiveVideoPath": video_file})
334
+ env.step([[0],[0]])
335
+ env.render(mode="human", width=800, height=600)
336
+ output = env.step([[0],[0]])
337
+ env.render(mode="human", width=800, height=600)
338
+ while output[0]['status'] == 'ACTIVE':
339
+ output = env.step([[0],[0]])
340
+ assert output[0]['reward'] == 0
341
+ assert output[1]['reward'] == 0
342
+ assert output[0]['status'] == "DONE"
343
+ assert output[1]['status'] == "DONE"
344
+ assert os.path.isfile(video_file)
345
+
346
+
347
+ def test_human_readable_agent():
348
+ before_each(configuration={"team_1": 1, "team_2": 1, "scenario_name": "tests.penalty"})
349
+ action = [0]
350
+ for _ in range(10):
351
+ obs = env.step([action, [0]])
352
+ action = human_readable_agent(obs[0]['observation'])
353
+
354
+
355
+ def test_score():
356
+ before_each(configuration={"team_1": 1, "team_2": 1, "scenario_name": "tests.goal_test", "save_video": True, "episode_number": 0})
357
+ res = env.run(["run_right", "run_right"])
358
+ assert res[-1][0]['reward'] == -1
359
+ assert res[-1][1]['reward'] == 1
360
+ """
File without changes