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