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.
Files changed (24) hide show
  1. {rupython-1.4.0 → rupython-1.4.1}/PKG-INFO +1 -1
  2. {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
  3. {rupython-1.4.0 → rupython-1.4.1}/rupython.egg-info/PKG-INFO +1 -1
  4. {rupython-1.4.0 → rupython-1.4.1}/setup.py +1 -1
  5. {rupython-1.4.0 → rupython-1.4.1}/LICENSE +0 -0
  6. {rupython-1.4.0 → rupython-1.4.1}/README.md +0 -0
  7. {rupython-1.4.0 → rupython-1.4.1}/rupython/__main__.py +0 -0
  8. {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
  9. {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
  10. {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
  11. {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
  12. {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
  13. {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
  14. {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
  15. {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
  16. {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
  17. {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
  18. {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
  19. {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
  20. {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
  21. {rupython-1.4.0 → rupython-1.4.1}/rupython.egg-info/SOURCES.txt +0 -0
  22. {rupython-1.4.0 → rupython-1.4.1}/rupython.egg-info/dependency_links.txt +0 -0
  23. {rupython-1.4.0 → rupython-1.4.1}/rupython.egg-info/top_level.txt +0 -0
  24. {rupython-1.4.0 → rupython-1.4.1}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: rupython
3
- Version: 1.4.0
3
+ Version: 1.4.1
4
4
  Summary: Исполнитель кода Русского Питона
5
5
  Home-page: https://gitflic.ru/project/russky/rupython
6
6
  Author: Сообщество русских программистов
@@ -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
- номер = 0
371
- while номер < len(слова):
372
- if слова[номер][0] == 3 and слова[номер][1].startswith(("f'", 'f"')):
373
- отступов = слова[номер][2]
374
- исходная_строка = слова[номер][1]
375
- префикс = 'f' if исходная_строка.startswith('f') else исходная_строка[0]
376
- кавычка = исходная_строка[1]
377
- содержимое = исходная_строка[2:-1] if исходная_строка.endswith(кавычка) else исходная_строка[2:]
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
- новые_токены.append((3, '{{', отступов))
381
+ if поз + 1 < len(содержимое) and содержимое[поз:поз+2] in ('{{', '}}'):
382
+ новые_части.append(содержимое[поз:поз+2])
383
383
  поз += 2
384
- elif поз + 1 < len(содержимое) and содержимое[поз:поз+2] == '}}':
385
- новые_токены.append((3, '}}', отступов))
386
- поз += 2
387
- elif содержимое[поз] == '{':
388
- уровень_скобок = 1
389
- нач_поз = поз + 1
384
+ continue
385
+ if содержимое[поз] == '{':
386
+ уровень = 1
387
+ нач_выр = поз + 1
390
388
  поз += 1
391
- while поз < len(содержимое) and уровень_скобок > 0:
389
+ формат_нач = -1
390
+ while поз < len(содержимое) and уровень > 0:
392
391
  if содержимое[поз] == '{':
393
- уровень_скобок += 1
392
+ уровень += 1
394
393
  elif содержимое[поз] == '}':
395
- уровень_скобок -= 1
394
+ уровень -= 1
395
+ elif содержимое[поз] == ':' and уровень == 1 and формат_нач == -1:
396
+ формат_нач = поз
396
397
  поз += 1
397
- if уровень_скобок != 0:
398
- искл = SyntaxError('Незакрытое выражение в f-строке')
399
- Вывести_текст_исключения(искл, 'при разборе f-строки', путь_к_файлу, True, False)
400
- выражение = содержимое[нач_поз:поз-1]
398
+ if уровень != 0:
399
+ raise SyntaxError('Незакрытое выражение в f-строке.')
400
+ выражение = содержимое[нач_выр : формат_нач if формат_нач != -1 else поз-1]
401
+ формат = содержимое[формат_нач : поз-1] if формат_нач != -1 else ''
401
402
  try:
402
- токены_выражения = list(Разборщик_слов.generate_tokens(Текстовый_ВВ(выражение).readline))
403
- токены_выражения = [(ток.type, ток.string, отступов) for ток in токены_выражения if ток.type != Разборщик_слов.ENDMARKER]
404
- Выполнить_основные_замены(токены_выражения, Служебные_слова)
405
- Выполнить_основные_замены(токены_выражения, Специальные_названия)
406
- Выполнить_основные_замены(токены_выражения, Исключения)
407
- Заменить_встроенные_функции(токены_выражения, Встроенные_функции)
408
- выражение_текст = Разборщик_слов.untokenize((ток[0], ток[1]) for ток in токены_выражения if ток[0] not in (4, 5, 6)).strip()
409
- новые_токены.append((3, '{' + выражение_текст + '}', отступов))
410
- except Exception as ошибка:
411
- Вывести_текст_исключения(ошибка, 'при разборе выражения в f-строке', путь_к_файлу, True, False)
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
- if нач_поз != поз:
417
- новые_токены.append((3, содержимое[нач_поз:поз], отступов))
418
- новая_строка = f"f{кавычка}{''.join(ток[1] for ток in новые_токены)}{кавычка}"
419
- слова[номер] = (3, новая_строка, отступов)
420
- номер += 1
418
+ новые_части.append(содержимое[начало:поз])
419
+ новая_строка = f"f{кавычка}{''.join(новые_части)}{кавычка}"
420
+ слова[i] = (Разборщик_слов.STRING, новая_строка, отступы)
421
+ i += 1
421
422
 
422
423
  def Посчитать_номер_строки(слова, позиция):
423
424
  переводов = 0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: rupython
3
- Version: 1.4.0
3
+ Version: 1.4.1
4
4
  Summary: Исполнитель кода Русского Питона
5
5
  Home-page: https://gitflic.ru/project/russky/rupython
6
6
  Author: Сообщество русских программистов
@@ -3,7 +3,7 @@ from pathlib import Path as Путь
3
3
 
4
4
  Установить(
5
5
  name = 'rupython',
6
- version = '1.4.0',
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