rupython 1.0.6__tar.gz → 1.0.8__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.0.6 → rupython-1.0.8}/PKG-INFO +96 -3
- {rupython-1.0.6 → rupython-1.0.8}/README.md +95 -2
- {rupython-1.0.6 → rupython-1.0.8}/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 +31 -8
- rupython-1.0.8/rupython//320/234/320/276/320/264/321/203/320/273/320/270//320/241/320/273/321/203/321/207.py +46 -0
- {rupython-1.0.6 → rupython-1.0.8}/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 +74 -63
- {rupython-1.0.6 → rupython-1.0.8}/rupython.egg-info/PKG-INFO +96 -3
- {rupython-1.0.6 → rupython-1.0.8}/rupython.egg-info/SOURCES.txt +2 -1
- {rupython-1.0.6 → rupython-1.0.8}/setup.py +1 -1
- {rupython-1.0.6 → rupython-1.0.8}/LICENSE +0 -0
- {rupython-1.0.6 → rupython-1.0.8}/rupython/__main__.py +0 -0
- {rupython-1.0.6 → rupython-1.0.8}/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.0.6 → rupython-1.0.8}/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.0.6 → rupython-1.0.8}/rupython.egg-info/dependency_links.txt +0 -0
- {rupython-1.0.6 → rupython-1.0.8}/rupython.egg-info/top_level.txt +0 -0
- {rupython-1.0.6 → rupython-1.0.8}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: rupython
|
3
|
-
Version: 1.0.
|
3
|
+
Version: 1.0.8
|
4
4
|
Summary: Исполнитель кода Русского Питона
|
5
5
|
Description-Content-Type: text/markdown
|
6
6
|
License-File: LICENSE
|
@@ -23,7 +23,7 @@ ftype "Код на Русском Питоне"=py -m rupython "%%1" %%*
|
|
23
23
|
|
24
24
|
Приложения на Русском Питоне могут использовать все возможности оригинального Python, включая всё богатство подключаемых пакетов и библиотек. Код может быть написан на обоих вариантах языка.
|
25
25
|
|
26
|
-
###
|
26
|
+
### Примеры кода
|
27
27
|
|
28
28
|
```
|
29
29
|
Функция НОД(*числа):
|
@@ -38,13 +38,27 @@ ftype "Код на Русском Питоне"=py -m rupython "%%1" %%*
|
|
38
38
|
Вернуть n
|
39
39
|
```
|
40
40
|
|
41
|
+
```
|
42
|
+
Функция Дата_Пасхи(год, нов_ст = Пусто):
|
43
|
+
д = (год % 19 * 19 + 15) % 30
|
44
|
+
д += (год % 4 * 2 + год % 7 * 4 + 6 * д + 6) % 7
|
45
|
+
нов_ст = Да если нов_ст это Пусто и год >= 1918 иначе нов_ст
|
46
|
+
Если не нов_ст:
|
47
|
+
Если д > 9: Вернуть Строка(д - 9) + ' апреля'
|
48
|
+
Иначе: Вернуть Строка(22 + д) + ' марта'
|
49
|
+
Иначе:
|
50
|
+
п = год // 100 - год // 400 - 2
|
51
|
+
Если д > 39 - п: Вернуть Строка(д - 39 + п) + ' мая'
|
52
|
+
Иначе: Вернуть Строка(д - 9 + п) + ' апреля'
|
53
|
+
```
|
54
|
+
|
41
55
|
### Обзор особенностей языка
|
42
56
|
|
43
57
|
##### Основные встроенные типы данных:
|
44
58
|
|
45
59
|
* Числовые: ```Цел```, ```Вещ```, ```Компл```.
|
46
60
|
* Логический: ```Логич``` – значения ```Да``` и ```Нет```.
|
47
|
-
* Неопределённое (пустое
|
61
|
+
* Неопределённое значение: ```Пусто``` (пустое значение, или ничего).
|
48
62
|
* Строковый (текстовый): ```Строка```.
|
49
63
|
* Последовательности: ```Список```, ```Кортеж```, ```Ряд``` (диапазон).
|
50
64
|
* Ассоциативный массив: ```Словарь```.
|
@@ -228,3 +242,82 @@ x = 0
|
|
228
242
|
Проверить y != 0, 'Деление на 0.'
|
229
243
|
Вернуть x / y
|
230
244
|
```
|
245
|
+
|
246
|
+
### Встроенные функции и обёртки
|
247
|
+
```
|
248
|
+
АбсЗнач(x)
|
249
|
+
АсПеребиратель(асинхр_перебираемое)
|
250
|
+
Все(перебираемое)
|
251
|
+
Любое(перебираемое)
|
252
|
+
АсСледущий(асинхр_перебиратель[, по_умолчанию])
|
253
|
+
В7битовСимв(объект)
|
254
|
+
Двоич(x)
|
255
|
+
Логич(объект = Нет)
|
256
|
+
Останов(*ПА, **ИА)
|
257
|
+
БайтМассив([источник = ''[, кодование[, при_ошибках]]])
|
258
|
+
Байты([источник = ''[, кодование[, при_ошибках]]])
|
259
|
+
Вызываемое(объект)
|
260
|
+
Код_в_знак(i)
|
261
|
+
@Метод_класса
|
262
|
+
Собрать_код(исходник, название_файла, режим, флаги = 0, не_наследовать = Нет, оптимизация = -1)
|
263
|
+
Компл(число = 0 | строка | действ_часть = 0, мнимая_часть = 0)
|
264
|
+
Удалить_поле(объект, название)
|
265
|
+
Словарь([отображение | перебираемое], **ИА)
|
266
|
+
Содержимое([объект])
|
267
|
+
ДелОст(a, b)
|
268
|
+
Перечислить(перебираемое, начало = 0)
|
269
|
+
ВычВыр(исходник, общие_сущности = Пусто, местные_сущности = Пусто)
|
270
|
+
ВыпКод(исходник, общие_сущности = Пусто, местные_сущности = Пусто, замыкание = Пусто)
|
271
|
+
Фильтр(функция, перебираемое)
|
272
|
+
Вещ(число = 0.0 | строка)
|
273
|
+
Формат(значение, описание = '')
|
274
|
+
НеизмМнож(перебираемое = Множ())
|
275
|
+
Получить_поле(объект, название[, по_умолчанию])
|
276
|
+
Общие_сущности()
|
277
|
+
Имеет_поле(объект, название)
|
278
|
+
Хэш(объект)
|
279
|
+
Справка([запрос])
|
280
|
+
Шестн(x)
|
281
|
+
Идент(объект)
|
282
|
+
Принять(сообщение)
|
283
|
+
Цел(число = 0 | строка, основание = 10)
|
284
|
+
Экземпляр(объект, класс)
|
285
|
+
Подкласс(класс, надкласс)
|
286
|
+
Перебиратель(объект[, исключение])
|
287
|
+
Длина(s) | Размер(s)
|
288
|
+
Список([перебираемое])
|
289
|
+
Местные_сущности()
|
290
|
+
Отображение(функция, перебираемое, *перебираемые)
|
291
|
+
Макс((перебираемое[, если_пусто] | аргумент_1, аргумент_2, * аргументы), ф_сравнения = Пусто)
|
292
|
+
Память(объект)
|
293
|
+
Мин((перебираемое[, если_пусто] | аргумент_1, аргумент_2, * аргументы), ф_сравнения = Пусто)
|
294
|
+
Следующий(перебиратель[, по_умолчанию])
|
295
|
+
Объект()
|
296
|
+
Восьм(x)
|
297
|
+
Открыть(название, режим = 'r', буферизация = -1, кодование = Пусто, при_ошибках = Пусто, новая_строка = Пусто, закрыть_описатель = Да, открыватель = Пусто)
|
298
|
+
Знак_в_код(c)
|
299
|
+
Степень(основание, показатель, модуль = Пусто)
|
300
|
+
Вывести(*объекты, разделитель = ' ', в_конце = '\n', файл = Пусто, немедленно = Нет)
|
301
|
+
[@]Свойство(ф_получения = Пусто, ф_установки = Пусто, ф_удаления = Пусто, документация = Пусто)
|
302
|
+
Ряд(длина | нач, кон, шаг = 1)
|
303
|
+
Представление(объект)
|
304
|
+
Обратить(последовательность)
|
305
|
+
Округлить(число, разрядов = Пусто)
|
306
|
+
Множ([перебираемое])
|
307
|
+
Установить_поле(объект, название, значение)
|
308
|
+
Срез(длина | нач, кон, шаг = 1)
|
309
|
+
Упорядочить(перебираемое, ф_сравнения, наоборот)
|
310
|
+
[@]Статический_метод(функция)
|
311
|
+
Строка(объект[, кодование = 'utf-8', при_ошибках = 'strict')
|
312
|
+
Сумма(перебираемое[, начало = 0])
|
313
|
+
Надкласс([тип, порядок_поиска = Пусто])
|
314
|
+
Кортеж([перебираемое])
|
315
|
+
Тип(объект | название, надклассы, поля, **ключевые_слова)
|
316
|
+
Поля([объект])
|
317
|
+
Упаковать(*перебираемые, проверить_длины = Нет)
|
318
|
+
Свёртка(функция, перебираемое, нач_знач = Пусто)
|
319
|
+
@Метод_получения
|
320
|
+
@Метод_установки
|
321
|
+
@Метод_удаления
|
322
|
+
__Подключить__(название, общие_сущности = Пусто, местные_сущности = Пусто, по_списку = 0, уровень = 0)
|
323
|
+
```
|
@@ -16,7 +16,7 @@ ftype "Код на Русском Питоне"=py -m rupython "%%1" %%*
|
|
16
16
|
|
17
17
|
Приложения на Русском Питоне могут использовать все возможности оригинального Python, включая всё богатство подключаемых пакетов и библиотек. Код может быть написан на обоих вариантах языка.
|
18
18
|
|
19
|
-
###
|
19
|
+
### Примеры кода
|
20
20
|
|
21
21
|
```
|
22
22
|
Функция НОД(*числа):
|
@@ -31,13 +31,27 @@ ftype "Код на Русском Питоне"=py -m rupython "%%1" %%*
|
|
31
31
|
Вернуть n
|
32
32
|
```
|
33
33
|
|
34
|
+
```
|
35
|
+
Функция Дата_Пасхи(год, нов_ст = Пусто):
|
36
|
+
д = (год % 19 * 19 + 15) % 30
|
37
|
+
д += (год % 4 * 2 + год % 7 * 4 + 6 * д + 6) % 7
|
38
|
+
нов_ст = Да если нов_ст это Пусто и год >= 1918 иначе нов_ст
|
39
|
+
Если не нов_ст:
|
40
|
+
Если д > 9: Вернуть Строка(д - 9) + ' апреля'
|
41
|
+
Иначе: Вернуть Строка(22 + д) + ' марта'
|
42
|
+
Иначе:
|
43
|
+
п = год // 100 - год // 400 - 2
|
44
|
+
Если д > 39 - п: Вернуть Строка(д - 39 + п) + ' мая'
|
45
|
+
Иначе: Вернуть Строка(д - 9 + п) + ' апреля'
|
46
|
+
```
|
47
|
+
|
34
48
|
### Обзор особенностей языка
|
35
49
|
|
36
50
|
##### Основные встроенные типы данных:
|
37
51
|
|
38
52
|
* Числовые: ```Цел```, ```Вещ```, ```Компл```.
|
39
53
|
* Логический: ```Логич``` – значения ```Да``` и ```Нет```.
|
40
|
-
* Неопределённое (пустое
|
54
|
+
* Неопределённое значение: ```Пусто``` (пустое значение, или ничего).
|
41
55
|
* Строковый (текстовый): ```Строка```.
|
42
56
|
* Последовательности: ```Список```, ```Кортеж```, ```Ряд``` (диапазон).
|
43
57
|
* Ассоциативный массив: ```Словарь```.
|
@@ -221,3 +235,82 @@ x = 0
|
|
221
235
|
Проверить y != 0, 'Деление на 0.'
|
222
236
|
Вернуть x / y
|
223
237
|
```
|
238
|
+
|
239
|
+
### Встроенные функции и обёртки
|
240
|
+
```
|
241
|
+
АбсЗнач(x)
|
242
|
+
АсПеребиратель(асинхр_перебираемое)
|
243
|
+
Все(перебираемое)
|
244
|
+
Любое(перебираемое)
|
245
|
+
АсСледущий(асинхр_перебиратель[, по_умолчанию])
|
246
|
+
В7битовСимв(объект)
|
247
|
+
Двоич(x)
|
248
|
+
Логич(объект = Нет)
|
249
|
+
Останов(*ПА, **ИА)
|
250
|
+
БайтМассив([источник = ''[, кодование[, при_ошибках]]])
|
251
|
+
Байты([источник = ''[, кодование[, при_ошибках]]])
|
252
|
+
Вызываемое(объект)
|
253
|
+
Код_в_знак(i)
|
254
|
+
@Метод_класса
|
255
|
+
Собрать_код(исходник, название_файла, режим, флаги = 0, не_наследовать = Нет, оптимизация = -1)
|
256
|
+
Компл(число = 0 | строка | действ_часть = 0, мнимая_часть = 0)
|
257
|
+
Удалить_поле(объект, название)
|
258
|
+
Словарь([отображение | перебираемое], **ИА)
|
259
|
+
Содержимое([объект])
|
260
|
+
ДелОст(a, b)
|
261
|
+
Перечислить(перебираемое, начало = 0)
|
262
|
+
ВычВыр(исходник, общие_сущности = Пусто, местные_сущности = Пусто)
|
263
|
+
ВыпКод(исходник, общие_сущности = Пусто, местные_сущности = Пусто, замыкание = Пусто)
|
264
|
+
Фильтр(функция, перебираемое)
|
265
|
+
Вещ(число = 0.0 | строка)
|
266
|
+
Формат(значение, описание = '')
|
267
|
+
НеизмМнож(перебираемое = Множ())
|
268
|
+
Получить_поле(объект, название[, по_умолчанию])
|
269
|
+
Общие_сущности()
|
270
|
+
Имеет_поле(объект, название)
|
271
|
+
Хэш(объект)
|
272
|
+
Справка([запрос])
|
273
|
+
Шестн(x)
|
274
|
+
Идент(объект)
|
275
|
+
Принять(сообщение)
|
276
|
+
Цел(число = 0 | строка, основание = 10)
|
277
|
+
Экземпляр(объект, класс)
|
278
|
+
Подкласс(класс, надкласс)
|
279
|
+
Перебиратель(объект[, исключение])
|
280
|
+
Длина(s) | Размер(s)
|
281
|
+
Список([перебираемое])
|
282
|
+
Местные_сущности()
|
283
|
+
Отображение(функция, перебираемое, *перебираемые)
|
284
|
+
Макс((перебираемое[, если_пусто] | аргумент_1, аргумент_2, * аргументы), ф_сравнения = Пусто)
|
285
|
+
Память(объект)
|
286
|
+
Мин((перебираемое[, если_пусто] | аргумент_1, аргумент_2, * аргументы), ф_сравнения = Пусто)
|
287
|
+
Следующий(перебиратель[, по_умолчанию])
|
288
|
+
Объект()
|
289
|
+
Восьм(x)
|
290
|
+
Открыть(название, режим = 'r', буферизация = -1, кодование = Пусто, при_ошибках = Пусто, новая_строка = Пусто, закрыть_описатель = Да, открыватель = Пусто)
|
291
|
+
Знак_в_код(c)
|
292
|
+
Степень(основание, показатель, модуль = Пусто)
|
293
|
+
Вывести(*объекты, разделитель = ' ', в_конце = '\n', файл = Пусто, немедленно = Нет)
|
294
|
+
[@]Свойство(ф_получения = Пусто, ф_установки = Пусто, ф_удаления = Пусто, документация = Пусто)
|
295
|
+
Ряд(длина | нач, кон, шаг = 1)
|
296
|
+
Представление(объект)
|
297
|
+
Обратить(последовательность)
|
298
|
+
Округлить(число, разрядов = Пусто)
|
299
|
+
Множ([перебираемое])
|
300
|
+
Установить_поле(объект, название, значение)
|
301
|
+
Срез(длина | нач, кон, шаг = 1)
|
302
|
+
Упорядочить(перебираемое, ф_сравнения, наоборот)
|
303
|
+
[@]Статический_метод(функция)
|
304
|
+
Строка(объект[, кодование = 'utf-8', при_ошибках = 'strict')
|
305
|
+
Сумма(перебираемое[, начало = 0])
|
306
|
+
Надкласс([тип, порядок_поиска = Пусто])
|
307
|
+
Кортеж([перебираемое])
|
308
|
+
Тип(объект | название, надклассы, поля, **ключевые_слова)
|
309
|
+
Поля([объект])
|
310
|
+
Упаковать(*перебираемые, проверить_длины = Нет)
|
311
|
+
Свёртка(функция, перебираемое, нач_знач = Пусто)
|
312
|
+
@Метод_получения
|
313
|
+
@Метод_установки
|
314
|
+
@Метод_удаления
|
315
|
+
__Подключить__(название, общие_сущности = Пусто, местные_сущности = Пусто, по_списку = 0, уровень = 0)
|
316
|
+
```
|
@@ -40,7 +40,7 @@ def Добавить_поле(класс, название, значение, ф
|
|
40
40
|
Установить_поле(класс, название, Новая_функция(значение) if функция else значение)
|
41
41
|
|
42
42
|
Встроенные_поля = {
|
43
|
-
'str': {
|
43
|
+
('str', 'bytes', 'bytearray'): {
|
44
44
|
'find': 'Найти',
|
45
45
|
'rfind': 'Найти_с_конца',
|
46
46
|
'index': 'Положение',
|
@@ -72,10 +72,12 @@ def Добавить_поле(класс, название, значение, ф
|
|
72
72
|
'title': 'Начать_слова_с_заглавных',
|
73
73
|
'zfill': 'Дополнить_нулями',
|
74
74
|
'ljust': 'Дополнить_справа',
|
75
|
-
'rjust': 'Дополнить_слева'
|
75
|
+
'rjust': 'Дополнить_слева'
|
76
|
+
},
|
77
|
+
'str': {
|
76
78
|
'format': 'Формат'
|
77
79
|
},
|
78
|
-
'list': {
|
80
|
+
('list', 'bytearray'): {
|
79
81
|
'append': 'Добавить',
|
80
82
|
'clear': 'Очистить',
|
81
83
|
'copy': 'Копия',
|
@@ -85,7 +87,9 @@ def Добавить_поле(класс, название, значение, ф
|
|
85
87
|
'insert': 'Вставить',
|
86
88
|
'pop': 'Вытащить',
|
87
89
|
'remove': 'Удалить',
|
88
|
-
'reverse': 'Обратить'
|
90
|
+
'reverse': 'Обратить'
|
91
|
+
},
|
92
|
+
'list': {
|
89
93
|
'sort': ( 'Упорядочить', { 'key': 'ключ', 'reverse': 'обратно' } )
|
90
94
|
},
|
91
95
|
'dict': {
|
@@ -128,9 +132,20 @@ def Добавить_поле(класс, название, значение, ф
|
|
128
132
|
'clear': 'Очистить'
|
129
133
|
},
|
130
134
|
'int': {
|
135
|
+
'bit_length': 'Длина_в_битах',
|
136
|
+
'to_bytes': ( 'В_байты', { 'length': 'длина', 'byteorder': 'порядок', 'signed': 'со_знаком' }, { (1, 'byteorder'): { 'МлСт': 'little', 'СтМл': 'big' } } ),
|
137
|
+
'from_bytes': ( 'Из_байтов', { 'bytes': 'байты', 'byteorder': 'порядок', 'signed': 'со_знаком' }, { (1, 'byteorder'): { 'МлСт': 'little', 'СтМл': 'big' } } ),
|
131
138
|
'.numerator': 'числитель',
|
132
139
|
'.denominator': 'знаменатель'
|
133
140
|
},
|
141
|
+
'float': {
|
142
|
+
'is_integer': 'Целое',
|
143
|
+
'hex': 'В_шестн',
|
144
|
+
'fromhex': 'Из_шестн'
|
145
|
+
},
|
146
|
+
('int', 'float'): {
|
147
|
+
'as_integer_ratio': 'В_дробь'
|
148
|
+
},
|
134
149
|
('int', 'float', 'complex'): {
|
135
150
|
'.real': 'действ_часть',
|
136
151
|
'.imag': 'мнимая_часть',
|
@@ -157,7 +172,15 @@ for классы, таблица in Встроенные_поля.items():
|
|
157
172
|
замещающая_функция = 'def __' + класс + '_' + название + '__(*ПА, **ИА):\n'
|
158
173
|
for н, з in замена[1].items():
|
159
174
|
замещающая_функция += ' if "' + з + '" in ИА: ИА["' + н + '"] = ИА.pop("' + з + '")\n'
|
160
|
-
|
175
|
+
if len(замена) > 2:
|
176
|
+
for зам_арг, знач_зам in замена[2].items():
|
177
|
+
if зам_арг[0] != -1:
|
178
|
+
замещающая_функция += ' if len(ПА) > ' + str(зам_арг[0]) + ' and ПА[' + str(зам_арг[0]) + '] in ' + str(list(знач_зам.keys())) + ':\n'
|
179
|
+
замещающая_функция += ' ПА = ПА[:' + str(зам_арг[0]) + '] + tuple([' + str(знач_зам) + '[ПА[' + str(зам_арг[0]) + ']]]) + ПА[' + str(зам_арг[0] + 1) + ':]\n'
|
180
|
+
if зам_арг[1] != '':
|
181
|
+
замещающая_функция += ' if "' + зам_арг[1] + '" in ИА.keys() and ИА["' + зам_арг[1] + '"] in ' + str(list(знач_зам.keys())) + ':\n'
|
182
|
+
замещающая_функция += ' ИА["' + зам_арг[1] + '"] = ' + str(знач_зам) + '[ИА["' + зам_арг[1] + '"]]\n'
|
183
|
+
замещающая_функция += ' return ' + класс + '.' + название + '(*ПА, **ИА)'
|
161
184
|
exec(замещающая_функция)
|
162
185
|
exec("Добавить_поле(" + класс + ", '" + замена[0] + "', __" + класс + "_" + название + "__)")
|
163
186
|
exec('del __' + класс + '_' + название + '__')
|
@@ -196,9 +219,9 @@ def Заменить_ключи_в_словаре(словарь, замены):
|
|
196
219
|
новый.setdefault(замены[н] if н in замены.keys() else н, з)
|
197
220
|
return новый
|
198
221
|
|
199
|
-
def Свёртка(функция,
|
200
|
-
рез = нач_знач if нач_знач else
|
201
|
-
for эл in
|
222
|
+
def Свёртка(функция, перебираемое, нач_знач = None):
|
223
|
+
рез = нач_знач if нач_знач else перебираемое[0]
|
224
|
+
for эл in перебираемое: рез = функция(рез, эл)
|
202
225
|
return рез
|
203
226
|
|
204
227
|
__builtins__.update(
|
@@ -0,0 +1,46 @@
|
|
1
|
+
import random
|
2
|
+
|
3
|
+
# Управление
|
4
|
+
def НачЗнач(a = None): return random.seed(a, version = 2)
|
5
|
+
def Состояние(): return random.getstate()
|
6
|
+
def ЗадатьСостояние(состояние): return random.setstate(состояние)
|
7
|
+
|
8
|
+
# Байты
|
9
|
+
def СлучБайты(n): return random.randbytes(n)
|
10
|
+
|
11
|
+
# Целые числа
|
12
|
+
def ИзДиапазона(*ПА, **ИА):
|
13
|
+
ИА = __Заголовочный_код__.Заменить_ключи_в_словаре(ИА, \
|
14
|
+
{ 'нач': 'start', 'кон': 'stop', 'шаг': 'step' })
|
15
|
+
return random.randrange(*ПА, **ИА)
|
16
|
+
def СлучЦелое(a, b): return random.randint(a, b)
|
17
|
+
def СлучБиты(k): return random.getrandbits(k)
|
18
|
+
|
19
|
+
# Последовательности
|
20
|
+
def ВыбратьИзПосл(посл): return random.choice(посл)
|
21
|
+
def ВыбратьПосл(*ПА, **ИА):
|
22
|
+
ИА = __Заголовочный_код__.Заменить_ключи_в_словаре(ИА, \
|
23
|
+
{ 'посл': 'population', 'веса': 'weights', 'накоплВеса': 'cum_weights' })
|
24
|
+
return random.choices(*ПА, **ИА)
|
25
|
+
def Перемешать(x): return random.shuffle(x)
|
26
|
+
def СлучПосл(*ПА, **ИА):
|
27
|
+
ИА = __Заголовочный_код__.Заменить_ключи_в_словаре(ИА, \
|
28
|
+
{ 'посл': 'population', 'колич': 'counts' })
|
29
|
+
return random.sample(*ПА, **ИА)
|
30
|
+
|
31
|
+
# Дискретное распределение
|
32
|
+
def БиномРаспр(n, p): return random.binomialvariate(n, p)
|
33
|
+
|
34
|
+
# Вещественные числа
|
35
|
+
def От0До1(): return random.random()
|
36
|
+
def РавномернРаспр(a, b): return random.uniform(a, b)
|
37
|
+
def ТреугРаспр(нижнГр, верхГр, мода): return random.triangular(нижнГр, верхГр, мода)
|
38
|
+
def БетаРаспр(альфа, бета): return random.betavariate(альфа, бета)
|
39
|
+
def ЭкспРаспр(лямбда = 1.0): return random.expovariate(лямбда)
|
40
|
+
def ГаммаРаспр(альфа, бета): return random.gammavariate(альфа, бета)
|
41
|
+
def РаспрГаусса(мю = 0.0, сигма = 1.0): return random.gauss(мю, сигма)
|
42
|
+
def ЛогНормРаспр(мю, сигма): return random.lognormvariate(мю, сигма)
|
43
|
+
def НормРаспр(мю = 0.0, сигма = 1.0): return random.normalvariate(мю, сигма)
|
44
|
+
def РаспрМизеса(мю, каппа): return random.vonmisesvariate(мю, каппа)
|
45
|
+
def РаспрПарето(альфа): return random.paretovariate(альфа)
|
46
|
+
def РаспрВейбулла(альфа, бета): return random.weibullvariate(альфа, бета)
|
@@ -51,89 +51,96 @@ import importlib as Импортование
|
|
51
51
|
|
52
52
|
Встроенные_функции = {
|
53
53
|
'АбсЗнач': ( 'abs', None, False ),
|
54
|
-
'
|
55
|
-
'
|
56
|
-
'В7битовСимв': ( 'ascii', None, False ),
|
57
|
-
'Двоич': ( 'bin', None, False ),
|
58
|
-
'Логич': ( 'bool', None, False ),
|
59
|
-
'Останов': ( 'breakpoint', None, False ),
|
54
|
+
'АсинхрПеребиратель': ( 'aiter', None, False ),
|
55
|
+
'АсСледующий': ( 'anext', None, False ),
|
60
56
|
'БайтМассив': ( 'bytearray', { 'источник': 'source', 'кодование': 'encoding', 'при_ошибках': 'errors' }, True ),
|
61
57
|
'Байты': ( 'bytes', { 'источник': 'source', 'кодование': 'encoding', 'при_ошибках': 'errors' }, True ),
|
58
|
+
'В7битовСимв': ( 'ascii', None, False ),
|
59
|
+
'Вещ': ( 'float', None, True ),
|
60
|
+
'Восьм': ( 'oct', None, False ),
|
61
|
+
'Все': ( 'all', None, False ),
|
62
|
+
'Вывести': ( 'print', { 'разделитель': 'sep', 'в_конце': 'end', 'файл': 'file', 'немедленно': 'flush' }, False ),
|
62
63
|
'Вызываемое': ( 'callable', None, False ),
|
63
|
-
'
|
64
|
-
'Метод_класса': ( 'classmethod', None, False ),
|
65
|
-
'Собрать_код': ( 'compile', { 'исходник': 'source', 'название_файла': 'filename', 'режим': 'mode', 'флаги': 'flags', 'dont_inherit': 'не_наследовать', 'optimize': 'оптимизация' }, False ),
|
66
|
-
'Компл': ( 'complex', { 'действ_часть': 'real', 'мнимая_часть': 'imag' }, True ),
|
67
|
-
'Удалить_поле': ( 'delattr', None, False ),
|
68
|
-
'Словарь': ( 'dict', None, True ),
|
69
|
-
'Содержимое': ( 'dir', None, False ),
|
70
|
-
'ДелОст': ( 'divmod', None, False ),
|
71
|
-
'Перечислить': ( 'enumerate', { 'перебираемое': 'iterable', 'начало': 'start' }, False ),
|
64
|
+
'ВыпКод': ( 'exec', { 'замыкание': 'closure' }, False ),
|
72
65
|
'ВычВыр': ( 'eval', None, False ),
|
73
|
-
'
|
74
|
-
'
|
75
|
-
'Вещ': ( 'float', None, True ),
|
76
|
-
'Формат': ( 'format', None, False ),
|
77
|
-
'НеизмМнож': ( 'frozenset', None, True ),
|
78
|
-
'Получить_поле': ( 'getattr', None, False ),
|
79
|
-
'Общие_сущности': ( 'globals', None, False ),
|
80
|
-
'Имеет_поле': ( 'hasattr', None, False ),
|
81
|
-
'Хэш': ( 'hash', None, False ),
|
82
|
-
'Справка': ( 'help', None, False ),
|
83
|
-
'Шестн': ( 'hex', None, False ),
|
84
|
-
'Идент': ( 'id', None, False ),
|
85
|
-
'Принять': ( 'input', None, False ),
|
86
|
-
'Цел': ( 'int', { 'основание': 'base' }, True ),
|
87
|
-
'Экземпляр': ( 'isinstance', None, False ),
|
88
|
-
'Подкласс': ( 'issubclass', None, False ),
|
89
|
-
'Перебиратель': ( 'iter', None, False ),
|
66
|
+
'Двоич': ( 'bin', None, False ),
|
67
|
+
'ДелОст': ( 'divmod', None, False ),
|
90
68
|
'Длина': ( 'len', None, False ),
|
91
|
-
'
|
92
|
-
'
|
93
|
-
'
|
94
|
-
'
|
69
|
+
'Знак_в_код': ( 'ord', None, False ),
|
70
|
+
'Идент': ( 'id', None, False ),
|
71
|
+
'Имеет_поле': ( 'hasattr', None, False ),
|
72
|
+
'Код_в_знак': ( 'chr', None, False ),
|
73
|
+
'Компл': ( 'complex', { 'действ_часть': 'real', 'мнимая_часть': 'imag' }, True ),
|
74
|
+
'Кортеж': ( 'tuple', None, True ),
|
75
|
+
'Логич': ( 'bool', None, False ),
|
76
|
+
'Любое': ( 'any', None, False ),
|
95
77
|
'Макс': ( 'max', { 'ф_сравнения': 'key', 'если_пусто': 'default' }, False ),
|
96
|
-
'
|
78
|
+
'Местные_сущности': ( 'locals', None, False ),
|
79
|
+
'Метод_класса': ( 'classmethod', None, False ),
|
80
|
+
'Метод_получения': ( 'getter', None, False ),
|
81
|
+
'Метод_установки': ( 'setter', None, False ),
|
82
|
+
'Метод_удаления': ( 'deleter', None, False ),
|
97
83
|
'Мин': ( 'min', { 'ф_сравнения': 'key', 'если_пусто': 'default' }, False ),
|
98
|
-
'
|
84
|
+
'Множ': ( 'set', None, True ),
|
85
|
+
'Надкласс': ( 'super', None, True ),
|
86
|
+
'НеизмМнож': ( 'frozenset', None, True ),
|
87
|
+
'Обратить': ( 'reversed', None, False ),
|
88
|
+
'Общие_сущности': ( 'globals', None, False ),
|
99
89
|
'Объект': ( 'object', None, True ),
|
100
|
-
'
|
90
|
+
'Округлить': ( 'round', { 'число': 'number', 'разрядов': 'ndigits' }, False ),
|
91
|
+
'Останов': ( 'breakpoint', None, False ),
|
101
92
|
'Открыть': ( 'open', { 'название': 'name', 'режим': 'mode', 'буферизация': 'buffering', 'кодование': 'encoding', 'при_ошибках': 'errors', 'новая_строка': 'newline', 'закрыть_описатель': 'closefd', 'открыватель': 'opener' }, False ),
|
102
|
-
'
|
103
|
-
'
|
104
|
-
'
|
105
|
-
'
|
106
|
-
'
|
93
|
+
'Отображение': ( 'map', None, False ),
|
94
|
+
'Память': ( 'memoryview', { 'объект': 'object' }, True ),
|
95
|
+
'Перебиратель': ( 'iter', None, False ),
|
96
|
+
'Перечислить': ( 'enumerate', { 'перебираемое': 'iterable', 'начало': 'start' }, False ),
|
97
|
+
'Подкласс': ( 'issubclass', None, False ),
|
98
|
+
'Получить_поле': ( 'getattr', None, False ),
|
99
|
+
'Поля': ( 'vars', None, False ),
|
107
100
|
'Представление': ( 'repr', None, False ),
|
108
|
-
'
|
109
|
-
'
|
110
|
-
'
|
111
|
-
'
|
112
|
-
'
|
113
|
-
'
|
101
|
+
'Принять': ( 'input', None, False ),
|
102
|
+
'Размер': ( 'len', None, False ),
|
103
|
+
'Ряд': ( 'range', None, True ),
|
104
|
+
'Свойство': ( 'property', { 'ф_получения': 'fget', 'ф_установки': 'fset', 'ф_удаления': 'fdel', 'документация': 'doc' }, True ),
|
105
|
+
'Следующий': ( 'next', None, False ),
|
106
|
+
'Словарь': ( 'dict', None, True ),
|
107
|
+
'Собрать_код': ( 'compile', { 'исходник': 'source', 'название_файла': 'filename', 'режим': 'mode', 'флаги': 'flags', 'не_наследовать': 'dont_inherit', 'optimize': 'оптимизация' }, False ),
|
108
|
+
'Содержимое': ( 'dir', None, False ),
|
109
|
+
'Список': ( 'list', None, True ),
|
110
|
+
'Справка': ( 'help', None, False ),
|
111
|
+
'Срез': ( 'slice', None, True ),
|
114
112
|
'Статический_метод': ( 'staticmethod', None, False ),
|
113
|
+
'Степень': ( 'pow', None, False ),
|
115
114
|
'Строка': ( 'str', { 'кодование': 'encoding', 'при_ошибках': 'errors' }, False ),
|
116
115
|
'Сумма': ( 'sum', { 'начало': 'start' }, False ),
|
117
|
-
'Надкласс': ( 'super', None, False ),
|
118
|
-
'Кортеж': ( 'tuple', None, True ),
|
119
116
|
'Тип': ( 'type', None, True ),
|
120
|
-
'
|
121
|
-
'Упаковать': ( 'zip',
|
117
|
+
'Удалить_поле': ( 'delattr', None, False ),
|
118
|
+
'Упаковать': ( 'zip', { 'проверить_длины': 'strict' }, False ),
|
119
|
+
'Упорядочить': ( 'sorted', { 'ф_сравнения': 'key', 'наоборот': 'reverse' }, False ),
|
120
|
+
'Установить_поле': ( 'setattr', None, False ),
|
121
|
+
'Фильтр': ( 'filter', None, False ),
|
122
|
+
'Формат': ( 'format', None, False ),
|
123
|
+
'Хэш': ( 'hash', None, False ),
|
124
|
+
'Цел': ( 'int', { 'основание': 'base' }, True ),
|
125
|
+
'Шестн': ( 'hex', None, False ),
|
126
|
+
'Экземпляр': ( 'isinstance', None, False ),
|
122
127
|
'__Подключить__': ( '__import__' , { 'название': 'name', 'общие_сущности': 'globals', 'местные_сущности': 'locals', 'по_списку': 'fromlist', 'уровень': 'level' }, False )
|
123
128
|
}
|
124
129
|
|
125
130
|
Специальные_названия = {
|
126
131
|
'__Название__': '__name__',
|
127
|
-
'__Документация__': '__doc__',
|
128
132
|
'__Пакет__': '__package__',
|
133
|
+
'__Модуль__': '__module__',
|
134
|
+
'__Файл__': '__file__',
|
135
|
+
'__Полное_имя__': '__qualname__',
|
136
|
+
'__Документация__': '__doc__',
|
137
|
+
'__Примечания__': '__annotations__',
|
129
138
|
'__Загрузчик__': '__loader__',
|
130
139
|
'__Спецификация__': '__spec__',
|
131
140
|
'__Встроенное__': '__builtins__',
|
132
|
-
'__Файл__': '__file__',
|
133
141
|
'__Кэш__': '__cached__',
|
134
142
|
'__Поля__': '__dict__',
|
135
143
|
'__Класс__': '__class__',
|
136
|
-
'__Модуль__': '__module__',
|
137
144
|
'__Надклассы__': '__bases__',
|
138
145
|
'__Подклассы__': '__subclasses__',
|
139
146
|
'__Порядок_разрешения_методов__': '__mro__',
|
@@ -141,7 +148,6 @@ import importlib as Импортование
|
|
141
148
|
'__Значение__': '__value__',
|
142
149
|
'__По_умолчанию__': '__defaults__',
|
143
150
|
'__Именованные_по_умолчанию': '__kwdefaults__',
|
144
|
-
'__Полное_имя__': '__qualname__',
|
145
151
|
'__Замыкание__': '__closure__',
|
146
152
|
'__Код__': '__code__',
|
147
153
|
'__Флаги__': '__flags__',
|
@@ -176,7 +182,9 @@ import importlib as Импортование
|
|
176
182
|
'__Удаление_значения__': '__delitem__',
|
177
183
|
'__Пропущенное_значение__': '__missing__',
|
178
184
|
'__Перебиратель__': '__iter__',
|
185
|
+
'__АсПеребиратель__': '__aiter__',
|
179
186
|
'__Следующий__': '__next__',
|
187
|
+
'__АсСледующий__': '__anext__',
|
180
188
|
'__Обращение__': '__reversed__',
|
181
189
|
'__Содержит__': '__contains__',
|
182
190
|
'__Сцепление__': '__concat__',
|
@@ -191,9 +199,9 @@ import importlib as Импортование
|
|
191
199
|
'__Степень__': '__pow__',
|
192
200
|
'__ЛСдвиг__': '__lshift__',
|
193
201
|
'__ПСдвиг__': '__rshift__',
|
194
|
-
'__
|
195
|
-
'__
|
196
|
-
'__
|
202
|
+
'__ПобитИ__': '__and__',
|
203
|
+
'__ПобитИИли__': '__xor__',
|
204
|
+
'__ПобитИли__': '__or__',
|
197
205
|
'__АрифмОтр__': '__neg__',
|
198
206
|
'__ОдПлюс__': '__pos__',
|
199
207
|
'__АбсЗнач__': '__abs__',
|
@@ -333,10 +341,13 @@ def Заменить_встроенные_функции(слова, соотв
|
|
333
341
|
for номер, слово in enumerate(слова):
|
334
342
|
if слово[0] == 1 and слово[1] in соответствия:
|
335
343
|
соответствие = соответствия[слово[1]]
|
336
|
-
|
344
|
+
спец_метод = (номер > 2 and слова[номер - 1][1] == '.' and слова[номер - 3][1] == '@')
|
345
|
+
if ( \
|
346
|
+
(номер == 0 or слова[номер - 1][1] != '.') or спец_метод \
|
347
|
+
) and \
|
337
348
|
( \
|
338
349
|
(номер + 1 < len(слова) and слова[номер + 1][1] == '(') or \
|
339
|
-
(номер == 0 or слова[номер - 1][1] == '@') or \
|
350
|
+
((номер == 0 or слова[номер - 1][1] == '@') or спец_метод) or \
|
340
351
|
соответствие[2] \
|
341
352
|
):
|
342
353
|
слова[номер] = (1, соответствие[0], слово[2])
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: rupython
|
3
|
-
Version: 1.0.
|
3
|
+
Version: 1.0.8
|
4
4
|
Summary: Исполнитель кода Русского Питона
|
5
5
|
Description-Content-Type: text/markdown
|
6
6
|
License-File: LICENSE
|
@@ -23,7 +23,7 @@ ftype "Код на Русском Питоне"=py -m rupython "%%1" %%*
|
|
23
23
|
|
24
24
|
Приложения на Русском Питоне могут использовать все возможности оригинального Python, включая всё богатство подключаемых пакетов и библиотек. Код может быть написан на обоих вариантах языка.
|
25
25
|
|
26
|
-
###
|
26
|
+
### Примеры кода
|
27
27
|
|
28
28
|
```
|
29
29
|
Функция НОД(*числа):
|
@@ -38,13 +38,27 @@ ftype "Код на Русском Питоне"=py -m rupython "%%1" %%*
|
|
38
38
|
Вернуть n
|
39
39
|
```
|
40
40
|
|
41
|
+
```
|
42
|
+
Функция Дата_Пасхи(год, нов_ст = Пусто):
|
43
|
+
д = (год % 19 * 19 + 15) % 30
|
44
|
+
д += (год % 4 * 2 + год % 7 * 4 + 6 * д + 6) % 7
|
45
|
+
нов_ст = Да если нов_ст это Пусто и год >= 1918 иначе нов_ст
|
46
|
+
Если не нов_ст:
|
47
|
+
Если д > 9: Вернуть Строка(д - 9) + ' апреля'
|
48
|
+
Иначе: Вернуть Строка(22 + д) + ' марта'
|
49
|
+
Иначе:
|
50
|
+
п = год // 100 - год // 400 - 2
|
51
|
+
Если д > 39 - п: Вернуть Строка(д - 39 + п) + ' мая'
|
52
|
+
Иначе: Вернуть Строка(д - 9 + п) + ' апреля'
|
53
|
+
```
|
54
|
+
|
41
55
|
### Обзор особенностей языка
|
42
56
|
|
43
57
|
##### Основные встроенные типы данных:
|
44
58
|
|
45
59
|
* Числовые: ```Цел```, ```Вещ```, ```Компл```.
|
46
60
|
* Логический: ```Логич``` – значения ```Да``` и ```Нет```.
|
47
|
-
* Неопределённое (пустое
|
61
|
+
* Неопределённое значение: ```Пусто``` (пустое значение, или ничего).
|
48
62
|
* Строковый (текстовый): ```Строка```.
|
49
63
|
* Последовательности: ```Список```, ```Кортеж```, ```Ряд``` (диапазон).
|
50
64
|
* Ассоциативный массив: ```Словарь```.
|
@@ -228,3 +242,82 @@ x = 0
|
|
228
242
|
Проверить y != 0, 'Деление на 0.'
|
229
243
|
Вернуть x / y
|
230
244
|
```
|
245
|
+
|
246
|
+
### Встроенные функции и обёртки
|
247
|
+
```
|
248
|
+
АбсЗнач(x)
|
249
|
+
АсПеребиратель(асинхр_перебираемое)
|
250
|
+
Все(перебираемое)
|
251
|
+
Любое(перебираемое)
|
252
|
+
АсСледущий(асинхр_перебиратель[, по_умолчанию])
|
253
|
+
В7битовСимв(объект)
|
254
|
+
Двоич(x)
|
255
|
+
Логич(объект = Нет)
|
256
|
+
Останов(*ПА, **ИА)
|
257
|
+
БайтМассив([источник = ''[, кодование[, при_ошибках]]])
|
258
|
+
Байты([источник = ''[, кодование[, при_ошибках]]])
|
259
|
+
Вызываемое(объект)
|
260
|
+
Код_в_знак(i)
|
261
|
+
@Метод_класса
|
262
|
+
Собрать_код(исходник, название_файла, режим, флаги = 0, не_наследовать = Нет, оптимизация = -1)
|
263
|
+
Компл(число = 0 | строка | действ_часть = 0, мнимая_часть = 0)
|
264
|
+
Удалить_поле(объект, название)
|
265
|
+
Словарь([отображение | перебираемое], **ИА)
|
266
|
+
Содержимое([объект])
|
267
|
+
ДелОст(a, b)
|
268
|
+
Перечислить(перебираемое, начало = 0)
|
269
|
+
ВычВыр(исходник, общие_сущности = Пусто, местные_сущности = Пусто)
|
270
|
+
ВыпКод(исходник, общие_сущности = Пусто, местные_сущности = Пусто, замыкание = Пусто)
|
271
|
+
Фильтр(функция, перебираемое)
|
272
|
+
Вещ(число = 0.0 | строка)
|
273
|
+
Формат(значение, описание = '')
|
274
|
+
НеизмМнож(перебираемое = Множ())
|
275
|
+
Получить_поле(объект, название[, по_умолчанию])
|
276
|
+
Общие_сущности()
|
277
|
+
Имеет_поле(объект, название)
|
278
|
+
Хэш(объект)
|
279
|
+
Справка([запрос])
|
280
|
+
Шестн(x)
|
281
|
+
Идент(объект)
|
282
|
+
Принять(сообщение)
|
283
|
+
Цел(число = 0 | строка, основание = 10)
|
284
|
+
Экземпляр(объект, класс)
|
285
|
+
Подкласс(класс, надкласс)
|
286
|
+
Перебиратель(объект[, исключение])
|
287
|
+
Длина(s) | Размер(s)
|
288
|
+
Список([перебираемое])
|
289
|
+
Местные_сущности()
|
290
|
+
Отображение(функция, перебираемое, *перебираемые)
|
291
|
+
Макс((перебираемое[, если_пусто] | аргумент_1, аргумент_2, * аргументы), ф_сравнения = Пусто)
|
292
|
+
Память(объект)
|
293
|
+
Мин((перебираемое[, если_пусто] | аргумент_1, аргумент_2, * аргументы), ф_сравнения = Пусто)
|
294
|
+
Следующий(перебиратель[, по_умолчанию])
|
295
|
+
Объект()
|
296
|
+
Восьм(x)
|
297
|
+
Открыть(название, режим = 'r', буферизация = -1, кодование = Пусто, при_ошибках = Пусто, новая_строка = Пусто, закрыть_описатель = Да, открыватель = Пусто)
|
298
|
+
Знак_в_код(c)
|
299
|
+
Степень(основание, показатель, модуль = Пусто)
|
300
|
+
Вывести(*объекты, разделитель = ' ', в_конце = '\n', файл = Пусто, немедленно = Нет)
|
301
|
+
[@]Свойство(ф_получения = Пусто, ф_установки = Пусто, ф_удаления = Пусто, документация = Пусто)
|
302
|
+
Ряд(длина | нач, кон, шаг = 1)
|
303
|
+
Представление(объект)
|
304
|
+
Обратить(последовательность)
|
305
|
+
Округлить(число, разрядов = Пусто)
|
306
|
+
Множ([перебираемое])
|
307
|
+
Установить_поле(объект, название, значение)
|
308
|
+
Срез(длина | нач, кон, шаг = 1)
|
309
|
+
Упорядочить(перебираемое, ф_сравнения, наоборот)
|
310
|
+
[@]Статический_метод(функция)
|
311
|
+
Строка(объект[, кодование = 'utf-8', при_ошибках = 'strict')
|
312
|
+
Сумма(перебираемое[, начало = 0])
|
313
|
+
Надкласс([тип, порядок_поиска = Пусто])
|
314
|
+
Кортеж([перебираемое])
|
315
|
+
Тип(объект | название, надклассы, поля, **ключевые_слова)
|
316
|
+
Поля([объект])
|
317
|
+
Упаковать(*перебираемые, проверить_длины = Нет)
|
318
|
+
Свёртка(функция, перебираемое, нач_знач = Пусто)
|
319
|
+
@Метод_получения
|
320
|
+
@Метод_установки
|
321
|
+
@Метод_удаления
|
322
|
+
__Подключить__(название, общие_сущности = Пусто, местные_сущности = Пусто, по_списку = 0, уровень = 0)
|
323
|
+
```
|
@@ -3,7 +3,7 @@ from pathlib import Path as Путь
|
|
3
3
|
|
4
4
|
Установить(
|
5
5
|
name = 'rupython',
|
6
|
-
version = '1.0.
|
6
|
+
version = '1.0.8',
|
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
|