pyscript-programming-language 1.10.4__tar.gz → 1.11.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 (81) hide show
  1. pyscript_programming_language-1.11.0/PKG-INFO +100 -0
  2. pyscript_programming_language-1.11.0/README.md +65 -0
  3. {pyscript_programming_language-1.10.4 → pyscript_programming_language-1.11.0}/pyscript/__init__.pyi +2 -2
  4. {pyscript_programming_language-1.10.4 → pyscript_programming_language-1.11.0}/pyscript/__main__.py +39 -37
  5. {pyscript_programming_language-1.10.4 → pyscript_programming_language-1.11.0}/pyscript/core/__init__.py +2 -0
  6. {pyscript_programming_language-1.10.4 → pyscript_programming_language-1.11.0}/pyscript/core/cache.py +1 -1
  7. {pyscript_programming_language-1.10.4 → pyscript_programming_language-1.11.0}/pyscript/core/checks.py +1 -2
  8. {pyscript_programming_language-1.10.4 → pyscript_programming_language-1.11.0}/pyscript/core/constants.py +1 -0
  9. {pyscript_programming_language-1.10.4 → pyscript_programming_language-1.11.0}/pyscript/core/exceptions.py +2 -2
  10. {pyscript_programming_language-1.10.4 → pyscript_programming_language-1.11.0}/pyscript/core/highlight.py +59 -83
  11. {pyscript_programming_language-1.10.4 → pyscript_programming_language-1.11.0}/pyscript/core/interpreter.py +37 -32
  12. {pyscript_programming_language-1.10.4 → pyscript_programming_language-1.11.0}/pyscript/core/lexer.py +12 -12
  13. {pyscript_programming_language-1.10.4 → pyscript_programming_language-1.11.0}/pyscript/core/objects.py +6 -19
  14. pyscript_programming_language-1.11.0/pyscript/core/other/copyright +2 -0
  15. pyscript_programming_language-1.11.0/pyscript/core/other/credits +2 -0
  16. pyscript_programming_language-1.11.0/pyscript/core/other/license +21 -0
  17. {pyscript_programming_language-1.10.4 → pyscript_programming_language-1.11.0}/pyscript/core/parser.py +28 -24
  18. {pyscript_programming_language-1.10.4 → pyscript_programming_language-1.11.0}/pyscript/core/position.py +7 -5
  19. {pyscript_programming_language-1.10.4 → pyscript_programming_language-1.11.0}/pyscript/core/pysbuiltins.py +33 -21
  20. {pyscript_programming_language-1.10.4 → pyscript_programming_language-1.11.0}/pyscript/core/runner.py +23 -22
  21. {pyscript_programming_language-1.10.4/pyscript/core/utils → pyscript_programming_language-1.11.0/pyscript/core}/shell.py +32 -18
  22. {pyscript_programming_language-1.10.4 → pyscript_programming_language-1.11.0}/pyscript/core/token.py +2 -5
  23. {pyscript_programming_language-1.10.4 → pyscript_programming_language-1.11.0}/pyscript/core/utils/__init__.py +0 -2
  24. {pyscript_programming_language-1.10.4 → pyscript_programming_language-1.11.0}/pyscript/core/version.py +2 -2
  25. {pyscript_programming_language-1.10.4 → pyscript_programming_language-1.11.0}/pyscript/lib/ast/ast_unparse.py +51 -91
  26. {pyscript_programming_language-1.10.4 → pyscript_programming_language-1.11.0}/pyscript/lib/brainfuck.pys +1 -1
  27. {pyscript_programming_language-1.10.4 → pyscript_programming_language-1.11.0}/pyscript/lib/explorer.pys +80 -53
  28. pyscript_programming_language-1.11.0/pyscript/lib/fpstimer/__init__.pys +6 -0
  29. pyscript_programming_language-1.10.4/pyscript/lib/fpstimer.pys → pyscript_programming_language-1.11.0/pyscript/lib/fpstimer/py_fpstimer.py +11 -28
  30. pyscript_programming_language-1.11.0/pyscript/lib/inspect.pys +27 -0
  31. pyscript_programming_language-1.11.0/pyscript/lib/opcode.pys +1 -0
  32. pyscript_programming_language-1.11.0/pyscript_programming_language.egg-info/PKG-INFO +100 -0
  33. {pyscript_programming_language-1.10.4 → pyscript_programming_language-1.11.0}/pyscript_programming_language.egg-info/SOURCES.txt +7 -2
  34. {pyscript_programming_language-1.10.4 → pyscript_programming_language-1.11.0}/setup.py +1 -1
  35. pyscript_programming_language-1.10.4/PKG-INFO +0 -88
  36. pyscript_programming_language-1.10.4/README.md +0 -53
  37. pyscript_programming_language-1.10.4/pyscript/lib/inspect.pys +0 -46
  38. pyscript_programming_language-1.10.4/pyscript_programming_language.egg-info/PKG-INFO +0 -88
  39. {pyscript_programming_language-1.10.4 → pyscript_programming_language-1.11.0}/MANIFEST.in +0 -0
  40. {pyscript_programming_language-1.10.4 → pyscript_programming_language-1.11.0}/pyscript/__init__.py +0 -0
  41. {pyscript_programming_language-1.10.4 → pyscript_programming_language-1.11.0}/pyscript/core/analyzer.py +0 -0
  42. {pyscript_programming_language-1.10.4 → pyscript_programming_language-1.11.0}/pyscript/core/bases.py +0 -0
  43. {pyscript_programming_language-1.10.4 → pyscript_programming_language-1.11.0}/pyscript/core/buffer.py +0 -0
  44. {pyscript_programming_language-1.10.4 → pyscript_programming_language-1.11.0}/pyscript/core/context.py +0 -0
  45. {pyscript_programming_language-1.10.4 → pyscript_programming_language-1.11.0}/pyscript/core/handlers.py +0 -0
  46. {pyscript_programming_language-1.10.4 → pyscript_programming_language-1.11.0}/pyscript/core/mapping.py +0 -0
  47. {pyscript_programming_language-1.10.4 → pyscript_programming_language-1.11.0}/pyscript/core/nodes.py +0 -0
  48. {pyscript_programming_language-1.10.4 → pyscript_programming_language-1.11.0}/pyscript/core/results.py +0 -0
  49. {pyscript_programming_language-1.10.4 → pyscript_programming_language-1.11.0}/pyscript/core/symtab.py +0 -0
  50. {pyscript_programming_language-1.10.4 → pyscript_programming_language-1.11.0}/pyscript/core/utils/ansi.py +0 -0
  51. {pyscript_programming_language-1.10.4 → pyscript_programming_language-1.11.0}/pyscript/core/utils/debug.py +0 -0
  52. {pyscript_programming_language-1.10.4 → pyscript_programming_language-1.11.0}/pyscript/core/utils/decorators.py +0 -0
  53. {pyscript_programming_language-1.10.4 → pyscript_programming_language-1.11.0}/pyscript/core/utils/generic.py +0 -0
  54. {pyscript_programming_language-1.10.4 → pyscript_programming_language-1.11.0}/pyscript/core/utils/jsdict.py +0 -0
  55. {pyscript_programming_language-1.10.4 → pyscript_programming_language-1.11.0}/pyscript/core/utils/module.py +0 -0
  56. {pyscript_programming_language-1.10.4 → pyscript_programming_language-1.11.0}/pyscript/core/utils/path.py +0 -0
  57. {pyscript_programming_language-1.10.4 → pyscript_programming_language-1.11.0}/pyscript/core/utils/similarity.py +0 -0
  58. {pyscript_programming_language-1.10.4 → pyscript_programming_language-1.11.0}/pyscript/core/utils/string.py +0 -0
  59. {pyscript_programming_language-1.10.4 → pyscript_programming_language-1.11.0}/pyscript/lib/__hello__.pys +0 -0
  60. {pyscript_programming_language-1.10.4 → pyscript_programming_language-1.11.0}/pyscript/lib/ansi.pys +0 -0
  61. {pyscript_programming_language-1.10.4 → pyscript_programming_language-1.11.0}/pyscript/lib/ast/__init__.pys +0 -0
  62. {pyscript_programming_language-1.10.4 → pyscript_programming_language-1.11.0}/pyscript/lib/ast/ast_dump.py +0 -0
  63. {pyscript_programming_language-1.10.4 → pyscript_programming_language-1.11.0}/pyscript/lib/ast/ast_literal_eval.py +0 -0
  64. {pyscript_programming_language-1.10.4 → pyscript_programming_language-1.11.0}/pyscript/lib/ast/ast_walk.py +0 -0
  65. {pyscript_programming_language-1.10.4 → pyscript_programming_language-1.11.0}/pyscript/lib/dis.pys +0 -0
  66. {pyscript_programming_language-1.10.4 → pyscript_programming_language-1.11.0}/pyscript/lib/getch.pys +0 -0
  67. {pyscript_programming_language-1.10.4 → pyscript_programming_language-1.11.0}/pyscript/lib/jsdict.pys +0 -0
  68. {pyscript_programming_language-1.10.4 → pyscript_programming_language-1.11.0}/pyscript/lib/keyword.pys +0 -0
  69. {pyscript_programming_language-1.10.4 → pyscript_programming_language-1.11.0}/pyscript/lib/parser.pys +0 -0
  70. {pyscript_programming_language-1.10.4 → pyscript_programming_language-1.11.0}/pyscript/lib/site.pys +0 -0
  71. {pyscript_programming_language-1.10.4 → pyscript_programming_language-1.11.0}/pyscript/lib/symtable.pys +0 -0
  72. {pyscript_programming_language-1.10.4 → pyscript_programming_language-1.11.0}/pyscript/lib/sys.pys +0 -0
  73. {pyscript_programming_language-1.10.4 → pyscript_programming_language-1.11.0}/pyscript/lib/token.pys +0 -0
  74. {pyscript_programming_language-1.10.4 → pyscript_programming_language-1.11.0}/pyscript/lib/tokenize/__init__.pys +0 -0
  75. {pyscript_programming_language-1.10.4 → pyscript_programming_language-1.11.0}/pyscript/lib/tokenize/tok_untokenize.py +0 -0
  76. {pyscript_programming_language-1.10.4 → pyscript_programming_language-1.11.0}/pyscript/site-packages/this.pys +0 -0
  77. {pyscript_programming_language-1.10.4 → pyscript_programming_language-1.11.0}/pyscript/this.py +0 -0
  78. {pyscript_programming_language-1.10.4 → pyscript_programming_language-1.11.0}/pyscript_programming_language.egg-info/dependency_links.txt +0 -0
  79. {pyscript_programming_language-1.10.4 → pyscript_programming_language-1.11.0}/pyscript_programming_language.egg-info/requires.txt +0 -0
  80. {pyscript_programming_language-1.10.4 → pyscript_programming_language-1.11.0}/pyscript_programming_language.egg-info/top_level.txt +0 -0
  81. {pyscript_programming_language-1.10.4 → pyscript_programming_language-1.11.0}/setup.cfg +0 -0
@@ -0,0 +1,100 @@
1
+ Metadata-Version: 2.4
2
+ Name: pyscript-programming-language
3
+ Version: 1.11.0
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
+ Dynamic: author
24
+ Dynamic: author-email
25
+ Dynamic: classifier
26
+ Dynamic: description
27
+ Dynamic: description-content-type
28
+ Dynamic: home-page
29
+ Dynamic: keywords
30
+ Dynamic: license
31
+ Dynamic: project-url
32
+ Dynamic: provides-extra
33
+ Dynamic: requires-python
34
+ Dynamic: summary
35
+
36
+ # PyScript
37
+
38
+ <div align="center">
39
+ <img src="https://github.com/azzammuhyala/pyscript/blob/main/PyScript.png?raw=true" alt="PyScript Logo" width="200">
40
+ </div>
41
+
42
+ PyScript is a simple programming language built on top of Python. It combines some syntax from Python and JavaScript,
43
+ so if you're already familiar with Python or JavaScript, or both, it should be quite easy to learn.
44
+
45
+ ## Introduction
46
+ PyScript may not be the language we'll be discussing, but the name PyScript already exists, a flexible and platform for
47
+ running Python in a browser. Since it's inception, the language was inspired by Python and JavaScript, which are
48
+ relatively easy for humans to read. This name was chosen because it wasn't immediately known whether this name was
49
+ already in use.
50
+
51
+ This language wasn't designed to compete with other modern programming languages, but rather as a learning for
52
+ understanding how programming languages ​​work and how human written code can be understood by machines. Furthermore, this
53
+ language was created as a relatively complex project. Using Python as the foundation for PyScript, it's easy to
54
+ understand how the language is built without having to understand complex instructions like those in C, C++, and other
55
+ low-level languages.
56
+
57
+ To learn more about PyScript, you can see on [PyScript documentation](https://azzammuhyala.github.io/pyscript) or
58
+ [PyScript repository](https://github.com/azzammuhyala/pyscript) for full source code.
59
+
60
+ ## Installation
61
+ First, you'll need to download Python. Make sure you're using the latest version above `3.10`, to ensure the code runs
62
+ correctly. Visit the official [Python website](https://python.org) to download it.
63
+
64
+ Next, after downloading and configuring the Python application, you can download the PyScript from
65
+ [PyScript releases](https://github.com/azzammuhyala/pyscript/releases) or from Python Pip with this command
66
+ (_Recommended_):
67
+ ```sh
68
+ pip install -U pyscript-programming-language
69
+ ```
70
+
71
+ [_OPTIONAL_] You can download additional libraries that PyScript requires with this command:
72
+ ```sh
73
+ pip install -U pyscript-programming-language[other]
74
+ ```
75
+
76
+ And also, you can download PyScript with `git`:
77
+ ```sh
78
+ git clone https://github.com/azzammuhyala/pyscript
79
+ cd pyscript
80
+ python setup.py install
81
+ ```
82
+
83
+ After that, you can run the PyScript shell (_REPL_) with this command:
84
+ ```sh
85
+ python -m pyscript
86
+ ```
87
+ If successful, you can see the version, release date, and a `>>>` like Python shell (_REPL_).
88
+
89
+ > If you are using the VS Code editor, you can use the
90
+ [PyScript extension](https://marketplace.visualstudio.com/items?itemName=azzammuhyala.pyslang) for Syntax Highlight!
91
+
92
+ ## Syntax
93
+ Familiar? There it is!
94
+ <pre><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"># 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:#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:#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>
95
+
96
+ ## Behind it
97
+ This language created from based up on a
98
+ [YouTube tutorial](https://www.youtube.com/playlist?list=PLZQftyCk7_SdoVexSmwy_tBgs7P0b97yD) (check more on GitHub
99
+ [here](https://github.com/davidcallanan/py-myopl-code) by **@davidcallanan**). At least, it takes about 6 months to
100
+ learn it, and also need to learn general things that exist in other programming languages.
@@ -0,0 +1,65 @@
1
+ # PyScript
2
+
3
+ <div align="center">
4
+ <img src="https://github.com/azzammuhyala/pyscript/blob/main/PyScript.png?raw=true" alt="PyScript Logo" width="200">
5
+ </div>
6
+
7
+ PyScript is a simple programming language built on top of Python. It combines some syntax from Python and JavaScript,
8
+ so if you're already familiar with Python or JavaScript, or both, it should be quite easy to learn.
9
+
10
+ ## Introduction
11
+ PyScript may not be the language we'll be discussing, but the name PyScript already exists, a flexible and platform for
12
+ running Python in a browser. Since it's inception, the language was inspired by Python and JavaScript, which are
13
+ relatively easy for humans to read. This name was chosen because it wasn't immediately known whether this name was
14
+ already in use.
15
+
16
+ This language wasn't designed to compete with other modern programming languages, but rather as a learning for
17
+ understanding how programming languages ​​work and how human written code can be understood by machines. Furthermore, this
18
+ language was created as a relatively complex project. Using Python as the foundation for PyScript, it's easy to
19
+ understand how the language is built without having to understand complex instructions like those in C, C++, and other
20
+ low-level languages.
21
+
22
+ To learn more about PyScript, you can see on [PyScript documentation](https://azzammuhyala.github.io/pyscript) or
23
+ [PyScript repository](https://github.com/azzammuhyala/pyscript) for full source code.
24
+
25
+ ## Installation
26
+ First, you'll need to download Python. Make sure you're using the latest version above `3.10`, to ensure the code runs
27
+ correctly. Visit the official [Python website](https://python.org) to download it.
28
+
29
+ Next, after downloading and configuring the Python application, you can download the PyScript from
30
+ [PyScript releases](https://github.com/azzammuhyala/pyscript/releases) or from Python Pip with this command
31
+ (_Recommended_):
32
+ ```sh
33
+ pip install -U pyscript-programming-language
34
+ ```
35
+
36
+ [_OPTIONAL_] You can download additional libraries that PyScript requires with this command:
37
+ ```sh
38
+ pip install -U pyscript-programming-language[other]
39
+ ```
40
+
41
+ And also, you can download PyScript with `git`:
42
+ ```sh
43
+ git clone https://github.com/azzammuhyala/pyscript
44
+ cd pyscript
45
+ python setup.py install
46
+ ```
47
+
48
+ After that, you can run the PyScript shell (_REPL_) with this command:
49
+ ```sh
50
+ python -m pyscript
51
+ ```
52
+ If successful, you can see the version, release date, and a `>>>` like Python shell (_REPL_).
53
+
54
+ > If you are using the VS Code editor, you can use the
55
+ [PyScript extension](https://marketplace.visualstudio.com/items?itemName=azzammuhyala.pyslang) for Syntax Highlight!
56
+
57
+ ## Syntax
58
+ Familiar? There it is!
59
+ <pre><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"># 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:#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:#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>
60
+
61
+ ## Behind it
62
+ This language created from based up on a
63
+ [YouTube tutorial](https://www.youtube.com/playlist?list=PLZQftyCk7_SdoVexSmwy_tBgs7P0b97yD) (check more on GitHub
64
+ [here](https://github.com/davidcallanan/py-myopl-code) by **@davidcallanan**). At least, it takes about 6 months to
65
+ learn it, and also need to learn general things that exist in other programming languages.
@@ -43,8 +43,8 @@ def pys_highlight(
43
43
  Callable[
44
44
  [
45
45
  str | Literal[
46
- 'start', 'invalid', 'identifier', 'identifier-constant', 'identifier-function', 'identifier-type',
47
- 'keyword', 'keyword-constant', 'number', 'string', 'comment', 'newline', 'default', 'end'
46
+ 'start', 'default', 'newline', 'keyword', 'keyword-constant', 'identifier', 'identifier-constant',
47
+ 'identifier-function', 'identifier-type', 'number', 'string', 'comment', 'invalid', 'end'
48
48
  ],
49
49
  PysPosition,
50
50
  str
@@ -4,16 +4,24 @@ from .core.constants import DEFAULT, DEBUG, DONT_SHOW_BANNER_ON_SHELL, NO_COLOR
4
4
  from .core.highlight import (
5
5
  HLFMT_HTML, HLFMT_ANSI, HLFMT_BBCODE, pys_highlight, PygmentsPyScriptStyle, PygmentsPyScriptLexer
6
6
  )
7
- from .core.runner import _normalize_globals, pys_runner, pys_shell
7
+ from .core.runner import _normalize_namespace, pys_runner, pys_shell
8
8
  from .core.utils.module import get_module_name_from_path, remove_python_path
9
9
  from .core.utils.path import normpath, getcwd
10
10
  from .core.version import __version__
11
11
 
12
12
  try:
13
13
  from pygments import highlight
14
- from pygments.formatters import TerminalFormatter, TerminalTrueColorFormatter, Terminal256Formatter
14
+ from pygments.formatters import (
15
+ BBCodeFormatter,
16
+ HtmlFormatter,
17
+ LatexFormatter,
18
+ TerminalFormatter, TerminalTrueColorFormatter, Terminal256Formatter
19
+ )
15
20
 
16
21
  FORMAT_PYGMENTS_MAP = {
22
+ 'pm-bbcode': BBCodeFormatter,
23
+ 'pm-html': HtmlFormatter,
24
+ 'pm-latex': LatexFormatter,
17
25
  'pm-terminal': TerminalFormatter,
18
26
  'pm-true-terminal': TerminalTrueColorFormatter,
19
27
  'pm-256-terminal': Terminal256Formatter
@@ -23,27 +31,11 @@ try:
23
31
  except ImportError:
24
32
  PYGMENTS = False
25
33
 
26
- from argparse import ArgumentParser
34
+ from argparse import OPTIONAL, REMAINDER, ArgumentParser
27
35
  from os import environ
28
36
 
29
37
  import sys
30
38
 
31
- def split_argv():
32
- need_value_arguments = {'-c', '--command', '-l', '--highlight', '-r', '--py-recursion'}
33
- argv = sys.argv
34
- i = 1
35
-
36
- while i < len(argv):
37
- argument = argv[i]
38
- if argument in need_value_arguments:
39
- i += 1
40
- elif not argument.startswith('-'):
41
- break
42
- i += 1
43
-
44
- hook.argv = argv[i:]
45
- return argv[1:i + 1]
46
-
47
39
  FORMAT_HIGHLIGHT_MAP = {
48
40
  'html': HLFMT_HTML,
49
41
  'ansi': HLFMT_ANSI,
@@ -55,14 +47,6 @@ parser = ArgumentParser(
55
47
  description=f'PyScript Launcher for Python Version {".".join(map(str, sys.version_info))}'
56
48
  )
57
49
 
58
- parser.add_argument(
59
- 'file',
60
- type=str,
61
- nargs='?',
62
- default=None,
63
- help="File path to be executed"
64
- )
65
-
66
50
  parser.add_argument(
67
51
  '-v', '--version',
68
52
  action='version',
@@ -77,9 +61,9 @@ parser.add_argument(
77
61
  )
78
62
 
79
63
  parser.add_argument(
80
- '-d', '--debug',
64
+ '-d', '-O', '--debug',
81
65
  action='store_true',
82
- help="Set a debug flag, this will ignore assert statement"
66
+ help="Set a debug flag, this will ignore assert statement. Check the flag is active with the __debug__ keyword"
83
67
  )
84
68
 
85
69
  parser.add_argument(
@@ -111,7 +95,7 @@ parser.add_argument(
111
95
  parser.add_argument(
112
96
  '-P',
113
97
  action='store_true',
114
- help="Don't prepend a potentially unsafe path to sys.path (python sys)"
98
+ help="Don't prepend a potentially unsafe path to sys.path (python sys.path)"
115
99
  )
116
100
 
117
101
  parser.add_argument(
@@ -120,11 +104,25 @@ parser.add_argument(
120
104
  help="Don't print version and copyright messages on interactive startup"
121
105
  )
122
106
 
107
+ parser.add_argument(
108
+ 'file',
109
+ type=str,
110
+ nargs=OPTIONAL,
111
+ default=None,
112
+ help="File path to be executed"
113
+ )
114
+
115
+ parser.add_argument(
116
+ 'argv',
117
+ nargs=REMAINDER,
118
+ help="Remaining arguments stored in hook.argv (sys.argv or sys.hook.argv)"
119
+ )
120
+
123
121
  def argument_error(argument, message):
124
122
  parser.print_usage(sys.stderr)
125
123
  parser.exit(2, f"{parser.prog}: error: argument {argument}: {message}\n")
126
124
 
127
- args = parser.parse_args(split_argv())
125
+ args = parser.parse_args()
128
126
 
129
127
  if args.highlight and args.file is None:
130
128
  argument_error("-l/--highlight", "argument 'file' is required")
@@ -148,7 +146,10 @@ if args.P:
148
146
  if args.q:
149
147
  flags |= DONT_SHOW_BANNER_ON_SHELL
150
148
 
149
+ hook.argv.extend(args.argv)
150
+
151
151
  if args.file is not None:
152
+ hook.argv[0] = args.file
152
153
  path = normpath(args.file)
153
154
 
154
155
  try:
@@ -180,11 +181,10 @@ if args.file is not None:
180
181
  )
181
182
  else:
182
183
  print(
183
- flush=True,
184
- end=highlight(
184
+ highlight(
185
185
  code=file.text,
186
186
  lexer=PygmentsPyScriptLexer(),
187
- formatter=FORMAT_PYGMENTS_MAP[args.highlight](style=PygmentsPyScriptStyle)
187
+ formatter=FORMAT_PYGMENTS_MAP[args.highlight](style=PygmentsPyScriptStyle, full=True)
188
188
  )
189
189
  )
190
190
  except BaseException as e:
@@ -194,7 +194,7 @@ if args.file is not None:
194
194
  result = pys_runner(
195
195
  file=file,
196
196
  mode='exec',
197
- symbol_table=_normalize_globals(file, undefined),
197
+ symbol_table=_normalize_namespace(file, undefined),
198
198
  flags=flags
199
199
  )
200
200
 
@@ -211,11 +211,13 @@ if args.file is not None:
211
211
  )
212
212
 
213
213
  elif args.command is not None:
214
- file = PysFileBuffer(args.command)
214
+ hook.argv[0] = '-c'
215
+
216
+ file = PysFileBuffer(args.command, '<arg-command>')
215
217
  code = pys_runner(
216
218
  file=file,
217
219
  mode='exec',
218
- symbol_table=_normalize_globals(file, undefined),
220
+ symbol_table=_normalize_namespace(file, undefined),
219
221
  flags=flags
220
222
  ).end_process()[0]
221
223
 
@@ -23,6 +23,7 @@ from . import (
23
23
  pysbuiltins,
24
24
  results,
25
25
  runner,
26
+ shell,
26
27
  symtab,
27
28
  token,
28
29
  utils,
@@ -50,6 +51,7 @@ __all__ = (
50
51
  'pysbuiltins',
51
52
  'results',
52
53
  'runner',
54
+ 'shell',
53
55
  'symtab',
54
56
  'token',
55
57
  'utils',
@@ -37,7 +37,7 @@ class PysHook(Pys):
37
37
  def __new_singleton__(cls) -> 'PysHook':
38
38
  global hook
39
39
  hook = super(cls, cls).__new__(cls)
40
- hook.argv = []
40
+ hook.argv = ['']
41
41
  hook.running_shell = False
42
42
  hook.running_breakpoint = False
43
43
  hook.display = print_display
@@ -19,6 +19,7 @@ is_unpack_assignment = frozenset([
19
19
  ]).__contains__
20
20
 
21
21
  is_keyword = frozenset(KEYWORDS).__contains__
22
+ is_constant_keywords = frozenset(CONSTANT_KEYWORDS).__contains__
22
23
 
23
24
  is_python_extensions = frozenset([
24
25
  '.py', '.ipy', '.pyc', '.pyd', '.pyi', '.pyo', '.pyp', '.pyw', '.pyz', '.rpy', '.xpy', '.pyproj'
@@ -37,7 +38,5 @@ is_left_bracket = frozenset(BRACKETS_MAP.keys()).__contains__
37
38
  is_right_bracket = frozenset(BRACKETS_MAP.values()).__contains__
38
39
  is_bracket = frozenset(BRACKETS_MAP.keys() | BRACKETS_MAP.values()).__contains__
39
40
 
40
- is_constant_keywords = frozenset(CONSTANT_KEYWORDS).__contains__
41
-
42
41
  is_private_attribute = lambda name : name.startswith('_') if isinstance(name, str) else name
43
42
  is_public_attribute = lambda name : not name.startswith('_') if isinstance(name, str) else name
@@ -6,6 +6,7 @@ PYSCRIPT_PATH = sep.join(__file__.split(sep)[:-2])
6
6
  CORE_PATH = join(PYSCRIPT_PATH, 'core')
7
7
  LIBRARIES_PATH = join(PYSCRIPT_PATH, 'lib')
8
8
  SITE_PACKAGES_PATH = join(PYSCRIPT_PATH, 'site-packages')
9
+ OTHER_PATH = join(CORE_PATH, 'other')
9
10
 
10
11
  # environment variables
11
12
  ENV_PYSCRIPT_NO_EXCEPTHOOK = 'PYSCRIPT_NO_EXCEPTHOOK'
@@ -37,7 +37,7 @@ class PysTraceback(Pys):
37
37
  def string_traceback(self) -> str:
38
38
  # circular import problem solved
39
39
  from .mapping import ACOLORS
40
- from .position import format_arrow
40
+ from .position import format_error_arrow
41
41
 
42
42
  context = self.context
43
43
  position = self.position
@@ -61,7 +61,7 @@ class PysTraceback(Pys):
61
61
  f' File {magenta}"{position.file.name}"{reset}' +
62
62
  ('' if is_positionless else f', line {magenta}{position.start_line}{reset}') +
63
63
  ('' if context_name is None else f', in {magenta}{context_name}{reset}') +
64
- ('' if is_positionless else f'\n{indent(format_arrow(position, colored), 4)}')
64
+ ('' if is_positionless else f'\n{indent(format_error_arrow(position, colored), 4)}')
65
65
  )
66
66
 
67
67
  position = context.parent_entry_position