rupython 1.4.0__tar.gz → 1.4.1__tar.gz
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-1.4.0 → rupython-1.4.1}/PKG-INFO +1 -1
- {rupython-1.4.0 → rupython-1.4.1}/rupython//320/237/321/200/320/265/320/276/320/261/321/200/320/260/320/267/320/276/320/262/320/260/321/202/320/265/320/273/321/214.py +42 -41
- {rupython-1.4.0 → rupython-1.4.1}/rupython.egg-info/PKG-INFO +1 -1
- {rupython-1.4.0 → rupython-1.4.1}/setup.py +1 -1
- {rupython-1.4.0 → rupython-1.4.1}/LICENSE +0 -0
- {rupython-1.4.0 → rupython-1.4.1}/README.md +0 -0
- {rupython-1.4.0 → rupython-1.4.1}/rupython/__main__.py +0 -0
- {rupython-1.4.0 → rupython-1.4.1}/rupython/__/320/227/320/260/320/263/320/276/320/273/320/276/320/262/320/276/321/207/320/275/321/213/320/271_/320/272/320/276/320/264__.py" +0 -0
- {rupython-1.4.0 → rupython-1.4.1}/rupython/__/320/236/320/261/321/211/320/270/320/265_/321/204/321/203/320/275/320/272/321/206/320/270/320/270__.py" +0 -0
- {rupython-1.4.0 → rupython-1.4.1}/rupython//320/234/320/276/320/264/321/203/320/273/320/270//320/220/321/201/320/270/320/275/321/205/321/200/320/276/320/275/320/275/320/276/321/201/321/202/321/214.py" +0 -0
- {rupython-1.4.0 → rupython-1.4.1}/rupython//320/234/320/276/320/264/321/203/320/273/320/270//320/221/320/224.py" +0 -0
- {rupython-1.4.0 → rupython-1.4.1}/rupython//320/234/320/276/320/264/321/203/320/273/320/270//320/224/320/260/321/202/320/260/320/222/321/200/320/265/320/274/321/217.py" +0 -0
- {rupython-1.4.0 → rupython-1.4.1}/rupython//320/234/320/276/320/264/321/203/320/273/320/270//320/232/320/276/320/273/320/273/320/265/320/272/321/206/320/270/320/270.py" +0 -0
- {rupython-1.4.0 → rupython-1.4.1}/rupython//320/234/320/276/320/264/321/203/320/273/320/270//320/232/321/203/321/207/320/260.py" +0 -0
- {rupython-1.4.0 → rupython-1.4.1}/rupython//320/234/320/276/320/264/321/203/320/273/320/270//320/234/320/260/321/202/320/265/320/274.py" +0 -0
- {rupython-1.4.0 → rupython-1.4.1}/rupython//320/234/320/276/320/264/321/203/320/273/320/270//320/236/321/207/320/265/321/200/320/265/320/264/321/214.py" +0 -0
- {rupython-1.4.0 → rupython-1.4.1}/rupython//320/234/320/276/320/264/321/203/320/273/320/270//320/237/320/276/321/202/320/276/320/272/320/270.py" +0 -0
- {rupython-1.4.0 → rupython-1.4.1}/rupython//320/234/320/276/320/264/321/203/320/273/320/270//320/240/320/265/320/263/320/222/321/213/321/200.py" +0 -0
- {rupython-1.4.0 → rupython-1.4.1}/rupython//320/234/320/276/320/264/321/203/320/273/320/270//320/241/320/273/321/203/321/207.py" +0 -0
- {rupython-1.4.0 → rupython-1.4.1}/rupython//320/234/320/276/320/264/321/203/320/273/320/270//320/244/320/260/320/271/320/273/321/213.py" +0 -0
- {rupython-1.4.0 → rupython-1.4.1}/rupython.egg-info/SOURCES.txt +0 -0
- {rupython-1.4.0 → rupython-1.4.1}/rupython.egg-info/dependency_links.txt +0 -0
- {rupython-1.4.0 → rupython-1.4.1}/rupython.egg-info/top_level.txt +0 -0
- {rupython-1.4.0 → rupython-1.4.1}/setup.cfg +0 -0
|
@@ -128,6 +128,7 @@ from io import StringIO as Текстовый_ВВ
|
|
|
128
128
|
'Цел': ( 'int', { 'основание': 'base' }, True ),
|
|
129
129
|
'Шестн': ( 'hex', None, False ),
|
|
130
130
|
'Экземпляр': ( 'isinstance', None, False ),
|
|
131
|
+
'Выйти': ( 'exit', None, False ),
|
|
131
132
|
'__Подключить__': ( '__import__' , { 'название': 'name', 'общие_сущности': 'globals', 'местные_сущности': 'locals', 'по_списку': 'fromlist', 'уровень': 'level' }, False )
|
|
132
133
|
}
|
|
133
134
|
|
|
@@ -367,57 +368,57 @@ def Заменить_встроенные_функции(слова, соотв
|
|
|
367
368
|
сч += 1
|
|
368
369
|
|
|
369
370
|
def Обработать_f_строки(слова, путь_к_файлу):
|
|
370
|
-
|
|
371
|
-
while
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
новые_токены = []
|
|
371
|
+
i = 0
|
|
372
|
+
while i < len(слова):
|
|
373
|
+
токен = слова[i]
|
|
374
|
+
тип, строка, отступы = токен[0], токен[1], токен[2]
|
|
375
|
+
if тип == Разборщик_слов.STRING and строка.lower().startswith(("f'", 'f"', 'f"""', "f'''")):
|
|
376
|
+
кавычка = строка[1] if строка.startswith(('f', 'F')) else строка[0]
|
|
377
|
+
содержимое = строка[len('f') + 1 : -1] if строка.lower().startswith('f') and строка.endswith(кавычка) else строка[len('f'):]
|
|
378
|
+
новые_части = []
|
|
379
379
|
поз = 0
|
|
380
380
|
while поз < len(содержимое):
|
|
381
|
-
if поз + 1 < len(содержимое) and содержимое[поз:поз+2]
|
|
382
|
-
новые_
|
|
381
|
+
if поз + 1 < len(содержимое) and содержимое[поз:поз+2] in ('{{', '}}'):
|
|
382
|
+
новые_части.append(содержимое[поз:поз+2])
|
|
383
383
|
поз += 2
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
уровень_скобок = 1
|
|
389
|
-
нач_поз = поз + 1
|
|
384
|
+
continue
|
|
385
|
+
if содержимое[поз] == '{':
|
|
386
|
+
уровень = 1
|
|
387
|
+
нач_выр = поз + 1
|
|
390
388
|
поз += 1
|
|
391
|
-
|
|
389
|
+
формат_нач = -1
|
|
390
|
+
while поз < len(содержимое) and уровень > 0:
|
|
392
391
|
if содержимое[поз] == '{':
|
|
393
|
-
уровень
|
|
392
|
+
уровень += 1
|
|
394
393
|
elif содержимое[поз] == '}':
|
|
395
|
-
уровень
|
|
394
|
+
уровень -= 1
|
|
395
|
+
elif содержимое[поз] == ':' and уровень == 1 and формат_нач == -1:
|
|
396
|
+
формат_нач = поз
|
|
396
397
|
поз += 1
|
|
397
|
-
if уровень
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
398
|
+
if уровень != 0:
|
|
399
|
+
raise SyntaxError('Незакрытое выражение в f-строке.')
|
|
400
|
+
выражение = содержимое[нач_выр : формат_нач if формат_нач != -1 else поз-1]
|
|
401
|
+
формат = содержимое[формат_нач : поз-1] if формат_нач != -1 else ''
|
|
401
402
|
try:
|
|
402
|
-
токены
|
|
403
|
-
токены
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
403
|
+
токены = list(Разборщик_слов.generate_tokens(Текстовый_ВВ(выражение).readline))
|
|
404
|
+
токены = [t for t in токены if t.type != Разборщик_слов.ENDMARKER]
|
|
405
|
+
for j, t in enumerate(токены):
|
|
406
|
+
if t.type == Разборщик_слов.NAME and t.string in Служебные_слова:
|
|
407
|
+
токены[j] = t._replace(string=Служебные_слова[t.string])
|
|
408
|
+
новый_текст = Разборщик_слов.untokenize(токены)
|
|
409
|
+
if формат and новый_текст.endswith(' '):
|
|
410
|
+
новый_текст = новый_текст.rstrip()
|
|
411
|
+
новые_части.append('{' + новый_текст + формат + '}')
|
|
412
|
+
except Exception:
|
|
413
|
+
новые_части.append(содержимое[нач_выр-1 : поз])
|
|
412
414
|
else:
|
|
413
|
-
|
|
414
|
-
while поз < len(содержимое) and содержимое[поз] not in
|
|
415
|
+
начало = поз
|
|
416
|
+
while поз < len(содержимое) and содержимое[поз] not in '{}':
|
|
415
417
|
поз += 1
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
|
|
420
|
-
номер += 1
|
|
418
|
+
новые_части.append(содержимое[начало:поз])
|
|
419
|
+
новая_строка = f"f{кавычка}{''.join(новые_части)}{кавычка}"
|
|
420
|
+
слова[i] = (Разборщик_слов.STRING, новая_строка, отступы)
|
|
421
|
+
i += 1
|
|
421
422
|
|
|
422
423
|
def Посчитать_номер_строки(слова, позиция):
|
|
423
424
|
переводов = 0
|
|
@@ -3,7 +3,7 @@ from pathlib import Path as Путь
|
|
|
3
3
|
|
|
4
4
|
Установить(
|
|
5
5
|
name = 'rupython',
|
|
6
|
-
version = '1.4.
|
|
6
|
+
version = '1.4.1',
|
|
7
7
|
description = "Исполнитель кода Русского Питона",
|
|
8
8
|
packages = [ 'rupython', 'rupython.Модули' ],
|
|
9
9
|
long_description = (Путь(__file__).parent / 'README.md').read_text('UTF-8'),
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|