pyscript-programming-language 1.10.1__tar.gz → 1.10.3__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.10.1/pyscript_programming_language.egg-info → pyscript_programming_language-1.10.3}/PKG-INFO +1 -1
- {pyscript_programming_language-1.10.1 → pyscript_programming_language-1.10.3}/pyscript/__main__.py +30 -18
- {pyscript_programming_language-1.10.1 → pyscript_programming_language-1.10.3}/pyscript/core/analyzer.py +4 -3
- {pyscript_programming_language-1.10.1 → pyscript_programming_language-1.10.3}/pyscript/core/exceptions.py +3 -3
- {pyscript_programming_language-1.10.1 → pyscript_programming_language-1.10.3}/pyscript/core/highlight.py +18 -9
- {pyscript_programming_language-1.10.1 → pyscript_programming_language-1.10.3}/pyscript/core/interpreter.py +106 -81
- {pyscript_programming_language-1.10.1 → pyscript_programming_language-1.10.3}/pyscript/core/mapping.py +2 -2
- {pyscript_programming_language-1.10.1 → pyscript_programming_language-1.10.3}/pyscript/core/objects.py +5 -4
- {pyscript_programming_language-1.10.1 → pyscript_programming_language-1.10.3}/pyscript/core/position.py +2 -2
- {pyscript_programming_language-1.10.1 → pyscript_programming_language-1.10.3}/pyscript/core/pysbuiltins.py +12 -9
- {pyscript_programming_language-1.10.1 → pyscript_programming_language-1.10.3}/pyscript/core/runner.py +4 -4
- {pyscript_programming_language-1.10.1 → pyscript_programming_language-1.10.3}/pyscript/core/utils/shell.py +12 -9
- {pyscript_programming_language-1.10.1 → pyscript_programming_language-1.10.3}/pyscript/core/version.py +2 -2
- {pyscript_programming_language-1.10.1 → pyscript_programming_language-1.10.3}/pyscript/lib/ast/ast_literal_eval.py +4 -8
- {pyscript_programming_language-1.10.1 → pyscript_programming_language-1.10.3}/pyscript/lib/ast/ast_unparse.py +3 -3
- {pyscript_programming_language-1.10.1 → pyscript_programming_language-1.10.3/pyscript_programming_language.egg-info}/PKG-INFO +1 -1
- {pyscript_programming_language-1.10.1 → pyscript_programming_language-1.10.3}/setup.py +1 -1
- {pyscript_programming_language-1.10.1 → pyscript_programming_language-1.10.3}/MANIFEST.in +0 -0
- {pyscript_programming_language-1.10.1 → pyscript_programming_language-1.10.3}/README.md +0 -0
- {pyscript_programming_language-1.10.1 → pyscript_programming_language-1.10.3}/pyscript/__init__.py +0 -0
- {pyscript_programming_language-1.10.1 → pyscript_programming_language-1.10.3}/pyscript/__init__.pyi +0 -0
- {pyscript_programming_language-1.10.1 → pyscript_programming_language-1.10.3}/pyscript/core/__init__.py +0 -0
- {pyscript_programming_language-1.10.1 → pyscript_programming_language-1.10.3}/pyscript/core/bases.py +0 -0
- {pyscript_programming_language-1.10.1 → pyscript_programming_language-1.10.3}/pyscript/core/buffer.py +0 -0
- {pyscript_programming_language-1.10.1 → pyscript_programming_language-1.10.3}/pyscript/core/cache.py +0 -0
- {pyscript_programming_language-1.10.1 → pyscript_programming_language-1.10.3}/pyscript/core/checks.py +0 -0
- {pyscript_programming_language-1.10.1 → pyscript_programming_language-1.10.3}/pyscript/core/constants.py +0 -0
- {pyscript_programming_language-1.10.1 → pyscript_programming_language-1.10.3}/pyscript/core/context.py +0 -0
- {pyscript_programming_language-1.10.1 → pyscript_programming_language-1.10.3}/pyscript/core/handlers.py +0 -0
- {pyscript_programming_language-1.10.1 → pyscript_programming_language-1.10.3}/pyscript/core/lexer.py +0 -0
- {pyscript_programming_language-1.10.1 → pyscript_programming_language-1.10.3}/pyscript/core/nodes.py +0 -0
- {pyscript_programming_language-1.10.1 → pyscript_programming_language-1.10.3}/pyscript/core/parser.py +0 -0
- {pyscript_programming_language-1.10.1 → pyscript_programming_language-1.10.3}/pyscript/core/results.py +0 -0
- {pyscript_programming_language-1.10.1 → pyscript_programming_language-1.10.3}/pyscript/core/symtab.py +0 -0
- {pyscript_programming_language-1.10.1 → pyscript_programming_language-1.10.3}/pyscript/core/token.py +0 -0
- {pyscript_programming_language-1.10.1 → pyscript_programming_language-1.10.3}/pyscript/core/utils/__init__.py +0 -0
- {pyscript_programming_language-1.10.1 → pyscript_programming_language-1.10.3}/pyscript/core/utils/ansi.py +0 -0
- {pyscript_programming_language-1.10.1 → pyscript_programming_language-1.10.3}/pyscript/core/utils/debug.py +0 -0
- {pyscript_programming_language-1.10.1 → pyscript_programming_language-1.10.3}/pyscript/core/utils/decorators.py +0 -0
- {pyscript_programming_language-1.10.1 → pyscript_programming_language-1.10.3}/pyscript/core/utils/generic.py +0 -0
- {pyscript_programming_language-1.10.1 → pyscript_programming_language-1.10.3}/pyscript/core/utils/jsdict.py +0 -0
- {pyscript_programming_language-1.10.1 → pyscript_programming_language-1.10.3}/pyscript/core/utils/module.py +0 -0
- {pyscript_programming_language-1.10.1 → pyscript_programming_language-1.10.3}/pyscript/core/utils/path.py +0 -0
- {pyscript_programming_language-1.10.1 → pyscript_programming_language-1.10.3}/pyscript/core/utils/similarity.py +0 -0
- {pyscript_programming_language-1.10.1 → pyscript_programming_language-1.10.3}/pyscript/core/utils/string.py +0 -0
- {pyscript_programming_language-1.10.1 → pyscript_programming_language-1.10.3}/pyscript/lib/__hello__.pys +0 -0
- {pyscript_programming_language-1.10.1 → pyscript_programming_language-1.10.3}/pyscript/lib/ansi.pys +0 -0
- {pyscript_programming_language-1.10.1 → pyscript_programming_language-1.10.3}/pyscript/lib/ast/__init__.pys +0 -0
- {pyscript_programming_language-1.10.1 → pyscript_programming_language-1.10.3}/pyscript/lib/ast/ast_dump.py +0 -0
- {pyscript_programming_language-1.10.1 → pyscript_programming_language-1.10.3}/pyscript/lib/ast/ast_walk.py +0 -0
- {pyscript_programming_language-1.10.1 → pyscript_programming_language-1.10.3}/pyscript/lib/brainfuck.pys +0 -0
- {pyscript_programming_language-1.10.1 → pyscript_programming_language-1.10.3}/pyscript/lib/dis.pys +0 -0
- {pyscript_programming_language-1.10.1 → pyscript_programming_language-1.10.3}/pyscript/lib/explorer.pys +0 -0
- {pyscript_programming_language-1.10.1 → pyscript_programming_language-1.10.3}/pyscript/lib/fpstimer.pys +0 -0
- {pyscript_programming_language-1.10.1 → pyscript_programming_language-1.10.3}/pyscript/lib/getch.pys +0 -0
- {pyscript_programming_language-1.10.1 → pyscript_programming_language-1.10.3}/pyscript/lib/inspect.pys +0 -0
- {pyscript_programming_language-1.10.1 → pyscript_programming_language-1.10.3}/pyscript/lib/jsdict.pys +0 -0
- {pyscript_programming_language-1.10.1 → pyscript_programming_language-1.10.3}/pyscript/lib/keyword.pys +0 -0
- {pyscript_programming_language-1.10.1 → pyscript_programming_language-1.10.3}/pyscript/lib/parser.pys +0 -0
- {pyscript_programming_language-1.10.1 → pyscript_programming_language-1.10.3}/pyscript/lib/site.pys +0 -0
- {pyscript_programming_language-1.10.1 → pyscript_programming_language-1.10.3}/pyscript/lib/symtable.pys +0 -0
- {pyscript_programming_language-1.10.1 → pyscript_programming_language-1.10.3}/pyscript/lib/sys.pys +0 -0
- {pyscript_programming_language-1.10.1 → pyscript_programming_language-1.10.3}/pyscript/lib/token.pys +0 -0
- {pyscript_programming_language-1.10.1 → pyscript_programming_language-1.10.3}/pyscript/lib/tokenize/__init__.pys +0 -0
- {pyscript_programming_language-1.10.1 → pyscript_programming_language-1.10.3}/pyscript/lib/tokenize/tok_untokenize.py +0 -0
- {pyscript_programming_language-1.10.1 → pyscript_programming_language-1.10.3}/pyscript/site-packages/this.pys +0 -0
- {pyscript_programming_language-1.10.1 → pyscript_programming_language-1.10.3}/pyscript/this.py +0 -0
- {pyscript_programming_language-1.10.1 → pyscript_programming_language-1.10.3}/pyscript_programming_language.egg-info/SOURCES.txt +0 -0
- {pyscript_programming_language-1.10.1 → pyscript_programming_language-1.10.3}/pyscript_programming_language.egg-info/dependency_links.txt +0 -0
- {pyscript_programming_language-1.10.1 → pyscript_programming_language-1.10.3}/pyscript_programming_language.egg-info/requires.txt +0 -0
- {pyscript_programming_language-1.10.1 → pyscript_programming_language-1.10.3}/pyscript_programming_language.egg-info/top_level.txt +0 -0
- {pyscript_programming_language-1.10.1 → pyscript_programming_language-1.10.3}/setup.cfg +0 -0
{pyscript_programming_language-1.10.1 → pyscript_programming_language-1.10.3}/pyscript/__main__.py
RENAMED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
from .core.buffer import PysFileBuffer
|
|
2
|
-
from .core.cache import
|
|
2
|
+
from .core.cache import undefined, hook
|
|
3
3
|
from .core.constants import DEFAULT, DEBUG, DONT_SHOW_BANNER_ON_SHELL, NO_COLOR
|
|
4
4
|
from .core.highlight import (
|
|
5
5
|
HLFMT_HTML, HLFMT_ANSI, HLFMT_BBCODE, pys_highlight, PygmentsPyScriptStyle, PygmentsPyScriptLexer
|
|
6
6
|
)
|
|
7
7
|
from .core.runner import _normalize_globals, pys_runner, pys_shell
|
|
8
|
-
from .core.utils.module import get_module_name_from_path
|
|
9
|
-
from .core.utils.path import normpath
|
|
8
|
+
from .core.utils.module import get_module_name_from_path, remove_python_path
|
|
9
|
+
from .core.utils.path import normpath, getcwd
|
|
10
10
|
from .core.version import __version__
|
|
11
11
|
|
|
12
12
|
try:
|
|
@@ -79,7 +79,7 @@ parser.add_argument(
|
|
|
79
79
|
parser.add_argument(
|
|
80
80
|
'-d', '--debug',
|
|
81
81
|
action='store_true',
|
|
82
|
-
help="Set a debug flag, this will
|
|
82
|
+
help="Set a debug flag, this will ignore assert statement"
|
|
83
83
|
)
|
|
84
84
|
|
|
85
85
|
parser.add_argument(
|
|
@@ -108,6 +108,12 @@ parser.add_argument(
|
|
|
108
108
|
help="Set a Python recursion limit"
|
|
109
109
|
)
|
|
110
110
|
|
|
111
|
+
parser.add_argument(
|
|
112
|
+
'-P',
|
|
113
|
+
action='store_true',
|
|
114
|
+
help="Don't prepend a potentially unsafe path to sys.path (python sys)"
|
|
115
|
+
)
|
|
116
|
+
|
|
111
117
|
parser.add_argument(
|
|
112
118
|
'-q',
|
|
113
119
|
action='store_true',
|
|
@@ -121,7 +127,7 @@ def argument_error(argument, message):
|
|
|
121
127
|
args = parser.parse_args(split_argv())
|
|
122
128
|
|
|
123
129
|
if args.highlight and args.file is None:
|
|
124
|
-
argument_error("-l/--highlight", "argument 'file' required")
|
|
130
|
+
argument_error("-l/--highlight", "argument 'file' is required")
|
|
125
131
|
|
|
126
132
|
if args.py_recursion is not None:
|
|
127
133
|
try:
|
|
@@ -136,6 +142,9 @@ if args.debug:
|
|
|
136
142
|
flags |= DEBUG
|
|
137
143
|
if args.no_color or environ.get('NO_COLOR') is not None:
|
|
138
144
|
flags |= NO_COLOR
|
|
145
|
+
if args.P:
|
|
146
|
+
for cwd in {'', '.', getcwd()}:
|
|
147
|
+
remove_python_path(cwd)
|
|
139
148
|
if args.q:
|
|
140
149
|
flags |= DONT_SHOW_BANNER_ON_SHELL
|
|
141
150
|
|
|
@@ -148,15 +157,15 @@ if args.file is not None:
|
|
|
148
157
|
except FileNotFoundError:
|
|
149
158
|
parser.error(f"can't open file {path!r}: No such file or directory")
|
|
150
159
|
except PermissionError:
|
|
151
|
-
parser.error(f"can't open file {path!r}: Permission denied
|
|
160
|
+
parser.error(f"can't open file {path!r}: Permission denied")
|
|
152
161
|
except IsADirectoryError:
|
|
153
|
-
parser.error(f"can't open file {path!r}: Path is not a file
|
|
162
|
+
parser.error(f"can't open file {path!r}: Path is not a file")
|
|
154
163
|
except NotADirectoryError:
|
|
155
|
-
parser.error(f"can't open file {path!r}: Attempting to access directory from file
|
|
164
|
+
parser.error(f"can't open file {path!r}: Attempting to access directory from file")
|
|
156
165
|
except (OSError, IOError):
|
|
157
|
-
parser.error(f"can't open file {path!r}: Attempting to access a system directory or file
|
|
166
|
+
parser.error(f"can't open file {path!r}: Attempting to access a system directory or file")
|
|
158
167
|
except UnicodeDecodeError:
|
|
159
|
-
parser.error(f"can't read file {path!r}: Bad file
|
|
168
|
+
parser.error(f"can't read file {path!r}: Bad file")
|
|
160
169
|
except BaseException as e:
|
|
161
170
|
parser.error(f"file {path!r}: Unexpected error: {e}")
|
|
162
171
|
|
|
@@ -189,14 +198,17 @@ if args.file is not None:
|
|
|
189
198
|
flags=flags
|
|
190
199
|
)
|
|
191
200
|
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
201
|
+
code, _ = result.end_process()
|
|
202
|
+
|
|
203
|
+
if args.inspect and not (sys.stdout.closed or sys.stderr.closed):
|
|
204
|
+
if sys.stdin.closed:
|
|
205
|
+
print("Can't run interactive shell: sys.stdin closed", file=sys.stderr)
|
|
206
|
+
else:
|
|
207
|
+
code = pys_shell(
|
|
208
|
+
globals=result.context.symbol_table,
|
|
209
|
+
flags=result.context.flags,
|
|
210
|
+
parser_flags=result.parser_flags
|
|
211
|
+
)
|
|
200
212
|
|
|
201
213
|
elif args.command is not None:
|
|
202
214
|
file = PysFileBuffer(args.command)
|
|
@@ -103,7 +103,7 @@ class PysAnalyzer(Pys):
|
|
|
103
103
|
|
|
104
104
|
for element in node.arguments:
|
|
105
105
|
|
|
106
|
-
if
|
|
106
|
+
if element.__class__ is tuple:
|
|
107
107
|
token, value = element
|
|
108
108
|
name = token.value
|
|
109
109
|
if name in keyword_names:
|
|
@@ -374,7 +374,8 @@ class PysAnalyzer(Pys):
|
|
|
374
374
|
parameter_names = set()
|
|
375
375
|
|
|
376
376
|
for element in node.parameters:
|
|
377
|
-
|
|
377
|
+
is_keyword = element.__class__ is tuple
|
|
378
|
+
token = element[0] if is_keyword else element
|
|
378
379
|
name = token.value
|
|
379
380
|
|
|
380
381
|
if name in parameter_names:
|
|
@@ -382,7 +383,7 @@ class PysAnalyzer(Pys):
|
|
|
382
383
|
|
|
383
384
|
parameter_names.add(name)
|
|
384
385
|
|
|
385
|
-
if
|
|
386
|
+
if is_keyword:
|
|
386
387
|
self.visit(element[1])
|
|
387
388
|
if self.error:
|
|
388
389
|
return
|
|
@@ -43,9 +43,9 @@ class PysTraceback(Pys):
|
|
|
43
43
|
position = self.position
|
|
44
44
|
|
|
45
45
|
if colored := not (context.flags & NO_COLOR):
|
|
46
|
-
reset = ACOLORS
|
|
47
|
-
magenta = ACOLORS
|
|
48
|
-
bmagenta = ACOLORS
|
|
46
|
+
reset = ACOLORS('reset')
|
|
47
|
+
magenta = ACOLORS('magenta')
|
|
48
|
+
bmagenta = ACOLORS('bold-magenta')
|
|
49
49
|
else:
|
|
50
50
|
reset = ''
|
|
51
51
|
magenta = ''
|
|
@@ -57,7 +57,7 @@ try:
|
|
|
57
57
|
])
|
|
58
58
|
|
|
59
59
|
_keywords = '|'.join(_set_keywords)
|
|
60
|
-
_unicode_name = f'[{xid_start}][{xid_continue}]'
|
|
60
|
+
_unicode_name = f'[{xid_start}][{xid_continue}]*'
|
|
61
61
|
_dollar_prefix = r'(?:\$(?:[^\S\r\n]*))?'
|
|
62
62
|
_raw_string_prefixes = r'((?:R|r|BR|RB|Br|rB|Rb|bR|br|rb))'
|
|
63
63
|
_string_prefixes = r'((?:B|b)?)'
|
|
@@ -184,14 +184,14 @@ try:
|
|
|
184
184
|
|
|
185
185
|
# Class definition
|
|
186
186
|
(
|
|
187
|
-
rf'\b({KEYWORDS["class"]})\b(\s
|
|
187
|
+
rf'\b({KEYWORDS["class"]})\b(\s+)\b(?!{_keywords})({_dollar_prefix}{_unicode_name})\b',
|
|
188
188
|
bygroups(Keyword.Constant, Whitespace, Name.Class)
|
|
189
189
|
),
|
|
190
190
|
|
|
191
191
|
# Function definition
|
|
192
192
|
(
|
|
193
|
-
rf'\b({KEYWORDS["def"]}|{KEYWORDS["define"]}|{KEYWORDS["func"]}|{KEYWORDS["function"]})\b(\s
|
|
194
|
-
rf'(?!{_keywords})({_dollar_prefix}
|
|
193
|
+
rf'\b({KEYWORDS["def"]}|{KEYWORDS["define"]}|{KEYWORDS["func"]}|{KEYWORDS["function"]})\b(\s+)\b'
|
|
194
|
+
rf'(?!{_keywords})({_dollar_prefix}{_unicode_name})\b',
|
|
195
195
|
bygroups(Keyword.Constant, Whitespace, Name.Function)
|
|
196
196
|
),
|
|
197
197
|
|
|
@@ -200,21 +200,27 @@ try:
|
|
|
200
200
|
|
|
201
201
|
# Built-in types and exceptions
|
|
202
202
|
(
|
|
203
|
-
rf'{_dollar_prefix}(?:{"|".join(_builtin_types)})\b',
|
|
203
|
+
rf'{_dollar_prefix}\b(?:{"|".join(_builtin_types)})\b',
|
|
204
204
|
Name.Class.Builtin
|
|
205
205
|
),
|
|
206
206
|
|
|
207
207
|
# Built-in functions
|
|
208
208
|
(
|
|
209
|
-
rf'{_dollar_prefix}
|
|
209
|
+
rf'{_dollar_prefix}\b(?:{"|".join(_builtin_functions)})\b',
|
|
210
210
|
Name.Function.Builtin
|
|
211
211
|
),
|
|
212
212
|
|
|
213
|
+
# Function calls
|
|
214
|
+
(
|
|
215
|
+
rf'{_dollar_prefix}\b{_unicode_name}\b(?=\s*\()',
|
|
216
|
+
Name.Function
|
|
217
|
+
),
|
|
218
|
+
|
|
213
219
|
# Constants
|
|
214
220
|
(rf'{_dollar_prefix}\b(?:[A-Z_]*[A-Z][A-Z0-9_]*)\b', Name.Constant),
|
|
215
221
|
|
|
216
222
|
# Variables
|
|
217
|
-
(rf'{_dollar_prefix}\b{_unicode_name}
|
|
223
|
+
(rf'{_dollar_prefix}\b{_unicode_name}\b', Name.Variable),
|
|
218
224
|
|
|
219
225
|
# Whitespaces
|
|
220
226
|
(r'\s+', Whitespace),
|
|
@@ -229,7 +235,7 @@ try:
|
|
|
229
235
|
|
|
230
236
|
# Invalid tokens
|
|
231
237
|
(r'\\.', Error),
|
|
232
|
-
(
|
|
238
|
+
(r'\$(?:[^\S\r\n]*)(.?)', Error)
|
|
233
239
|
],
|
|
234
240
|
|
|
235
241
|
'code-tags': [
|
|
@@ -457,7 +463,10 @@ def pys_highlight(
|
|
|
457
463
|
previous_token = tokens[j]
|
|
458
464
|
if previous_token.match(TOKENS['KEYWORD'], KEYWORDS['class']):
|
|
459
465
|
type_fmt = 'identifier-type'
|
|
460
|
-
elif previous_token.match(
|
|
466
|
+
elif previous_token.match(
|
|
467
|
+
TOKENS['KEYWORD'],
|
|
468
|
+
KEYWORDS['def'], KEYWORDS['define'], KEYWORDS['func'], KEYWORDS['function']
|
|
469
|
+
):
|
|
461
470
|
type_fmt = 'identifier-function'
|
|
462
471
|
else:
|
|
463
472
|
j = i + 1
|