pyscript-programming-language 1.13.3__tar.gz → 1.14.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.13.3 → pyscript_programming_language-1.14.0}/PKG-INFO +34 -32
- {pyscript_programming_language-1.13.3 → pyscript_programming_language-1.14.0}/README.md +33 -31
- pyscript_programming_language-1.14.0/changelog.md +21 -0
- {pyscript_programming_language-1.13.3 → pyscript_programming_language-1.14.0}/pyproject.toml +1 -1
- {pyscript_programming_language-1.13.3 → pyscript_programming_language-1.14.0}/pyscript/__init__.py +6 -4
- {pyscript_programming_language-1.13.3 → pyscript_programming_language-1.14.0}/pyscript/__init__.pyi +3 -1
- {pyscript_programming_language-1.13.3 → pyscript_programming_language-1.14.0}/pyscript/__main__.py +99 -53
- {pyscript_programming_language-1.13.3 → pyscript_programming_language-1.14.0}/pyscript/core/cache.py +1 -0
- {pyscript_programming_language-1.13.3 → pyscript_programming_language-1.14.0}/pyscript/core/constants.py +8 -7
- {pyscript_programming_language-1.13.3 → pyscript_programming_language-1.14.0}/pyscript/core/context.py +7 -10
- pyscript_programming_language-1.14.0/pyscript/core/editor/__init__.py +31 -0
- {pyscript_programming_language-1.13.3 → pyscript_programming_language-1.14.0}/pyscript/core/editor/bases.py +20 -19
- {pyscript_programming_language-1.13.3 → pyscript_programming_language-1.14.0}/pyscript/core/editor/gui.py +23 -22
- {pyscript_programming_language-1.13.3 → pyscript_programming_language-1.14.0}/pyscript/core/editor/terminal.py +5 -5
- {pyscript_programming_language-1.13.3 → pyscript_programming_language-1.14.0}/pyscript/core/exceptions.py +8 -19
- {pyscript_programming_language-1.13.3 → pyscript_programming_language-1.14.0}/pyscript/core/handlers.py +34 -32
- {pyscript_programming_language-1.13.3 → pyscript_programming_language-1.14.0}/pyscript/core/highlight.py +7 -25
- {pyscript_programming_language-1.13.3 → pyscript_programming_language-1.14.0}/pyscript/core/interpreter.py +21 -18
- {pyscript_programming_language-1.13.3 → pyscript_programming_language-1.14.0}/pyscript/core/lexer.py +8 -36
- {pyscript_programming_language-1.13.3 → pyscript_programming_language-1.14.0}/pyscript/core/mapping.py +55 -3
- {pyscript_programming_language-1.13.3 → pyscript_programming_language-1.14.0}/pyscript/core/parser.py +102 -48
- pyscript_programming_language-1.14.0/pyscript/core/position.py +120 -0
- {pyscript_programming_language-1.13.3 → pyscript_programming_language-1.14.0}/pyscript/core/pysbuiltins.py +55 -61
- {pyscript_programming_language-1.13.3 → pyscript_programming_language-1.14.0}/pyscript/core/pystypes.py +19 -14
- {pyscript_programming_language-1.13.3 → pyscript_programming_language-1.14.0}/pyscript/core/runner.py +10 -9
- {pyscript_programming_language-1.13.3 → pyscript_programming_language-1.14.0}/pyscript/core/shell.py +14 -16
- {pyscript_programming_language-1.13.3 → pyscript_programming_language-1.14.0}/pyscript/core/symtab.py +14 -15
- {pyscript_programming_language-1.13.3 → pyscript_programming_language-1.14.0}/pyscript/core/token.py +3 -4
- {pyscript_programming_language-1.13.3 → pyscript_programming_language-1.14.0}/pyscript/core/utils/ansi.py +70 -45
- {pyscript_programming_language-1.13.3 → pyscript_programming_language-1.14.0}/pyscript/core/utils/debug.py +18 -5
- {pyscript_programming_language-1.13.3 → pyscript_programming_language-1.14.0}/pyscript/core/utils/generic.py +22 -3
- {pyscript_programming_language-1.13.3 → pyscript_programming_language-1.14.0}/pyscript/core/utils/similarity.py +8 -7
- {pyscript_programming_language-1.13.3 → pyscript_programming_language-1.14.0}/pyscript/core/utils/string.py +10 -12
- {pyscript_programming_language-1.13.3 → pyscript_programming_language-1.14.0}/pyscript/core/version.py +5 -14
- pyscript_programming_language-1.14.0/pyscript/lib/ansi.pys +1 -0
- {pyscript_programming_language-1.13.3 → pyscript_programming_language-1.14.0}/pyscript/lib/brainfuck.pys +3 -6
- {pyscript_programming_language-1.13.3 → pyscript_programming_language-1.14.0}/pyscript/lib/fpstimer/py_fpstimer.py +11 -1
- {pyscript_programming_language-1.13.3 → pyscript_programming_language-1.14.0}/pyscript/lib/history.pys +2 -3
- {pyscript_programming_language-1.13.3 → pyscript_programming_language-1.14.0}/pyscript/lib/parser.pys +9 -3
- {pyscript_programming_language-1.13.3 → pyscript_programming_language-1.14.0}/pyscript/this.py +2 -2
- {pyscript_programming_language-1.13.3 → pyscript_programming_language-1.14.0}/pyscript_programming_language.egg-info/PKG-INFO +34 -32
- {pyscript_programming_language-1.13.3 → pyscript_programming_language-1.14.0}/setup.py +1 -2
- pyscript_programming_language-1.13.3/changelog.md +0 -13
- pyscript_programming_language-1.13.3/pyscript/core/editor/__init__.py +0 -15
- pyscript_programming_language-1.13.3/pyscript/core/position.py +0 -115
- pyscript_programming_language-1.13.3/pyscript/lib/ansi.pys +0 -14
- {pyscript_programming_language-1.13.3 → pyscript_programming_language-1.14.0}/MANIFEST.in +0 -0
- {pyscript_programming_language-1.13.3 → pyscript_programming_language-1.14.0}/pyscript/core/__init__.py +0 -0
- {pyscript_programming_language-1.13.3 → pyscript_programming_language-1.14.0}/pyscript/core/analyzer.py +0 -0
- {pyscript_programming_language-1.13.3 → pyscript_programming_language-1.14.0}/pyscript/core/bases.py +0 -0
- {pyscript_programming_language-1.13.3 → pyscript_programming_language-1.14.0}/pyscript/core/buffer.py +0 -0
- {pyscript_programming_language-1.13.3 → pyscript_programming_language-1.14.0}/pyscript/core/checks.py +0 -0
- {pyscript_programming_language-1.13.3 → pyscript_programming_language-1.14.0}/pyscript/core/nodes.py +0 -0
- {pyscript_programming_language-1.13.3 → pyscript_programming_language-1.14.0}/pyscript/core/results.py +0 -0
- {pyscript_programming_language-1.13.3 → pyscript_programming_language-1.14.0}/pyscript/core/utils/__init__.py +0 -0
- {pyscript_programming_language-1.13.3 → pyscript_programming_language-1.14.0}/pyscript/core/utils/decorators.py +0 -0
- {pyscript_programming_language-1.13.3 → pyscript_programming_language-1.14.0}/pyscript/core/utils/module.py +0 -0
- {pyscript_programming_language-1.13.3 → pyscript_programming_language-1.14.0}/pyscript/core/utils/path.py +0 -0
- {pyscript_programming_language-1.13.3 → pyscript_programming_language-1.14.0}/pyscript/lib/__hello__.pys +0 -0
- {pyscript_programming_language-1.13.3 → pyscript_programming_language-1.14.0}/pyscript/lib/ast/__init__.pys +0 -0
- {pyscript_programming_language-1.13.3 → pyscript_programming_language-1.14.0}/pyscript/lib/ast/ast_dump.py +0 -0
- {pyscript_programming_language-1.13.3 → pyscript_programming_language-1.14.0}/pyscript/lib/ast/ast_literal_eval.py +0 -0
- {pyscript_programming_language-1.13.3 → pyscript_programming_language-1.14.0}/pyscript/lib/ast/ast_unparse.py +0 -0
- {pyscript_programming_language-1.13.3 → pyscript_programming_language-1.14.0}/pyscript/lib/ast/ast_walk.py +0 -0
- {pyscript_programming_language-1.13.3 → pyscript_programming_language-1.14.0}/pyscript/lib/code.pys +0 -0
- {pyscript_programming_language-1.13.3 → pyscript_programming_language-1.14.0}/pyscript/lib/dis.pys +0 -0
- {pyscript_programming_language-1.13.3 → pyscript_programming_language-1.14.0}/pyscript/lib/explorer.pys +0 -0
- {pyscript_programming_language-1.13.3 → pyscript_programming_language-1.14.0}/pyscript/lib/fpstimer/__init__.pys +0 -0
- {pyscript_programming_language-1.13.3 → pyscript_programming_language-1.14.0}/pyscript/lib/getch/__init__.pys +0 -0
- {pyscript_programming_language-1.13.3 → pyscript_programming_language-1.14.0}/pyscript/lib/getch/py_getch.py +0 -0
- {pyscript_programming_language-1.13.3 → pyscript_programming_language-1.14.0}/pyscript/lib/inspect.pys +0 -0
- {pyscript_programming_language-1.13.3 → pyscript_programming_language-1.14.0}/pyscript/lib/jsdict.pys +0 -0
- {pyscript_programming_language-1.13.3 → pyscript_programming_language-1.14.0}/pyscript/lib/keyword.pys +0 -0
- {pyscript_programming_language-1.13.3 → pyscript_programming_language-1.14.0}/pyscript/lib/opcode.pys +0 -0
- {pyscript_programming_language-1.13.3 → pyscript_programming_language-1.14.0}/pyscript/lib/pdisplay.pys +0 -0
- {pyscript_programming_language-1.13.3 → pyscript_programming_language-1.14.0}/pyscript/lib/site.pys +0 -0
- {pyscript_programming_language-1.13.3 → pyscript_programming_language-1.14.0}/pyscript/lib/symtable.pys +0 -0
- {pyscript_programming_language-1.13.3 → pyscript_programming_language-1.14.0}/pyscript/lib/token.pys +0 -0
- {pyscript_programming_language-1.13.3 → pyscript_programming_language-1.14.0}/pyscript/lib/tokenize/__init__.pys +0 -0
- {pyscript_programming_language-1.13.3 → pyscript_programming_language-1.14.0}/pyscript/lib/tokenize/tok_untokenize.py +0 -0
- {pyscript_programming_language-1.13.3 → pyscript_programming_language-1.14.0}/pyscript/other/.nomedia +0 -0
- {pyscript_programming_language-1.13.3 → pyscript_programming_language-1.14.0}/pyscript/other/PyScript.ico +0 -0
- {pyscript_programming_language-1.13.3 → pyscript_programming_language-1.14.0}/pyscript/other/copyright +0 -0
- {pyscript_programming_language-1.13.3 → pyscript_programming_language-1.14.0}/pyscript/other/credits +0 -0
- {pyscript_programming_language-1.13.3 → pyscript_programming_language-1.14.0}/pyscript/other/license +0 -0
- {pyscript_programming_language-1.13.3 → pyscript_programming_language-1.14.0}/pyscript/site-packages/this.pys +0 -0
- {pyscript_programming_language-1.13.3 → pyscript_programming_language-1.14.0}/pyscript_programming_language.egg-info/SOURCES.txt +0 -0
- {pyscript_programming_language-1.13.3 → pyscript_programming_language-1.14.0}/pyscript_programming_language.egg-info/dependency_links.txt +0 -0
- {pyscript_programming_language-1.13.3 → pyscript_programming_language-1.14.0}/pyscript_programming_language.egg-info/requires.txt +0 -0
- {pyscript_programming_language-1.13.3 → pyscript_programming_language-1.14.0}/pyscript_programming_language.egg-info/top_level.txt +0 -0
- {pyscript_programming_language-1.13.3 → pyscript_programming_language-1.14.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.14.0
|
|
4
4
|
Summary: PyScript Programming Language
|
|
5
5
|
Home-page: https://azzammuhyala.github.io/pyscript
|
|
6
6
|
Author: AzzamMuhyala
|
|
@@ -39,7 +39,7 @@ Dynamic: requires-python
|
|
|
39
39
|
<img src="https://static.pepy.tech/personalized-badge/pyscript-programming-language?period=total&units=NONE&left_color=GRAY&right_color=GREEN&left_text=downloads" alt="PyPI Downloads">
|
|
40
40
|
</a>
|
|
41
41
|
<a href="https://en.wikipedia.org/wiki/MIT_License">
|
|
42
|
-
<img src="https://img.shields.io/badge/license-MIT-orange" alt="License
|
|
42
|
+
<img src="https://img.shields.io/badge/license-MIT-orange" alt="MIT License">
|
|
43
43
|
</a>
|
|
44
44
|
<a href="https://www.python.org/">
|
|
45
45
|
<img src="https://img.shields.io/badge/python-3.10+-yellow" alt="Python 3.10+">
|
|
@@ -50,10 +50,10 @@ PyScript is a programming language built on top of Python. It combines some synt
|
|
|
50
50
|
you're already familiar with Python, JavaScript or both, it should be quite easy to learn.
|
|
51
51
|
|
|
52
52
|
## Introduction 📖
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
53
|
+
The name of "PyScript" was previously used by a well-known framework designed to run Python directly in the browser.
|
|
54
|
+
Designed from the outset with inspiration from both Python and JavaScript, this language emphasizes human readability.
|
|
55
|
+
Its name was derived by combining **Py**thon and Java**Script**. Please note that this language is an independent
|
|
56
|
+
programming language project written in Python and has no affiliation with the aforementioned PyScript framework.
|
|
57
57
|
|
|
58
58
|
This language wasn't designed to compete with other modern programming languages, but rather as a learning for
|
|
59
59
|
understanding how programming languages work and how human written code can be understood by machines. Furthermore, this
|
|
@@ -105,24 +105,25 @@ Familiar? There it is!
|
|
|
105
105
|
|:--:|:------------------|:----------------------:|
|
|
106
106
|
| 1 | `argparse` | **required** |
|
|
107
107
|
| 2 | `builtins` | **required** |
|
|
108
|
-
| 3 | `
|
|
109
|
-
| 4 | `
|
|
110
|
-
| 5 | `
|
|
111
|
-
| 6 | `
|
|
112
|
-
| 7 | `
|
|
113
|
-
| 8 | `
|
|
114
|
-
| 9 | `
|
|
115
|
-
| 10 | `
|
|
116
|
-
| 11 | `
|
|
117
|
-
| 12 | `
|
|
118
|
-
| 13 | `
|
|
119
|
-
| 14 | `
|
|
120
|
-
| 15 | `
|
|
121
|
-
| 16 | `
|
|
122
|
-
| 17 | `
|
|
123
|
-
| 18 | `
|
|
124
|
-
| 19 | `
|
|
125
|
-
| 20 | `
|
|
108
|
+
| 3 | `cmath` | **required** |
|
|
109
|
+
| 4 | `collections.abc` | **required** |
|
|
110
|
+
| 5 | `difflib` | **required** |
|
|
111
|
+
| 6 | `functools` | **required** |
|
|
112
|
+
| 7 | `html` | **required** |
|
|
113
|
+
| 8 | `importlib` | **required** |
|
|
114
|
+
| 9 | `inspect` | **required** |
|
|
115
|
+
| 10 | `io` | **required** |
|
|
116
|
+
| 11 | `itertools` | **required** |
|
|
117
|
+
| 12 | `json` | **required** |
|
|
118
|
+
| 13 | `operator` | **required** |
|
|
119
|
+
| 14 | `os` | **required** |
|
|
120
|
+
| 15 | `pkgutil` | **required** |
|
|
121
|
+
| 16 | `re` | **required** |
|
|
122
|
+
| 17 | `subprocess` | **required** |
|
|
123
|
+
| 18 | `sys` | **required** |
|
|
124
|
+
| 19 | `types` | **required** |
|
|
125
|
+
| 20 | `typing` | **required** |
|
|
126
|
+
| 21 | `unicodedata` | **required** |
|
|
126
127
|
| 1 | `ast` | **required (library)** |
|
|
127
128
|
| 2 | `msvcrt` | **required (library)** |
|
|
128
129
|
| 3 | `pprint` | **required (library)** |
|
|
@@ -131,17 +132,18 @@ Familiar? There it is!
|
|
|
131
132
|
| 6 | `termios` | **required (library)** |
|
|
132
133
|
| 7 | `time` | **required (library)** |
|
|
133
134
|
| 8 | `tty` | **required (library)** |
|
|
134
|
-
| 1 | `
|
|
135
|
-
| 2 | `
|
|
136
|
-
| 3 | `
|
|
137
|
-
| 4 | `
|
|
138
|
-
| 5 | `
|
|
139
|
-
| 6 | `
|
|
135
|
+
| 1 | `_colorize` | **optional** |
|
|
136
|
+
| 2 | `beartype` | **optional** |
|
|
137
|
+
| 3 | `prompt_toolkit` | **optional** |
|
|
138
|
+
| 4 | `pygments` | **optional** |
|
|
139
|
+
| 5 | `readline` | **optional** |
|
|
140
|
+
| 6 | `threading` | **optional** |
|
|
141
|
+
| 7 | `tkinter` | **optional** |
|
|
142
|
+
| 8 | `IPython` | **optional** |
|
|
140
143
|
|
|
141
144
|
### Status Explanation
|
|
142
145
|
- **required**: Required by PyScript entirely.
|
|
143
|
-
- **required (library)**: Required PyScript library
|
|
144
|
-
import it.
|
|
146
|
+
- **required (library)**: Required by PyScript optional library. PyScript is not affected, unless you import it.
|
|
145
147
|
- **optional**: Not required, but if it is present, some features can be used without issue.
|
|
146
148
|
|
|
147
149
|
## Highlights 🎨
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
<img src="https://static.pepy.tech/personalized-badge/pyscript-programming-language?period=total&units=NONE&left_color=GRAY&right_color=GREEN&left_text=downloads" alt="PyPI Downloads">
|
|
8
8
|
</a>
|
|
9
9
|
<a href="https://en.wikipedia.org/wiki/MIT_License">
|
|
10
|
-
<img src="https://img.shields.io/badge/license-MIT-orange" alt="License
|
|
10
|
+
<img src="https://img.shields.io/badge/license-MIT-orange" alt="MIT License">
|
|
11
11
|
</a>
|
|
12
12
|
<a href="https://www.python.org/">
|
|
13
13
|
<img src="https://img.shields.io/badge/python-3.10+-yellow" alt="Python 3.10+">
|
|
@@ -18,10 +18,10 @@ PyScript is a programming language built on top of Python. It combines some synt
|
|
|
18
18
|
you're already familiar with Python, JavaScript or both, it should be quite easy to learn.
|
|
19
19
|
|
|
20
20
|
## Introduction 📖
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
21
|
+
The name of "PyScript" was previously used by a well-known framework designed to run Python directly in the browser.
|
|
22
|
+
Designed from the outset with inspiration from both Python and JavaScript, this language emphasizes human readability.
|
|
23
|
+
Its name was derived by combining **Py**thon and Java**Script**. Please note that this language is an independent
|
|
24
|
+
programming language project written in Python and has no affiliation with the aforementioned PyScript framework.
|
|
25
25
|
|
|
26
26
|
This language wasn't designed to compete with other modern programming languages, but rather as a learning for
|
|
27
27
|
understanding how programming languages work and how human written code can be understood by machines. Furthermore, this
|
|
@@ -73,24 +73,25 @@ Familiar? There it is!
|
|
|
73
73
|
|:--:|:------------------|:----------------------:|
|
|
74
74
|
| 1 | `argparse` | **required** |
|
|
75
75
|
| 2 | `builtins` | **required** |
|
|
76
|
-
| 3 | `
|
|
77
|
-
| 4 | `
|
|
78
|
-
| 5 | `
|
|
79
|
-
| 6 | `
|
|
80
|
-
| 7 | `
|
|
81
|
-
| 8 | `
|
|
82
|
-
| 9 | `
|
|
83
|
-
| 10 | `
|
|
84
|
-
| 11 | `
|
|
85
|
-
| 12 | `
|
|
86
|
-
| 13 | `
|
|
87
|
-
| 14 | `
|
|
88
|
-
| 15 | `
|
|
89
|
-
| 16 | `
|
|
90
|
-
| 17 | `
|
|
91
|
-
| 18 | `
|
|
92
|
-
| 19 | `
|
|
93
|
-
| 20 | `
|
|
76
|
+
| 3 | `cmath` | **required** |
|
|
77
|
+
| 4 | `collections.abc` | **required** |
|
|
78
|
+
| 5 | `difflib` | **required** |
|
|
79
|
+
| 6 | `functools` | **required** |
|
|
80
|
+
| 7 | `html` | **required** |
|
|
81
|
+
| 8 | `importlib` | **required** |
|
|
82
|
+
| 9 | `inspect` | **required** |
|
|
83
|
+
| 10 | `io` | **required** |
|
|
84
|
+
| 11 | `itertools` | **required** |
|
|
85
|
+
| 12 | `json` | **required** |
|
|
86
|
+
| 13 | `operator` | **required** |
|
|
87
|
+
| 14 | `os` | **required** |
|
|
88
|
+
| 15 | `pkgutil` | **required** |
|
|
89
|
+
| 16 | `re` | **required** |
|
|
90
|
+
| 17 | `subprocess` | **required** |
|
|
91
|
+
| 18 | `sys` | **required** |
|
|
92
|
+
| 19 | `types` | **required** |
|
|
93
|
+
| 20 | `typing` | **required** |
|
|
94
|
+
| 21 | `unicodedata` | **required** |
|
|
94
95
|
| 1 | `ast` | **required (library)** |
|
|
95
96
|
| 2 | `msvcrt` | **required (library)** |
|
|
96
97
|
| 3 | `pprint` | **required (library)** |
|
|
@@ -99,17 +100,18 @@ Familiar? There it is!
|
|
|
99
100
|
| 6 | `termios` | **required (library)** |
|
|
100
101
|
| 7 | `time` | **required (library)** |
|
|
101
102
|
| 8 | `tty` | **required (library)** |
|
|
102
|
-
| 1 | `
|
|
103
|
-
| 2 | `
|
|
104
|
-
| 3 | `
|
|
105
|
-
| 4 | `
|
|
106
|
-
| 5 | `
|
|
107
|
-
| 6 | `
|
|
103
|
+
| 1 | `_colorize` | **optional** |
|
|
104
|
+
| 2 | `beartype` | **optional** |
|
|
105
|
+
| 3 | `prompt_toolkit` | **optional** |
|
|
106
|
+
| 4 | `pygments` | **optional** |
|
|
107
|
+
| 5 | `readline` | **optional** |
|
|
108
|
+
| 6 | `threading` | **optional** |
|
|
109
|
+
| 7 | `tkinter` | **optional** |
|
|
110
|
+
| 8 | `IPython` | **optional** |
|
|
108
111
|
|
|
109
112
|
### Status Explanation
|
|
110
113
|
- **required**: Required by PyScript entirely.
|
|
111
|
-
- **required (library)**: Required PyScript library
|
|
112
|
-
import it.
|
|
114
|
+
- **required (library)**: Required by PyScript optional library. PyScript is not affected, unless you import it.
|
|
113
115
|
- **optional**: Not required, but if it is present, some features can be used without issue.
|
|
114
116
|
|
|
115
117
|
## Highlights 🎨
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
# Change Logs
|
|
2
|
+
|
|
3
|
+
## [1.14.0] - 05/10/2026
|
|
4
|
+
|
|
5
|
+
### Added
|
|
6
|
+
- All editors are not loaded when PyScript is loaded.
|
|
7
|
+
- `pys_sys` is available in the main `__init__`.
|
|
8
|
+
- The `import` statement can import several modules at once with a comma (`,`) as separator.
|
|
9
|
+
- Display of help, error, etc. arguments in argparser can be colored and not from `-n` / `--no-color` arguments.
|
|
10
|
+
- _etc._
|
|
11
|
+
|
|
12
|
+
### Fixed
|
|
13
|
+
- Fixed some bugs.
|
|
14
|
+
- `PysContext`, `PysSymbolTable`, and `PysTraceback` are now mutable for performance.
|
|
15
|
+
- Environ `PYSCRIPT_NO_GIL` changed to `PYSCRIPT_WITH_GIL` (default without GIL).
|
|
16
|
+
- _etc._
|
|
17
|
+
|
|
18
|
+
### Removed
|
|
19
|
+
- The `NotImplementedError` exception is not catch by the builtin function as a sign that the object does not support an
|
|
20
|
+
operation.
|
|
21
|
+
- _etc._
|
{pyscript_programming_language-1.13.3 → pyscript_programming_language-1.14.0}/pyproject.toml
RENAMED
|
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "pyscript-programming-language"
|
|
7
|
-
version = "1.
|
|
7
|
+
version = "1.14.0"
|
|
8
8
|
description = "PyScript Programming Language"
|
|
9
9
|
readme = { file = "README.md", content-type = "text/markdown" }
|
|
10
10
|
requires-python = ">=3.10"
|
{pyscript_programming_language-1.13.3 → pyscript_programming_language-1.14.0}/pyscript/__init__.py
RENAMED
|
@@ -9,10 +9,10 @@ if __import__('sys').version_info < (3, 10):
|
|
|
9
9
|
from . import core
|
|
10
10
|
|
|
11
11
|
from .core.constants import (
|
|
12
|
-
DEFAULT, NO_COLOR,
|
|
13
|
-
NOTEBOOK, LEXER_HIGHLIGHT, DICT_TO_JSDICT
|
|
12
|
+
DEFAULT, NO_COLOR, NO_WARNING, SILENT, DEBUG, RETURN_RESULT, DONT_SHOW_BANNER_ON_SHELL, CLASSIC_LINE_SHELL,
|
|
13
|
+
NO_COLOR_PROMPT, NOTEBOOK, LEXER_HIGHLIGHT, DICT_TO_JSDICT
|
|
14
14
|
)
|
|
15
|
-
from .core.cache import undefined
|
|
15
|
+
from .core.cache import pys_sys, undefined
|
|
16
16
|
from .core.highlight import (
|
|
17
17
|
HLFMT_HTML, HLFMT_ANSI, HLFMT_BBCODE, pys_highlight, PygmentsPyScriptStyle, PygmentsPyScriptLexer,
|
|
18
18
|
PygmentsPyScriptShellLexer
|
|
@@ -24,8 +24,9 @@ __all__ = (
|
|
|
24
24
|
'core',
|
|
25
25
|
'DEFAULT',
|
|
26
26
|
'NO_COLOR',
|
|
27
|
-
'
|
|
27
|
+
'NO_WARNING',
|
|
28
28
|
'SILENT',
|
|
29
|
+
'DEBUG',
|
|
29
30
|
'RETURN_RESULT',
|
|
30
31
|
'DONT_SHOW_BANNER_ON_SHELL',
|
|
31
32
|
'CLASSIC_LINE_SHELL',
|
|
@@ -37,6 +38,7 @@ __all__ = (
|
|
|
37
38
|
'HLFMT_ANSI',
|
|
38
39
|
'HLFMT_BBCODE',
|
|
39
40
|
'undefined',
|
|
41
|
+
'pys_sys',
|
|
40
42
|
'version',
|
|
41
43
|
'version_info',
|
|
42
44
|
'pys_highlight',
|
{pyscript_programming_language-1.13.3 → pyscript_programming_language-1.14.0}/pyscript/__init__.pyi
RENAMED
|
@@ -22,8 +22,9 @@ from .core.highlight import (
|
|
|
22
22
|
|
|
23
23
|
DEFAULT: int
|
|
24
24
|
NO_COLOR: int
|
|
25
|
-
|
|
25
|
+
NO_WARNING: int
|
|
26
26
|
SILENT: int
|
|
27
|
+
DEBUG: int
|
|
27
28
|
RETURN_RESULT: int
|
|
28
29
|
DONT_SHOW_BANNER_ON_SHELL: int
|
|
29
30
|
CLASSIC_LINE_SHELL: int
|
|
@@ -36,6 +37,7 @@ HLFMT_HTML: PysHighlightFormatter
|
|
|
36
37
|
HLFMT_ANSI: PysHighlightFormatter
|
|
37
38
|
HLFMT_BBCODE: PysHighlightFormatter
|
|
38
39
|
|
|
40
|
+
pys_sys: ModuleType
|
|
39
41
|
undefined: PysUndefined
|
|
40
42
|
version: str
|
|
41
43
|
version_info: PysVersionInfo
|
{pyscript_programming_language-1.13.3 → pyscript_programming_language-1.14.0}/pyscript/__main__.py
RENAMED
|
@@ -1,11 +1,10 @@
|
|
|
1
1
|
from .core.buffer import PysFileBuffer
|
|
2
2
|
from .core.cache import pys_sys, undefined
|
|
3
3
|
from .core.constants import (
|
|
4
|
-
ENV_PYSCRIPT_NO_COLOR_PROMPT, ENV_PYSCRIPT_CLASSIC_LINE_SHELL, DEFAULT,
|
|
5
|
-
CLASSIC_LINE_SHELL, NO_COLOR_PROMPT, NOTEBOOK
|
|
4
|
+
ENV_PYSCRIPT_NO_COLOR_PROMPT, ENV_PYSCRIPT_CLASSIC_LINE_SHELL, DEFAULT, NO_COLOR, NO_WARNING, DEBUG,
|
|
5
|
+
DONT_SHOW_BANNER_ON_SHELL, CLASSIC_LINE_SHELL, NO_COLOR_PROMPT, NOTEBOOK
|
|
6
6
|
)
|
|
7
|
-
from .core
|
|
8
|
-
from .core.editor.terminal import PysTerminalEditor, TERMINAL_SUPPORT
|
|
7
|
+
from .core import editor
|
|
9
8
|
from .core.highlight import (
|
|
10
9
|
PYGMENTS, HLFMT_HTML, HLFMT_ANSI, HLFMT_BBCODE, pys_highlight, PygmentsPyScriptStyle, PygmentsPyScriptLexer
|
|
11
10
|
)
|
|
@@ -33,24 +32,29 @@ if PYGMENTS:
|
|
|
33
32
|
}
|
|
34
33
|
|
|
35
34
|
from argparse import OPTIONAL, REMAINDER, ArgumentParser
|
|
35
|
+
from re import compile as compile_regex
|
|
36
36
|
|
|
37
37
|
import sys
|
|
38
38
|
|
|
39
|
+
if sys.version_info >= (3, 13):
|
|
40
|
+
try:
|
|
41
|
+
from _colorize import can_colorize
|
|
42
|
+
COLORIZE = can_colorize()
|
|
43
|
+
except:
|
|
44
|
+
# respect for NO_COLOR, see more here: https://no-color.org
|
|
45
|
+
COLORIZE = not is_environ('NO_COLOR')
|
|
46
|
+
else:
|
|
47
|
+
COLORIZE = True
|
|
48
|
+
|
|
39
49
|
FORMATER_HIGHLIGHT_MAP = {
|
|
40
50
|
'html': HLFMT_HTML,
|
|
41
51
|
'ansi': HLFMT_ANSI,
|
|
42
52
|
'bbcode': HLFMT_BBCODE
|
|
43
53
|
}
|
|
44
54
|
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
(GUI_SUPPORT, 'gui', PysGUIEditor),
|
|
49
|
-
(TERMINAL_SUPPORT, 'terminal', PysTerminalEditor)
|
|
50
|
-
] if support
|
|
51
|
-
}
|
|
52
|
-
|
|
53
|
-
arguments_requiring_value = {'-l', '--highlight', '-r', '--py-recursion'}
|
|
55
|
+
editors = tuple(editor for editor in editor.__all__ if editor != 'bases')
|
|
56
|
+
arguments_requiring_argv = {'-c', '--command', '-m', '--module'}
|
|
57
|
+
arguments_requiring_value = {'-e', '--editor', '-l', '--highlight', '-r', '--py-recursion'}
|
|
54
58
|
|
|
55
59
|
parser = ArgumentParser(
|
|
56
60
|
prog=f'{base(sys.executable)} -m pyscript',
|
|
@@ -77,14 +81,12 @@ parser.add_argument(
|
|
|
77
81
|
help="set a debug flag, this will ignore assert statement. Check the flag is active with the __debug__ keyword"
|
|
78
82
|
)
|
|
79
83
|
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
)
|
|
87
|
-
arguments_requiring_value.update({'-e', '--editor'})
|
|
84
|
+
parser.add_argument(
|
|
85
|
+
'-e', '--editor',
|
|
86
|
+
choices=editors,
|
|
87
|
+
default=None,
|
|
88
|
+
help="open the editor panel from a 'file'",
|
|
89
|
+
)
|
|
88
90
|
|
|
89
91
|
parser.add_argument(
|
|
90
92
|
'-i', '--inspect',
|
|
@@ -100,7 +102,7 @@ parser.add_argument(
|
|
|
100
102
|
|
|
101
103
|
parser.add_argument(
|
|
102
104
|
'-l', '--highlight',
|
|
103
|
-
choices=tuple(FORMATER_HIGHLIGHT_MAP.keys()) + tuple(FORMATER_PYGMENTS_MAP.keys() if PYGMENTS else ()),
|
|
105
|
+
choices=tuple(FORMATER_HIGHLIGHT_MAP.keys()) + (tuple(FORMATER_PYGMENTS_MAP.keys()) if PYGMENTS else ()),
|
|
104
106
|
default=None,
|
|
105
107
|
help="generate highlight code from a 'file'"
|
|
106
108
|
)
|
|
@@ -139,6 +141,12 @@ parser.add_argument(
|
|
|
139
141
|
help="configure terminal encoding to UTF-8 and enable ANSI escape code processing on Windows"
|
|
140
142
|
)
|
|
141
143
|
|
|
144
|
+
parser.add_argument(
|
|
145
|
+
'-w', '--no-warning',
|
|
146
|
+
action='store_true',
|
|
147
|
+
help="disabled warning (especially syntax warnings)"
|
|
148
|
+
)
|
|
149
|
+
|
|
142
150
|
parser.add_argument(
|
|
143
151
|
'-q',
|
|
144
152
|
action='store_true',
|
|
@@ -179,23 +187,27 @@ argv = sys.argv[1:]
|
|
|
179
187
|
argc = len(argv)
|
|
180
188
|
index = 0
|
|
181
189
|
arg_index = -1
|
|
190
|
+
parser_color = COLORIZE
|
|
182
191
|
|
|
183
192
|
while index < argc:
|
|
184
193
|
arg = argv[index]
|
|
185
|
-
if not arg.startswith('-') or arg == '--':
|
|
186
|
-
break
|
|
187
194
|
|
|
188
|
-
if arg
|
|
189
|
-
arg_index = index + 2
|
|
195
|
+
if not arg.startswith('-') or arg == '--':
|
|
190
196
|
break
|
|
191
|
-
elif arg in
|
|
197
|
+
elif arg in arguments_requiring_argv:
|
|
192
198
|
arg_index = index + 2
|
|
193
199
|
break
|
|
200
|
+
elif arg in ('-n', '--no-color'):
|
|
201
|
+
parser_color = False
|
|
194
202
|
|
|
195
203
|
index += 1
|
|
196
204
|
if arg in arguments_requiring_value:
|
|
197
205
|
index += 1
|
|
198
206
|
|
|
207
|
+
if sys.version_info >= (3, 14):
|
|
208
|
+
parser.color = parser_color
|
|
209
|
+
parser.suggest_on_error = True
|
|
210
|
+
|
|
199
211
|
args = parser.parse_args(argv if arg_index == -1 else argv[:arg_index])
|
|
200
212
|
arg = args.arg if arg_index == -1 else argv[arg_index:]
|
|
201
213
|
|
|
@@ -220,7 +232,7 @@ if args.terminal:
|
|
|
220
232
|
pass
|
|
221
233
|
|
|
222
234
|
if args.file is None:
|
|
223
|
-
if
|
|
235
|
+
if args.editor:
|
|
224
236
|
argument_error('-e/--editor', "argument 'file' is required")
|
|
225
237
|
elif args.highlight:
|
|
226
238
|
argument_error('-l/--highlight', "argument 'file' is required")
|
|
@@ -231,66 +243,97 @@ if args.py_recursion is not None:
|
|
|
231
243
|
except BaseException as e:
|
|
232
244
|
argument_error('-r/--py-recursion', e)
|
|
233
245
|
|
|
246
|
+
if args.P:
|
|
247
|
+
for cwd in {'', '.', getcwd()}:
|
|
248
|
+
remove_python_path(cwd)
|
|
249
|
+
|
|
234
250
|
code = 0
|
|
235
251
|
flags = DEFAULT
|
|
236
252
|
|
|
237
253
|
for condition, flag in [
|
|
238
254
|
(args.notebook or USE_NOTEBOOK, NOTEBOOK),
|
|
239
255
|
(args.classic_line_shell or is_environ(ENV_PYSCRIPT_CLASSIC_LINE_SHELL), CLASSIC_LINE_SHELL),
|
|
240
|
-
(args.no_color or
|
|
256
|
+
(args.no_color or not COLORIZE, NO_COLOR),
|
|
241
257
|
(args.no_color_prompt or is_environ(ENV_PYSCRIPT_NO_COLOR_PROMPT), NO_COLOR_PROMPT),
|
|
242
258
|
(args.debug, DEBUG),
|
|
259
|
+
(args.no_warning, NO_WARNING),
|
|
243
260
|
(args.q, DONT_SHOW_BANNER_ON_SHELL)
|
|
244
261
|
]:
|
|
245
262
|
if condition:
|
|
246
263
|
flags |= flag
|
|
247
264
|
|
|
248
|
-
if args.P:
|
|
249
|
-
for cwd in {'', '.', getcwd()}:
|
|
250
|
-
remove_python_path(cwd)
|
|
251
|
-
|
|
252
265
|
pys_sys.argv = argv = ['', *arg]
|
|
253
266
|
|
|
254
267
|
def clean_up() -> None:
|
|
255
268
|
g = globals()
|
|
256
269
|
|
|
257
270
|
for name in {
|
|
258
|
-
'ArgumentParser', 'BBCodeFormatter', 'CLASSIC_LINE_SHELL', 'DEBUG', 'DEFAULT', '
|
|
259
|
-
'ENV_PYSCRIPT_CLASSIC_LINE_SHELL', 'ENV_PYSCRIPT_NO_COLOR_PROMPT', 'FORMATER_HIGHLIGHT_MAP',
|
|
260
|
-
'FORMATER_PYGMENTS_MAP', '
|
|
261
|
-
'LatexFormatter', 'NOTEBOOK', 'NO_COLOR', '
|
|
262
|
-
'PygmentsPyScriptStyle', 'PysFileBuffer', '
|
|
263
|
-
'
|
|
264
|
-
'
|
|
265
|
-
'
|
|
266
|
-
'
|
|
267
|
-
'
|
|
271
|
+
'ArgumentParser', 'BBCodeFormatter', 'CLASSIC_LINE_SHELL', 'DEBUG', 'DEFAULT', 'i', 'index', 'is_environ', 'fd',
|
|
272
|
+
'kernel32', 'ENV_PYSCRIPT_CLASSIC_LINE_SHELL', 'ENV_PYSCRIPT_NO_COLOR_PROMPT', 'FORMATER_HIGHLIGHT_MAP', 'arg',
|
|
273
|
+
'FORMATER_PYGMENTS_MAP', 'HLFMT_ANSI', 'HLFMT_BBCODE', 'HLFMT_HTML', 'HtmlFormatter', 'OPTIONAL', 'PYGMENTS',
|
|
274
|
+
'LatexFormatter', 'NOTEBOOK', 'NO_COLOR', 'NO_WARNING', 'NO_COLOR_PROMPT', 'PygmentsPyScriptLexer', 'args',
|
|
275
|
+
'PygmentsPyScriptStyle', 'PysFileBuffer', 'REMAINDER', 'Terminal256Formatter', 'TerminalFormatter', 'flag',
|
|
276
|
+
'TerminalTrueColorFormatter', 'USE_NOTEBOOK', '__version__', '_namespace_to_symbol_table', 'arg_index', 'argc',
|
|
277
|
+
'argument_error', 'arguments_requiring_value', 'argv', 'base', 'clean_up', 'condition', 'ctypes', 'execute',
|
|
278
|
+
'file', 'find_module_path', 'getcwd', 'highlight', 'load_editor_module', 'load_file', 'module_path', 'parser',
|
|
279
|
+
'pys_highlight', 'pys_sys', 'remove_python_path', 'editors', 'editor', 'compile_regex', 'can_colorize',
|
|
280
|
+
'arguments_requiring_argv', 'COLORIZE', 'parser_color'
|
|
268
281
|
}:
|
|
269
282
|
try:
|
|
270
283
|
del g[name]
|
|
271
284
|
except:
|
|
272
285
|
continue
|
|
273
286
|
|
|
287
|
+
def load_editor_module(name: str) -> tuple[type | None, bool]:
|
|
288
|
+
if name not in editors:
|
|
289
|
+
return None, False
|
|
290
|
+
|
|
291
|
+
module = getattr(editor, name, None)
|
|
292
|
+
if module is None:
|
|
293
|
+
return None, False
|
|
294
|
+
|
|
295
|
+
class_name = compile_regex(r'Pys[A-Za-z0-9_]+Editor').fullmatch
|
|
296
|
+
support_name = compile_regex(r'[A-Z0-9_]+_SUPPORT').fullmatch
|
|
297
|
+
|
|
298
|
+
cls = None
|
|
299
|
+
support = None
|
|
300
|
+
for name in dir(module):
|
|
301
|
+
if not (cls is None or support is None):
|
|
302
|
+
break
|
|
303
|
+
elif class_name(name) and cls is None:
|
|
304
|
+
cls = getattr(module, name)
|
|
305
|
+
elif support_name(name) and support is None:
|
|
306
|
+
support = getattr(module, name)
|
|
307
|
+
else:
|
|
308
|
+
return None, False
|
|
309
|
+
|
|
310
|
+
return cls, support
|
|
311
|
+
|
|
274
312
|
def load_file(path) -> PysFileBuffer:
|
|
275
313
|
normalized = normpath(path)
|
|
314
|
+
|
|
315
|
+
def open_error(message: str) -> None:
|
|
316
|
+
argument_error('file', f"can't open file \"{normalized}\": {message}")
|
|
317
|
+
|
|
276
318
|
try:
|
|
277
|
-
with open(normalized, 'r', encoding=
|
|
319
|
+
with open(normalized, 'r', encoding=pys_sys.encoding) as file:
|
|
278
320
|
return PysFileBuffer(file, normalized)
|
|
279
321
|
except FileNotFoundError:
|
|
280
|
-
if not
|
|
281
|
-
|
|
322
|
+
if not args.editor:
|
|
323
|
+
open_error("No such file or directory")
|
|
282
324
|
except PermissionError:
|
|
283
|
-
|
|
325
|
+
open_error("Permission denied")
|
|
284
326
|
except IsADirectoryError:
|
|
285
|
-
|
|
327
|
+
open_error("Path is not a file")
|
|
286
328
|
except NotADirectoryError:
|
|
287
|
-
|
|
329
|
+
open_error("Attempting to access directory from file")
|
|
288
330
|
except (OSError, IOError):
|
|
289
|
-
|
|
331
|
+
open_error("Attempting to access a system directory or file")
|
|
290
332
|
except UnicodeDecodeError:
|
|
291
|
-
|
|
333
|
+
open_error("Bad file")
|
|
292
334
|
except BaseException as e:
|
|
293
335
|
argument_error('file', f"file \"{normalized}\": Unexpected error: {e}")
|
|
336
|
+
|
|
294
337
|
return PysFileBuffer('', path)
|
|
295
338
|
|
|
296
339
|
def execute(file: PysFileBuffer) -> None:
|
|
@@ -327,9 +370,12 @@ if args.file is not None:
|
|
|
327
370
|
argv[0] = args.file
|
|
328
371
|
file = load_file(args.file)
|
|
329
372
|
|
|
330
|
-
if
|
|
373
|
+
if args.editor:
|
|
374
|
+
cls, supported = load_editor_module(args.editor)
|
|
375
|
+
if not supported:
|
|
376
|
+
argument_error('-e/--editor', f"'{args.editor}' mode not supported")
|
|
331
377
|
try:
|
|
332
|
-
|
|
378
|
+
cls(file, colored=not (flags & NO_COLOR)).run()
|
|
333
379
|
except BaseException as e:
|
|
334
380
|
argument_error('-e/--editor', e)
|
|
335
381
|
|
|
@@ -10,7 +10,7 @@ GLOBAL_HISTORY_PATH = os.path.join(os.path.expanduser('~'), '.pyscript_history')
|
|
|
10
10
|
CONFIGURATIONS_PATH = os.path.join(OTHER_PATH, 'configurations.json')
|
|
11
11
|
|
|
12
12
|
ENV_PYSCRIPT_NO_EXCEPTHOOK = 'PYSCRIPT_NO_EXCEPTHOOK'
|
|
13
|
-
|
|
13
|
+
ENV_PYSCRIPT_WITH_GIL = 'PYSCRIPT_WITH_GIL'
|
|
14
14
|
ENV_PYSCRIPT_NO_READLINE = 'PYSCRIPT_NO_READLINE'
|
|
15
15
|
ENV_PYSCRIPT_NO_TYPECHECK = 'PYSCRIPT_NO_TYPECHECK'
|
|
16
16
|
ENV_PYSCRIPT_NO_COLOR_PROMPT = 'PYSCRIPT_NO_COLOR_PROMPT'
|
|
@@ -34,12 +34,13 @@ CONSTANT_KEYWORDS = (
|
|
|
34
34
|
|
|
35
35
|
DEFAULT = 0
|
|
36
36
|
NO_COLOR = 1 << 0
|
|
37
|
-
|
|
38
|
-
SILENT = 1 << 2
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
37
|
+
NO_WARNING = 1 << 1
|
|
38
|
+
SILENT = 1 << 2 | NO_WARNING
|
|
39
|
+
DEBUG = 1 << 3
|
|
40
|
+
RETURN_RESULT = 1 << 4
|
|
41
|
+
DONT_SHOW_BANNER_ON_SHELL = 1 << 5
|
|
42
|
+
CLASSIC_LINE_SHELL = 1 << 6
|
|
43
|
+
NO_COLOR_PROMPT = 1 << 7
|
|
43
44
|
NOTEBOOK = CLASSIC_LINE_SHELL | NO_COLOR_PROMPT
|
|
44
45
|
|
|
45
46
|
LEXER_HIGHLIGHT = 1 << 0
|
|
@@ -3,12 +3,9 @@ from .buffer import PysFileBuffer
|
|
|
3
3
|
from .constants import DEFAULT
|
|
4
4
|
from .position import PysPosition
|
|
5
5
|
from .symtab import PysSymbolTable, PysClassSymbolTable
|
|
6
|
-
from .utils.decorators import immutable
|
|
7
|
-
from .utils.generic import setimuattr
|
|
8
6
|
|
|
9
7
|
from typing import Optional
|
|
10
8
|
|
|
11
|
-
@immutable
|
|
12
9
|
class PysContext(Pys):
|
|
13
10
|
|
|
14
11
|
__slots__ = ('file', 'name', 'qualname', 'flags', 'symbol_table', 'parent', 'parent_entry_position')
|
|
@@ -28,13 +25,13 @@ class PysContext(Pys):
|
|
|
28
25
|
if flags is None and parent:
|
|
29
26
|
flags = parent.flags
|
|
30
27
|
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
28
|
+
self.file = file
|
|
29
|
+
self.name = name
|
|
30
|
+
self.qualname = qualname
|
|
31
|
+
self.flags = DEFAULT if flags is None else flags
|
|
32
|
+
self.symbol_table = symbol_table
|
|
33
|
+
self.parent = parent
|
|
34
|
+
self.parent_entry_position = parent_entry_position
|
|
38
35
|
|
|
39
36
|
class PysClassContext(PysContext):
|
|
40
37
|
|