kaggle-environments 1.16.8__py2.py3-none-any.whl → 1.16.10__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/agent.py +1 -1
- kaggle_environments/envs/chess/chess.js +10 -5
- kaggle_environments/envs/chess/chess.json +7 -2
- kaggle_environments/envs/chess/chess.py +12 -5
- kaggle_environments/envs/connectx/connectx.ipynb +3183 -0
- kaggle_environments/envs/connectx/connectx.py +1 -1
- kaggle_environments/envs/football/football.ipynb +75 -0
- kaggle_environments/envs/halite/halite.ipynb +44736 -0
- kaggle_environments/envs/halite/halite.py +1 -1
- kaggle_environments/envs/hungry_geese/hungry_geese.py +1 -1
- kaggle_environments/envs/kore_fleets/kore_fleets.ipynb +112 -0
- kaggle_environments/envs/kore_fleets/kore_fleets.py +1 -1
- kaggle_environments/envs/kore_fleets/starter_bots/java/Bot.java +54 -0
- kaggle_environments/envs/kore_fleets/starter_bots/java/README.md +26 -0
- kaggle_environments/envs/kore_fleets/starter_bots/java/jars/hamcrest-core-1.3.jar +0 -0
- kaggle_environments/envs/kore_fleets/starter_bots/java/jars/junit-4.13.2.jar +0 -0
- kaggle_environments/envs/kore_fleets/starter_bots/java/kore/Board.java +518 -0
- kaggle_environments/envs/kore_fleets/starter_bots/java/kore/Cell.java +61 -0
- kaggle_environments/envs/kore_fleets/starter_bots/java/kore/Configuration.java +24 -0
- kaggle_environments/envs/kore_fleets/starter_bots/java/kore/Direction.java +166 -0
- kaggle_environments/envs/kore_fleets/starter_bots/java/kore/Fleet.java +72 -0
- kaggle_environments/envs/kore_fleets/starter_bots/java/kore/KoreJson.java +97 -0
- kaggle_environments/envs/kore_fleets/starter_bots/java/kore/Observation.java +72 -0
- kaggle_environments/envs/kore_fleets/starter_bots/java/kore/Pair.java +13 -0
- kaggle_environments/envs/kore_fleets/starter_bots/java/kore/Player.java +68 -0
- kaggle_environments/envs/kore_fleets/starter_bots/java/kore/Point.java +65 -0
- kaggle_environments/envs/kore_fleets/starter_bots/java/kore/Shipyard.java +70 -0
- kaggle_environments/envs/kore_fleets/starter_bots/java/kore/ShipyardAction.java +59 -0
- kaggle_environments/envs/kore_fleets/starter_bots/java/test/BoardTest.java +567 -0
- kaggle_environments/envs/kore_fleets/starter_bots/java/test/ConfigurationTest.java +25 -0
- kaggle_environments/envs/kore_fleets/starter_bots/java/test/KoreJsonTest.java +62 -0
- kaggle_environments/envs/kore_fleets/starter_bots/java/test/ObservationTest.java +46 -0
- kaggle_environments/envs/kore_fleets/starter_bots/java/test/PointTest.java +21 -0
- kaggle_environments/envs/kore_fleets/starter_bots/java/test/ShipyardTest.java +22 -0
- kaggle_environments/envs/kore_fleets/starter_bots/ts/README.md +55 -0
- kaggle_environments/envs/llm_20_questions/llm_20_questions.py +1 -1
- kaggle_environments/envs/lux_ai_2021/README.md +3 -0
- kaggle_environments/envs/lux_ai_2021/dimensions/754.js.LICENSE.txt +296 -0
- kaggle_environments/envs/lux_ai_2021/test_agents/js_simple/simple.tar.gz +0 -0
- kaggle_environments/envs/lux_ai_2021/testing.md +23 -0
- kaggle_environments/envs/lux_ai_2021/todo.md.og +18 -0
- kaggle_environments/envs/lux_ai_s2/.gitignore +1 -0
- kaggle_environments/envs/lux_ai_s2/README.md +21 -0
- kaggle_environments/envs/lux_ai_s2/luxai_s2/.DS_Store +0 -0
- kaggle_environments/envs/lux_ai_s2/luxai_s2/map_generator/.DS_Store +0 -0
- kaggle_environments/envs/lux_ai_s3/README.md +21 -0
- kaggle_environments/envs/lux_ai_s3/lux_ai_s3.json +1 -1
- kaggle_environments/envs/lux_ai_s3/luxai_s3/env.py +15 -8
- kaggle_environments/envs/lux_ai_s3/luxai_s3/pygame_render.py +6 -29
- kaggle_environments/envs/lux_ai_s3/luxai_s3/wrappers.py +0 -17
- kaggle_environments/envs/tictactoe/tictactoe.ipynb +1393 -0
- kaggle_environments/envs/tictactoe/tictactoe.py +1 -1
- kaggle_environments/helpers.py +3 -3
- {kaggle_environments-1.16.8.dist-info → kaggle_environments-1.16.10.dist-info}/METADATA +2 -2
- {kaggle_environments-1.16.8.dist-info → kaggle_environments-1.16.10.dist-info}/RECORD +60 -22
- {kaggle_environments-1.16.8.dist-info → kaggle_environments-1.16.10.dist-info}/WHEEL +1 -1
- {kaggle_environments-1.16.8.dist-info → kaggle_environments-1.16.10.dist-info}/LICENSE +0 -0
- {kaggle_environments-1.16.8.dist-info → kaggle_environments-1.16.10.dist-info}/entry_points.txt +0 -0
- {kaggle_environments-1.16.8.dist-info → kaggle_environments-1.16.10.dist-info}/top_level.txt +0 -0
kaggle_environments/__init__.py
CHANGED
|
@@ -20,7 +20,7 @@ from .core import *
|
|
|
20
20
|
from .main import http_request
|
|
21
21
|
from . import errors
|
|
22
22
|
|
|
23
|
-
__version__ = "1.16.
|
|
23
|
+
__version__ = "1.16.10"
|
|
24
24
|
|
|
25
25
|
__all__ = ["Agent", "environments", "errors", "evaluate", "http_request",
|
|
26
26
|
"make", "register", "utils", "__version__",
|
kaggle_environments/agent.py
CHANGED
|
@@ -123,7 +123,7 @@ def build_agent(raw, builtin_agents, environment_name):
|
|
|
123
123
|
raw_agent = raw
|
|
124
124
|
if os.path.exists(raw):
|
|
125
125
|
raw_agent = read_file(raw, raw)
|
|
126
|
-
elif (len(raw) < 100 and ("/" in raw or "\\" in raw)) or raw < 20:
|
|
126
|
+
elif (len(raw) < 100 and ("/" in raw or "\\" in raw)) or len(raw) < 20:
|
|
127
127
|
raise FileNotFoundError("Could not find : " + raw)
|
|
128
128
|
|
|
129
129
|
# Attempt to execute the last callable or just return the string.
|
|
@@ -47,11 +47,11 @@ async function renderer(context) {
|
|
|
47
47
|
let downloadButton = parent.querySelector("#copy-pgn");
|
|
48
48
|
if (!downloadButton) {
|
|
49
49
|
try {
|
|
50
|
-
const board = environment.steps[
|
|
50
|
+
const board = environment.steps[0][0].observation.board;
|
|
51
51
|
const info = environment.info;
|
|
52
52
|
const agent1 = info?.TeamNames?.[0] || "Agent 1";
|
|
53
53
|
const agent2 = info?.TeamNames?.[1] || "Agent 2";
|
|
54
|
-
const game = new Chess(
|
|
54
|
+
const game = new Chess();
|
|
55
55
|
let result = environment.rewards;
|
|
56
56
|
if (result.some((r) => r === undefined || r === null)) {
|
|
57
57
|
result = result.map((r) => (r === undefined || r === null ? 0 : 1));
|
|
@@ -64,8 +64,6 @@ async function renderer(context) {
|
|
|
64
64
|
agent1,
|
|
65
65
|
"Black",
|
|
66
66
|
agent2,
|
|
67
|
-
"Result",
|
|
68
|
-
result.join("-")
|
|
69
67
|
);
|
|
70
68
|
|
|
71
69
|
const openingIdx = OPENINGS.indexOf(board);
|
|
@@ -89,7 +87,14 @@ async function renderer(context) {
|
|
|
89
87
|
}
|
|
90
88
|
}
|
|
91
89
|
|
|
92
|
-
|
|
90
|
+
let pgn = game.pgn();
|
|
91
|
+
|
|
92
|
+
// for some reason the pgn doesn't calculate the result correctly
|
|
93
|
+
// until we can fix this bug, remove it.
|
|
94
|
+
// b/383366972
|
|
95
|
+
if (pgn.indexOf(" 0-0") !== -1) {
|
|
96
|
+
pgn = pgn.split(" 0-0")[0]
|
|
97
|
+
}
|
|
93
98
|
|
|
94
99
|
downloadButton = document.createElement("button");
|
|
95
100
|
downloadButton.id = "copy-pgn";
|
|
@@ -21,8 +21,8 @@
|
|
|
21
21
|
}
|
|
22
22
|
},
|
|
23
23
|
"reward": {
|
|
24
|
-
"description": "
|
|
25
|
-
"enum": [
|
|
24
|
+
"description": "0 = Lost/Ongoing, 0.5 = Draw, 1 = Won",
|
|
25
|
+
"enum": [0, 0.5, 1],
|
|
26
26
|
"default": 0
|
|
27
27
|
},
|
|
28
28
|
"observation": {
|
|
@@ -42,6 +42,11 @@
|
|
|
42
42
|
"type": "number",
|
|
43
43
|
"default": 10
|
|
44
44
|
},
|
|
45
|
+
"lastMove": {
|
|
46
|
+
"description": "Previous move to get to this position.",
|
|
47
|
+
"type": "string",
|
|
48
|
+
"default": ""
|
|
49
|
+
},
|
|
45
50
|
"remainingOverageTime": 10
|
|
46
51
|
},
|
|
47
52
|
"action": {
|
|
@@ -166,6 +166,7 @@ def square_str_to_int(square_str):
|
|
|
166
166
|
|
|
167
167
|
seen_positions = defaultdict(int)
|
|
168
168
|
|
|
169
|
+
|
|
169
170
|
def interpreter(state, env):
|
|
170
171
|
global seen_positions
|
|
171
172
|
if env.done:
|
|
@@ -204,8 +205,10 @@ def interpreter(state, env):
|
|
|
204
205
|
inactive.status = DONE
|
|
205
206
|
return state
|
|
206
207
|
fen = game.get_fen()
|
|
207
|
-
|
|
208
|
-
|
|
208
|
+
# board, player turn, en passant, and castling status form board status
|
|
209
|
+
# for 3-fold draws
|
|
210
|
+
board_position = ' '.join(fen.split()[:4])
|
|
211
|
+
seen_positions[board_position] += 1
|
|
209
212
|
|
|
210
213
|
# Update the board in the observation
|
|
211
214
|
state[0].observation.board = fen
|
|
@@ -215,15 +218,19 @@ def interpreter(state, env):
|
|
|
215
218
|
state[0].observation.opponentRemainingOverageTime = state[1].observation.remainingOverageTime
|
|
216
219
|
state[1].observation.opponentRemainingOverageTime = state[0].observation.remainingOverageTime
|
|
217
220
|
|
|
221
|
+
# Update last move
|
|
222
|
+
state[0].observation.lastMove = action
|
|
223
|
+
state[1].observation.lastMove = action
|
|
224
|
+
|
|
218
225
|
pawn_or_capture_move_count = int(
|
|
219
226
|
fen.split(" ")[4]) # fen keeps track of this
|
|
220
227
|
# Check for game end conditions
|
|
221
228
|
if pawn_or_capture_move_count == 100 or is_insufficient_material(
|
|
222
|
-
game.board) or seen_positions[
|
|
229
|
+
game.board) or seen_positions[board_position] >= 3 or game.status == Game.STALEMATE:
|
|
223
230
|
active.reward += .5
|
|
224
231
|
inactive.reward += .5
|
|
225
232
|
active.status = DONE
|
|
226
|
-
inactive.status = DONE
|
|
233
|
+
inactive.status = DONE
|
|
227
234
|
elif game.status == Game.CHECKMATE:
|
|
228
235
|
active.reward += 1
|
|
229
236
|
active.status = DONE
|
|
@@ -249,5 +256,5 @@ with open(jsonpath) as f:
|
|
|
249
256
|
|
|
250
257
|
def html_renderer():
|
|
251
258
|
jspath = path.abspath(path.join(path.dirname(__file__), "chess.js"))
|
|
252
|
-
with open(jspath) as g:
|
|
259
|
+
with open(jspath, encoding="utf-8") as g:
|
|
253
260
|
return g.read()
|