pyscript-programming-language 1.12.6__tar.gz → 1.12.7__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.12.6 → pyscript_programming_language-1.12.7}/PKG-INFO +18 -16
- {pyscript_programming_language-1.12.6 → pyscript_programming_language-1.12.7}/README.md +17 -15
- pyscript_programming_language-1.12.7/changelog.md +12 -0
- {pyscript_programming_language-1.12.6 → pyscript_programming_language-1.12.7}/pyproject.toml +1 -1
- {pyscript_programming_language-1.12.6 → pyscript_programming_language-1.12.7}/pyscript/__main__.py +2 -2
- {pyscript_programming_language-1.12.6 → pyscript_programming_language-1.12.7}/pyscript/core/constants.py +10 -7
- {pyscript_programming_language-1.12.6 → pyscript_programming_language-1.12.7}/pyscript/core/editor/bases.py +2 -2
- {pyscript_programming_language-1.12.6 → pyscript_programming_language-1.12.7}/pyscript/core/handlers.py +2 -2
- {pyscript_programming_language-1.12.6 → pyscript_programming_language-1.12.7}/pyscript/core/highlight.py +5 -4
- {pyscript_programming_language-1.12.6 → pyscript_programming_language-1.12.7}/pyscript/core/interpreter.py +22 -14
- {pyscript_programming_language-1.12.6 → pyscript_programming_language-1.12.7}/pyscript/core/lexer.py +1 -1
- {pyscript_programming_language-1.12.6 → pyscript_programming_language-1.12.7}/pyscript/core/nodes.py +7 -0
- {pyscript_programming_language-1.12.6 → pyscript_programming_language-1.12.7}/pyscript/core/parser.py +47 -40
- {pyscript_programming_language-1.12.6 → pyscript_programming_language-1.12.7}/pyscript/core/position.py +2 -2
- {pyscript_programming_language-1.12.6 → pyscript_programming_language-1.12.7}/pyscript/core/pysbuiltins.py +4 -4
- {pyscript_programming_language-1.12.6 → pyscript_programming_language-1.12.7}/pyscript/core/runner.py +10 -2
- {pyscript_programming_language-1.12.6 → pyscript_programming_language-1.12.7}/pyscript/core/shell.py +104 -6
- {pyscript_programming_language-1.12.6 → pyscript_programming_language-1.12.7}/pyscript/core/utils/debug.py +6 -6
- {pyscript_programming_language-1.12.6 → pyscript_programming_language-1.12.7}/pyscript/core/utils/generic.py +3 -2
- {pyscript_programming_language-1.12.6 → pyscript_programming_language-1.12.7}/pyscript/core/utils/module.py +5 -6
- pyscript_programming_language-1.12.7/pyscript/core/utils/path.py +28 -0
- {pyscript_programming_language-1.12.6 → pyscript_programming_language-1.12.7}/pyscript/core/version.py +2 -2
- {pyscript_programming_language-1.12.6 → pyscript_programming_language-1.12.7}/pyscript/lib/ast/ast_dump.py +3 -0
- {pyscript_programming_language-1.12.6 → pyscript_programming_language-1.12.7}/pyscript/lib/ast/ast_literal_eval.py +1 -3
- {pyscript_programming_language-1.12.6 → pyscript_programming_language-1.12.7}/pyscript/lib/ast/ast_unparse.py +3 -0
- {pyscript_programming_language-1.12.6 → pyscript_programming_language-1.12.7}/pyscript/lib/brainfuck.pys +75 -47
- pyscript_programming_language-1.12.7/pyscript/lib/history.pys +40 -0
- {pyscript_programming_language-1.12.6 → pyscript_programming_language-1.12.7}/pyscript/lib/parser.pys +4 -4
- {pyscript_programming_language-1.12.6 → pyscript_programming_language-1.12.7}/pyscript_programming_language.egg-info/PKG-INFO +18 -16
- {pyscript_programming_language-1.12.6 → pyscript_programming_language-1.12.7}/pyscript_programming_language.egg-info/SOURCES.txt +1 -0
- {pyscript_programming_language-1.12.6 → pyscript_programming_language-1.12.7}/setup.py +1 -1
- pyscript_programming_language-1.12.6/changelog.md +0 -7
- pyscript_programming_language-1.12.6/pyscript/core/utils/path.py +0 -29
- {pyscript_programming_language-1.12.6 → pyscript_programming_language-1.12.7}/MANIFEST.in +0 -0
- {pyscript_programming_language-1.12.6 → pyscript_programming_language-1.12.7}/pyscript/__init__.py +0 -0
- {pyscript_programming_language-1.12.6 → pyscript_programming_language-1.12.7}/pyscript/__init__.pyi +0 -0
- {pyscript_programming_language-1.12.6 → pyscript_programming_language-1.12.7}/pyscript/core/__init__.py +0 -0
- {pyscript_programming_language-1.12.6 → pyscript_programming_language-1.12.7}/pyscript/core/analyzer.py +0 -0
- {pyscript_programming_language-1.12.6 → pyscript_programming_language-1.12.7}/pyscript/core/bases.py +0 -0
- {pyscript_programming_language-1.12.6 → pyscript_programming_language-1.12.7}/pyscript/core/buffer.py +0 -0
- {pyscript_programming_language-1.12.6 → pyscript_programming_language-1.12.7}/pyscript/core/cache.py +0 -0
- {pyscript_programming_language-1.12.6 → pyscript_programming_language-1.12.7}/pyscript/core/checks.py +0 -0
- {pyscript_programming_language-1.12.6 → pyscript_programming_language-1.12.7}/pyscript/core/context.py +0 -0
- {pyscript_programming_language-1.12.6 → pyscript_programming_language-1.12.7}/pyscript/core/editor/__init__.py +0 -0
- {pyscript_programming_language-1.12.6 → pyscript_programming_language-1.12.7}/pyscript/core/editor/gui.py +0 -0
- {pyscript_programming_language-1.12.6 → pyscript_programming_language-1.12.7}/pyscript/core/editor/terminal.py +0 -0
- {pyscript_programming_language-1.12.6 → pyscript_programming_language-1.12.7}/pyscript/core/exceptions.py +0 -0
- {pyscript_programming_language-1.12.6 → pyscript_programming_language-1.12.7}/pyscript/core/mapping.py +0 -0
- {pyscript_programming_language-1.12.6 → pyscript_programming_language-1.12.7}/pyscript/core/objects.py +0 -0
- {pyscript_programming_language-1.12.6 → pyscript_programming_language-1.12.7}/pyscript/core/results.py +0 -0
- {pyscript_programming_language-1.12.6 → pyscript_programming_language-1.12.7}/pyscript/core/symtab.py +0 -0
- {pyscript_programming_language-1.12.6 → pyscript_programming_language-1.12.7}/pyscript/core/token.py +0 -0
- {pyscript_programming_language-1.12.6 → pyscript_programming_language-1.12.7}/pyscript/core/utils/__init__.py +0 -0
- {pyscript_programming_language-1.12.6 → pyscript_programming_language-1.12.7}/pyscript/core/utils/ansi.py +0 -0
- {pyscript_programming_language-1.12.6 → pyscript_programming_language-1.12.7}/pyscript/core/utils/decorators.py +0 -0
- {pyscript_programming_language-1.12.6 → pyscript_programming_language-1.12.7}/pyscript/core/utils/jsdict.py +0 -0
- {pyscript_programming_language-1.12.6 → pyscript_programming_language-1.12.7}/pyscript/core/utils/similarity.py +0 -0
- {pyscript_programming_language-1.12.6 → pyscript_programming_language-1.12.7}/pyscript/core/utils/string.py +0 -0
- {pyscript_programming_language-1.12.6 → pyscript_programming_language-1.12.7}/pyscript/lib/__hello__.pys +0 -0
- {pyscript_programming_language-1.12.6 → pyscript_programming_language-1.12.7}/pyscript/lib/ansi.pys +0 -0
- {pyscript_programming_language-1.12.6 → pyscript_programming_language-1.12.7}/pyscript/lib/ast/__init__.pys +0 -0
- {pyscript_programming_language-1.12.6 → pyscript_programming_language-1.12.7}/pyscript/lib/ast/ast_walk.py +0 -0
- {pyscript_programming_language-1.12.6 → pyscript_programming_language-1.12.7}/pyscript/lib/dis.pys +0 -0
- {pyscript_programming_language-1.12.6 → pyscript_programming_language-1.12.7}/pyscript/lib/explorer.pys +0 -0
- {pyscript_programming_language-1.12.6 → pyscript_programming_language-1.12.7}/pyscript/lib/fpstimer/__init__.pys +0 -0
- {pyscript_programming_language-1.12.6 → pyscript_programming_language-1.12.7}/pyscript/lib/fpstimer/py_fpstimer.py +0 -0
- {pyscript_programming_language-1.12.6 → pyscript_programming_language-1.12.7}/pyscript/lib/getch/__init__.pys +0 -0
- {pyscript_programming_language-1.12.6 → pyscript_programming_language-1.12.7}/pyscript/lib/getch/py_getch.py +0 -0
- {pyscript_programming_language-1.12.6 → pyscript_programming_language-1.12.7}/pyscript/lib/inspect.pys +0 -0
- {pyscript_programming_language-1.12.6 → pyscript_programming_language-1.12.7}/pyscript/lib/jsdict.pys +0 -0
- {pyscript_programming_language-1.12.6 → pyscript_programming_language-1.12.7}/pyscript/lib/keyword.pys +0 -0
- {pyscript_programming_language-1.12.6 → pyscript_programming_language-1.12.7}/pyscript/lib/opcode.pys +0 -0
- {pyscript_programming_language-1.12.6 → pyscript_programming_language-1.12.7}/pyscript/lib/pdisplay.pys +0 -0
- {pyscript_programming_language-1.12.6 → pyscript_programming_language-1.12.7}/pyscript/lib/site.pys +0 -0
- {pyscript_programming_language-1.12.6 → pyscript_programming_language-1.12.7}/pyscript/lib/symtable.pys +0 -0
- {pyscript_programming_language-1.12.6 → pyscript_programming_language-1.12.7}/pyscript/lib/token.pys +0 -0
- {pyscript_programming_language-1.12.6 → pyscript_programming_language-1.12.7}/pyscript/lib/tokenize/__init__.pys +0 -0
- {pyscript_programming_language-1.12.6 → pyscript_programming_language-1.12.7}/pyscript/lib/tokenize/tok_untokenize.py +0 -0
- {pyscript_programming_language-1.12.6 → pyscript_programming_language-1.12.7}/pyscript/other/.nomedia +0 -0
- {pyscript_programming_language-1.12.6 → pyscript_programming_language-1.12.7}/pyscript/other/PyScript.ico +0 -0
- {pyscript_programming_language-1.12.6 → pyscript_programming_language-1.12.7}/pyscript/other/copyright +0 -0
- {pyscript_programming_language-1.12.6 → pyscript_programming_language-1.12.7}/pyscript/other/credits +0 -0
- {pyscript_programming_language-1.12.6 → pyscript_programming_language-1.12.7}/pyscript/other/license +0 -0
- {pyscript_programming_language-1.12.6 → pyscript_programming_language-1.12.7}/pyscript/site-packages/this.pys +0 -0
- {pyscript_programming_language-1.12.6 → pyscript_programming_language-1.12.7}/pyscript/this.py +0 -0
- {pyscript_programming_language-1.12.6 → pyscript_programming_language-1.12.7}/pyscript_programming_language.egg-info/dependency_links.txt +0 -0
- {pyscript_programming_language-1.12.6 → pyscript_programming_language-1.12.7}/pyscript_programming_language.egg-info/requires.txt +0 -0
- {pyscript_programming_language-1.12.6 → pyscript_programming_language-1.12.7}/pyscript_programming_language.egg-info/top_level.txt +0 -0
- {pyscript_programming_language-1.12.6 → pyscript_programming_language-1.12.7}/setup.cfg +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: pyscript-programming-language
|
|
3
|
-
Version: 1.12.
|
|
3
|
+
Version: 1.12.7
|
|
4
4
|
Summary: PyScript Programming Language
|
|
5
5
|
Home-page: https://azzammuhyala.github.io/pyscript
|
|
6
6
|
Author: azzammuhyala
|
|
@@ -26,7 +26,7 @@ Dynamic: author
|
|
|
26
26
|
Dynamic: home-page
|
|
27
27
|
Dynamic: requires-python
|
|
28
28
|
|
|
29
|
-
# PyScript
|
|
29
|
+
# PyScript 🐍🟨🟦⬛
|
|
30
30
|
|
|
31
31
|
<div align="center">
|
|
32
32
|
<img src="https://github.com/azzammuhyala/pyscript/blob/main/PyScript.png?raw=true" alt="PyScript Logo" width="200">
|
|
@@ -35,7 +35,7 @@ Dynamic: requires-python
|
|
|
35
35
|
PyScript is a simple programming language built on top of Python. It combines some syntax from Python and JavaScript,
|
|
36
36
|
so if you're already familiar with Python, JavaScript or both, it should be quite easy to learn.
|
|
37
37
|
|
|
38
|
-
## Introduction
|
|
38
|
+
## Introduction 📖
|
|
39
39
|
PyScript may not be the language we'll be discussing, but the name PyScript already exists, a flexible and platform for
|
|
40
40
|
running Python in a browser. Since it's inception, the language was inspired by Python and JavaScript, which are
|
|
41
41
|
relatively easy for humans to read. This name was chosen because it wasn't immediately known whether this name was
|
|
@@ -50,7 +50,7 @@ low-level languages.
|
|
|
50
50
|
To learn more about PyScript, you can see on [PyScript documentation](https://azzammuhyala.github.io/pyscript) or
|
|
51
51
|
[PyScript repository](https://github.com/azzammuhyala/pyscript) for full source code.
|
|
52
52
|
|
|
53
|
-
## Installation
|
|
53
|
+
## Installation ⬇️
|
|
54
54
|
First, you'll need to download Python. Make sure you're using the latest version above `3.10`, to ensure the code runs
|
|
55
55
|
correctly. Visit the official [Python website](https://python.org) to download it.
|
|
56
56
|
|
|
@@ -82,11 +82,11 @@ If successful, you can see the version, release date, and a `>>>` like Python sh
|
|
|
82
82
|
> If you are using the VS Code editor, you can use the
|
|
83
83
|
[PyScript extension](https://marketplace.visualstudio.com/items?itemName=azzammuhyala.pyslang) for Syntax Highlight!
|
|
84
84
|
|
|
85
|
-
## Example
|
|
85
|
+
## Example 📜
|
|
86
86
|
Familiar? There it is!
|
|
87
87
|
<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">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"># 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:#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:#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">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>
|
|
88
88
|
|
|
89
|
-
## Library Requirements
|
|
89
|
+
## Library Requirements 📓
|
|
90
90
|
| No | Name | Status |
|
|
91
91
|
|:--:|:------------------|:----------------------:|
|
|
92
92
|
| 1 | `argparse` | **required** |
|
|
@@ -108,18 +108,20 @@ Familiar? There it is!
|
|
|
108
108
|
| 17 | `types` | **required** |
|
|
109
109
|
| 18 | `typing` | **required** |
|
|
110
110
|
| 19 | `unicodedata` | **required** |
|
|
111
|
-
| 1 | `
|
|
112
|
-
| 2 | `
|
|
113
|
-
| 3 | `
|
|
114
|
-
| 4 | `
|
|
115
|
-
| 5 | `
|
|
116
|
-
| 6 | `
|
|
117
|
-
| 7 | `
|
|
111
|
+
| 1 | `ast` | **required (library)** |
|
|
112
|
+
| 2 | `msvcrt` | **required (library)** |
|
|
113
|
+
| 3 | `pprint` | **required (library)** |
|
|
114
|
+
| 4 | `shutil` | **required (library)** |
|
|
115
|
+
| 5 | `stat` | **required (library)** |
|
|
116
|
+
| 6 | `termios` | **required (library)** |
|
|
117
|
+
| 7 | `time` | **required (library)** |
|
|
118
|
+
| 8 | `tty` | **required (library)** |
|
|
118
119
|
| 1 | `beartype` | **optional** |
|
|
119
120
|
| 2 | `prompt_toolkit` | **optional** |
|
|
120
121
|
| 3 | `pygments` | **optional** |
|
|
121
|
-
| 4 | `
|
|
122
|
-
| 5 | `
|
|
122
|
+
| 4 | `readline` | **optional** |
|
|
123
|
+
| 5 | `tkinter` | **optional** |
|
|
124
|
+
| 6 | `IPython` | **optional** |
|
|
123
125
|
|
|
124
126
|
### Status Explanation
|
|
125
127
|
- **required**: Required by PyScript entirely.
|
|
@@ -127,7 +129,7 @@ Familiar? There it is!
|
|
|
127
129
|
import it.
|
|
128
130
|
- **optional**: Not required, but if it is present, some features can be used without issue.
|
|
129
131
|
|
|
130
|
-
## Behind it
|
|
132
|
+
## Behind it 🕰️
|
|
131
133
|
This language created from based up on a
|
|
132
134
|
[YouTube tutorial](https://www.youtube.com/playlist?list=PLZQftyCk7_SdoVexSmwy_tBgs7P0b97yD) (check more on GitHub
|
|
133
135
|
[here](https://github.com/davidcallanan/py-myopl-code) by **@davidcallanan**). At least, it takes about 6 months to
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
# PyScript
|
|
1
|
+
# PyScript 🐍🟨🟦⬛
|
|
2
2
|
|
|
3
3
|
<div align="center">
|
|
4
4
|
<img src="https://github.com/azzammuhyala/pyscript/blob/main/PyScript.png?raw=true" alt="PyScript Logo" width="200">
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
PyScript is a simple programming language built on top of Python. It combines some syntax from Python and JavaScript,
|
|
8
8
|
so if you're already familiar with Python, JavaScript or both, it should be quite easy to learn.
|
|
9
9
|
|
|
10
|
-
## Introduction
|
|
10
|
+
## Introduction 📖
|
|
11
11
|
PyScript may not be the language we'll be discussing, but the name PyScript already exists, a flexible and platform for
|
|
12
12
|
running Python in a browser. Since it's inception, the language was inspired by Python and JavaScript, which are
|
|
13
13
|
relatively easy for humans to read. This name was chosen because it wasn't immediately known whether this name was
|
|
@@ -22,7 +22,7 @@ low-level languages.
|
|
|
22
22
|
To learn more about PyScript, you can see on [PyScript documentation](https://azzammuhyala.github.io/pyscript) or
|
|
23
23
|
[PyScript repository](https://github.com/azzammuhyala/pyscript) for full source code.
|
|
24
24
|
|
|
25
|
-
## Installation
|
|
25
|
+
## Installation ⬇️
|
|
26
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
27
|
correctly. Visit the official [Python website](https://python.org) to download it.
|
|
28
28
|
|
|
@@ -54,11 +54,11 @@ If successful, you can see the version, release date, and a `>>>` like Python sh
|
|
|
54
54
|
> If you are using the VS Code editor, you can use the
|
|
55
55
|
[PyScript extension](https://marketplace.visualstudio.com/items?itemName=azzammuhyala.pyslang) for Syntax Highlight!
|
|
56
56
|
|
|
57
|
-
## Example
|
|
57
|
+
## Example 📜
|
|
58
58
|
Familiar? There it is!
|
|
59
59
|
<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">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"># 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:#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:#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">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
60
|
|
|
61
|
-
## Library Requirements
|
|
61
|
+
## Library Requirements 📓
|
|
62
62
|
| No | Name | Status |
|
|
63
63
|
|:--:|:------------------|:----------------------:|
|
|
64
64
|
| 1 | `argparse` | **required** |
|
|
@@ -80,18 +80,20 @@ Familiar? There it is!
|
|
|
80
80
|
| 17 | `types` | **required** |
|
|
81
81
|
| 18 | `typing` | **required** |
|
|
82
82
|
| 19 | `unicodedata` | **required** |
|
|
83
|
-
| 1 | `
|
|
84
|
-
| 2 | `
|
|
85
|
-
| 3 | `
|
|
86
|
-
| 4 | `
|
|
87
|
-
| 5 | `
|
|
88
|
-
| 6 | `
|
|
89
|
-
| 7 | `
|
|
83
|
+
| 1 | `ast` | **required (library)** |
|
|
84
|
+
| 2 | `msvcrt` | **required (library)** |
|
|
85
|
+
| 3 | `pprint` | **required (library)** |
|
|
86
|
+
| 4 | `shutil` | **required (library)** |
|
|
87
|
+
| 5 | `stat` | **required (library)** |
|
|
88
|
+
| 6 | `termios` | **required (library)** |
|
|
89
|
+
| 7 | `time` | **required (library)** |
|
|
90
|
+
| 8 | `tty` | **required (library)** |
|
|
90
91
|
| 1 | `beartype` | **optional** |
|
|
91
92
|
| 2 | `prompt_toolkit` | **optional** |
|
|
92
93
|
| 3 | `pygments` | **optional** |
|
|
93
|
-
| 4 | `
|
|
94
|
-
| 5 | `
|
|
94
|
+
| 4 | `readline` | **optional** |
|
|
95
|
+
| 5 | `tkinter` | **optional** |
|
|
96
|
+
| 6 | `IPython` | **optional** |
|
|
95
97
|
|
|
96
98
|
### Status Explanation
|
|
97
99
|
- **required**: Required by PyScript entirely.
|
|
@@ -99,7 +101,7 @@ Familiar? There it is!
|
|
|
99
101
|
import it.
|
|
100
102
|
- **optional**: Not required, but if it is present, some features can be used without issue.
|
|
101
103
|
|
|
102
|
-
## Behind it
|
|
104
|
+
## Behind it 🕰️
|
|
103
105
|
This language created from based up on a
|
|
104
106
|
[YouTube tutorial](https://www.youtube.com/playlist?list=PLZQftyCk7_SdoVexSmwy_tBgs7P0b97yD) (check more on GitHub
|
|
105
107
|
[here](https://github.com/davidcallanan/py-myopl-code) by **@davidcallanan**). At least, it takes about 6 months to
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
# Change Log
|
|
2
|
+
|
|
3
|
+
## [1.12.7] - 18/03/2026
|
|
4
|
+
|
|
5
|
+
### Added
|
|
6
|
+
- Updated history features in the advanced shell (_REPL_) with `pygments`.
|
|
7
|
+
- New node for the constant keyword `__debug__`.
|
|
8
|
+
- Wrap around pointer and garbage collection mechanism in the `brainfuck` module.
|
|
9
|
+
|
|
10
|
+
### Fixed
|
|
11
|
+
- **Fixed some bugs**.
|
|
12
|
+
- _etc._
|
{pyscript_programming_language-1.12.6 → pyscript_programming_language-1.12.7}/pyproject.toml
RENAMED
|
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "pyscript-programming-language"
|
|
7
|
-
version = "1.12.
|
|
7
|
+
version = "1.12.7"
|
|
8
8
|
description = "PyScript Programming Language"
|
|
9
9
|
readme = { file = "README.md", content-type = "text/markdown" }
|
|
10
10
|
requires-python = ">=3.10"
|
{pyscript_programming_language-1.12.6 → pyscript_programming_language-1.12.7}/pyscript/__main__.py
RENAMED
|
@@ -45,7 +45,7 @@ FORMAT_HIGHLIGHT_MAP = {
|
|
|
45
45
|
EDITOR_MAP = {}
|
|
46
46
|
|
|
47
47
|
for supported, name, class_editor in [
|
|
48
|
-
(GUI_SUPPORT,
|
|
48
|
+
(GUI_SUPPORT, 'gui', PysGUIEditor),
|
|
49
49
|
(TERMINAL_SUPPORT, 'terminal', PysTerminalEditor)
|
|
50
50
|
]:
|
|
51
51
|
if supported:
|
|
@@ -173,7 +173,7 @@ com_idx = argv.index('-c', 0, end_com) if '-c' in arg_com else \
|
|
|
173
173
|
(argv.index('--command', 0, end_com) if '--command' in arg_com else -1)
|
|
174
174
|
|
|
175
175
|
args = parser.parse_args(argv if com_idx == -1 else argv[:com_idx + 2])
|
|
176
|
-
arg
|
|
176
|
+
arg = args.arg if com_idx == -1 else argv[com_idx + 2:]
|
|
177
177
|
|
|
178
178
|
if args.terminal:
|
|
179
179
|
|
|
@@ -1,13 +1,14 @@
|
|
|
1
|
-
from os.path import sep, join
|
|
2
1
|
from types import MappingProxyType
|
|
3
2
|
|
|
3
|
+
import os
|
|
4
|
+
|
|
4
5
|
# paths
|
|
5
|
-
PYSCRIPT_PATH = sep.join(__file__.split(sep)[:-2])
|
|
6
|
-
CORE_PATH = join(PYSCRIPT_PATH, 'core')
|
|
7
|
-
LIBRARIES_PATH = join(PYSCRIPT_PATH, 'lib')
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
ICON_PATH = join(OTHER_PATH, 'PyScript.ico')
|
|
6
|
+
PYSCRIPT_PATH = os.path.sep.join(__file__.split(os.path.sep)[:-2])
|
|
7
|
+
CORE_PATH = os.path.join(PYSCRIPT_PATH, 'core')
|
|
8
|
+
LIBRARIES_PATH = os.path.join(PYSCRIPT_PATH, 'lib')
|
|
9
|
+
OTHER_PATH = os.path.join(PYSCRIPT_PATH, 'other')
|
|
10
|
+
SITE_PACKAGES_PATH = os.path.join(PYSCRIPT_PATH, 'site-packages')
|
|
11
|
+
ICON_PATH = os.path.join(OTHER_PATH, 'PyScript.ico')
|
|
11
12
|
|
|
12
13
|
# environment variables
|
|
13
14
|
ENV_PYSCRIPT_NO_EXCEPTHOOK = 'PYSCRIPT_NO_EXCEPTHOOK'
|
|
@@ -17,6 +18,8 @@ ENV_PYSCRIPT_NO_TYPECHECK = 'PYSCRIPT_NO_TYPECHECK'
|
|
|
17
18
|
ENV_PYSCRIPT_NO_COLOR_PROMPT = 'PYSCRIPT_NO_COLOR_PROMPT'
|
|
18
19
|
ENV_PYSCRIPT_MAXIMUM_TRACEBACK_LINE = 'PYSCRIPT_MAXIMUM_TRACEBACK_LINE'
|
|
19
20
|
ENV_PYSCRIPT_CLASSIC_LINE_SHELL = 'PYSCRIPT_CLASSIC_LINE_SHELL'
|
|
21
|
+
ENV_PYSCRIPT_HISTORY_PATH = 'PYSCRIPT_HISTORY_PATH'
|
|
22
|
+
ENV_PYSCRIPT_MAXIMUM_HISTORY_LINE = 'PYSCRIPT_MAXIMUM_HISTORY_LINE'
|
|
20
23
|
|
|
21
24
|
# tokens offset
|
|
22
25
|
DOUBLE = 2**8
|
|
@@ -4,7 +4,7 @@ from ..utils.decorators import typechecked, inheritable
|
|
|
4
4
|
from ..utils.generic import setimuattr
|
|
5
5
|
from ..utils.string import normstr
|
|
6
6
|
|
|
7
|
-
|
|
7
|
+
import os
|
|
8
8
|
|
|
9
9
|
class PysEditor(Pys):
|
|
10
10
|
|
|
@@ -14,7 +14,7 @@ class PysEditor(Pys):
|
|
|
14
14
|
self.used = False
|
|
15
15
|
self.modified = False
|
|
16
16
|
self.wrapped = True
|
|
17
|
-
self.basename = basename(self.file.name)
|
|
17
|
+
self.basename = os.path.basename(self.file.name)
|
|
18
18
|
|
|
19
19
|
def __init_subclass__(cls, **kwargs) -> None:
|
|
20
20
|
super().__init_subclass__(**kwargs)
|
|
@@ -12,10 +12,10 @@ wrapper_function = (MethodType, classmethod, staticmethod)
|
|
|
12
12
|
|
|
13
13
|
if not is_environ(ENV_PYSCRIPT_NO_GIL):
|
|
14
14
|
from threading import RLock
|
|
15
|
-
|
|
15
|
+
gil_lock = RLock()
|
|
16
16
|
|
|
17
17
|
def handle_call(object: Any, context: PysContext, position: PysPosition) -> None:
|
|
18
|
-
with
|
|
18
|
+
with gil_lock:
|
|
19
19
|
|
|
20
20
|
if (ins := isinstance)(object, PysFunction):
|
|
21
21
|
code = object.__code__
|
|
@@ -42,7 +42,7 @@ BUILTIN_TYPES = frozenset(
|
|
|
42
42
|
BUILTIN_FUNCTIONS = frozenset(
|
|
43
43
|
name
|
|
44
44
|
for name, object in pys_builtins.__dict__.items()
|
|
45
|
-
if is_public_attribute(name) and callable(object)
|
|
45
|
+
if is_public_attribute(name) and callable(object) and not isinstance(object, type)
|
|
46
46
|
)
|
|
47
47
|
|
|
48
48
|
try:
|
|
@@ -55,6 +55,7 @@ try:
|
|
|
55
55
|
from pygments.unistring import xid_start, xid_continue
|
|
56
56
|
|
|
57
57
|
_set_constant_keywords = frozenset(CONSTANT_KEYWORDS)
|
|
58
|
+
_keywords = '|'.join(KEYWORDS)
|
|
58
59
|
_unicode_name = f'[{xid_start}][{xid_continue}]*'
|
|
59
60
|
_newlines = r'\r\n|\r|\n'
|
|
60
61
|
_integer = r'[0-9](?:_?[0-9])*'
|
|
@@ -218,13 +219,13 @@ try:
|
|
|
218
219
|
|
|
219
220
|
# Class definition
|
|
220
221
|
(
|
|
221
|
-
rf'\b(class)\b(\s+)({_dollar}{_unicode_name})\b',
|
|
222
|
+
rf'\b(class)\b(\s+)(?!(?:{_keywords})\b)({_dollar}{_unicode_name})\b',
|
|
222
223
|
bygroups(Keyword.Constant, Whitespace, Name.Class)
|
|
223
224
|
),
|
|
224
225
|
|
|
225
226
|
# Function definition
|
|
226
227
|
(
|
|
227
|
-
rf'\b(def|define|func|function)\b(\s+)({_dollar}{_unicode_name})\b',
|
|
228
|
+
rf'\b(def|define|func|function)\b(\s+)(?!(?:{_keywords})\b)({_dollar}{_unicode_name})\b',
|
|
228
229
|
bygroups(Keyword.Constant, Whitespace, Name.Function)
|
|
229
230
|
),
|
|
230
231
|
|
|
@@ -355,7 +356,7 @@ try:
|
|
|
355
356
|
] + tokens['root']
|
|
356
357
|
|
|
357
358
|
del (
|
|
358
|
-
_set_constant_keywords, _unicode_name, _newlines, _integer, _scientific, _imaginary, _dollar,
|
|
359
|
+
_set_constant_keywords, _keywords, _unicode_name, _newlines, _integer, _scientific, _imaginary, _dollar,
|
|
359
360
|
_raw_string_prefixes, _string_or_bytes_prefixes
|
|
360
361
|
)
|
|
361
362
|
|
|
@@ -49,11 +49,10 @@ def visit_StringNode(node: PysStringNode, context: PysContext) -> PysRunTimeResu
|
|
|
49
49
|
return PysRunTimeResult().success(node.value.value)
|
|
50
50
|
|
|
51
51
|
def visit_KeywordNode(node: PysKeywordNode, context: PysContext) -> PysRunTimeResult:
|
|
52
|
-
return PysRunTimeResult().success(
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
)
|
|
52
|
+
return PysRunTimeResult().success(get_value_from_keyword(node.name.value))
|
|
53
|
+
|
|
54
|
+
def visit_DebugNode(node: PysDebugNode, context: PysContext) -> PysRunTimeResult:
|
|
55
|
+
return PysRunTimeResult().success(True if context.flags & DEBUG else False)
|
|
57
56
|
|
|
58
57
|
def visit_IdentifierNode(node: PysIdentifierNode, context: PysContext) -> PysRunTimeResult:
|
|
59
58
|
result = PysRunTimeResult()
|
|
@@ -208,7 +207,6 @@ def visit_CallNode(node: PysCallNode, context: PysContext) -> PysRunTimeResult:
|
|
|
208
207
|
should_return = result.should_return
|
|
209
208
|
add_arg = args.append
|
|
210
209
|
add_kwarg = kwargs.__setitem__
|
|
211
|
-
nposition = node.position
|
|
212
210
|
ntarget = node.target
|
|
213
211
|
|
|
214
212
|
target = register(get_visitor(ntarget.__class__)(ntarget, context))
|
|
@@ -228,7 +226,7 @@ def visit_CallNode(node: PysCallNode, context: PysContext) -> PysRunTimeResult:
|
|
|
228
226
|
if should_return():
|
|
229
227
|
return result
|
|
230
228
|
|
|
231
|
-
with result(context, nposition):
|
|
229
|
+
with result(context, nposition := node.position):
|
|
232
230
|
handle_call(target, context, nposition)
|
|
233
231
|
return result.success(target(*args, **kwargs))
|
|
234
232
|
|
|
@@ -316,15 +314,20 @@ def visit_BinaryOperatorNode(node: PysBinaryOperatorNode, context: PysContext) -
|
|
|
316
314
|
|
|
317
315
|
toperand = node.operand
|
|
318
316
|
otype = toperand.type
|
|
319
|
-
ovalue = toperand.value
|
|
320
317
|
nright = node.right
|
|
321
318
|
|
|
322
319
|
with result(context, node.position):
|
|
323
320
|
return_right = True
|
|
324
321
|
|
|
325
|
-
if
|
|
322
|
+
if otype == T_KEYWORD:
|
|
323
|
+
ovalue = toperand.value
|
|
324
|
+
if ovalue == 'and':
|
|
325
|
+
if not left: return result.success(left)
|
|
326
|
+
elif ovalue == 'or':
|
|
327
|
+
if left: return result.success(left)
|
|
328
|
+
elif otype == T_AND:
|
|
326
329
|
if not left: return result.success(left)
|
|
327
|
-
elif
|
|
330
|
+
elif otype == T_OR:
|
|
328
331
|
if left: return result.success(left)
|
|
329
332
|
elif otype == T_NULLISH:
|
|
330
333
|
if left is not None: return result.success(left)
|
|
@@ -350,13 +353,18 @@ def visit_UnaryOperatorNode(node: PysUnaryOperatorNode, context: PysContext) ->
|
|
|
350
353
|
|
|
351
354
|
toperand = node.operand
|
|
352
355
|
otype = toperand.type
|
|
353
|
-
ovalue = toperand.value
|
|
354
356
|
|
|
355
357
|
with result(context, node.position):
|
|
356
|
-
|
|
358
|
+
|
|
359
|
+
if otype == T_KEYWORD:
|
|
360
|
+
ovalue = toperand.value
|
|
361
|
+
if ovalue == 'not':
|
|
362
|
+
return result.success(not value)
|
|
363
|
+
elif ovalue == 'typeof':
|
|
364
|
+
return result.success(type(value).__name__)
|
|
365
|
+
elif otype == T_NOT:
|
|
357
366
|
return result.success(not value)
|
|
358
|
-
|
|
359
|
-
return result.success(type(value).__name__)
|
|
367
|
+
|
|
360
368
|
return result.success(GET_UNARY_FUNCTIONS_MAP(otype)(value))
|
|
361
369
|
|
|
362
370
|
return result
|
{pyscript_programming_language-1.12.6 → pyscript_programming_language-1.12.7}/pyscript/core/lexer.py
RENAMED
|
@@ -601,7 +601,7 @@ class PysLexer(Pys):
|
|
|
601
601
|
try:
|
|
602
602
|
string = string.encode('latin-1')
|
|
603
603
|
except UnicodeEncodeError:
|
|
604
|
-
self.throw(start, self.index, "
|
|
604
|
+
self.throw(start, self.index, "bytes can only contain ASCII literal characters", add_token=False)
|
|
605
605
|
|
|
606
606
|
self.add_token(TOKENS['STRING'], start, string)
|
|
607
607
|
|
{pyscript_programming_language-1.12.6 → pyscript_programming_language-1.12.7}/pyscript/core/nodes.py
RENAMED
|
@@ -59,6 +59,13 @@ class PysKeywordNode(PysNode):
|
|
|
59
59
|
def __repr__(self) -> str:
|
|
60
60
|
return f'Keyword(name={self.name!r})'
|
|
61
61
|
|
|
62
|
+
class PysDebugNode(PysNode):
|
|
63
|
+
|
|
64
|
+
__slots__ = ()
|
|
65
|
+
|
|
66
|
+
def __repr__(self) -> Literal['Debug()']:
|
|
67
|
+
return 'Debug()'
|
|
68
|
+
|
|
62
69
|
class PysIdentifierNode(PysNode):
|
|
63
70
|
|
|
64
71
|
__slots__ = ('name',)
|
|
@@ -177,7 +177,7 @@ class PysParser(Pys):
|
|
|
177
177
|
return self.assert_statement()
|
|
178
178
|
|
|
179
179
|
elif self.current_token.type == TOKENS['AT']:
|
|
180
|
-
return self.
|
|
180
|
+
return self.decorator_statement()
|
|
181
181
|
|
|
182
182
|
elif self.current_token.match(TOKENS['KEYWORD'], 'continue'):
|
|
183
183
|
result = PysParserResult()
|
|
@@ -707,13 +707,20 @@ class PysParser(Pys):
|
|
|
707
707
|
result = PysParserResult()
|
|
708
708
|
token = self.current_token
|
|
709
709
|
|
|
710
|
-
if token.match(TOKENS['KEYWORD'], '
|
|
710
|
+
if token.match(TOKENS['KEYWORD'], 'True', 'False', 'None', 'true', 'false', 'nil', 'none', 'null'):
|
|
711
711
|
result.register_advancement()
|
|
712
712
|
self.advance()
|
|
713
713
|
self.skip_expression(result)
|
|
714
714
|
|
|
715
715
|
return result.success(PysKeywordNode(token))
|
|
716
716
|
|
|
717
|
+
elif token.match(TOKENS['KEYWORD'], '__debug__'):
|
|
718
|
+
result.register_advancement()
|
|
719
|
+
self.advance()
|
|
720
|
+
self.skip_expression(result)
|
|
721
|
+
|
|
722
|
+
return result.success(PysDebugNode(token.position))
|
|
723
|
+
|
|
717
724
|
elif token.type == TOKENS['IDENTIFIER']:
|
|
718
725
|
result.register_advancement()
|
|
719
726
|
self.advance()
|
|
@@ -922,43 +929,6 @@ class PysParser(Pys):
|
|
|
922
929
|
|
|
923
930
|
return result.success(node(elements, position))
|
|
924
931
|
|
|
925
|
-
def assignment_statement(self, function: Optional[Callable[[], PysParserResult]] = None) -> PysParserResult:
|
|
926
|
-
result = PysParserResult()
|
|
927
|
-
|
|
928
|
-
node = result.register(self.expression(function))
|
|
929
|
-
if result.error:
|
|
930
|
-
return result
|
|
931
|
-
|
|
932
|
-
if self.current_token.type in (
|
|
933
|
-
TOKENS['EQUAL'],
|
|
934
|
-
TOKENS['EQUAL_PLUS'],
|
|
935
|
-
TOKENS['EQUAL_MINUS'],
|
|
936
|
-
TOKENS['EQUAL_STAR'],
|
|
937
|
-
TOKENS['EQUAL_SLASH'],
|
|
938
|
-
TOKENS['EQUAL_DOUBLE_SLASH'],
|
|
939
|
-
TOKENS['EQUAL_PERCENT'],
|
|
940
|
-
TOKENS['EQUAL_AT'],
|
|
941
|
-
TOKENS['EQUAL_DOUBLE_STAR'],
|
|
942
|
-
TOKENS['EQUAL_AMPERSAND'],
|
|
943
|
-
TOKENS['EQUAL_PIPE'],
|
|
944
|
-
TOKENS['EQUAL_CIRCUMFLEX'],
|
|
945
|
-
TOKENS['EQUAL_DOUBLE_LESS_THAN'],
|
|
946
|
-
TOKENS['EQUAL_DOUBLE_GREATER_THAN']
|
|
947
|
-
):
|
|
948
|
-
operand = self.current_token
|
|
949
|
-
|
|
950
|
-
result.register_advancement()
|
|
951
|
-
self.advance()
|
|
952
|
-
self.skip_expression(result)
|
|
953
|
-
|
|
954
|
-
value = result.register(self.assignment_statement(function), True)
|
|
955
|
-
if result.error:
|
|
956
|
-
return result
|
|
957
|
-
|
|
958
|
-
node = PysAssignmentNode(node, operand, value)
|
|
959
|
-
|
|
960
|
-
return result.success(node)
|
|
961
|
-
|
|
962
932
|
def from_statement(self) -> PysParserResult:
|
|
963
933
|
result = PysParserResult()
|
|
964
934
|
position = self.current_token.position
|
|
@@ -2248,7 +2218,7 @@ class PysParser(Pys):
|
|
|
2248
2218
|
)
|
|
2249
2219
|
)
|
|
2250
2220
|
|
|
2251
|
-
def
|
|
2221
|
+
def decorator_statement(self) -> PysParserResult:
|
|
2252
2222
|
result = PysParserResult()
|
|
2253
2223
|
|
|
2254
2224
|
if self.current_token.type != TOKENS['AT']:
|
|
@@ -2282,6 +2252,43 @@ class PysParser(Pys):
|
|
|
2282
2252
|
|
|
2283
2253
|
return result.failure(self.new_error("expected function or class declaration after decorator"))
|
|
2284
2254
|
|
|
2255
|
+
def assignment_statement(self, function: Optional[Callable[[], PysParserResult]] = None) -> PysParserResult:
|
|
2256
|
+
result = PysParserResult()
|
|
2257
|
+
|
|
2258
|
+
node = result.register(self.expression(function))
|
|
2259
|
+
if result.error:
|
|
2260
|
+
return result
|
|
2261
|
+
|
|
2262
|
+
if self.current_token.type in (
|
|
2263
|
+
TOKENS['EQUAL'],
|
|
2264
|
+
TOKENS['EQUAL_PLUS'],
|
|
2265
|
+
TOKENS['EQUAL_MINUS'],
|
|
2266
|
+
TOKENS['EQUAL_STAR'],
|
|
2267
|
+
TOKENS['EQUAL_SLASH'],
|
|
2268
|
+
TOKENS['EQUAL_DOUBLE_SLASH'],
|
|
2269
|
+
TOKENS['EQUAL_PERCENT'],
|
|
2270
|
+
TOKENS['EQUAL_AT'],
|
|
2271
|
+
TOKENS['EQUAL_DOUBLE_STAR'],
|
|
2272
|
+
TOKENS['EQUAL_AMPERSAND'],
|
|
2273
|
+
TOKENS['EQUAL_PIPE'],
|
|
2274
|
+
TOKENS['EQUAL_CIRCUMFLEX'],
|
|
2275
|
+
TOKENS['EQUAL_DOUBLE_LESS_THAN'],
|
|
2276
|
+
TOKENS['EQUAL_DOUBLE_GREATER_THAN']
|
|
2277
|
+
):
|
|
2278
|
+
operand = self.current_token
|
|
2279
|
+
|
|
2280
|
+
result.register_advancement()
|
|
2281
|
+
self.advance()
|
|
2282
|
+
self.skip_expression(result)
|
|
2283
|
+
|
|
2284
|
+
value = result.register(self.assignment_statement(function), True)
|
|
2285
|
+
if result.error:
|
|
2286
|
+
return result
|
|
2287
|
+
|
|
2288
|
+
node = PysAssignmentNode(node, operand, value)
|
|
2289
|
+
|
|
2290
|
+
return result.success(node)
|
|
2291
|
+
|
|
2285
2292
|
def block_statements(self) -> PysParserResult:
|
|
2286
2293
|
result = PysParserResult()
|
|
2287
2294
|
|
|
@@ -5,9 +5,9 @@ from .mapping import GET_ACOLORS
|
|
|
5
5
|
from .utils.decorators import typechecked, immutable
|
|
6
6
|
from .utils.generic import setimuattr
|
|
7
7
|
|
|
8
|
-
|
|
8
|
+
import os
|
|
9
9
|
|
|
10
|
-
MAXIMUM_TRACEBACK_LINE = environ.get(ENV_PYSCRIPT_MAXIMUM_TRACEBACK_LINE)
|
|
10
|
+
MAXIMUM_TRACEBACK_LINE = os.environ.get(ENV_PYSCRIPT_MAXIMUM_TRACEBACK_LINE)
|
|
11
11
|
if MAXIMUM_TRACEBACK_LINE is None:
|
|
12
12
|
MAXIMUM_TRACEBACK_LINE = 5
|
|
13
13
|
else:
|