pyscript-programming-language 1.12.7__tar.gz → 1.12.9__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.7 → pyscript_programming_language-1.12.9}/PKG-INFO +7 -6
- {pyscript_programming_language-1.12.7 → pyscript_programming_language-1.12.9}/README.md +6 -5
- pyscript_programming_language-1.12.9/changelog.md +11 -0
- {pyscript_programming_language-1.12.7 → pyscript_programming_language-1.12.9}/pyproject.toml +1 -1
- {pyscript_programming_language-1.12.7 → pyscript_programming_language-1.12.9}/pyscript/__main__.py +3 -2
- {pyscript_programming_language-1.12.7 → pyscript_programming_language-1.12.9}/pyscript/core/analyzer.py +7 -5
- {pyscript_programming_language-1.12.7 → pyscript_programming_language-1.12.9}/pyscript/core/editor/bases.py +2 -1
- {pyscript_programming_language-1.12.7 → pyscript_programming_language-1.12.9}/pyscript/core/editor/gui.py +34 -30
- {pyscript_programming_language-1.12.7 → pyscript_programming_language-1.12.9}/pyscript/core/editor/terminal.py +59 -19
- {pyscript_programming_language-1.12.7 → pyscript_programming_language-1.12.9}/pyscript/core/exceptions.py +2 -1
- {pyscript_programming_language-1.12.7 → pyscript_programming_language-1.12.9}/pyscript/core/handlers.py +11 -4
- {pyscript_programming_language-1.12.7 → pyscript_programming_language-1.12.9}/pyscript/core/interpreter.py +117 -65
- {pyscript_programming_language-1.12.7 → pyscript_programming_language-1.12.9}/pyscript/core/lexer.py +2 -1
- {pyscript_programming_language-1.12.7 → pyscript_programming_language-1.12.9}/pyscript/core/nodes.py +1 -1
- {pyscript_programming_language-1.12.7 → pyscript_programming_language-1.12.9}/pyscript/core/objects.py +11 -6
- {pyscript_programming_language-1.12.7 → pyscript_programming_language-1.12.9}/pyscript/core/parser.py +13 -11
- {pyscript_programming_language-1.12.7 → pyscript_programming_language-1.12.9}/pyscript/core/pysbuiltins.py +18 -14
- {pyscript_programming_language-1.12.7 → pyscript_programming_language-1.12.9}/pyscript/core/results.py +8 -4
- {pyscript_programming_language-1.12.7 → pyscript_programming_language-1.12.9}/pyscript/core/runner.py +12 -9
- {pyscript_programming_language-1.12.7 → pyscript_programming_language-1.12.9}/pyscript/core/shell.py +47 -16
- {pyscript_programming_language-1.12.7 → pyscript_programming_language-1.12.9}/pyscript/core/symtab.py +9 -3
- {pyscript_programming_language-1.12.7 → pyscript_programming_language-1.12.9}/pyscript/core/utils/ansi.py +2 -1
- {pyscript_programming_language-1.12.7 → pyscript_programming_language-1.12.9}/pyscript/core/utils/debug.py +6 -6
- {pyscript_programming_language-1.12.7 → pyscript_programming_language-1.12.9}/pyscript/core/utils/generic.py +2 -1
- {pyscript_programming_language-1.12.7 → pyscript_programming_language-1.12.9}/pyscript/core/utils/similarity.py +3 -2
- {pyscript_programming_language-1.12.7 → pyscript_programming_language-1.12.9}/pyscript/core/utils/string.py +2 -1
- {pyscript_programming_language-1.12.7 → pyscript_programming_language-1.12.9}/pyscript/core/version.py +5 -8
- {pyscript_programming_language-1.12.7 → pyscript_programming_language-1.12.9}/pyscript/lib/__hello__.pys +1 -1
- {pyscript_programming_language-1.12.7 → pyscript_programming_language-1.12.9}/pyscript/lib/ast/ast_literal_eval.py +12 -7
- {pyscript_programming_language-1.12.7 → pyscript_programming_language-1.12.9}/pyscript/lib/ast/ast_unparse.py +31 -20
- {pyscript_programming_language-1.12.7 → pyscript_programming_language-1.12.9}/pyscript/lib/ast/ast_walk.py +4 -1
- {pyscript_programming_language-1.12.7 → pyscript_programming_language-1.12.9}/pyscript/lib/brainfuck.pys +3 -3
- {pyscript_programming_language-1.12.7 → pyscript_programming_language-1.12.9}/pyscript/lib/history.pys +5 -7
- pyscript_programming_language-1.12.9/pyscript/lib/keyword.pys +2 -0
- {pyscript_programming_language-1.12.7 → pyscript_programming_language-1.12.9}/pyscript/lib/parser.pys +1 -1
- {pyscript_programming_language-1.12.7 → pyscript_programming_language-1.12.9}/pyscript/lib/tokenize/tok_untokenize.py +23 -1
- {pyscript_programming_language-1.12.7 → pyscript_programming_language-1.12.9}/pyscript/site-packages/this.pys +1 -1
- {pyscript_programming_language-1.12.7 → pyscript_programming_language-1.12.9}/pyscript_programming_language.egg-info/PKG-INFO +7 -6
- {pyscript_programming_language-1.12.7 → pyscript_programming_language-1.12.9}/setup.py +1 -1
- pyscript_programming_language-1.12.7/changelog.md +0 -12
- pyscript_programming_language-1.12.7/pyscript/lib/keyword.pys +0 -2
- {pyscript_programming_language-1.12.7 → pyscript_programming_language-1.12.9}/MANIFEST.in +0 -0
- {pyscript_programming_language-1.12.7 → pyscript_programming_language-1.12.9}/pyscript/__init__.py +0 -0
- {pyscript_programming_language-1.12.7 → pyscript_programming_language-1.12.9}/pyscript/__init__.pyi +0 -0
- {pyscript_programming_language-1.12.7 → pyscript_programming_language-1.12.9}/pyscript/core/__init__.py +0 -0
- {pyscript_programming_language-1.12.7 → pyscript_programming_language-1.12.9}/pyscript/core/bases.py +0 -0
- {pyscript_programming_language-1.12.7 → pyscript_programming_language-1.12.9}/pyscript/core/buffer.py +0 -0
- {pyscript_programming_language-1.12.7 → pyscript_programming_language-1.12.9}/pyscript/core/cache.py +0 -0
- {pyscript_programming_language-1.12.7 → pyscript_programming_language-1.12.9}/pyscript/core/checks.py +0 -0
- {pyscript_programming_language-1.12.7 → pyscript_programming_language-1.12.9}/pyscript/core/constants.py +0 -0
- {pyscript_programming_language-1.12.7 → pyscript_programming_language-1.12.9}/pyscript/core/context.py +0 -0
- {pyscript_programming_language-1.12.7 → pyscript_programming_language-1.12.9}/pyscript/core/editor/__init__.py +0 -0
- {pyscript_programming_language-1.12.7 → pyscript_programming_language-1.12.9}/pyscript/core/highlight.py +0 -0
- {pyscript_programming_language-1.12.7 → pyscript_programming_language-1.12.9}/pyscript/core/mapping.py +0 -0
- {pyscript_programming_language-1.12.7 → pyscript_programming_language-1.12.9}/pyscript/core/position.py +0 -0
- {pyscript_programming_language-1.12.7 → pyscript_programming_language-1.12.9}/pyscript/core/token.py +0 -0
- {pyscript_programming_language-1.12.7 → pyscript_programming_language-1.12.9}/pyscript/core/utils/__init__.py +0 -0
- {pyscript_programming_language-1.12.7 → pyscript_programming_language-1.12.9}/pyscript/core/utils/decorators.py +0 -0
- {pyscript_programming_language-1.12.7 → pyscript_programming_language-1.12.9}/pyscript/core/utils/jsdict.py +0 -0
- {pyscript_programming_language-1.12.7 → pyscript_programming_language-1.12.9}/pyscript/core/utils/module.py +0 -0
- {pyscript_programming_language-1.12.7 → pyscript_programming_language-1.12.9}/pyscript/core/utils/path.py +0 -0
- {pyscript_programming_language-1.12.7 → pyscript_programming_language-1.12.9}/pyscript/lib/ansi.pys +0 -0
- {pyscript_programming_language-1.12.7 → pyscript_programming_language-1.12.9}/pyscript/lib/ast/__init__.pys +0 -0
- {pyscript_programming_language-1.12.7 → pyscript_programming_language-1.12.9}/pyscript/lib/ast/ast_dump.py +0 -0
- {pyscript_programming_language-1.12.7 → pyscript_programming_language-1.12.9}/pyscript/lib/dis.pys +0 -0
- {pyscript_programming_language-1.12.7 → pyscript_programming_language-1.12.9}/pyscript/lib/explorer.pys +0 -0
- {pyscript_programming_language-1.12.7 → pyscript_programming_language-1.12.9}/pyscript/lib/fpstimer/__init__.pys +0 -0
- {pyscript_programming_language-1.12.7 → pyscript_programming_language-1.12.9}/pyscript/lib/fpstimer/py_fpstimer.py +0 -0
- {pyscript_programming_language-1.12.7 → pyscript_programming_language-1.12.9}/pyscript/lib/getch/__init__.pys +0 -0
- {pyscript_programming_language-1.12.7 → pyscript_programming_language-1.12.9}/pyscript/lib/getch/py_getch.py +0 -0
- {pyscript_programming_language-1.12.7 → pyscript_programming_language-1.12.9}/pyscript/lib/inspect.pys +0 -0
- {pyscript_programming_language-1.12.7 → pyscript_programming_language-1.12.9}/pyscript/lib/jsdict.pys +0 -0
- {pyscript_programming_language-1.12.7 → pyscript_programming_language-1.12.9}/pyscript/lib/opcode.pys +0 -0
- {pyscript_programming_language-1.12.7 → pyscript_programming_language-1.12.9}/pyscript/lib/pdisplay.pys +0 -0
- {pyscript_programming_language-1.12.7 → pyscript_programming_language-1.12.9}/pyscript/lib/site.pys +0 -0
- {pyscript_programming_language-1.12.7 → pyscript_programming_language-1.12.9}/pyscript/lib/symtable.pys +0 -0
- {pyscript_programming_language-1.12.7 → pyscript_programming_language-1.12.9}/pyscript/lib/token.pys +0 -0
- {pyscript_programming_language-1.12.7 → pyscript_programming_language-1.12.9}/pyscript/lib/tokenize/__init__.pys +0 -0
- {pyscript_programming_language-1.12.7 → pyscript_programming_language-1.12.9}/pyscript/other/.nomedia +0 -0
- {pyscript_programming_language-1.12.7 → pyscript_programming_language-1.12.9}/pyscript/other/PyScript.ico +0 -0
- {pyscript_programming_language-1.12.7 → pyscript_programming_language-1.12.9}/pyscript/other/copyright +0 -0
- {pyscript_programming_language-1.12.7 → pyscript_programming_language-1.12.9}/pyscript/other/credits +0 -0
- {pyscript_programming_language-1.12.7 → pyscript_programming_language-1.12.9}/pyscript/other/license +0 -0
- {pyscript_programming_language-1.12.7 → pyscript_programming_language-1.12.9}/pyscript/this.py +0 -0
- {pyscript_programming_language-1.12.7 → pyscript_programming_language-1.12.9}/pyscript_programming_language.egg-info/SOURCES.txt +0 -0
- {pyscript_programming_language-1.12.7 → pyscript_programming_language-1.12.9}/pyscript_programming_language.egg-info/dependency_links.txt +0 -0
- {pyscript_programming_language-1.12.7 → pyscript_programming_language-1.12.9}/pyscript_programming_language.egg-info/requires.txt +0 -0
- {pyscript_programming_language-1.12.7 → pyscript_programming_language-1.12.9}/pyscript_programming_language.egg-info/top_level.txt +0 -0
- {pyscript_programming_language-1.12.7 → pyscript_programming_language-1.12.9}/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.9
|
|
4
4
|
Summary: PyScript Programming Language
|
|
5
5
|
Home-page: https://azzammuhyala.github.io/pyscript
|
|
6
6
|
Author: azzammuhyala
|
|
@@ -103,11 +103,12 @@ Familiar? There it is!
|
|
|
103
103
|
| 12 | `operator` | **required** |
|
|
104
104
|
| 13 | `os` | **required** |
|
|
105
105
|
| 14 | `re` | **required** |
|
|
106
|
-
| 15 | `
|
|
107
|
-
| 16 | `
|
|
108
|
-
| 17 | `
|
|
109
|
-
| 18 | `
|
|
110
|
-
| 19 | `
|
|
106
|
+
| 15 | `subprocess` | **required** |
|
|
107
|
+
| 16 | `sys` | **required** |
|
|
108
|
+
| 17 | `threading` | **required** |
|
|
109
|
+
| 18 | `types` | **required** |
|
|
110
|
+
| 19 | `typing` | **required** |
|
|
111
|
+
| 20 | `unicodedata` | **required** |
|
|
111
112
|
| 1 | `ast` | **required (library)** |
|
|
112
113
|
| 2 | `msvcrt` | **required (library)** |
|
|
113
114
|
| 3 | `pprint` | **required (library)** |
|
|
@@ -75,11 +75,12 @@ Familiar? There it is!
|
|
|
75
75
|
| 12 | `operator` | **required** |
|
|
76
76
|
| 13 | `os` | **required** |
|
|
77
77
|
| 14 | `re` | **required** |
|
|
78
|
-
| 15 | `
|
|
79
|
-
| 16 | `
|
|
80
|
-
| 17 | `
|
|
81
|
-
| 18 | `
|
|
82
|
-
| 19 | `
|
|
78
|
+
| 15 | `subprocess` | **required** |
|
|
79
|
+
| 16 | `sys` | **required** |
|
|
80
|
+
| 17 | `threading` | **required** |
|
|
81
|
+
| 18 | `types` | **required** |
|
|
82
|
+
| 19 | `typing` | **required** |
|
|
83
|
+
| 20 | `unicodedata` | **required** |
|
|
83
84
|
| 1 | `ast` | **required (library)** |
|
|
84
85
|
| 2 | `msvcrt` | **required (library)** |
|
|
85
86
|
| 3 | `pprint` | **required (library)** |
|
{pyscript_programming_language-1.12.7 → pyscript_programming_language-1.12.9}/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.9"
|
|
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.7 → pyscript_programming_language-1.12.9}/pyscript/__main__.py
RENAMED
|
@@ -236,7 +236,7 @@ try:
|
|
|
236
236
|
)
|
|
237
237
|
|
|
238
238
|
del (
|
|
239
|
-
ENV_PYSCRIPT_NO_COLOR_PROMPT, ENV_PYSCRIPT_CLASSIC_LINE_SHELL, DEFAULT, DEBUG,
|
|
239
|
+
ENV_PYSCRIPT_NO_COLOR_PROMPT, ENV_PYSCRIPT_CLASSIC_LINE_SHELL, DEFAULT, DEBUG, CLASSIC_LINE_SHELL,
|
|
240
240
|
NO_COLOR_PROMPT, NOTEBOOK, GUI_SUPPORT, TERMINAL_SUPPORT, PYGMENTS, HLFMT_ANSI, HLFMT_HTML, HLFMT_BBCODE,
|
|
241
241
|
USE_NOTEBOOK, OPTIONAL, REMAINDER, file_idx, end_idx, end_com, arg_com, com_idx, arg, pys_sys, __version__,
|
|
242
242
|
is_environ, remove_python_path, getcwd, get_name_from_path, PysGUIEditor, PysTerminalEditor, ArgumentParser
|
|
@@ -275,7 +275,7 @@ if args.file is not None:
|
|
|
275
275
|
|
|
276
276
|
if EDITOR_MAP and args.editor:
|
|
277
277
|
try:
|
|
278
|
-
EDITOR_MAP[args.editor](file).run()
|
|
278
|
+
EDITOR_MAP[args.editor](file=file, colored=not (flags & NO_COLOR)).run()
|
|
279
279
|
except BaseException as e:
|
|
280
280
|
argument_error('-e/--editor', e)
|
|
281
281
|
|
|
@@ -354,4 +354,5 @@ else:
|
|
|
354
354
|
flags=flags
|
|
355
355
|
)
|
|
356
356
|
|
|
357
|
+
# goodbye :>
|
|
357
358
|
sys.exit(code)
|
|
@@ -319,13 +319,15 @@ class PysAnalyzer(Pys):
|
|
|
319
319
|
self.visit(node.else_body)
|
|
320
320
|
|
|
321
321
|
def visit_RepeatNode(self, node: PysRepeatNode) -> None:
|
|
322
|
-
self.in_loop += 1
|
|
323
322
|
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
return
|
|
323
|
+
if node.body:
|
|
324
|
+
self.in_loop += 1
|
|
327
325
|
|
|
328
|
-
|
|
326
|
+
self.visit(node.body)
|
|
327
|
+
if self.error:
|
|
328
|
+
return
|
|
329
|
+
|
|
330
|
+
self.in_loop -= 1
|
|
329
331
|
|
|
330
332
|
self.visit(node.condition)
|
|
331
333
|
if self.error:
|
|
@@ -9,8 +9,9 @@ import os
|
|
|
9
9
|
class PysEditor(Pys):
|
|
10
10
|
|
|
11
11
|
@typechecked
|
|
12
|
-
def __init__(self, file: PysFileBuffer) -> None:
|
|
12
|
+
def __init__(self, file: PysFileBuffer, colored: bool = True) -> None:
|
|
13
13
|
self.file = file
|
|
14
|
+
self.colored = bool(colored)
|
|
14
15
|
self.used = False
|
|
15
16
|
self.modified = False
|
|
16
17
|
self.wrapped = True
|
|
@@ -10,37 +10,10 @@ try:
|
|
|
10
10
|
|
|
11
11
|
class PysGUIEditor(PysEditor, Tk):
|
|
12
12
|
|
|
13
|
-
def __init__(self, file: PysFileBuffer) -> None:
|
|
14
|
-
PysEditor.__init__(self, file)
|
|
13
|
+
def __init__(self, file: PysFileBuffer, colored: bool = True) -> None:
|
|
14
|
+
PysEditor.__init__(self, file, colored)
|
|
15
15
|
Tk.__init__(self)
|
|
16
16
|
|
|
17
|
-
def setup_tags():
|
|
18
|
-
tag_configure = self.text.tag_configure
|
|
19
|
-
for token, style in PygmentsPyScriptStyle.list_styles():
|
|
20
|
-
if color := style['color']:
|
|
21
|
-
tag_configure(str(token), foreground=f'#{color}')
|
|
22
|
-
|
|
23
|
-
def update():
|
|
24
|
-
self.title(f'PyScript {__version__} - {self.basename}{"*" if self.modified else ""}')
|
|
25
|
-
|
|
26
|
-
index = '1.0'
|
|
27
|
-
|
|
28
|
-
text = self.text
|
|
29
|
-
text_tag_add = text.tag_add
|
|
30
|
-
text_tag_remove = text.tag_remove
|
|
31
|
-
text_index = text.index
|
|
32
|
-
get_length = len
|
|
33
|
-
to_string = str
|
|
34
|
-
|
|
35
|
-
for tag in text.tag_names():
|
|
36
|
-
if tag != 'sel':
|
|
37
|
-
text_tag_remove(tag, '1.0', 'end')
|
|
38
|
-
|
|
39
|
-
for type, value in self.lexer.get_tokens(text.get('1.0', 'end')):
|
|
40
|
-
end_index = text_index(f'{index} + {get_length(value)} chars')
|
|
41
|
-
text_tag_add(to_string(type), index, end_index)
|
|
42
|
-
index = end_index
|
|
43
|
-
|
|
44
17
|
def on_save(event=None):
|
|
45
18
|
self.save(self.text.get('1.0', 'end'))
|
|
46
19
|
update()
|
|
@@ -140,7 +113,38 @@ try:
|
|
|
140
113
|
|
|
141
114
|
self.wm_protocol('WM_DELETE_WINDOW', on_close)
|
|
142
115
|
|
|
143
|
-
|
|
116
|
+
if colored:
|
|
117
|
+
tag_configure = self.text.tag_configure
|
|
118
|
+
for token, style in PygmentsPyScriptStyle.list_styles():
|
|
119
|
+
color = style['color']
|
|
120
|
+
if color:
|
|
121
|
+
tag_configure(str(token), foreground=f'#{color}')
|
|
122
|
+
|
|
123
|
+
def update():
|
|
124
|
+
self.title(f'PyScript {__version__} - {self.basename}{"*" if self.modified else ""}')
|
|
125
|
+
|
|
126
|
+
index = '1.0'
|
|
127
|
+
|
|
128
|
+
text = self.text
|
|
129
|
+
text_tag_add = text.tag_add
|
|
130
|
+
text_tag_remove = text.tag_remove
|
|
131
|
+
text_index = text.index
|
|
132
|
+
get_length = len
|
|
133
|
+
to_string = str
|
|
134
|
+
|
|
135
|
+
for tag in text.tag_names():
|
|
136
|
+
if tag != 'sel':
|
|
137
|
+
text_tag_remove(tag, '1.0', 'end')
|
|
138
|
+
|
|
139
|
+
for type, value in self.lexer.get_tokens(text.get('1.0', 'end')):
|
|
140
|
+
end_index = text_index(f'{index} + {get_length(value)} chars')
|
|
141
|
+
text_tag_add(to_string(type), index, end_index)
|
|
142
|
+
index = end_index
|
|
143
|
+
|
|
144
|
+
else:
|
|
145
|
+
def update():
|
|
146
|
+
self.title(f'PyScript {__version__} - {self.basename}{"*" if self.modified else ""}')
|
|
147
|
+
|
|
144
148
|
update()
|
|
145
149
|
|
|
146
150
|
def run(self) -> None:
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
from .bases import PysEditor
|
|
2
2
|
from ..buffer import PysFileBuffer
|
|
3
|
-
from ..highlight import PygmentsPyScriptStyle, PygmentsPyScriptLexer
|
|
3
|
+
from ..highlight import PYGMENTS, PygmentsPyScriptStyle, PygmentsPyScriptLexer
|
|
4
4
|
from ..version import __version__
|
|
5
5
|
|
|
6
6
|
try:
|
|
@@ -13,13 +13,14 @@ try:
|
|
|
13
13
|
from prompt_toolkit.layout.controls import FormattedTextControl
|
|
14
14
|
from prompt_toolkit.layout.processors import TabsProcessor
|
|
15
15
|
from prompt_toolkit.lexers import PygmentsLexer
|
|
16
|
+
from prompt_toolkit.output.color_depth import ColorDepth
|
|
16
17
|
from prompt_toolkit.styles.pygments import style_from_pygments_cls
|
|
17
18
|
from prompt_toolkit.widgets import TextArea
|
|
18
19
|
|
|
19
20
|
class PysTerminalEditor(PysEditor, Application):
|
|
20
21
|
|
|
21
|
-
def __init__(self, file: PysFileBuffer) -> None:
|
|
22
|
-
PysEditor.__init__(self, file)
|
|
22
|
+
def __init__(self, file: PysFileBuffer, colored: bool = True) -> None:
|
|
23
|
+
PysEditor.__init__(self, file, colored)
|
|
23
24
|
|
|
24
25
|
self.show_exit_window = False
|
|
25
26
|
|
|
@@ -30,20 +31,63 @@ try:
|
|
|
30
31
|
def on_change(buffer):
|
|
31
32
|
self.modified = True
|
|
32
33
|
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
34
|
+
text_other_keyword = {}
|
|
35
|
+
close_window_keyword = {}
|
|
36
|
+
app_other_keyword = {}
|
|
37
|
+
|
|
38
|
+
if colored:
|
|
39
|
+
|
|
40
|
+
if PYGMENTS:
|
|
41
|
+
text_other_keyword.update({
|
|
42
|
+
'lexer': PygmentsLexer(PygmentsPyScriptLexer),
|
|
43
|
+
})
|
|
44
|
+
app_other_keyword.update({
|
|
45
|
+
'style': style_from_pygments_cls(PygmentsPyScriptStyle)
|
|
46
|
+
})
|
|
47
|
+
|
|
48
|
+
close_window_keyword.update({
|
|
49
|
+
'content': FormattedTextControl(
|
|
50
|
+
" File has been modified. Save before exit? \n"
|
|
51
|
+
" (Y)es / (N)o / (C)ancel "
|
|
52
|
+
),
|
|
53
|
+
'height': 2,
|
|
54
|
+
'style': 'reverse'
|
|
55
|
+
})
|
|
56
|
+
|
|
57
|
+
def create_title():
|
|
58
|
+
columns = self.output.get_size().columns
|
|
59
|
+
file = self.basename + ('*' if self.modified else '')
|
|
60
|
+
title = f' PyScript {__version__} - {file} '
|
|
61
|
+
if len(title) > columns:
|
|
62
|
+
title = file
|
|
63
|
+
return ANSI(f'\x1b[7m{title}{" " * max(0, columns - len(title))}\x1b[0m')
|
|
64
|
+
|
|
65
|
+
else:
|
|
66
|
+
app_other_keyword.update({
|
|
67
|
+
'color_depth': ColorDepth.DEPTH_1_BIT
|
|
68
|
+
})
|
|
69
|
+
close_window_keyword.update({
|
|
70
|
+
'content': FormattedTextControl(
|
|
71
|
+
"[File has been modified. Save before exit?]\n"
|
|
72
|
+
"[ (Y)es / (N)o / (C)ancel ]"
|
|
73
|
+
),
|
|
74
|
+
'height': 2
|
|
75
|
+
})
|
|
76
|
+
|
|
77
|
+
def create_title():
|
|
78
|
+
columns = self.output.get_size().columns
|
|
79
|
+
file = self.basename + ('*' if self.modified else '')
|
|
80
|
+
title = f' [PyScript {__version__} - {file}] '
|
|
81
|
+
if len(title) > columns:
|
|
82
|
+
title = file
|
|
83
|
+
return title + ' ' * max(0, columns - len(title))
|
|
40
84
|
|
|
41
85
|
self.text = TextArea(
|
|
42
86
|
multiline=True,
|
|
43
87
|
scrollbar=True,
|
|
44
88
|
wrap_lines=on_wrap,
|
|
45
|
-
|
|
46
|
-
|
|
89
|
+
input_processors=[TabsProcessor(tabstop=4)],
|
|
90
|
+
**text_other_keyword
|
|
47
91
|
)
|
|
48
92
|
|
|
49
93
|
self.title = Window(
|
|
@@ -51,11 +95,7 @@ try:
|
|
|
51
95
|
height=1
|
|
52
96
|
)
|
|
53
97
|
|
|
54
|
-
self.close_window = Window(
|
|
55
|
-
content=FormattedTextControl("File has been modified. Save before exit?\n(Y)es / (N)o / (C)ancel"),
|
|
56
|
-
height=2,
|
|
57
|
-
style='reverse'
|
|
58
|
-
)
|
|
98
|
+
self.close_window = Window(**close_window_keyword)
|
|
59
99
|
|
|
60
100
|
self.exit_container = ConditionalContainer(
|
|
61
101
|
content=self.close_window,
|
|
@@ -148,11 +188,11 @@ try:
|
|
|
148
188
|
Application.__init__(
|
|
149
189
|
self,
|
|
150
190
|
layout=Layout(self.root),
|
|
151
|
-
style=style_from_pygments_cls(PygmentsPyScriptStyle),
|
|
152
191
|
key_bindings=key_bindings,
|
|
153
192
|
full_screen=True,
|
|
154
193
|
mouse_support=True,
|
|
155
|
-
paste_mode=True
|
|
194
|
+
paste_mode=True,
|
|
195
|
+
**app_other_keyword
|
|
156
196
|
)
|
|
157
197
|
|
|
158
198
|
def run(self) -> None:
|
|
@@ -41,8 +41,9 @@ class PysTraceback(Pys):
|
|
|
41
41
|
|
|
42
42
|
context = self.context
|
|
43
43
|
position = self.position
|
|
44
|
+
colored = not (context.flags & NO_COLOR)
|
|
44
45
|
|
|
45
|
-
if colored
|
|
46
|
+
if colored:
|
|
46
47
|
reset = GET_ACOLORS('reset')
|
|
47
48
|
magenta = GET_ACOLORS('magenta')
|
|
48
49
|
bmagenta = GET_ACOLORS('bold-magenta')
|
|
@@ -12,12 +12,14 @@ 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
16
|
gil_lock = RLock()
|
|
16
17
|
|
|
17
18
|
def handle_call(object: Any, context: PysContext, position: PysPosition) -> None:
|
|
18
19
|
with gil_lock:
|
|
20
|
+
ins = isinstance
|
|
19
21
|
|
|
20
|
-
if
|
|
22
|
+
if ins(object, PysFunction):
|
|
21
23
|
code = object.__code__
|
|
22
24
|
code.context = context
|
|
23
25
|
code.position = position
|
|
@@ -26,7 +28,9 @@ if not is_environ(ENV_PYSCRIPT_NO_GIL):
|
|
|
26
28
|
handle_call(object.__func__, context, position)
|
|
27
29
|
|
|
28
30
|
elif ins(object, type):
|
|
29
|
-
|
|
31
|
+
gt = getattr
|
|
32
|
+
|
|
33
|
+
method = gt(object, '__new__', None)
|
|
30
34
|
if method is not None:
|
|
31
35
|
handle_call(method, context, position)
|
|
32
36
|
|
|
@@ -38,8 +42,9 @@ if not is_environ(ENV_PYSCRIPT_NO_GIL):
|
|
|
38
42
|
else:
|
|
39
43
|
|
|
40
44
|
def handle_call(object: Any, context: PysContext, position: PysPosition) -> None:
|
|
45
|
+
ins = isinstance
|
|
41
46
|
|
|
42
|
-
if
|
|
47
|
+
if ins(object, PysFunction):
|
|
43
48
|
code = object.__code__
|
|
44
49
|
code.context = context
|
|
45
50
|
code.position = position
|
|
@@ -48,7 +53,9 @@ else:
|
|
|
48
53
|
handle_call(object.__func__, context, position)
|
|
49
54
|
|
|
50
55
|
elif ins(object, type):
|
|
51
|
-
|
|
56
|
+
gt = getattr
|
|
57
|
+
|
|
58
|
+
method = gt(object, '__new__', None)
|
|
52
59
|
if method is not None:
|
|
53
60
|
handle_call(method, context, position)
|
|
54
61
|
|