pyscript-programming-language 1.9.0__tar.gz → 1.10.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.
- {pyscript_programming_language-1.9.0/pyscript_programming_language.egg-info → pyscript_programming_language-1.10.0}/PKG-INFO +5 -4
- {pyscript_programming_language-1.9.0 → pyscript_programming_language-1.10.0}/README.md +4 -3
- {pyscript_programming_language-1.9.0 → pyscript_programming_language-1.10.0}/pyscript/__init__.py +10 -4
- {pyscript_programming_language-1.9.0 → pyscript_programming_language-1.10.0}/pyscript/__init__.pyi +13 -6
- {pyscript_programming_language-1.9.0 → pyscript_programming_language-1.10.0}/pyscript/__main__.py +54 -8
- {pyscript_programming_language-1.9.0 → pyscript_programming_language-1.10.0}/pyscript/core/analyzer.py +46 -62
- {pyscript_programming_language-1.9.0 → pyscript_programming_language-1.10.0}/pyscript/core/buffer.py +13 -9
- {pyscript_programming_language-1.9.0 → pyscript_programming_language-1.10.0}/pyscript/core/cache.py +2 -4
- {pyscript_programming_language-1.9.0 → pyscript_programming_language-1.10.0}/pyscript/core/checks.py +2 -2
- {pyscript_programming_language-1.9.0 → pyscript_programming_language-1.10.0}/pyscript/core/constants.py +19 -8
- {pyscript_programming_language-1.9.0 → pyscript_programming_language-1.10.0}/pyscript/core/context.py +4 -2
- {pyscript_programming_language-1.9.0 → pyscript_programming_language-1.10.0}/pyscript/core/exceptions.py +16 -17
- {pyscript_programming_language-1.9.0 → pyscript_programming_language-1.10.0}/pyscript/core/handlers.py +9 -18
- {pyscript_programming_language-1.9.0 → pyscript_programming_language-1.10.0}/pyscript/core/highlight.py +110 -83
- {pyscript_programming_language-1.9.0 → pyscript_programming_language-1.10.0}/pyscript/core/interpreter.py +111 -65
- {pyscript_programming_language-1.9.0 → pyscript_programming_language-1.10.0}/pyscript/core/lexer.py +82 -72
- {pyscript_programming_language-1.9.0 → pyscript_programming_language-1.10.0}/pyscript/core/mapping.py +19 -2
- {pyscript_programming_language-1.9.0 → pyscript_programming_language-1.10.0}/pyscript/core/nodes.py +33 -4
- {pyscript_programming_language-1.9.0 → pyscript_programming_language-1.10.0}/pyscript/core/objects.py +46 -48
- {pyscript_programming_language-1.9.0 → pyscript_programming_language-1.10.0}/pyscript/core/parser.py +210 -160
- {pyscript_programming_language-1.9.0 → pyscript_programming_language-1.10.0}/pyscript/core/position.py +5 -9
- {pyscript_programming_language-1.9.0 → pyscript_programming_language-1.10.0}/pyscript/core/pysbuiltins.py +75 -32
- {pyscript_programming_language-1.9.0 → pyscript_programming_language-1.10.0}/pyscript/core/results.py +6 -4
- {pyscript_programming_language-1.9.0 → pyscript_programming_language-1.10.0}/pyscript/core/runner.py +39 -24
- {pyscript_programming_language-1.9.0 → pyscript_programming_language-1.10.0}/pyscript/core/symtab.py +34 -31
- {pyscript_programming_language-1.9.0 → pyscript_programming_language-1.10.0}/pyscript/core/token.py +2 -5
- {pyscript_programming_language-1.9.0 → pyscript_programming_language-1.10.0}/pyscript/core/utils/__init__.py +2 -0
- {pyscript_programming_language-1.9.0 → pyscript_programming_language-1.10.0}/pyscript/core/utils/ansi.py +22 -22
- {pyscript_programming_language-1.9.0 → pyscript_programming_language-1.10.0}/pyscript/core/utils/debug.py +0 -1
- {pyscript_programming_language-1.9.0 → pyscript_programming_language-1.10.0}/pyscript/core/utils/decorators.py +4 -3
- {pyscript_programming_language-1.9.0 → pyscript_programming_language-1.10.0}/pyscript/core/utils/generic.py +14 -14
- pyscript_programming_language-1.10.0/pyscript/core/utils/jsdict.py +29 -0
- {pyscript_programming_language-1.9.0 → pyscript_programming_language-1.10.0}/pyscript/core/utils/module.py +2 -1
- {pyscript_programming_language-1.9.0 → pyscript_programming_language-1.10.0}/pyscript/core/utils/shell.py +5 -3
- pyscript_programming_language-1.10.0/pyscript/core/utils/similarity.py +22 -0
- {pyscript_programming_language-1.9.0 → pyscript_programming_language-1.10.0}/pyscript/core/version.py +5 -3
- {pyscript_programming_language-1.9.0 → pyscript_programming_language-1.10.0}/pyscript/lib/ansi.pys +1 -1
- {pyscript_programming_language-1.9.0 → pyscript_programming_language-1.10.0}/pyscript/lib/ast/__init__.pys +3 -3
- {pyscript_programming_language-1.9.0 → pyscript_programming_language-1.10.0}/pyscript/lib/ast/ast_dump.py +12 -1
- pyscript_programming_language-1.10.0/pyscript/lib/ast/ast_literal_eval.py +82 -0
- {pyscript_programming_language-1.9.0 → pyscript_programming_language-1.10.0}/pyscript/lib/ast/ast_unparse.py +66 -10
- {pyscript_programming_language-1.9.0 → pyscript_programming_language-1.10.0}/pyscript/lib/ast/ast_walk.py +15 -18
- {pyscript_programming_language-1.9.0 → pyscript_programming_language-1.10.0}/pyscript/lib/brainfuck.pys +69 -76
- {pyscript_programming_language-1.9.0 → pyscript_programming_language-1.10.0}/pyscript/lib/inspect.pys +1 -1
- pyscript_programming_language-1.10.0/pyscript/lib/jsdict.pys +5 -0
- {pyscript_programming_language-1.9.0 → pyscript_programming_language-1.10.0}/pyscript/lib/parser.pys +10 -13
- {pyscript_programming_language-1.9.0 → pyscript_programming_language-1.10.0}/pyscript/lib/site.pys +10 -13
- {pyscript_programming_language-1.9.0 → pyscript_programming_language-1.10.0/pyscript_programming_language.egg-info}/PKG-INFO +5 -4
- {pyscript_programming_language-1.9.0 → pyscript_programming_language-1.10.0}/pyscript_programming_language.egg-info/SOURCES.txt +2 -2
- {pyscript_programming_language-1.9.0 → pyscript_programming_language-1.10.0}/setup.py +1 -1
- pyscript_programming_language-1.9.0/pyscript/core/utils/similarity.py +0 -22
- pyscript_programming_language-1.9.0/pyscript/lib/ast/ast_literal_eval.py +0 -51
- pyscript_programming_language-1.9.0/pyscript/lib/jsdict.pys +0 -22
- pyscript_programming_language-1.9.0/pyscript/site-packages/67.pys +0 -1
- {pyscript_programming_language-1.9.0 → pyscript_programming_language-1.10.0}/MANIFEST.in +0 -0
- {pyscript_programming_language-1.9.0 → pyscript_programming_language-1.10.0}/pyscript/core/__init__.py +0 -0
- {pyscript_programming_language-1.9.0 → pyscript_programming_language-1.10.0}/pyscript/core/bases.py +0 -0
- {pyscript_programming_language-1.9.0 → pyscript_programming_language-1.10.0}/pyscript/core/utils/path.py +0 -0
- {pyscript_programming_language-1.9.0 → pyscript_programming_language-1.10.0}/pyscript/core/utils/string.py +0 -0
- {pyscript_programming_language-1.9.0 → pyscript_programming_language-1.10.0}/pyscript/lib/__hello__.pys +0 -0
- {pyscript_programming_language-1.9.0 → pyscript_programming_language-1.10.0}/pyscript/lib/dis.pys +0 -0
- {pyscript_programming_language-1.9.0 → pyscript_programming_language-1.10.0}/pyscript/lib/explorer.pys +0 -0
- {pyscript_programming_language-1.9.0 → pyscript_programming_language-1.10.0}/pyscript/lib/fpstimer.pys +0 -0
- {pyscript_programming_language-1.9.0 → pyscript_programming_language-1.10.0}/pyscript/lib/getch.pys +0 -0
- {pyscript_programming_language-1.9.0 → pyscript_programming_language-1.10.0}/pyscript/lib/keyword.pys +0 -0
- {pyscript_programming_language-1.9.0 → pyscript_programming_language-1.10.0}/pyscript/lib/symtable.pys +0 -0
- {pyscript_programming_language-1.9.0 → pyscript_programming_language-1.10.0}/pyscript/lib/sys.pys +0 -0
- {pyscript_programming_language-1.9.0 → pyscript_programming_language-1.10.0}/pyscript/lib/token.pys +0 -0
- {pyscript_programming_language-1.9.0 → pyscript_programming_language-1.10.0}/pyscript/lib/tokenize/__init__.pys +0 -0
- {pyscript_programming_language-1.9.0 → pyscript_programming_language-1.10.0}/pyscript/lib/tokenize/tok_untokenize.py +0 -0
- {pyscript_programming_language-1.9.0/pyscript/lib → pyscript_programming_language-1.10.0/pyscript/site-packages}/this.pys +0 -0
- {pyscript_programming_language-1.9.0 → pyscript_programming_language-1.10.0}/pyscript/this.py +0 -0
- {pyscript_programming_language-1.9.0 → pyscript_programming_language-1.10.0}/pyscript_programming_language.egg-info/dependency_links.txt +0 -0
- {pyscript_programming_language-1.9.0 → pyscript_programming_language-1.10.0}/pyscript_programming_language.egg-info/requires.txt +0 -0
- {pyscript_programming_language-1.9.0 → pyscript_programming_language-1.10.0}/pyscript_programming_language.egg-info/top_level.txt +0 -0
- {pyscript_programming_language-1.9.0 → pyscript_programming_language-1.10.0}/setup.cfg +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: pyscript-programming-language
|
|
3
|
-
Version: 1.
|
|
3
|
+
Version: 1.10.0
|
|
4
4
|
Summary: PyScript Programming Language
|
|
5
5
|
Home-page: https://azzammuhyala.github.io/pyscript
|
|
6
6
|
Author: azzammuhyala
|
|
@@ -35,9 +35,9 @@ Dynamic: summary
|
|
|
35
35
|
|
|
36
36
|
# PyScript
|
|
37
37
|
|
|
38
|
-
<
|
|
38
|
+
<div align="center">
|
|
39
39
|
<img src="https://github.com/azzammuhyala/pyscript/blob/main/PyScript.png?raw=true" alt="PyScript Logo" width="200">
|
|
40
|
-
</
|
|
40
|
+
</div>
|
|
41
41
|
|
|
42
42
|
PyScript is a simple programming language built on top of Python. It combines some syntax from Python and JavaScript,
|
|
43
43
|
so if you're already familiar with Python or JavaScript, or both, it should be quite easy to learn.
|
|
@@ -65,7 +65,7 @@ Next, after downloading and configuring the Python application, you can download
|
|
|
65
65
|
[PyScript releases](https://github.com/azzammuhyala/pyscript/releases) or from Python Pip with this command
|
|
66
66
|
(_Recommended_):
|
|
67
67
|
```sh
|
|
68
|
-
|
|
68
|
+
pip install -U pyscript-programming-language
|
|
69
69
|
```
|
|
70
70
|
|
|
71
71
|
After that, you can run the PyScript shell (_REPL_) with this command:
|
|
@@ -78,6 +78,7 @@ If successful, you can see the version, release date, and a `>>>` like Python sh
|
|
|
78
78
|
[PyScript extension](https://marketplace.visualstudio.com/items?itemName=azzammuhyala.pyslang) for Syntax Highlight!
|
|
79
79
|
|
|
80
80
|
## Syntax
|
|
81
|
+
Familiar? There it is!
|
|
81
82
|
<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">"Enter a first number : "</span><span style="color:#D45DBA">)</span><span style="color:#FFD705">)</span><br><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">"Enter a second number: "</span><span style="color:#D45DBA">)</span><span style="color:#FFD705">)</span><br><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">"Enter an operation (+, -, *, /): "</span><span style="color:#FFD705">)</span><br><br><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><br><span style="color:#FFD705">{</span><br><span style="color:#D4D4D4"> </span><span style="color:#C586C0">case</span><span style="color:#D4D4D4"> </span><span style="color:#CE9178">'+'</span><span style="color:#D4D4D4">:</span><br><span style="color:#D4D4D4"> </span><span style="color:#8CDCFE">result</span><span style="color:#D4D4D4"> = </span><span style="color:#8CDCFE">a</span><span style="color:#D4D4D4"> + </span><span style="color:#8CDCFE">b</span><br><span style="color:#D4D4D4"> </span><span style="color:#DCDCAA">print</span><span style="color:#D45DBA">(</span><span style="color:#CE9178">"Result of {} + {} = {}"</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><br><span style="color:#D4D4D4"> </span><span style="color:#C586C0">break</span><br><br><span style="color:#D4D4D4"> </span><span style="color:#C586C0">case</span><span style="color:#D4D4D4"> </span><span style="color:#CE9178">'-'</span><span style="color:#D4D4D4">:</span><br><span style="color:#D4D4D4"> </span><span style="color:#8CDCFE">result</span><span style="color:#D4D4D4"> = </span><span style="color:#8CDCFE">a</span><span style="color:#D4D4D4"> - </span><span style="color:#8CDCFE">b</span><br><span style="color:#D4D4D4"> </span><span style="color:#DCDCAA">print</span><span style="color:#D45DBA">(</span><span style="color:#CE9178">"Result of {} - {} = {}"</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><br><span style="color:#D4D4D4"> </span><span style="color:#C586C0">break</span><br><br><span style="color:#D4D4D4"> </span><span style="color:#C586C0">case</span><span style="color:#D4D4D4"> </span><span style="color:#CE9178">'*'</span><span style="color:#D4D4D4">:</span><br><span style="color:#D4D4D4"> </span><span style="color:#8CDCFE">result</span><span style="color:#D4D4D4"> = </span><span style="color:#8CDCFE">a</span><span style="color:#D4D4D4"> * </span><span style="color:#8CDCFE">b</span><br><span style="color:#D4D4D4"> </span><span style="color:#DCDCAA">print</span><span style="color:#D45DBA">(</span><span style="color:#CE9178">"Result of {} * {} = {}"</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><br><span style="color:#D4D4D4"> </span><span style="color:#C586C0">break</span><br><br><span style="color:#D4D4D4"> </span><span style="color:#C586C0">case</span><span style="color:#D4D4D4"> </span><span style="color:#CE9178">'/'</span><span style="color:#D4D4D4">:</span><br><span style="color:#D4D4D4"> </span><span style="color:#8CDCFE">result</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">"Cannot be divided by 0!"</span><br><span style="color:#D4D4D4"> </span><span style="color:#DCDCAA">print</span><span style="color:#D45DBA">(</span><span style="color:#CE9178">"Result of {} / {} = {}"</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><br><span style="color:#D4D4D4"> </span><span style="color:#C586C0">break</span><br><br><span style="color:#D4D4D4"> </span><span style="color:#C586C0">default</span><span style="color:#D4D4D4">:</span><br><span style="color:#D4D4D4"> </span><span style="color:#DCDCAA">print</span><span style="color:#D45DBA">(</span><span style="color:#CE9178">"Unknown operation"</span><span style="color:#D45DBA">)</span><br><span style="color:#FFD705">}</span></pre>
|
|
82
83
|
|
|
83
84
|
## Behind it
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
# PyScript
|
|
2
2
|
|
|
3
|
-
<
|
|
3
|
+
<div align="center">
|
|
4
4
|
<img src="https://github.com/azzammuhyala/pyscript/blob/main/PyScript.png?raw=true" alt="PyScript Logo" width="200">
|
|
5
|
-
</
|
|
5
|
+
</div>
|
|
6
6
|
|
|
7
7
|
PyScript is a simple programming language built on top of Python. It combines some syntax from Python and JavaScript,
|
|
8
8
|
so if you're already familiar with Python or JavaScript, or both, it should be quite easy to learn.
|
|
@@ -30,7 +30,7 @@ Next, after downloading and configuring the Python application, you can download
|
|
|
30
30
|
[PyScript releases](https://github.com/azzammuhyala/pyscript/releases) or from Python Pip with this command
|
|
31
31
|
(_Recommended_):
|
|
32
32
|
```sh
|
|
33
|
-
|
|
33
|
+
pip install -U pyscript-programming-language
|
|
34
34
|
```
|
|
35
35
|
|
|
36
36
|
After that, you can run the PyScript shell (_REPL_) with this command:
|
|
@@ -43,6 +43,7 @@ If successful, you can see the version, release date, and a `>>>` like Python sh
|
|
|
43
43
|
[PyScript extension](https://marketplace.visualstudio.com/items?itemName=azzammuhyala.pyslang) for Syntax Highlight!
|
|
44
44
|
|
|
45
45
|
## Syntax
|
|
46
|
+
Familiar? There it is!
|
|
46
47
|
<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">"Enter a first number : "</span><span style="color:#D45DBA">)</span><span style="color:#FFD705">)</span><br><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">"Enter a second number: "</span><span style="color:#D45DBA">)</span><span style="color:#FFD705">)</span><br><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">"Enter an operation (+, -, *, /): "</span><span style="color:#FFD705">)</span><br><br><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><br><span style="color:#FFD705">{</span><br><span style="color:#D4D4D4"> </span><span style="color:#C586C0">case</span><span style="color:#D4D4D4"> </span><span style="color:#CE9178">'+'</span><span style="color:#D4D4D4">:</span><br><span style="color:#D4D4D4"> </span><span style="color:#8CDCFE">result</span><span style="color:#D4D4D4"> = </span><span style="color:#8CDCFE">a</span><span style="color:#D4D4D4"> + </span><span style="color:#8CDCFE">b</span><br><span style="color:#D4D4D4"> </span><span style="color:#DCDCAA">print</span><span style="color:#D45DBA">(</span><span style="color:#CE9178">"Result of {} + {} = {}"</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><br><span style="color:#D4D4D4"> </span><span style="color:#C586C0">break</span><br><br><span style="color:#D4D4D4"> </span><span style="color:#C586C0">case</span><span style="color:#D4D4D4"> </span><span style="color:#CE9178">'-'</span><span style="color:#D4D4D4">:</span><br><span style="color:#D4D4D4"> </span><span style="color:#8CDCFE">result</span><span style="color:#D4D4D4"> = </span><span style="color:#8CDCFE">a</span><span style="color:#D4D4D4"> - </span><span style="color:#8CDCFE">b</span><br><span style="color:#D4D4D4"> </span><span style="color:#DCDCAA">print</span><span style="color:#D45DBA">(</span><span style="color:#CE9178">"Result of {} - {} = {}"</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><br><span style="color:#D4D4D4"> </span><span style="color:#C586C0">break</span><br><br><span style="color:#D4D4D4"> </span><span style="color:#C586C0">case</span><span style="color:#D4D4D4"> </span><span style="color:#CE9178">'*'</span><span style="color:#D4D4D4">:</span><br><span style="color:#D4D4D4"> </span><span style="color:#8CDCFE">result</span><span style="color:#D4D4D4"> = </span><span style="color:#8CDCFE">a</span><span style="color:#D4D4D4"> * </span><span style="color:#8CDCFE">b</span><br><span style="color:#D4D4D4"> </span><span style="color:#DCDCAA">print</span><span style="color:#D45DBA">(</span><span style="color:#CE9178">"Result of {} * {} = {}"</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><br><span style="color:#D4D4D4"> </span><span style="color:#C586C0">break</span><br><br><span style="color:#D4D4D4"> </span><span style="color:#C586C0">case</span><span style="color:#D4D4D4"> </span><span style="color:#CE9178">'/'</span><span style="color:#D4D4D4">:</span><br><span style="color:#D4D4D4"> </span><span style="color:#8CDCFE">result</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">"Cannot be divided by 0!"</span><br><span style="color:#D4D4D4"> </span><span style="color:#DCDCAA">print</span><span style="color:#D45DBA">(</span><span style="color:#CE9178">"Result of {} / {} = {}"</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><br><span style="color:#D4D4D4"> </span><span style="color:#C586C0">break</span><br><br><span style="color:#D4D4D4"> </span><span style="color:#C586C0">default</span><span style="color:#D4D4D4">:</span><br><span style="color:#D4D4D4"> </span><span style="color:#DCDCAA">print</span><span style="color:#D45DBA">(</span><span style="color:#CE9178">"Unknown operation"</span><span style="color:#D45DBA">)</span><br><span style="color:#FFD705">}</span></pre>
|
|
47
48
|
|
|
48
49
|
## Behind it
|
{pyscript_programming_language-1.9.0 → pyscript_programming_language-1.10.0}/pyscript/__init__.py
RENAMED
|
@@ -8,21 +8,26 @@ if __import__('sys').version_info < (3, 10):
|
|
|
8
8
|
|
|
9
9
|
from . import core
|
|
10
10
|
|
|
11
|
-
from .core.constants import
|
|
11
|
+
from .core.constants import (
|
|
12
|
+
DEFAULT, NO_COLOR, DEBUG, SILENT, RETURN_RESULT, DONT_SHOW_BANNER_ON_SHELL, HIGHLIGHT, DICT_TO_JSDICT
|
|
13
|
+
)
|
|
12
14
|
from .core.cache import undefined, hook
|
|
13
|
-
from .core.highlight import
|
|
15
|
+
from .core.highlight import (
|
|
16
|
+
HLFMT_HTML, HLFMT_ANSI, HLFMT_BBCODE, pys_highlight, PygmentsPyScriptStyle, PygmentsPyScriptLexer
|
|
17
|
+
)
|
|
14
18
|
from .core.runner import pys_exec, pys_eval, pys_require, pys_shell
|
|
15
19
|
from .core.version import version, version_info, __version__, __date__
|
|
16
20
|
|
|
17
21
|
__all__ = (
|
|
18
22
|
'core',
|
|
19
23
|
'DEFAULT',
|
|
24
|
+
'NO_COLOR',
|
|
20
25
|
'DEBUG',
|
|
21
26
|
'SILENT',
|
|
22
27
|
'RETURN_RESULT',
|
|
28
|
+
'DONT_SHOW_BANNER_ON_SHELL',
|
|
23
29
|
'HIGHLIGHT',
|
|
24
|
-
'
|
|
25
|
-
'REVERSE_POW_XOR',
|
|
30
|
+
'DICT_TO_JSDICT',
|
|
26
31
|
'HLFMT_HTML',
|
|
27
32
|
'HLFMT_ANSI',
|
|
28
33
|
'HLFMT_BBCODE',
|
|
@@ -35,5 +40,6 @@ __all__ = (
|
|
|
35
40
|
'pys_eval',
|
|
36
41
|
'pys_require',
|
|
37
42
|
'pys_shell',
|
|
43
|
+
'PygmentsPyScriptStyle',
|
|
38
44
|
'PygmentsPyScriptLexer'
|
|
39
45
|
)
|
{pyscript_programming_language-1.9.0 → pyscript_programming_language-1.10.0}/pyscript/__init__.pyi
RENAMED
|
@@ -13,15 +13,19 @@ if TYPE_CHECKING:
|
|
|
13
13
|
from types import BuiltinMethodType, ModuleType
|
|
14
14
|
|
|
15
15
|
from . import core as core
|
|
16
|
-
from .core.highlight import
|
|
16
|
+
from .core.highlight import (
|
|
17
|
+
PygmentsPyScriptStyle as PygmentsPyScriptStyle,
|
|
18
|
+
PygmentsPyScriptLexer as PygmentsPyScriptLexer
|
|
19
|
+
)
|
|
17
20
|
|
|
18
21
|
DEFAULT: int
|
|
22
|
+
NO_COLOR: int
|
|
19
23
|
DEBUG: int
|
|
20
24
|
SILENT: int
|
|
21
25
|
RETURN_RESULT: int
|
|
26
|
+
DONT_SHOW_BANNER_ON_SHELL: int
|
|
22
27
|
HIGHLIGHT: int
|
|
23
|
-
|
|
24
|
-
REVERSE_POW_XOR: int
|
|
28
|
+
DICT_TO_JSDICT: int
|
|
25
29
|
|
|
26
30
|
HLFMT_HTML: _PysHighlightFormatter
|
|
27
31
|
HLFMT_ANSI: _PysHighlightFormatter
|
|
@@ -53,13 +57,15 @@ def pys_highlight(
|
|
|
53
57
|
def pys_exec(
|
|
54
58
|
source: str | bytes | bytearray | Iterable | BuiltinMethodType | IOBase | PysFileBuffer,
|
|
55
59
|
globals: Optional[dict[str, Any] | PysSymbolTable | PysUndefined] = None,
|
|
56
|
-
flags: int = DEFAULT
|
|
60
|
+
flags: int = DEFAULT,
|
|
61
|
+
parser_flags: int = DEFAULT
|
|
57
62
|
) -> None | PysExecuteResult: ...
|
|
58
63
|
|
|
59
64
|
def pys_eval(
|
|
60
65
|
source: str | bytes | bytearray | Iterable | BuiltinMethodType | IOBase | PysFileBuffer,
|
|
61
66
|
globals: Optional[dict[str, Any] | PysSymbolTable | PysUndefined] = None,
|
|
62
|
-
flags: int = DEFAULT
|
|
67
|
+
flags: int = DEFAULT,
|
|
68
|
+
parser_flags: int = DEFAULT
|
|
63
69
|
) -> Any | PysExecuteResult: ...
|
|
64
70
|
|
|
65
71
|
def pys_require(
|
|
@@ -69,7 +75,8 @@ def pys_require(
|
|
|
69
75
|
|
|
70
76
|
def pys_shell(
|
|
71
77
|
globals: Optional[dict[str, Any] | PysSymbolTable | PysUndefined] = None,
|
|
72
|
-
flags: int = DEFAULT
|
|
78
|
+
flags: int = DEFAULT,
|
|
79
|
+
parser_flags: int = DEFAULT
|
|
73
80
|
) -> int | Any: ...
|
|
74
81
|
|
|
75
82
|
__version__: str
|
{pyscript_programming_language-1.9.0 → pyscript_programming_language-1.10.0}/pyscript/__main__.py
RENAMED
|
@@ -1,12 +1,28 @@
|
|
|
1
1
|
from .core.buffer import PysFileBuffer
|
|
2
2
|
from .core.cache import path, undefined
|
|
3
|
-
from .core.constants import DEFAULT, DEBUG, NO_COLOR
|
|
4
|
-
from .core.highlight import
|
|
3
|
+
from .core.constants import DEFAULT, DEBUG, DONT_SHOW_BANNER_ON_SHELL, NO_COLOR
|
|
4
|
+
from .core.highlight import (
|
|
5
|
+
HLFMT_HTML, HLFMT_ANSI, HLFMT_BBCODE, pys_highlight, PygmentsPyScriptStyle, PygmentsPyScriptLexer
|
|
6
|
+
)
|
|
5
7
|
from .core.runner import _normalize_globals, pys_runner, pys_shell
|
|
6
8
|
from .core.utils.module import get_module_name_from_path
|
|
7
9
|
from .core.utils.path import normpath
|
|
8
10
|
from .core.version import __version__
|
|
9
11
|
|
|
12
|
+
try:
|
|
13
|
+
from pygments import highlight
|
|
14
|
+
from pygments.formatters import TerminalFormatter, TerminalTrueColorFormatter, Terminal256Formatter
|
|
15
|
+
|
|
16
|
+
FORMAT_PYGMENTS_MAP = {
|
|
17
|
+
'pm-terminal': TerminalFormatter,
|
|
18
|
+
'pm-true-terminal': TerminalTrueColorFormatter,
|
|
19
|
+
'pm-256-terminal': Terminal256Formatter
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
PYGMENTS = True
|
|
23
|
+
except ImportError:
|
|
24
|
+
PYGMENTS = False
|
|
25
|
+
|
|
10
26
|
from argparse import ArgumentParser
|
|
11
27
|
from os import environ
|
|
12
28
|
|
|
@@ -58,7 +74,7 @@ parser.add_argument(
|
|
|
58
74
|
|
|
59
75
|
parser.add_argument(
|
|
60
76
|
'-l', '--highlight',
|
|
61
|
-
choices=tuple(FORMAT_HIGHLIGHT_MAP.keys()),
|
|
77
|
+
choices=tuple(FORMAT_HIGHLIGHT_MAP.keys()) + tuple(FORMAT_PYGMENTS_MAP.keys() if PYGMENTS else ()),
|
|
62
78
|
default=None,
|
|
63
79
|
help="Generate highlight code from a 'file'"
|
|
64
80
|
)
|
|
@@ -76,6 +92,12 @@ parser.add_argument(
|
|
|
76
92
|
help="Set a Python recursion limit"
|
|
77
93
|
)
|
|
78
94
|
|
|
95
|
+
parser.add_argument(
|
|
96
|
+
'-q',
|
|
97
|
+
action='store_true',
|
|
98
|
+
help="Don't print version and copyright messages on interactive startup"
|
|
99
|
+
)
|
|
100
|
+
|
|
79
101
|
def argument_error(argument, message):
|
|
80
102
|
parser.print_usage(sys.stderr)
|
|
81
103
|
parser.exit(2, f"{parser.prog}: error: argument {argument}: {message}\n")
|
|
@@ -98,6 +120,8 @@ if args.debug:
|
|
|
98
120
|
flags |= DEBUG
|
|
99
121
|
if args.no_color or environ.get('NO_COLOR') is not None:
|
|
100
122
|
flags |= NO_COLOR
|
|
123
|
+
if args.q:
|
|
124
|
+
flags |= DONT_SHOW_BANNER_ON_SHELL
|
|
101
125
|
|
|
102
126
|
if args.file is not None:
|
|
103
127
|
path = normpath(args.file)
|
|
@@ -122,7 +146,22 @@ if args.file is not None:
|
|
|
122
146
|
|
|
123
147
|
if args.highlight:
|
|
124
148
|
try:
|
|
125
|
-
|
|
149
|
+
if args.highlight in FORMAT_HIGHLIGHT_MAP:
|
|
150
|
+
print(
|
|
151
|
+
pys_highlight(
|
|
152
|
+
source=file,
|
|
153
|
+
format=FORMAT_HIGHLIGHT_MAP[args.highlight]
|
|
154
|
+
)
|
|
155
|
+
)
|
|
156
|
+
else:
|
|
157
|
+
print(
|
|
158
|
+
flush=True,
|
|
159
|
+
end=highlight(
|
|
160
|
+
code=file.text,
|
|
161
|
+
lexer=PygmentsPyScriptLexer(),
|
|
162
|
+
formatter=FORMAT_PYGMENTS_MAP[args.highlight](style=PygmentsPyScriptStyle)
|
|
163
|
+
)
|
|
164
|
+
)
|
|
126
165
|
except BaseException as e:
|
|
127
166
|
parser.error(f"file {path!r}: Highlight error: {e}")
|
|
128
167
|
|
|
@@ -135,9 +174,13 @@ if args.file is not None:
|
|
|
135
174
|
)
|
|
136
175
|
|
|
137
176
|
if args.inspect:
|
|
138
|
-
code = pys_shell(
|
|
177
|
+
code = pys_shell(
|
|
178
|
+
globals=result.context.symbol_table,
|
|
179
|
+
flags=result.context.flags,
|
|
180
|
+
parser_flags=result.parser_flags
|
|
181
|
+
)
|
|
139
182
|
else:
|
|
140
|
-
code = result.
|
|
183
|
+
code = result.end_process()[0]
|
|
141
184
|
|
|
142
185
|
elif args.command is not None:
|
|
143
186
|
file = PysFileBuffer(args.command)
|
|
@@ -146,9 +189,12 @@ elif args.command is not None:
|
|
|
146
189
|
mode='exec',
|
|
147
190
|
symbol_table=_normalize_globals(file, undefined),
|
|
148
191
|
flags=flags
|
|
149
|
-
).
|
|
192
|
+
).end_process()[0]
|
|
150
193
|
|
|
151
194
|
else:
|
|
152
|
-
code = pys_shell(
|
|
195
|
+
code = pys_shell(
|
|
196
|
+
globals=undefined,
|
|
197
|
+
flags=flags
|
|
198
|
+
)
|
|
153
199
|
|
|
154
200
|
sys.exit(code)
|
|
@@ -22,22 +22,9 @@ class PysAnalyzer(Pys):
|
|
|
22
22
|
|
|
23
23
|
self.node = node
|
|
24
24
|
self.flags = flags
|
|
25
|
-
self.
|
|
25
|
+
self.context_parent = context_parent
|
|
26
26
|
self.context_parent_entry_position = context_parent_entry_position
|
|
27
27
|
|
|
28
|
-
def throw(self, message, position):
|
|
29
|
-
if self.error is None:
|
|
30
|
-
self.error = PysTraceback(
|
|
31
|
-
SyntaxError(message),
|
|
32
|
-
PysContext(
|
|
33
|
-
file=self.node.position.file,
|
|
34
|
-
flags=self.flags,
|
|
35
|
-
parent=self.context,
|
|
36
|
-
parent_entry_position=self.context_parent_entry_position
|
|
37
|
-
),
|
|
38
|
-
position
|
|
39
|
-
)
|
|
40
|
-
|
|
41
28
|
@typechecked
|
|
42
29
|
def analyze(self) -> PysTraceback | None:
|
|
43
30
|
self.in_loop = 0
|
|
@@ -50,6 +37,19 @@ class PysAnalyzer(Pys):
|
|
|
50
37
|
self.visit(self.node)
|
|
51
38
|
return self.error
|
|
52
39
|
|
|
40
|
+
def throw(self, message, position):
|
|
41
|
+
if self.error is None:
|
|
42
|
+
self.error = PysTraceback(
|
|
43
|
+
SyntaxError(message),
|
|
44
|
+
PysContext(
|
|
45
|
+
file=self.node.position.file,
|
|
46
|
+
flags=self.flags,
|
|
47
|
+
parent=self.context_parent,
|
|
48
|
+
parent_entry_position=self.context_parent_entry_position
|
|
49
|
+
),
|
|
50
|
+
position
|
|
51
|
+
)
|
|
52
|
+
|
|
53
53
|
def visit(self, node):
|
|
54
54
|
func = getattr(self, 'visit_' + type(node).__name__.removeprefix('Pys'), None)
|
|
55
55
|
if not self.error and func:
|
|
@@ -106,11 +106,9 @@ class PysAnalyzer(Pys):
|
|
|
106
106
|
if isinstance(element, tuple):
|
|
107
107
|
token, value = element
|
|
108
108
|
name = token.value
|
|
109
|
-
|
|
110
109
|
if name in keyword_names:
|
|
111
110
|
self.throw(f"duplicate argument {name!r} in call definition", token.position)
|
|
112
111
|
return
|
|
113
|
-
|
|
114
112
|
keyword_names.add(name)
|
|
115
113
|
|
|
116
114
|
else:
|
|
@@ -136,6 +134,8 @@ class PysAnalyzer(Pys):
|
|
|
136
134
|
if self.error:
|
|
137
135
|
return
|
|
138
136
|
|
|
137
|
+
self.visit(node.invalid)
|
|
138
|
+
|
|
139
139
|
elif node.style == 'pythonic':
|
|
140
140
|
self.visit(node.valid)
|
|
141
141
|
if self.error:
|
|
@@ -145,10 +145,7 @@ class PysAnalyzer(Pys):
|
|
|
145
145
|
if self.error:
|
|
146
146
|
return
|
|
147
147
|
|
|
148
|
-
|
|
149
|
-
raise ValueError(f"unknown ternary operator style {node.style!r}")
|
|
150
|
-
|
|
151
|
-
self.visit(node.invalid)
|
|
148
|
+
self.visit(node.invalid)
|
|
152
149
|
|
|
153
150
|
def visit_BinaryOperatorNode(self, node):
|
|
154
151
|
self.visit(node.left)
|
|
@@ -158,25 +155,12 @@ class PysAnalyzer(Pys):
|
|
|
158
155
|
self.visit(node.right)
|
|
159
156
|
|
|
160
157
|
def visit_UnaryOperatorNode(self, node):
|
|
161
|
-
value = node.value
|
|
162
|
-
|
|
163
158
|
if is_incremental(node.operand.type):
|
|
164
|
-
type = value.__class__
|
|
165
159
|
operator = 'increase' if node.operand.type == TOKENS['DOUBLE-PLUS'] else 'decrease'
|
|
160
|
+
self.visit_declaration_AssignNode(node.value, f"cannot {operator} literal", operator)
|
|
161
|
+
return
|
|
166
162
|
|
|
167
|
-
|
|
168
|
-
self.throw(f"cannot {operator} {value.name.value}", value.position)
|
|
169
|
-
return
|
|
170
|
-
|
|
171
|
-
elif isinstance(value, PysNode):
|
|
172
|
-
if type not in (PysIdentifierNode, PysAttributeNode, PysSubscriptNode):
|
|
173
|
-
self.throw(f"cannot {operator} literal", value.position)
|
|
174
|
-
return
|
|
175
|
-
|
|
176
|
-
else:
|
|
177
|
-
raise TypeError("UnaryOperator: node.value is not PysNode")
|
|
178
|
-
|
|
179
|
-
self.visit(value)
|
|
163
|
+
self.visit(node.value)
|
|
180
164
|
|
|
181
165
|
def visit_StatementsNode(self, node):
|
|
182
166
|
for element in node.body:
|
|
@@ -185,11 +169,8 @@ class PysAnalyzer(Pys):
|
|
|
185
169
|
return
|
|
186
170
|
|
|
187
171
|
def visit_AssignNode(self, node):
|
|
188
|
-
self.visit_declaration_AssignNode(
|
|
189
|
-
|
|
190
|
-
"cannot assign to expression here. Maybe you meant '==' instead of '='?"
|
|
191
|
-
)
|
|
192
|
-
|
|
172
|
+
self.visit_declaration_AssignNode(node.target,
|
|
173
|
+
"cannot assign to expression here. Maybe you meant '==' instead of '='?")
|
|
193
174
|
if self.error:
|
|
194
175
|
return
|
|
195
176
|
|
|
@@ -248,8 +229,6 @@ class PysAnalyzer(Pys):
|
|
|
248
229
|
|
|
249
230
|
if node.default:
|
|
250
231
|
self.visit(node.default)
|
|
251
|
-
if self.error:
|
|
252
|
-
return
|
|
253
232
|
|
|
254
233
|
def visit_TryNode(self, node):
|
|
255
234
|
self.visit(node.body)
|
|
@@ -295,9 +274,6 @@ class PysAnalyzer(Pys):
|
|
|
295
274
|
if self.error:
|
|
296
275
|
return
|
|
297
276
|
|
|
298
|
-
else:
|
|
299
|
-
raise ValueError(f"unknown header struct {node.header}")
|
|
300
|
-
|
|
301
277
|
self.in_loop += 1
|
|
302
278
|
|
|
303
279
|
self.visit(node.body)
|
|
@@ -341,6 +317,22 @@ class PysAnalyzer(Pys):
|
|
|
341
317
|
if node.else_body:
|
|
342
318
|
self.visit(node.else_body)
|
|
343
319
|
|
|
320
|
+
def visit_RepeatNode(self, node):
|
|
321
|
+
self.in_loop += 1
|
|
322
|
+
|
|
323
|
+
self.visit(node.body)
|
|
324
|
+
if self.error:
|
|
325
|
+
return
|
|
326
|
+
|
|
327
|
+
self.in_loop -= 1
|
|
328
|
+
|
|
329
|
+
self.visit(node.condition)
|
|
330
|
+
if self.error:
|
|
331
|
+
return
|
|
332
|
+
|
|
333
|
+
if node.else_body:
|
|
334
|
+
self.visit(node.else_body)
|
|
335
|
+
|
|
344
336
|
def visit_ClassNode(self, node):
|
|
345
337
|
for decorator in node.decorators:
|
|
346
338
|
self.visit(decorator)
|
|
@@ -471,13 +463,9 @@ class PysAnalyzer(Pys):
|
|
|
471
463
|
self.throw(f"cannot {KEYWORDS['delete']} {target.name.value}", target.position)
|
|
472
464
|
return
|
|
473
465
|
|
|
474
|
-
elif
|
|
475
|
-
|
|
476
|
-
|
|
477
|
-
return
|
|
478
|
-
|
|
479
|
-
else:
|
|
480
|
-
raise TypeError("DeleteNode: node.targets, target is not PysNode")
|
|
466
|
+
elif type is not PysIdentifierNode:
|
|
467
|
+
self.throw(f"cannot {KEYWORDS['delete']} literal", target.position)
|
|
468
|
+
return
|
|
481
469
|
|
|
482
470
|
def visit_ContinueNode(self, node):
|
|
483
471
|
if self.in_loop == 0:
|
|
@@ -515,7 +503,7 @@ class PysAnalyzer(Pys):
|
|
|
515
503
|
else:
|
|
516
504
|
self.visit(nslice)
|
|
517
505
|
|
|
518
|
-
def visit_declaration_AssignNode(self, node, message):
|
|
506
|
+
def visit_declaration_AssignNode(self, node, message, operator_name='assign'):
|
|
519
507
|
type = node.__class__
|
|
520
508
|
|
|
521
509
|
if type is PysAttributeNode:
|
|
@@ -530,16 +518,12 @@ class PysAnalyzer(Pys):
|
|
|
530
518
|
|
|
531
519
|
elif is_unpack_assignment(type):
|
|
532
520
|
for element in node.elements:
|
|
533
|
-
self.visit_declaration_AssignNode(element, message)
|
|
521
|
+
self.visit_declaration_AssignNode(element, message, operator_name)
|
|
534
522
|
if self.error:
|
|
535
523
|
return
|
|
536
524
|
|
|
537
525
|
elif type is PysKeywordNode:
|
|
538
|
-
self.throw(f"cannot
|
|
526
|
+
self.throw(f"cannot {operator_name} to {node.name.value}", node.position)
|
|
539
527
|
|
|
540
|
-
elif
|
|
541
|
-
|
|
542
|
-
self.throw(message, node.position)
|
|
543
|
-
|
|
544
|
-
else:
|
|
545
|
-
raise TypeError("declaration AssignNode: node is not PysNode")
|
|
528
|
+
elif type is not PysIdentifierNode:
|
|
529
|
+
self.throw(message, node.position)
|
{pyscript_programming_language-1.9.0 → pyscript_programming_language-1.10.0}/pyscript/core/buffer.py
RENAMED
|
@@ -4,7 +4,8 @@ from .utils.generic import setimuattr
|
|
|
4
4
|
from .utils.string import normstr
|
|
5
5
|
|
|
6
6
|
from io import IOBase
|
|
7
|
-
from
|
|
7
|
+
from types import BuiltinMethodType
|
|
8
|
+
from typing import Iterable, Optional
|
|
8
9
|
|
|
9
10
|
@immutable
|
|
10
11
|
class PysBuffer(Pys):
|
|
@@ -14,15 +15,14 @@ class PysFileBuffer(PysBuffer):
|
|
|
14
15
|
|
|
15
16
|
__slots__ = ('text', 'name')
|
|
16
17
|
|
|
17
|
-
def
|
|
18
|
-
|
|
19
|
-
text: str | bytes | bytearray | Iterable |
|
|
18
|
+
def __new__(
|
|
19
|
+
cls,
|
|
20
|
+
text: str | bytes | bytearray | Iterable | BuiltinMethodType | IOBase | 'PysFileBuffer',
|
|
20
21
|
name: Optional[str | bytes] = None
|
|
21
|
-
) ->
|
|
22
|
+
) -> 'PysFileBuffer':
|
|
22
23
|
|
|
23
24
|
if isinstance(text, PysFileBuffer):
|
|
24
|
-
|
|
25
|
-
text = normstr(text.text)
|
|
25
|
+
return text
|
|
26
26
|
|
|
27
27
|
elif isinstance(text, IOBase):
|
|
28
28
|
name = normstr(getattr(text, 'name', '<io>') if name is None else name)
|
|
@@ -32,8 +32,12 @@ class PysFileBuffer(PysBuffer):
|
|
|
32
32
|
name = '<string>' if name is None else normstr(name)
|
|
33
33
|
text = normstr(text)
|
|
34
34
|
|
|
35
|
-
|
|
36
|
-
|
|
35
|
+
instance = super().__new__(cls)
|
|
36
|
+
|
|
37
|
+
setimuattr(instance, 'text', text)
|
|
38
|
+
setimuattr(instance, 'name', name)
|
|
39
|
+
|
|
40
|
+
return instance
|
|
37
41
|
|
|
38
42
|
def __repr__(self) -> str:
|
|
39
43
|
return f'<FileBuffer from {self.name!r}>'
|
{pyscript_programming_language-1.9.0 → pyscript_programming_language-1.10.0}/pyscript/core/cache.py
RENAMED
|
@@ -4,14 +4,12 @@ from .exceptions import PysTraceback
|
|
|
4
4
|
from .utils.debug import print_display, print_traceback
|
|
5
5
|
from .utils.decorators import inheritable, singleton
|
|
6
6
|
|
|
7
|
-
from threading import RLock
|
|
8
7
|
from typing import Any, Callable, Literal
|
|
9
8
|
|
|
10
9
|
loading_modules = set()
|
|
11
|
-
|
|
12
|
-
modules = dict()
|
|
10
|
+
modules = {}
|
|
13
11
|
path = [SITE_PACKAGES_PATH, LIBRARIES_PATH]
|
|
14
|
-
singletons =
|
|
12
|
+
singletons = {}
|
|
15
13
|
|
|
16
14
|
@singleton
|
|
17
15
|
@inheritable
|
{pyscript_programming_language-1.9.0 → pyscript_programming_language-1.10.0}/pyscript/core/checks.py
RENAMED
|
@@ -10,8 +10,8 @@ is_expression = frozenset([
|
|
|
10
10
|
|
|
11
11
|
is_statement = frozenset([
|
|
12
12
|
PysStatementsNode, PysAssignNode, PysImportNode, PysIfNode, PysSwitchNode, PysTryNode, PysWithNode, PysForNode,
|
|
13
|
-
PysWhileNode, PysDoWhileNode, PysClassNode, PysGlobalNode, PysReturnNode, PysThrowNode,
|
|
14
|
-
PysDeleteNode, PysContinueNode, PysBreakNode
|
|
13
|
+
PysWhileNode, PysDoWhileNode, PysRepeatNode, PysClassNode, PysGlobalNode, PysReturnNode, PysThrowNode,
|
|
14
|
+
PysAssertNode, PysDeleteNode, PysContinueNode, PysBreakNode
|
|
15
15
|
]).__contains__
|
|
16
16
|
|
|
17
17
|
is_unpack_assignment = frozenset([
|
|
@@ -85,7 +85,9 @@ TOKENS = MappingProxyType({
|
|
|
85
85
|
'EQUAL-DOUBLE-LESS-THAN': ord('<') + DOUBLE + WITH_EQUAL,
|
|
86
86
|
'EQUAL-DOUBLE-GREATER-THAN': ord('>') + DOUBLE + WITH_EQUAL,
|
|
87
87
|
'NONE': SPECIAL,
|
|
88
|
+
'MINUS-GREATER-THAN': ord('-') + SPECIAL,
|
|
88
89
|
'EQUAL-ARROW': ord('>') + SPECIAL,
|
|
90
|
+
'EXCLAMATION-GREATER-THAN': ord('!') + SPECIAL,
|
|
89
91
|
'EXCLAMATION-TILDE': ord('~') + SPECIAL
|
|
90
92
|
})
|
|
91
93
|
|
|
@@ -110,6 +112,7 @@ KEYWORDS = MappingProxyType({
|
|
|
110
112
|
'do': 'do',
|
|
111
113
|
'elif': 'elif',
|
|
112
114
|
'else': 'else',
|
|
115
|
+
'except': 'except',
|
|
113
116
|
'extends': 'extends',
|
|
114
117
|
'false': 'false',
|
|
115
118
|
'finally': 'finally',
|
|
@@ -123,15 +126,20 @@ KEYWORDS = MappingProxyType({
|
|
|
123
126
|
'in': 'in',
|
|
124
127
|
'is': 'is',
|
|
125
128
|
'match': 'match',
|
|
129
|
+
'nil': 'nil',
|
|
126
130
|
'none': 'none',
|
|
131
|
+
'null': 'null',
|
|
127
132
|
'not': 'not',
|
|
128
133
|
'true': 'true',
|
|
129
134
|
'of': 'of',
|
|
130
135
|
'or': 'or',
|
|
136
|
+
'raise': 'raise',
|
|
137
|
+
'repeat': 'repeat',
|
|
131
138
|
'return': 'return',
|
|
132
139
|
'switch': 'switch',
|
|
133
140
|
'throw': 'throw',
|
|
134
141
|
'try': 'try',
|
|
142
|
+
'until': 'until',
|
|
135
143
|
'while': 'while',
|
|
136
144
|
'with': 'with'
|
|
137
145
|
})
|
|
@@ -139,15 +147,18 @@ KEYWORDS = MappingProxyType({
|
|
|
139
147
|
CONSTANT_KEYWORDS = (
|
|
140
148
|
KEYWORDS['__debug__'], KEYWORDS['False'], KEYWORDS['None'], KEYWORDS['True'], KEYWORDS['and'], KEYWORDS['class'],
|
|
141
149
|
KEYWORDS['constructor'], KEYWORDS['extends'], KEYWORDS['func'], KEYWORDS['function'], KEYWORDS['false'],
|
|
142
|
-
KEYWORDS['global'], KEYWORDS['in'], KEYWORDS['is'], KEYWORDS['not'], KEYWORDS['
|
|
143
|
-
KEYWORDS['or'], KEYWORDS['true']
|
|
150
|
+
KEYWORDS['global'], KEYWORDS['in'], KEYWORDS['is'], KEYWORDS['not'], KEYWORDS['nil'], KEYWORDS['none'],
|
|
151
|
+
KEYWORDS['null'], KEYWORDS['of'], KEYWORDS['or'], KEYWORDS['true']
|
|
144
152
|
)
|
|
145
153
|
|
|
146
154
|
# flags
|
|
147
155
|
DEFAULT = 0
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
156
|
+
NO_COLOR = 1 << 0
|
|
157
|
+
DEBUG = 1 << 1
|
|
158
|
+
SILENT = 1 << 2
|
|
159
|
+
RETURN_RESULT = 1 << 3
|
|
160
|
+
DONT_SHOW_BANNER_ON_SHELL = 1 << 4
|
|
161
|
+
|
|
162
|
+
# parser flags
|
|
163
|
+
HIGHLIGHT = 1 << 0
|
|
164
|
+
DICT_TO_JSDICT = 1 << 1
|