rupython 1.3.1__py3-none-any.whl → 1.3.2__py3-none-any.whl

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.
rupython/__main__.py CHANGED
@@ -9,6 +9,7 @@ import sys as Система
9
9
  def Перехватчик_прерывания_клавиатурой(тип_исключения, значение, предыдущие_шаги):
10
10
  if тип_исключения == KeyboardInterrupt: print('\nСработало прерывание клавиатурой.')
11
11
  else: Система.__excepthook__(тип_исключения, значение, предыдущие_шаги)
12
+ Преобразователь.Очистить_файлы()
12
13
  Система.excepthook = Перехватчик_прерывания_клавиатурой
13
14
 
14
15
  Исходник = Преобразователь.Преобразовать_код(Путь_к_файлу)
@@ -70,10 +70,10 @@ from io import StringIO as Текстовый_ВВ
70
70
  'Двоич': ( 'bin', None, False ),
71
71
  'ДелОст': ( 'divmod', None, False ),
72
72
  'Длина': ( 'len', None, False ), # Размер
73
- 'Знак_в_код': ( 'ord', None, False ),
73
+ 'Код_символа': ( 'ord', None, False ), # Знак_в_код
74
74
  'Идент': ( 'id', None, False ),
75
75
  'Имеет_поле': ( 'hasattr', None, False ),
76
- 'Код_в_знак': ( 'chr', None, False ),
76
+ 'Символ_по_коду': ( 'chr', None, False ), # Код_в_знак
77
77
  'Компл': ( 'complex', { 'действ_часть': 'real', 'мнимая_часть': 'imag' }, True ),
78
78
  'Кортеж': ( 'tuple', None, True ),
79
79
  'Логич': ( 'bool', None, False ),
@@ -323,13 +323,13 @@ from io import StringIO as Текстовый_ВВ
323
323
 
324
324
  def Прочитать_слова(чтение_строки, путь_к_файлу):
325
325
  try:
326
- for тип, название, _,_, строка in Разборщик_слов.generate_tokens(чтение_строки):
326
+ for тип, название, _, _, строка in Разборщик_слов.generate_tokens(чтение_строки):
327
327
  if тип == 5: название = название.replace(' ' * 4, '\t')
328
328
  отступов = 0; сч = 0
329
329
  while (сч < len(строка) and строка[сч] == '\t'): отступов += 1; сч += 1
330
330
  yield тип, название, отступов
331
331
  except Exception as ошибка:
332
- Вывести_текст_исключения(ошибка, 'при чтении кода', путь_к_файлу)
332
+ Вывести_текст_исключения(ошибка, 'при чтении кода', путь_к_файлу, True, False)
333
333
 
334
334
  def Выполнить_основные_замены(слова, соответствия):
335
335
  for номер, слово in enumerate(слова):
@@ -395,7 +395,7 @@ def Обработать_f_строки(слова, путь_к_файлу):
395
395
  поз += 1
396
396
  if уровень_скобок != 0:
397
397
  искл = SyntaxError('Незакрытое выражение в f-строке')
398
- Вывести_текст_исключения(искл, 'при разборе f-строки', путь_к_файлу)
398
+ Вывести_текст_исключения(искл, 'при разборе f-строки', путь_к_файлу, True, False)
399
399
  выражение = содержимое[нач_поз:поз-1]
400
400
  try:
401
401
  токены_выражения = list(Разборщик_слов.generate_tokens(Текстовый_ВВ(выражение).readline))
@@ -407,7 +407,7 @@ def Обработать_f_строки(слова, путь_к_файлу):
407
407
  выражение_текст = Разборщик_слов.untokenize((ток[0], ток[1]) for ток in токены_выражения if ток[0] not in (4, 5, 6)).strip()
408
408
  новые_токены.append((3, '{' + выражение_текст + '}', отступов))
409
409
  except Exception as ошибка:
410
- Вывести_текст_исключения(ошибка, 'при разборе выражения в f-строке', путь_к_файлу)
410
+ Вывести_текст_исключения(ошибка, 'при разборе выражения в f-строке', путь_к_файлу, True, False)
411
411
  else:
412
412
  нач_поз = поз
413
413
  while поз < len(содержимое) and содержимое[поз] not in ['{', '}']:
@@ -484,7 +484,7 @@ def Обработать_импорт(импорт, путь_к_текущему
484
484
  файл = open((путь if not доп_путь else доп_путь) + '.py', mode='w', encoding='utf-8')
485
485
  if not файл:
486
486
  искл = FileNotFoundError('Невозможно открыть файл "' + файл + '".')
487
- Вывести_текст_исключения(искл, 'при чтении кода', путь_к_файлу)
487
+ Вывести_текст_исключения(искл, 'при чтении кода', путь_к_файлу, True, False)
488
488
  файл.write(код)
489
489
  файл.close()
490
490
  Временные_файлы.append(путь if not доп_путь else доп_путь)
@@ -502,7 +502,7 @@ def Обработать_импорт(импорт, путь_к_текущему
502
502
  def Проверить_соответствие_слов(слова, путь_к_файлу):
503
503
  def Вывести_исключение(инструкция):
504
504
  искл = SyntaxError('Ошибка употребления инструкции "' + инструкция + '".')
505
- Вывести_текст_исключения(искл, 'при разборе кода', путь_к_файлу)
505
+ Вывести_текст_исключения(искл, 'при разборе кода', путь_к_файлу, True, False)
506
506
 
507
507
  for сл in ('Подключить', 'Если', 'Иначе'):
508
508
  for поз in [i for i, x in enumerate(слова) if x[1] == сл]:
@@ -530,7 +530,7 @@ def Преобразовать_код(путь_к_файлу):
530
530
  файл = open(путь_к_файлу, 'r', encoding='utf-8')
531
531
  except:
532
532
  искл = FileNotFoundError('Невозможно открыть файл "' + путь_к_файлу + '".')
533
- Вывести_текст_исключения(искл, 'при чтении кода', путь_к_файлу, False)
533
+ Вывести_текст_исключения(искл, 'при чтении кода', путь_к_файлу, False, False)
534
534
 
535
535
  слова = list(Прочитать_слова(файл.readline, путь_к_файлу))
536
536
  if not Проверить_соответствие_слов(слова, путь_к_файлу): return
@@ -671,7 +671,7 @@ def Преобразовать_код(путь_к_файлу):
671
671
  try:
672
672
  исходник = Разборщик_слов.untokenize(map(lambda с: (с[0], с[1]), слова))
673
673
  except Exception as ошибка:
674
- Вывести_текст_исключения(ошибка, 'при чтении кода', путь_к_файлу)
674
+ Вывести_текст_исключения(ошибка, 'при чтении кода', путь_к_файлу, True, False)
675
675
 
676
676
  if исходник:
677
677
  исходник = 'import ' + __name__.split('.')[0] + '.__Заголовочный_код__\n\n' + исходник
@@ -737,7 +737,10 @@ def Посчитать_физические_строки(путь_к_файлу,
737
737
  r"AssertionError": r'Ошибка проверки: условие не выполнено.',
738
738
  r"attempted relative import with no known parent package": r'Попытка относительного импорта без известного родительского пакета.',
739
739
  r"pop from empty list": r'Извлечение из пустого списка.',
740
- r"No module named '(.+)'": r'Модуль под названием "\1" не найден.'
740
+ r"No module named '(.+)'": r'Модуль под названием "\1" не найден.',
741
+ r"unindent does not match any outer indentation level": r'Отступ не соответствует никакому окружающему уровню.',
742
+ r"int too big to convert": r'Число слишком большое для преобразования.',
743
+ r"unexpected indent": r'Неожиданный отступ.'
741
744
  }
742
745
 
743
746
  def Очистить_файлы():
@@ -746,7 +749,7 @@ def Очистить_файлы():
746
749
  кэш = ОС.path.join(ОС.path.dirname(файл), '__pycache__')
747
750
  if ОС.path.exists(кэш): Операции_оболочки.rmtree(кэш)
748
751
 
749
- def Вывести_текст_исключения(исключение, заголовок, путь_к_файлу, с_заголовком = True):
752
+ def Вывести_текст_исключения(исключение, заголовок, путь_к_файлу, с_заголовком = True, добавлен_импорт = False):
750
753
  назв_исп_ф = путь_к_файлу.split('\\' if Система.platform.startswith('win32') else '/')[-1]
751
754
  сч = 1
752
755
  while True:
@@ -760,9 +763,9 @@ def Вывести_текст_исключения(исключение, заг
760
763
  if искл.filename == назв_исп_ф: break
761
764
  сч += 1
762
765
  if сч != -1 and искл.filename == назв_исп_ф:
763
- номер_строки = искл.lineno - 2
766
+ номер_строки = искл.lineno - (2 if добавлен_импорт else 0)
764
767
  else:
765
- try: номер_строки = исключение.lineno - 2
768
+ try: номер_строки = исключение.lineno - (2 if добавлен_импорт else 0)
766
769
  except: номер_строки = 0
767
770
 
768
771
  if номер_строки > 0:
@@ -793,9 +796,9 @@ def Запустить_код(название, исходник, путь_к_ф
793
796
  код = None
794
797
  try: код = compile(исходник, название, 'exec')
795
798
  except Exception as исключение:
796
- Вывести_текст_исключения(исключение, 'при разборе кода', путь_к_файлу)
799
+ Вывести_текст_исключения(исключение, 'при разборе кода', путь_к_файлу, True, True)
797
800
  if код:
798
801
  try: Запуск_кода._run_module_code(код, mod_name="__Главный__", script_name=путь_к_файлу)
799
802
  except Exception as исключение:
800
- Вывести_текст_исключения(исключение, 'при выполнении кода', путь_к_файлу)
803
+ Вывести_текст_исключения(исключение, 'при выполнении кода', путь_к_файлу, True, True)
801
804
  Очистить_файлы()
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: rupython
3
- Version: 1.3.1
3
+ Version: 1.3.2
4
4
  Summary: Исполнитель кода Русского Питона
5
5
  Author: Сообщество русских программистов
6
6
  License: ОДРН
@@ -295,7 +295,7 @@ x = 0
295
295
  ###### `Вызываемое(объект)`
296
296
  Проверяет, можно ли объект вызвать как функцию.
297
297
 
298
- ###### `Код_в_знак(i)`
298
+ ###### `Символ_по_коду(i)`
299
299
  Возвращает многобайтовый символ по его числовому коду.
300
300
 
301
301
  ###### `@Метод_класса`
@@ -409,7 +409,7 @@ x = 0
409
409
  ###### `Открыть(название, режим = 'r', буферизация = -1, кодование = Пусто, при_ошибках = Пусто, новая_строка = Пусто, закрыть_описатель = Да, открыватель = Пусто)`
410
410
  Открывает файл и возвращает файловый объект.
411
411
 
412
- ###### `Знак_в_код(c)`
412
+ ###### `Код_символа(c)`
413
413
  Возвращает многобайтовый код символа `c`.
414
414
 
415
415
  ###### `Степень(основание, показатель, модуль = Пусто)`
@@ -1,7 +1,7 @@
1
- rupython/__main__.py,sha256=wfmjyJhg6iQN1_9Hl6tIu6mKHO95xP2ibVcDdIIEXjE,1256
1
+ rupython/__main__.py,sha256=sb4hTmi5_MtnNDEpm43DAgklVPWT4ddm4yQtattUdeE,1322
2
2
  rupython/__Заголовочный_код__.py,sha256=yTxMJ93pxJeg_h-BnrTMoAqSB_a0tliYX6gkXtTyWx8,13594
3
3
  rupython/__Общие_функции__.py,sha256=MH9QLcXqeFmpOS5_N8P5wA5eCYutlHRc7YUatn3CUIk,1255
4
- rupython/Преобразователь.py,sha256=2d3ty3VSnU2cT7oG8Kyta2ejies_3vJPJSuGNf0jBBA,50363
4
+ rupython/Преобразователь.py,sha256=dxVD7cqs_zQAm6RMIv8hM5ImouaY7T7lCsnFSbEhUBM,50995
5
5
  rupython/Модули/Асинхр.py,sha256=sPQUgbS_kXj-Gyn2YCjXNCUqAy8aUW2-P6gO5e7f6Cc,9925
6
6
  rupython/Модули/БД.py,sha256=GQSKiv3fRF9Bsw4S7jXw4KR1Ibqvk8TwQbEe1JjvsGA,38392
7
7
  rupython/Модули/ДатаВремя.py,sha256=Ec9YyY1jb-R9uyXrrDNfaTqBQVv98_GPn29OY8dUkj8,27523
@@ -14,8 +14,8 @@ rupython/Модули/Потоки.py,sha256=am6hWxcrCx4Vx_FFPMIIhSl_ShWSV5vjW5d
14
14
  rupython/Модули/РегВыр.py,sha256=OWgYtgBDtHsEHUOAsGx7K0UGq92sumSqEyf-sVpICjw,6709
15
15
  rupython/Модули/Случ.py,sha256=foIuQo2QZ5z0iyxp9fn4NaunSx96vYzC2pRjwaT2FD8,2723
16
16
  rupython/Модули/Файлы.py,sha256=AekdYf2jmPhRW_9BngbQDzgTfsMr4zPpKzuwp6fRfzQ,6895
17
- rupython-1.3.1.dist-info/LICENSE,sha256=qqVMvbdzR5e4XIV6qwYVgI5Ovki8wR0qZaKB2Oj9DXw,25656
18
- rupython-1.3.1.dist-info/METADATA,sha256=SrKBt4MpO6sAbbE0pqWB7if728Q4r5UILawWh4lu3tM,30445
19
- rupython-1.3.1.dist-info/WHEEL,sha256=P9jw-gEje8ByB7_hXoICnHtVCrEwMQh-630tKvQWehc,91
20
- rupython-1.3.1.dist-info/top_level.txt,sha256=GtXaS8JTsBm5hpQxxtQlrxK6rExvSAK_Cp44FrY4210,9
21
- rupython-1.3.1.dist-info/RECORD,,
17
+ rupython-1.3.2.dist-info/LICENSE,sha256=qqVMvbdzR5e4XIV6qwYVgI5Ovki8wR0qZaKB2Oj9DXw,25656
18
+ rupython-1.3.2.dist-info/METADATA,sha256=UsXvGM99Hn_il6wjJVCi4DN-qTyKcC5pqlvh64s3CO4,30456
19
+ rupython-1.3.2.dist-info/WHEEL,sha256=P9jw-gEje8ByB7_hXoICnHtVCrEwMQh-630tKvQWehc,91
20
+ rupython-1.3.2.dist-info/top_level.txt,sha256=GtXaS8JTsBm5hpQxxtQlrxK6rExvSAK_Cp44FrY4210,9
21
+ rupython-1.3.2.dist-info/RECORD,,