pyscript-programming-language 1.12.13__tar.gz → 1.13.1__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.1/PKG-INFO +156 -0
- pyscript_programming_language-1.13.1/README.md +124 -0
- pyscript_programming_language-1.13.1/changelog.md +12 -0
- {pyscript_programming_language-1.12.13 → pyscript_programming_language-1.13.1}/pyproject.toml +2 -2
- {pyscript_programming_language-1.12.13 → pyscript_programming_language-1.13.1}/pyscript/__main__.py +3 -4
- {pyscript_programming_language-1.12.13 → pyscript_programming_language-1.13.1}/pyscript/core/cache.py +3 -1
- {pyscript_programming_language-1.12.13 → pyscript_programming_language-1.13.1}/pyscript/core/constants.py +5 -4
- pyscript_programming_language-1.13.1/pyscript/core/editor/bases.py +70 -0
- {pyscript_programming_language-1.12.13 → pyscript_programming_language-1.13.1}/pyscript/core/editor/gui.py +37 -44
- {pyscript_programming_language-1.12.13 → pyscript_programming_language-1.13.1}/pyscript/core/editor/terminal.py +7 -2
- {pyscript_programming_language-1.12.13 → pyscript_programming_language-1.13.1}/pyscript/core/highlight.py +8 -9
- {pyscript_programming_language-1.12.13 → pyscript_programming_language-1.13.1}/pyscript/core/interpreter.py +18 -42
- {pyscript_programming_language-1.12.13 → pyscript_programming_language-1.13.1}/pyscript/core/lexer.py +1 -3
- {pyscript_programming_language-1.12.13 → pyscript_programming_language-1.13.1}/pyscript/core/mapping.py +12 -9
- {pyscript_programming_language-1.12.13 → pyscript_programming_language-1.13.1}/pyscript/core/parser.py +56 -19
- {pyscript_programming_language-1.12.13 → pyscript_programming_language-1.13.1}/pyscript/core/position.py +8 -7
- {pyscript_programming_language-1.12.13 → pyscript_programming_language-1.13.1}/pyscript/core/pysbuiltins.py +54 -88
- {pyscript_programming_language-1.12.13 → pyscript_programming_language-1.13.1}/pyscript/core/pystypes.py +6 -2
- {pyscript_programming_language-1.12.13 → pyscript_programming_language-1.13.1}/pyscript/core/runner.py +22 -15
- {pyscript_programming_language-1.12.13 → pyscript_programming_language-1.13.1}/pyscript/core/shell.py +1 -1
- {pyscript_programming_language-1.12.13 → pyscript_programming_language-1.13.1}/pyscript/core/symtab.py +35 -26
- {pyscript_programming_language-1.12.13 → pyscript_programming_language-1.13.1}/pyscript/core/token.py +12 -8
- {pyscript_programming_language-1.12.13 → pyscript_programming_language-1.13.1}/pyscript/core/utils/debug.py +1 -2
- {pyscript_programming_language-1.12.13 → pyscript_programming_language-1.13.1}/pyscript/core/utils/generic.py +4 -0
- {pyscript_programming_language-1.12.13 → pyscript_programming_language-1.13.1}/pyscript/core/utils/string.py +3 -3
- {pyscript_programming_language-1.12.13 → pyscript_programming_language-1.13.1}/pyscript/core/version.py +3 -3
- {pyscript_programming_language-1.12.13 → pyscript_programming_language-1.13.1}/pyscript/lib/ast/ast_literal_eval.py +13 -5
- {pyscript_programming_language-1.12.13 → pyscript_programming_language-1.13.1}/pyscript/lib/ast/ast_unparse.py +3 -19
- {pyscript_programming_language-1.12.13 → pyscript_programming_language-1.13.1}/pyscript/lib/brainfuck.pys +2 -2
- pyscript_programming_language-1.13.1/pyscript/lib/inspect.pys +26 -0
- {pyscript_programming_language-1.12.13 → pyscript_programming_language-1.13.1}/pyscript/lib/parser.pys +29 -7
- {pyscript_programming_language-1.12.13 → pyscript_programming_language-1.13.1}/pyscript/lib/pdisplay.pys +3 -3
- {pyscript_programming_language-1.12.13 → pyscript_programming_language-1.13.1}/pyscript/lib/site.pys +4 -1
- {pyscript_programming_language-1.12.13 → pyscript_programming_language-1.13.1}/pyscript/lib/tokenize/__init__.pys +1 -1
- {pyscript_programming_language-1.12.13 → pyscript_programming_language-1.13.1}/pyscript/lib/tokenize/tok_untokenize.py +2 -2
- {pyscript_programming_language-1.12.13 → pyscript_programming_language-1.13.1}/pyscript/site-packages/this.pys +5 -10
- pyscript_programming_language-1.13.1/pyscript/this.py +11 -0
- pyscript_programming_language-1.13.1/pyscript_programming_language.egg-info/PKG-INFO +156 -0
- {pyscript_programming_language-1.12.13 → pyscript_programming_language-1.13.1}/setup.py +2 -2
- pyscript_programming_language-1.12.13/PKG-INFO +0 -150
- pyscript_programming_language-1.12.13/README.md +0 -118
- pyscript_programming_language-1.12.13/changelog.md +0 -11
- pyscript_programming_language-1.12.13/pyscript/core/editor/bases.py +0 -38
- pyscript_programming_language-1.12.13/pyscript/lib/inspect.pys +0 -26
- pyscript_programming_language-1.12.13/pyscript/this.py +0 -8
- pyscript_programming_language-1.12.13/pyscript_programming_language.egg-info/PKG-INFO +0 -150
- {pyscript_programming_language-1.12.13 → pyscript_programming_language-1.13.1}/MANIFEST.in +0 -0
- {pyscript_programming_language-1.12.13 → pyscript_programming_language-1.13.1}/pyscript/__init__.py +0 -0
- {pyscript_programming_language-1.12.13 → pyscript_programming_language-1.13.1}/pyscript/__init__.pyi +0 -0
- {pyscript_programming_language-1.12.13 → pyscript_programming_language-1.13.1}/pyscript/core/__init__.py +0 -0
- {pyscript_programming_language-1.12.13 → pyscript_programming_language-1.13.1}/pyscript/core/analyzer.py +0 -0
- {pyscript_programming_language-1.12.13 → pyscript_programming_language-1.13.1}/pyscript/core/bases.py +0 -0
- {pyscript_programming_language-1.12.13 → pyscript_programming_language-1.13.1}/pyscript/core/buffer.py +0 -0
- {pyscript_programming_language-1.12.13 → pyscript_programming_language-1.13.1}/pyscript/core/checks.py +0 -0
- {pyscript_programming_language-1.12.13 → pyscript_programming_language-1.13.1}/pyscript/core/context.py +0 -0
- {pyscript_programming_language-1.12.13 → pyscript_programming_language-1.13.1}/pyscript/core/editor/__init__.py +0 -0
- {pyscript_programming_language-1.12.13 → pyscript_programming_language-1.13.1}/pyscript/core/exceptions.py +0 -0
- {pyscript_programming_language-1.12.13 → pyscript_programming_language-1.13.1}/pyscript/core/handlers.py +0 -0
- {pyscript_programming_language-1.12.13 → pyscript_programming_language-1.13.1}/pyscript/core/nodes.py +0 -0
- {pyscript_programming_language-1.12.13 → pyscript_programming_language-1.13.1}/pyscript/core/results.py +0 -0
- {pyscript_programming_language-1.12.13 → pyscript_programming_language-1.13.1}/pyscript/core/utils/__init__.py +0 -0
- {pyscript_programming_language-1.12.13 → pyscript_programming_language-1.13.1}/pyscript/core/utils/ansi.py +0 -0
- {pyscript_programming_language-1.12.13 → pyscript_programming_language-1.13.1}/pyscript/core/utils/decorators.py +0 -0
- {pyscript_programming_language-1.12.13 → pyscript_programming_language-1.13.1}/pyscript/core/utils/module.py +0 -0
- {pyscript_programming_language-1.12.13 → pyscript_programming_language-1.13.1}/pyscript/core/utils/path.py +0 -0
- {pyscript_programming_language-1.12.13 → pyscript_programming_language-1.13.1}/pyscript/core/utils/similarity.py +0 -0
- {pyscript_programming_language-1.12.13 → pyscript_programming_language-1.13.1}/pyscript/lib/__hello__.pys +0 -0
- {pyscript_programming_language-1.12.13 → pyscript_programming_language-1.13.1}/pyscript/lib/ansi.pys +0 -0
- {pyscript_programming_language-1.12.13 → pyscript_programming_language-1.13.1}/pyscript/lib/ast/__init__.pys +0 -0
- {pyscript_programming_language-1.12.13 → pyscript_programming_language-1.13.1}/pyscript/lib/ast/ast_dump.py +0 -0
- {pyscript_programming_language-1.12.13 → pyscript_programming_language-1.13.1}/pyscript/lib/ast/ast_walk.py +0 -0
- {pyscript_programming_language-1.12.13 → pyscript_programming_language-1.13.1}/pyscript/lib/code.pys +0 -0
- {pyscript_programming_language-1.12.13 → pyscript_programming_language-1.13.1}/pyscript/lib/dis.pys +0 -0
- {pyscript_programming_language-1.12.13 → pyscript_programming_language-1.13.1}/pyscript/lib/explorer.pys +0 -0
- {pyscript_programming_language-1.12.13 → pyscript_programming_language-1.13.1}/pyscript/lib/fpstimer/__init__.pys +0 -0
- {pyscript_programming_language-1.12.13 → pyscript_programming_language-1.13.1}/pyscript/lib/fpstimer/py_fpstimer.py +0 -0
- {pyscript_programming_language-1.12.13 → pyscript_programming_language-1.13.1}/pyscript/lib/getch/__init__.pys +0 -0
- {pyscript_programming_language-1.12.13 → pyscript_programming_language-1.13.1}/pyscript/lib/getch/py_getch.py +0 -0
- {pyscript_programming_language-1.12.13 → pyscript_programming_language-1.13.1}/pyscript/lib/history.pys +0 -0
- {pyscript_programming_language-1.12.13 → pyscript_programming_language-1.13.1}/pyscript/lib/jsdict.pys +0 -0
- {pyscript_programming_language-1.12.13 → pyscript_programming_language-1.13.1}/pyscript/lib/keyword.pys +0 -0
- {pyscript_programming_language-1.12.13 → pyscript_programming_language-1.13.1}/pyscript/lib/opcode.pys +0 -0
- {pyscript_programming_language-1.12.13 → pyscript_programming_language-1.13.1}/pyscript/lib/symtable.pys +0 -0
- {pyscript_programming_language-1.12.13 → pyscript_programming_language-1.13.1}/pyscript/lib/token.pys +0 -0
- {pyscript_programming_language-1.12.13 → pyscript_programming_language-1.13.1}/pyscript/other/.nomedia +0 -0
- {pyscript_programming_language-1.12.13 → pyscript_programming_language-1.13.1}/pyscript/other/PyScript.ico +0 -0
- {pyscript_programming_language-1.12.13 → pyscript_programming_language-1.13.1}/pyscript/other/copyright +0 -0
- {pyscript_programming_language-1.12.13 → pyscript_programming_language-1.13.1}/pyscript/other/credits +0 -0
- {pyscript_programming_language-1.12.13 → pyscript_programming_language-1.13.1}/pyscript/other/license +0 -0
- {pyscript_programming_language-1.12.13 → pyscript_programming_language-1.13.1}/pyscript_programming_language.egg-info/SOURCES.txt +0 -0
- {pyscript_programming_language-1.12.13 → pyscript_programming_language-1.13.1}/pyscript_programming_language.egg-info/dependency_links.txt +0 -0
- {pyscript_programming_language-1.12.13 → pyscript_programming_language-1.13.1}/pyscript_programming_language.egg-info/requires.txt +0 -0
- {pyscript_programming_language-1.12.13 → pyscript_programming_language-1.13.1}/pyscript_programming_language.egg-info/top_level.txt +0 -0
- {pyscript_programming_language-1.12.13 → pyscript_programming_language-1.13.1}/setup.cfg +0 -0
|
@@ -0,0 +1,156 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: pyscript-programming-language
|
|
3
|
+
Version: 1.13.1
|
|
4
|
+
Summary: PyScript Programming Language
|
|
5
|
+
Home-page: https://azzammuhyala.github.io/pyscript
|
|
6
|
+
Author: Azzam Muhyala
|
|
7
|
+
Author-email: Azzam Muhyala <azzammuhyala@gmail.com>
|
|
8
|
+
License-Expression: MIT
|
|
9
|
+
Project-URL: Homepage, https://azzammuhyala.github.io/pyscript
|
|
10
|
+
Project-URL: Documentation, https://azzammuhyala.github.io/pyscript
|
|
11
|
+
Project-URL: Source, https://github.com/azzammuhyala/pyscript
|
|
12
|
+
Project-URL: Releases, https://github.com/azzammuhyala/pyscript/releases
|
|
13
|
+
Project-URL: Change Log, https://github.com/azzammuhyala/pyscript/blob/main/changelog.md
|
|
14
|
+
Project-URL: Bug Tracker, https://github.com/azzammuhyala/pyscript/issues
|
|
15
|
+
Project-URL: PyPi Stats, https://pepy.tech/projects/pyscript-programming-language
|
|
16
|
+
Keywords: pyscript,pyslang,pys,programming,language,programming language
|
|
17
|
+
Classifier: Programming Language :: Python
|
|
18
|
+
Classifier: Programming Language :: Python :: 3
|
|
19
|
+
Classifier: Intended Audience :: Developers
|
|
20
|
+
Classifier: Topic :: Software Development :: Libraries :: Python Modules
|
|
21
|
+
Classifier: Topic :: Software Development :: Interpreters
|
|
22
|
+
Classifier: Topic :: Software Development :: Compilers
|
|
23
|
+
Requires-Python: >=3.10
|
|
24
|
+
Description-Content-Type: text/markdown
|
|
25
|
+
Provides-Extra: other
|
|
26
|
+
Requires-Dist: beartype; extra == "other"
|
|
27
|
+
Requires-Dist: pygments; extra == "other"
|
|
28
|
+
Requires-Dist: prompt_toolkit; extra == "other"
|
|
29
|
+
Dynamic: author
|
|
30
|
+
Dynamic: home-page
|
|
31
|
+
Dynamic: requires-python
|
|
32
|
+
|
|
33
|
+
# PyScript
|
|
34
|
+
|
|
35
|
+
<div align="center">
|
|
36
|
+
<img src="https://github.com/azzammuhyala/pyscript/blob/main/PyScript.png?raw=true" alt="PyScript Logo" width="200">
|
|
37
|
+
<br>
|
|
38
|
+
<a href="https://pepy.tech/project/pyscript-programming-language">
|
|
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
|
+
</a>
|
|
41
|
+
<a href="https://en.wikipedia.org/wiki/MIT_License">
|
|
42
|
+
<img src="https://img.shields.io/badge/license-MIT-orange" alt="License MIT">
|
|
43
|
+
</a>
|
|
44
|
+
<a href="https://www.python.org/">
|
|
45
|
+
<img src="https://img.shields.io/badge/python-3.10+-yellow" alt="Python 3.10+">
|
|
46
|
+
</a>
|
|
47
|
+
</div>
|
|
48
|
+
|
|
49
|
+
PyScript is a programming language built on top of Python. It combines some syntax from Python and JavaScript, so if
|
|
50
|
+
you're already familiar with Python, JavaScript or both, it should be quite easy to learn.
|
|
51
|
+
|
|
52
|
+
## Introduction 📖
|
|
53
|
+
PyScript may not be the language we'll be discussing, but the name PyScript already exists, a flexible and platform for
|
|
54
|
+
running Python in a browser. Since it's inception, the language was inspired by Python and JavaScript, which are
|
|
55
|
+
relatively easy for humans to read. This name was chosen because it wasn't immediately known whether this name was
|
|
56
|
+
already in use.
|
|
57
|
+
|
|
58
|
+
This language wasn't designed to compete with other modern programming languages, but rather as a learning for
|
|
59
|
+
understanding how programming languages work and how human written code can be understood by machines. Furthermore, this
|
|
60
|
+
language was created as a relatively complex project. Using Python as the foundation for PyScript, it's easy to
|
|
61
|
+
understand how the language is built without having to understand complex instructions like those in C, C++, and other
|
|
62
|
+
low-level languages.
|
|
63
|
+
|
|
64
|
+
To learn more about PyScript, you can see on [PyScript documentation](https://azzammuhyala.github.io/pyscript) or
|
|
65
|
+
[PyScript repository](https://github.com/azzammuhyala/pyscript) for full source code.
|
|
66
|
+
|
|
67
|
+
## Try PyScript ▶️
|
|
68
|
+
Try [PyScript Shell (_REPL_)](https://azzammuhyala.github.io/pyscript/shell.html) inside your browser directly
|
|
69
|
+
(no installation required).
|
|
70
|
+
|
|
71
|
+
## Installation ⬇️
|
|
72
|
+
First, you'll need to download Python. Make sure you're using the latest version above `3.10`, to ensure the code runs
|
|
73
|
+
correctly. Visit the official [Python website](https://python.org) to download it.
|
|
74
|
+
|
|
75
|
+
Next, after downloading and configuring the Python application, you can download the PyScript from
|
|
76
|
+
[PyScript releases](https://github.com/azzammuhyala/pyscript/releases) or from PIP with this command (_Recommended_):
|
|
77
|
+
```sh
|
|
78
|
+
pip install -U pyscript-programming-language
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
[_OPTIONAL_] You can download additional libraries that PyScript requires with this command:
|
|
82
|
+
```sh
|
|
83
|
+
pip install -U pyscript-programming-language[other]
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
And also, you can download PyScript with `git`:
|
|
87
|
+
```sh
|
|
88
|
+
git clone https://github.com/azzammuhyala/pyscript
|
|
89
|
+
cd pyscript
|
|
90
|
+
pip install .
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
After that, you can run the PyScript shell (_REPL_) with this command:
|
|
94
|
+
```sh
|
|
95
|
+
python -m pyscript
|
|
96
|
+
```
|
|
97
|
+
If successful, you can see the version, release date, and a `>>>` like Python shell (_REPL_).
|
|
98
|
+
|
|
99
|
+
## Example 📜
|
|
100
|
+
Familiar? There it is!
|
|
101
|
+
<pre><span style="color:#549952"># get a number and operator with input()</span><span style="color:#D4D4D4"><br></span><span style="color:#8CDCFE">a</span><span style="color:#D4D4D4"> = </span><span style="color:#4EC9B0">float</span><span style="color:#FFD705">(</span><span style="color:#DCDCAA">input</span><span style="color:#D45DBA">(</span><span style="color:#CE9178">"Enter a first number : "</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">"Enter a second number: "</span><span style="color:#D45DBA">)</span><span style="color:#FFD705">)</span><span style="color:#D4D4D4"><br></span><span style="color:#8CDCFE">operation</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><span style="color:#D4D4D4"><br><br></span><span style="color:#549952"># define a functions</span><span style="color:#D4D4D4"><br></span><span style="color:#307CD6">func</span><span style="color:#D4D4D4"> </span><span style="color:#DCDCAA">add</span><span style="color:#FFD705">(</span><span style="color:#8CDCFE">a</span><span style="color:#D4D4D4">, </span><span style="color:#8CDCFE">b</span><span style="color:#FFD705">)</span><span style="color:#D4D4D4"> </span><span style="color:#FFD705">{</span><span style="color:#D4D4D4"><br></span><span style="color:#D4D4D4"> </span><span style="color:#C586C0">return</span><span style="color:#D4D4D4"> </span><span style="color:#8CDCFE">a</span><span style="color:#D4D4D4"> + </span><span style="color:#8CDCFE">b</span><span style="color:#D4D4D4"><br></span><span style="color:#FFD705">}</span><span style="color:#D4D4D4"><br><br></span><span style="color:#307CD6">func</span><span style="color:#D4D4D4"> </span><span style="color:#DCDCAA">sub</span><span style="color:#FFD705">(</span><span style="color:#8CDCFE">a</span><span style="color:#D4D4D4">, </span><span style="color:#8CDCFE">b</span><span style="color:#FFD705">)</span><span style="color:#D4D4D4"> </span><span style="color:#FFD705">{</span><span style="color:#D4D4D4"><br></span><span style="color:#D4D4D4"> </span><span style="color:#C586C0">return</span><span style="color:#D4D4D4"> </span><span style="color:#8CDCFE">a</span><span style="color:#D4D4D4"> - </span><span style="color:#8CDCFE">b</span><span style="color:#D4D4D4"><br></span><span style="color:#FFD705">}</span><span style="color:#D4D4D4"><br><br></span><span style="color:#307CD6">func</span><span style="color:#D4D4D4"> </span><span style="color:#DCDCAA">mul</span><span style="color:#FFD705">(</span><span style="color:#8CDCFE">a</span><span style="color:#D4D4D4">, </span><span style="color:#8CDCFE">b</span><span style="color:#FFD705">)</span><span style="color:#D4D4D4"> </span><span style="color:#FFD705">{</span><span style="color:#D4D4D4"><br></span><span style="color:#D4D4D4"> </span><span style="color:#C586C0">return</span><span style="color:#D4D4D4"> </span><span style="color:#8CDCFE">a</span><span style="color:#D4D4D4"> * </span><span style="color:#8CDCFE">b</span><span style="color:#D4D4D4"><br></span><span style="color:#FFD705">}</span><span style="color:#D4D4D4"><br><br></span><span style="color:#307CD6">func</span><span style="color:#D4D4D4"> </span><span style="color:#DCDCAA">floordiv</span><span style="color:#FFD705">(</span><span style="color:#8CDCFE">a</span><span style="color:#D4D4D4">, </span><span style="color:#8CDCFE">b</span><span style="color:#FFD705">)</span><span style="color:#D4D4D4"> </span><span style="color:#FFD705">{</span><span style="color:#D4D4D4"><br></span><span style="color:#D4D4D4"> </span><span style="color:#549952"># check b is zero</span><span style="color:#D4D4D4"><br></span><span style="color:#D4D4D4"> </span><span style="color:#C586C0">return</span><span style="color:#D4D4D4"> </span><span style="color:#8CDCFE">b</span><span style="color:#D4D4D4"> != </span><span style="color:#B5CEA8">0</span><span style="color:#D4D4D4"> ? </span><span style="color:#8CDCFE">a</span><span style="color:#D4D4D4"> / </span><span style="color:#8CDCFE">b</span><span style="color:#D4D4D4"> : </span><span style="color:#307CD6">none</span><span style="color:#D4D4D4"><br></span><span style="color:#FFD705">}</span><span style="color:#D4D4D4"><br><br></span><span style="color:#549952"># operation matching</span><span style="color:#D4D4D4"><br></span><span style="color:#C586C0">switch</span><span style="color:#D4D4D4"> </span><span style="color:#FFD705">(</span><span style="color:#8CDCFE">operation</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">'+'</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">"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><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">'-'</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">"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><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">'*'</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">"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><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">'/'</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">"Result of {:,} / {:,} = {}"</span><span style="color:#D4D4D4">.</span><span style="color:#DCDCAA">format</span><span style="color:#1A9FFF">(</span><span style="color:#D4D4D4"><br></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:#D4D4D4"><br></span><span style="color:#D4D4D4"> </span><span style="color:#8CDCFE">result</span><span style="color:#D4D4D4"> </span><span style="color:#307CD6">is</span><span style="color:#D4D4D4"> </span><span style="color:#307CD6">not</span><span style="color:#D4D4D4"> </span><span style="color:#307CD6">none</span><span style="color:#D4D4D4"> ? </span><span style="color:#DCDCAA">format</span><span style="color:#FFD705">(</span><span style="color:#8CDCFE">result</span><span style="color:#D4D4D4">, </span><span style="color:#CE9178">','</span><span style="color:#FFD705">)</span><span style="color:#D4D4D4"> : </span><span style="color:#CE9178">"Cannot be divided by 0"</span><span style="color:#1A9FFF">)</span><span style="color:#D4D4D4"><br></span><span style="color:#D4D4D4"> </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">"Unknown operation"</span><span style="color:#D45DBA">)</span><span style="color:#D4D4D4"><br></span><span style="color:#FFD705">}</span></pre>
|
|
102
|
+
|
|
103
|
+
## Library Requirements 📓
|
|
104
|
+
| No | Name | Status |
|
|
105
|
+
|:--:|:------------------|:----------------------:|
|
|
106
|
+
| 1 | `argparse` | **required** |
|
|
107
|
+
| 2 | `builtins` | **required** |
|
|
108
|
+
| 3 | `collections.abc` | **required** |
|
|
109
|
+
| 4 | `functools` | **required** |
|
|
110
|
+
| 5 | `html` | **required** |
|
|
111
|
+
| 6 | `importlib` | **required** |
|
|
112
|
+
| 7 | `inspect` | **required** |
|
|
113
|
+
| 8 | `io` | **required** |
|
|
114
|
+
| 9 | `itertools` | **required** |
|
|
115
|
+
| 10 | `json` | **required** |
|
|
116
|
+
| 11 | `math` | **required** |
|
|
117
|
+
| 12 | `operator` | **required** |
|
|
118
|
+
| 13 | `os` | **required** |
|
|
119
|
+
| 14 | `re` | **required** |
|
|
120
|
+
| 15 | `subprocess` | **required** |
|
|
121
|
+
| 16 | `sys` | **required** |
|
|
122
|
+
| 17 | `threading` | **required** |
|
|
123
|
+
| 18 | `types` | **required** |
|
|
124
|
+
| 19 | `typing` | **required** |
|
|
125
|
+
| 20 | `unicodedata` | **required** |
|
|
126
|
+
| 1 | `ast` | **required (library)** |
|
|
127
|
+
| 2 | `msvcrt` | **required (library)** |
|
|
128
|
+
| 3 | `pprint` | **required (library)** |
|
|
129
|
+
| 4 | `shutil` | **required (library)** |
|
|
130
|
+
| 5 | `stat` | **required (library)** |
|
|
131
|
+
| 6 | `termios` | **required (library)** |
|
|
132
|
+
| 7 | `time` | **required (library)** |
|
|
133
|
+
| 8 | `tty` | **required (library)** |
|
|
134
|
+
| 1 | `beartype` | **optional** |
|
|
135
|
+
| 2 | `prompt_toolkit` | **optional** |
|
|
136
|
+
| 3 | `pygments` | **optional** |
|
|
137
|
+
| 4 | `readline` | **optional** |
|
|
138
|
+
| 5 | `tkinter` | **optional** |
|
|
139
|
+
| 6 | `IPython` | **optional** |
|
|
140
|
+
|
|
141
|
+
### Status Explanation
|
|
142
|
+
- **required**: Required by PyScript entirely.
|
|
143
|
+
- **required (library)**: Required PyScript library (located in `pyscript/lib`). PyScript is not affected unless you
|
|
144
|
+
import it.
|
|
145
|
+
- **optional**: Not required, but if it is present, some features can be used without issue.
|
|
146
|
+
|
|
147
|
+
## Highlights 🎨
|
|
148
|
+
- [PyScript plugin for Acode (Ace Editor)](https://github.com/azzammuhyala/pyscript/releases/download/v1.13.1/plugin.zip)
|
|
149
|
+
- [PyScript nano for Linux](https://github.com/azzammuhyala/pyscript/tree/main/highlight/nano)
|
|
150
|
+
- [PyScript extension for VSCode](https://marketplace.visualstudio.com/items?itemName=azzammuhyala.pyslang)
|
|
151
|
+
|
|
152
|
+
## Behind It 🕰️
|
|
153
|
+
This language created from based up on a
|
|
154
|
+
[YouTube tutorial](https://www.youtube.com/playlist?list=PLZQftyCk7_SdoVexSmwy_tBgs7P0b97yD) (check more on GitHub
|
|
155
|
+
[here](https://github.com/davidcallanan/py-myopl-code) by **@davidcallanan**). At least, it takes about 6 months to
|
|
156
|
+
learn it, and also need to learn general things that exist in other programming languages.
|
|
@@ -0,0 +1,124 @@
|
|
|
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
|
+
<br>
|
|
6
|
+
<a href="https://pepy.tech/project/pyscript-programming-language">
|
|
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
|
+
</a>
|
|
9
|
+
<a href="https://en.wikipedia.org/wiki/MIT_License">
|
|
10
|
+
<img src="https://img.shields.io/badge/license-MIT-orange" alt="License MIT">
|
|
11
|
+
</a>
|
|
12
|
+
<a href="https://www.python.org/">
|
|
13
|
+
<img src="https://img.shields.io/badge/python-3.10+-yellow" alt="Python 3.10+">
|
|
14
|
+
</a>
|
|
15
|
+
</div>
|
|
16
|
+
|
|
17
|
+
PyScript is a programming language built on top of Python. It combines some syntax from Python and JavaScript, so if
|
|
18
|
+
you're already familiar with Python, JavaScript or both, it should be quite easy to learn.
|
|
19
|
+
|
|
20
|
+
## Introduction 📖
|
|
21
|
+
PyScript may not be the language we'll be discussing, but the name PyScript already exists, a flexible and platform for
|
|
22
|
+
running Python in a browser. Since it's inception, the language was inspired by Python and JavaScript, which are
|
|
23
|
+
relatively easy for humans to read. This name was chosen because it wasn't immediately known whether this name was
|
|
24
|
+
already in use.
|
|
25
|
+
|
|
26
|
+
This language wasn't designed to compete with other modern programming languages, but rather as a learning for
|
|
27
|
+
understanding how programming languages work and how human written code can be understood by machines. Furthermore, this
|
|
28
|
+
language was created as a relatively complex project. Using Python as the foundation for PyScript, it's easy to
|
|
29
|
+
understand how the language is built without having to understand complex instructions like those in C, C++, and other
|
|
30
|
+
low-level languages.
|
|
31
|
+
|
|
32
|
+
To learn more about PyScript, you can see on [PyScript documentation](https://azzammuhyala.github.io/pyscript) or
|
|
33
|
+
[PyScript repository](https://github.com/azzammuhyala/pyscript) for full source code.
|
|
34
|
+
|
|
35
|
+
## Try PyScript ▶️
|
|
36
|
+
Try [PyScript Shell (_REPL_)](https://azzammuhyala.github.io/pyscript/shell.html) inside your browser directly
|
|
37
|
+
(no installation required).
|
|
38
|
+
|
|
39
|
+
## Installation ⬇️
|
|
40
|
+
First, you'll need to download Python. Make sure you're using the latest version above `3.10`, to ensure the code runs
|
|
41
|
+
correctly. Visit the official [Python website](https://python.org) to download it.
|
|
42
|
+
|
|
43
|
+
Next, after downloading and configuring the Python application, you can download the PyScript from
|
|
44
|
+
[PyScript releases](https://github.com/azzammuhyala/pyscript/releases) or from PIP with this command (_Recommended_):
|
|
45
|
+
```sh
|
|
46
|
+
pip install -U pyscript-programming-language
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
[_OPTIONAL_] You can download additional libraries that PyScript requires with this command:
|
|
50
|
+
```sh
|
|
51
|
+
pip install -U pyscript-programming-language[other]
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
And also, you can download PyScript with `git`:
|
|
55
|
+
```sh
|
|
56
|
+
git clone https://github.com/azzammuhyala/pyscript
|
|
57
|
+
cd pyscript
|
|
58
|
+
pip install .
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
After that, you can run the PyScript shell (_REPL_) with this command:
|
|
62
|
+
```sh
|
|
63
|
+
python -m pyscript
|
|
64
|
+
```
|
|
65
|
+
If successful, you can see the version, release date, and a `>>>` like Python shell (_REPL_).
|
|
66
|
+
|
|
67
|
+
## Example 📜
|
|
68
|
+
Familiar? There it is!
|
|
69
|
+
<pre><span style="color:#549952"># get a number and operator with input()</span><span style="color:#D4D4D4"><br></span><span style="color:#8CDCFE">a</span><span style="color:#D4D4D4"> = </span><span style="color:#4EC9B0">float</span><span style="color:#FFD705">(</span><span style="color:#DCDCAA">input</span><span style="color:#D45DBA">(</span><span style="color:#CE9178">"Enter a first number : "</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">"Enter a second number: "</span><span style="color:#D45DBA">)</span><span style="color:#FFD705">)</span><span style="color:#D4D4D4"><br></span><span style="color:#8CDCFE">operation</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><span style="color:#D4D4D4"><br><br></span><span style="color:#549952"># define a functions</span><span style="color:#D4D4D4"><br></span><span style="color:#307CD6">func</span><span style="color:#D4D4D4"> </span><span style="color:#DCDCAA">add</span><span style="color:#FFD705">(</span><span style="color:#8CDCFE">a</span><span style="color:#D4D4D4">, </span><span style="color:#8CDCFE">b</span><span style="color:#FFD705">)</span><span style="color:#D4D4D4"> </span><span style="color:#FFD705">{</span><span style="color:#D4D4D4"><br></span><span style="color:#D4D4D4"> </span><span style="color:#C586C0">return</span><span style="color:#D4D4D4"> </span><span style="color:#8CDCFE">a</span><span style="color:#D4D4D4"> + </span><span style="color:#8CDCFE">b</span><span style="color:#D4D4D4"><br></span><span style="color:#FFD705">}</span><span style="color:#D4D4D4"><br><br></span><span style="color:#307CD6">func</span><span style="color:#D4D4D4"> </span><span style="color:#DCDCAA">sub</span><span style="color:#FFD705">(</span><span style="color:#8CDCFE">a</span><span style="color:#D4D4D4">, </span><span style="color:#8CDCFE">b</span><span style="color:#FFD705">)</span><span style="color:#D4D4D4"> </span><span style="color:#FFD705">{</span><span style="color:#D4D4D4"><br></span><span style="color:#D4D4D4"> </span><span style="color:#C586C0">return</span><span style="color:#D4D4D4"> </span><span style="color:#8CDCFE">a</span><span style="color:#D4D4D4"> - </span><span style="color:#8CDCFE">b</span><span style="color:#D4D4D4"><br></span><span style="color:#FFD705">}</span><span style="color:#D4D4D4"><br><br></span><span style="color:#307CD6">func</span><span style="color:#D4D4D4"> </span><span style="color:#DCDCAA">mul</span><span style="color:#FFD705">(</span><span style="color:#8CDCFE">a</span><span style="color:#D4D4D4">, </span><span style="color:#8CDCFE">b</span><span style="color:#FFD705">)</span><span style="color:#D4D4D4"> </span><span style="color:#FFD705">{</span><span style="color:#D4D4D4"><br></span><span style="color:#D4D4D4"> </span><span style="color:#C586C0">return</span><span style="color:#D4D4D4"> </span><span style="color:#8CDCFE">a</span><span style="color:#D4D4D4"> * </span><span style="color:#8CDCFE">b</span><span style="color:#D4D4D4"><br></span><span style="color:#FFD705">}</span><span style="color:#D4D4D4"><br><br></span><span style="color:#307CD6">func</span><span style="color:#D4D4D4"> </span><span style="color:#DCDCAA">floordiv</span><span style="color:#FFD705">(</span><span style="color:#8CDCFE">a</span><span style="color:#D4D4D4">, </span><span style="color:#8CDCFE">b</span><span style="color:#FFD705">)</span><span style="color:#D4D4D4"> </span><span style="color:#FFD705">{</span><span style="color:#D4D4D4"><br></span><span style="color:#D4D4D4"> </span><span style="color:#549952"># check b is zero</span><span style="color:#D4D4D4"><br></span><span style="color:#D4D4D4"> </span><span style="color:#C586C0">return</span><span style="color:#D4D4D4"> </span><span style="color:#8CDCFE">b</span><span style="color:#D4D4D4"> != </span><span style="color:#B5CEA8">0</span><span style="color:#D4D4D4"> ? </span><span style="color:#8CDCFE">a</span><span style="color:#D4D4D4"> / </span><span style="color:#8CDCFE">b</span><span style="color:#D4D4D4"> : </span><span style="color:#307CD6">none</span><span style="color:#D4D4D4"><br></span><span style="color:#FFD705">}</span><span style="color:#D4D4D4"><br><br></span><span style="color:#549952"># operation matching</span><span style="color:#D4D4D4"><br></span><span style="color:#C586C0">switch</span><span style="color:#D4D4D4"> </span><span style="color:#FFD705">(</span><span style="color:#8CDCFE">operation</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">'+'</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">"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><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">'-'</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">"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><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">'*'</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">"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><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">'/'</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">"Result of {:,} / {:,} = {}"</span><span style="color:#D4D4D4">.</span><span style="color:#DCDCAA">format</span><span style="color:#1A9FFF">(</span><span style="color:#D4D4D4"><br></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:#D4D4D4"><br></span><span style="color:#D4D4D4"> </span><span style="color:#8CDCFE">result</span><span style="color:#D4D4D4"> </span><span style="color:#307CD6">is</span><span style="color:#D4D4D4"> </span><span style="color:#307CD6">not</span><span style="color:#D4D4D4"> </span><span style="color:#307CD6">none</span><span style="color:#D4D4D4"> ? </span><span style="color:#DCDCAA">format</span><span style="color:#FFD705">(</span><span style="color:#8CDCFE">result</span><span style="color:#D4D4D4">, </span><span style="color:#CE9178">','</span><span style="color:#FFD705">)</span><span style="color:#D4D4D4"> : </span><span style="color:#CE9178">"Cannot be divided by 0"</span><span style="color:#1A9FFF">)</span><span style="color:#D4D4D4"><br></span><span style="color:#D4D4D4"> </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">"Unknown operation"</span><span style="color:#D45DBA">)</span><span style="color:#D4D4D4"><br></span><span style="color:#FFD705">}</span></pre>
|
|
70
|
+
|
|
71
|
+
## Library Requirements 📓
|
|
72
|
+
| No | Name | Status |
|
|
73
|
+
|:--:|:------------------|:----------------------:|
|
|
74
|
+
| 1 | `argparse` | **required** |
|
|
75
|
+
| 2 | `builtins` | **required** |
|
|
76
|
+
| 3 | `collections.abc` | **required** |
|
|
77
|
+
| 4 | `functools` | **required** |
|
|
78
|
+
| 5 | `html` | **required** |
|
|
79
|
+
| 6 | `importlib` | **required** |
|
|
80
|
+
| 7 | `inspect` | **required** |
|
|
81
|
+
| 8 | `io` | **required** |
|
|
82
|
+
| 9 | `itertools` | **required** |
|
|
83
|
+
| 10 | `json` | **required** |
|
|
84
|
+
| 11 | `math` | **required** |
|
|
85
|
+
| 12 | `operator` | **required** |
|
|
86
|
+
| 13 | `os` | **required** |
|
|
87
|
+
| 14 | `re` | **required** |
|
|
88
|
+
| 15 | `subprocess` | **required** |
|
|
89
|
+
| 16 | `sys` | **required** |
|
|
90
|
+
| 17 | `threading` | **required** |
|
|
91
|
+
| 18 | `types` | **required** |
|
|
92
|
+
| 19 | `typing` | **required** |
|
|
93
|
+
| 20 | `unicodedata` | **required** |
|
|
94
|
+
| 1 | `ast` | **required (library)** |
|
|
95
|
+
| 2 | `msvcrt` | **required (library)** |
|
|
96
|
+
| 3 | `pprint` | **required (library)** |
|
|
97
|
+
| 4 | `shutil` | **required (library)** |
|
|
98
|
+
| 5 | `stat` | **required (library)** |
|
|
99
|
+
| 6 | `termios` | **required (library)** |
|
|
100
|
+
| 7 | `time` | **required (library)** |
|
|
101
|
+
| 8 | `tty` | **required (library)** |
|
|
102
|
+
| 1 | `beartype` | **optional** |
|
|
103
|
+
| 2 | `prompt_toolkit` | **optional** |
|
|
104
|
+
| 3 | `pygments` | **optional** |
|
|
105
|
+
| 4 | `readline` | **optional** |
|
|
106
|
+
| 5 | `tkinter` | **optional** |
|
|
107
|
+
| 6 | `IPython` | **optional** |
|
|
108
|
+
|
|
109
|
+
### Status Explanation
|
|
110
|
+
- **required**: Required by PyScript entirely.
|
|
111
|
+
- **required (library)**: Required PyScript library (located in `pyscript/lib`). PyScript is not affected unless you
|
|
112
|
+
import it.
|
|
113
|
+
- **optional**: Not required, but if it is present, some features can be used without issue.
|
|
114
|
+
|
|
115
|
+
## Highlights 🎨
|
|
116
|
+
- [PyScript plugin for Acode (Ace Editor)](https://github.com/azzammuhyala/pyscript/releases/download/v1.13.1/plugin.zip)
|
|
117
|
+
- [PyScript nano for Linux](https://github.com/azzammuhyala/pyscript/tree/main/highlight/nano)
|
|
118
|
+
- [PyScript extension for VSCode](https://marketplace.visualstudio.com/items?itemName=azzammuhyala.pyslang)
|
|
119
|
+
|
|
120
|
+
## Behind It 🕰️
|
|
121
|
+
This language created from based up on a
|
|
122
|
+
[YouTube tutorial](https://www.youtube.com/playlist?list=PLZQftyCk7_SdoVexSmwy_tBgs7P0b97yD) (check more on GitHub
|
|
123
|
+
[here](https://github.com/davidcallanan/py-myopl-code) by **@davidcallanan**). At least, it takes about 6 months to
|
|
124
|
+
learn it, and also need to learn general things that exist in other programming languages.
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
# Change Logs
|
|
2
|
+
|
|
3
|
+
## [1.13.1] - 16/05/2026
|
|
4
|
+
|
|
5
|
+
### Added
|
|
6
|
+
- `__builtins__` is available in the module namespace.
|
|
7
|
+
- The editor can save multiple configurations.
|
|
8
|
+
|
|
9
|
+
### Fixed
|
|
10
|
+
- Changed the order of `instanceof` operation.
|
|
11
|
+
- Fixed some bugs.
|
|
12
|
+
- _etc._
|
{pyscript_programming_language-1.12.13 → pyscript_programming_language-1.13.1}/pyproject.toml
RENAMED
|
@@ -4,14 +4,14 @@ build-backend = "setuptools.build_meta"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "pyscript-programming-language"
|
|
7
|
-
version = "1.
|
|
7
|
+
version = "1.13.1"
|
|
8
8
|
description = "PyScript Programming Language"
|
|
9
9
|
readme = { file = "README.md", content-type = "text/markdown" }
|
|
10
10
|
requires-python = ">=3.10"
|
|
11
11
|
license = "MIT"
|
|
12
12
|
|
|
13
13
|
authors = [
|
|
14
|
-
{ name = "
|
|
14
|
+
{ name = "Azzam Muhyala", email = "azzammuhyala@gmail.com" }
|
|
15
15
|
]
|
|
16
16
|
|
|
17
17
|
keywords = [
|
{pyscript_programming_language-1.12.13 → pyscript_programming_language-1.13.1}/pyscript/__main__.py
RENAMED
|
@@ -255,8 +255,8 @@ def clean_up() -> None:
|
|
|
255
255
|
g = globals()
|
|
256
256
|
|
|
257
257
|
for name in {
|
|
258
|
-
'ArgumentParser', 'BBCodeFormatter', 'CLASSIC_LINE_SHELL', 'DEBUG', 'DEFAULT', '
|
|
259
|
-
'
|
|
258
|
+
'ArgumentParser', 'BBCodeFormatter', 'CLASSIC_LINE_SHELL', 'DEBUG', 'DEFAULT', 'EDITOR_MAP',
|
|
259
|
+
'ENV_PYSCRIPT_CLASSIC_LINE_SHELL', 'ENV_PYSCRIPT_NO_COLOR_PROMPT', 'FORMATER_HIGHLIGHT_MAP',
|
|
260
260
|
'FORMATER_PYGMENTS_MAP', 'GUI_SUPPORT', 'HLFMT_ANSI', 'HLFMT_BBCODE', 'HLFMT_HTML', 'HtmlFormatter',
|
|
261
261
|
'LatexFormatter', 'NOTEBOOK', 'NO_COLOR', 'NO_COLOR_PROMPT', 'OPTIONAL', 'PYGMENTS', 'PygmentsPyScriptLexer',
|
|
262
262
|
'PygmentsPyScriptStyle', 'PysFileBuffer', 'PysGUIEditor', 'PysTerminalEditor', 'REMAINDER', 'TERMINAL_SUPPORT',
|
|
@@ -295,7 +295,6 @@ def load_file(path) -> PysFileBuffer:
|
|
|
295
295
|
def execute(file: PysFileBuffer) -> None:
|
|
296
296
|
global code
|
|
297
297
|
|
|
298
|
-
not_show_banner_flag = DONT_SHOW_BANNER_ON_SHELL
|
|
299
298
|
inspect = args.inspect
|
|
300
299
|
symtab = _namespace_to_symbol_table(undefined, file)
|
|
301
300
|
|
|
@@ -319,7 +318,7 @@ def execute(file: PysFileBuffer) -> None:
|
|
|
319
318
|
else:
|
|
320
319
|
code = pys_shell(
|
|
321
320
|
globals=result.context.symbol_table,
|
|
322
|
-
flags=result.context.flags |
|
|
321
|
+
flags=result.context.flags | DONT_SHOW_BANNER_ON_SHELL,
|
|
323
322
|
parser_flags=result.parser_flags
|
|
324
323
|
)
|
|
325
324
|
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
from .bases import Pys
|
|
2
|
-
from .constants import PYSCRIPT_PATH, CORE_PATH, LIBRARIES_PATH, SITE_PACKAGES_PATH, DEFAULT
|
|
2
|
+
from .constants import PYSCRIPT_PATH, CORE_PATH, LIBRARIES_PATH, SITE_PACKAGES_PATH, CONFIGURATIONS_PATH, DEFAULT
|
|
3
3
|
from .utils.debug import print_display, print_traceback, clear_shell
|
|
4
4
|
from .utils.decorators import inheritable, singleton
|
|
5
5
|
from .utils.path import base
|
|
@@ -31,6 +31,7 @@ pys_sys.pyscript_path = PYSCRIPT_PATH
|
|
|
31
31
|
pys_sys.core_path = CORE_PATH
|
|
32
32
|
pys_sys.libraries_path = LIBRARIES_PATH
|
|
33
33
|
pys_sys.site_packages_path = SITE_PACKAGES_PATH
|
|
34
|
+
pys_sys.configurations_path = CONFIGURATIONS_PATH
|
|
34
35
|
pys_sys.executable = f'{base(sys.executable)} -m pyscript'
|
|
35
36
|
pys_sys.ps1 = '>>> '
|
|
36
37
|
pys_sys.ps2 = '... '
|
|
@@ -45,6 +46,7 @@ for name in (
|
|
|
45
46
|
if hasattr(sys, name):
|
|
46
47
|
setattr(pys_sys, name, getattr(sys, name))
|
|
47
48
|
|
|
49
|
+
# sentinel
|
|
48
50
|
@singleton
|
|
49
51
|
@inheritable
|
|
50
52
|
class PysUndefined(Pys):
|
|
@@ -7,7 +7,7 @@ OTHER_PATH = os.path.join(PYSCRIPT_PATH, 'other')
|
|
|
7
7
|
SITE_PACKAGES_PATH = os.path.join(PYSCRIPT_PATH, 'site-packages')
|
|
8
8
|
ICON_PATH = os.path.join(OTHER_PATH, 'PyScript.ico')
|
|
9
9
|
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_NO_GIL = 'PYSCRIPT_NO_GIL'
|
|
@@ -22,13 +22,14 @@ ENV_PYSCRIPT_MAXIMUM_HISTORY_LINE = 'PYSCRIPT_MAXIMUM_HISTORY_LINE'
|
|
|
22
22
|
KEYWORDS = (
|
|
23
23
|
'__debug__', 'False', 'None', 'True', 'and', 'as', 'assert', 'break', 'case', 'catch', 'class', 'constructor',
|
|
24
24
|
'continue', 'default', 'del', 'delete', 'do', 'elif', 'else', 'elseif', 'except', 'extends', 'false', 'finally',
|
|
25
|
-
'for', 'from', 'func', 'function', 'global', 'if', 'import', 'in', 'is', 'match', 'nil', 'none',
|
|
26
|
-
'true', 'typeof', 'of', 'or', 'raise', 'repeat', 'return', 'switch', 'throw', 'try', 'until',
|
|
25
|
+
'for', 'from', 'func', 'function', 'global', 'if', 'import', 'in', 'instanceof', 'is', 'match', 'nil', 'none',
|
|
26
|
+
'null', 'not', 'true', 'typeof', 'of', 'or', 'raise', 'repeat', 'return', 'switch', 'throw', 'try', 'until',
|
|
27
|
+
'while', 'with'
|
|
27
28
|
)
|
|
28
29
|
|
|
29
30
|
CONSTANT_KEYWORDS = (
|
|
30
31
|
'__debug__', 'False', 'None', 'True', 'and', 'class', 'constructor', 'extends', 'func', 'function', 'false',
|
|
31
|
-
'global', 'in', 'is', 'not', 'nil', 'none', 'null', 'of', 'or', 'true', 'typeof'
|
|
32
|
+
'global', 'in', 'instanceof', 'is', 'not', 'nil', 'none', 'null', 'of', 'or', 'true', 'typeof'
|
|
32
33
|
)
|
|
33
34
|
|
|
34
35
|
DEFAULT = 0
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
from ..bases import Pys
|
|
2
|
+
from ..buffer import PysFileBuffer
|
|
3
|
+
from ..constants import CONFIGURATIONS_PATH
|
|
4
|
+
from ..utils.decorators import typecheck, inheritable
|
|
5
|
+
from ..utils.generic import setimuattr
|
|
6
|
+
from ..utils.string import normstr
|
|
7
|
+
|
|
8
|
+
from json import dump, load
|
|
9
|
+
from typing import Any
|
|
10
|
+
|
|
11
|
+
import os
|
|
12
|
+
|
|
13
|
+
class PysEditor(Pys):
|
|
14
|
+
|
|
15
|
+
@typecheck
|
|
16
|
+
def __init__(self, file: PysFileBuffer, colored: bool = True) -> None:
|
|
17
|
+
self.file = file
|
|
18
|
+
self.colored = bool(colored)
|
|
19
|
+
self.basename = os.path.basename(self.file.name)
|
|
20
|
+
self.used = False
|
|
21
|
+
self.modified = False
|
|
22
|
+
|
|
23
|
+
def __init_subclass__(cls, **kwargs) -> None:
|
|
24
|
+
super().__init_subclass__(**kwargs)
|
|
25
|
+
inheritable(cls)
|
|
26
|
+
|
|
27
|
+
def load_configuration(self) -> None:
|
|
28
|
+
try:
|
|
29
|
+
with open(CONFIGURATIONS_PATH, 'r', encoding='utf-8') as file:
|
|
30
|
+
result = load(file)
|
|
31
|
+
if not isinstance(result, dict):
|
|
32
|
+
raise ValueError
|
|
33
|
+
for key in result:
|
|
34
|
+
if not isinstance(key, str):
|
|
35
|
+
raise ValueError
|
|
36
|
+
self.configurations = result
|
|
37
|
+
except:
|
|
38
|
+
self.configurations = {}
|
|
39
|
+
|
|
40
|
+
def get_configuration(self, configuration: str, default: Any) -> Any:
|
|
41
|
+
if configuration in self.configurations:
|
|
42
|
+
return self.configurations[configuration]
|
|
43
|
+
self.configurations[configuration] = default
|
|
44
|
+
return default
|
|
45
|
+
|
|
46
|
+
def set_configuration(self, configuration: str, value: Any) -> None:
|
|
47
|
+
self.configurations[configuration] = value
|
|
48
|
+
|
|
49
|
+
def save_configuration(self) -> None:
|
|
50
|
+
try:
|
|
51
|
+
with open(CONFIGURATIONS_PATH, 'w', encoding='utf-8') as file:
|
|
52
|
+
dump(self.configurations, file, separators=(',', ':'))
|
|
53
|
+
except:
|
|
54
|
+
pass
|
|
55
|
+
|
|
56
|
+
def save(self, text) -> None:
|
|
57
|
+
try:
|
|
58
|
+
text = normstr(text)
|
|
59
|
+
with open(self.file.name, 'w', encoding='utf-8') as file:
|
|
60
|
+
file.write(text)
|
|
61
|
+
setimuattr(self.file, 'text', text)
|
|
62
|
+
except:
|
|
63
|
+
pass
|
|
64
|
+
else:
|
|
65
|
+
self.modified = False
|
|
66
|
+
|
|
67
|
+
def run(self) -> None:
|
|
68
|
+
if self.used:
|
|
69
|
+
raise RuntimeError("one application object can only be used once")
|
|
70
|
+
self.used = True
|