pyscript-programming-language 1.12.0__tar.gz → 1.12.2__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.0/pyscript_programming_language.egg-info → pyscript_programming_language-1.12.2}/PKG-INFO +5 -5
- {pyscript_programming_language-1.12.0 → pyscript_programming_language-1.12.2}/README.md +4 -4
- pyscript_programming_language-1.12.2/changelog.md +8 -0
- {pyscript_programming_language-1.12.0 → pyscript_programming_language-1.12.2}/pyproject.toml +1 -1
- {pyscript_programming_language-1.12.0 → pyscript_programming_language-1.12.2}/pyscript/__init__.py +5 -3
- {pyscript_programming_language-1.12.0 → pyscript_programming_language-1.12.2}/pyscript/__init__.pyi +7 -4
- {pyscript_programming_language-1.12.0 → pyscript_programming_language-1.12.2}/pyscript/__main__.py +34 -15
- {pyscript_programming_language-1.12.0 → pyscript_programming_language-1.12.2}/pyscript/core/analyzer.py +2 -2
- {pyscript_programming_language-1.12.0 → pyscript_programming_language-1.12.2}/pyscript/core/cache.py +3 -1
- {pyscript_programming_language-1.12.0 → pyscript_programming_language-1.12.2}/pyscript/core/constants.py +3 -0
- {pyscript_programming_language-1.12.0 → pyscript_programming_language-1.12.2}/pyscript/core/context.py +0 -3
- {pyscript_programming_language-1.12.0 → pyscript_programming_language-1.12.2}/pyscript/core/editor/bases.py +9 -7
- {pyscript_programming_language-1.12.0 → pyscript_programming_language-1.12.2}/pyscript/core/editor/gui.py +18 -14
- {pyscript_programming_language-1.12.0 → pyscript_programming_language-1.12.2}/pyscript/core/editor/terminal.py +24 -30
- {pyscript_programming_language-1.12.0 → pyscript_programming_language-1.12.2}/pyscript/core/exceptions.py +11 -12
- {pyscript_programming_language-1.12.0 → pyscript_programming_language-1.12.2}/pyscript/core/handlers.py +2 -2
- {pyscript_programming_language-1.12.0 → pyscript_programming_language-1.12.2}/pyscript/core/highlight.py +8 -8
- {pyscript_programming_language-1.12.0 → pyscript_programming_language-1.12.2}/pyscript/core/interpreter.py +16 -16
- {pyscript_programming_language-1.12.0 → pyscript_programming_language-1.12.2}/pyscript/core/lexer.py +51 -7
- {pyscript_programming_language-1.12.0 → pyscript_programming_language-1.12.2}/pyscript/core/mapping.py +3 -3
- {pyscript_programming_language-1.12.0 → pyscript_programming_language-1.12.2}/pyscript/core/nodes.py +5 -5
- {pyscript_programming_language-1.12.0 → pyscript_programming_language-1.12.2}/pyscript/core/objects.py +19 -20
- {pyscript_programming_language-1.12.0 → pyscript_programming_language-1.12.2}/pyscript/core/parser.py +3 -3
- {pyscript_programming_language-1.12.0 → pyscript_programming_language-1.12.2}/pyscript/core/pysbuiltins.py +12 -19
- {pyscript_programming_language-1.12.0 → pyscript_programming_language-1.12.2}/pyscript/core/runner.py +11 -7
- {pyscript_programming_language-1.12.0 → pyscript_programming_language-1.12.2}/pyscript/core/shell.py +83 -63
- {pyscript_programming_language-1.12.0 → pyscript_programming_language-1.12.2}/pyscript/core/symtab.py +1 -1
- {pyscript_programming_language-1.12.0 → pyscript_programming_language-1.12.2}/pyscript/core/utils/debug.py +24 -7
- {pyscript_programming_language-1.12.0 → pyscript_programming_language-1.12.2}/pyscript/core/utils/decorators.py +3 -3
- {pyscript_programming_language-1.12.0 → pyscript_programming_language-1.12.2}/pyscript/core/utils/generic.py +4 -0
- {pyscript_programming_language-1.12.0 → pyscript_programming_language-1.12.2}/pyscript/core/utils/similarity.py +3 -3
- {pyscript_programming_language-1.12.0 → pyscript_programming_language-1.12.2}/pyscript/core/version.py +3 -2
- {pyscript_programming_language-1.12.0 → pyscript_programming_language-1.12.2}/pyscript/lib/ast/ast_dump.py +1 -1
- {pyscript_programming_language-1.12.0 → pyscript_programming_language-1.12.2}/pyscript/lib/ast/ast_unparse.py +2 -2
- {pyscript_programming_language-1.12.0 → pyscript_programming_language-1.12.2}/pyscript/lib/ast/ast_walk.py +2 -2
- {pyscript_programming_language-1.12.0 → pyscript_programming_language-1.12.2}/pyscript/lib/brainfuck.pys +23 -14
- pyscript_programming_language-1.12.2/pyscript/lib/getch/__init__.pys +5 -0
- pyscript_programming_language-1.12.2/pyscript/lib/getch/py_getch.py +18 -0
- {pyscript_programming_language-1.12.0 → pyscript_programming_language-1.12.2}/pyscript/lib/parser.pys +1 -1
- {pyscript_programming_language-1.12.0 → pyscript_programming_language-1.12.2/pyscript_programming_language.egg-info}/PKG-INFO +5 -5
- {pyscript_programming_language-1.12.0 → pyscript_programming_language-1.12.2}/pyscript_programming_language.egg-info/SOURCES.txt +2 -1
- {pyscript_programming_language-1.12.0 → pyscript_programming_language-1.12.2}/setup.py +1 -1
- pyscript_programming_language-1.12.0/changelog.md +0 -21
- pyscript_programming_language-1.12.0/pyscript/lib/getch.pys +0 -28
- {pyscript_programming_language-1.12.0 → pyscript_programming_language-1.12.2}/MANIFEST.in +0 -0
- {pyscript_programming_language-1.12.0 → pyscript_programming_language-1.12.2}/pyscript/core/__init__.py +0 -0
- {pyscript_programming_language-1.12.0 → pyscript_programming_language-1.12.2}/pyscript/core/bases.py +0 -0
- {pyscript_programming_language-1.12.0 → pyscript_programming_language-1.12.2}/pyscript/core/buffer.py +0 -0
- {pyscript_programming_language-1.12.0 → pyscript_programming_language-1.12.2}/pyscript/core/checks.py +0 -0
- {pyscript_programming_language-1.12.0 → pyscript_programming_language-1.12.2}/pyscript/core/editor/__init__.py +0 -0
- {pyscript_programming_language-1.12.0 → pyscript_programming_language-1.12.2}/pyscript/core/position.py +0 -0
- {pyscript_programming_language-1.12.0 → pyscript_programming_language-1.12.2}/pyscript/core/results.py +0 -0
- {pyscript_programming_language-1.12.0 → pyscript_programming_language-1.12.2}/pyscript/core/token.py +0 -0
- {pyscript_programming_language-1.12.0 → pyscript_programming_language-1.12.2}/pyscript/core/utils/__init__.py +0 -0
- {pyscript_programming_language-1.12.0 → pyscript_programming_language-1.12.2}/pyscript/core/utils/ansi.py +0 -0
- {pyscript_programming_language-1.12.0 → pyscript_programming_language-1.12.2}/pyscript/core/utils/jsdict.py +0 -0
- {pyscript_programming_language-1.12.0 → pyscript_programming_language-1.12.2}/pyscript/core/utils/module.py +0 -0
- {pyscript_programming_language-1.12.0 → pyscript_programming_language-1.12.2}/pyscript/core/utils/path.py +0 -0
- {pyscript_programming_language-1.12.0 → pyscript_programming_language-1.12.2}/pyscript/core/utils/string.py +0 -0
- {pyscript_programming_language-1.12.0 → pyscript_programming_language-1.12.2}/pyscript/lib/__hello__.pys +0 -0
- {pyscript_programming_language-1.12.0 → pyscript_programming_language-1.12.2}/pyscript/lib/ansi.pys +0 -0
- {pyscript_programming_language-1.12.0 → pyscript_programming_language-1.12.2}/pyscript/lib/ast/__init__.pys +0 -0
- {pyscript_programming_language-1.12.0 → pyscript_programming_language-1.12.2}/pyscript/lib/ast/ast_literal_eval.py +0 -0
- {pyscript_programming_language-1.12.0 → pyscript_programming_language-1.12.2}/pyscript/lib/dis.pys +0 -0
- {pyscript_programming_language-1.12.0 → pyscript_programming_language-1.12.2}/pyscript/lib/explorer.pys +0 -0
- {pyscript_programming_language-1.12.0 → pyscript_programming_language-1.12.2}/pyscript/lib/fpstimer/__init__.pys +0 -0
- {pyscript_programming_language-1.12.0 → pyscript_programming_language-1.12.2}/pyscript/lib/fpstimer/py_fpstimer.py +0 -0
- {pyscript_programming_language-1.12.0 → pyscript_programming_language-1.12.2}/pyscript/lib/inspect.pys +0 -0
- {pyscript_programming_language-1.12.0 → pyscript_programming_language-1.12.2}/pyscript/lib/jsdict.pys +0 -0
- {pyscript_programming_language-1.12.0 → pyscript_programming_language-1.12.2}/pyscript/lib/keyword.pys +0 -0
- {pyscript_programming_language-1.12.0 → pyscript_programming_language-1.12.2}/pyscript/lib/opcode.pys +0 -0
- {pyscript_programming_language-1.12.0 → pyscript_programming_language-1.12.2}/pyscript/lib/site.pys +0 -0
- {pyscript_programming_language-1.12.0 → pyscript_programming_language-1.12.2}/pyscript/lib/symtable.pys +0 -0
- {pyscript_programming_language-1.12.0 → pyscript_programming_language-1.12.2}/pyscript/lib/token.pys +0 -0
- {pyscript_programming_language-1.12.0 → pyscript_programming_language-1.12.2}/pyscript/lib/tokenize/__init__.pys +0 -0
- {pyscript_programming_language-1.12.0 → pyscript_programming_language-1.12.2}/pyscript/lib/tokenize/tok_untokenize.py +0 -0
- {pyscript_programming_language-1.12.0 → pyscript_programming_language-1.12.2}/pyscript/other/.nomedia +0 -0
- {pyscript_programming_language-1.12.0 → pyscript_programming_language-1.12.2}/pyscript/other/PyScript.ico +0 -0
- {pyscript_programming_language-1.12.0 → pyscript_programming_language-1.12.2}/pyscript/other/copyright +0 -0
- {pyscript_programming_language-1.12.0 → pyscript_programming_language-1.12.2}/pyscript/other/credits +0 -0
- {pyscript_programming_language-1.12.0 → pyscript_programming_language-1.12.2}/pyscript/other/license +0 -0
- {pyscript_programming_language-1.12.0 → pyscript_programming_language-1.12.2}/pyscript/site-packages/this.pys +0 -0
- {pyscript_programming_language-1.12.0 → pyscript_programming_language-1.12.2}/pyscript/this.py +0 -0
- {pyscript_programming_language-1.12.0 → pyscript_programming_language-1.12.2}/pyscript_programming_language.egg-info/dependency_links.txt +0 -0
- {pyscript_programming_language-1.12.0 → pyscript_programming_language-1.12.2}/pyscript_programming_language.egg-info/requires.txt +0 -0
- {pyscript_programming_language-1.12.0 → pyscript_programming_language-1.12.2}/pyscript_programming_language.egg-info/top_level.txt +0 -0
- {pyscript_programming_language-1.12.0 → pyscript_programming_language-1.12.2}/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.2
|
|
4
4
|
Summary: PyScript Programming Language
|
|
5
5
|
Home-page: https://azzammuhyala.github.io/pyscript
|
|
6
6
|
Author: azzammuhyala
|
|
@@ -115,10 +115,10 @@ Familiar? There it is!
|
|
|
115
115
|
| 5 | `time` | **required (library)** |
|
|
116
116
|
| 6 | `tty` | **required (library)** |
|
|
117
117
|
| 1 | `beartype` | **optional** |
|
|
118
|
-
| 2 | `
|
|
119
|
-
| 3 | `
|
|
120
|
-
| 4 | `
|
|
121
|
-
| 5 | `
|
|
118
|
+
| 2 | `prompt_toolkit` | **optional** |
|
|
119
|
+
| 3 | `pygments` | **optional** |
|
|
120
|
+
| 4 | `tkinter` | **optional** |
|
|
121
|
+
| 5 | `IPython` | **optional** |
|
|
122
122
|
|
|
123
123
|
### Status Explanation
|
|
124
124
|
- **required**: Required by PyScript entirely.
|
|
@@ -87,10 +87,10 @@ Familiar? There it is!
|
|
|
87
87
|
| 5 | `time` | **required (library)** |
|
|
88
88
|
| 6 | `tty` | **required (library)** |
|
|
89
89
|
| 1 | `beartype` | **optional** |
|
|
90
|
-
| 2 | `
|
|
91
|
-
| 3 | `
|
|
92
|
-
| 4 | `
|
|
93
|
-
| 5 | `
|
|
90
|
+
| 2 | `prompt_toolkit` | **optional** |
|
|
91
|
+
| 3 | `pygments` | **optional** |
|
|
92
|
+
| 4 | `tkinter` | **optional** |
|
|
93
|
+
| 5 | `IPython` | **optional** |
|
|
94
94
|
|
|
95
95
|
### Status Explanation
|
|
96
96
|
- **required**: Required by PyScript entirely.
|
{pyscript_programming_language-1.12.0 → pyscript_programming_language-1.12.2}/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.2"
|
|
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.0 → pyscript_programming_language-1.12.2}/pyscript/__init__.py
RENAMED
|
@@ -9,8 +9,8 @@ if __import__('sys').version_info < (3, 10):
|
|
|
9
9
|
from . import core
|
|
10
10
|
|
|
11
11
|
from .core.constants import (
|
|
12
|
-
DEFAULT, NO_COLOR, DEBUG, SILENT, RETURN_RESULT, DONT_SHOW_BANNER_ON_SHELL, CLASSIC_LINE_SHELL,
|
|
13
|
-
DICT_TO_JSDICT
|
|
12
|
+
DEFAULT, NO_COLOR, DEBUG, SILENT, RETURN_RESULT, DONT_SHOW_BANNER_ON_SHELL, CLASSIC_LINE_SHELL, NO_COLOR_PROMPT,
|
|
13
|
+
NOTEBOOK, LEXER_HIGHLIGHT, DICT_TO_JSDICT
|
|
14
14
|
)
|
|
15
15
|
from .core.cache import undefined
|
|
16
16
|
from .core.highlight import (
|
|
@@ -18,7 +18,7 @@ from .core.highlight import (
|
|
|
18
18
|
PygmentsPyScriptShellLexer
|
|
19
19
|
)
|
|
20
20
|
from .core.runner import pys_runner, pys_exec, pys_eval, pys_require, pys_shell
|
|
21
|
-
from .core.version import version, version_info, __version__, __date__
|
|
21
|
+
from .core.version import version, version_info, __version__, __date__, __author__
|
|
22
22
|
|
|
23
23
|
__all__ = (
|
|
24
24
|
'core',
|
|
@@ -29,6 +29,8 @@ __all__ = (
|
|
|
29
29
|
'RETURN_RESULT',
|
|
30
30
|
'DONT_SHOW_BANNER_ON_SHELL',
|
|
31
31
|
'CLASSIC_LINE_SHELL',
|
|
32
|
+
'NO_COLOR_PROMPT',
|
|
33
|
+
'NOTEBOOK',
|
|
32
34
|
'LEXER_HIGHLIGHT',
|
|
33
35
|
'DICT_TO_JSDICT',
|
|
34
36
|
'HLFMT_HTML',
|
{pyscript_programming_language-1.12.0 → pyscript_programming_language-1.12.2}/pyscript/__init__.pyi
RENAMED
|
@@ -4,7 +4,7 @@ if TYPE_CHECKING:
|
|
|
4
4
|
from .core.buffer import PysFileBuffer
|
|
5
5
|
from .core.cache import PysUndefined
|
|
6
6
|
from .core.context import PysContext
|
|
7
|
-
from .core.highlight import
|
|
7
|
+
from .core.highlight import PysHighlightFormatter
|
|
8
8
|
from .core.position import PysPosition
|
|
9
9
|
from .core.results import PysExecuteResult
|
|
10
10
|
from .core.symtab import PysSymbolTable
|
|
@@ -27,12 +27,14 @@ SILENT: int
|
|
|
27
27
|
RETURN_RESULT: int
|
|
28
28
|
DONT_SHOW_BANNER_ON_SHELL: int
|
|
29
29
|
CLASSIC_LINE_SHELL: int
|
|
30
|
+
NO_COLOR_PROMPT: int
|
|
31
|
+
NOTEBOOK: int
|
|
30
32
|
LEXER_HIGHLIGHT: int
|
|
31
33
|
DICT_TO_JSDICT: int
|
|
32
34
|
|
|
33
|
-
HLFMT_HTML:
|
|
34
|
-
HLFMT_ANSI:
|
|
35
|
-
HLFMT_BBCODE:
|
|
35
|
+
HLFMT_HTML: PysHighlightFormatter
|
|
36
|
+
HLFMT_ANSI: PysHighlightFormatter
|
|
37
|
+
HLFMT_BBCODE: PysHighlightFormatter
|
|
36
38
|
|
|
37
39
|
undefined: PysUndefined
|
|
38
40
|
version: str
|
|
@@ -93,4 +95,5 @@ def pys_shell(
|
|
|
93
95
|
|
|
94
96
|
__version__: str
|
|
95
97
|
__date__: str
|
|
98
|
+
__author__: tuple[str]
|
|
96
99
|
__all__: tuple[str]
|
{pyscript_programming_language-1.12.0 → pyscript_programming_language-1.12.2}/pyscript/__main__.py
RENAMED
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
from .core.buffer import PysFileBuffer
|
|
2
2
|
from .core.cache import pys_sys, undefined
|
|
3
3
|
from .core.constants import (
|
|
4
|
-
ENV_PYSCRIPT_CLASSIC_LINE_SHELL, DEFAULT, DEBUG, NO_COLOR, DONT_SHOW_BANNER_ON_SHELL,
|
|
4
|
+
ENV_PYSCRIPT_NO_COLOR_PROMPT, ENV_PYSCRIPT_CLASSIC_LINE_SHELL, DEFAULT, DEBUG, NO_COLOR, DONT_SHOW_BANNER_ON_SHELL,
|
|
5
|
+
CLASSIC_LINE_SHELL, NO_COLOR_PROMPT, NOTEBOOK
|
|
5
6
|
)
|
|
6
7
|
from .core.editor.gui import PysGUIEditor, GUI_SUPPORT
|
|
7
8
|
from .core.editor.terminal import PysTerminalEditor, TERMINAL_SUPPORT
|
|
@@ -9,6 +10,8 @@ from .core.highlight import (
|
|
|
9
10
|
PYGMENTS, HLFMT_HTML, HLFMT_ANSI, HLFMT_BBCODE, pys_highlight, PygmentsPyScriptStyle, PygmentsPyScriptLexer
|
|
10
11
|
)
|
|
11
12
|
from .core.runner import _normalize_namespace, pys_runner, pys_shell
|
|
13
|
+
from .core.utils.debug import USE_NOTEBOOK
|
|
14
|
+
from .core.utils.generic import is_environ
|
|
12
15
|
from .core.utils.module import remove_python_path
|
|
13
16
|
from .core.utils.path import getcwd, normpath, get_name_from_path
|
|
14
17
|
from .core.version import __version__
|
|
@@ -30,7 +33,6 @@ if PYGMENTS:
|
|
|
30
33
|
}
|
|
31
34
|
|
|
32
35
|
from argparse import OPTIONAL, REMAINDER, ArgumentParser
|
|
33
|
-
from os import environ
|
|
34
36
|
|
|
35
37
|
import sys
|
|
36
38
|
|
|
@@ -42,16 +44,24 @@ FORMAT_HIGHLIGHT_MAP = {
|
|
|
42
44
|
|
|
43
45
|
EDITOR_MAP = {}
|
|
44
46
|
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
47
|
+
for supported, name, class_editor in [
|
|
48
|
+
(GUI_SUPPORT, 'gui', PysGUIEditor),
|
|
49
|
+
(TERMINAL_SUPPORT, 'terminal', PysTerminalEditor)
|
|
50
|
+
]:
|
|
51
|
+
if supported:
|
|
52
|
+
EDITOR_MAP[name] = class_editor
|
|
49
53
|
|
|
50
54
|
parser = ArgumentParser(
|
|
51
55
|
prog=f'{get_name_from_path(sys.executable)} -m pyscript',
|
|
52
56
|
description=f'PyScript Launcher for Python Version {".".join(map(str, sys.version_info))}'
|
|
53
57
|
)
|
|
54
58
|
|
|
59
|
+
parser.add_argument(
|
|
60
|
+
'-b', '--notebook',
|
|
61
|
+
action='store_true',
|
|
62
|
+
help="combination of -k and -p flags, suitable for notebook platforms such as IPython, Jupyter, Google Colab, etc"
|
|
63
|
+
)
|
|
64
|
+
|
|
55
65
|
parser.add_argument(
|
|
56
66
|
'-c', '--command',
|
|
57
67
|
type=str,
|
|
@@ -98,6 +108,12 @@ parser.add_argument(
|
|
|
98
108
|
help="Suppress colored output"
|
|
99
109
|
)
|
|
100
110
|
|
|
111
|
+
parser.add_argument(
|
|
112
|
+
'-p', '--no-color-prompt',
|
|
113
|
+
action='store_true',
|
|
114
|
+
help="Suppress colored prompt output"
|
|
115
|
+
)
|
|
116
|
+
|
|
101
117
|
parser.add_argument(
|
|
102
118
|
'-r', '--py-recursion',
|
|
103
119
|
type=int,
|
|
@@ -140,7 +156,7 @@ parser.add_argument(
|
|
|
140
156
|
parser.add_argument(
|
|
141
157
|
'arg',
|
|
142
158
|
nargs=REMAINDER,
|
|
143
|
-
help="Remaining arguments stored in
|
|
159
|
+
help="Remaining arguments stored in pys_sys.argv (sys.argv)"
|
|
144
160
|
)
|
|
145
161
|
|
|
146
162
|
def argument_error(argument, message):
|
|
@@ -184,14 +200,17 @@ if args.py_recursion is not None:
|
|
|
184
200
|
code = 0
|
|
185
201
|
flags = DEFAULT
|
|
186
202
|
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
203
|
+
for condition, flag in [
|
|
204
|
+
(args.notebook or USE_NOTEBOOK, NOTEBOOK),
|
|
205
|
+
(args.debug, DEBUG),
|
|
206
|
+
(args.classic_line_shell or is_environ(ENV_PYSCRIPT_CLASSIC_LINE_SHELL), CLASSIC_LINE_SHELL),
|
|
207
|
+
(args.no_color or is_environ('NO_COLOR'), NO_COLOR),
|
|
208
|
+
(args.no_color_prompt or is_environ(ENV_PYSCRIPT_NO_COLOR_PROMPT), NO_COLOR_PROMPT),
|
|
209
|
+
(args.q, DONT_SHOW_BANNER_ON_SHELL)
|
|
210
|
+
]:
|
|
211
|
+
if condition:
|
|
212
|
+
flags |= flag
|
|
213
|
+
|
|
195
214
|
if args.P:
|
|
196
215
|
for cwd in {'', '.', getcwd()}:
|
|
197
216
|
remove_python_path(cwd)
|
{pyscript_programming_language-1.12.0 → pyscript_programming_language-1.12.2}/pyscript/core/cache.py
RENAMED
|
@@ -18,6 +18,7 @@ pys_sys = ModuleType(
|
|
|
18
18
|
pys_sys.__running_shell__ = False
|
|
19
19
|
pys_sys.__running_breakpoint__ = False
|
|
20
20
|
pys_sys.argv = ['']
|
|
21
|
+
pys_sys.flags = 0
|
|
21
22
|
pys_sys.displayhook = print_display
|
|
22
23
|
pys_sys.excepthook = print_traceback
|
|
23
24
|
pys_sys.clearhook = clear_shell
|
|
@@ -42,7 +43,8 @@ pys_sys.getsizeof = sys.getsizeof
|
|
|
42
43
|
pys_sys.setrecursionlimit = sys.setrecursionlimit
|
|
43
44
|
|
|
44
45
|
# added in python>=3.10.7
|
|
45
|
-
if hasattr(sys, 'set_int_max_str_digits'):
|
|
46
|
+
if hasattr(sys, 'get_int_max_str_digits') and hasattr(sys, 'set_int_max_str_digits'):
|
|
47
|
+
pys_sys.get_int_max_str_digits = sys.get_int_max_str_digits
|
|
46
48
|
pys_sys.set_int_max_str_digits = sys.set_int_max_str_digits
|
|
47
49
|
|
|
48
50
|
pys_sys.path = [SITE_PACKAGES_PATH, LIBRARIES_PATH]
|
|
@@ -14,6 +14,7 @@ ENV_PYSCRIPT_NO_EXCEPTHOOK = 'PYSCRIPT_NO_EXCEPTHOOK'
|
|
|
14
14
|
ENV_PYSCRIPT_NO_GIL = 'PYSCRIPT_NO_GIL'
|
|
15
15
|
ENV_PYSCRIPT_NO_READLINE = 'PYSCRIPT_NO_READLINE'
|
|
16
16
|
ENV_PYSCRIPT_NO_TYPECHECK = 'PYSCRIPT_NO_TYPECHECK'
|
|
17
|
+
ENV_PYSCRIPT_NO_COLOR_PROMPT = 'PYSCRIPT_NO_COLOR_PROMPT'
|
|
17
18
|
ENV_PYSCRIPT_MAXIMUM_TRACEBACK_LINE = 'PYSCRIPT_MAXIMUM_TRACEBACK_LINE'
|
|
18
19
|
ENV_PYSCRIPT_CLASSIC_LINE_SHELL = 'PYSCRIPT_CLASSIC_LINE_SHELL'
|
|
19
20
|
|
|
@@ -117,6 +118,8 @@ SILENT = 1 << 2
|
|
|
117
118
|
RETURN_RESULT = 1 << 3
|
|
118
119
|
DONT_SHOW_BANNER_ON_SHELL = 1 << 4
|
|
119
120
|
CLASSIC_LINE_SHELL = 1 << 5
|
|
121
|
+
NO_COLOR_PROMPT = 1 << 6
|
|
122
|
+
NOTEBOOK = CLASSIC_LINE_SHELL | NO_COLOR_PROMPT
|
|
120
123
|
|
|
121
124
|
# parser flags
|
|
122
125
|
LEXER_HIGHLIGHT = 1 << 0
|
|
@@ -36,9 +36,6 @@ class PysContext(Pys):
|
|
|
36
36
|
setimuattr(self, 'parent', parent)
|
|
37
37
|
setimuattr(self, 'parent_entry_position', parent_entry_position)
|
|
38
38
|
|
|
39
|
-
def __repr__(self) -> str:
|
|
40
|
-
return f'<Context {self.name!r}>'
|
|
41
|
-
|
|
42
39
|
class PysClassContext(PysContext):
|
|
43
40
|
|
|
44
41
|
__slots__ = ()
|
|
@@ -8,8 +8,6 @@ from os.path import basename
|
|
|
8
8
|
|
|
9
9
|
class PysEditor(Pys):
|
|
10
10
|
|
|
11
|
-
__slots__ = ('file', 'used', 'modified', 'wrapped', 'basename')
|
|
12
|
-
|
|
13
11
|
@typechecked
|
|
14
12
|
def __init__(self, file: PysFileBuffer) -> None:
|
|
15
13
|
self.file = file
|
|
@@ -23,11 +21,15 @@ class PysEditor(Pys):
|
|
|
23
21
|
inheritable(cls)
|
|
24
22
|
|
|
25
23
|
def save(self, text) -> None:
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
file.
|
|
29
|
-
|
|
30
|
-
|
|
24
|
+
try:
|
|
25
|
+
text = normstr(text)
|
|
26
|
+
with open(self.file.name, 'w', encoding='utf-8') as file:
|
|
27
|
+
file.write(text)
|
|
28
|
+
setimuattr(self.file, 'text', text)
|
|
29
|
+
except:
|
|
30
|
+
pass
|
|
31
|
+
else:
|
|
32
|
+
self.modified = False
|
|
31
33
|
|
|
32
34
|
def run(self) -> None:
|
|
33
35
|
if self.used:
|
|
@@ -5,7 +5,7 @@ from ..highlight import PygmentsPyScriptStyle, PygmentsPyScriptLexer
|
|
|
5
5
|
from ..version import __version__
|
|
6
6
|
|
|
7
7
|
try:
|
|
8
|
-
from tkinter import
|
|
8
|
+
from tkinter import Tk, Scrollbar, Text, messagebox
|
|
9
9
|
from tkinter.font import Font
|
|
10
10
|
|
|
11
11
|
class PysGUIEditor(PysEditor, Tk):
|
|
@@ -15,18 +15,13 @@ try:
|
|
|
15
15
|
Tk.__init__(self)
|
|
16
16
|
|
|
17
17
|
try:
|
|
18
|
-
self.
|
|
18
|
+
self.wm_iconbitmap(ICON_PATH)
|
|
19
19
|
except:
|
|
20
20
|
pass
|
|
21
21
|
|
|
22
22
|
self.lexer = PygmentsPyScriptLexer()
|
|
23
|
-
self.style = PygmentsPyScriptStyle
|
|
24
|
-
|
|
25
23
|
self.font = Font(family='Consolas', size=10)
|
|
26
|
-
|
|
27
24
|
self.scrollbar = Scrollbar(self)
|
|
28
|
-
self.scrollbar.pack_configure(side='right', fill='y')
|
|
29
|
-
|
|
30
25
|
self.text = Text(
|
|
31
26
|
self,
|
|
32
27
|
undo=True,
|
|
@@ -40,12 +35,15 @@ try:
|
|
|
40
35
|
)
|
|
41
36
|
|
|
42
37
|
self.text.pack_configure(side='left', expand=True, fill='both')
|
|
43
|
-
self.scrollbar.configure(command=self.text.yview)
|
|
44
38
|
|
|
45
39
|
self.text.insert('1.0', self.file.text)
|
|
46
40
|
self.text.edit_modified(False)
|
|
47
41
|
|
|
48
42
|
self.text.bind('<<Modified>>', self.on_modified)
|
|
43
|
+
self.text.bind('<Return>', self.on_enter)
|
|
44
|
+
|
|
45
|
+
self.scrollbar.pack_configure(side='right', fill='y')
|
|
46
|
+
self.scrollbar.configure(command=self.text.yview)
|
|
49
47
|
|
|
50
48
|
self.bind_all('<Control-S>', self.on_save)
|
|
51
49
|
self.bind_all('<Control-s>', self.on_save)
|
|
@@ -56,7 +54,7 @@ try:
|
|
|
56
54
|
self.bind_all('<Control-equal>', self.on_change_font(1, lambda size : size < 128))
|
|
57
55
|
self.bind_all('<Control-plus>', self.on_change_font(5, lambda size : size < 128))
|
|
58
56
|
|
|
59
|
-
self.
|
|
57
|
+
self.wm_protocol('WM_DELETE_WINDOW', self.on_close)
|
|
60
58
|
|
|
61
59
|
self.setup_tags()
|
|
62
60
|
self.update()
|
|
@@ -67,7 +65,7 @@ try:
|
|
|
67
65
|
|
|
68
66
|
def setup_tags(self):
|
|
69
67
|
tag_configure = self.text.tag_configure
|
|
70
|
-
for token, style in
|
|
68
|
+
for token, style in PygmentsPyScriptStyle.list_styles():
|
|
71
69
|
if color := style['color']:
|
|
72
70
|
tag_configure(str(token), foreground=f'#{color}')
|
|
73
71
|
|
|
@@ -85,15 +83,15 @@ try:
|
|
|
85
83
|
|
|
86
84
|
for tag in text.tag_names():
|
|
87
85
|
if tag != 'sel':
|
|
88
|
-
text_tag_remove(tag, '1.0',
|
|
86
|
+
text_tag_remove(tag, '1.0', 'end')
|
|
89
87
|
|
|
90
|
-
for type, value in self.lexer.get_tokens(text.get('1.0',
|
|
88
|
+
for type, value in self.lexer.get_tokens(text.get('1.0', 'end')):
|
|
91
89
|
end_index = text_index(f'{index} + {get_length(value)} chars')
|
|
92
90
|
text_tag_add(to_string(type), index, end_index)
|
|
93
91
|
index = end_index
|
|
94
92
|
|
|
95
93
|
def on_save(self, event=None):
|
|
96
|
-
self.save(self.text.get('1.0',
|
|
94
|
+
self.save(self.text.get('1.0', 'end'))
|
|
97
95
|
self.update()
|
|
98
96
|
return 'break'
|
|
99
97
|
|
|
@@ -129,9 +127,15 @@ try:
|
|
|
129
127
|
self.text.configure(wrap='char' if self.wrapped else 'none')
|
|
130
128
|
return 'break'
|
|
131
129
|
|
|
130
|
+
def on_enter(self, event=None):
|
|
131
|
+
text = self.text
|
|
132
|
+
line = text.get('insert linestart', 'insert lineend')
|
|
133
|
+
text.insert('insert', '\n' + line[:len(line) - len(line.lstrip())])
|
|
134
|
+
return 'break'
|
|
135
|
+
|
|
132
136
|
GUI_SUPPORT = True
|
|
133
137
|
|
|
134
|
-
except
|
|
138
|
+
except BaseException as e:
|
|
135
139
|
_error = e
|
|
136
140
|
|
|
137
141
|
class PysGUIEditor(PysEditor):
|
|
@@ -8,7 +8,6 @@ try:
|
|
|
8
8
|
from prompt_toolkit.filters import Condition
|
|
9
9
|
from prompt_toolkit.formatted_text import ANSI
|
|
10
10
|
from prompt_toolkit.key_binding import KeyBindings
|
|
11
|
-
from prompt_toolkit.keys import Keys
|
|
12
11
|
from prompt_toolkit.layout import Layout, HSplit, Window, Float, FloatContainer
|
|
13
12
|
from prompt_toolkit.layout.containers import ConditionalContainer
|
|
14
13
|
from prompt_toolkit.layout.controls import FormattedTextControl
|
|
@@ -23,7 +22,6 @@ try:
|
|
|
23
22
|
PysEditor.__init__(self, file)
|
|
24
23
|
|
|
25
24
|
self.show_exit_window = False
|
|
26
|
-
self.overwrite = False
|
|
27
25
|
|
|
28
26
|
on_edit = Condition(lambda: not self.show_exit_window)
|
|
29
27
|
on_exit = Condition(lambda: self.show_exit_window)
|
|
@@ -53,39 +51,45 @@ try:
|
|
|
53
51
|
filter=on_exit,
|
|
54
52
|
)
|
|
55
53
|
|
|
56
|
-
|
|
54
|
+
key_bindings = KeyBindings()
|
|
57
55
|
|
|
58
|
-
@
|
|
56
|
+
@key_bindings.add('tab', filter=on_edit, eager=True)
|
|
59
57
|
def _(event):
|
|
60
58
|
self.text.buffer.insert_text('\t')
|
|
61
59
|
|
|
62
|
-
@
|
|
63
|
-
def _(event):
|
|
64
|
-
self.overwrite = not self.overwrite
|
|
65
|
-
|
|
66
|
-
@self.key_bindings.add('pageup', filter=on_edit, eager=True)
|
|
60
|
+
@key_bindings.add('pageup', filter=on_edit, eager=True)
|
|
67
61
|
def _(event):
|
|
68
62
|
self.current_buffer.cursor_position = 0
|
|
69
63
|
|
|
70
|
-
@
|
|
64
|
+
@key_bindings.add('pagedown', filter=on_edit, eager=True)
|
|
71
65
|
def _(event):
|
|
72
66
|
buffer = self.current_buffer
|
|
73
67
|
buffer.cursor_position = len(buffer.text)
|
|
74
68
|
|
|
75
|
-
@
|
|
69
|
+
@key_bindings.add('enter', filter=on_edit, eager=True)
|
|
70
|
+
def _(event):
|
|
71
|
+
buffer = self.current_buffer
|
|
72
|
+
line = buffer.document.current_line_before_cursor
|
|
73
|
+
buffer.insert_text('\n' + line[:len(line) - len(line.lstrip())])
|
|
74
|
+
|
|
75
|
+
@key_bindings.add('c-w', filter=on_edit, eager=True)
|
|
76
76
|
def _(event):
|
|
77
77
|
self.wrapped = not self.wrapped
|
|
78
78
|
|
|
79
|
-
@
|
|
79
|
+
@key_bindings.add('c-y', filter=on_edit, eager=True)
|
|
80
|
+
def _(event):
|
|
81
|
+
self.current_buffer.redo()
|
|
82
|
+
|
|
83
|
+
@key_bindings.add('c-z', filter=on_edit, eager=True)
|
|
80
84
|
def _(event):
|
|
81
85
|
self.current_buffer.undo()
|
|
82
86
|
|
|
83
|
-
@
|
|
87
|
+
@key_bindings.add('c-s', filter=on_edit, eager=True)
|
|
84
88
|
def _(event):
|
|
85
89
|
self.save(self.text.text)
|
|
86
90
|
|
|
87
|
-
@
|
|
88
|
-
@
|
|
91
|
+
@key_bindings.add('c-x', filter=on_edit, eager=True)
|
|
92
|
+
@key_bindings.add('escape', filter=on_edit, eager=True)
|
|
89
93
|
def _(event):
|
|
90
94
|
if self.modified:
|
|
91
95
|
self.show_exit_window = True
|
|
@@ -93,32 +97,22 @@ try:
|
|
|
93
97
|
else:
|
|
94
98
|
self.exit()
|
|
95
99
|
|
|
96
|
-
@
|
|
100
|
+
@key_bindings.add('y', filter=on_exit)
|
|
97
101
|
def _(event):
|
|
98
102
|
self.save(self.text.text)
|
|
99
103
|
self.show_exit_window = False
|
|
100
104
|
self.exit()
|
|
101
105
|
|
|
102
|
-
@
|
|
106
|
+
@key_bindings.add('n', filter=on_exit)
|
|
103
107
|
def _(event):
|
|
104
108
|
self.show_exit_window = False
|
|
105
109
|
self.exit()
|
|
106
110
|
|
|
107
|
-
@
|
|
111
|
+
@key_bindings.add('c', filter=on_exit)
|
|
108
112
|
def _(event):
|
|
109
113
|
self.show_exit_window = False
|
|
110
114
|
self.layout.focus(self.text)
|
|
111
115
|
|
|
112
|
-
@self.key_bindings.add(Keys.Any, filter=on_edit)
|
|
113
|
-
def _(event):
|
|
114
|
-
buffer = self.current_buffer
|
|
115
|
-
text = event.data
|
|
116
|
-
if self.overwrite and buffer.cursor_position < len(buffer.text):
|
|
117
|
-
buffer.delete(1)
|
|
118
|
-
buffer.insert_text(text)
|
|
119
|
-
else:
|
|
120
|
-
buffer.insert_text(text)
|
|
121
|
-
|
|
122
116
|
self.root = FloatContainer(
|
|
123
117
|
content=HSplit(
|
|
124
118
|
[
|
|
@@ -142,7 +136,7 @@ try:
|
|
|
142
136
|
self,
|
|
143
137
|
layout=Layout(self.root),
|
|
144
138
|
style=style_from_pygments_cls(PygmentsPyScriptStyle),
|
|
145
|
-
key_bindings=
|
|
139
|
+
key_bindings=key_bindings,
|
|
146
140
|
full_screen=True,
|
|
147
141
|
mouse_support=True,
|
|
148
142
|
paste_mode=True
|
|
@@ -165,7 +159,7 @@ try:
|
|
|
165
159
|
|
|
166
160
|
TERMINAL_SUPPORT = True
|
|
167
161
|
|
|
168
|
-
except
|
|
162
|
+
except BaseException as e:
|
|
169
163
|
_error = e
|
|
170
164
|
|
|
171
165
|
class PysTerminalEditor(PysEditor):
|
|
@@ -14,22 +14,22 @@ if TYPE_CHECKING:
|
|
|
14
14
|
@immutable
|
|
15
15
|
class PysTraceback(Pys):
|
|
16
16
|
|
|
17
|
-
__slots__ = ('exception', 'context', 'position', '
|
|
17
|
+
__slots__ = ('exception', 'context', 'position', 'primary', 'implicit')
|
|
18
18
|
|
|
19
19
|
def __init__(
|
|
20
20
|
self,
|
|
21
21
|
exception: BaseException | type[BaseException],
|
|
22
22
|
context: 'PysContext',
|
|
23
23
|
position: 'PysPosition',
|
|
24
|
-
|
|
25
|
-
|
|
24
|
+
primary: Optional['PysTraceback'] = None,
|
|
25
|
+
implicit: bool = False
|
|
26
26
|
) -> None:
|
|
27
27
|
|
|
28
28
|
setimuattr(self, 'exception', exception)
|
|
29
29
|
setimuattr(self, 'context', context)
|
|
30
30
|
setimuattr(self, 'position', position)
|
|
31
|
-
setimuattr(self, '
|
|
32
|
-
setimuattr(self, '
|
|
31
|
+
setimuattr(self, 'primary', primary)
|
|
32
|
+
setimuattr(self, 'implicit', implicit)
|
|
33
33
|
|
|
34
34
|
def __repr__(self) -> str:
|
|
35
35
|
return f'<traceback of exception {self.exception!r}>'
|
|
@@ -97,14 +97,13 @@ class PysTraceback(Pys):
|
|
|
97
97
|
result += f': {magenta}{message}{reset}'
|
|
98
98
|
|
|
99
99
|
return (
|
|
100
|
-
self.cause.string_traceback() +
|
|
101
100
|
(
|
|
102
|
-
'\n\
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
result
|
|
101
|
+
f'{self.primary.string_traceback()}\n\n' + (
|
|
102
|
+
"The above exception was the direct cause of the following exception"
|
|
103
|
+
if self.implicit else
|
|
104
|
+
"During handling of the above exception, another exception occurred"
|
|
105
|
+
) + f':\n\n{result}'
|
|
106
|
+
) if self.primary else result
|
|
108
107
|
)
|
|
109
108
|
|
|
110
109
|
class PysSignal(Pys, BaseException):
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
from .cache import pys_sys
|
|
2
2
|
from .constants import ENV_PYSCRIPT_NO_GIL
|
|
3
3
|
from .objects import PysFunction
|
|
4
|
+
from .utils.generic import is_environ
|
|
4
5
|
|
|
5
|
-
from os import environ
|
|
6
6
|
from types import MethodType
|
|
7
7
|
|
|
8
8
|
wrapper_function = (MethodType, classmethod, staticmethod)
|
|
9
9
|
|
|
10
|
-
if
|
|
10
|
+
if not is_environ(ENV_PYSCRIPT_NO_GIL):
|
|
11
11
|
from threading import RLock
|
|
12
12
|
|
|
13
13
|
lock = RLock()
|
|
@@ -351,17 +351,17 @@ try:
|
|
|
351
351
|
tokens = PygmentsPyScriptLexer.tokens.copy()
|
|
352
352
|
tokens['root'] = [
|
|
353
353
|
# Shell prompts
|
|
354
|
-
(r'
|
|
354
|
+
(r'\A/(clear|clean|exit)\Z', Generic.Prompt)
|
|
355
355
|
] + tokens['root']
|
|
356
356
|
|
|
357
|
-
PYGMENTS = True
|
|
358
|
-
|
|
359
357
|
del (
|
|
360
358
|
_set_constant_keywords, _unicode_name, _newlines, _integer, _scientific, _imaginary, _dollar,
|
|
361
359
|
_raw_string_prefixes, _string_or_bytes_prefixes,
|
|
362
360
|
)
|
|
363
361
|
|
|
364
|
-
|
|
362
|
+
PYGMENTS = True
|
|
363
|
+
|
|
364
|
+
except BaseException as e:
|
|
365
365
|
_error = e
|
|
366
366
|
|
|
367
367
|
class PygmentsPyScriptStyle(Pys):
|
|
@@ -378,7 +378,7 @@ except ImportError as e:
|
|
|
378
378
|
PYGMENTS = False
|
|
379
379
|
|
|
380
380
|
@typechecked
|
|
381
|
-
class
|
|
381
|
+
class PysHighlightFormatter(Pys):
|
|
382
382
|
|
|
383
383
|
def __init__(
|
|
384
384
|
self,
|
|
@@ -420,19 +420,19 @@ def _ansi_open_block(position, type):
|
|
|
420
420
|
color = HIGHLIGHT_MAP.get(type, HIGHLIGHT_MAP['default'])
|
|
421
421
|
return acolor(int(color[i:i+2], 16) for i in range(1, 6, 2))
|
|
422
422
|
|
|
423
|
-
HLFMT_HTML =
|
|
423
|
+
HLFMT_HTML = PysHighlightFormatter(
|
|
424
424
|
lambda position, content: normstr(html_escape(content)).replace('\n', '<br>'),
|
|
425
425
|
lambda position, type: f'<span style="color:{HIGHLIGHT_MAP.get(type, HIGHLIGHT_MAP["default"])}">',
|
|
426
426
|
lambda position, type: '</span>',
|
|
427
427
|
)
|
|
428
428
|
|
|
429
|
-
HLFMT_ANSI =
|
|
429
|
+
HLFMT_ANSI = PysHighlightFormatter(
|
|
430
430
|
lambda position, content: normstr(content),
|
|
431
431
|
_ansi_open_block,
|
|
432
432
|
lambda position, type: '\x1b[0m',
|
|
433
433
|
)
|
|
434
434
|
|
|
435
|
-
HLFMT_BBCODE =
|
|
435
|
+
HLFMT_BBCODE = PysHighlightFormatter(
|
|
436
436
|
lambda position, content: normstr(content),
|
|
437
437
|
lambda position, type: f'[color={HIGHLIGHT_MAP.get(type, HIGHLIGHT_MAP["default"])}]',
|
|
438
438
|
lambda position, type: '[/color]',
|