rupython 1.4.0__tar.gz → 1.4.2__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.2}/PKG-INFO +10 -10
  2. {rupython-1.4.0 → rupython-1.4.2}/README.md +9 -9
  3. {rupython-1.4.0 → rupython-1.4.2}/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 +48 -47
  4. {rupython-1.4.0 → rupython-1.4.2}/rupython.egg-info/PKG-INFO +10 -10
  5. {rupython-1.4.0 → rupython-1.4.2}/setup.py +1 -1
  6. {rupython-1.4.0 → rupython-1.4.2}/LICENSE +0 -0
  7. {rupython-1.4.0 → rupython-1.4.2}/rupython/__main__.py +0 -0
  8. {rupython-1.4.0 → rupython-1.4.2}/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.2}/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.2}/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.2}/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.2}/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.2}/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.2}/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.2}/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.2}/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.2}/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.2}/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.2}/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.2}/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.2}/rupython.egg-info/SOURCES.txt +0 -0
  22. {rupython-1.4.0 → rupython-1.4.2}/rupython.egg-info/dependency_links.txt +0 -0
  23. {rupython-1.4.0 → rupython-1.4.2}/rupython.egg-info/top_level.txt +0 -0
  24. {rupython-1.4.0 → rupython-1.4.2}/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.2
4
4
  Summary: Исполнитель кода Русского Питона
5
5
  Home-page: https://gitflic.ru/project/russky/rupython
6
6
  Author: Сообщество русских программистов
@@ -433,7 +433,7 @@ x = 0
433
433
  Выводит значения на экран или в файл, с настройкой форматирования.
434
434
 
435
435
  ###### `[@]Свойство(ф_получения = Пусто, ф_установки = Пусто, ф_удаления = Пусто, документация = Пусто)`
436
- Создаёт объект свойства. Может использоваться как обёртка (декоратор).
436
+ Создаёт объект свойства, превращает методы класса в управляемые атрибуты. Может использоваться как обёртка (декоратор).
437
437
 
438
438
  ###### `Ряд(длина | нач, кон, шаг = 1)`
439
439
  Создаёт диапазон целых чисел.
@@ -480,20 +480,20 @@ x = 0
480
480
  ###### `Поля([объект])`
481
481
  Возвращает словарь атрибутов объекта.
482
482
 
483
- ###### `Упаковать(*перебираемые, проверить_длины = Нет)`
484
- Объединяет элементы из нескольких источников.
483
+ ###### `Совмещение(*перебираемые, проверить_длины = Нет)`
484
+ Возвращает возвращает перебиратель кортежей, объединяющих элементы из нескольких источников.
485
485
 
486
486
  ###### `Свёртка(функция, перебираемое, нач_знач = Пусто)`
487
487
  Пошагово сворачивает элементы, применяя функцию: ((a, b) -> c).
488
488
 
489
- ###### `@Метод_получения`
490
- Обёртка получения значения для свойства.
489
+ ###### `@.Получение`
490
+ Метод объекта свойства, назначающий функцию для получения атрибута.
491
491
 
492
- ###### `@Метод_установки`
493
- Обёртка установки значения для свойства.
492
+ ###### `@.Установка`
493
+ Метод объекта свойства, назначающий функцию для установки атрибута.
494
494
 
495
- ###### `@Метод_удаления`
496
- Обёртка удаления значения для свойства.
495
+ ###### `@.Удаление`
496
+ Метод объекта свойства, назначающий функцию для удаления атрибута.
497
497
 
498
498
  ###### `__Подключить__(название, общие_сущности = Пусто, местные_сущности = Пусто, по_списку = 0, уровень = 0)`
499
499
  Внутренняя функция импорта.
@@ -417,7 +417,7 @@ x = 0
417
417
  Выводит значения на экран или в файл, с настройкой форматирования.
418
418
 
419
419
  ###### `[@]Свойство(ф_получения = Пусто, ф_установки = Пусто, ф_удаления = Пусто, документация = Пусто)`
420
- Создаёт объект свойства. Может использоваться как обёртка (декоратор).
420
+ Создаёт объект свойства, превращает методы класса в управляемые атрибуты. Может использоваться как обёртка (декоратор).
421
421
 
422
422
  ###### `Ряд(длина | нач, кон, шаг = 1)`
423
423
  Создаёт диапазон целых чисел.
@@ -464,20 +464,20 @@ x = 0
464
464
  ###### `Поля([объект])`
465
465
  Возвращает словарь атрибутов объекта.
466
466
 
467
- ###### `Упаковать(*перебираемые, проверить_длины = Нет)`
468
- Объединяет элементы из нескольких источников.
467
+ ###### `Совмещение(*перебираемые, проверить_длины = Нет)`
468
+ Возвращает возвращает перебиратель кортежей, объединяющих элементы из нескольких источников.
469
469
 
470
470
  ###### `Свёртка(функция, перебираемое, нач_знач = Пусто)`
471
471
  Пошагово сворачивает элементы, применяя функцию: ((a, b) -> c).
472
472
 
473
- ###### `@Метод_получения`
474
- Обёртка получения значения для свойства.
473
+ ###### `@.Получение`
474
+ Метод объекта свойства, назначающий функцию для получения атрибута.
475
475
 
476
- ###### `@Метод_установки`
477
- Обёртка установки значения для свойства.
476
+ ###### `@.Установка`
477
+ Метод объекта свойства, назначающий функцию для установки атрибута.
478
478
 
479
- ###### `@Метод_удаления`
480
- Обёртка удаления значения для свойства.
479
+ ###### `@.Удаление`
480
+ Метод объекта свойства, назначающий функцию для удаления атрибута.
481
481
 
482
482
  ###### `__Подключить__(название, общие_сущности = Пусто, местные_сущности = Пусто, по_списку = 0, уровень = 0)`
483
483
  Внутренняя функция импорта.
@@ -33,7 +33,7 @@ from io import StringIO as Текстовый_ВВ
33
33
  'Если': 'if',
34
34
  'АЕсли': 'elif',
35
35
  'Иначе': 'else',
36
- 'если': 'if',
36
+ 'если': 'if', # при
37
37
  'иначе': 'else',
38
38
  'Для': 'for',
39
39
  'из': 'in',
@@ -82,9 +82,9 @@ from io import StringIO as Текстовый_ВВ
82
82
  'Макс': ( 'max', { 'ф_сравнения': 'key', 'если_пусто': 'default' }, False ),
83
83
  'Местные_сущности': ( 'locals', None, False ),
84
84
  'Метод_класса': ( 'classmethod', None, False ),
85
- 'Метод_получения': ( 'getter', None, False ),
86
- 'Метод_установки': ( 'setter', None, False ),
87
- 'Метод_удаления': ( 'deleter', None, False ),
85
+ 'Получение': ( 'getter', None, False ),
86
+ 'Установка': ( 'setter', None, False ),
87
+ 'Удаление': ( 'deleter', None, False ),
88
88
  'Мин': ( 'min', { 'ф_сравнения': 'key', 'если_пусто': 'default' }, False ),
89
89
  'Множ': ( 'set', None, True ),
90
90
  'Надкласс': ( 'super', None, True ),
@@ -98,7 +98,7 @@ from io import StringIO as Текстовый_ВВ
98
98
  'Отображение': ( 'map', None, False ),
99
99
  'Память': ( 'memoryview', { 'объект': 'object' }, True ),
100
100
  'Перебиратель': ( 'iter', None, False ),
101
- 'Перечень': ( 'enumerate', { 'перебираемое': 'iterable', 'начало': 'start' }, False ), # Перечислить
101
+ 'Перечень': ( 'enumerate', { 'перебираемое': 'iterable', 'начало': 'start' }, False ), # Перечислить, По_счёту
102
102
  'Подкласс': ( 'issubclass', None, False ),
103
103
  'Получить_поле': ( 'getattr', None, False ),
104
104
  'Поля': ( 'vars', None, False ),
@@ -119,7 +119,7 @@ from io import StringIO as Текстовый_ВВ
119
119
  'Сумма': ( 'sum', { 'начало': 'start' }, False ),
120
120
  'Тип': ( 'type', None, True ), # Вид
121
121
  'Удалить_поле': ( 'delattr', None, False ),
122
- 'Упаковать': ( 'zip', { 'проверить_длины': 'strict' }, False ),
122
+ 'Совмещение': ( 'zip', { 'проверить_длины': 'strict' }, False ), # Упаковать, Сопряжение, Совместно, Связка
123
123
  'По_порядку': ( 'sorted', { 'ф_сравнения': 'key', 'наоборот': 'reverse' }, False ), # Упорядочить, Упорядоченное
124
124
  'Установить_поле': ( 'setattr', None, False ),
125
125
  'Выборка': ( 'filter', None, False ), # Фильтр, По_условию, Только, Отбор
@@ -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.2
4
4
  Summary: Исполнитель кода Русского Питона
5
5
  Home-page: https://gitflic.ru/project/russky/rupython
6
6
  Author: Сообщество русских программистов
@@ -433,7 +433,7 @@ x = 0
433
433
  Выводит значения на экран или в файл, с настройкой форматирования.
434
434
 
435
435
  ###### `[@]Свойство(ф_получения = Пусто, ф_установки = Пусто, ф_удаления = Пусто, документация = Пусто)`
436
- Создаёт объект свойства. Может использоваться как обёртка (декоратор).
436
+ Создаёт объект свойства, превращает методы класса в управляемые атрибуты. Может использоваться как обёртка (декоратор).
437
437
 
438
438
  ###### `Ряд(длина | нач, кон, шаг = 1)`
439
439
  Создаёт диапазон целых чисел.
@@ -480,20 +480,20 @@ x = 0
480
480
  ###### `Поля([объект])`
481
481
  Возвращает словарь атрибутов объекта.
482
482
 
483
- ###### `Упаковать(*перебираемые, проверить_длины = Нет)`
484
- Объединяет элементы из нескольких источников.
483
+ ###### `Совмещение(*перебираемые, проверить_длины = Нет)`
484
+ Возвращает возвращает перебиратель кортежей, объединяющих элементы из нескольких источников.
485
485
 
486
486
  ###### `Свёртка(функция, перебираемое, нач_знач = Пусто)`
487
487
  Пошагово сворачивает элементы, применяя функцию: ((a, b) -> c).
488
488
 
489
- ###### `@Метод_получения`
490
- Обёртка получения значения для свойства.
489
+ ###### `@.Получение`
490
+ Метод объекта свойства, назначающий функцию для получения атрибута.
491
491
 
492
- ###### `@Метод_установки`
493
- Обёртка установки значения для свойства.
492
+ ###### `@.Установка`
493
+ Метод объекта свойства, назначающий функцию для установки атрибута.
494
494
 
495
- ###### `@Метод_удаления`
496
- Обёртка удаления значения для свойства.
495
+ ###### `@.Удаление`
496
+ Метод объекта свойства, назначающий функцию для удаления атрибута.
497
497
 
498
498
  ###### `__Подключить__(название, общие_сущности = Пусто, местные_сущности = Пусто, по_списку = 0, уровень = 0)`
499
499
  Внутренняя функция импорта.
@@ -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.2',
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