code-battles 1.7.0 → 1.7.1

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 (52) hide show
  1. package/dist/cjs/index.js +2150 -1952
  2. package/dist/cjs/styles.css +2 -1
  3. package/dist/cjs/types/components/DataTable.d.ts +21 -0
  4. package/dist/cjs/types/components/ResultStaticsTable.d.ts +3 -0
  5. package/dist/cjs/types/configuration.d.ts +0 -1
  6. package/dist/code_battles/battles.py +18 -2
  7. package/dist/code_battles/utilities.py +5 -1
  8. package/dist/esm/index.js +2151 -1953
  9. package/dist/esm/styles.css +2 -1
  10. package/dist/esm/types/components/DataTable.d.ts +21 -0
  11. package/dist/esm/types/components/ResultStaticsTable.d.ts +3 -0
  12. package/dist/esm/types/configuration.d.ts +0 -1
  13. package/dist/index.d.ts +0 -1
  14. package/dist/pyscript/codemirror-eKulCBrd.js +2 -0
  15. package/dist/pyscript/codemirror-eKulCBrd.js.map +1 -0
  16. package/dist/pyscript/codemirror_commands-BVu_0Pnj.js +2 -0
  17. package/dist/pyscript/codemirror_commands-BVu_0Pnj.js.map +1 -0
  18. package/dist/pyscript/codemirror_lang-python-a2LxSo5G.js +2 -0
  19. package/dist/pyscript/codemirror_lang-python-a2LxSo5G.js.map +1 -0
  20. package/dist/pyscript/codemirror_language-_2pXlKJ9.js +2 -0
  21. package/dist/pyscript/codemirror_language-_2pXlKJ9.js.map +1 -0
  22. package/dist/pyscript/codemirror_view-DMW9kQlJ.js +2 -0
  23. package/dist/pyscript/codemirror_view-DMW9kQlJ.js.map +1 -0
  24. package/dist/pyscript/core-DezwbZpG.js +4 -0
  25. package/dist/pyscript/core-DezwbZpG.js.map +1 -0
  26. package/dist/pyscript/core.js +1 -1
  27. package/dist/pyscript/deprecations-manager-B1bDno27.js +2 -0
  28. package/dist/pyscript/deprecations-manager-B1bDno27.js.map +1 -0
  29. package/dist/pyscript/donkey-DNl0ASkM.js +2 -0
  30. package/dist/pyscript/donkey-DNl0ASkM.js.map +1 -0
  31. package/dist/pyscript/error-DmRE4Y-7.js +2 -0
  32. package/dist/pyscript/error-DmRE4Y-7.js.map +1 -0
  33. package/dist/pyscript/index-DkgvWIf-.js +2 -0
  34. package/dist/pyscript/index-DkgvWIf-.js.map +1 -0
  35. package/dist/pyscript/mpy-BoY0tVRD.js +2 -0
  36. package/dist/pyscript/mpy-BoY0tVRD.js.map +1 -0
  37. package/dist/pyscript/py-DsQqgZuM.js +2 -0
  38. package/dist/pyscript/py-DsQqgZuM.js.map +1 -0
  39. package/dist/pyscript/py-editor-DZkG_or6.js +2 -0
  40. package/dist/pyscript/py-editor-DZkG_or6.js.map +1 -0
  41. package/dist/pyscript/py-game-D0Z4YnzZ.js +2 -0
  42. package/dist/pyscript/py-game-D0Z4YnzZ.js.map +1 -0
  43. package/dist/pyscript/py-terminal-DYHK7LJ0.js +2 -0
  44. package/dist/pyscript/py-terminal-DYHK7LJ0.js.map +1 -0
  45. package/dist/pyscript/service-worker.js +1 -0
  46. package/dist/pyscript/storage.js +1 -1
  47. package/dist/pyscript/storage.js.map +1 -1
  48. package/dist/pyscript/xterm-CVv2fC4I.js +2 -0
  49. package/dist/pyscript/xterm-CVv2fC4I.js.map +1 -0
  50. package/dist/pyscript/zip-D13-hp9W.js +2 -0
  51. package/dist/pyscript/zip-D13-hp9W.js.map +1 -0
  52. package/package.json +14 -14
@@ -2,4 +2,5 @@
2
2
  pre[class*="language-"].line-numbers{position:relative;padding-left:3.8em;counter-reset:linenumber;}pre[class*="language-"].line-numbers>code{position:relative;white-space:inherit;}.line-numbers .line-numbers-rows{position:absolute;pointer-events:none;top:0;font-size:100%;left:-3.8em;width:3em;letter-spacing:-1px;border-right:1px solid #999;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;}.line-numbers-rows>span{display:block;counter-increment:linenumber;}.line-numbers-rows>span:before{content:counter(linenumber);color:#999;display:block;padding-right:0.8em;text-align:right;}
3
3
  code[class*="language-"],pre[class*="language-"]{color:black;background:none;text-shadow:0 1px white;font-family:Consolas,Monaco,'Andale Mono','Ubuntu Mono',monospace;font-size:1em;text-align:left;white-space:pre;word-spacing:normal;word-break:normal;word-wrap:normal;line-height:1.5;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-hyphens:none;-moz-hyphens:none;-ms-hyphens:none;hyphens:none;}pre[class*="language-"]::-moz-selection,pre[class*="language-"] ::-moz-selection,code[class*="language-"]::-moz-selection,code[class*="language-"] ::-moz-selection{text-shadow:none;background:#b3d4fc;}pre[class*="language-"]::selection,pre[class*="language-"] ::selection,code[class*="language-"]::selection,code[class*="language-"] ::selection{text-shadow:none;background:#b3d4fc;}@media print{code[class*="language-"],pre[class*="language-"]{text-shadow:none;}}pre[class*="language-"]{padding:1em;margin:.5em 0;overflow:auto;}:not(pre)>code[class*="language-"],pre[class*="language-"]{background:#f5f2f0;}:not(pre)>code[class*="language-"]{padding:.1em;border-radius:.3em;white-space:normal;}.token.comment,.token.prolog,.token.doctype,.token.cdata{color:slategray;}.token.punctuation{color:#999;}.token.namespace{opacity:.7;}.token.property,.token.tag,.token.boolean,.token.number,.token.constant,.token.symbol,.token.deleted{color:#905;}.token.selector,.token.attr-name,.token.string,.token.char,.token.builtin,.token.inserted{color:#690;}.token.operator,.token.entity,.token.url,.language-css .token.string,.style .token.string{color:#9a6e3a;background:hsla(0,0%,100%,.5);}.token.atrule,.token.attr-value,.token.keyword{color:#07a;}.token.function,.token.class-name{color:#DD4A68;}.token.regex,.token.important,.token.variable{color:#e90;}.token.important,.token.bold{font-weight:bold;}.token.italic{font-style:italic;}.token.entity{cursor:help;}
4
4
  py-config,py-script,py-splashscreen,.py-error{display:none;}h1,h2,h3,h4,h5,h6,p{margin:0;}
5
- .token.operator{background:inherit !important;}pre[class*="language-"],code[class*="language-"]{color:#d4d4d4;font-size:13px;text-shadow:none;font-family:Menlo,Monaco,Consolas,"Andale Mono","Ubuntu Mono","Courier New",monospace;direction:ltr;text-align:left;white-space:pre;word-spacing:normal;word-break:normal;line-height:1.5;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-hyphens:none;-moz-hyphens:none;-ms-hyphens:none;hyphens:none;}pre[class*="language-"]::selection,code[class*="language-"]::selection,pre[class*="language-"] *::selection,code[class*="language-"] *::selection{text-shadow:none;background:#264f78;}@media print{pre[class*="language-"],code[class*="language-"]{text-shadow:none;}}pre[class*="language-"]{padding:1em;margin:0.5em 0;overflow:auto;background:#1e1e1e;}:not(pre)>code[class*="language-"]{padding:0.1em 0.3em;border-radius:0.3em;color:#db4c69;background:#1e1e1e;}.namespace{opacity:0.7;}.token.doctype .token.doctype-tag{color:#569cd6;}.token.doctype .token.name{color:#9cdcfe;}.token.comment,.token.prolog{color:#6a9955;}.token.punctuation,.language-html .language-css .token.punctuation,.language-html .language-javascript .token.punctuation{color:#d4d4d4;}.token.property,.token.tag,.token.boolean,.token.number,.token.constant,.token.symbol,.token.inserted,.token.unit{color:#b5cea8;}.token.selector,.token.attr-name,.token.string,.token.char,.token.builtin,.token.deleted{color:#ce9178;}.language-css .token.string.url{text-decoration:underline;}.token.operator,.token.entity{color:#d4d4d4;}.token.operator.arrow{color:#569cd6;}.token.atrule{color:#ce9178;}.token.atrule .token.rule{color:#c586c0;}.token.atrule .token.url{color:#9cdcfe;}.token.atrule .token.url .token.function{color:#dcdcaa;}.token.atrule .token.url .token.punctuation{color:#d4d4d4;}.token.keyword{color:#569cd6;}.token.keyword.module,.token.keyword.control-flow{color:#c586c0;}.token.function,.token.function .token.maybe-class-name{color:#dcdcaa;}.token.regex{color:#d16969;}.token.important{color:#569cd6;}.token.italic{font-style:italic;}.token.constant{color:#9cdcfe;}.token.class-name,.token.maybe-class-name{color:#4ec9b0;}.token.console{color:#9cdcfe;}.token.parameter{color:#9cdcfe;}.token.interpolation{color:#9cdcfe;}.token.punctuation.interpolation-punctuation{color:#569cd6;}.token.boolean{color:#569cd6;}.token.property,.token.variable,.token.imports .token.maybe-class-name,.token.exports .token.maybe-class-name{color:#9cdcfe;}.token.selector{color:#d7ba7d;}.token.escape{color:#d7ba7d;}.token.tag{color:#569cd6;}.token.tag .token.punctuation{color:#808080;}.token.cdata{color:#808080;}.token.attr-name{color:#9cdcfe;}.token.attr-value,.token.attr-value .token.punctuation{color:#ce9178;}.token.attr-value .token.punctuation.attr-equals{color:#d4d4d4;}.token.entity{color:#569cd6;}.token.namespace{color:#4ec9b0;}pre[class*="language-javascript"],code[class*="language-javascript"],pre[class*="language-jsx"],code[class*="language-jsx"],pre[class*="language-typescript"],code[class*="language-typescript"],pre[class*="language-tsx"],code[class*="language-tsx"]{color:#9cdcfe;}pre[class*="language-css"],code[class*="language-css"]{color:#ce9178;}pre[class*="language-html"],code[class*="language-html"]{color:#d4d4d4;}.language-regex .token.anchor{color:#dcdcaa;}.language-html .token.punctuation{color:#808080;}pre[class*="language-"]>code[class*="language-"]{position:relative;z-index:1;}.line-highlight.line-highlight{background:#f7ebc6;box-shadow:inset 5px 0 0 #f7d87c;z-index:0;}
5
+ .token.operator{background:inherit !important;}pre[class*="language-"],code[class*="language-"]{color:#d4d4d4;font-size:13px;text-shadow:none;font-family:Menlo,Monaco,Consolas,"Andale Mono","Ubuntu Mono","Courier New",monospace;direction:ltr;text-align:left;white-space:pre;word-spacing:normal;word-break:normal;line-height:1.5;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-hyphens:none;-moz-hyphens:none;-ms-hyphens:none;hyphens:none;}pre[class*="language-"]::selection,code[class*="language-"]::selection,pre[class*="language-"] *::selection,code[class*="language-"] *::selection{text-shadow:none;background:#264f78;}@media print{pre[class*="language-"],code[class*="language-"]{text-shadow:none;}}pre[class*="language-"]{padding:1em;margin:0.5em 0;overflow:auto;background:#1e1e1e;}:not(pre)>code[class*="language-"]{padding:0.1em 0.3em;border-radius:0.3em;color:#db4c69;background:#1e1e1e;}.namespace{opacity:0.7;}.token.doctype .token.doctype-tag{color:#569cd6;}.token.doctype .token.name{color:#9cdcfe;}.token.comment,.token.prolog{color:#6a9955;}.token.punctuation,.language-html .language-css .token.punctuation,.language-html .language-javascript .token.punctuation{color:#d4d4d4;}.token.property,.token.tag,.token.boolean,.token.number,.token.constant,.token.symbol,.token.inserted,.token.unit{color:#b5cea8;}.token.selector,.token.attr-name,.token.string,.token.char,.token.builtin,.token.deleted{color:#ce9178;}.language-css .token.string.url{text-decoration:underline;}.token.operator,.token.entity{color:#d4d4d4;}.token.operator.arrow{color:#569cd6;}.token.atrule{color:#ce9178;}.token.atrule .token.rule{color:#c586c0;}.token.atrule .token.url{color:#9cdcfe;}.token.atrule .token.url .token.function{color:#dcdcaa;}.token.atrule .token.url .token.punctuation{color:#d4d4d4;}.token.keyword{color:#569cd6;}.token.keyword.module,.token.keyword.control-flow{color:#c586c0;}.token.function,.token.function .token.maybe-class-name{color:#dcdcaa;}.token.regex{color:#d16969;}.token.important{color:#569cd6;}.token.italic{font-style:italic;}.token.constant{color:#9cdcfe;}.token.class-name,.token.maybe-class-name{color:#4ec9b0;}.token.console{color:#9cdcfe;}.token.parameter{color:#9cdcfe;}.token.interpolation{color:#9cdcfe;}.token.punctuation.interpolation-punctuation{color:#569cd6;}.token.boolean{color:#569cd6;}.token.property,.token.variable,.token.imports .token.maybe-class-name,.token.exports .token.maybe-class-name{color:#9cdcfe;}.token.selector{color:#d7ba7d;}.token.escape{color:#d7ba7d;}.token.tag{color:#569cd6;}.token.tag .token.punctuation{color:#808080;}.token.cdata{color:#808080;}.token.attr-name{color:#9cdcfe;}.token.attr-value,.token.attr-value .token.punctuation{color:#ce9178;}.token.attr-value .token.punctuation.attr-equals{color:#d4d4d4;}.token.entity{color:#569cd6;}.token.namespace{color:#4ec9b0;}pre[class*="language-javascript"],code[class*="language-javascript"],pre[class*="language-jsx"],code[class*="language-jsx"],pre[class*="language-typescript"],code[class*="language-typescript"],pre[class*="language-tsx"],code[class*="language-tsx"]{color:#9cdcfe;}pre[class*="language-css"],code[class*="language-css"]{color:#ce9178;}pre[class*="language-html"],code[class*="language-html"]{color:#d4d4d4;}.language-regex .token.anchor{color:#dcdcaa;}.language-html .token.punctuation{color:#808080;}pre[class*="language-"]>code[class*="language-"]{position:relative;z-index:1;}.line-highlight.line-highlight{background:#f7ebc6;box-shadow:inset 5px 0 0 #f7d87c;z-index:0;}
6
+ .control{width:100%;padding:10px;cursor:pointer;}.control:hover{background-color:light-dark(var(--mantine-color-gray-0),var(--mantine-color-dark-6));}
@@ -0,0 +1,21 @@
1
+ import React from "react";
2
+ import "./DataTable.css";
3
+ export interface DataTableData {
4
+ head: string[];
5
+ body: string[][];
6
+ }
7
+ declare const DataTable: ({ tableName, data, renderValue, renderHead, disableSort, hideIfEmpty, selectable, selectedRows, setSelectedRows, defaultSort, defaultReversed, stickyFirstColumn, }: {
8
+ tableName: string;
9
+ data: DataTableData;
10
+ renderValue?: (rowIndex: number, columnName: string, value: string) => React.ReactNode;
11
+ renderHead?: (columnName: string, columnIndex: number) => React.ReactNode;
12
+ disableSort?: boolean;
13
+ hideIfEmpty?: boolean;
14
+ selectable?: boolean;
15
+ selectedRows?: number[];
16
+ setSelectedRows?: React.Dispatch<React.SetStateAction<number[]>>;
17
+ defaultSort?: number;
18
+ defaultReversed?: boolean;
19
+ stickyFirstColumn?: boolean;
20
+ }) => React.JSX.Element;
21
+ export default DataTable;
@@ -0,0 +1,3 @@
1
+ import React from "react";
2
+ declare const ResultStatisticsTable: () => React.JSX.Element;
3
+ export default ResultStatisticsTable;
@@ -9,7 +9,6 @@ interface CodeBattlesDatesConfiguration {
9
9
  locale?: string;
10
10
  firstDayOfWeek?: DayOfWeek;
11
11
  weekendDays?: DayOfWeek[];
12
- timezone?: string;
13
12
  }
14
13
  interface CodeBattlesOptionalConfiguration {
15
14
  primaryColor: string;
@@ -10,7 +10,7 @@ import traceback
10
10
  import typing
11
11
  from dataclasses import dataclass
12
12
  from random import Random
13
- from typing import Any, Dict, Generic, List, Optional, Set, Tuple, TypeVar
13
+ from typing import Any, Dict, Generic, List, Optional, Set, Tuple, TypeVar, Union
14
14
  from urllib.parse import quote
15
15
 
16
16
  from code_battles.utilities import (
@@ -235,6 +235,15 @@ class CodeBattles(
235
235
 
236
236
  pass
237
237
 
238
+ def get_statistics(self) -> Dict[str, Union[int, float]]:
239
+ """
240
+ Optional method to return statistics, called after the game ends.
241
+
242
+ When running multiple no UI simulations, you can use this to view the simulations in a table.
243
+ """
244
+
245
+ return {}
246
+
238
247
  def configure_extra_width(self) -> int:
239
248
  """Optionally add extra height to the right of the boards. 0 by default."""
240
249
 
@@ -1045,7 +1054,12 @@ class CodeBattles(
1045
1054
  if len(self.active_players) == 1:
1046
1055
  self._eliminated.append(self.active_players[0])
1047
1056
  set_results(
1048
- self.player_names, self._eliminated[::-1], self.parameters, self.verbose
1057
+ self.player_names,
1058
+ self._seed,
1059
+ self._eliminated[::-1],
1060
+ self.get_statistics(),
1061
+ self.parameters,
1062
+ self.verbose,
1049
1063
  )
1050
1064
  if not self.background:
1051
1065
  self.render()
@@ -1136,3 +1150,5 @@ class CodeBattles(
1136
1150
  0,
1137
1151
  )
1138
1152
  )
1153
+ else:
1154
+ await asyncio.sleep(0.0005)
@@ -75,7 +75,9 @@ def show_alert(
75
75
  @web_only
76
76
  def set_results(
77
77
  player_names: List[str],
78
+ seed: int,
78
79
  places: List[int],
80
+ statistics: Dict[str, Union[float, int]],
79
81
  parameters: Dict[str, str],
80
82
  verbose: bool,
81
83
  ):
@@ -83,7 +85,9 @@ def set_results(
83
85
 
84
86
  if hasattr(window, "setResults"):
85
87
  try:
86
- window.setResults(player_names, places, parameters, verbose)
88
+ window.setResults(
89
+ player_names, str(seed), places, statistics, parameters, verbose
90
+ )
87
91
  except Exception as e:
88
92
  print(e)
89
93