kaggle-environments 1.16.6__py2.py3-none-any.whl → 1.16.8__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.

@@ -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.6"
23
+ __version__ = "1.16.8"
24
24
 
25
25
  __all__ = ["Agent", "environments", "errors", "evaluate", "http_request",
26
26
  "make", "register", "utils", "__version__",
@@ -8,6 +8,28 @@ async function renderer(context) {
8
8
  width = 400,
9
9
  } = context;
10
10
 
11
+ const OPENINGS = [
12
+ "rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - 0 1",
13
+ "rnbqkbnr/1p2pp1p/p2p2p1/8/2PNP3/8/PP3PPP/RNBQKB1R w KQkq - 0 6",
14
+ "r1b1kb1r/ppppq1pp/2n2n2/1B2p3/4N3/5N2/PPPPQPPP/R1B1K2R w KQkq - 3 7",
15
+ "rnbqkb1r/p2ppppp/5n2/2pP4/2p5/2N5/PP2PPPP/R1BQKBNR w KQkq - 0 5",
16
+ "rnbqk1nr/p1p1bppp/1p2p3/3pP3/3P4/2N5/PPP2PPP/R1BQKBNR w KQkq - 0 5",
17
+ "r2qk1nr/ppp2pp1/2np3p/2b1p3/2B1P1b1/2PP1N2/PP3PPP/RNBQ1RK1 w kq - 0 7",
18
+ "rn1qk1nr/pp2ppbp/3p2p1/2p5/2PP2b1/2N1PN2/PP3PPP/R1BQKB1R w KQkq c6 0 6",
19
+ "rnbqkbnr/1p2pp1p/p2p2p1/8/2PNP3/8/PP3PPP/RNBQKB1R w KQkq - 0 6",
20
+ ];
21
+
22
+ const MOVES = [
23
+ "",
24
+ "e2e4 c7c5 g1f3 d7d6 d2d4 c5d4 f3d4 a7a6 c2c4 g7g6",
25
+ "e2e4 e7e5 g1f3 b8c6 f1b5 f7f5 b1c3 f5e4 c3e4 g8f6 d1e2 d8e7",
26
+ "d2d4 g8f6 c2c4 c7c5 d4d5 b7b5 b1c3 b5c4",
27
+ "e2e4 e7e6 d2d4 d7d5 b1c3 f8e7 e4e5 b7b6",
28
+ "e2e4 e7e5 g1f3 b8c6 f1c4 f8c5 e1g1 d7d6 c2c3 c8g4 d2d3 h7h6",
29
+ "d2d4 g7g6 c2c4 f8g7 b1c3 d7d6 g1f3 c8g4 e2e3 c7c5",
30
+ "e2e4 c7c5 g1f3 d7d6 d2d4 c5d4 f3d4 a7a6 c2c4 g7g6",
31
+ ];
32
+
11
33
  // Common Dimensions.
12
34
  const canvasSize = Math.min(height, width);
13
35
  const boardSize = canvasSize * 0.8;
@@ -21,6 +43,120 @@ async function renderer(context) {
21
43
  parent.appendChild(canvas);
22
44
  }
23
45
 
46
+ // Create the Download PGN button
47
+ let downloadButton = parent.querySelector("#copy-pgn");
48
+ if (!downloadButton) {
49
+ try {
50
+ const board = environment.steps[step][0].observation.board;
51
+ const info = environment.info;
52
+ const agent1 = info?.TeamNames?.[0] || "Agent 1";
53
+ const agent2 = info?.TeamNames?.[1] || "Agent 2";
54
+ const game = new Chess(board);
55
+ let result = environment.rewards;
56
+ if (result.some((r) => r === undefined || r === null)) {
57
+ result = result.map((r) => (r === undefined || r === null ? 0 : 1));
58
+ }
59
+
60
+ game.header(
61
+ "Event",
62
+ "FIDE & Google Efficient Chess AI Challenge (https://www.kaggle.com/competitions/fide-google-efficiency-chess-ai-challenge)",
63
+ "White",
64
+ agent1,
65
+ "Black",
66
+ agent2,
67
+ "Result",
68
+ result.join("-")
69
+ );
70
+
71
+ const openingIdx = OPENINGS.indexOf(board);
72
+ const moves = MOVES[openingIdx].split(" ");
73
+
74
+ for (let i = 0; i < moves.length; i++) {
75
+ const move = moves[i];
76
+ game.move({ from: move.slice(0, 2), to: move.slice(2, 4) });
77
+ }
78
+
79
+ for (let i = 1; i < environment.steps.length; i++) {
80
+ const move = environment.steps[i][(i - 1) % 2].action;
81
+ if (move.length === 4) {
82
+ game.move({ from: move.slice(0, 2), to: move.slice(2, 4) });
83
+ } else if (move.length === 5) {
84
+ game.move({
85
+ from: move.slice(0, 2),
86
+ to: move.slice(2, 4),
87
+ promotion: move.slice(4, 5),
88
+ });
89
+ }
90
+ }
91
+
92
+ const pgn = game.pgn();
93
+
94
+ downloadButton = document.createElement("button");
95
+ downloadButton.id = "copy-pgn";
96
+ downloadButton.textContent = "Copy PGN";
97
+ downloadButton.style.position = "absolute";
98
+ downloadButton.style.top = "10px";
99
+ downloadButton.style.left = "10px";
100
+ downloadButton.style.zIndex = 1;
101
+ parent.appendChild(downloadButton);
102
+
103
+ downloadButton.addEventListener("click", async () => {
104
+ try {
105
+ await navigator.clipboard.writeText(pgn);
106
+ alert("PGN Copied");
107
+ return;
108
+ } catch (err) {
109
+ console.info(
110
+ "Clipboard access failed. Fall back to display for manual copy."
111
+ );
112
+ }
113
+
114
+ try {
115
+ const pgnDiv = document.createElement("div");
116
+ downloadButton.textContent = "";
117
+ pgnDiv.style.position = "absolute";
118
+ pgnDiv.style.top = "8px";
119
+ pgnDiv.style.left = "8px";
120
+ pgnDiv.style.zIndex = 2;
121
+ pgnDiv.style.border = "1px solid black";
122
+ pgnDiv.style.padding = "8px";
123
+ pgnDiv.style.background = "#FFFFFF";
124
+ pgnDiv.style.fontFamily = "monospace";
125
+ pgnDiv.style.whiteSpace = "pre-wrap";
126
+
127
+ // Split the PGN into lines and add each to a span for better formatting
128
+ const pgnLines = pgn.split("\n");
129
+ pgnLines.forEach((line) => {
130
+ const lineSpan = document.createElement("span");
131
+ lineSpan.textContent = line + "\n";
132
+ pgnDiv.appendChild(lineSpan);
133
+ });
134
+ parent.appendChild(pgnDiv);
135
+ const closeButton = document.createElement("span");
136
+ closeButton.textContent = "×";
137
+ closeButton.style.position = "absolute";
138
+ closeButton.style.top = "5px";
139
+ closeButton.style.right = "5px";
140
+ closeButton.style.cursor = "pointer";
141
+ closeButton.style.float = "right";
142
+ closeButton.style.fontSize = "16px";
143
+ closeButton.style.marginLeft = "5px";
144
+ closeButton.addEventListener("click", () => {
145
+ downloadButton.textContent = "Copy PGN";
146
+ parent.removeChild(pgnDiv);
147
+ });
148
+ pgnDiv.appendChild(closeButton);
149
+ } catch (e) {
150
+ console.error("Cannot display div");
151
+ alert("PGN cannot be generated");
152
+ }
153
+ });
154
+ } catch (e) {
155
+ console.error("Cannot create game pgn");
156
+ console.error(e);
157
+ }
158
+ }
159
+
24
160
  // Canvas setup and reset.
25
161
  let c = canvas.getContext("2d");
26
162
  canvas.width = canvasSize;
@@ -41,15 +177,23 @@ async function renderer(context) {
41
177
  const info = environment.info;
42
178
  const agent1 = info?.TeamNames?.[0] || "Agent 1";
43
179
  const agent2 = info?.TeamNames?.[1] || "Agent 2";
44
- const firstGame = environment.steps[step][0].observation.mark == "white"
45
- const fontSize = Math.round(.33 * offset)
180
+ const firstGame = environment.steps[step][0].observation.mark == "white";
181
+ const fontSize = Math.round(0.33 * offset);
46
182
  c.font = `${fontSize}px sans-serif`;
47
183
  c.fillStyle = "#FFFFFF";
48
184
  const agent1Reward = environment.steps[step][0].reward;
49
185
  const agent2Reward = environment.steps[step][1].reward;
50
186
  const charCount = agent1.length + agent2.length + 12;
51
- const title = `${firstGame ? "\u25A0" : "\u25A1"}${agent1} (${agent1Reward}) vs ${firstGame ? "\u25A1" : "\u25A0"}${agent2} (${agent2Reward})`
52
- c.fillText(title, offset + 4 * squareSize - Math.floor(charCount * fontSize / 4), 40)
187
+ const title = `${
188
+ firstGame ? "\u25A0" : "\u25A1"
189
+ }${agent1} (${agent1Reward}) vs ${
190
+ firstGame ? "\u25A1" : "\u25A0"
191
+ }${agent2} (${agent2Reward})`;
192
+ c.fillText(
193
+ title,
194
+ offset + 4 * squareSize - Math.floor((charCount * fontSize) / 4),
195
+ 40
196
+ );
53
197
 
54
198
  // Draw the Pieces
55
199
  const board = environment.steps[step][0].observation.board;
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: kaggle-environments
3
- Version: 1.16.6
3
+ Version: 1.16.8
4
4
  Summary: Kaggle Environments
5
5
  Home-page: https://github.com/Kaggle/kaggle-environments
6
6
  Author: Kaggle
@@ -1,4 +1,4 @@
1
- kaggle_environments/__init__.py,sha256=MqHqPLX3XxkeHK16tIDhQ7zDdUMEgZzveSlQ0yYUnNo,1682
1
+ kaggle_environments/__init__.py,sha256=FnLe0VzS2blXtoM59BGPBbwYrt_VBzEO-eipZYSDaTs,1682
2
2
  kaggle_environments/agent.py,sha256=MGBOuCojql8vuODPdyPYJgKRnVAVI_D_YDl53J15aPM,6698
3
3
  kaggle_environments/api.py,sha256=eLBKqr11Ku4tdsMUdUqy74FIVEA_hdV3_QUpX84x3Z8,798
4
4
  kaggle_environments/core.py,sha256=IrEkN9cIA2djBAxI8Sz1GRpGNKjhqbnBdV6irAeTm8Q,27851
@@ -8,7 +8,7 @@ kaggle_environments/main.py,sha256=10wtcEFcGIjdOd9AEps5WOAwslc6Wsx3eZ43LXJa8jE,1
8
8
  kaggle_environments/schemas.json,sha256=zGzLyhqPdH6QQ0d48SrP5LKbvupprrWvgfQBerLqmhw,3307
9
9
  kaggle_environments/status_codes.json,sha256=6a8HuS_Vth95W0f2fov21QLdRfA3KbizUvjKmJhYtBc,995
10
10
  kaggle_environments/utils.py,sha256=FcI17PA4QK2-hyNp0dryS0TQ2pFlH9K19zDUMmuF4-E,5713
11
- kaggle_environments/envs/chess/chess.js,sha256=RVwu2meNTKiXxd15WGZXr5NVwm_RgKMlqIFkzKJ7IaM,30743
11
+ kaggle_environments/envs/chess/chess.js,sha256=EbV8wwnE0ZXX0MYVEv3Xknye96JY2O0yRiobR0RCYNc,35818
12
12
  kaggle_environments/envs/chess/chess.json,sha256=uo0J_Y2DDwv_T8Kyu1xfduUfzAi6T098LTqQm_EqcnU,1548
13
13
  kaggle_environments/envs/chess/chess.py,sha256=fON4l77eR8twHJo1YDcOT2iMxrvHZcIICMB62iYHZUA,7651
14
14
  kaggle_environments/envs/chess/test_chess.py,sha256=ayZEIWRSD3D6BqhJv0q_M5a-j8-pMm8kb4ACAW-DhBE,1748
@@ -201,9 +201,9 @@ kaggle_environments/envs/tictactoe/tictactoe.js,sha256=NZDT-oSG0a6a-rso9Ldh9qkJw
201
201
  kaggle_environments/envs/tictactoe/tictactoe.json,sha256=zMXZ8-fpT7FBhzz2FFBvRLn4XwtngjEqOieMvI6cCj8,1121
202
202
  kaggle_environments/envs/tictactoe/tictactoe.py,sha256=iLNU5V-lz7Xab-d1vpPMfU5jDM3QtgBUH63Y_SU7I9Y,3639
203
203
  kaggle_environments/static/player.html,sha256=XyVoe0XxMa2MO1fTDY_rjyjzPN-JZgbVwJIDoLSnlw0,23016
204
- kaggle_environments-1.16.6.dist-info/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
205
- kaggle_environments-1.16.6.dist-info/METADATA,sha256=DRMJLyRpY876eLbYSd94SVW6ChanggYUjVo20mQjXLE,10699
206
- kaggle_environments-1.16.6.dist-info/WHEEL,sha256=m9WAupmBd2JGDsXWQGJgMGXIWbQY3F5c2xBJbBhq0nY,110
207
- kaggle_environments-1.16.6.dist-info/entry_points.txt,sha256=HbVC-LKGQFV6lEEYBYyDTtrkHgdHJUWQ8_qt9KHGqz4,70
208
- kaggle_environments-1.16.6.dist-info/top_level.txt,sha256=v3MMWIPMQFcI-WuF_dJngHWe9Bb2yH_6p4wat1x4gAc,20
209
- kaggle_environments-1.16.6.dist-info/RECORD,,
204
+ kaggle_environments-1.16.8.dist-info/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
205
+ kaggle_environments-1.16.8.dist-info/METADATA,sha256=VhqcmBNdk8Mx4bk3MQjCDLzti2WF-A8LsjEoqiCPKEU,10699
206
+ kaggle_environments-1.16.8.dist-info/WHEEL,sha256=m9WAupmBd2JGDsXWQGJgMGXIWbQY3F5c2xBJbBhq0nY,110
207
+ kaggle_environments-1.16.8.dist-info/entry_points.txt,sha256=HbVC-LKGQFV6lEEYBYyDTtrkHgdHJUWQ8_qt9KHGqz4,70
208
+ kaggle_environments-1.16.8.dist-info/top_level.txt,sha256=v3MMWIPMQFcI-WuF_dJngHWe9Bb2yH_6p4wat1x4gAc,20
209
+ kaggle_environments-1.16.8.dist-info/RECORD,,