rupython 1.3.2__py3-none-any.whl → 1.3.3__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.
@@ -0,0 +1,99 @@
1
+ import asyncio
2
+
3
+ Задача_отменена = asyncio.CancelledError
4
+ Время_ожидания_истекло = asyncio.TimeoutError
5
+ Недопустимое_состояние = asyncio.InvalidStateError
6
+ Чтение_неполное = asyncio.IncompleteReadError
7
+ Буфер_переполнен = asyncio.LimitOverrunError
8
+ Ошибка_протокола_потока = asyncio.StreamReaderProtocol
9
+ Очередь_пуста = asyncio.QueueEmpty
10
+ Очередь_переполнена = asyncio.QueueFull
11
+
12
+ class Процедура:
13
+ def __init__(экземпляр, функция, *аргументы, **параметры):
14
+ экземпляр.функция = функция
15
+ экземпляр.аргументы = аргументы
16
+ экземпляр.параметры = параметры
17
+ экземпляр.задача = None
18
+
19
+ def Запустить(экземпляр):
20
+ экземпляр.задача = asyncio.create_task(
21
+ экземпляр.функция(*экземпляр.аргументы, **экземпляр.параметры)
22
+ )
23
+ return экземпляр.задача
24
+
25
+ async def Ждать(экземпляр):
26
+ if экземпляр.задача is None:
27
+ экземпляр.задача = экземпляр.запустить()
28
+ return await экземпляр.задача
29
+
30
+ class Задачи:
31
+ def __init__(экземпляр):
32
+ экземпляр.список = []
33
+
34
+ def Добавить(экземпляр, процедура):
35
+ задача = процедура.Запустить()
36
+ экземпляр.список.append(задача)
37
+
38
+ async def Ждать_все(экземпляр):
39
+ return await asyncio.gather(*экземпляр.список)
40
+
41
+ class Процесс:
42
+ def __init__(экземпляр, команда):
43
+ экземпляр.команда = команда
44
+ экземпляр.процесс = None
45
+
46
+ async def Запустить(экземпляр):
47
+ экземпляр.процесс = await asyncio.create_subprocess_shell(
48
+ экземпляр.команда,
49
+ stdout = asyncio.subprocess.PIPE,
50
+ stderr = asyncio.subprocess.PIPE
51
+ )
52
+ stdout, stderr = await экземпляр.процесс.communicate()
53
+ return {
54
+ "код": экземпляр.процесс.returncode,
55
+ "вывод": stdout.decode(),
56
+ "ошибка": stderr.decode()
57
+ }
58
+
59
+ class Поток:
60
+ def __init__(экземпляр, поток_чтения):
61
+ экземпляр.поток = поток_чтения
62
+
63
+ async def читать_всё(экземпляр):
64
+ строки = []
65
+ while True:
66
+ строка = await экземпляр.поток.readline()
67
+ if not строка:
68
+ break
69
+ строки.append(строка.decode())
70
+ return строки
71
+
72
+ class Блокование:
73
+ def __init__(экземпляр):
74
+ экземпляр.блокировка = asyncio.Lock()
75
+
76
+ async def Выполнить(экземпляр, функция, *аргументы, **параметры):
77
+ async with экземпляр.блокировка:
78
+ return await функция(*аргументы, **параметры)
79
+
80
+ async def Спать(секунд):
81
+ await asyncio.sleep(секунд)
82
+
83
+ def Запустить(процедура):
84
+ return asyncio.run(процедура)
85
+
86
+ def Создать_задачу(процедура):
87
+ return asyncio.create_task(процедура)
88
+
89
+ def Собрать(*процедуры):
90
+ return asyncio.gather(*процедуры)
91
+
92
+ def Ожидать(объект, таймаут = None):
93
+ return asyncio.wait_for(объект, timeout = таймаут)
94
+
95
+ def Все_задачи():
96
+ return asyncio.all_tasks()
97
+
98
+ def Текущая_задача():
99
+ return asyncio.current_task()
@@ -16,6 +16,7 @@ from io import StringIO as Текстовый_ВВ
16
16
  'не': 'not',
17
17
  'это': 'is',
18
18
  'Функция': 'def',
19
+ 'функция': 'def',
19
20
  'Класс': 'class',
20
21
  'Общее': 'global', # Глобальное
21
22
  'НеМестное': 'nonlocal', # Нелокальное
@@ -521,6 +522,10 @@ def Проверить_соответствие_слов(слова, путь_к
521
522
  if поз != len(слова) - 1 and слова[поз + 1][0] not in (4, 61, 65):
522
523
  Вывести_исключение('Возврат'); return False
523
524
 
525
+ for поз in [i for i, x in enumerate(слова) if x[1] == 'функция']:
526
+ if поз == 0 or слова[поз - 1][1] != 'Асинхр':
527
+ Вывести_исключение('функция'); return False
528
+
524
529
  return True
525
530
 
526
531
  Циклы_со_счётчиком = []
@@ -740,7 +745,11 @@ def Посчитать_физические_строки(путь_к_файлу,
740
745
  r"No module named '(.+)'": r'Модуль под названием "\1" не найден.',
741
746
  r"unindent does not match any outer indentation level": r'Отступ не соответствует никакому окружающему уровню.',
742
747
  r"int too big to convert": r'Число слишком большое для преобразования.',
743
- r"unexpected indent": r'Неожиданный отступ.'
748
+ r"unexpected indent": r'Неожиданный отступ.',
749
+ r"cannot import name '(.+)' from '(.+)' (unknown location)": r'Невозможно импортовать название "\1" из "\2" (неизвестное расположение).',
750
+ r"(.+) missing (.+) required positional arguments: (.+), and (.+)": r'Для функции "\1" требуется позиционных аргументов: \2 (\3 и \4).',
751
+ r"module '(.+)' has no attribute '(.+)'": r'Модуль "\1" не имеет атрибута "\1".',
752
+ r"string argument without an encoding": r'Строковый аргумент без кодования.'
744
753
  }
745
754
 
746
755
  def Очистить_файлы():
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: rupython
3
- Version: 1.3.2
3
+ Version: 1.3.3
4
4
  Summary: Исполнитель кода Русского Питона
5
5
  Author: Сообщество русских программистов
6
6
  License: ОДРН
@@ -1,8 +1,9 @@
1
1
  rupython/__main__.py,sha256=sb4hTmi5_MtnNDEpm43DAgklVPWT4ddm4yQtattUdeE,1322
2
2
  rupython/__Заголовочный_код__.py,sha256=yTxMJ93pxJeg_h-BnrTMoAqSB_a0tliYX6gkXtTyWx8,13594
3
3
  rupython/__Общие_функции__.py,sha256=MH9QLcXqeFmpOS5_N8P5wA5eCYutlHRc7YUatn3CUIk,1255
4
- rupython/Преобразователь.py,sha256=dxVD7cqs_zQAm6RMIv8hM5ImouaY7T7lCsnFSbEhUBM,50995
4
+ rupython/Преобразователь.py,sha256=04puHUj0KkH9GpLrA3KCv0tNq6h4ZPJQ0PR-LJgZ3Po,51866
5
5
  rupython/Модули/Асинхр.py,sha256=sPQUgbS_kXj-Gyn2YCjXNCUqAy8aUW2-P6gO5e7f6Cc,9925
6
+ rupython/Модули/Асинхронность.py,sha256=-iBmQmykdePgP2pW8UQtLQjRND3mVnafdBYccDqc0WQ,3786
6
7
  rupython/Модули/БД.py,sha256=GQSKiv3fRF9Bsw4S7jXw4KR1Ibqvk8TwQbEe1JjvsGA,38392
7
8
  rupython/Модули/ДатаВремя.py,sha256=Ec9YyY1jb-R9uyXrrDNfaTqBQVv98_GPn29OY8dUkj8,27523
8
9
  rupython/Модули/Запросы.py,sha256=BPFWyPDLA6Qjmzb5KwOhuGZ5qjeAE0fudz5aJ8lRa6o,7562
@@ -14,8 +15,8 @@ rupython/Модули/Потоки.py,sha256=am6hWxcrCx4Vx_FFPMIIhSl_ShWSV5vjW5d
14
15
  rupython/Модули/РегВыр.py,sha256=OWgYtgBDtHsEHUOAsGx7K0UGq92sumSqEyf-sVpICjw,6709
15
16
  rupython/Модули/Случ.py,sha256=foIuQo2QZ5z0iyxp9fn4NaunSx96vYzC2pRjwaT2FD8,2723
16
17
  rupython/Модули/Файлы.py,sha256=AekdYf2jmPhRW_9BngbQDzgTfsMr4zPpKzuwp6fRfzQ,6895
17
- rupython-1.3.2.dist-info/LICENSE,sha256=qqVMvbdzR5e4XIV6qwYVgI5Ovki8wR0qZaKB2Oj9DXw,25656
18
- rupython-1.3.2.dist-info/METADATA,sha256=UsXvGM99Hn_il6wjJVCi4DN-qTyKcC5pqlvh64s3CO4,30456
19
- rupython-1.3.2.dist-info/WHEEL,sha256=P9jw-gEje8ByB7_hXoICnHtVCrEwMQh-630tKvQWehc,91
20
- rupython-1.3.2.dist-info/top_level.txt,sha256=GtXaS8JTsBm5hpQxxtQlrxK6rExvSAK_Cp44FrY4210,9
21
- rupython-1.3.2.dist-info/RECORD,,
18
+ rupython-1.3.3.dist-info/LICENSE,sha256=qqVMvbdzR5e4XIV6qwYVgI5Ovki8wR0qZaKB2Oj9DXw,25656
19
+ rupython-1.3.3.dist-info/METADATA,sha256=j9TdftdbkoujZD4jVqh23uwUjdIT3SMAYId9Ve41O_s,30456
20
+ rupython-1.3.3.dist-info/WHEEL,sha256=P9jw-gEje8ByB7_hXoICnHtVCrEwMQh-630tKvQWehc,91
21
+ rupython-1.3.3.dist-info/top_level.txt,sha256=GtXaS8JTsBm5hpQxxtQlrxK6rExvSAK_Cp44FrY4210,9
22
+ rupython-1.3.3.dist-info/RECORD,,