kaggle-environments 1.17.12__py2.py3-none-any.whl → 1.18.0__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 +1 -1
- kaggle_environments/api.py +5 -13
- kaggle_environments/envs/cabt/cabt.js +164 -0
- kaggle_environments/envs/cabt/cabt.json +28 -0
- kaggle_environments/envs/cabt/cabt.py +119 -0
- kaggle_environments/envs/cabt/cg/__init__.py +0 -0
- kaggle_environments/envs/cabt/cg/cg.dll +0 -0
- kaggle_environments/envs/cabt/cg/game.py +70 -0
- kaggle_environments/envs/cabt/cg/libcg.so +0 -0
- kaggle_environments/envs/cabt/cg/sim.py +44 -0
- kaggle_environments/envs/open_spiel/games/chess/chess.js +25 -22
- kaggle_environments/envs/open_spiel/open_spiel.py +53 -1
- kaggle_environments/envs/open_spiel/test_open_spiel.py +85 -1
- kaggle_environments/helpers.py +126 -86
- kaggle_environments/main.py +29 -44
- kaggle_environments/static/player.html +71 -31
- kaggle_environments/utils.py +8 -12
- {kaggle_environments-1.17.12.dist-info → kaggle_environments-1.18.0.dist-info}/METADATA +2 -71
- {kaggle_environments-1.17.12.dist-info → kaggle_environments-1.18.0.dist-info}/RECORD +23 -15
- {kaggle_environments-1.17.12.dist-info → kaggle_environments-1.18.0.dist-info}/WHEEL +1 -1
- {kaggle_environments-1.17.12.dist-info → kaggle_environments-1.18.0.dist-info}/entry_points.txt +0 -0
- {kaggle_environments-1.17.12.dist-info → kaggle_environments-1.18.0.dist-info}/licenses/LICENSE +0 -0
- {kaggle_environments-1.17.12.dist-info → kaggle_environments-1.18.0.dist-info}/top_level.txt +0 -0
kaggle_environments/main.py
CHANGED
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
import argparse
|
|
16
16
|
import json
|
|
17
17
|
import traceback
|
|
18
|
-
from typing import
|
|
18
|
+
from typing import Optional
|
|
19
19
|
from . import errors, utils
|
|
20
20
|
from .agent import Agent
|
|
21
21
|
from .core import environments, evaluate, make
|
|
@@ -27,12 +27,9 @@ parser.add_argument(
|
|
|
27
27
|
choices=["list", "evaluate", "run", "step", "load", "act", "dispose", "http-server"],
|
|
28
28
|
help="List environments. Evaluate many episodes. Run a single episode. Step the environment. Load the environment. Start http server.",
|
|
29
29
|
)
|
|
30
|
-
parser.add_argument("--environment", type=str,
|
|
31
|
-
help="Environment to run against.")
|
|
30
|
+
parser.add_argument("--environment", type=str, help="Environment to run against.")
|
|
32
31
|
parser.add_argument("--debug", type=bool, help="Print debug statements.")
|
|
33
|
-
parser.add_argument(
|
|
34
|
-
"--agents", type=str, nargs="*", help="Agent(s) to run with the environment."
|
|
35
|
-
)
|
|
32
|
+
parser.add_argument("--agents", type=str, nargs="*", help="Agent(s) to run with the environment.")
|
|
36
33
|
parser.add_argument(
|
|
37
34
|
"--configuration",
|
|
38
35
|
type=json.loads,
|
|
@@ -58,9 +55,7 @@ parser.add_argument(
|
|
|
58
55
|
type=json.loads,
|
|
59
56
|
help="Single agent state used for evaluation (default={}).",
|
|
60
57
|
)
|
|
61
|
-
parser.add_argument(
|
|
62
|
-
"--episodes", type=int, help="Number of episodes to evaluate (default=1)"
|
|
63
|
-
)
|
|
58
|
+
parser.add_argument("--episodes", type=int, help="Number of episodes to evaluate (default=1)")
|
|
64
59
|
parser.add_argument(
|
|
65
60
|
"--render",
|
|
66
61
|
type=json.loads,
|
|
@@ -71,28 +66,21 @@ parser.add_argument(
|
|
|
71
66
|
type=str,
|
|
72
67
|
help="Shortcut to the --render {mode=''} argument (default json).",
|
|
73
68
|
)
|
|
74
|
-
parser.add_argument(
|
|
75
|
-
|
|
76
|
-
)
|
|
77
|
-
parser.add_argument(
|
|
78
|
-
"--host", type=str, help="http-server Host (default=127.0.0.1)."
|
|
79
|
-
)
|
|
80
|
-
parser.add_argument(
|
|
81
|
-
"--in", type=str, help="Episode replay file to load. Only works when the action is load."
|
|
82
|
-
)
|
|
69
|
+
parser.add_argument("--port", type=int, help="http-server Port (default=8000).")
|
|
70
|
+
parser.add_argument("--host", type=str, help="http-server Host (default=127.0.0.1).")
|
|
71
|
+
parser.add_argument("--in", type=str, help="Episode replay file to load. Only works when the action is load.")
|
|
83
72
|
parser.add_argument(
|
|
84
73
|
"--out", type=str, help="Output file to write the results of the episode. Does nothing in http-server mode."
|
|
85
74
|
)
|
|
86
75
|
parser.add_argument(
|
|
87
|
-
"--log",
|
|
76
|
+
"--log",
|
|
77
|
+
type=str,
|
|
78
|
+
help="Agent log file to write the std out, resource, and step timing for each agent. Also used to load logs from a file with the load action.",
|
|
88
79
|
)
|
|
89
80
|
|
|
90
81
|
|
|
91
82
|
def render(args, env):
|
|
92
|
-
mode =
|
|
93
|
-
args.display \
|
|
94
|
-
if args.display is not None \
|
|
95
|
-
else utils.get(args.render, str, "json", path=["mode"])
|
|
83
|
+
mode = args.display if args.display is not None else utils.get(args.render, str, "json", path=["mode"])
|
|
96
84
|
|
|
97
85
|
if mode == "human" or mode == "ansi" or mode == "txt":
|
|
98
86
|
args.render["mode"] = "ansi"
|
|
@@ -111,11 +99,7 @@ def action_list(args):
|
|
|
111
99
|
|
|
112
100
|
|
|
113
101
|
def action_evaluate(args):
|
|
114
|
-
return json.dumps(
|
|
115
|
-
evaluate(
|
|
116
|
-
args.environment, args.agents, args.configuration, args.steps, args.episodes
|
|
117
|
-
)
|
|
118
|
-
)
|
|
102
|
+
return json.dumps(evaluate(args.environment, args.agents, args.configuration, args.steps, args.episodes))
|
|
119
103
|
|
|
120
104
|
|
|
121
105
|
cached_agent = None
|
|
@@ -183,7 +167,9 @@ def action_load(args):
|
|
|
183
167
|
if args.in_path is not None:
|
|
184
168
|
with open(args.in_path, mode="r") as replay_file:
|
|
185
169
|
json_args = json.load(replay_file)
|
|
186
|
-
env = make(
|
|
170
|
+
env = make(
|
|
171
|
+
json_args["name"], json_args["configuration"], json_args["info"], json_args["steps"], args.logs, args.debug
|
|
172
|
+
)
|
|
187
173
|
else:
|
|
188
174
|
env = make(args.environment, args.configuration, args.info, args.steps, args.logs, args.debug)
|
|
189
175
|
return render(args, env)
|
|
@@ -229,7 +215,7 @@ def parse_args(args):
|
|
|
229
215
|
}
|
|
230
216
|
)
|
|
231
217
|
|
|
232
|
-
|
|
218
|
+
|
|
233
219
|
def action_handler(args):
|
|
234
220
|
try:
|
|
235
221
|
if args.action == "list":
|
|
@@ -269,21 +255,20 @@ def action_http(args):
|
|
|
269
255
|
log_path = args.log_path
|
|
270
256
|
|
|
271
257
|
# Setup logging to console for Flask
|
|
272
|
-
dictConfig(
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
'handlers': ['wsgi']
|
|
258
|
+
dictConfig(
|
|
259
|
+
{
|
|
260
|
+
"version": 1,
|
|
261
|
+
"formatters": {
|
|
262
|
+
"default": {
|
|
263
|
+
"format": "%(levelname)s: %(message)s",
|
|
264
|
+
}
|
|
265
|
+
},
|
|
266
|
+
"handlers": {
|
|
267
|
+
"wsgi": {"class": "logging.StreamHandler", "stream": "ext://sys.stdout", "formatter": "default"}
|
|
268
|
+
},
|
|
269
|
+
"root": {"level": "INFO", "handlers": ["wsgi"]},
|
|
285
270
|
}
|
|
286
|
-
|
|
271
|
+
)
|
|
287
272
|
|
|
288
273
|
app = Flask(__name__, static_url_path="", static_folder="")
|
|
289
274
|
app.route("/", methods=["GET", "POST"])(lambda: http_request(request))
|
|
@@ -124,44 +124,84 @@
|
|
|
124
124
|
|
|
125
125
|
const Renderer = styled((props) => {
|
|
126
126
|
const context = useContext(Context);
|
|
127
|
-
const { animate, debug, playing, renderer, speed } = context;
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
127
|
+
const { animate, debug, playing, renderer, speed, step } = context;
|
|
128
|
+
|
|
129
|
+
const ref = useRef(null);
|
|
130
|
+
const animationFrameId = useRef();
|
|
131
|
+
|
|
132
|
+
useEffect(() => {
|
|
133
|
+
const element = ref.current;
|
|
134
|
+
if (!element) return;
|
|
135
|
+
|
|
136
|
+
// A single function to render a static frame (for resizes and step changes)
|
|
137
|
+
const renderStaticFrame = async () => {
|
|
138
|
+
if (!ref.current) return;
|
|
139
|
+
try {
|
|
140
|
+
// Pass a frame of 1 to indicate a final/static state
|
|
141
|
+
await renderer({
|
|
142
|
+
...context,
|
|
143
|
+
frame: 1,
|
|
144
|
+
height: ref.current.clientHeight,
|
|
145
|
+
width: ref.current.clientWidth,
|
|
146
|
+
hooks: preactHooks,
|
|
147
|
+
parent: ref.current,
|
|
148
|
+
preact,
|
|
149
|
+
styled,
|
|
150
|
+
});
|
|
151
|
+
} catch (error) {
|
|
152
|
+
if (debug) console.error("Static render failed:", error);
|
|
153
|
+
}
|
|
154
|
+
};
|
|
155
|
+
|
|
156
|
+
// --- Resize Handling ---
|
|
157
|
+
const observer = new ResizeObserver(() => {
|
|
158
|
+
renderStaticFrame();
|
|
159
|
+
});
|
|
160
|
+
observer.observe(element);
|
|
161
|
+
|
|
162
|
+
// --- Animation Loop ---
|
|
163
|
+
let start = Date.now();
|
|
164
|
+
const renderAnimation = async () => {
|
|
165
|
+
// Stop the loop if the component unmounts or if animate is turned off
|
|
166
|
+
if (!ref.current || !animate) return;
|
|
167
|
+
|
|
168
|
+
const frame = Math.min((Date.now() - start) / speed, 1);
|
|
169
|
+
if (frame === 1) {
|
|
135
170
|
start = Date.now();
|
|
136
171
|
}
|
|
137
|
-
|
|
138
|
-
playing || animate
|
|
139
|
-
? Math.min((Date.now() - start) / speed, 1)
|
|
140
|
-
: 1;
|
|
172
|
+
|
|
141
173
|
try {
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
width: ref.current.clientWidth,
|
|
153
|
-
});
|
|
154
|
-
}
|
|
174
|
+
await renderer({
|
|
175
|
+
...context,
|
|
176
|
+
frame,
|
|
177
|
+
height: ref.current.clientHeight,
|
|
178
|
+
width: ref.current.clientWidth,
|
|
179
|
+
hooks: preactHooks,
|
|
180
|
+
parent: ref.current,
|
|
181
|
+
preact,
|
|
182
|
+
styled,
|
|
183
|
+
});
|
|
155
184
|
} catch (error) {
|
|
156
|
-
if (debug) console.error(error);
|
|
157
|
-
console.log({ ...context, frame, error });
|
|
158
|
-
} finally {
|
|
159
|
-
if (debug) console.timeEnd("render");
|
|
185
|
+
if (debug) console.error("Animation render failed:", error);
|
|
160
186
|
}
|
|
161
|
-
|
|
187
|
+
|
|
188
|
+
animationFrameId.current = requestAnimationFrame(renderAnimation);
|
|
162
189
|
};
|
|
163
190
|
|
|
164
|
-
|
|
191
|
+
// --- Initial Action ---
|
|
192
|
+
if (animate) {
|
|
193
|
+
// If animate is on, start the animation loop
|
|
194
|
+
renderAnimation();
|
|
195
|
+
} else {
|
|
196
|
+
// Otherwise, just render a single static frame for the current step
|
|
197
|
+
renderStaticFrame();
|
|
198
|
+
}
|
|
199
|
+
|
|
200
|
+
// --- Cleanup ---
|
|
201
|
+
return () => {
|
|
202
|
+
observer.disconnect();
|
|
203
|
+
cancelAnimationFrame(animationFrameId.current);
|
|
204
|
+
};
|
|
165
205
|
}, [ref.current, context.step, context.renderer]);
|
|
166
206
|
|
|
167
207
|
return h`<div className=${props.className} ref=${ref} />`;
|
kaggle_environments/utils.py
CHANGED
|
@@ -49,11 +49,11 @@ def has(o, classinfo=None, default=None, path=None, is_callable=None):
|
|
|
49
49
|
for p in path:
|
|
50
50
|
cur = cur[p]
|
|
51
51
|
if classinfo is not None and not isinstance(cur, classinfo):
|
|
52
|
-
raise "Not a match"
|
|
53
|
-
if is_callable
|
|
54
|
-
raise "Not callable"
|
|
55
|
-
if is_callable
|
|
56
|
-
raise "Is callable"
|
|
52
|
+
raise ValueError("Not a match")
|
|
53
|
+
if is_callable and not callable(cur):
|
|
54
|
+
raise ValueError("Not callable")
|
|
55
|
+
if not is_callable and callable(cur):
|
|
56
|
+
raise ValueError("Is callable")
|
|
57
57
|
return True
|
|
58
58
|
except:
|
|
59
59
|
if default is not None and o is not None and len(path) > 0:
|
|
@@ -137,7 +137,7 @@ def default_schema(schema, data):
|
|
|
137
137
|
else:
|
|
138
138
|
obj = data
|
|
139
139
|
for k, v in default.items():
|
|
140
|
-
if not
|
|
140
|
+
if k not in obj:
|
|
141
141
|
obj[k] = v
|
|
142
142
|
properties = get(schema, dict, {}, ["properties"])
|
|
143
143
|
for key, prop_schema in properties.items():
|
|
@@ -180,15 +180,11 @@ def get_player(window_kaggle, renderer):
|
|
|
180
180
|
value = f"""
|
|
181
181
|
window.kaggle = {json.dumps(window_kaggle, indent=2)};\n\n
|
|
182
182
|
"""
|
|
183
|
-
return read_file(renderer[1]).replace(
|
|
184
|
-
key, value
|
|
185
|
-
)
|
|
183
|
+
return read_file(renderer[1]).replace(key, value)
|
|
186
184
|
|
|
187
185
|
key = "/*window.kaggle*/"
|
|
188
186
|
value = f"""
|
|
189
187
|
window.kaggle = {json.dumps(window_kaggle, indent=2)};\n\n
|
|
190
188
|
window.kaggle.renderer = {renderer.strip()};\n\n
|
|
191
189
|
"""
|
|
192
|
-
return read_file(Path.joinpath(root_path, "static", "player.html")).replace(
|
|
193
|
-
key, value
|
|
194
|
-
)
|
|
190
|
+
return read_file(Path.joinpath(root_path, "static", "player.html")).replace(key, value)
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: kaggle-environments
|
|
3
|
-
Version: 1.
|
|
3
|
+
Version: 1.18.0
|
|
4
4
|
Summary: Kaggle Environments
|
|
5
5
|
Home-page: https://github.com/Kaggle/kaggle-environments
|
|
6
6
|
Author: Kaggle
|
|
@@ -37,7 +37,7 @@ Dynamic: summary
|
|
|
37
37
|
# [<img src="https://kaggle.com/static/images/site-logo.png" height="50" style="margin-bottom:-15px" />](https://kaggle.com) Environments
|
|
38
38
|
|
|
39
39
|
```bash
|
|
40
|
-
pip install kaggle-environments
|
|
40
|
+
uv pip install kaggle-environments
|
|
41
41
|
```
|
|
42
42
|
|
|
43
43
|
# TLDR;
|
|
@@ -320,72 +320,3 @@ The following rendering modes are supported:
|
|
|
320
320
|
out = env.render(mode="ansi")
|
|
321
321
|
print(out)
|
|
322
322
|
```
|
|
323
|
-
|
|
324
|
-
# Command Line
|
|
325
|
-
|
|
326
|
-
```sh
|
|
327
|
-
> python main.py -h
|
|
328
|
-
```
|
|
329
|
-
|
|
330
|
-
## List Registered Environments
|
|
331
|
-
|
|
332
|
-
```sh
|
|
333
|
-
> python main.py list
|
|
334
|
-
```
|
|
335
|
-
|
|
336
|
-
## Evaluate Episode Rewards
|
|
337
|
-
|
|
338
|
-
```sh
|
|
339
|
-
python main.py evaluate --environment tictactoe --agents random random --episodes 10
|
|
340
|
-
```
|
|
341
|
-
|
|
342
|
-
## Run an Episode
|
|
343
|
-
|
|
344
|
-
```sh
|
|
345
|
-
> python main.py run --environment tictactoe --agents random /pathtomy/agent.py --debug True
|
|
346
|
-
```
|
|
347
|
-
|
|
348
|
-
## Load an Episode
|
|
349
|
-
|
|
350
|
-
This is useful when converting an episode json output into html.
|
|
351
|
-
|
|
352
|
-
```sh
|
|
353
|
-
python main.py load --environment tictactoe --steps [...] --render '{"mode": "html"}'
|
|
354
|
-
```
|
|
355
|
-
|
|
356
|
-
# HTTP Server
|
|
357
|
-
|
|
358
|
-
The HTTP server contains the same interface/actions as the CLI above merging both POST body and GET params.
|
|
359
|
-
|
|
360
|
-
## Setup
|
|
361
|
-
|
|
362
|
-
```bash
|
|
363
|
-
python main.py http-server --port=8012 --host=0.0.0.0
|
|
364
|
-
```
|
|
365
|
-
|
|
366
|
-
### Running Agents on Separate Servers
|
|
367
|
-
|
|
368
|
-
```python
|
|
369
|
-
# How to run agent on a separate server.
|
|
370
|
-
import requests
|
|
371
|
-
import json
|
|
372
|
-
|
|
373
|
-
path_to_agent1 = "/home/ajeffries/git/playground/agent1.py"
|
|
374
|
-
path_to_agent2 = "/home/ajeffries/git/playground/agent2.py"
|
|
375
|
-
|
|
376
|
-
agent1_url = f"http://localhost:5001?agents[]={path_to_agent1}"
|
|
377
|
-
agent2_url = f"http://localhost:5002?agents[]={path_to_agent2}"
|
|
378
|
-
|
|
379
|
-
body = {
|
|
380
|
-
"action": "run",
|
|
381
|
-
"environment": "tictactoe",
|
|
382
|
-
"agents": [agent1_url, agent2_url]
|
|
383
|
-
}
|
|
384
|
-
resp = requests.post(url="http://localhost:5000", data=json.dumps(body)).json()
|
|
385
|
-
|
|
386
|
-
# Inflate the response replay to visualize.
|
|
387
|
-
from kaggle_environments import make
|
|
388
|
-
env = make("tictactoe", steps=resp["steps"], debug=True)
|
|
389
|
-
env.render(mode="ipython")
|
|
390
|
-
print(resp)
|
|
391
|
-
```
|
|
@@ -1,13 +1,21 @@
|
|
|
1
|
-
kaggle_environments/__init__.py,sha256=
|
|
1
|
+
kaggle_environments/__init__.py,sha256=iRg6HLV8H1EaxsVF_maFrYK5REcSCG1A_dOHsRBzX3E,2175
|
|
2
2
|
kaggle_environments/agent.py,sha256=IgRagzcTi6F73nPeViDdh9wvHnx8fQhFmXJNutovGZE,6706
|
|
3
|
-
kaggle_environments/api.py,sha256=
|
|
3
|
+
kaggle_environments/api.py,sha256=kBC_2ezY7-6JWlgvv-Hi4law6Ilkk2FnV2u_4qEe_rc,745
|
|
4
4
|
kaggle_environments/core.py,sha256=PzF9NR0rFfFikspJ3HE0uI8UOiv_tlDhGSbu11g9vQQ,27860
|
|
5
5
|
kaggle_environments/errors.py,sha256=SzKjkZP7pJbf9g0GDjGq4XG194hCQXLMwrlMCcm7Ai8,3336
|
|
6
|
-
kaggle_environments/helpers.py,sha256=
|
|
7
|
-
kaggle_environments/main.py,sha256=
|
|
6
|
+
kaggle_environments/helpers.py,sha256=Qy49B35Ifks6P8r4L1kLQDpQ-OVdW6qUTnprQWFz6so,11160
|
|
7
|
+
kaggle_environments/main.py,sha256=3Z2Ew3_0Ve3s-rwBTz8aF0oygh6JOv5iFigeUt6ioYM,11656
|
|
8
8
|
kaggle_environments/schemas.json,sha256=zGzLyhqPdH6QQ0d48SrP5LKbvupprrWvgfQBerLqmhw,3307
|
|
9
9
|
kaggle_environments/status_codes.json,sha256=6a8HuS_Vth95W0f2fov21QLdRfA3KbizUvjKmJhYtBc,995
|
|
10
|
-
kaggle_environments/utils.py,sha256=
|
|
10
|
+
kaggle_environments/utils.py,sha256=HUJ7vuTQ-NUxFHqjCEN3Cdcg34DuE4gYrSzLPnTFxp0,5700
|
|
11
|
+
kaggle_environments/envs/cabt/cabt.js,sha256=JOGgC7aw4L41-x0PdHvbYXoc0KqcEAIkqkKLFiVEZzU,4707
|
|
12
|
+
kaggle_environments/envs/cabt/cabt.json,sha256=dYQshH6VRK1AMgZYFv5g4XbGX1cJbdNPXmdILpolgQI,547
|
|
13
|
+
kaggle_environments/envs/cabt/cabt.py,sha256=HCT7f4M_QYbqjzWHriRnTazzAxjK4UvQknxfiYDkNpc,4011
|
|
14
|
+
kaggle_environments/envs/cabt/cg/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
15
|
+
kaggle_environments/envs/cabt/cg/cg.dll,sha256=enpFzyM9OYg8LT2SsJhbVkautkNhaaUALicB5WcENI8,1020416
|
|
16
|
+
kaggle_environments/envs/cabt/cg/game.py,sha256=PdJSPA95Vhq3ezyysEh4aDgfU9KqXfmEsd4AzbJwGNI,2150
|
|
17
|
+
kaggle_environments/envs/cabt/cg/libcg.so,sha256=XYncRauAGs5sv84-8bDCLoQVHZDcTBZQ-aN7xilkBlo,907616
|
|
18
|
+
kaggle_environments/envs/cabt/cg/sim.py,sha256=js-EX5EXEsFmnI5OLx2sI8B1jdHF9CPOdJ72L1mWC0g,1195
|
|
11
19
|
kaggle_environments/envs/chess/chess.js,sha256=QYA1arYF_qOfchN8HHQ4hL5z3C9XeT5hYigT75CgvKo,274596
|
|
12
20
|
kaggle_environments/envs/chess/chess.json,sha256=fc8Qa1IHWmYbiEgorXIjMj2JmqP95x_reqFe6Mon2Wk,1692
|
|
13
21
|
kaggle_environments/envs/chess/chess.py,sha256=41LMA8--APQOhl6aeWgJvkSaRBjAch2FgS7ELIoOT3w,245361
|
|
@@ -191,12 +199,12 @@ kaggle_environments/envs/mab/mab.py,sha256=bkSIxkstS98Vr3eOA9kxQkseDqa1MlG2Egfze
|
|
|
191
199
|
kaggle_environments/envs/open_spiel/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
192
200
|
kaggle_environments/envs/open_spiel/html_playthrough_generator.py,sha256=qzvi9wMZKz1WfpaIpBxP5LPlVYKAk9npEtdKLXYHMWo,950
|
|
193
201
|
kaggle_environments/envs/open_spiel/observation.py,sha256=yrJ_iZ9sBUTB6YOyEpKNwYiQEWmsPPtaDYtL4zsw1Ko,4834
|
|
194
|
-
kaggle_environments/envs/open_spiel/open_spiel.py,sha256=
|
|
202
|
+
kaggle_environments/envs/open_spiel/open_spiel.py,sha256=61hBT2JNyuPVH9aadik_ZXz248mRqqDAQA5XvxGV9hQ,19396
|
|
195
203
|
kaggle_environments/envs/open_spiel/proxy.py,sha256=8Shane4KWYKvbP9nV3l8VQfAFOfFSUrS78h_4xQthVM,4881
|
|
196
204
|
kaggle_environments/envs/open_spiel/proxy_test.py,sha256=QkmRo_uS0DgDDm2pbU2vwal5KOMCWKw92rC2_g3MziM,1837
|
|
197
|
-
kaggle_environments/envs/open_spiel/test_open_spiel.py,sha256=
|
|
205
|
+
kaggle_environments/envs/open_spiel/test_open_spiel.py,sha256=AOJzHOICB0SK27QKaFFsKFO_Ui3pqXgE-mWjlrH7IBQ,6080
|
|
198
206
|
kaggle_environments/envs/open_spiel/games/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
199
|
-
kaggle_environments/envs/open_spiel/games/chess/chess.js,sha256=
|
|
207
|
+
kaggle_environments/envs/open_spiel/games/chess/chess.js,sha256=RAvh0cUTqg1b-drcP9RQFNDP17V8uGQoVSgJFF5uBjU,45639
|
|
200
208
|
kaggle_environments/envs/open_spiel/games/connect_four/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
201
209
|
kaggle_environments/envs/open_spiel/games/connect_four/connect_four.js,sha256=iO74ar3Hh64VYEx9v3eysgrPU-Mcokl9dkFxie6uISg,14893
|
|
202
210
|
kaggle_environments/envs/open_spiel/games/connect_four/connect_four_proxy.py,sha256=2otG99felDYhNhWpsadbM9YUaHtrXqhV1GFNEHhuPwA,2348
|
|
@@ -223,10 +231,10 @@ kaggle_environments/envs/tictactoe/test_tictactoe.py,sha256=6CgQbRz-yxNoMfD5tzmC
|
|
|
223
231
|
kaggle_environments/envs/tictactoe/tictactoe.js,sha256=NZDT-oSG0a6a-rso9Ldh9qkJwVrxrAsjKUC3_tJu3tw,8002
|
|
224
232
|
kaggle_environments/envs/tictactoe/tictactoe.json,sha256=zMXZ8-fpT7FBhzz2FFBvRLn4XwtngjEqOieMvI6cCj8,1121
|
|
225
233
|
kaggle_environments/envs/tictactoe/tictactoe.py,sha256=uq3sTHWNMg0dxX2v9pTbJAKM7fwerxQt7OQjCX96m-Y,3657
|
|
226
|
-
kaggle_environments/static/player.html,sha256=
|
|
227
|
-
kaggle_environments-1.
|
|
228
|
-
kaggle_environments-1.
|
|
229
|
-
kaggle_environments-1.
|
|
230
|
-
kaggle_environments-1.
|
|
231
|
-
kaggle_environments-1.
|
|
232
|
-
kaggle_environments-1.
|
|
234
|
+
kaggle_environments/static/player.html,sha256=ek33T_8ecmWuxE5dWKO7jlYWLTPXru-cs0PrkBlNjAM,26749
|
|
235
|
+
kaggle_environments-1.18.0.dist-info/licenses/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
|
|
236
|
+
kaggle_environments-1.18.0.dist-info/METADATA,sha256=u5aIqDcf5OhVm9ObJ257CT7AHkgoIHVkAHKmPD9DqB0,9477
|
|
237
|
+
kaggle_environments-1.18.0.dist-info/WHEEL,sha256=7wAbZI8A1UjN-j4-aYf66qBxOZ0Ioy0QNykkY5NcGJo,109
|
|
238
|
+
kaggle_environments-1.18.0.dist-info/entry_points.txt,sha256=HbVC-LKGQFV6lEEYBYyDTtrkHgdHJUWQ8_qt9KHGqz4,70
|
|
239
|
+
kaggle_environments-1.18.0.dist-info/top_level.txt,sha256=v3MMWIPMQFcI-WuF_dJngHWe9Bb2yH_6p4wat1x4gAc,20
|
|
240
|
+
kaggle_environments-1.18.0.dist-info/RECORD,,
|
{kaggle_environments-1.17.12.dist-info → kaggle_environments-1.18.0.dist-info}/entry_points.txt
RENAMED
|
File without changes
|
{kaggle_environments-1.17.12.dist-info → kaggle_environments-1.18.0.dist-info}/licenses/LICENSE
RENAMED
|
File without changes
|
{kaggle_environments-1.17.12.dist-info → kaggle_environments-1.18.0.dist-info}/top_level.txt
RENAMED
|
File without changes
|