rupython 1.3.0__py3-none-any.whl → 1.3.1__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.
@@ -3,8 +3,8 @@ import runpy as Запуск_кода
3
3
  import traceback as Разборщик_исключений
4
4
  import os as ОС
5
5
  import sys as Система
6
- import importlib as Импортование
7
6
  import re as РегВыр
7
+ import shutil as Операции_оболочки
8
8
  from io import StringIO as Текстовый_ВВ
9
9
 
10
10
  Служебные_слова = {
@@ -48,7 +48,9 @@ from io import StringIO as Текстовый_ВВ
48
48
  'Используя': 'with',
49
49
  'Удалить': 'del',
50
50
  'Выбрать': 'match',
51
- 'При': 'case'
51
+ 'При': 'case',
52
+ 'Асинхр': 'async',
53
+ 'Ожидать': 'await'
52
54
  }
53
55
 
54
56
  Встроенные_функции = {
@@ -475,16 +477,27 @@ def Обработать_импорт(импорт, путь_к_текущему
475
477
  путь = разделитель.join(путь) + \
476
478
  (разделитель + источник.replace('.', разделитель) if len(источник) > 0 else '') + \
477
479
  разделитель + название
478
- if ОС.path.isfile(путь + '.крп') and not ОС.path.isfile(путь + '.py'):
480
+
481
+ def Преобразовать_скрипт(путь, доп_путь = None):
479
482
  if путь not in Временные_файлы:
480
483
  код = Преобразовать_код(путь + '.крп')
481
- файл = open(путь + '.py', mode='w', encoding='utf-8')
482
- if (not файл):
484
+ файл = open((путь if not доп_путь else доп_путь) + '.py', mode='w', encoding='utf-8')
485
+ if not файл:
483
486
  искл = FileNotFoundError('Невозможно открыть файл "' + файл + '".')
484
487
  Вывести_текст_исключения(искл, 'при чтении кода', путь_к_файлу)
485
488
  файл.write(код)
486
489
  файл.close()
487
- Временные_файлы.append(путь)
490
+ Временные_файлы.append(путь if not доп_путь else доп_путь)
491
+
492
+ if ОС.path.isfile(путь + '.крп') and not ОС.path.isfile(путь + '.py'):
493
+ Преобразовать_скрипт(путь)
494
+ elif ОС.path.exists(путь):
495
+ for скрипт_пакета in [('__Основа__', '__init__'), ('__Запуск__', '__main__')]:
496
+ if ОС.path.isfile(путь + разделитель + скрипт_пакета[0] + '.крп'):
497
+ Преобразовать_скрипт(
498
+ путь + разделитель + скрипт_пакета[0],
499
+ путь + разделитель + скрипт_пакета[1]
500
+ )
488
501
 
489
502
  def Проверить_соответствие_слов(слова, путь_к_файлу):
490
503
  def Вывести_исключение(инструкция):
@@ -720,11 +733,19 @@ def Посчитать_физические_строки(путь_к_файлу,
720
733
  r"TypeError: cannot unpack non-iterable (\w+) object": r'Невозможно распаковать неитерируемый объект типа "\1".',
721
734
  r"MemoryError": r'Недостаточно памяти для выполнения операции.',
722
735
  r"OverflowError: (.+)": r'Переполнение: \1.',
723
- r"no binding for nonlocal '(.+)' found": 'Не найдена привязка для нелокальной сущности "\1".',
736
+ r"no binding for nonlocal '(.+)' found": r'Не найдена привязка для нелокальной сущности "\1".',
724
737
  r"AssertionError": r'Ошибка проверки: условие не выполнено.',
725
- r"attempted relative import with no known parent package": r'Попытка относительного импорта без известного родительского пакета.'
738
+ r"attempted relative import with no known parent package": r'Попытка относительного импорта без известного родительского пакета.',
739
+ r"pop from empty list": r'Извлечение из пустого списка.',
740
+ r"No module named '(.+)'": r'Модуль под названием "\1" не найден.'
726
741
  }
727
742
 
743
+ def Очистить_файлы():
744
+ for файл in Временные_файлы:
745
+ ОС.remove(файл + '.py')
746
+ кэш = ОС.path.join(ОС.path.dirname(файл), '__pycache__')
747
+ if ОС.path.exists(кэш): Операции_оболочки.rmtree(кэш)
748
+
728
749
  def Вывести_текст_исключения(исключение, заголовок, путь_к_файлу, с_заголовком = True):
729
750
  назв_исп_ф = путь_к_файлу.split('\\' if Система.platform.startswith('win32') else '/')[-1]
730
751
  сч = 1
@@ -747,12 +768,6 @@ def Вывести_текст_исключения(исключение, заг
747
768
  if номер_строки > 0:
748
769
  номер_строки = Посчитать_физические_строки(путь_к_файлу, номер_строки)
749
770
 
750
- выч_стр = 0
751
- for ц in Циклы_со_счётчиком:
752
- if номер_строки > ц[1] + 1: выч_стр += 2;
753
- elif номер_строки > ц[0]: выч_стр += 1; break
754
- else: break
755
- номер_строки -= выч_стр
756
771
  название_исключения = type(исключение).__name__
757
772
  if название_исключения in Исключения.values():
758
773
  название_исключения = next(к for к, з in Исключения.items() if з == название_исключения)
@@ -768,9 +783,9 @@ def Вывести_текст_исключения(исключение, заг
768
783
  if РегВыр.match(шаблон, текст_исключения):
769
784
  текст_исключения = РегВыр.sub(шаблон, перевод, текст_исключения)
770
785
  break
771
- print((' ' if с_заголовком else '') + str(текст_исключения))
786
+ print((' ' if с_заголовком else '') + str(текст_исключения))
772
787
 
773
- for файл in Временные_файлы: ОС.remove(файл + '.py')
788
+ Очистить_файлы()
774
789
  input()
775
790
  Система.exit()
776
791
 
@@ -783,4 +798,4 @@ def Запустить_код(название, исходник, путь_к_ф
783
798
  try: Запуск_кода._run_module_code(код, mod_name="__Главный__", script_name=путь_к_файлу)
784
799
  except Exception as исключение:
785
800
  Вывести_текст_исключения(исключение, 'при выполнении кода', путь_к_файлу)
786
- for файл in Временные_файлы: ОС.remove(файл + '.py')
801
+ Очистить_файлы()
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: rupython
3
- Version: 1.3.0
3
+ Version: 1.3.1
4
4
  Summary: Исполнитель кода Русского Питона
5
5
  Author: Сообщество русских программистов
6
6
  License: ОДРН
@@ -1,7 +1,7 @@
1
1
  rupython/__main__.py,sha256=wfmjyJhg6iQN1_9Hl6tIu6mKHO95xP2ibVcDdIIEXjE,1256
2
2
  rupython/__Заголовочный_код__.py,sha256=yTxMJ93pxJeg_h-BnrTMoAqSB_a0tliYX6gkXtTyWx8,13594
3
3
  rupython/__Общие_функции__.py,sha256=MH9QLcXqeFmpOS5_N8P5wA5eCYutlHRc7YUatn3CUIk,1255
4
- rupython/Преобразователь.py,sha256=7-lzB-kZmuekzYYrFblbnVGw7WHfZDSsM6voS9dTiV4,49373
4
+ rupython/Преобразователь.py,sha256=2d3ty3VSnU2cT7oG8Kyta2ejies_3vJPJSuGNf0jBBA,50363
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.0.dist-info/LICENSE,sha256=qqVMvbdzR5e4XIV6qwYVgI5Ovki8wR0qZaKB2Oj9DXw,25656
18
- rupython-1.3.0.dist-info/METADATA,sha256=0Uu6U66o5-ucmZhNvFGpworW1fxOq4BBAHtg8-MYi1A,30445
19
- rupython-1.3.0.dist-info/WHEEL,sha256=P9jw-gEje8ByB7_hXoICnHtVCrEwMQh-630tKvQWehc,91
20
- rupython-1.3.0.dist-info/top_level.txt,sha256=GtXaS8JTsBm5hpQxxtQlrxK6rExvSAK_Cp44FrY4210,9
21
- rupython-1.3.0.dist-info/RECORD,,
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,,