code-battles-cli 1.2.0__tar.gz → 1.2.1__tar.gz

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.
Files changed (20) hide show
  1. code_battles_cli-1.2.1/.python-version +1 -0
  2. {code_battles_cli-1.2.0 → code_battles_cli-1.2.1}/PKG-INFO +1 -1
  3. {code_battles_cli-1.2.0 → code_battles_cli-1.2.1}/pyproject.toml +1 -1
  4. {code_battles_cli-1.2.0 → code_battles_cli-1.2.1}/requirements-dev.lock +7 -0
  5. {code_battles_cli-1.2.0 → code_battles_cli-1.2.1}/requirements.lock +2 -0
  6. {code_battles_cli-1.2.0 → code_battles_cli-1.2.1}/src/code_battles_cli/api.py +21 -6
  7. {code_battles_cli-1.2.0 → code_battles_cli-1.2.1}/src/code_battles_cli/commands/upload.py +2 -1
  8. code_battles_cli-1.2.0/.python-version +0 -1
  9. {code_battles_cli-1.2.0 → code_battles_cli-1.2.1}/.github/workflows/test.yml +0 -0
  10. {code_battles_cli-1.2.0 → code_battles_cli-1.2.1}/.gitignore +0 -0
  11. {code_battles_cli-1.2.0 → code_battles_cli-1.2.1}/LICENSE.md +0 -0
  12. {code_battles_cli-1.2.0 → code_battles_cli-1.2.1}/README.md +0 -0
  13. {code_battles_cli-1.2.0 → code_battles_cli-1.2.1}/src/code_battles_cli/__init__.py +0 -0
  14. {code_battles_cli-1.2.0 → code_battles_cli-1.2.1}/src/code_battles_cli/__main__.py +0 -0
  15. {code_battles_cli-1.2.0 → code_battles_cli-1.2.1}/src/code_battles_cli/cli.py +0 -0
  16. {code_battles_cli-1.2.0 → code_battles_cli-1.2.1}/src/code_battles_cli/commands/__init__.py +0 -0
  17. {code_battles_cli-1.2.0 → code_battles_cli-1.2.1}/src/code_battles_cli/commands/download.py +0 -0
  18. {code_battles_cli-1.2.0 → code_battles_cli-1.2.1}/src/code_battles_cli/commands/run.py +0 -0
  19. {code_battles_cli-1.2.0 → code_battles_cli-1.2.1}/src/code_battles_cli/log.py +0 -0
  20. {code_battles_cli-1.2.0 → code_battles_cli-1.2.1}/tests/test_cli.py +0 -0
@@ -0,0 +1 @@
1
+ 3.8
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: code-battles-cli
3
- Version: 1.2.0
3
+ Version: 1.2.1
4
4
  Summary: A CLI for competitors in any Code Battles event!
5
5
  Requires-Python: >=3.8
6
6
  Requires-Dist: click>=8.1.7
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "code-battles-cli"
3
- version = "1.2.0"
3
+ version = "1.2.1"
4
4
  description = "A CLI for competitors in any Code Battles event!"
5
5
  dependencies = [
6
6
  "requests>=2.32.3",
@@ -18,6 +18,8 @@ charset-normalizer==3.4.0
18
18
  # via requests
19
19
  click==8.1.7
20
20
  # via code-battles-cli
21
+ exceptiongroup==1.3.0
22
+ # via pytest
21
23
  google-api-core==2.21.0
22
24
  # via google-cloud-core
23
25
  # via google-cloud-firestore
@@ -73,5 +75,10 @@ rich==13.9.3
73
75
  # via code-battles-cli
74
76
  rsa==4.9
75
77
  # via google-auth
78
+ tomli==2.2.1
79
+ # via pytest
80
+ typing-extensions==4.13.2
81
+ # via exceptiongroup
82
+ # via rich
76
83
  urllib3==2.2.3
77
84
  # via requests
@@ -66,5 +66,7 @@ rich==13.9.3
66
66
  # via code-battles-cli
67
67
  rsa==4.9
68
68
  # via google-auth
69
+ typing-extensions==4.13.2
70
+ # via rich
69
71
  urllib3==2.2.3
70
72
  # via requests
@@ -28,6 +28,18 @@ SIMULATION_FINISHED_MARK = b"--- SIMULATION FINISHED ---"
28
28
  SIMULATION_STEP_MARK = b"__CODE_BATTLES_ADVANCE_STEP"
29
29
 
30
30
 
31
+ def normalize(url: str):
32
+ if url.startswith("https"):
33
+ url = url[5:]
34
+
35
+ try:
36
+ url = url[: url.index(".web.app")]
37
+ except ValueError:
38
+ pass
39
+
40
+ return url
41
+
42
+
31
43
  class SimulationException(Exception):
32
44
  def __init__(self, stderr: bytes, exit_code: int):
33
45
  self.stderr = stderr
@@ -213,11 +225,7 @@ class Client:
213
225
 
214
226
  def _possibly_download(self, force_download=False):
215
227
  directory_name = "".join(
216
- [
217
- c
218
- for c in self.url.removeprefix("https").removesuffix(".web.app")
219
- if c.isalnum() or c == "-"
220
- ]
228
+ [c for c in normalize(self.url) if c.isalnum() or c == "-"]
221
229
  )
222
230
  code_directory = os.path.expanduser(f"~/.cache/code-battles/{directory_name}")
223
231
 
@@ -242,6 +250,9 @@ class Client:
242
250
  on_step: Optional[Callable[[], None]] = None,
243
251
  ) -> Union[SimulationResults, str]:
244
252
  while True:
253
+ if p.poll() is not None:
254
+ raise SimulationException(p.stderr.read(), p.returncode)
255
+
245
256
  line: bytes = p.stdout.readline()
246
257
  line = line.strip()
247
258
  if line == SIMULATION_FINISHED_MARK:
@@ -310,7 +321,11 @@ class Client:
310
321
  os.path.join(code_directory, "packed.py"),
311
322
  "simulate",
312
323
  str(seed),
313
- str(os.path.abspath(output_file)),
324
+ str(
325
+ os.path.abspath(output_file)
326
+ if output_file is not None
327
+ else output_file
328
+ ),
314
329
  json.dumps(parameters),
315
330
  "-".join(bot_names),
316
331
  ]
@@ -45,4 +45,5 @@ def upload(
45
45
 
46
46
  client = Client(url, username, password, dump_credentials)
47
47
  client.set_bots({bot_name: bot_code})
48
- log.info(f"{bot_code.count('\n') + 1} lines of code were uploaded as '{bot_name}'.")
48
+ line_count = bot_code.count("\n") + 1
49
+ log.info(f"{line_count} lines of code were uploaded as '{bot_name}'.")
@@ -1 +0,0 @@
1
- 3.12.2