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

@@ -21,7 +21,7 @@ from .main import http_request
21
21
  from . import errors
22
22
  from . import utils
23
23
 
24
- __version__ = "1.14.8"
24
+ __version__ = "1.14.11"
25
25
 
26
26
  __all__ = ["Agent", "environments", "errors", "evaluate", "http_request",
27
27
  "make", "register", "utils", "__version__",
@@ -103,40 +103,43 @@ def guesser_action(active, inactive, step):
103
103
  if active.action and keyword_guessed(active.action):
104
104
  guessed = True
105
105
  score = 20 - int(step / 3)
106
- end_game(active, inactive, score, DONE, DONE)
106
+ end_game(active, score, DONE)
107
+ end_game(inactive, score, DONE)
107
108
  return guessed
108
109
 
109
- def end_game(active, inactive, reward, status, inactive_status):
110
- active.observation.keyword = keyword
111
- active.observation.category = category
112
- inactive.observation.keyword = keyword
113
- inactive.observation.category = category
114
- active.reward = reward
115
- inactive.reward = reward
116
- active.status = status
117
- inactive.status = inactive_status
118
-
110
+ def end_game(agent, reward, status):
111
+ agent.observation.keyword = keyword
112
+ agent.observation.category = category
113
+ agent.reward = reward
114
+ agent.status = status
119
115
 
120
116
  def answerer_action(active, inactive):
121
117
  active.observation.keyword = keyword
122
118
  active.observation.category = category
123
119
  response = active.action
120
+ bad_response = False
124
121
  if not response:
125
122
  response = "none"
126
- end_game(active, inactive, -1, ERROR, DONE)
123
+ end_game(active, -1, ERROR)
124
+ end_game(inactive, 1, DONE)
125
+ bad_response = True
127
126
  elif "yes" in response.lower():
128
127
  response = "yes"
129
128
  elif "no" in response.lower():
130
129
  response = "no"
131
130
  else:
132
131
  response = "maybe"
133
- end_game(active, inactive, -1, ERROR, DONE)
132
+ end_game(active, -1, ERROR)
133
+ end_game(inactive, 1, DONE)
134
+ bad_response = True
134
135
  active.observation.answers.append(response)
135
136
  inactive.observation.answers.append(response)
137
+ return bad_response
136
138
 
137
139
  def increment_turn(active, inactive, step, guessed):
138
140
  if step == 59 and not guessed:
139
- end_game(active, inactive, -1, DONE, DONE)
141
+ end_game(active, -1, DONE)
142
+ end_game(inactive, -1, DONE)
140
143
  elif active.observation.turnType == "guess":
141
144
  active.observation.turnType = "ask"
142
145
  elif active.observation.turnType == "ask":
@@ -171,42 +174,47 @@ def interpreter(state, env):
171
174
  end_early = (active1 and active1.status) in (TIMEOUT, ERROR) or (active2 and active2.status in (TIMEOUT, ERROR))
172
175
  one_guessed = False
173
176
  two_guessed = False
177
+ one_bad_response = False
178
+ two_bad_response = False
174
179
 
175
- if active1 is not None:
176
- guessed = False
177
- if active1.observation.role == GUESSER:
178
- guessed = guesser_action(active1, inactive1, step)
179
- one_guessed = guessed
180
- else:
181
- answerer_action(active1, inactive1)
180
+ if active1 is None or active2 is None:
181
+ raise ValueError
182
182
 
183
- if active1.status in (TIMEOUT, ERROR):
184
- end_game(active1, inactive1, 0, active1.status, DONE)
185
- elif end_early:
186
- end_game(active1, inactive1, 0, DONE, DONE)
187
- else:
188
- increment_turn(active1, inactive1, step, guessed)
189
-
190
- if active2 is not None:
191
- guessed = False
192
- if active2.observation.role == GUESSER:
193
- guessed = guesser_action(active2, inactive2, step)
194
- two_guessed = guessed
195
- else:
196
- answerer_action(active2, inactive2)
183
+ if active1.observation.role == GUESSER:
184
+ one_guessed = guesser_action(active1, inactive1, step)
185
+ else:
186
+ one_bad_response = answerer_action(active1, inactive1)
197
187
 
198
- if active2.status in (TIMEOUT, ERROR):
199
- end_game(active2, inactive2, 0, active2.status, DONE)
200
- elif end_early:
201
- end_game(active2, inactive2, 0, DONE, DONE)
202
- else:
203
- increment_turn(active2, inactive2, step, guessed)
188
+ if active2.observation.role == GUESSER:
189
+ two_guessed = guesser_action(active2, inactive2, step)
190
+ else:
191
+ two_bad_response = answerer_action(active2, inactive2)
192
+
193
+ if active1.status in (TIMEOUT, ERROR) or one_bad_response:
194
+ end_game(active1, -1, active1.status)
195
+ end_game(inactive1, 1, DONE)
196
+ elif end_early or two_bad_response:
197
+ end_game(active1, 1, DONE)
198
+ end_game(inactive1, 1, DONE)
199
+ else:
200
+ increment_turn(active1, inactive1, step, one_guessed)
201
+
202
+ if active2.status in (TIMEOUT, ERROR) or two_bad_response:
203
+ end_game(active2, -1, active2.status)
204
+ end_game(inactive2, 1, DONE)
205
+ elif end_early or one_bad_response:
206
+ end_game(active2, 1, DONE)
207
+ end_game(inactive2, 1, DONE)
208
+ else:
209
+ increment_turn(active2, inactive2, step, two_guessed)
204
210
 
205
211
  # make sure to end the game if only one team guessed correctly this round
206
212
  if one_guessed and not two_guessed:
207
- end_game(active2, inactive2, 0, DONE, DONE)
213
+ end_game(active2, 0, DONE)
214
+ end_game(inactive2, 0, DONE)
208
215
  elif two_guessed and not one_guessed:
209
- end_game(active1, inactive1, 0, DONE, DONE)
216
+ end_game(active1, 0, DONE)
217
+ end_game(inactive1, 0, DONE)
210
218
 
211
219
  return state
212
220
 
@@ -0,0 +1,53 @@
1
+
2
+ from kaggle_environments import make
3
+
4
+ def custom_questioner(obs):
5
+ if obs.turnType == "guess":
6
+ return "banana"
7
+ return "Is it a banana?"
8
+
9
+ def custom_answerer():
10
+ return "no"
11
+
12
+ def bad_answerer():
13
+ return "maybe?"
14
+
15
+ def error_agent():
16
+ raise ValueError
17
+
18
+ def test_llm_20_q_completes():
19
+ env = make("llm_20_questions", debug=True)
20
+ env.run([custom_questioner, custom_answerer, custom_questioner, custom_answerer])
21
+ json = env.toJSON()
22
+ assert json["name"] == "llm_20_questions"
23
+ assert json["statuses"] == ["DONE", "DONE", "DONE", "DONE"]
24
+
25
+ def test_llm_20_q_errors_on_bad_answer():
26
+ env = make("llm_20_questions", debug=True)
27
+ env.run([custom_questioner, custom_answerer, custom_questioner, bad_answerer])
28
+ json = env.toJSON()
29
+ assert json["name"] == "llm_20_questions"
30
+ assert json["rewards"] == [1, 1, 1, None]
31
+ assert json["statuses"] == ["DONE", "DONE", "DONE", "ERROR"]
32
+ print(len(json["steps"]))
33
+ assert len(json["steps"]) == 3
34
+
35
+ def test_llm_20_q_errors_on_error_answer():
36
+ env = make("llm_20_questions", debug=True)
37
+ env.run([custom_questioner, custom_answerer, custom_questioner, error_agent])
38
+ json = env.toJSON()
39
+ assert json["name"] == "llm_20_questions"
40
+ assert json["rewards"] == [1, 1, 1, None]
41
+ assert json["statuses"] == ["DONE", "DONE", "DONE", "ERROR"]
42
+ print(len(json["steps"]))
43
+ assert len(json["steps"]) == 3
44
+
45
+ def test_llm_20_q_errors_on_error_question():
46
+ env = make("llm_20_questions", debug=True)
47
+ env.run([custom_questioner, custom_answerer, error_agent, custom_answerer])
48
+ json = env.toJSON()
49
+ assert json["name"] == "llm_20_questions"
50
+ assert json["rewards"] == [1, 1, None, 1]
51
+ assert json["statuses"] == ["DONE", "DONE", "ERROR", "DONE"]
52
+ print(len(json["steps"]))
53
+ assert len(json["steps"]) == 2
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: kaggle-environments
3
- Version: 1.14.8
3
+ Version: 1.14.11
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=_XNpfNZWcKf_xHo9cNHtbWb4CJqMqG-ybF_RnI4C6HE,1702
1
+ kaggle_environments/__init__.py,sha256=jB8Zxnx8_IrtPX8ArsCgrfeRPXcejHOZvDx1-PhHiE0,1703
2
2
  kaggle_environments/agent.py,sha256=BpYrAC6EOhJF3Wzynq-CWg8l-z5uXW1Lq4qUsyOM0ik,6203
3
3
  kaggle_environments/api.py,sha256=eLBKqr11Ku4tdsMUdUqy74FIVEA_hdV3_QUpX84x3Z8,798
4
4
  kaggle_environments/core.py,sha256=IrEkN9cIA2djBAxI8Sz1GRpGNKjhqbnBdV6irAeTm8Q,27851
@@ -72,7 +72,8 @@ kaggle_environments/envs/kore_fleets/starter_bots/ts/test/observation.json,sha25
72
72
  kaggle_environments/envs/llm_20_questions/keywords.py,sha256=BnyVrV0_xbiDt_Td4YXSKae9hHndAo5YYfYVtyL4eS4,45282
73
73
  kaggle_environments/envs/llm_20_questions/llm_20_questions.js,sha256=o30Nx1Tt0eAxBsQukmyxYlr7GuvptTUADWUnEnYDHe8,6009
74
74
  kaggle_environments/envs/llm_20_questions/llm_20_questions.json,sha256=VYxgQEDCaJv910sQdE_FOtV2w1V83Y3C6nTjx4FFZyo,2101
75
- kaggle_environments/envs/llm_20_questions/llm_20_questions.py,sha256=zP8ut87PKgiNeZR6st4Lch5vzLAggMcLbB1kPIB4T5k,9430
75
+ kaggle_environments/envs/llm_20_questions/llm_20_questions.py,sha256=Xj1slTw2WVwf94NNKV92qqJI52vuIY8quDwzuJq5Kgc,9563
76
+ kaggle_environments/envs/llm_20_questions/test_llm_20_questions.py,sha256=sq04OePvY9VSR4Cjw4RI_i5FMwGni_ewpr5fcF2HldY,1831
76
77
  kaggle_environments/envs/lux_ai_2021/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
77
78
  kaggle_environments/envs/lux_ai_2021/agents.py,sha256=bDqsY17Jxrk69a8HXb96ex2U1ipKkQPVJuXxmiA5hMA,421
78
79
  kaggle_environments/envs/lux_ai_2021/index.html,sha256=4Ec1FuHuuH1EvkvlLOpNUUFYLovnS_IA-rOOHEUjcGY,1550
@@ -176,9 +177,9 @@ kaggle_environments/envs/tictactoe/tictactoe.js,sha256=NZDT-oSG0a6a-rso9Ldh9qkJw
176
177
  kaggle_environments/envs/tictactoe/tictactoe.json,sha256=zMXZ8-fpT7FBhzz2FFBvRLn4XwtngjEqOieMvI6cCj8,1121
177
178
  kaggle_environments/envs/tictactoe/tictactoe.py,sha256=iLNU5V-lz7Xab-d1vpPMfU5jDM3QtgBUH63Y_SU7I9Y,3639
178
179
  kaggle_environments/static/player.html,sha256=HH8qvFfTIDw8eZvw5W88jcCu58Lo4_eUQ1ak46KWVGQ,22945
179
- kaggle_environments-1.14.8.dist-info/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
180
- kaggle_environments-1.14.8.dist-info/METADATA,sha256=GpRi40uIxtp4vv9hJR0DD9FNOlkLH8MbVleNwvduV1s,10700
181
- kaggle_environments-1.14.8.dist-info/WHEEL,sha256=m9WAupmBd2JGDsXWQGJgMGXIWbQY3F5c2xBJbBhq0nY,110
182
- kaggle_environments-1.14.8.dist-info/entry_points.txt,sha256=HbVC-LKGQFV6lEEYBYyDTtrkHgdHJUWQ8_qt9KHGqz4,70
183
- kaggle_environments-1.14.8.dist-info/top_level.txt,sha256=v3MMWIPMQFcI-WuF_dJngHWe9Bb2yH_6p4wat1x4gAc,20
184
- kaggle_environments-1.14.8.dist-info/RECORD,,
180
+ kaggle_environments-1.14.11.dist-info/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
181
+ kaggle_environments-1.14.11.dist-info/METADATA,sha256=uL7fO1pEmq1BAPPyPUXv3mBa3JSlWnN8LbJcZb_kXfc,10701
182
+ kaggle_environments-1.14.11.dist-info/WHEEL,sha256=m9WAupmBd2JGDsXWQGJgMGXIWbQY3F5c2xBJbBhq0nY,110
183
+ kaggle_environments-1.14.11.dist-info/entry_points.txt,sha256=HbVC-LKGQFV6lEEYBYyDTtrkHgdHJUWQ8_qt9KHGqz4,70
184
+ kaggle_environments-1.14.11.dist-info/top_level.txt,sha256=v3MMWIPMQFcI-WuF_dJngHWe9Bb2yH_6p4wat1x4gAc,20
185
+ kaggle_environments-1.14.11.dist-info/RECORD,,