@pyscript/core 0.4.55 → 0.5.0-rc1

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/{codemirror-uEsvwGeX.js → codemirror-ZWX__zRS.js} +2 -2
  2. package/dist/{codemirror-uEsvwGeX.js.map → codemirror-ZWX__zRS.js.map} +1 -1
  3. package/dist/{codemirror_commands-BjErX5JV.js → codemirror_commands-BvofQ4B2.js} +2 -2
  4. package/dist/{codemirror_commands-BjErX5JV.js.map → codemirror_commands-BvofQ4B2.js.map} +1 -1
  5. package/dist/{codemirror_lang-python-rjOo-iGF.js → codemirror_lang-python-CAjFAwEr.js} +2 -2
  6. package/dist/{codemirror_lang-python-rjOo-iGF.js.map → codemirror_lang-python-CAjFAwEr.js.map} +1 -1
  7. package/dist/{codemirror_language-oTnz5LmX.js → codemirror_language-BzugrQDC.js} +2 -2
  8. package/dist/{codemirror_language-oTnz5LmX.js.map → codemirror_language-BzugrQDC.js.map} +1 -1
  9. package/dist/codemirror_view-DrrFKRyn.js +2 -0
  10. package/dist/codemirror_view-DrrFKRyn.js.map +1 -0
  11. package/dist/core-jHCq6GXZ.js +2 -0
  12. package/dist/core-jHCq6GXZ.js.map +1 -0
  13. package/dist/core.js +1 -1
  14. package/dist/{deprecations-manager-BsD6IG0e.js → deprecations-manager-JLWNpJ-L.js} +2 -2
  15. package/dist/{deprecations-manager-BsD6IG0e.js.map → deprecations-manager-JLWNpJ-L.js.map} +1 -1
  16. package/dist/{error-BwsFl_vB.js → error-BZdmXuMQ.js} +2 -2
  17. package/dist/{error-BwsFl_vB.js.map → error-BZdmXuMQ.js.map} +1 -1
  18. package/dist/{index-DvH26nkT.js → index-YJCpGJSa.js} +2 -2
  19. package/dist/{index-DvH26nkT.js.map → index-YJCpGJSa.js.map} +1 -1
  20. package/dist/{mpy-Cq6_SATz.js → mpy-CA-8GLzg.js} +2 -2
  21. package/dist/mpy-CA-8GLzg.js.map +1 -0
  22. package/dist/{py-editor-CO1XYgQ3.js → py-editor-BFwOcA7b.js} +2 -2
  23. package/dist/{py-editor-CO1XYgQ3.js.map → py-editor-BFwOcA7b.js.map} +1 -1
  24. package/dist/{py-terminal-7BWBB6VM.js → py-terminal-GLATgrHP.js} +2 -2
  25. package/dist/{py-terminal-7BWBB6VM.js.map → py-terminal-GLATgrHP.js.map} +1 -1
  26. package/dist/{py-Dpy4_-ky.js → py-tfDQPNNm.js} +2 -2
  27. package/dist/{py-Dpy4_-ky.js.map → py-tfDQPNNm.js.map} +1 -1
  28. package/dist/{zip-BxogYCy6.js → zip-CGWtiqjJ.js} +2 -2
  29. package/dist/zip-CGWtiqjJ.js.map +1 -0
  30. package/package.json +8 -8
  31. package/src/plugins/py-terminal/mpy.js +6 -5
  32. package/src/stdlib/pyscript/event_handling.py +13 -12
  33. package/src/stdlib/pyscript/magic_js.py +4 -12
  34. package/src/stdlib/pyscript/web/__init__.py +21 -4
  35. package/src/stdlib/pyscript/web/elements.py +919 -724
  36. package/src/stdlib/pyscript.js +4 -15
  37. package/types/core.d.ts +1 -1
  38. package/types/stdlib/pyscript.d.ts +0 -11
  39. package/dist/codemirror_view-CH_aW-qU.js +0 -2
  40. package/dist/codemirror_view-CH_aW-qU.js.map +0 -1
  41. package/dist/core-Di0g8mUD.js +0 -3
  42. package/dist/core-Di0g8mUD.js.map +0 -1
  43. package/dist/mpy-Cq6_SATz.js.map +0 -1
  44. package/dist/zip-BxogYCy6.js.map +0 -1
  45. package/dist.zip +0 -0
  46. package/src/stdlib/pyscript/web/dom.py +0 -21
  47. package/src/stdlib/pyscript/web/media.py +0 -95
  48. package/src/stdlib/pyweb/__init__.py +0 -2
  49. package/src/stdlib/pyweb/media.py +0 -95
  50. package/src/stdlib/pyweb/pydom.py +0 -569
  51. package/src/stdlib/pyweb/ui/__init__.py +0 -1
  52. package/src/stdlib/pyweb/ui/elements.py +0 -947
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pyscript/core",
3
- "version": "0.4.55",
3
+ "version": "0.5.0-rc1",
4
4
  "type": "module",
5
5
  "description": "PyScript",
6
6
  "module": "./index.js",
@@ -44,7 +44,7 @@
44
44
  "dependencies": {
45
45
  "@ungap/with-resolvers": "^0.1.0",
46
46
  "basic-devtools": "^0.1.6",
47
- "polyscript": "^0.13.8",
47
+ "polyscript": "^0.14.0-rc2",
48
48
  "sticky-module": "^0.1.1",
49
49
  "to-json-callback": "^0.1.1",
50
50
  "type-checked-collections": "^0.1.7"
@@ -54,24 +54,24 @@
54
54
  "@codemirror/lang-python": "^6.1.6",
55
55
  "@codemirror/language": "^6.10.2",
56
56
  "@codemirror/state": "^6.4.1",
57
- "@codemirror/view": "^6.28.3",
58
- "@playwright/test": "^1.45.1",
57
+ "@codemirror/view": "^6.28.6",
58
+ "@playwright/test": "^1.45.3",
59
59
  "@rollup/plugin-commonjs": "^26.0.1",
60
60
  "@rollup/plugin-node-resolve": "^15.2.3",
61
61
  "@rollup/plugin-terser": "^0.4.4",
62
62
  "@webreflection/toml-j0.4": "^1.1.3",
63
63
  "@xterm/addon-fit": "^0.10.0",
64
64
  "@xterm/addon-web-links": "^0.11.0",
65
- "bun": "^1.1.17",
65
+ "bun": "^1.1.20",
66
66
  "chokidar": "^3.6.0",
67
67
  "codemirror": "^6.0.1",
68
- "eslint": "^9.6.0",
68
+ "eslint": "^9.7.0",
69
69
  "flatted": "^3.3.1",
70
- "rollup": "^4.18.0",
70
+ "rollup": "^4.19.0",
71
71
  "rollup-plugin-postcss": "^4.0.2",
72
72
  "rollup-plugin-string": "^3.0.0",
73
73
  "static-handler": "^0.4.3",
74
- "typescript": "^5.5.3",
74
+ "typescript": "^5.5.4",
75
75
  "xterm": "^5.3.0",
76
76
  "xterm-readline": "^1.1.1"
77
77
  },
@@ -166,14 +166,15 @@ export default async (element) => {
166
166
  if (promisedChunks) {
167
167
  // handle backspace on input
168
168
  if (buffer === "\x7f") {
169
+ // avoid over-greedy backspace
169
170
  if (readChunks.length) {
170
171
  readChunks = readChunks.slice(0, -1);
172
+ // override previous char position
173
+ // put an empty space to clear the char
174
+ // move back position again
171
175
  buffer = "\b \b";
172
- }
173
- else buffer = "";
174
- }
175
- else
176
- readChunks += buffer;
176
+ } else buffer = "";
177
+ } else readChunks += buffer;
177
178
  if (buffer) {
178
179
  terminal.write(buffer);
179
180
  if (readChunks.endsWith("\r")) {
@@ -19,22 +19,23 @@ def when(event_type=None, selector=None):
19
19
  """
20
20
 
21
21
  def decorator(func):
22
+
23
+ from pyscript.web.elements import Element, ElementCollection
24
+
22
25
  if isinstance(selector, str):
23
26
  elements = document.querySelectorAll(selector)
27
+ # TODO: This is a hack that will be removed when pyscript becomes a package
28
+ # and we can better manage the imports without circular dependencies
29
+ elif isinstance(selector, Element):
30
+ elements = [selector._dom_element]
31
+ elif isinstance(selector, ElementCollection):
32
+ elements = [el._dom_element for el in selector]
24
33
  else:
25
- # TODO: This is a hack that will be removed when pyscript becomes a package
26
- # and we can better manage the imports without circular dependencies
27
- from pyweb import pydom
28
-
29
- if isinstance(selector, pydom.Element):
30
- elements = [selector._js]
31
- elif isinstance(selector, pydom.ElementCollection):
32
- elements = [el._js for el in selector]
34
+ if isinstance(selector, list):
35
+ elements = selector
33
36
  else:
34
- raise ValueError(
35
- f"Invalid selector: {selector}. Selector must"
36
- " be a string, a pydom.Element or a pydom.ElementCollection."
37
- )
37
+ elements = [selector]
38
+
38
39
  try:
39
40
  sig = inspect.signature(func)
40
41
  # Function doesn't receive events
@@ -36,7 +36,6 @@ if RUNNING_IN_WORKER:
36
36
  )
37
37
 
38
38
  try:
39
- globalThis.SharedArrayBuffer.new(4)
40
39
  import js
41
40
 
42
41
  window = polyscript.xworker.window
@@ -47,17 +46,10 @@ if RUNNING_IN_WORKER:
47
46
  "return (...urls) => Promise.all(urls.map((url) => import(url)))"
48
47
  )()
49
48
  except:
50
- globalThis.console.debug("SharedArrayBuffer is not available")
51
- # in this scenario none of the utilities would work
52
- # as expected so we better export these as NotSupported
53
- window = NotSupported(
54
- "pyscript.window",
55
- "pyscript.window in workers works only via SharedArrayBuffer",
56
- )
57
- document = NotSupported(
58
- "pyscript.document",
59
- "pyscript.document in workers works only via SharedArrayBuffer",
60
- )
49
+ message = "Unable to use `window` or `document` -> https://docs.pyscript.net/latest/faq/#sharedarraybuffer"
50
+ globalThis.console.warn(message)
51
+ window = NotSupported("pyscript.window", message)
52
+ document = NotSupported("pyscript.document", message)
61
53
 
62
54
  sync = polyscript.xworker.sync
63
55
 
@@ -1,5 +1,22 @@
1
- from . import elements
1
+ from pyscript import document
2
+ from pyscript.web.elements import Element, ElementCollection
2
3
 
3
- # Ugly trick to hide the dom module in the web package since we want the module
4
- # to allow querying right away.
5
- from .dom import dom
4
+
5
+ class DOM:
6
+ def __init__(self):
7
+ self.body = Element.from_dom_element(document.body)
8
+ self.head = Element.from_dom_element(document.head)
9
+
10
+ def __getitem__(self, selector):
11
+ return self.find(selector)
12
+
13
+ def find(self, selector):
14
+ return ElementCollection(
15
+ [
16
+ Element.from_dom_element(dom_element)
17
+ for dom_element in document.querySelectorAll(selector)
18
+ ]
19
+ )
20
+
21
+
22
+ dom = DOM()