rupython 1.1.2__py3-none-any.whl → 1.1.4__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.
@@ -50,7 +50,7 @@ import importlib as Импортование
50
50
  }
51
51
 
52
52
  Встроенные_функции = {
53
- 'АбсЗнач': ( 'abs', None, False ),
53
+ 'АбсЗнач': ( 'abs', None, False ), # Модуль
54
54
  'АсинхрПеребиратель': ( 'aiter', None, False ),
55
55
  'АсСледующий': ( 'anext', None, False ),
56
56
  'БайтМассив': ( 'bytearray', { 'источник': 'source', 'кодование': 'encoding', 'при_ошибках': 'errors' }, True ),
@@ -112,7 +112,7 @@ import importlib as Импортование
112
112
  'Степень': ( 'pow', None, False ),
113
113
  'Строка': ( 'str', { 'кодование': 'encoding', 'при_ошибках': 'errors' }, True ), # Текст
114
114
  'Сумма': ( 'sum', { 'начало': 'start' }, False ),
115
- 'Тип': ( 'type', None, True ),
115
+ 'Тип': ( 'type', None, True ), # Вид
116
116
  'Удалить_поле': ( 'delattr', None, False ),
117
117
  'Упаковать': ( 'zip', { 'проверить_длины': 'strict' }, False ),
118
118
  'Упорядочить': ( 'sorted', { 'ф_сравнения': 'key', 'наоборот': 'reverse' }, False ),
@@ -127,131 +127,131 @@ import importlib as Импортование
127
127
  }
128
128
 
129
129
  Специальные_названия = {
130
- '__Название__': '__name__',
130
+ '__Название__': '__name__',
131
131
  '__Пакет__': '__package__',
132
- '__Модуль__': '__module__',
132
+ '__Модуль__': '__module__',
133
133
  '__Файл__': '__file__',
134
- '__Полное_имя__': '__qualname__',
134
+ '__Полное_имя__': '__qualname__',
135
135
  '__Документация__': '__doc__',
136
136
  '__Примечания__': '__annotations__',
137
137
  '__Загрузчик__': '__loader__',
138
138
  '__Спецификация__': '__spec__',
139
139
  '__Встроенное__': '__builtins__',
140
140
  '__Кэш__': '__cached__',
141
- '__Поля__': '__dict__',
142
- '__Класс__': '__class__',
143
- '__Надклассы__': '__bases__',
141
+ '__Поля__': '__dict__',
142
+ '__Класс__': '__class__',
143
+ '__Надклассы__': '__bases__',
144
144
  '__Подклассы__': '__subclasses__',
145
- '__Порядок_разрешения_методов__': '__mro__',
145
+ '__Порядок_разрешения_методов__': '__mro__',
146
146
  '__Параметры_типа__': '__type_params__',
147
- '__Значение__': '__value__',
148
- '__По_умолчанию__': '__defaults__',
149
- '__Именованные_по_умолчанию': '__kwdefaults__',
150
- '__Замыкание__': '__closure__',
151
- '__Код__': '__code__',
152
- '__Флаги__': '__flags__',
147
+ '__Значение__': '__value__',
148
+ '__По_умолчанию__': '__defaults__',
149
+ '__Именованные_по_умолчанию': '__kwdefaults__',
150
+ '__Замыкание__': '__closure__',
151
+ '__Код__': '__code__',
152
+ '__Флаги__': '__flags__',
153
153
  '__Отладка__': '__debug__',
154
- '__Создание__': '__new__',
155
- '__Подготовка__': '__init__',
156
- '__Уничтожение__': '__del__',
157
- '__Представление__': '__repr__',
158
- '__Строка__': '__str__',
159
- '__Байты__': '__bytes__',
160
- '__Формат__': '__format__',
161
- '__МЧ__': '__lt__',
162
- '__МР__': '__le__',
163
- '__РВ__': '__eq__',
164
- '__НР__': '__ne__',
165
- '__БЧ__': '__gt__',
166
- '__БР__': '__ge__',
167
- '__Хэш__': '__hash__',
168
- '__Несуществующее_поле__': '__getattr__',
169
- '__Получить_поле__': '__getattribute__',
170
- '__Установка_поля__': '__setattr__',
171
- '__Удаление_поля__': '__delattr__',
172
- '__Содержимое__': '__dir__',
173
- '__Получение__': '__get__',
174
- '__Установка__': '__set__',
175
- '__Удаление__': '__delete__',
176
- '__Вызов__': '__call__',
177
- '__Длина__': '__len__',
178
- '__Подсказка_длины__': '__length_hint__',
179
- '__Получение_значения__': '__getitem__',
180
- '__Установка_значения__': '__setitem__',
181
- '__Удаление_значения__': '__delitem__',
182
- '__Пропущенное_значение__': '__missing__',
183
- '__Перебиратель__': '__iter__',
184
- '__АсПеребиратель__': '__aiter__',
185
- '__Следующий__': '__next__',
186
- '__АсСледующий__': '__anext__',
187
- '__Обращение__': '__reversed__',
188
- '__Содержит__': '__contains__',
154
+ '__Создание__': '__new__',
155
+ '__Подготовка__': '__init__',
156
+ '__Уничтожение__': '__del__',
157
+ '__Представление__': '__repr__',
158
+ '__Строка__': '__str__',
159
+ '__Байты__': '__bytes__',
160
+ '__Формат__': '__format__',
161
+ '__МЧ__': '__lt__',
162
+ '__МР__': '__le__',
163
+ '__РВ__': '__eq__',
164
+ '__НР__': '__ne__',
165
+ '__БЧ__': '__gt__',
166
+ '__БР__': '__ge__',
167
+ '__Хэш__': '__hash__',
168
+ '__Несуществующее_поле__': '__getattr__',
169
+ '__Получить_поле__': '__getattribute__',
170
+ '__Установка_поля__': '__setattr__',
171
+ '__Удаление_поля__': '__delattr__',
172
+ '__Содержимое__': '__dir__',
173
+ '__Получение__': '__get__',
174
+ '__Установка__': '__set__',
175
+ '__Удаление__': '__delete__',
176
+ '__Вызов__': '__call__',
177
+ '__Длина__': '__len__',
178
+ '__Подсказка_длины__': '__length_hint__',
179
+ '__Получение_значения__': '__getitem__',
180
+ '__Установка_значения__': '__setitem__',
181
+ '__Удаление_значения__': '__delitem__',
182
+ '__Пропущенное_значение__': '__missing__',
183
+ '__Перебиратель__': '__iter__',
184
+ '__АсПеребиратель__': '__aiter__',
185
+ '__Следующий__': '__next__',
186
+ '__АсСледующий__': '__anext__',
187
+ '__Обращение__': '__reversed__',
188
+ '__Содержит__': '__contains__',
189
189
  '__Сцепление__': '__concat__',
190
- '__Сложение__': '__add__',
191
- '__Вычитание__': '__sub__',
192
- '__Умножение__': '__mul__',
193
- '__МатрУмн__': '__matmul__',
194
- '__Деление__': '__truediv__',
195
- '__ЦелДел__': '__floordiv__',
196
- '__Остаток__': '__mod__',
197
- '__ЧастОст__': '__divmod__',
198
- '__Степень__': '__pow__',
199
- '__ЛСдвиг__': '__lshift__',
200
- '__ПСдвиг__': '__rshift__',
201
- '__ПобитИ__': '__and__',
202
- '__ПобитИсклИли__': '__xor__',
203
- '__ПобитИли__': '__or__',
204
- '__АрифмОтр__': '__neg__',
205
- '__ОдПлюс__': '__pos__',
206
- '__АбсЗнач__': '__abs__',
207
- '__ПобитИнв__': '__invert__',
208
- '__Прав_Сложение__': '__radd__',
209
- '__Прав_Вычитание__': '__rsub__',
210
- '__Прав_Умножение__': '__rmul__',
211
- '__Прав_МатрУмн__': '__rmatmul__',
212
- '__Прав_Деление__': '__rtruediv__',
213
- '__Прав_ЦелДел__': '__rfloordiv__',
214
- '__Прав_Остаток__': '__rmod__',
215
- '__Прав_ЧастОст__': '__rdivmod__',
216
- '__Прав_Степень__': '__rpow__',
217
- '__Прав_ЛСдвиг__': '__rlshift__',
218
- '__Прав_ПСдвиг__': '__rrshift__',
219
- '__Прав_И__': '__rand__',
220
- '__Прав_ИсклИли__': '__rxor__',
221
- '__Прав_Или__': '__ror__',
222
- '__Присв_Сложение__': '__iadd__',
223
- '__Присв_Вычитание__': '__isub__',
224
- '__Присв_Умножение__': '__imul__',
225
- '__Присв_МатрУмн__': '__imatmul__',
226
- '__Присв_Деление__': '__itruediv__',
227
- '__Присв_ЦелДел__': '__ifloordiv__',
228
- '__Присв_Остаток__': '__imod__',
229
- '__Присв_Степень__': '__ipow__',
230
- '__Присв_ЛСдвиг__': '__ilshift__',
231
- '__Присв_ПСдвиг__': '__irshift__',
232
- '__Присв_И__': '__iand__',
233
- '__Присв_ИсклИли__': '__ixor__',
234
- '__Присв_Или__': '__ior__',
235
- '__Компл__': '__complex__',
236
- '__Цел__': '__int__',
237
- '__Вещ__': '__float__',
238
- '__Индекс__': '__index__',
239
- '__Округлить__': '__round__',
240
- '__ЦелЧасть__': '__trunc__',
241
- '__МеньшЦел__': '__floor__',
242
- '__БольшЦел__': '__ceil__',
243
- '__Вход__': '__enter__',
244
- '__Выход__': '__exit__',
245
- '__Сопоставление_аргументов__': '__match_args__',
246
- '__Буфер__': '__buffer__',
247
- '__Освобождение_буфера__': '__release_buffer__',
248
- '__Слоты__': '__slots__',
249
- '__Подготовка_подкласса__': '__init_subclass__',
250
- '__Получение_значения_из_класса__': '__class_getitem__',
251
- '__Основные_классы__': '__mro_entries__',
252
- '__Проверка_экземпляра__': '__instancecheck__',
253
- '__Проверка_подкласса__': '__subclasscheck__',
254
- '__Экспортуемое__': '__all__'
190
+ '__Сложение__': '__add__',
191
+ '__Вычитание__': '__sub__',
192
+ '__Умножение__': '__mul__',
193
+ '__МатрУмн__': '__matmul__',
194
+ '__Деление__': '__truediv__',
195
+ '__ЦелДел__': '__floordiv__',
196
+ '__Остаток__': '__mod__',
197
+ '__ЧастОст__': '__divmod__',
198
+ '__Степень__': '__pow__',
199
+ '__ЛСдвиг__': '__lshift__',
200
+ '__ПСдвиг__': '__rshift__',
201
+ '__ПобитИ__': '__and__',
202
+ '__ПобитИсклИли__': '__xor__',
203
+ '__ПобитИли__': '__or__',
204
+ '__АрифмОтр__': '__neg__',
205
+ '__ОдПлюс__': '__pos__',
206
+ '__АбсЗнач__': '__abs__',
207
+ '__ПобитИнв__': '__invert__',
208
+ '__Прав_Сложение__': '__radd__',
209
+ '__Прав_Вычитание__': '__rsub__',
210
+ '__Прав_Умножение__': '__rmul__',
211
+ '__Прав_МатрУмн__': '__rmatmul__',
212
+ '__Прав_Деление__': '__rtruediv__',
213
+ '__Прав_ЦелДел__': '__rfloordiv__',
214
+ '__Прав_Остаток__': '__rmod__',
215
+ '__Прав_ЧастОст__': '__rdivmod__',
216
+ '__Прав_Степень__': '__rpow__',
217
+ '__Прав_ЛСдвиг__': '__rlshift__',
218
+ '__Прав_ПСдвиг__': '__rrshift__',
219
+ '__Прав_И__': '__rand__',
220
+ '__Прав_ИсклИли__': '__rxor__',
221
+ '__Прав_Или__': '__ror__',
222
+ '__Присв_Сложение__': '__iadd__',
223
+ '__Присв_Вычитание__': '__isub__',
224
+ '__Присв_Умножение__': '__imul__',
225
+ '__Присв_МатрУмн__': '__imatmul__',
226
+ '__Присв_Деление__': '__itruediv__',
227
+ '__Присв_ЦелДел__': '__ifloordiv__',
228
+ '__Присв_Остаток__': '__imod__',
229
+ '__Присв_Степень__': '__ipow__',
230
+ '__Присв_ЛСдвиг__': '__ilshift__',
231
+ '__Присв_ПСдвиг__': '__irshift__',
232
+ '__Присв_И__': '__iand__',
233
+ '__Присв_ИсклИли__': '__ixor__',
234
+ '__Присв_Или__': '__ior__',
235
+ '__Компл__': '__complex__',
236
+ '__Цел__': '__int__',
237
+ '__Вещ__': '__float__',
238
+ '__Индекс__': '__index__',
239
+ '__Округлить__': '__round__',
240
+ '__ЦелЧасть__': '__trunc__',
241
+ '__МеньшЦел__': '__floor__',
242
+ '__БольшЦел__': '__ceil__',
243
+ '__Вход__': '__enter__',
244
+ '__Выход__': '__exit__',
245
+ '__Сопоставление_аргументов__': '__match_args__',
246
+ '__Буфер__': '__buffer__',
247
+ '__Освобождение_буфера__': '__release_buffer__',
248
+ '__Слоты__': '__slots__',
249
+ '__Подготовка_подкласса__': '__init_subclass__',
250
+ '__Получение_значения_из_класса__': '__class_getitem__',
251
+ '__Основные_классы__': '__mro_entries__',
252
+ '__Проверка_экземпляра__': '__instancecheck__',
253
+ '__Проверка_подкласса__': '__subclasscheck__',
254
+ '__Экспорт__': '__all__'
255
255
  }
256
256
 
257
257
  Исключения = {
@@ -316,10 +316,7 @@ import importlib as Импортование
316
316
  'ПредупрОБайтах': 'BytesWarning'
317
317
  }
318
318
 
319
- Ошибка_чтения_кода = False
320
-
321
- def Прочитать_слова(чтение_строки):
322
- global Ошибка_чтения_кода
319
+ def Прочитать_слова(чтение_строки, путь_к_файлу):
323
320
  try:
324
321
  for тип, название, _,_, строка in Разборщик_слов.generate_tokens(чтение_строки):
325
322
  if тип == 5: название = название.replace(' ' * 4, '\t')
@@ -327,8 +324,7 @@ def Прочитать_слова(чтение_строки):
327
324
  while (сч < len(строка) and строка[сч] == '\t'): отступов += 1; сч += 1
328
325
  yield тип, название, отступов
329
326
  except Exception as ошибка:
330
- print("Ошибка чтения кода:\n" + str(ошибка))
331
- Ошибка_чтения_кода = True
327
+ Вывести_текст_исключения(ошибка, 'при чтении кода', путь_к_файлу)
332
328
 
333
329
  def Выполнить_основные_замены(слова, соответствия, не_после_точки = False):
334
330
  for номер, слово in enumerate(слова):
@@ -427,6 +423,9 @@ def Обработать_импорт(импорт, путь_к_текущему
427
423
  if путь not in Временные_файлы:
428
424
  код = Преобразовать_код(путь + '.крп')
429
425
  файл = open(путь + '.py', mode='w', encoding='utf-8')
426
+ if (not файл):
427
+ искл = SyntaxError('Невозможно открыть файл "' + файл + '".')
428
+ Вывести_текст_исключения(искл, 'при чтении кода', путь_к_файлу)
430
429
  файл.write(код)
431
430
  файл.close()
432
431
  Временные_файлы.append(путь)
@@ -458,7 +457,11 @@ def Проверить_соответствие_слов(слова, путь_к
458
457
  Циклы_со_счётчиком = []
459
458
 
460
459
  def Преобразовать_код(путь_к_файлу):
461
- слова = list(Прочитать_слова(open(путь_к_файлу, encoding='utf-8').readline))
460
+ файл = open(путь_к_файлу, 'r', encoding='utf-8')
461
+ if (not файл):
462
+ искл = SyntaxError('Невозможно открыть файл "' + файл + '".')
463
+ Вывести_текст_исключения(искл, 'при чтении кода', путь_к_файлу)
464
+ слова = list(Прочитать_слова(файл.readline, путь_к_файлу))
462
465
  if not Проверить_соответствие_слов(слова, путь_к_файлу): return
463
466
 
464
467
  # обрабатываем импорты
@@ -529,6 +532,11 @@ def Преобразовать_код(путь_к_файлу):
529
532
  слова.insert(поз + сдвиг + 2, (1, 'True', отступов))
530
533
  слова.insert(поз + сдвиг + 3, (54, ')', отступов))
531
534
  сдвиг += 3
535
+ if поз + сдвиг + 2 < len(слова) and слова[поз + сдвиг + 2][1] != '\n':
536
+ слова.insert(поз + сдвиг + 2, (4, '\n', отступов))
537
+ слова.insert(поз + сдвиг + 3, (5, '\t' * (отступов + 1), отступов + 1))
538
+ сдвиг += 2
539
+ сч = поз + сдвиг + 2
532
540
 
533
541
  сдвиг = 0
534
542
  for поз in [i for i, x in enumerate(слова) if x[1] == 'До']:
@@ -586,17 +594,37 @@ def Преобразовать_код(путь_к_файлу):
586
594
  else: break
587
595
 
588
596
  # Запускаем разборщик
589
- global Ошибка_чтения_кода
590
597
  исходник = None
591
598
  try:
592
599
  исходник = Разборщик_слов.untokenize(map(lambda с: (с[0], с[1]), слова))
593
600
  except Exception as ошибка:
594
- print("Ошибка чтения кода:\n" + str(ошибка))
595
- Ошибка_чтения_кода = True
601
+ Вывести_текст_исключения(ошибка, 'при чтении кода', путь_к_файлу)
596
602
 
597
- исходник = 'import ' + __name__.split('.')[0] + '.__Заголовочный_код__\n\n' + исходник
603
+ if исходник:
604
+ исходник = 'import ' + __name__.split('.')[0] + '.__Заголовочный_код__\n\n' + исходник
598
605
 
599
- return None if Ошибка_чтения_кода else исходник
606
+ return исходник
607
+
608
+ def Посчитать_физические_строки(путь_к_файлу, логическая_строка):
609
+ try:
610
+ физические_строки = 0
611
+ текущая_логическая = 0
612
+ with open(путь_к_файлу, 'r', encoding='utf-8') as файл:
613
+ продолжение = False
614
+ for строка in файл:
615
+ физические_строки += 1
616
+ строка = строка.rstrip('\n')
617
+ if not продолжение:
618
+ текущая_логическая += 1
619
+ if строка.endswith('\\'):
620
+ продолжение = True
621
+ else:
622
+ продолжение = False
623
+ if текущая_логическая >= логическая_строка:
624
+ return физические_строки
625
+ return физические_строки
626
+ except:
627
+ return логическая_строка
600
628
 
601
629
  def Вывести_текст_исключения(исключение, заголовок, путь_к_файлу):
602
630
  назв_исп_ф = путь_к_файлу.split('\\' if Система.platform.startswith('win32') else '/')[-1]
@@ -617,6 +645,9 @@ def Вывести_текст_исключения(исключение, заг
617
645
  try: номер_строки = исключение.lineno - 2
618
646
  except: номер_строки = 0
619
647
 
648
+ if номер_строки > 0:
649
+ номер_строки = Посчитать_физические_строки(путь_к_файлу, номер_строки)
650
+
620
651
  выч_стр = 0
621
652
  for ц in Циклы_со_счётчиком:
622
653
  if номер_строки > ц[1] + 1: выч_стр += 2;
@@ -633,6 +664,9 @@ def Вывести_текст_исключения(исключение, заг
633
664
  try: print(' ' + исключение.msg)
634
665
  except: print(' ' + str(исключение))
635
666
 
667
+ input()
668
+ Система.exit()
669
+
636
670
  def Запустить_код(название, исходник, путь_к_файлу):
637
671
  код = None
638
672
  try: код = compile(исходник, название, 'exec')
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: rupython
3
- Version: 1.1.2
3
+ Version: 1.1.4
4
4
  Summary: Исполнитель кода Русского Питона
5
5
  Description-Content-Type: text/markdown
6
6
  License-File: LICENSE
@@ -1,11 +1,11 @@
1
1
  rupython/__main__.py,sha256=BxtsIK8PJuOOGVDKxqoscwJjjWWhZts7adicFuwUL6k,540
2
2
  rupython/__Заголовочный_код__.py,sha256=VWghfQc6dv9lwIeQvJotpdOlBtHZeN00NBeL4RdWloA,10998
3
- rupython/Преобразователь.py,sha256=BPADuo5ipCBmpjQPNUQXZuBnjyOKqZN5AVk0SVtA08c,36388
3
+ rupython/Преобразователь.py,sha256=zH2eaYqAKwfYXOUU_WWVqC6omm8Cp4jPxo0X_-A_MUk,38855
4
4
  rupython/Модули/Матем.py,sha256=d8ekm7GJreu7LJ9KmAKcTOciIUQ-VBI567BfK_QeLSc,3587
5
5
  rupython/Модули/РегВыр.py,sha256=yeXYfeDF2qw4DSKVdZVSFInMUW52U7Nq_KOJKvm4XnM,6349
6
6
  rupython/Модули/Случ.py,sha256=oeVdSdFVb4X_T-nX2P7NSIhise1zUPIS4lk7h-67XSg,2689
7
- rupython-1.1.2.dist-info/LICENSE,sha256=iWzdt1wyTlK8qNSu7TzK8pjjIcCvLvWHycp7ACRcWEc,59
8
- rupython-1.1.2.dist-info/METADATA,sha256=QrjLn-6rPiRXH9GTJnWWr7_UD231Z6Y5_32lCS13HsQ,13869
9
- rupython-1.1.2.dist-info/WHEEL,sha256=P9jw-gEje8ByB7_hXoICnHtVCrEwMQh-630tKvQWehc,91
10
- rupython-1.1.2.dist-info/top_level.txt,sha256=GtXaS8JTsBm5hpQxxtQlrxK6rExvSAK_Cp44FrY4210,9
11
- rupython-1.1.2.dist-info/RECORD,,
7
+ rupython-1.1.4.dist-info/LICENSE,sha256=iWzdt1wyTlK8qNSu7TzK8pjjIcCvLvWHycp7ACRcWEc,59
8
+ rupython-1.1.4.dist-info/METADATA,sha256=iyWOSt6mARPjZIlvKypU8irr7WB7_f2CwtfkYugETEE,13869
9
+ rupython-1.1.4.dist-info/WHEEL,sha256=P9jw-gEje8ByB7_hXoICnHtVCrEwMQh-630tKvQWehc,91
10
+ rupython-1.1.4.dist-info/top_level.txt,sha256=GtXaS8JTsBm5hpQxxtQlrxK6rExvSAK_Cp44FrY4210,9
11
+ rupython-1.1.4.dist-info/RECORD,,