rupython 1.2.17__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.
- rupython//342/225/250/320/257/342/225/244/320/220/342/225/250/342/225/241/342/225/250/342/225/233/342/225/250/342/226/222/342/225/244/320/220/342/225/250/342/226/221/342/225/250/342/225/226/342/225/250/342/225/233/342/225/250/342/226/223/342/225/250/342/226/221/342/225/244/320/222/342/225/250/342/225/241/342/225/250/342/225/227/342/225/244/320/234.py +49 -30
- {rupython-1.2.17.dist-info → rupython-1.3.1.dist-info}/METADATA +1 -1
- {rupython-1.2.17.dist-info → rupython-1.3.1.dist-info}/RECORD +6 -6
- {rupython-1.2.17.dist-info → rupython-1.3.1.dist-info}/LICENSE +0 -0
- {rupython-1.2.17.dist-info → rupython-1.3.1.dist-info}/WHEEL +0 -0
- {rupython-1.2.17.dist-info → rupython-1.3.1.dist-info}/top_level.txt +0 -0
@@ -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
|
Встроенные_функции = {
|
@@ -287,7 +289,7 @@ from io import StringIO as Текстовый_ВВ
|
|
287
289
|
'ОшибкаСоединениеОтменено': 'ConnectionAbortedError',
|
288
290
|
'ОшибкаСоединениеОтклонено': 'ConnectionRefusedError',
|
289
291
|
'ОшибкаСоединениеСброшено': 'ConnectionResetError',
|
290
|
-
'
|
292
|
+
'ОшибкаФайлУжеСуществует': 'FileExistsError',
|
291
293
|
'ОшибкаФайлНеНайден': 'FileNotFoundError',
|
292
294
|
'ОшибкаПрервано': 'InterruptedError',
|
293
295
|
'ОшибкаПапкаВместоФайла': 'IsADirectoryError',
|
@@ -331,7 +333,7 @@ def Прочитать_слова(чтение_строки, путь_к_фай
|
|
331
333
|
|
332
334
|
def Выполнить_основные_замены(слова, соответствия):
|
333
335
|
for номер, слово in enumerate(слова):
|
334
|
-
if (номер == 0 or слова[номер - 1][1] != '.') and \
|
336
|
+
if (номер == 0 or (слова[номер - 1][1] != '.' or (номер > 1 and слова[номер - 2][1] in ('.', 'from')))) and \
|
335
337
|
слово[0] == 1 and слово[1] in соответствия:
|
336
338
|
слова[номер] = (1, соответствия[слово[1]], слово[2])
|
337
339
|
|
@@ -466,7 +468,7 @@ def Обработать_импорт(импорт, путь_к_текущему
|
|
466
468
|
источник = импорт['источник'] if импорт['источник'] else ''
|
467
469
|
подъёмов = 0
|
468
470
|
if len(источник) > 0:
|
469
|
-
while источник[подъёмов] == '.': подъёмов += 1
|
471
|
+
while подъёмов < len(источник) and источник[подъёмов] == '.': подъёмов += 1
|
470
472
|
источник = источник[подъёмов:]
|
471
473
|
if подъёмов == 1: подъёмов = 0
|
472
474
|
разделитель = '\\' if Система.platform.startswith('win32') else '/'
|
@@ -475,16 +477,27 @@ def Обработать_импорт(импорт, путь_к_текущему
|
|
475
477
|
путь = разделитель.join(путь) + \
|
476
478
|
(разделитель + источник.replace('.', разделитель) if len(источник) > 0 else '') + \
|
477
479
|
разделитель + название
|
478
|
-
|
480
|
+
|
481
|
+
def Преобразовать_скрипт(путь, доп_путь = None):
|
479
482
|
if путь not in Временные_файлы:
|
480
483
|
код = Преобразовать_код(путь + '.крп')
|
481
|
-
файл = open(путь + '.py', mode='w', encoding='utf-8')
|
482
|
-
if
|
483
|
-
искл =
|
484
|
+
файл = open((путь if not доп_путь else доп_путь) + '.py', mode='w', encoding='utf-8')
|
485
|
+
if not файл:
|
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 Вывести_исключение(инструкция):
|
@@ -513,10 +526,12 @@ def Проверить_соответствие_слов(слова, путь_к
|
|
513
526
|
Циклы_со_счётчиком = []
|
514
527
|
|
515
528
|
def Преобразовать_код(путь_к_файлу):
|
516
|
-
|
517
|
-
|
518
|
-
|
519
|
-
|
529
|
+
try:
|
530
|
+
файл = open(путь_к_файлу, 'r', encoding='utf-8')
|
531
|
+
except:
|
532
|
+
искл = FileNotFoundError('Невозможно открыть файл "' + путь_к_файлу + '".')
|
533
|
+
Вывести_текст_исключения(искл, 'при чтении кода', путь_к_файлу, False)
|
534
|
+
|
520
535
|
слова = list(Прочитать_слова(файл.readline, путь_к_файлу))
|
521
536
|
if not Проверить_соответствие_слов(слова, путь_к_файлу): return
|
522
537
|
|
@@ -718,11 +733,20 @@ def Посчитать_физические_строки(путь_к_файлу,
|
|
718
733
|
r"TypeError: cannot unpack non-iterable (\w+) object": r'Невозможно распаковать неитерируемый объект типа "\1".',
|
719
734
|
r"MemoryError": r'Недостаточно памяти для выполнения операции.',
|
720
735
|
r"OverflowError: (.+)": r'Переполнение: \1.',
|
721
|
-
r"no binding for nonlocal '(.+)' found": 'Не найдена привязка для нелокальной сущности "\1".',
|
722
|
-
r"AssertionError": r'Ошибка проверки: условие не выполнено.'
|
736
|
+
r"no binding for nonlocal '(.+)' found": r'Не найдена привязка для нелокальной сущности "\1".',
|
737
|
+
r"AssertionError": 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" не найден.'
|
723
741
|
}
|
724
742
|
|
725
|
-
def
|
743
|
+
def Очистить_файлы():
|
744
|
+
for файл in Временные_файлы:
|
745
|
+
ОС.remove(файл + '.py')
|
746
|
+
кэш = ОС.path.join(ОС.path.dirname(файл), '__pycache__')
|
747
|
+
if ОС.path.exists(кэш): Операции_оболочки.rmtree(кэш)
|
748
|
+
|
749
|
+
def Вывести_текст_исключения(исключение, заголовок, путь_к_файлу, с_заголовком = True):
|
726
750
|
назв_исп_ф = путь_к_файлу.split('\\' if Система.platform.startswith('win32') else '/')[-1]
|
727
751
|
сч = 1
|
728
752
|
while True:
|
@@ -744,19 +768,14 @@ def Вывести_текст_исключения(исключение, заг
|
|
744
768
|
if номер_строки > 0:
|
745
769
|
номер_строки = Посчитать_физические_строки(путь_к_файлу, номер_строки)
|
746
770
|
|
747
|
-
выч_стр = 0
|
748
|
-
for ц in Циклы_со_счётчиком:
|
749
|
-
if номер_строки > ц[1] + 1: выч_стр += 2;
|
750
|
-
elif номер_строки > ц[0]: выч_стр += 1; break
|
751
|
-
else: break
|
752
|
-
номер_строки -= выч_стр
|
753
771
|
название_исключения = type(исключение).__name__
|
754
772
|
if название_исключения in Исключения.values():
|
755
773
|
название_исключения = next(к for к, з in Исключения.items() if з == название_исключения)
|
756
|
-
|
757
|
-
|
758
|
-
if номер_строки
|
759
|
-
|
774
|
+
if с_заголовком:
|
775
|
+
print('\n(!) Исключение "' + название_исключения + '" ' + заголовок)
|
776
|
+
print(' в файле "' + путь_к_файлу + '"' + ('.\n' if номер_строки == 0 else ''))
|
777
|
+
if номер_строки > 0:
|
778
|
+
print(' на строке № ' + str(номер_строки) + '.\n');
|
760
779
|
try: текст_исключения = исключение.msg
|
761
780
|
except AttributeError: текст_исключения = str(исключение)
|
762
781
|
|
@@ -764,8 +783,9 @@ def Вывести_текст_исключения(исключение, заг
|
|
764
783
|
if РегВыр.match(шаблон, текст_исключения):
|
765
784
|
текст_исключения = РегВыр.sub(шаблон, перевод, текст_исключения)
|
766
785
|
break
|
767
|
-
print(' ' + str(текст_исключения))
|
786
|
+
print((' ' if с_заголовком else '') + str(текст_исключения))
|
768
787
|
|
788
|
+
Очистить_файлы()
|
769
789
|
input()
|
770
790
|
Система.exit()
|
771
791
|
|
@@ -778,5 +798,4 @@ def Запустить_код(название, исходник, путь_к_ф
|
|
778
798
|
try: Запуск_кода._run_module_code(код, mod_name="__Главный__", script_name=путь_к_файлу)
|
779
799
|
except Exception as исключение:
|
780
800
|
Вывести_текст_исключения(исключение, 'при выполнении кода', путь_к_файлу)
|
781
|
-
|
782
|
-
ОС.remove(файл + '.py')
|
801
|
+
Очистить_файлы()
|
@@ -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=
|
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.
|
18
|
-
rupython-1.
|
19
|
-
rupython-1.
|
20
|
-
rupython-1.
|
21
|
-
rupython-1.
|
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,,
|
File without changes
|
File without changes
|
File without changes
|