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.
Files changed (72) hide show
  1. {pyscript_programming_language-1.10.1/pyscript_programming_language.egg-info → pyscript_programming_language-1.10.3}/PKG-INFO +1 -1
  2. {pyscript_programming_language-1.10.1 → pyscript_programming_language-1.10.3}/pyscript/__main__.py +30 -18
  3. {pyscript_programming_language-1.10.1 → pyscript_programming_language-1.10.3}/pyscript/core/analyzer.py +4 -3
  4. {pyscript_programming_language-1.10.1 → pyscript_programming_language-1.10.3}/pyscript/core/exceptions.py +3 -3
  5. {pyscript_programming_language-1.10.1 → pyscript_programming_language-1.10.3}/pyscript/core/highlight.py +18 -9
  6. {pyscript_programming_language-1.10.1 → pyscript_programming_language-1.10.3}/pyscript/core/interpreter.py +106 -81
  7. {pyscript_programming_language-1.10.1 → pyscript_programming_language-1.10.3}/pyscript/core/mapping.py +2 -2
  8. {pyscript_programming_language-1.10.1 → pyscript_programming_language-1.10.3}/pyscript/core/objects.py +5 -4
  9. {pyscript_programming_language-1.10.1 → pyscript_programming_language-1.10.3}/pyscript/core/position.py +2 -2
  10. {pyscript_programming_language-1.10.1 → pyscript_programming_language-1.10.3}/pyscript/core/pysbuiltins.py +12 -9
  11. {pyscript_programming_language-1.10.1 → pyscript_programming_language-1.10.3}/pyscript/core/runner.py +4 -4
  12. {pyscript_programming_language-1.10.1 → pyscript_programming_language-1.10.3}/pyscript/core/utils/shell.py +12 -9
  13. {pyscript_programming_language-1.10.1 → pyscript_programming_language-1.10.3}/pyscript/core/version.py +2 -2
  14. {pyscript_programming_language-1.10.1 → pyscript_programming_language-1.10.3}/pyscript/lib/ast/ast_literal_eval.py +4 -8
  15. {pyscript_programming_language-1.10.1 → pyscript_programming_language-1.10.3}/pyscript/lib/ast/ast_unparse.py +3 -3
  16. {pyscript_programming_language-1.10.1 → pyscript_programming_language-1.10.3/pyscript_programming_language.egg-info}/PKG-INFO +1 -1
  17. {pyscript_programming_language-1.10.1 → pyscript_programming_language-1.10.3}/setup.py +1 -1
  18. {pyscript_programming_language-1.10.1 → pyscript_programming_language-1.10.3}/MANIFEST.in +0 -0
  19. {pyscript_programming_language-1.10.1 → pyscript_programming_language-1.10.3}/README.md +0 -0
  20. {pyscript_programming_language-1.10.1 → pyscript_programming_language-1.10.3}/pyscript/__init__.py +0 -0
  21. {pyscript_programming_language-1.10.1 → pyscript_programming_language-1.10.3}/pyscript/__init__.pyi +0 -0
  22. {pyscript_programming_language-1.10.1 → pyscript_programming_language-1.10.3}/pyscript/core/__init__.py +0 -0
  23. {pyscript_programming_language-1.10.1 → pyscript_programming_language-1.10.3}/pyscript/core/bases.py +0 -0
  24. {pyscript_programming_language-1.10.1 → pyscript_programming_language-1.10.3}/pyscript/core/buffer.py +0 -0
  25. {pyscript_programming_language-1.10.1 → pyscript_programming_language-1.10.3}/pyscript/core/cache.py +0 -0
  26. {pyscript_programming_language-1.10.1 → pyscript_programming_language-1.10.3}/pyscript/core/checks.py +0 -0
  27. {pyscript_programming_language-1.10.1 → pyscript_programming_language-1.10.3}/pyscript/core/constants.py +0 -0
  28. {pyscript_programming_language-1.10.1 → pyscript_programming_language-1.10.3}/pyscript/core/context.py +0 -0
  29. {pyscript_programming_language-1.10.1 → pyscript_programming_language-1.10.3}/pyscript/core/handlers.py +0 -0
  30. {pyscript_programming_language-1.10.1 → pyscript_programming_language-1.10.3}/pyscript/core/lexer.py +0 -0
  31. {pyscript_programming_language-1.10.1 → pyscript_programming_language-1.10.3}/pyscript/core/nodes.py +0 -0
  32. {pyscript_programming_language-1.10.1 → pyscript_programming_language-1.10.3}/pyscript/core/parser.py +0 -0
  33. {pyscript_programming_language-1.10.1 → pyscript_programming_language-1.10.3}/pyscript/core/results.py +0 -0
  34. {pyscript_programming_language-1.10.1 → pyscript_programming_language-1.10.3}/pyscript/core/symtab.py +0 -0
  35. {pyscript_programming_language-1.10.1 → pyscript_programming_language-1.10.3}/pyscript/core/token.py +0 -0
  36. {pyscript_programming_language-1.10.1 → pyscript_programming_language-1.10.3}/pyscript/core/utils/__init__.py +0 -0
  37. {pyscript_programming_language-1.10.1 → pyscript_programming_language-1.10.3}/pyscript/core/utils/ansi.py +0 -0
  38. {pyscript_programming_language-1.10.1 → pyscript_programming_language-1.10.3}/pyscript/core/utils/debug.py +0 -0
  39. {pyscript_programming_language-1.10.1 → pyscript_programming_language-1.10.3}/pyscript/core/utils/decorators.py +0 -0
  40. {pyscript_programming_language-1.10.1 → pyscript_programming_language-1.10.3}/pyscript/core/utils/generic.py +0 -0
  41. {pyscript_programming_language-1.10.1 → pyscript_programming_language-1.10.3}/pyscript/core/utils/jsdict.py +0 -0
  42. {pyscript_programming_language-1.10.1 → pyscript_programming_language-1.10.3}/pyscript/core/utils/module.py +0 -0
  43. {pyscript_programming_language-1.10.1 → pyscript_programming_language-1.10.3}/pyscript/core/utils/path.py +0 -0
  44. {pyscript_programming_language-1.10.1 → pyscript_programming_language-1.10.3}/pyscript/core/utils/similarity.py +0 -0
  45. {pyscript_programming_language-1.10.1 → pyscript_programming_language-1.10.3}/pyscript/core/utils/string.py +0 -0
  46. {pyscript_programming_language-1.10.1 → pyscript_programming_language-1.10.3}/pyscript/lib/__hello__.pys +0 -0
  47. {pyscript_programming_language-1.10.1 → pyscript_programming_language-1.10.3}/pyscript/lib/ansi.pys +0 -0
  48. {pyscript_programming_language-1.10.1 → pyscript_programming_language-1.10.3}/pyscript/lib/ast/__init__.pys +0 -0
  49. {pyscript_programming_language-1.10.1 → pyscript_programming_language-1.10.3}/pyscript/lib/ast/ast_dump.py +0 -0
  50. {pyscript_programming_language-1.10.1 → pyscript_programming_language-1.10.3}/pyscript/lib/ast/ast_walk.py +0 -0
  51. {pyscript_programming_language-1.10.1 → pyscript_programming_language-1.10.3}/pyscript/lib/brainfuck.pys +0 -0
  52. {pyscript_programming_language-1.10.1 → pyscript_programming_language-1.10.3}/pyscript/lib/dis.pys +0 -0
  53. {pyscript_programming_language-1.10.1 → pyscript_programming_language-1.10.3}/pyscript/lib/explorer.pys +0 -0
  54. {pyscript_programming_language-1.10.1 → pyscript_programming_language-1.10.3}/pyscript/lib/fpstimer.pys +0 -0
  55. {pyscript_programming_language-1.10.1 → pyscript_programming_language-1.10.3}/pyscript/lib/getch.pys +0 -0
  56. {pyscript_programming_language-1.10.1 → pyscript_programming_language-1.10.3}/pyscript/lib/inspect.pys +0 -0
  57. {pyscript_programming_language-1.10.1 → pyscript_programming_language-1.10.3}/pyscript/lib/jsdict.pys +0 -0
  58. {pyscript_programming_language-1.10.1 → pyscript_programming_language-1.10.3}/pyscript/lib/keyword.pys +0 -0
  59. {pyscript_programming_language-1.10.1 → pyscript_programming_language-1.10.3}/pyscript/lib/parser.pys +0 -0
  60. {pyscript_programming_language-1.10.1 → pyscript_programming_language-1.10.3}/pyscript/lib/site.pys +0 -0
  61. {pyscript_programming_language-1.10.1 → pyscript_programming_language-1.10.3}/pyscript/lib/symtable.pys +0 -0
  62. {pyscript_programming_language-1.10.1 → pyscript_programming_language-1.10.3}/pyscript/lib/sys.pys +0 -0
  63. {pyscript_programming_language-1.10.1 → pyscript_programming_language-1.10.3}/pyscript/lib/token.pys +0 -0
  64. {pyscript_programming_language-1.10.1 → pyscript_programming_language-1.10.3}/pyscript/lib/tokenize/__init__.pys +0 -0
  65. {pyscript_programming_language-1.10.1 → pyscript_programming_language-1.10.3}/pyscript/lib/tokenize/tok_untokenize.py +0 -0
  66. {pyscript_programming_language-1.10.1 → pyscript_programming_language-1.10.3}/pyscript/site-packages/this.pys +0 -0
  67. {pyscript_programming_language-1.10.1 → pyscript_programming_language-1.10.3}/pyscript/this.py +0 -0
  68. {pyscript_programming_language-1.10.1 → pyscript_programming_language-1.10.3}/pyscript_programming_language.egg-info/SOURCES.txt +0 -0
  69. {pyscript_programming_language-1.10.1 → pyscript_programming_language-1.10.3}/pyscript_programming_language.egg-info/dependency_links.txt +0 -0
  70. {pyscript_programming_language-1.10.1 → pyscript_programming_language-1.10.3}/pyscript_programming_language.egg-info/requires.txt +0 -0
  71. {pyscript_programming_language-1.10.1 → pyscript_programming_language-1.10.3}/pyscript_programming_language.egg-info/top_level.txt +0 -0
  72. {pyscript_programming_language-1.10.1 → pyscript_programming_language-1.10.3}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: pyscript-programming-language
3
- Version: 1.10.1
3
+ Version: 1.10.3
4
4
  Summary: PyScript Programming Language
5
5
  Home-page: https://azzammuhyala.github.io/pyscript
6
6
  Author: azzammuhyala
@@ -1,12 +1,12 @@
1
1
  from .core.buffer import PysFileBuffer
2
- from .core.cache import path, undefined, hook
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 remove the assert statement"
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
- if args.inspect:
193
- code = pys_shell(
194
- globals=result.context.symbol_table,
195
- flags=result.context.flags,
196
- parser_flags=result.parser_flags
197
- )
198
- else:
199
- code = result.end_process()[0]
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 isinstance(element, tuple):
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
- token = (element[0] if isinstance(element, tuple) else element)
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 isinstance(element, tuple):
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['reset']
47
- magenta = ACOLORS['magenta']
48
- bmagenta = ACOLORS['bold-magenta']
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*)(?!{_keywords})({_dollar_prefix}\b{_unicode_name}*)\b',
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}\b{_unicode_name}*)\b',
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}{_unicode_name}*(?=\s*\()|\b(?:{"|".join(_builtin_functions)})\b',
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}*\b', Name.Variable),
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
- (rf'{_dollar_prefix[:-1]}.', Error)
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(TOKENS['KEYWORD'], KEYWORDS['func'], KEYWORDS['function']):
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