pyscript-programming-language 1.11.3__tar.gz → 1.12.0__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 (89) hide show
  1. pyscript_programming_language-1.12.0/MANIFEST.in +5 -0
  2. {pyscript_programming_language-1.11.3 → pyscript_programming_language-1.12.0}/PKG-INFO +45 -13
  3. pyscript_programming_language-1.11.3/pyscript_programming_language.egg-info/PKG-INFO → pyscript_programming_language-1.12.0/README.md +42 -38
  4. pyscript_programming_language-1.12.0/changelog.md +21 -0
  5. pyscript_programming_language-1.12.0/pyproject.toml +51 -0
  6. {pyscript_programming_language-1.11.3 → pyscript_programming_language-1.12.0}/pyscript/__init__.py +9 -6
  7. {pyscript_programming_language-1.11.3 → pyscript_programming_language-1.12.0}/pyscript/__init__.pyi +6 -5
  8. {pyscript_programming_language-1.11.3 → pyscript_programming_language-1.12.0}/pyscript/__main__.py +27 -20
  9. pyscript_programming_language-1.12.0/pyscript/core/cache.py +70 -0
  10. {pyscript_programming_language-1.11.3 → pyscript_programming_language-1.12.0}/pyscript/core/constants.py +3 -1
  11. {pyscript_programming_language-1.11.3 → pyscript_programming_language-1.12.0}/pyscript/core/editor/bases.py +2 -1
  12. {pyscript_programming_language-1.11.3 → pyscript_programming_language-1.12.0}/pyscript/core/editor/gui.py +4 -2
  13. {pyscript_programming_language-1.11.3 → pyscript_programming_language-1.12.0}/pyscript/core/editor/terminal.py +26 -3
  14. {pyscript_programming_language-1.11.3 → pyscript_programming_language-1.12.0}/pyscript/core/handlers.py +7 -12
  15. {pyscript_programming_language-1.11.3 → pyscript_programming_language-1.12.0}/pyscript/core/highlight.py +36 -10
  16. {pyscript_programming_language-1.11.3 → pyscript_programming_language-1.12.0}/pyscript/core/interpreter.py +2 -1
  17. {pyscript_programming_language-1.11.3 → pyscript_programming_language-1.12.0}/pyscript/core/lexer.py +4 -4
  18. {pyscript_programming_language-1.11.3 → pyscript_programming_language-1.12.0}/pyscript/core/pysbuiltins.py +29 -19
  19. {pyscript_programming_language-1.11.3 → pyscript_programming_language-1.12.0}/pyscript/core/results.py +4 -5
  20. {pyscript_programming_language-1.11.3 → pyscript_programming_language-1.12.0}/pyscript/core/runner.py +48 -19
  21. pyscript_programming_language-1.12.0/pyscript/core/shell.py +287 -0
  22. {pyscript_programming_language-1.11.3 → pyscript_programming_language-1.12.0}/pyscript/core/utils/ansi.py +1 -1
  23. pyscript_programming_language-1.12.0/pyscript/core/utils/debug.py +60 -0
  24. {pyscript_programming_language-1.11.3 → pyscript_programming_language-1.12.0}/pyscript/core/utils/decorators.py +3 -10
  25. {pyscript_programming_language-1.11.3 → pyscript_programming_language-1.12.0}/pyscript/core/utils/generic.py +1 -32
  26. {pyscript_programming_language-1.11.3 → pyscript_programming_language-1.12.0}/pyscript/core/utils/jsdict.py +2 -2
  27. {pyscript_programming_language-1.11.3 → pyscript_programming_language-1.12.0}/pyscript/core/version.py +10 -4
  28. {pyscript_programming_language-1.11.3 → pyscript_programming_language-1.12.0}/pyscript/lib/brainfuck.pys +17 -17
  29. {pyscript_programming_language-1.11.3 → pyscript_programming_language-1.12.0}/pyscript/lib/fpstimer/py_fpstimer.py +1 -1
  30. {pyscript_programming_language-1.11.3 → pyscript_programming_language-1.12.0}/pyscript/lib/inspect.pys +1 -2
  31. {pyscript_programming_language-1.11.3 → pyscript_programming_language-1.12.0}/pyscript/lib/parser.pys +2 -2
  32. {pyscript_programming_language-1.11.3 → pyscript_programming_language-1.12.0}/pyscript/lib/tokenize/tok_untokenize.py +2 -2
  33. {pyscript_programming_language-1.11.3 → pyscript_programming_language-1.12.0}/pyscript/site-packages/this.pys +1 -1
  34. pyscript_programming_language-1.11.3/README.md → pyscript_programming_language-1.12.0/pyscript_programming_language.egg-info/PKG-INFO +70 -2
  35. {pyscript_programming_language-1.11.3 → pyscript_programming_language-1.12.0}/pyscript_programming_language.egg-info/SOURCES.txt +2 -1
  36. {pyscript_programming_language-1.11.3 → pyscript_programming_language-1.12.0}/setup.py +4 -1
  37. pyscript_programming_language-1.11.3/MANIFEST.in +0 -4
  38. pyscript_programming_language-1.11.3/pyscript/core/cache.py +0 -119
  39. pyscript_programming_language-1.11.3/pyscript/core/shell.py +0 -134
  40. pyscript_programming_language-1.11.3/pyscript/core/utils/debug.py +0 -29
  41. pyscript_programming_language-1.11.3/pyscript/lib/sys.pys +0 -29
  42. {pyscript_programming_language-1.11.3 → pyscript_programming_language-1.12.0}/pyscript/core/__init__.py +0 -0
  43. {pyscript_programming_language-1.11.3 → pyscript_programming_language-1.12.0}/pyscript/core/analyzer.py +0 -0
  44. {pyscript_programming_language-1.11.3 → pyscript_programming_language-1.12.0}/pyscript/core/bases.py +0 -0
  45. {pyscript_programming_language-1.11.3 → pyscript_programming_language-1.12.0}/pyscript/core/buffer.py +0 -0
  46. {pyscript_programming_language-1.11.3 → pyscript_programming_language-1.12.0}/pyscript/core/checks.py +0 -0
  47. {pyscript_programming_language-1.11.3 → pyscript_programming_language-1.12.0}/pyscript/core/context.py +0 -0
  48. {pyscript_programming_language-1.11.3 → pyscript_programming_language-1.12.0}/pyscript/core/editor/__init__.py +0 -0
  49. {pyscript_programming_language-1.11.3 → pyscript_programming_language-1.12.0}/pyscript/core/exceptions.py +0 -0
  50. {pyscript_programming_language-1.11.3 → pyscript_programming_language-1.12.0}/pyscript/core/mapping.py +0 -0
  51. {pyscript_programming_language-1.11.3 → pyscript_programming_language-1.12.0}/pyscript/core/nodes.py +0 -0
  52. {pyscript_programming_language-1.11.3 → pyscript_programming_language-1.12.0}/pyscript/core/objects.py +0 -0
  53. {pyscript_programming_language-1.11.3 → pyscript_programming_language-1.12.0}/pyscript/core/parser.py +0 -0
  54. {pyscript_programming_language-1.11.3 → pyscript_programming_language-1.12.0}/pyscript/core/position.py +0 -0
  55. {pyscript_programming_language-1.11.3 → pyscript_programming_language-1.12.0}/pyscript/core/symtab.py +0 -0
  56. {pyscript_programming_language-1.11.3 → pyscript_programming_language-1.12.0}/pyscript/core/token.py +0 -0
  57. {pyscript_programming_language-1.11.3 → pyscript_programming_language-1.12.0}/pyscript/core/utils/__init__.py +0 -0
  58. {pyscript_programming_language-1.11.3 → pyscript_programming_language-1.12.0}/pyscript/core/utils/module.py +0 -0
  59. {pyscript_programming_language-1.11.3 → pyscript_programming_language-1.12.0}/pyscript/core/utils/path.py +0 -0
  60. {pyscript_programming_language-1.11.3 → pyscript_programming_language-1.12.0}/pyscript/core/utils/similarity.py +0 -0
  61. {pyscript_programming_language-1.11.3 → pyscript_programming_language-1.12.0}/pyscript/core/utils/string.py +0 -0
  62. {pyscript_programming_language-1.11.3 → pyscript_programming_language-1.12.0}/pyscript/lib/__hello__.pys +0 -0
  63. {pyscript_programming_language-1.11.3 → pyscript_programming_language-1.12.0}/pyscript/lib/ansi.pys +0 -0
  64. {pyscript_programming_language-1.11.3 → pyscript_programming_language-1.12.0}/pyscript/lib/ast/__init__.pys +0 -0
  65. {pyscript_programming_language-1.11.3 → pyscript_programming_language-1.12.0}/pyscript/lib/ast/ast_dump.py +0 -0
  66. {pyscript_programming_language-1.11.3 → pyscript_programming_language-1.12.0}/pyscript/lib/ast/ast_literal_eval.py +0 -0
  67. {pyscript_programming_language-1.11.3 → pyscript_programming_language-1.12.0}/pyscript/lib/ast/ast_unparse.py +0 -0
  68. {pyscript_programming_language-1.11.3 → pyscript_programming_language-1.12.0}/pyscript/lib/ast/ast_walk.py +0 -0
  69. {pyscript_programming_language-1.11.3 → pyscript_programming_language-1.12.0}/pyscript/lib/dis.pys +0 -0
  70. {pyscript_programming_language-1.11.3 → pyscript_programming_language-1.12.0}/pyscript/lib/explorer.pys +0 -0
  71. {pyscript_programming_language-1.11.3 → pyscript_programming_language-1.12.0}/pyscript/lib/fpstimer/__init__.pys +0 -0
  72. {pyscript_programming_language-1.11.3 → pyscript_programming_language-1.12.0}/pyscript/lib/getch.pys +0 -0
  73. {pyscript_programming_language-1.11.3 → pyscript_programming_language-1.12.0}/pyscript/lib/jsdict.pys +0 -0
  74. {pyscript_programming_language-1.11.3 → pyscript_programming_language-1.12.0}/pyscript/lib/keyword.pys +0 -0
  75. {pyscript_programming_language-1.11.3 → pyscript_programming_language-1.12.0}/pyscript/lib/opcode.pys +0 -0
  76. {pyscript_programming_language-1.11.3 → pyscript_programming_language-1.12.0}/pyscript/lib/site.pys +0 -0
  77. {pyscript_programming_language-1.11.3 → pyscript_programming_language-1.12.0}/pyscript/lib/symtable.pys +0 -0
  78. {pyscript_programming_language-1.11.3 → pyscript_programming_language-1.12.0}/pyscript/lib/token.pys +0 -0
  79. {pyscript_programming_language-1.11.3 → pyscript_programming_language-1.12.0}/pyscript/lib/tokenize/__init__.pys +0 -0
  80. {pyscript_programming_language-1.11.3 → pyscript_programming_language-1.12.0}/pyscript/other/.nomedia +0 -0
  81. {pyscript_programming_language-1.11.3 → pyscript_programming_language-1.12.0}/pyscript/other/PyScript.ico +0 -0
  82. {pyscript_programming_language-1.11.3 → pyscript_programming_language-1.12.0}/pyscript/other/copyright +0 -0
  83. {pyscript_programming_language-1.11.3 → pyscript_programming_language-1.12.0}/pyscript/other/credits +0 -0
  84. {pyscript_programming_language-1.11.3 → pyscript_programming_language-1.12.0}/pyscript/other/license +0 -0
  85. {pyscript_programming_language-1.11.3 → pyscript_programming_language-1.12.0}/pyscript/this.py +0 -0
  86. {pyscript_programming_language-1.11.3 → pyscript_programming_language-1.12.0}/pyscript_programming_language.egg-info/dependency_links.txt +0 -0
  87. {pyscript_programming_language-1.11.3 → pyscript_programming_language-1.12.0}/pyscript_programming_language.egg-info/requires.txt +0 -0
  88. {pyscript_programming_language-1.11.3 → pyscript_programming_language-1.12.0}/pyscript_programming_language.egg-info/top_level.txt +0 -0
  89. {pyscript_programming_language-1.11.3 → pyscript_programming_language-1.12.0}/setup.cfg +0 -0
@@ -0,0 +1,5 @@
1
+ include changelog.md
2
+ include README.md
3
+
4
+ recursive-include pyscript *
5
+ global-exclude __pycache__ *.py[cod]
@@ -1,11 +1,12 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: pyscript-programming-language
3
- Version: 1.11.3
3
+ Version: 1.12.0
4
4
  Summary: PyScript Programming Language
5
5
  Home-page: https://azzammuhyala.github.io/pyscript
6
6
  Author: azzammuhyala
7
- Author-email: azzammuhyala@gmail.com
8
- License: MIT
7
+ Author-email: azzammuhyala <azzammuhyala@gmail.com>
8
+ License-Expression: MIT
9
+ Project-URL: Homepage, https://azzammuhyala.github.io/pyscript
9
10
  Project-URL: Source, https://github.com/azzammuhyala/pyscript
10
11
  Project-URL: Bug Tracker, https://github.com/azzammuhyala/pyscript/issues
11
12
  Keywords: pyscript,pyslang,pys,programming,language,programming language
@@ -22,17 +23,8 @@ Requires-Dist: beartype; extra == "other"
22
23
  Requires-Dist: pygments; extra == "other"
23
24
  Requires-Dist: prompt_toolkit; extra == "other"
24
25
  Dynamic: author
25
- Dynamic: author-email
26
- Dynamic: classifier
27
- Dynamic: description
28
- Dynamic: description-content-type
29
26
  Dynamic: home-page
30
- Dynamic: keywords
31
- Dynamic: license
32
- Dynamic: project-url
33
- Dynamic: provides-extra
34
27
  Dynamic: requires-python
35
- Dynamic: summary
36
28
 
37
29
  # PyScript
38
30
 
@@ -78,7 +70,7 @@ And also, you can download PyScript with `git`:
78
70
  ```sh
79
71
  git clone https://github.com/azzammuhyala/pyscript
80
72
  cd pyscript
81
- python setup.py install
73
+ pip install .
82
74
  ```
83
75
 
84
76
  After that, you can run the PyScript shell (_REPL_) with this command:
@@ -94,6 +86,46 @@ If successful, you can see the version, release date, and a `>>>` like Python sh
94
86
  Familiar? There it is!
95
87
  <pre><span style="color:#549952"># get a number and operator with input()</span><span style="color:#D4D4D4"><br></span><span style="color:#8CDCFE">a</span><span style="color:#D4D4D4"> = </span><span style="color:#4EC9B0">float</span><span style="color:#FFD705">(</span><span style="color:#DCDCAA">input</span><span style="color:#D45DBA">(</span><span style="color:#CE9178">&quot;Enter a first number : &quot;</span><span style="color:#D45DBA">)</span><span style="color:#FFD705">)</span><span style="color:#D4D4D4"><br></span><span style="color:#8CDCFE">b</span><span style="color:#D4D4D4"> = </span><span style="color:#4EC9B0">float</span><span style="color:#FFD705">(</span><span style="color:#DCDCAA">input</span><span style="color:#D45DBA">(</span><span style="color:#CE9178">&quot;Enter a second number: &quot;</span><span style="color:#D45DBA">)</span><span style="color:#FFD705">)</span><span style="color:#D4D4D4"><br></span><span style="color:#8CDCFE">op</span><span style="color:#D4D4D4"> = </span><span style="color:#DCDCAA">input</span><span style="color:#FFD705">(</span><span style="color:#CE9178">&quot;Enter an operation (+, -, *, /): &quot;</span><span style="color:#FFD705">)</span><span style="color:#D4D4D4"><br><br></span><span style="color:#549952"># define a functions</span><span style="color:#D4D4D4"><br></span><span style="color:#307CD6">func</span><span style="color:#D4D4D4"> </span><span style="color:#DCDCAA">add</span><span style="color:#FFD705">(</span><span style="color:#8CDCFE">a</span><span style="color:#D4D4D4">, </span><span style="color:#8CDCFE">b</span><span style="color:#FFD705">)</span><span style="color:#D4D4D4"> </span><span style="color:#FFD705">{</span><span style="color:#D4D4D4"><br></span><span style="color:#D4D4D4"> </span><span style="color:#C586C0">return</span><span style="color:#D4D4D4"> </span><span style="color:#8CDCFE">a</span><span style="color:#D4D4D4"> + </span><span style="color:#8CDCFE">b</span><span style="color:#D4D4D4"><br></span><span style="color:#FFD705">}</span><span style="color:#D4D4D4"><br><br></span><span style="color:#307CD6">func</span><span style="color:#D4D4D4"> </span><span style="color:#DCDCAA">sub</span><span style="color:#FFD705">(</span><span style="color:#8CDCFE">a</span><span style="color:#D4D4D4">, </span><span style="color:#8CDCFE">b</span><span style="color:#FFD705">)</span><span style="color:#D4D4D4"> </span><span style="color:#FFD705">{</span><span style="color:#D4D4D4"><br></span><span style="color:#D4D4D4"> </span><span style="color:#C586C0">return</span><span style="color:#D4D4D4"> </span><span style="color:#8CDCFE">a</span><span style="color:#D4D4D4"> - </span><span style="color:#8CDCFE">b</span><span style="color:#D4D4D4"><br></span><span style="color:#FFD705">}</span><span style="color:#D4D4D4"><br><br></span><span style="color:#307CD6">func</span><span style="color:#D4D4D4"> </span><span style="color:#DCDCAA">mul</span><span style="color:#FFD705">(</span><span style="color:#8CDCFE">a</span><span style="color:#D4D4D4">, </span><span style="color:#8CDCFE">b</span><span style="color:#FFD705">)</span><span style="color:#D4D4D4"> </span><span style="color:#FFD705">{</span><span style="color:#D4D4D4"><br></span><span style="color:#D4D4D4"> </span><span style="color:#C586C0">return</span><span style="color:#D4D4D4"> </span><span style="color:#8CDCFE">a</span><span style="color:#D4D4D4"> * </span><span style="color:#8CDCFE">b</span><span style="color:#D4D4D4"><br></span><span style="color:#FFD705">}</span><span style="color:#D4D4D4"><br><br></span><span style="color:#307CD6">func</span><span style="color:#D4D4D4"> </span><span style="color:#DCDCAA">floordiv</span><span style="color:#FFD705">(</span><span style="color:#8CDCFE">a</span><span style="color:#D4D4D4">, </span><span style="color:#8CDCFE">b</span><span style="color:#FFD705">)</span><span style="color:#D4D4D4"> </span><span style="color:#FFD705">{</span><span style="color:#D4D4D4"><br></span><span style="color:#D4D4D4"> </span><span style="color:#549952"># check b is zero</span><span style="color:#D4D4D4"><br></span><span style="color:#D4D4D4"> </span><span style="color:#C586C0">return</span><span style="color:#D4D4D4"> </span><span style="color:#8CDCFE">b</span><span style="color:#D4D4D4"> != </span><span style="color:#B5CEA8">0</span><span style="color:#D4D4D4"> ? </span><span style="color:#8CDCFE">a</span><span style="color:#D4D4D4"> / </span><span style="color:#8CDCFE">b</span><span style="color:#D4D4D4"> : </span><span style="color:#CE9178">&quot;Cannot be divided by 0!&quot;</span><span style="color:#D4D4D4"><br></span><span style="color:#FFD705">}</span><span style="color:#D4D4D4"><br><br></span><span style="color:#549952"># operation matching</span><span style="color:#D4D4D4"><br></span><span style="color:#C586C0">switch</span><span style="color:#D4D4D4"> </span><span style="color:#FFD705">(</span><span style="color:#8CDCFE">op</span><span style="color:#D4D4D4">.</span><span style="color:#DCDCAA">strip</span><span style="color:#D45DBA">()</span><span style="color:#FFD705">)</span><span style="color:#D4D4D4"><br></span><span style="color:#FFD705">{</span><span style="color:#D4D4D4"><br></span><span style="color:#D4D4D4"> </span><span style="color:#C586C0">case</span><span style="color:#D4D4D4"> </span><span style="color:#CE9178">&#x27;+&#x27;</span><span style="color:#D4D4D4">:</span><span style="color:#D4D4D4"><br></span><span style="color:#D4D4D4"> </span><span style="color:#8CDCFE">result</span><span style="color:#D4D4D4"> = </span><span style="color:#DCDCAA">add</span><span style="color:#D45DBA">(</span><span style="color:#8CDCFE">a</span><span style="color:#D4D4D4">, </span><span style="color:#8CDCFE">b</span><span style="color:#D45DBA">)</span><span style="color:#D4D4D4"><br></span><span style="color:#D4D4D4"> </span><span style="color:#DCDCAA">print</span><span style="color:#D45DBA">(</span><span style="color:#CE9178">&quot;Result of {} + {} = {}&quot;</span><span style="color:#D4D4D4">.</span><span style="color:#DCDCAA">format</span><span style="color:#1A9FFF">(</span><span style="color:#8CDCFE">a</span><span style="color:#D4D4D4">, </span><span style="color:#8CDCFE">b</span><span style="color:#D4D4D4">, </span><span style="color:#8CDCFE">result</span><span style="color:#1A9FFF">)</span><span style="color:#D45DBA">)</span><span style="color:#D4D4D4"><br></span><span style="color:#D4D4D4"> </span><span style="color:#C586C0">break</span><span style="color:#D4D4D4"><br><br></span><span style="color:#D4D4D4"> </span><span style="color:#C586C0">case</span><span style="color:#D4D4D4"> </span><span style="color:#CE9178">&#x27;-&#x27;</span><span style="color:#D4D4D4">:</span><span style="color:#D4D4D4"><br></span><span style="color:#D4D4D4"> </span><span style="color:#8CDCFE">result</span><span style="color:#D4D4D4"> = </span><span style="color:#DCDCAA">sub</span><span style="color:#D45DBA">(</span><span style="color:#8CDCFE">a</span><span style="color:#D4D4D4">, </span><span style="color:#8CDCFE">b</span><span style="color:#D45DBA">)</span><span style="color:#D4D4D4"><br></span><span style="color:#D4D4D4"> </span><span style="color:#DCDCAA">print</span><span style="color:#D45DBA">(</span><span style="color:#CE9178">&quot;Result of {} - {} = {}&quot;</span><span style="color:#D4D4D4">.</span><span style="color:#DCDCAA">format</span><span style="color:#1A9FFF">(</span><span style="color:#8CDCFE">a</span><span style="color:#D4D4D4">, </span><span style="color:#8CDCFE">b</span><span style="color:#D4D4D4">, </span><span style="color:#8CDCFE">result</span><span style="color:#1A9FFF">)</span><span style="color:#D45DBA">)</span><span style="color:#D4D4D4"><br></span><span style="color:#D4D4D4"> </span><span style="color:#C586C0">break</span><span style="color:#D4D4D4"><br><br></span><span style="color:#D4D4D4"> </span><span style="color:#C586C0">case</span><span style="color:#D4D4D4"> </span><span style="color:#CE9178">&#x27;*&#x27;</span><span style="color:#D4D4D4">:</span><span style="color:#D4D4D4"><br></span><span style="color:#D4D4D4"> </span><span style="color:#8CDCFE">result</span><span style="color:#D4D4D4"> = </span><span style="color:#DCDCAA">mul</span><span style="color:#D45DBA">(</span><span style="color:#8CDCFE">a</span><span style="color:#D4D4D4">, </span><span style="color:#8CDCFE">b</span><span style="color:#D45DBA">)</span><span style="color:#D4D4D4"><br></span><span style="color:#D4D4D4"> </span><span style="color:#DCDCAA">print</span><span style="color:#D45DBA">(</span><span style="color:#CE9178">&quot;Result of {} * {} = {}&quot;</span><span style="color:#D4D4D4">.</span><span style="color:#DCDCAA">format</span><span style="color:#1A9FFF">(</span><span style="color:#8CDCFE">a</span><span style="color:#D4D4D4">, </span><span style="color:#8CDCFE">b</span><span style="color:#D4D4D4">, </span><span style="color:#8CDCFE">result</span><span style="color:#1A9FFF">)</span><span style="color:#D45DBA">)</span><span style="color:#D4D4D4"><br></span><span style="color:#D4D4D4"> </span><span style="color:#C586C0">break</span><span style="color:#D4D4D4"><br><br></span><span style="color:#D4D4D4"> </span><span style="color:#C586C0">case</span><span style="color:#D4D4D4"> </span><span style="color:#CE9178">&#x27;/&#x27;</span><span style="color:#D4D4D4">:</span><span style="color:#D4D4D4"><br></span><span style="color:#D4D4D4"> </span><span style="color:#8CDCFE">result</span><span style="color:#D4D4D4"> = </span><span style="color:#DCDCAA">floordiv</span><span style="color:#D45DBA">(</span><span style="color:#8CDCFE">a</span><span style="color:#D4D4D4">, </span><span style="color:#8CDCFE">b</span><span style="color:#D45DBA">)</span><span style="color:#D4D4D4"><br></span><span style="color:#D4D4D4"> </span><span style="color:#DCDCAA">print</span><span style="color:#D45DBA">(</span><span style="color:#CE9178">&quot;Result of {} / {} = {}&quot;</span><span style="color:#D4D4D4">.</span><span style="color:#DCDCAA">format</span><span style="color:#1A9FFF">(</span><span style="color:#8CDCFE">a</span><span style="color:#D4D4D4">, </span><span style="color:#8CDCFE">b</span><span style="color:#D4D4D4">, </span><span style="color:#8CDCFE">result</span><span style="color:#1A9FFF">)</span><span style="color:#D45DBA">)</span><span style="color:#D4D4D4"><br></span><span style="color:#D4D4D4"> </span><span style="color:#C586C0">break</span><span style="color:#D4D4D4"><br><br></span><span style="color:#D4D4D4"> </span><span style="color:#C586C0">default</span><span style="color:#D4D4D4">:</span><span style="color:#D4D4D4"><br></span><span style="color:#D4D4D4"> </span><span style="color:#DCDCAA">print</span><span style="color:#D45DBA">(</span><span style="color:#CE9178">&quot;Unknown operation&quot;</span><span style="color:#D45DBA">)</span><span style="color:#D4D4D4"><br></span><span style="color:#FFD705">}</span></pre>
96
88
 
89
+ ## Library Requirements
90
+ | No | Name | Status |
91
+ |:--:|:------------------|:----------------------:|
92
+ | 1 | `argparse` | **required** |
93
+ | 2 | `builtins` | **required** |
94
+ | 3 | `collections.abc` | **required** |
95
+ | 4 | `functools` | **required** |
96
+ | 5 | `html` | **required** |
97
+ | 6 | `importlib` | **required** |
98
+ | 7 | `inspect` | **required** |
99
+ | 8 | `io` | **required** |
100
+ | 9 | `itertools` | **required** |
101
+ | 10 | `json` | **required** |
102
+ | 11 | `math` | **required** |
103
+ | 12 | `operator` | **required** |
104
+ | 13 | `os` | **required** |
105
+ | 14 | `re` | **required** |
106
+ | 15 | `sys` | **required** |
107
+ | 16 | `threading` | **required** |
108
+ | 17 | `types` | **required** |
109
+ | 18 | `typing` | **required** |
110
+ | 19 | `unicodedata` | **required** |
111
+ | 1 | `msvcrt` | **required (library)** |
112
+ | 2 | `shutil` | **required (library)** |
113
+ | 3 | `stat` | **required (library)** |
114
+ | 4 | `termios` | **required (library)** |
115
+ | 5 | `time` | **required (library)** |
116
+ | 6 | `tty` | **required (library)** |
117
+ | 1 | `beartype` | **optional** |
118
+ | 2 | `google.colab` | **optional** |
119
+ | 3 | `prompt_toolkit` | **optional** |
120
+ | 4 | `pygments` | **optional** |
121
+ | 5 | `tkinter` | **optional** |
122
+
123
+ ### Status Explanation
124
+ - **required**: Required by PyScript entirely.
125
+ - **required (library)**: Required PyScript library (located in `pyscript/lib`). PyScript is not affected unless you
126
+ import it.
127
+ - **optional**: Not required, but if it is present, some features can be used without issue.
128
+
97
129
  ## Behind it
98
130
  This language created from based up on a
99
131
  [YouTube tutorial](https://www.youtube.com/playlist?list=PLZQftyCk7_SdoVexSmwy_tBgs7P0b97yD) (check more on GitHub
@@ -1,39 +1,3 @@
1
- Metadata-Version: 2.4
2
- Name: pyscript-programming-language
3
- Version: 1.11.3
4
- Summary: PyScript Programming Language
5
- Home-page: https://azzammuhyala.github.io/pyscript
6
- Author: azzammuhyala
7
- Author-email: azzammuhyala@gmail.com
8
- License: MIT
9
- Project-URL: Source, https://github.com/azzammuhyala/pyscript
10
- Project-URL: Bug Tracker, https://github.com/azzammuhyala/pyscript/issues
11
- Keywords: pyscript,pyslang,pys,programming,language,programming language
12
- Classifier: Programming Language :: Python
13
- Classifier: Programming Language :: Python :: 3
14
- Classifier: Intended Audience :: Developers
15
- Classifier: Topic :: Software Development :: Libraries :: Python Modules
16
- Classifier: Topic :: Software Development :: Interpreters
17
- Classifier: Topic :: Software Development :: Compilers
18
- Requires-Python: >=3.10
19
- Description-Content-Type: text/markdown
20
- Provides-Extra: other
21
- Requires-Dist: beartype; extra == "other"
22
- Requires-Dist: pygments; extra == "other"
23
- Requires-Dist: prompt_toolkit; extra == "other"
24
- Dynamic: author
25
- Dynamic: author-email
26
- Dynamic: classifier
27
- Dynamic: description
28
- Dynamic: description-content-type
29
- Dynamic: home-page
30
- Dynamic: keywords
31
- Dynamic: license
32
- Dynamic: project-url
33
- Dynamic: provides-extra
34
- Dynamic: requires-python
35
- Dynamic: summary
36
-
37
1
  # PyScript
38
2
 
39
3
  <div align="center">
@@ -78,7 +42,7 @@ And also, you can download PyScript with `git`:
78
42
  ```sh
79
43
  git clone https://github.com/azzammuhyala/pyscript
80
44
  cd pyscript
81
- python setup.py install
45
+ pip install .
82
46
  ```
83
47
 
84
48
  After that, you can run the PyScript shell (_REPL_) with this command:
@@ -94,8 +58,48 @@ If successful, you can see the version, release date, and a `>>>` like Python sh
94
58
  Familiar? There it is!
95
59
  <pre><span style="color:#549952"># get a number and operator with input()</span><span style="color:#D4D4D4"><br></span><span style="color:#8CDCFE">a</span><span style="color:#D4D4D4"> = </span><span style="color:#4EC9B0">float</span><span style="color:#FFD705">(</span><span style="color:#DCDCAA">input</span><span style="color:#D45DBA">(</span><span style="color:#CE9178">&quot;Enter a first number : &quot;</span><span style="color:#D45DBA">)</span><span style="color:#FFD705">)</span><span style="color:#D4D4D4"><br></span><span style="color:#8CDCFE">b</span><span style="color:#D4D4D4"> = </span><span style="color:#4EC9B0">float</span><span style="color:#FFD705">(</span><span style="color:#DCDCAA">input</span><span style="color:#D45DBA">(</span><span style="color:#CE9178">&quot;Enter a second number: &quot;</span><span style="color:#D45DBA">)</span><span style="color:#FFD705">)</span><span style="color:#D4D4D4"><br></span><span style="color:#8CDCFE">op</span><span style="color:#D4D4D4"> = </span><span style="color:#DCDCAA">input</span><span style="color:#FFD705">(</span><span style="color:#CE9178">&quot;Enter an operation (+, -, *, /): &quot;</span><span style="color:#FFD705">)</span><span style="color:#D4D4D4"><br><br></span><span style="color:#549952"># define a functions</span><span style="color:#D4D4D4"><br></span><span style="color:#307CD6">func</span><span style="color:#D4D4D4"> </span><span style="color:#DCDCAA">add</span><span style="color:#FFD705">(</span><span style="color:#8CDCFE">a</span><span style="color:#D4D4D4">, </span><span style="color:#8CDCFE">b</span><span style="color:#FFD705">)</span><span style="color:#D4D4D4"> </span><span style="color:#FFD705">{</span><span style="color:#D4D4D4"><br></span><span style="color:#D4D4D4"> </span><span style="color:#C586C0">return</span><span style="color:#D4D4D4"> </span><span style="color:#8CDCFE">a</span><span style="color:#D4D4D4"> + </span><span style="color:#8CDCFE">b</span><span style="color:#D4D4D4"><br></span><span style="color:#FFD705">}</span><span style="color:#D4D4D4"><br><br></span><span style="color:#307CD6">func</span><span style="color:#D4D4D4"> </span><span style="color:#DCDCAA">sub</span><span style="color:#FFD705">(</span><span style="color:#8CDCFE">a</span><span style="color:#D4D4D4">, </span><span style="color:#8CDCFE">b</span><span style="color:#FFD705">)</span><span style="color:#D4D4D4"> </span><span style="color:#FFD705">{</span><span style="color:#D4D4D4"><br></span><span style="color:#D4D4D4"> </span><span style="color:#C586C0">return</span><span style="color:#D4D4D4"> </span><span style="color:#8CDCFE">a</span><span style="color:#D4D4D4"> - </span><span style="color:#8CDCFE">b</span><span style="color:#D4D4D4"><br></span><span style="color:#FFD705">}</span><span style="color:#D4D4D4"><br><br></span><span style="color:#307CD6">func</span><span style="color:#D4D4D4"> </span><span style="color:#DCDCAA">mul</span><span style="color:#FFD705">(</span><span style="color:#8CDCFE">a</span><span style="color:#D4D4D4">, </span><span style="color:#8CDCFE">b</span><span style="color:#FFD705">)</span><span style="color:#D4D4D4"> </span><span style="color:#FFD705">{</span><span style="color:#D4D4D4"><br></span><span style="color:#D4D4D4"> </span><span style="color:#C586C0">return</span><span style="color:#D4D4D4"> </span><span style="color:#8CDCFE">a</span><span style="color:#D4D4D4"> * </span><span style="color:#8CDCFE">b</span><span style="color:#D4D4D4"><br></span><span style="color:#FFD705">}</span><span style="color:#D4D4D4"><br><br></span><span style="color:#307CD6">func</span><span style="color:#D4D4D4"> </span><span style="color:#DCDCAA">floordiv</span><span style="color:#FFD705">(</span><span style="color:#8CDCFE">a</span><span style="color:#D4D4D4">, </span><span style="color:#8CDCFE">b</span><span style="color:#FFD705">)</span><span style="color:#D4D4D4"> </span><span style="color:#FFD705">{</span><span style="color:#D4D4D4"><br></span><span style="color:#D4D4D4"> </span><span style="color:#549952"># check b is zero</span><span style="color:#D4D4D4"><br></span><span style="color:#D4D4D4"> </span><span style="color:#C586C0">return</span><span style="color:#D4D4D4"> </span><span style="color:#8CDCFE">b</span><span style="color:#D4D4D4"> != </span><span style="color:#B5CEA8">0</span><span style="color:#D4D4D4"> ? </span><span style="color:#8CDCFE">a</span><span style="color:#D4D4D4"> / </span><span style="color:#8CDCFE">b</span><span style="color:#D4D4D4"> : </span><span style="color:#CE9178">&quot;Cannot be divided by 0!&quot;</span><span style="color:#D4D4D4"><br></span><span style="color:#FFD705">}</span><span style="color:#D4D4D4"><br><br></span><span style="color:#549952"># operation matching</span><span style="color:#D4D4D4"><br></span><span style="color:#C586C0">switch</span><span style="color:#D4D4D4"> </span><span style="color:#FFD705">(</span><span style="color:#8CDCFE">op</span><span style="color:#D4D4D4">.</span><span style="color:#DCDCAA">strip</span><span style="color:#D45DBA">()</span><span style="color:#FFD705">)</span><span style="color:#D4D4D4"><br></span><span style="color:#FFD705">{</span><span style="color:#D4D4D4"><br></span><span style="color:#D4D4D4"> </span><span style="color:#C586C0">case</span><span style="color:#D4D4D4"> </span><span style="color:#CE9178">&#x27;+&#x27;</span><span style="color:#D4D4D4">:</span><span style="color:#D4D4D4"><br></span><span style="color:#D4D4D4"> </span><span style="color:#8CDCFE">result</span><span style="color:#D4D4D4"> = </span><span style="color:#DCDCAA">add</span><span style="color:#D45DBA">(</span><span style="color:#8CDCFE">a</span><span style="color:#D4D4D4">, </span><span style="color:#8CDCFE">b</span><span style="color:#D45DBA">)</span><span style="color:#D4D4D4"><br></span><span style="color:#D4D4D4"> </span><span style="color:#DCDCAA">print</span><span style="color:#D45DBA">(</span><span style="color:#CE9178">&quot;Result of {} + {} = {}&quot;</span><span style="color:#D4D4D4">.</span><span style="color:#DCDCAA">format</span><span style="color:#1A9FFF">(</span><span style="color:#8CDCFE">a</span><span style="color:#D4D4D4">, </span><span style="color:#8CDCFE">b</span><span style="color:#D4D4D4">, </span><span style="color:#8CDCFE">result</span><span style="color:#1A9FFF">)</span><span style="color:#D45DBA">)</span><span style="color:#D4D4D4"><br></span><span style="color:#D4D4D4"> </span><span style="color:#C586C0">break</span><span style="color:#D4D4D4"><br><br></span><span style="color:#D4D4D4"> </span><span style="color:#C586C0">case</span><span style="color:#D4D4D4"> </span><span style="color:#CE9178">&#x27;-&#x27;</span><span style="color:#D4D4D4">:</span><span style="color:#D4D4D4"><br></span><span style="color:#D4D4D4"> </span><span style="color:#8CDCFE">result</span><span style="color:#D4D4D4"> = </span><span style="color:#DCDCAA">sub</span><span style="color:#D45DBA">(</span><span style="color:#8CDCFE">a</span><span style="color:#D4D4D4">, </span><span style="color:#8CDCFE">b</span><span style="color:#D45DBA">)</span><span style="color:#D4D4D4"><br></span><span style="color:#D4D4D4"> </span><span style="color:#DCDCAA">print</span><span style="color:#D45DBA">(</span><span style="color:#CE9178">&quot;Result of {} - {} = {}&quot;</span><span style="color:#D4D4D4">.</span><span style="color:#DCDCAA">format</span><span style="color:#1A9FFF">(</span><span style="color:#8CDCFE">a</span><span style="color:#D4D4D4">, </span><span style="color:#8CDCFE">b</span><span style="color:#D4D4D4">, </span><span style="color:#8CDCFE">result</span><span style="color:#1A9FFF">)</span><span style="color:#D45DBA">)</span><span style="color:#D4D4D4"><br></span><span style="color:#D4D4D4"> </span><span style="color:#C586C0">break</span><span style="color:#D4D4D4"><br><br></span><span style="color:#D4D4D4"> </span><span style="color:#C586C0">case</span><span style="color:#D4D4D4"> </span><span style="color:#CE9178">&#x27;*&#x27;</span><span style="color:#D4D4D4">:</span><span style="color:#D4D4D4"><br></span><span style="color:#D4D4D4"> </span><span style="color:#8CDCFE">result</span><span style="color:#D4D4D4"> = </span><span style="color:#DCDCAA">mul</span><span style="color:#D45DBA">(</span><span style="color:#8CDCFE">a</span><span style="color:#D4D4D4">, </span><span style="color:#8CDCFE">b</span><span style="color:#D45DBA">)</span><span style="color:#D4D4D4"><br></span><span style="color:#D4D4D4"> </span><span style="color:#DCDCAA">print</span><span style="color:#D45DBA">(</span><span style="color:#CE9178">&quot;Result of {} * {} = {}&quot;</span><span style="color:#D4D4D4">.</span><span style="color:#DCDCAA">format</span><span style="color:#1A9FFF">(</span><span style="color:#8CDCFE">a</span><span style="color:#D4D4D4">, </span><span style="color:#8CDCFE">b</span><span style="color:#D4D4D4">, </span><span style="color:#8CDCFE">result</span><span style="color:#1A9FFF">)</span><span style="color:#D45DBA">)</span><span style="color:#D4D4D4"><br></span><span style="color:#D4D4D4"> </span><span style="color:#C586C0">break</span><span style="color:#D4D4D4"><br><br></span><span style="color:#D4D4D4"> </span><span style="color:#C586C0">case</span><span style="color:#D4D4D4"> </span><span style="color:#CE9178">&#x27;/&#x27;</span><span style="color:#D4D4D4">:</span><span style="color:#D4D4D4"><br></span><span style="color:#D4D4D4"> </span><span style="color:#8CDCFE">result</span><span style="color:#D4D4D4"> = </span><span style="color:#DCDCAA">floordiv</span><span style="color:#D45DBA">(</span><span style="color:#8CDCFE">a</span><span style="color:#D4D4D4">, </span><span style="color:#8CDCFE">b</span><span style="color:#D45DBA">)</span><span style="color:#D4D4D4"><br></span><span style="color:#D4D4D4"> </span><span style="color:#DCDCAA">print</span><span style="color:#D45DBA">(</span><span style="color:#CE9178">&quot;Result of {} / {} = {}&quot;</span><span style="color:#D4D4D4">.</span><span style="color:#DCDCAA">format</span><span style="color:#1A9FFF">(</span><span style="color:#8CDCFE">a</span><span style="color:#D4D4D4">, </span><span style="color:#8CDCFE">b</span><span style="color:#D4D4D4">, </span><span style="color:#8CDCFE">result</span><span style="color:#1A9FFF">)</span><span style="color:#D45DBA">)</span><span style="color:#D4D4D4"><br></span><span style="color:#D4D4D4"> </span><span style="color:#C586C0">break</span><span style="color:#D4D4D4"><br><br></span><span style="color:#D4D4D4"> </span><span style="color:#C586C0">default</span><span style="color:#D4D4D4">:</span><span style="color:#D4D4D4"><br></span><span style="color:#D4D4D4"> </span><span style="color:#DCDCAA">print</span><span style="color:#D45DBA">(</span><span style="color:#CE9178">&quot;Unknown operation&quot;</span><span style="color:#D45DBA">)</span><span style="color:#D4D4D4"><br></span><span style="color:#FFD705">}</span></pre>
96
60
 
61
+ ## Library Requirements
62
+ | No | Name | Status |
63
+ |:--:|:------------------|:----------------------:|
64
+ | 1 | `argparse` | **required** |
65
+ | 2 | `builtins` | **required** |
66
+ | 3 | `collections.abc` | **required** |
67
+ | 4 | `functools` | **required** |
68
+ | 5 | `html` | **required** |
69
+ | 6 | `importlib` | **required** |
70
+ | 7 | `inspect` | **required** |
71
+ | 8 | `io` | **required** |
72
+ | 9 | `itertools` | **required** |
73
+ | 10 | `json` | **required** |
74
+ | 11 | `math` | **required** |
75
+ | 12 | `operator` | **required** |
76
+ | 13 | `os` | **required** |
77
+ | 14 | `re` | **required** |
78
+ | 15 | `sys` | **required** |
79
+ | 16 | `threading` | **required** |
80
+ | 17 | `types` | **required** |
81
+ | 18 | `typing` | **required** |
82
+ | 19 | `unicodedata` | **required** |
83
+ | 1 | `msvcrt` | **required (library)** |
84
+ | 2 | `shutil` | **required (library)** |
85
+ | 3 | `stat` | **required (library)** |
86
+ | 4 | `termios` | **required (library)** |
87
+ | 5 | `time` | **required (library)** |
88
+ | 6 | `tty` | **required (library)** |
89
+ | 1 | `beartype` | **optional** |
90
+ | 2 | `google.colab` | **optional** |
91
+ | 3 | `prompt_toolkit` | **optional** |
92
+ | 4 | `pygments` | **optional** |
93
+ | 5 | `tkinter` | **optional** |
94
+
95
+ ### Status Explanation
96
+ - **required**: Required by PyScript entirely.
97
+ - **required (library)**: Required PyScript library (located in `pyscript/lib`). PyScript is not affected unless you
98
+ import it.
99
+ - **optional**: Not required, but if it is present, some features can be used without issue.
100
+
97
101
  ## Behind it
98
102
  This language created from based up on a
99
103
  [YouTube tutorial](https://www.youtube.com/playlist?list=PLZQftyCk7_SdoVexSmwy_tBgs7P0b97yD) (check more on GitHub
100
104
  [here](https://github.com/davidcallanan/py-myopl-code) by **@davidcallanan**). At least, it takes about 6 months to
101
- learn it, and also need to learn general things that exist in other programming languages.
105
+ learn it, and also need to learn general things that exist in other programming languages.
@@ -0,0 +1,21 @@
1
+ # Change Log
2
+
3
+ ## [1.12.0] - 18/02/2026
4
+
5
+ ### Added
6
+ - The `sys` (PyScript) module is fully stored at the Python level (stored in `pyscript.core.cache`).
7
+ - The `/clear` shell command support for the **Google Colab** platform.
8
+ - The `/clean` shell command resets the `parser_flags` value.
9
+ - Adds _insert_, _pageup_, and _pagedown_ key system in the terminal editor.
10
+ - Adds new argument flag `-k/--classic-line-shell` and enviroment `PYSCRIPT_CLASSIC_LINE_SHELL`.
11
+ - Interactive shell input is supported and is the default with `prompt_toolkit`.
12
+ - Using a new way to wrap and configure this packages with `pyproject.toml`.
13
+ - _etc_.
14
+
15
+ ### Fixed
16
+ - **Fixed some bugs**.
17
+ - _etc._
18
+
19
+ ### Removed
20
+ - `pyscript.core.cache.PysHook` object.
21
+ - _etc_.
@@ -0,0 +1,51 @@
1
+ [build-system]
2
+ requires = ["setuptools>=61.0"]
3
+ build-backend = "setuptools.build_meta"
4
+
5
+ [project]
6
+ name = "pyscript-programming-language"
7
+ version = "1.12.0"
8
+ description = "PyScript Programming Language"
9
+ readme = { file = "README.md", content-type = "text/markdown" }
10
+ requires-python = ">=3.10"
11
+ license = "MIT"
12
+
13
+ authors = [
14
+ { name = "azzammuhyala", email = "azzammuhyala@gmail.com" }
15
+ ]
16
+
17
+ keywords = [
18
+ "pyscript",
19
+ "pyslang",
20
+ "pys",
21
+ "programming",
22
+ "language",
23
+ "programming language"
24
+ ]
25
+
26
+ classifiers = [
27
+ "Programming Language :: Python",
28
+ "Programming Language :: Python :: 3",
29
+ "Intended Audience :: Developers",
30
+ "Topic :: Software Development :: Libraries :: Python Modules",
31
+ "Topic :: Software Development :: Interpreters",
32
+ "Topic :: Software Development :: Compilers"
33
+ ]
34
+
35
+ [project.urls]
36
+ Homepage = "https://azzammuhyala.github.io/pyscript"
37
+ Source = "https://github.com/azzammuhyala/pyscript"
38
+ "Bug Tracker" = "https://github.com/azzammuhyala/pyscript/issues"
39
+
40
+ [project.optional-dependencies]
41
+ other = [
42
+ "beartype",
43
+ "pygments",
44
+ "prompt_toolkit"
45
+ ]
46
+
47
+ [tool.setuptools.packages.find]
48
+ include = ["pyscript", "pyscript.*"]
49
+
50
+ [tool.setuptools]
51
+ include-package-data = true
@@ -9,11 +9,13 @@ if __import__('sys').version_info < (3, 10):
9
9
  from . import core
10
10
 
11
11
  from .core.constants import (
12
- DEFAULT, NO_COLOR, DEBUG, SILENT, RETURN_RESULT, DONT_SHOW_BANNER_ON_SHELL, HIGHLIGHT, DICT_TO_JSDICT
12
+ DEFAULT, NO_COLOR, DEBUG, SILENT, RETURN_RESULT, DONT_SHOW_BANNER_ON_SHELL, CLASSIC_LINE_SHELL, LEXER_HIGHLIGHT,
13
+ DICT_TO_JSDICT
13
14
  )
14
- from .core.cache import undefined, hook
15
+ from .core.cache import undefined
15
16
  from .core.highlight import (
16
- HLFMT_HTML, HLFMT_ANSI, HLFMT_BBCODE, pys_highlight, PygmentsPyScriptStyle, PygmentsPyScriptLexer
17
+ HLFMT_HTML, HLFMT_ANSI, HLFMT_BBCODE, pys_highlight, PygmentsPyScriptStyle, PygmentsPyScriptLexer,
18
+ PygmentsPyScriptShellLexer
17
19
  )
18
20
  from .core.runner import pys_runner, pys_exec, pys_eval, pys_require, pys_shell
19
21
  from .core.version import version, version_info, __version__, __date__
@@ -26,13 +28,13 @@ __all__ = (
26
28
  'SILENT',
27
29
  'RETURN_RESULT',
28
30
  'DONT_SHOW_BANNER_ON_SHELL',
29
- 'HIGHLIGHT',
31
+ 'CLASSIC_LINE_SHELL',
32
+ 'LEXER_HIGHLIGHT',
30
33
  'DICT_TO_JSDICT',
31
34
  'HLFMT_HTML',
32
35
  'HLFMT_ANSI',
33
36
  'HLFMT_BBCODE',
34
37
  'undefined',
35
- 'hook',
36
38
  'version',
37
39
  'version_info',
38
40
  'pys_highlight',
@@ -42,5 +44,6 @@ __all__ = (
42
44
  'pys_require',
43
45
  'pys_shell',
44
46
  'PygmentsPyScriptStyle',
45
- 'PygmentsPyScriptLexer'
47
+ 'PygmentsPyScriptLexer',
48
+ 'PygmentsPyScriptShellLexer'
46
49
  )
@@ -2,7 +2,7 @@ from typing import TYPE_CHECKING, Any, Callable, Iterable, Literal, Optional
2
2
 
3
3
  if TYPE_CHECKING:
4
4
  from .core.buffer import PysFileBuffer
5
- from .core.cache import PysUndefined, PysHook
5
+ from .core.cache import PysUndefined
6
6
  from .core.context import PysContext
7
7
  from .core.highlight import _PysHighlightFormatter
8
8
  from .core.position import PysPosition
@@ -16,7 +16,8 @@ if TYPE_CHECKING:
16
16
  from . import core as core
17
17
  from .core.highlight import (
18
18
  PygmentsPyScriptStyle as PygmentsPyScriptStyle,
19
- PygmentsPyScriptLexer as PygmentsPyScriptLexer
19
+ PygmentsPyScriptLexer as PygmentsPyScriptLexer,
20
+ PygmentsPyScriptShellLexer as PygmentsPyScriptShellLexer
20
21
  )
21
22
 
22
23
  DEFAULT: int
@@ -25,7 +26,8 @@ DEBUG: int
25
26
  SILENT: int
26
27
  RETURN_RESULT: int
27
28
  DONT_SHOW_BANNER_ON_SHELL: int
28
- HIGHLIGHT: int
29
+ CLASSIC_LINE_SHELL: int
30
+ LEXER_HIGHLIGHT: int
29
31
  DICT_TO_JSDICT: int
30
32
 
31
33
  HLFMT_HTML: _PysHighlightFormatter
@@ -33,13 +35,12 @@ HLFMT_ANSI: _PysHighlightFormatter
33
35
  HLFMT_BBCODE: _PysHighlightFormatter
34
36
 
35
37
  undefined: PysUndefined
36
- hook: PysHook
37
38
  version: str
38
39
  version_info: PysVersionInfo
39
40
 
40
41
  def pys_highlight(
41
42
  source: str | bytes | bytearray | Iterable | BuiltinMethodType | IOBase | PysFileBuffer,
42
- format: Optional[
43
+ formatter: Optional[
43
44
  Callable[
44
45
  [
45
46
  str | Literal[
@@ -1,17 +1,19 @@
1
1
  from .core.buffer import PysFileBuffer
2
- from .core.cache import undefined, hook
3
- from .core.constants import DEFAULT, DEBUG, DONT_SHOW_BANNER_ON_SHELL, NO_COLOR
2
+ from .core.cache import pys_sys, undefined
3
+ from .core.constants import (
4
+ ENV_PYSCRIPT_CLASSIC_LINE_SHELL, DEFAULT, DEBUG, NO_COLOR, DONT_SHOW_BANNER_ON_SHELL, CLASSIC_LINE_SHELL
5
+ )
4
6
  from .core.editor.gui import PysGUIEditor, GUI_SUPPORT
5
7
  from .core.editor.terminal import PysTerminalEditor, TERMINAL_SUPPORT
6
8
  from .core.highlight import (
7
- HLFMT_HTML, HLFMT_ANSI, HLFMT_BBCODE, pys_highlight, PygmentsPyScriptStyle, PygmentsPyScriptLexer
9
+ PYGMENTS, HLFMT_HTML, HLFMT_ANSI, HLFMT_BBCODE, pys_highlight, PygmentsPyScriptStyle, PygmentsPyScriptLexer
8
10
  )
9
11
  from .core.runner import _normalize_namespace, pys_runner, pys_shell
10
12
  from .core.utils.module import remove_python_path
11
13
  from .core.utils.path import getcwd, normpath, get_name_from_path
12
14
  from .core.version import __version__
13
15
 
14
- try:
16
+ if PYGMENTS:
15
17
  from pygments import highlight
16
18
  from pygments.formatters import (
17
19
  BBCodeFormatter, HtmlFormatter, LatexFormatter, TerminalFormatter, TerminalTrueColorFormatter,
@@ -27,10 +29,6 @@ try:
27
29
  'pm-256-terminal': Terminal256Formatter
28
30
  }
29
31
 
30
- PYGMENTS = True
31
- except ImportError:
32
- PYGMENTS = False
33
-
34
32
  from argparse import OPTIONAL, REMAINDER, ArgumentParser
35
33
  from os import environ
36
34
 
@@ -81,6 +79,12 @@ parser.add_argument(
81
79
  help="Inspect interactively after running a code",
82
80
  )
83
81
 
82
+ parser.add_argument(
83
+ '-k', '--classic-line-shell',
84
+ action='store_true',
85
+ help="Use a classic command line shell"
86
+ )
87
+
84
88
  parser.add_argument(
85
89
  '-l', '--highlight',
86
90
  choices=tuple(FORMAT_HIGHLIGHT_MAP.keys()) + tuple(FORMAT_PYGMENTS_MAP.keys() if PYGMENTS else ()),
@@ -134,9 +138,9 @@ parser.add_argument(
134
138
  )
135
139
 
136
140
  parser.add_argument(
137
- 'argv',
141
+ 'arg',
138
142
  nargs=REMAINDER,
139
- help="Remaining arguments stored in hook.argv (sys.argv or sys.hook.argv)"
143
+ help="Remaining arguments stored in sys_module.argv (sys.argv)"
140
144
  )
141
145
 
142
146
  def argument_error(argument, message):
@@ -157,9 +161,11 @@ if args.terminal:
157
161
  try:
158
162
  import ctypes
159
163
  kernel32 = ctypes.windll.kernel32
160
- kernel32.SetConsoleMode(kernel32.GetStdHandle(-11), 7) # stdout
161
- kernel32.SetConsoleMode(kernel32.GetStdHandle(-12), 7) # stderr
162
- kernel32.SetConsoleMode(kernel32.GetStdHandle(-10), 7) # stdin
164
+ for i in (-11, -12, -10):
165
+ try:
166
+ kernel32.SetConsoleMode(kernel32.GetStdHandle(i), 7)
167
+ except:
168
+ continue
163
169
  except:
164
170
  pass
165
171
 
@@ -182,17 +188,18 @@ if args.debug:
182
188
  flags |= DEBUG
183
189
  if args.no_color or environ.get('NO_COLOR') is not None:
184
190
  flags |= NO_COLOR
191
+ if args.classic_line_shell or environ.get(ENV_PYSCRIPT_CLASSIC_LINE_SHELL) is not None:
192
+ flags |= CLASSIC_LINE_SHELL
193
+ if args.q:
194
+ flags |= DONT_SHOW_BANNER_ON_SHELL
185
195
  if args.P:
186
196
  for cwd in {'', '.', getcwd()}:
187
197
  remove_python_path(cwd)
188
- if args.q:
189
- flags |= DONT_SHOW_BANNER_ON_SHELL
190
198
 
191
- hook.argv = ['']
192
- hook.argv[1:] = args.argv
199
+ pys_sys.argv = argv = ['', *args.arg]
193
200
 
194
201
  if args.file is not None:
195
- hook.argv[0] = args.file
202
+ argv[0] = args.file
196
203
  path = normpath(args.file)
197
204
 
198
205
  try:
@@ -228,7 +235,7 @@ if args.file is not None:
228
235
  print(
229
236
  pys_highlight(
230
237
  source=file,
231
- format=FORMAT_HIGHLIGHT_MAP[args.highlight]
238
+ formatter=FORMAT_HIGHLIGHT_MAP[args.highlight]
232
239
  )
233
240
  )
234
241
  else:
@@ -264,7 +271,7 @@ if args.file is not None:
264
271
  )
265
272
 
266
273
  elif args.command is not None:
267
- hook.argv[0] = '-c'
274
+ argv[0] = '-c'
268
275
 
269
276
  file = PysFileBuffer(args.command, '<arg-command>')
270
277
  result = pys_runner(
@@ -0,0 +1,70 @@
1
+ from .bases import Pys
2
+ from .constants import PYSCRIPT_PATH, CORE_PATH, LIBRARIES_PATH, SITE_PACKAGES_PATH
3
+ from .utils.debug import print_display, print_traceback, clear_shell
4
+ from .utils.decorators import inheritable, singleton
5
+
6
+ from typing import Literal
7
+ from types import ModuleType
8
+
9
+ import sys
10
+
11
+ pys_sys = ModuleType(
12
+ 'sys',
13
+ "This is a sys module for PyScript, which provides necessary attributes, functions, and objects for the PyScript "
14
+ "environment. It is designed to be used within the PyScript runtime and should not be confused with the standard "
15
+ "Python sys module."
16
+ )
17
+
18
+ pys_sys.__running_shell__ = False
19
+ pys_sys.__running_breakpoint__ = False
20
+ pys_sys.argv = ['']
21
+ pys_sys.displayhook = print_display
22
+ pys_sys.excepthook = print_traceback
23
+ pys_sys.clearhook = clear_shell
24
+ pys_sys.exec_prefix = pys_sys.prefix = pys_sys.pyscript_path = PYSCRIPT_PATH
25
+ pys_sys.core_path = CORE_PATH
26
+ pys_sys.libraries_path = LIBRARIES_PATH
27
+ pys_sys.site_packages_path = SITE_PACKAGES_PATH
28
+ pys_sys.executable = f'"{sys.executable}" -m pyscript'
29
+ pys_sys.ps1 = '>>> '
30
+ pys_sys.ps2 = '... '
31
+ pys_sys.float_info = sys.float_info
32
+ pys_sys.int_info = sys.int_info
33
+ pys_sys.hash_info = sys.hash_info
34
+ pys_sys.stderr = sys.stderr
35
+ pys_sys.stdout = sys.stdout
36
+ pys_sys.stdin = sys.stdin
37
+ pys_sys.platform = sys.platform
38
+ pys_sys.exit = sys.exit
39
+ pys_sys.getrecursionlimit = sys.getrecursionlimit
40
+ pys_sys.getrefcount = sys.getrefcount
41
+ pys_sys.getsizeof = sys.getsizeof
42
+ pys_sys.setrecursionlimit = sys.setrecursionlimit
43
+
44
+ # added in python>=3.10.7
45
+ if hasattr(sys, 'set_int_max_str_digits'):
46
+ pys_sys.set_int_max_str_digits = sys.set_int_max_str_digits
47
+
48
+ pys_sys.path = [SITE_PACKAGES_PATH, LIBRARIES_PATH]
49
+ pys_sys.loading_modules = set()
50
+ pys_sys.modules = {}
51
+ pys_sys.singletons = {}
52
+
53
+ @singleton
54
+ @inheritable
55
+ class PysUndefined(Pys):
56
+
57
+ __slots__ = ()
58
+
59
+ def __new_singleton__(cls) -> 'PysUndefined':
60
+ global undefined
61
+ undefined = super(cls, cls).__new__(cls)
62
+ return undefined
63
+
64
+ def __repr__(self) -> Literal['undefined']:
65
+ return 'undefined'
66
+
67
+ def __bool__(self) -> Literal[False]:
68
+ return False
69
+
70
+ PysUndefined()
@@ -15,6 +15,7 @@ ENV_PYSCRIPT_NO_GIL = 'PYSCRIPT_NO_GIL'
15
15
  ENV_PYSCRIPT_NO_READLINE = 'PYSCRIPT_NO_READLINE'
16
16
  ENV_PYSCRIPT_NO_TYPECHECK = 'PYSCRIPT_NO_TYPECHECK'
17
17
  ENV_PYSCRIPT_MAXIMUM_TRACEBACK_LINE = 'PYSCRIPT_MAXIMUM_TRACEBACK_LINE'
18
+ ENV_PYSCRIPT_CLASSIC_LINE_SHELL = 'PYSCRIPT_CLASSIC_LINE_SHELL'
18
19
 
19
20
  # tokens offset
20
21
  DOUBLE = 2**8
@@ -115,7 +116,8 @@ DEBUG = 1 << 1
115
116
  SILENT = 1 << 2
116
117
  RETURN_RESULT = 1 << 3
117
118
  DONT_SHOW_BANNER_ON_SHELL = 1 << 4
119
+ CLASSIC_LINE_SHELL = 1 << 5
118
120
 
119
121
  # parser flags
120
- HIGHLIGHT = 1 << 0
122
+ LEXER_HIGHLIGHT = 1 << 0
121
123
  DICT_TO_JSDICT = 1 << 1
@@ -1,6 +1,6 @@
1
1
  from ..bases import Pys
2
2
  from ..buffer import PysFileBuffer
3
- from ..utils.decorators import inheritable
3
+ from ..utils.decorators import typechecked, inheritable
4
4
  from ..utils.generic import setimuattr
5
5
  from ..utils.string import normstr
6
6
 
@@ -10,6 +10,7 @@ class PysEditor(Pys):
10
10
 
11
11
  __slots__ = ('file', 'used', 'modified', 'wrapped', 'basename')
12
12
 
13
+ @typechecked
13
14
  def __init__(self, file: PysFileBuffer) -> None:
14
15
  self.file = file
15
16
  self.used = False