kaggle-environments 1.16.11__py2.py3-none-any.whl → 1.17.3__py2.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.
- kaggle_environments/__init__.py +18 -8
- kaggle_environments/envs/lux_ai_s3/luxai_s3/env.py +14 -7
- kaggle_environments/envs/lux_ai_s3/luxai_s3/params.py +5 -4
- kaggle_environments/envs/lux_ai_s3/luxai_s3/state.py +33 -17
- kaggle_environments/envs/open_spiel/__init__.py +0 -0
- kaggle_environments/envs/open_spiel/games/__init__.py +0 -0
- kaggle_environments/envs/open_spiel/games/connect_four/__init__.py +0 -0
- kaggle_environments/envs/open_spiel/games/connect_four/connect_four.js +296 -0
- kaggle_environments/envs/open_spiel/games/connect_four/connect_four_proxy.py +86 -0
- kaggle_environments/envs/open_spiel/games/connect_four/connect_four_proxy_test.py +57 -0
- kaggle_environments/envs/open_spiel/observation.py +133 -0
- kaggle_environments/envs/open_spiel/open_spiel.py +416 -0
- kaggle_environments/envs/open_spiel/proxy.py +139 -0
- kaggle_environments/envs/open_spiel/proxy_test.py +64 -0
- kaggle_environments/envs/open_spiel/test_open_spiel.py +18 -0
- {kaggle_environments-1.16.11.dist-info → kaggle_environments-1.17.3.dist-info}/METADATA +25 -13
- {kaggle_environments-1.16.11.dist-info → kaggle_environments-1.17.3.dist-info}/RECORD +21 -10
- {kaggle_environments-1.16.11.dist-info → kaggle_environments-1.17.3.dist-info}/WHEEL +1 -1
- {kaggle_environments-1.16.11.dist-info → kaggle_environments-1.17.3.dist-info}/entry_points.txt +0 -0
- {kaggle_environments-1.16.11.dist-info → kaggle_environments-1.17.3.dist-info/licenses}/LICENSE +0 -0
- {kaggle_environments-1.16.11.dist-info → kaggle_environments-1.17.3.dist-info}/top_level.txt +0 -0
|
@@ -0,0 +1,139 @@
|
|
|
1
|
+
"""OpenSpiel Game and State proxies.
|
|
2
|
+
|
|
3
|
+
Proxies that act as a pyspiel.State/Game by wrapping the original object and
|
|
4
|
+
forwarding calls. Subclassing allows to override specific methods or add
|
|
5
|
+
additional functionality, or payload to the State/Game object.
|
|
6
|
+
|
|
7
|
+
WARNING: Serialization of proxy games and states is not supported.
|
|
8
|
+
"""
|
|
9
|
+
|
|
10
|
+
from typing import Any
|
|
11
|
+
|
|
12
|
+
from . import observation
|
|
13
|
+
import pyspiel
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
class State(pyspiel.State):
|
|
17
|
+
"""Base class for a pyspiel.State proxy."""
|
|
18
|
+
|
|
19
|
+
def __init__(self, wrapped: pyspiel.State, game: 'Game'):
|
|
20
|
+
super().__init__(game)
|
|
21
|
+
self.__wrapped__ = wrapped
|
|
22
|
+
|
|
23
|
+
def current_player(self) -> int:
|
|
24
|
+
return self.__wrapped__.current_player()
|
|
25
|
+
|
|
26
|
+
def _legal_actions(self, player: int) -> list[int]:
|
|
27
|
+
return self.__wrapped__.legal_actions(player)
|
|
28
|
+
|
|
29
|
+
def _apply_action(self, action: int) -> None:
|
|
30
|
+
return self.__wrapped__.apply_action(action)
|
|
31
|
+
|
|
32
|
+
def _action_to_string(self, player: int, action: int) -> str:
|
|
33
|
+
return self.__wrapped__.action_to_string(player, action)
|
|
34
|
+
|
|
35
|
+
def chance_outcomes(self) -> list[tuple[int, float]]:
|
|
36
|
+
return self.__wrapped__.chance_outcomes()
|
|
37
|
+
|
|
38
|
+
def is_terminal(self) -> bool:
|
|
39
|
+
return self.__wrapped__.is_terminal()
|
|
40
|
+
|
|
41
|
+
def returns(self) -> list[float]:
|
|
42
|
+
return self.__wrapped__.returns()
|
|
43
|
+
|
|
44
|
+
def rewards(self) -> list[float]:
|
|
45
|
+
return self.__wrapped__.rewards()
|
|
46
|
+
|
|
47
|
+
def __str__(self) -> str:
|
|
48
|
+
return self.__wrapped__.__str__()
|
|
49
|
+
|
|
50
|
+
def to_string(self) -> str:
|
|
51
|
+
return self.__wrapped__.to_string()
|
|
52
|
+
|
|
53
|
+
def __getattr__(self, name: str) -> Any:
|
|
54
|
+
# Escape hatch when proxying Python implementations that have attributes
|
|
55
|
+
# that need to be accessed, e.g. TicTacToeState.board from its observer.
|
|
56
|
+
return object.__getattribute__(self.__wrapped__, name)
|
|
57
|
+
|
|
58
|
+
|
|
59
|
+
class Game(pyspiel.Game):
|
|
60
|
+
"""Base class for a pyspiel.Game proxy."""
|
|
61
|
+
|
|
62
|
+
def __init__(self, wrapped: pyspiel.Game, **kwargs):
|
|
63
|
+
# TODO(hennes): Add serialization.
|
|
64
|
+
game_info = pyspiel.GameInfo(
|
|
65
|
+
num_distinct_actions=wrapped.num_distinct_actions(),
|
|
66
|
+
max_chance_outcomes=wrapped.max_chance_outcomes(),
|
|
67
|
+
num_players=wrapped.num_players(),
|
|
68
|
+
min_utility=wrapped.min_utility(),
|
|
69
|
+
max_utility=wrapped.max_utility(),
|
|
70
|
+
utility_sum=wrapped.utility_sum(),
|
|
71
|
+
max_game_length=wrapped.max_game_length(),
|
|
72
|
+
)
|
|
73
|
+
super().__init__(
|
|
74
|
+
_game_type(wrapped.get_type(), **kwargs),
|
|
75
|
+
game_info,
|
|
76
|
+
wrapped.get_parameters(),
|
|
77
|
+
)
|
|
78
|
+
self.__wrapped__ = wrapped
|
|
79
|
+
|
|
80
|
+
def new_initial_state(self, from_string: str | None = None) -> State:
|
|
81
|
+
args = () if from_string is None else (from_string)
|
|
82
|
+
return State(wrapped=self.__wrapped__.new_initial_state(*args), game=self)
|
|
83
|
+
|
|
84
|
+
def max_chance_nodes_in_history(self) -> int:
|
|
85
|
+
return self.__wrapped__.max_chance_nodes_in_history()
|
|
86
|
+
|
|
87
|
+
def make_py_observer(
|
|
88
|
+
self,
|
|
89
|
+
iig_obs_type: pyspiel.IIGObservationType | None = None,
|
|
90
|
+
params: dict[str, Any] | None = None,
|
|
91
|
+
) -> pyspiel.Observer:
|
|
92
|
+
return _Observation(
|
|
93
|
+
observation.make_observation(self.__wrapped__, iig_obs_type, params)
|
|
94
|
+
)
|
|
95
|
+
|
|
96
|
+
|
|
97
|
+
class _Observation(observation._Observation): # pylint: disable=protected-access
|
|
98
|
+
"""_Observation proxy that passes the wrapped state to the observation."""
|
|
99
|
+
|
|
100
|
+
def __init__(self, wrapped: observation._Observation):
|
|
101
|
+
self.__wrapped__ = wrapped
|
|
102
|
+
self.dict = self.__wrapped__.dict
|
|
103
|
+
self.tensor = self.__wrapped__.tensor
|
|
104
|
+
|
|
105
|
+
def set_from(self, state: State, player: int):
|
|
106
|
+
self.__wrapped__.set_from(state.__wrapped__, player)
|
|
107
|
+
|
|
108
|
+
def string_from(self, state: State, player: int) -> str | None:
|
|
109
|
+
return self.__wrapped__.string_from(state.__wrapped__, player)
|
|
110
|
+
|
|
111
|
+
def compress(self) -> Any:
|
|
112
|
+
return self.__wrapped__.compress()
|
|
113
|
+
|
|
114
|
+
def decompress(self, compressed_observation: Any):
|
|
115
|
+
self.__wrapped__.decompress(compressed_observation)
|
|
116
|
+
|
|
117
|
+
|
|
118
|
+
def _game_type(game_type: pyspiel.GameType, **overrides) -> pyspiel.GameType:
|
|
119
|
+
"""Returns a GameType with the given overrides."""
|
|
120
|
+
kwargs = dict(
|
|
121
|
+
short_name=game_type.short_name,
|
|
122
|
+
long_name=game_type.long_name,
|
|
123
|
+
dynamics=game_type.dynamics,
|
|
124
|
+
chance_mode=game_type.chance_mode,
|
|
125
|
+
information=game_type.information,
|
|
126
|
+
utility=game_type.utility,
|
|
127
|
+
reward_model=game_type.reward_model,
|
|
128
|
+
max_num_players=game_type.max_num_players,
|
|
129
|
+
min_num_players=game_type.min_num_players,
|
|
130
|
+
provides_information_state_string=game_type.provides_information_state_string,
|
|
131
|
+
provides_information_state_tensor=game_type.provides_information_state_tensor,
|
|
132
|
+
provides_observation_string=game_type.provides_observation_string,
|
|
133
|
+
provides_observation_tensor=game_type.provides_observation_tensor,
|
|
134
|
+
parameter_specification=game_type.parameter_specification,
|
|
135
|
+
default_loadable=game_type.default_loadable,
|
|
136
|
+
provides_factored_observation_string=game_type.provides_factored_observation_string,
|
|
137
|
+
)
|
|
138
|
+
kwargs.update(**overrides)
|
|
139
|
+
return pyspiel.GameType(**kwargs)
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
"""Proxy tests."""
|
|
2
|
+
|
|
3
|
+
from . import proxy
|
|
4
|
+
from absl.testing import absltest
|
|
5
|
+
from absl.testing import parameterized
|
|
6
|
+
import pyspiel
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
def make_game() -> proxy.Game:
|
|
10
|
+
return proxy.Game(pyspiel.load_game('tic_tac_toe()'))
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
class TestState(proxy.State):
|
|
14
|
+
|
|
15
|
+
def __str__(self) -> str:
|
|
16
|
+
return 'TestState: ' + super().__str__()
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
class TestGame(proxy.Game):
|
|
20
|
+
|
|
21
|
+
def new_initial_state(self, *args, **kwargs) -> TestState:
|
|
22
|
+
return TestState(
|
|
23
|
+
self.__wrapped__.new_initial_state(*args, **kwargs), game=self
|
|
24
|
+
)
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
class ProxiesTest(parameterized.TestCase):
|
|
28
|
+
|
|
29
|
+
def test_types(self):
|
|
30
|
+
game = make_game()
|
|
31
|
+
self.assertIsInstance(game, pyspiel.Game)
|
|
32
|
+
state = game.new_initial_state()
|
|
33
|
+
self.assertIsInstance(state, pyspiel.State)
|
|
34
|
+
|
|
35
|
+
def test_get_game(self):
|
|
36
|
+
game = make_game()
|
|
37
|
+
state = game.new_initial_state()
|
|
38
|
+
self.assertIsInstance(state.get_game(), proxy.Game)
|
|
39
|
+
new_state = state.get_game().new_initial_state()
|
|
40
|
+
self.assertIsInstance(new_state, proxy.State)
|
|
41
|
+
self.assertIsNot(new_state, state)
|
|
42
|
+
|
|
43
|
+
def test_clone(self):
|
|
44
|
+
game = make_game()
|
|
45
|
+
state = game.new_initial_state()
|
|
46
|
+
state.apply_action(state.legal_actions()[0])
|
|
47
|
+
clone = state.clone()
|
|
48
|
+
self.assertIsInstance(clone, proxy.State)
|
|
49
|
+
self.assertEqual(state.history(), clone.history())
|
|
50
|
+
clone.apply_action(clone.legal_actions()[0])
|
|
51
|
+
self.assertEqual(state.history(), clone.history()[:-1])
|
|
52
|
+
|
|
53
|
+
def test_subclassing(self):
|
|
54
|
+
game = TestGame(pyspiel.load_game('tic_tac_toe()'))
|
|
55
|
+
state = game.new_initial_state()
|
|
56
|
+
self.assertIsInstance(state, TestState)
|
|
57
|
+
self.assertIsInstance(state.clone(), TestState)
|
|
58
|
+
self.assertIsInstance(state.get_game(), TestGame)
|
|
59
|
+
wrapped_state = state.__wrapped__ # type: ignore
|
|
60
|
+
self.assertEqual(str(state), 'TestState: ' + str(wrapped_state))
|
|
61
|
+
|
|
62
|
+
|
|
63
|
+
if __name__ == '__main__':
|
|
64
|
+
absltest.main()
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import sys
|
|
2
|
+
from kaggle_environments import make
|
|
3
|
+
from . import open_spiel as open_spiel_env
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
def test_envs_load():
|
|
7
|
+
envs = open_spiel_env._register_open_spiel_envs()
|
|
8
|
+
print(len(envs))
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
def test_tic_tac_toe_playthrough():
|
|
12
|
+
envs = open_spiel_env._register_open_spiel_envs(["tic_tac_toe"])
|
|
13
|
+
print(envs)
|
|
14
|
+
env = make("open_spiel_tic_tac_toe", debug=True)
|
|
15
|
+
env.run(["random", "random"])
|
|
16
|
+
json = env.toJSON()
|
|
17
|
+
assert json["name"] == "open_spiel_tic_tac_toe"
|
|
18
|
+
assert all([status == "DONE" for status in json["statuses"]])
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
Metadata-Version: 2.
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
2
|
Name: kaggle-environments
|
|
3
|
-
Version: 1.
|
|
3
|
+
Version: 1.17.3
|
|
4
4
|
Summary: Kaggle Environments
|
|
5
5
|
Home-page: https://github.com/Kaggle/kaggle-environments
|
|
6
6
|
Author: Kaggle
|
|
@@ -10,17 +10,29 @@ Keywords: Kaggle
|
|
|
10
10
|
Requires-Python: >=3.8
|
|
11
11
|
Description-Content-Type: text/markdown
|
|
12
12
|
License-File: LICENSE
|
|
13
|
-
Requires-Dist:
|
|
14
|
-
Requires-Dist: Flask
|
|
15
|
-
Requires-Dist:
|
|
16
|
-
Requires-Dist:
|
|
17
|
-
Requires-Dist:
|
|
18
|
-
Requires-Dist:
|
|
19
|
-
Requires-Dist:
|
|
20
|
-
Requires-Dist:
|
|
21
|
-
Requires-Dist:
|
|
22
|
-
Requires-Dist:
|
|
23
|
-
Requires-Dist:
|
|
13
|
+
Requires-Dist: jsonschema>=3.0.1
|
|
14
|
+
Requires-Dist: Flask>=1.1.2
|
|
15
|
+
Requires-Dist: numpy>=1.19.5
|
|
16
|
+
Requires-Dist: requests>=2.25.1
|
|
17
|
+
Requires-Dist: pettingzoo==1.24.0
|
|
18
|
+
Requires-Dist: gymnasium==0.29.0
|
|
19
|
+
Requires-Dist: stable-baselines3==2.1.0
|
|
20
|
+
Requires-Dist: transformers>=4.33.1
|
|
21
|
+
Requires-Dist: scipy>=1.11.2
|
|
22
|
+
Requires-Dist: shimmy>=1.2.1
|
|
23
|
+
Requires-Dist: Chessnut>=0.4.1
|
|
24
|
+
Requires-Dist: open_spiel>=1.5.0
|
|
25
|
+
Dynamic: author
|
|
26
|
+
Dynamic: author-email
|
|
27
|
+
Dynamic: description
|
|
28
|
+
Dynamic: description-content-type
|
|
29
|
+
Dynamic: home-page
|
|
30
|
+
Dynamic: keywords
|
|
31
|
+
Dynamic: license
|
|
32
|
+
Dynamic: license-file
|
|
33
|
+
Dynamic: requires-dist
|
|
34
|
+
Dynamic: requires-python
|
|
35
|
+
Dynamic: summary
|
|
24
36
|
|
|
25
37
|
# [<img src="https://kaggle.com/static/images/site-logo.png" height="50" style="margin-bottom:-15px" />](https://kaggle.com) Environments
|
|
26
38
|
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
kaggle_environments/__init__.py,sha256=
|
|
1
|
+
kaggle_environments/__init__.py,sha256=rkTFEuN8ZVrkb3vR3ravIenS9gIZBIjcnlUoA_zi7ic,2189
|
|
2
2
|
kaggle_environments/agent.py,sha256=j9rLnCK_Gy0eRIuvlJ9vcMh3vxn-Wvu-pjCpannOolc,6703
|
|
3
3
|
kaggle_environments/api.py,sha256=eLBKqr11Ku4tdsMUdUqy74FIVEA_hdV3_QUpX84x3Z8,798
|
|
4
4
|
kaggle_environments/core.py,sha256=IrEkN9cIA2djBAxI8Sz1GRpGNKjhqbnBdV6irAeTm8Q,27851
|
|
@@ -169,13 +169,13 @@ kaggle_environments/envs/lux_ai_s3/lux_ai_s3.json,sha256=wgEUeFM0-XsUZRGNLd2OMrb
|
|
|
169
169
|
kaggle_environments/envs/lux_ai_s3/lux_ai_s3.py,sha256=8JT30NPZN5R__azfk0PDXeXlKw6S0KqxIbllVw8RYvM,5815
|
|
170
170
|
kaggle_environments/envs/lux_ai_s3/test_lux.py,sha256=cfiEv4re7pvZ9TeG9HdvGOhHb0da272w8CDUSZn5bpU,273
|
|
171
171
|
kaggle_environments/envs/lux_ai_s3/luxai_s3/__init__.py,sha256=2hwayynTiOtSr3V1-gjZfosn0Y3sOSKvNrYHhHeAyhY,28
|
|
172
|
-
kaggle_environments/envs/lux_ai_s3/luxai_s3/env.py,sha256=
|
|
172
|
+
kaggle_environments/envs/lux_ai_s3/luxai_s3/env.py,sha256=zBsmV-G1bfIeyJC8eOq3VTlXXhZSm4uOWh6NG0hlpGk,40286
|
|
173
173
|
kaggle_environments/envs/lux_ai_s3/luxai_s3/globals.py,sha256=cDPe9qJirhADf9V5Geftir8ccdXWSmGsmUD8KskJ8JU,281
|
|
174
|
-
kaggle_environments/envs/lux_ai_s3/luxai_s3/params.py,sha256
|
|
174
|
+
kaggle_environments/envs/lux_ai_s3/luxai_s3/params.py,sha256=-lMOd8OeRD_6jAINOByezPGoCSZVZVEIRSxj2BMM3ns,3179
|
|
175
175
|
kaggle_environments/envs/lux_ai_s3/luxai_s3/profiler.py,sha256=DLwP5zAAyP-eNp6gtr81ketNvHQIfWJr-KLfJUwMiPo,5136
|
|
176
176
|
kaggle_environments/envs/lux_ai_s3/luxai_s3/pygame_render.py,sha256=ZMnGPFtDA8ysjuyW24ySwlnoQQp7Q8bIimIIVXjWD9Y,10843
|
|
177
177
|
kaggle_environments/envs/lux_ai_s3/luxai_s3/spaces.py,sha256=BpEUN5NlgfBRnFglWZGxOx-pMtn0oAhYL3v7tON6UA0,951
|
|
178
|
-
kaggle_environments/envs/lux_ai_s3/luxai_s3/state.py,sha256=
|
|
178
|
+
kaggle_environments/envs/lux_ai_s3/luxai_s3/state.py,sha256=i2WO12f_D9n5z77GgdVxV_JwKCaXnmEfujkvsYPVA9U,18169
|
|
179
179
|
kaggle_environments/envs/lux_ai_s3/luxai_s3/utils.py,sha256=v_wveZrwyRjkhRHC6a8_dFx5RlTBLrpOOpTPq79LC0k,267
|
|
180
180
|
kaggle_environments/envs/lux_ai_s3/luxai_s3/wrappers.py,sha256=ec6VtDyOeKHa2khSZtcdIQ3JBl6J5IgPGvlVBLdrzyY,6282
|
|
181
181
|
kaggle_environments/envs/lux_ai_s3/test_agents/python/agent.py,sha256=bL6ma6dax2w7KIE1YOS4h27xG_plu1eeo876mssAX5Q,3985
|
|
@@ -188,6 +188,17 @@ kaggle_environments/envs/mab/agents.py,sha256=vPHNN5oRcbTG3FaW9iYmoeQjufXFJMjYOL
|
|
|
188
188
|
kaggle_environments/envs/mab/mab.js,sha256=zsKGVRL9qFyUoukRj-ES5dOh8Wig7UzNf0z5Potw84E,3256
|
|
189
189
|
kaggle_environments/envs/mab/mab.json,sha256=VAlpjJ7_ytYO648swQW_ICjC5JKTAdmnShuGggeSX4A,2077
|
|
190
190
|
kaggle_environments/envs/mab/mab.py,sha256=bkSIxkstS98Vr3eOA9kxQkseDqa1MlG2Egfzeaf-8EA,5241
|
|
191
|
+
kaggle_environments/envs/open_spiel/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
192
|
+
kaggle_environments/envs/open_spiel/observation.py,sha256=yrJ_iZ9sBUTB6YOyEpKNwYiQEWmsPPtaDYtL4zsw1Ko,4834
|
|
193
|
+
kaggle_environments/envs/open_spiel/open_spiel.py,sha256=UMH_flpyKIBAyC40iU8HUip-COq9AqulBLjTuZujrik,14038
|
|
194
|
+
kaggle_environments/envs/open_spiel/proxy.py,sha256=8Shane4KWYKvbP9nV3l8VQfAFOfFSUrS78h_4xQthVM,4881
|
|
195
|
+
kaggle_environments/envs/open_spiel/proxy_test.py,sha256=QkmRo_uS0DgDDm2pbU2vwal5KOMCWKw92rC2_g3MziM,1837
|
|
196
|
+
kaggle_environments/envs/open_spiel/test_open_spiel.py,sha256=55oTMpGiK401rtZTiqKj5QBW0_UNYDdJqPF5YJyewUc,541
|
|
197
|
+
kaggle_environments/envs/open_spiel/games/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
198
|
+
kaggle_environments/envs/open_spiel/games/connect_four/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
199
|
+
kaggle_environments/envs/open_spiel/games/connect_four/connect_four.js,sha256=sT8rVfjkyY_DUQSHpZUP7I7QEoJwa7Oq9H82wD7vnbQ,15440
|
|
200
|
+
kaggle_environments/envs/open_spiel/games/connect_four/connect_four_proxy.py,sha256=2otG99felDYhNhWpsadbM9YUaHtrXqhV1GFNEHhuPwA,2348
|
|
201
|
+
kaggle_environments/envs/open_spiel/games/connect_four/connect_four_proxy_test.py,sha256=vYn-QDPyRRigL8XdaHMN4FTO9zc1T9YB096HDGQH_T4,1870
|
|
191
202
|
kaggle_environments/envs/rps/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
192
203
|
kaggle_environments/envs/rps/agents.py,sha256=iBtBjPbutWickm-K1EzBEYvLWj5fvU3ks0AYQMYWgEI,2140
|
|
193
204
|
kaggle_environments/envs/rps/helpers.py,sha256=NUqhJafNSzlC_ArwDIYzbLx15pkmBpzfVuG8Iv4wX9U,966
|
|
@@ -201,9 +212,9 @@ kaggle_environments/envs/tictactoe/tictactoe.js,sha256=NZDT-oSG0a6a-rso9Ldh9qkJw
|
|
|
201
212
|
kaggle_environments/envs/tictactoe/tictactoe.json,sha256=zMXZ8-fpT7FBhzz2FFBvRLn4XwtngjEqOieMvI6cCj8,1121
|
|
202
213
|
kaggle_environments/envs/tictactoe/tictactoe.py,sha256=uq3sTHWNMg0dxX2v9pTbJAKM7fwerxQt7OQjCX96m-Y,3657
|
|
203
214
|
kaggle_environments/static/player.html,sha256=XyVoe0XxMa2MO1fTDY_rjyjzPN-JZgbVwJIDoLSnlw0,23016
|
|
204
|
-
kaggle_environments-1.
|
|
205
|
-
kaggle_environments-1.
|
|
206
|
-
kaggle_environments-1.
|
|
207
|
-
kaggle_environments-1.
|
|
208
|
-
kaggle_environments-1.
|
|
209
|
-
kaggle_environments-1.
|
|
215
|
+
kaggle_environments-1.17.3.dist-info/licenses/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
|
|
216
|
+
kaggle_environments-1.17.3.dist-info/METADATA,sha256=3yV9E05vePRsHqStWawS_yKoWzNG59fK5Ak4sbpPAYU,10955
|
|
217
|
+
kaggle_environments-1.17.3.dist-info/WHEEL,sha256=JNWh1Fm1UdwIQV075glCn4MVuCRs0sotJIq-J6rbxCU,109
|
|
218
|
+
kaggle_environments-1.17.3.dist-info/entry_points.txt,sha256=HbVC-LKGQFV6lEEYBYyDTtrkHgdHJUWQ8_qt9KHGqz4,70
|
|
219
|
+
kaggle_environments-1.17.3.dist-info/top_level.txt,sha256=v3MMWIPMQFcI-WuF_dJngHWe9Bb2yH_6p4wat1x4gAc,20
|
|
220
|
+
kaggle_environments-1.17.3.dist-info/RECORD,,
|
{kaggle_environments-1.16.11.dist-info → kaggle_environments-1.17.3.dist-info}/entry_points.txt
RENAMED
|
File without changes
|
{kaggle_environments-1.16.11.dist-info → kaggle_environments-1.17.3.dist-info/licenses}/LICENSE
RENAMED
|
File without changes
|
{kaggle_environments-1.16.11.dist-info → kaggle_environments-1.17.3.dist-info}/top_level.txt
RENAMED
|
File without changes
|