rupython 1.2.17__py3-none-any.whl → 1.3.0__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.
@@ -287,7 +287,7 @@ from io import StringIO as Текстовый_ВВ
287
287
  'ОшибкаСоединениеОтменено': 'ConnectionAbortedError',
288
288
  'ОшибкаСоединениеОтклонено': 'ConnectionRefusedError',
289
289
  'ОшибкаСоединениеСброшено': 'ConnectionResetError',
290
- 'ОшибкаФайлСуществует': 'FileExistsError',
290
+ 'ОшибкаФайлУжеСуществует': 'FileExistsError',
291
291
  'ОшибкаФайлНеНайден': 'FileNotFoundError',
292
292
  'ОшибкаПрервано': 'InterruptedError',
293
293
  'ОшибкаПапкаВместоФайла': 'IsADirectoryError',
@@ -331,7 +331,7 @@ def Прочитать_слова(чтение_строки, путь_к_фай
331
331
 
332
332
  def Выполнить_основные_замены(слова, соответствия):
333
333
  for номер, слово in enumerate(слова):
334
- if (номер == 0 or слова[номер - 1][1] != '.') and \
334
+ if (номер == 0 or (слова[номер - 1][1] != '.' or (номер > 1 and слова[номер - 2][1] in ('.', 'from')))) and \
335
335
  слово[0] == 1 and слово[1] in соответствия:
336
336
  слова[номер] = (1, соответствия[слово[1]], слово[2])
337
337
 
@@ -466,7 +466,7 @@ def Обработать_импорт(импорт, путь_к_текущему
466
466
  источник = импорт['источник'] if импорт['источник'] else ''
467
467
  подъёмов = 0
468
468
  if len(источник) > 0:
469
- while источник[подъёмов] == '.': подъёмов += 1
469
+ while подъёмов < len(источник) and источник[подъёмов] == '.': подъёмов += 1
470
470
  источник = источник[подъёмов:]
471
471
  if подъёмов == 1: подъёмов = 0
472
472
  разделитель = '\\' if Система.platform.startswith('win32') else '/'
@@ -480,7 +480,7 @@ def Обработать_импорт(импорт, путь_к_текущему
480
480
  код = Преобразовать_код(путь + '.крп')
481
481
  файл = open(путь + '.py', mode='w', encoding='utf-8')
482
482
  if (not файл):
483
- искл = SyntaxError('Невозможно открыть файл "' + файл + '".')
483
+ искл = FileNotFoundError('Невозможно открыть файл "' + файл + '".')
484
484
  Вывести_текст_исключения(искл, 'при чтении кода', путь_к_файлу)
485
485
  файл.write(код)
486
486
  файл.close()
@@ -513,10 +513,12 @@ def Проверить_соответствие_слов(слова, путь_к
513
513
  Циклы_со_счётчиком = []
514
514
 
515
515
  def Преобразовать_код(путь_к_файлу):
516
- файл = open(путь_к_файлу, 'r', encoding='utf-8')
517
- if (not файл):
518
- искл = SyntaxError('Невозможно открыть файл "' + файл + '".')
519
- Вывести_текст_исключения(искл, 'при чтении кода', путь_к_файлу)
516
+ try:
517
+ файл = open(путь_к_файлу, 'r', encoding='utf-8')
518
+ except:
519
+ искл = FileNotFoundError('Невозможно открыть файл "' + путь_к_файлу + '".')
520
+ Вывести_текст_исключения(искл, 'при чтении кода', путь_к_файлу, False)
521
+
520
522
  слова = list(Прочитать_слова(файл.readline, путь_к_файлу))
521
523
  if not Проверить_соответствие_слов(слова, путь_к_файлу): return
522
524
 
@@ -719,10 +721,11 @@ def Посчитать_физические_строки(путь_к_файлу,
719
721
  r"MemoryError": r'Недостаточно памяти для выполнения операции.',
720
722
  r"OverflowError: (.+)": r'Переполнение: \1.',
721
723
  r"no binding for nonlocal '(.+)' found": 'Не найдена привязка для нелокальной сущности "\1".',
722
- r"AssertionError": r'Ошибка проверки: условие не выполнено.'
724
+ r"AssertionError": r'Ошибка проверки: условие не выполнено.',
725
+ r"attempted relative import with no known parent package": r'Попытка относительного импорта без известного родительского пакета.'
723
726
  }
724
727
 
725
- def Вывести_текст_исключения(исключение, заголовок, путь_к_файлу):
728
+ def Вывести_текст_исключения(исключение, заголовок, путь_к_файлу, с_заголовком = True):
726
729
  назв_исп_ф = путь_к_файлу.split('\\' if Система.platform.startswith('win32') else '/')[-1]
727
730
  сч = 1
728
731
  while True:
@@ -753,10 +756,11 @@ def Вывести_текст_исключения(исключение, заг
753
756
  название_исключения = type(исключение).__name__
754
757
  if название_исключения in Исключения.values():
755
758
  название_исключения = next(к for к, з in Исключения.items() if з == название_исключения)
756
- print('\n(!) Исключение "' + название_исключения + '" ' + заголовок)
757
- print(' в файле "' + путь_к_файлу + '"' + ('.\n' if номер_строки == 0 else ''))
758
- if номер_строки > 0:
759
- print(' на строке № ' + str(номер_строки) + '.\n');
759
+ if с_заголовком:
760
+ print('\n(!) Исключение "' + название_исключения + '" ' + заголовок)
761
+ print(' в файле "' + путь_к_файлу + '"' + ('.\n' if номер_строки == 0 else ''))
762
+ if номер_строки > 0:
763
+ print(' на строке № ' + str(номер_строки) + '.\n');
760
764
  try: текст_исключения = исключение.msg
761
765
  except AttributeError: текст_исключения = str(исключение)
762
766
 
@@ -764,8 +768,9 @@ def Вывести_текст_исключения(исключение, заг
764
768
  if РегВыр.match(шаблон, текст_исключения):
765
769
  текст_исключения = РегВыр.sub(шаблон, перевод, текст_исключения)
766
770
  break
767
- print(' ' + str(текст_исключения))
771
+ print((' ' if с_заголовком else '') + str(текст_исключения))
768
772
 
773
+ for файл in Временные_файлы: ОС.remove(файл + '.py')
769
774
  input()
770
775
  Система.exit()
771
776
 
@@ -778,5 +783,4 @@ def Запустить_код(название, исходник, путь_к_ф
778
783
  try: Запуск_кода._run_module_code(код, mod_name="__Главный__", script_name=путь_к_файлу)
779
784
  except Exception as исключение:
780
785
  Вывести_текст_исключения(исключение, 'при выполнении кода', путь_к_файлу)
781
- for файл in Временные_файлы:
782
- ОС.remove(файл + '.py')
786
+ for файл in Временные_файлы: ОС.remove(файл + '.py')
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: rupython
3
- Version: 1.2.17
3
+ Version: 1.3.0
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=TdW4tdadm9sw1w0YZoFLwOw72bVM9QnDq0XOFYlJHUk,48823
4
+ rupython/Преобразователь.py,sha256=7-lzB-kZmuekzYYrFblbnVGw7WHfZDSsM6voS9dTiV4,49373
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.2.17.dist-info/LICENSE,sha256=qqVMvbdzR5e4XIV6qwYVgI5Ovki8wR0qZaKB2Oj9DXw,25656
18
- rupython-1.2.17.dist-info/METADATA,sha256=snP9vb5fRFWIN-fuNLxmzX_THrfyM2SQCuNyEHg6ZNI,30446
19
- rupython-1.2.17.dist-info/WHEEL,sha256=P9jw-gEje8ByB7_hXoICnHtVCrEwMQh-630tKvQWehc,91
20
- rupython-1.2.17.dist-info/top_level.txt,sha256=GtXaS8JTsBm5hpQxxtQlrxK6rExvSAK_Cp44FrY4210,9
21
- rupython-1.2.17.dist-info/RECORD,,
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,,