rupython 1.0.12__py3-none-any.whl → 1.1.0__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.
- rupython/__/342/225/250/320/247/342/225/250/342/226/221/342/225/250/342/224/202/342/225/250/342/225/233/342/225/250/342/225/227/342/225/250/342/225/233/342/225/250/342/226/223/342/225/250/342/225/233/342/225/244/320/227/342/225/250/342/225/234/342/225/244/320/233/342/225/250/342/225/243_/342/225/250/342/225/221/342/225/250/342/225/233/342/225/250/342/224/244__.py +28 -41
- rupython//342/225/250/320/257/342/225/244/320/220/342/225/250/342/225/241/342/225/250/342/225/233/342/225/250/342/226/222/342/225/244/320/220/342/225/250/342/226/221/342/225/250/342/225/226/342/225/250/342/225/233/342/225/250/342/226/223/342/225/250/342/226/221/342/225/244/320/222/342/225/250/342/225/241/342/225/250/342/225/227/342/225/244/320/234.py +7 -4
- {rupython-1.0.12.dist-info → rupython-1.1.0.dist-info}/METADATA +8 -8
- rupython-1.1.0.dist-info/RECORD +11 -0
- rupython-1.0.12.dist-info/RECORD +0 -11
- {rupython-1.0.12.dist-info → rupython-1.1.0.dist-info}/LICENSE +0 -0
- {rupython-1.0.12.dist-info → rupython-1.1.0.dist-info}/WHEEL +0 -0
- {rupython-1.0.12.dist-info → rupython-1.1.0.dist-info}/top_level.txt +0 -0
@@ -1,43 +1,19 @@
|
|
1
|
-
|
1
|
+
import gc
|
2
|
+
import ctypes
|
3
|
+
|
2
4
|
import sys as Система
|
3
5
|
import os as ОС
|
4
6
|
|
5
7
|
from _io import BufferedReader, BufferedWriter, TextIOWrapper
|
6
8
|
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
return адрес
|
16
|
-
|
17
|
-
def Установить_поле(класс, поле, значение):
|
18
|
-
смещение_флагов = [*Получить_память(int)].index(int.__flags__)
|
19
|
-
флаги = класс.__flags__
|
20
|
-
память_класса = Получить_память(класс)
|
21
|
-
if Система.version_info[0:2] <= (3, 9): память_класса[смещение_флагов] |= 1 << 9
|
22
|
-
elif Система.version_info[0:2] >= (3, 10): память_класса[смещение_флагов] &= ~(1 << 8)
|
23
|
-
setattr(класс, поле, значение)
|
24
|
-
память_класса[смещение_флагов] = флаги
|
25
|
-
pythonapi.PyType_Modified(py_object(класс))
|
26
|
-
|
27
|
-
def Новая_функция(функция, **параметры):
|
28
|
-
код = функция.__code__
|
29
|
-
копия = type(функция)(
|
30
|
-
код.replace(co_consts = код.co_consts + tuple((ключ, значение) for ключ, значение in параметры.items())),
|
31
|
-
функция.__globals__,
|
32
|
-
name=функция.__name__,
|
33
|
-
closure=функция.__closure__
|
34
|
-
)
|
35
|
-
копия.__defaults__ = функция.__defaults__
|
36
|
-
копия.__kwdefaults__ = функция.__kwdefaults__
|
37
|
-
копия.__qualname__ = функция.__qualname__
|
38
|
-
return копия
|
39
|
-
|
40
|
-
Установить_поле(класс, название, Новая_функция(значение) if функция else значение)
|
9
|
+
def Установить_поле(класс, атрибут, значение):
|
10
|
+
сл = gc.get_referents(класс.__dict__)[0]
|
11
|
+
сл[атрибут] = значение
|
12
|
+
if callable(значение):
|
13
|
+
сл[атрибут].__name__ = значение.__name__
|
14
|
+
сл[атрибут].__qualname__ = значение.__qualname__
|
15
|
+
сл[атрибут].__kwdefaults__ = значение.__kwdefaults__
|
16
|
+
ctypes.pythonapi.PyType_Modified(ctypes.py_object(класс))
|
41
17
|
|
42
18
|
Встроенные_поля = {
|
43
19
|
('str', 'bytes', 'bytearray'): {
|
@@ -186,27 +162,38 @@ for классы, таблица in Встроенные_поля.items():
|
|
186
162
|
замещающая_функция += ' ИА["' + зам_арг[1] + '"] = ' + str(знач_зам) + '[ИА["' + зам_арг[1] + '"]]\n'
|
187
163
|
замещающая_функция += ' return ' + класс + '.' + название + '(*ПА, **ИА)'
|
188
164
|
exec(замещающая_функция)
|
189
|
-
exec("
|
165
|
+
exec("Установить_поле(" + класс + ", '" + замена[0] + "', __" + класс + "_" + название + "__)")
|
190
166
|
exec('del __' + класс + '_' + название + '__')
|
191
167
|
else:
|
192
168
|
if название[0] == '.':
|
193
|
-
eval("
|
169
|
+
eval("Установить_поле(" + класс + ", '" + замена + "', " + класс + название + ")")
|
194
170
|
else:
|
195
|
-
eval("
|
171
|
+
eval("Установить_поле(" + класс + ", '" + замена + "', lambda *ПА, **ИА: " + класс + "." + название + "(*ПА, **ИА))")
|
196
172
|
|
197
173
|
Система.path.insert(0, ОС.path.dirname(__file__) + '/Модули')
|
198
174
|
|
175
|
+
def Заменить_преобразование_в_строку(класс, функция):
|
176
|
+
class Объект_типа(ctypes.Structure): pass
|
177
|
+
Объект_типа._fields_ = [
|
178
|
+
('', ctypes.c_ssize_t * 17), ('tp_str', ctypes.CFUNCTYPE(ctypes.py_object, ctypes.py_object))
|
179
|
+
]
|
180
|
+
def Выполнить(класс, функция):
|
181
|
+
ф = ctypes.CFUNCTYPE(ctypes.py_object, ctypes.py_object)(функция)
|
182
|
+
Объект_типа._fields_.append(ф)
|
183
|
+
setattr(Объект_типа.from_address(id(класс)), 'tp_str', Объект_типа._fields_[-1])
|
184
|
+
Выполнить(класс, функция)
|
185
|
+
|
199
186
|
Обёртка__Вещ_в_стр = lambda здесь: Вещ_в_стр(здесь).replace('.', ',').replace('inf', 'Бскн')
|
200
187
|
Вещ_в_стр = float.__str__
|
201
|
-
|
188
|
+
Заменить_преобразование_в_строку(float, Обёртка__Вещ_в_стр)
|
202
189
|
|
203
190
|
Обёртка__Логич_в_стр = lambda здесь: Логич_в_стр(здесь).replace('True', 'Да').replace('False', 'Нет')
|
204
191
|
Логич_в_стр = bool.__str__
|
205
|
-
|
192
|
+
Заменить_преобразование_в_строку(bool, Обёртка__Логич_в_стр)
|
206
193
|
|
207
194
|
Обёртка__Пусто_в_стр = lambda здесь: Пусто_в_стр(здесь).replace('None', 'Пусто')
|
208
195
|
Пусто_в_стр = type(None).__str__
|
209
|
-
|
196
|
+
Заменить_преобразование_в_строку(type(None), Обёртка__Пусто_в_стр)
|
210
197
|
|
211
198
|
def Проверить_существование(код, местн, общ):
|
212
199
|
try: eval(код, местн, общ)
|
@@ -438,19 +438,22 @@ def Проверить_соответствие_слов(слова, путь_к
|
|
438
438
|
|
439
439
|
for сл in ('Подключить', 'Если', 'Иначе'):
|
440
440
|
for поз in [i for i, x in enumerate(слова) if x[1] == сл]:
|
441
|
-
if поз > 0 and слова[поз - 1][
|
441
|
+
if поз > 0 and слова[поз - 1][0] not in (4, 5, 6):
|
442
|
+
print(слова[поз])
|
443
|
+
print(слова[поз - 1])
|
444
|
+
print(слова)
|
442
445
|
Вывести_исключение(сл); return False
|
443
446
|
сл_ = сл.lower()
|
444
447
|
for поз in [i for i, x in enumerate(слова) if x[1] == сл_]:
|
445
|
-
if поз == 0 or слова[поз - 1][
|
448
|
+
if поз == 0 or слова[поз - 1][0] in (4, 5, 6):
|
446
449
|
Вывести_исключение(сл_); return False
|
447
450
|
|
448
451
|
for поз in [i for i, x in enumerate(слова) if x[1] == 'Вернуть']:
|
449
|
-
if поз == len(слова) - 1 or слова[поз + 1][
|
452
|
+
if поз == len(слова) - 1 or слова[поз + 1][0] == 4:
|
450
453
|
Вывести_исключение('Вернуть'); return False
|
451
454
|
|
452
455
|
for поз in [i for i, x in enumerate(слова) if x[1] == 'Возврат']:
|
453
|
-
if поз != len(слова) - 1 and слова[поз + 1][
|
456
|
+
if поз != len(слова) - 1 and слова[поз + 1][0] != 4:
|
454
457
|
Вывести_исключение('Возврат'); return False
|
455
458
|
|
456
459
|
return True
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: rupython
|
3
|
-
Version: 1.0
|
3
|
+
Version: 1.1.0
|
4
4
|
Summary: Исполнитель кода Русского Питона
|
5
5
|
Description-Content-Type: text/markdown
|
6
6
|
License-File: LICENSE
|
@@ -12,13 +12,6 @@ License-File: LICENSE
|
|
12
12
|
* Повышение производительности труда работников, выполняющих задачи автоматизации процессов и формализации алгоритмов, за счёт применения лексики на родном им языке, что априори повышает усвоение и читаемость кода.
|
13
13
|
* Упрощение освоения навыков алгоритмизации и составления компьютерных программ учащимися путём устранения искусственного препятствия в виде необходимости оперировать лексикой иностранного языка.
|
14
14
|
|
15
|
-
Код модулей Русского Питона размещается в файлах с расширением **.крп**. Для интеграции в операционную систему необходимо ассоциировать эти файлы с транслятором. Например, для ОС Windows это выполняется следующими консольными командами:
|
16
|
-
|
17
|
-
```
|
18
|
-
assoc .крп = "Код на Русском Питоне"
|
19
|
-
ftype "Код на Русском Питоне"=py -m rupython "%%1" %%*
|
20
|
-
```
|
21
|
-
|
22
15
|
Приложения на Русском Питоне могут использовать все возможности оригинального Python, включая всё богатство подключаемых пакетов и библиотек. Код может быть написан на обоих вариантах языка.
|
23
16
|
|
24
17
|
### Установка
|
@@ -31,6 +24,13 @@ ftype "Код на Русском Питоне"=py -m rupython "%%1" %%*
|
|
31
24
|
|
32
25
|
`pip install rupython --break-system-packages`
|
33
26
|
|
27
|
+
Код модулей Русского Питона размещается в файлах с расширением **.крп**. Для интеграции в операционную систему необходимо ассоциировать эти файлы с транслятором. Например, для ОС Windows это выполняется следующими консольными командами:
|
28
|
+
|
29
|
+
```
|
30
|
+
assoc .крп = "Код на Русском Питоне"
|
31
|
+
ftype "Код на Русском Питоне"=py -m rupython "%%1" %%*
|
32
|
+
```
|
33
|
+
|
34
34
|
Исходный код размещён тут: https://github.com/russkiy/rupython
|
35
35
|
|
36
36
|
### Примеры кода
|
@@ -0,0 +1,11 @@
|
|
1
|
+
rupython/__main__.py,sha256=BxtsIK8PJuOOGVDKxqoscwJjjWWhZts7adicFuwUL6k,540
|
2
|
+
rupython/__Заголовочный_код__.py,sha256=VWghfQc6dv9lwIeQvJotpdOlBtHZeN00NBeL4RdWloA,10998
|
3
|
+
rupython/Преобразователь.py,sha256=0GexhZsJhFp1X00JKA3VOVXsVJYf0LM0JpaJlmFKnSU,36460
|
4
|
+
rupython/Модули/Матем.py,sha256=d8ekm7GJreu7LJ9KmAKcTOciIUQ-VBI567BfK_QeLSc,3587
|
5
|
+
rupython/Модули/РегВыр.py,sha256=yeXYfeDF2qw4DSKVdZVSFInMUW52U7Nq_KOJKvm4XnM,6349
|
6
|
+
rupython/Модули/Случ.py,sha256=oeVdSdFVb4X_T-nX2P7NSIhise1zUPIS4lk7h-67XSg,2689
|
7
|
+
rupython-1.1.0.dist-info/LICENSE,sha256=iWzdt1wyTlK8qNSu7TzK8pjjIcCvLvWHycp7ACRcWEc,59
|
8
|
+
rupython-1.1.0.dist-info/METADATA,sha256=WYj7XgAYUDznHWBZnMmdKxdX9mBlmiTNDdT426XpC3U,13869
|
9
|
+
rupython-1.1.0.dist-info/WHEEL,sha256=P9jw-gEje8ByB7_hXoICnHtVCrEwMQh-630tKvQWehc,91
|
10
|
+
rupython-1.1.0.dist-info/top_level.txt,sha256=GtXaS8JTsBm5hpQxxtQlrxK6rExvSAK_Cp44FrY4210,9
|
11
|
+
rupython-1.1.0.dist-info/RECORD,,
|
rupython-1.0.12.dist-info/RECORD
DELETED
@@ -1,11 +0,0 @@
|
|
1
|
-
rupython/__main__.py,sha256=BxtsIK8PJuOOGVDKxqoscwJjjWWhZts7adicFuwUL6k,540
|
2
|
-
rupython/__Заголовочный_код__.py,sha256=rxsBd0tIe9rnx5U9hG2B2Vqdj8m6FQ6yJc7WDL4ySI8,11923
|
3
|
-
rupython/Преобразователь.py,sha256=JJ_JOmbazEdGHN9_2JwSbLR2e5x3W1WGvPnwYxEi1jg,36347
|
4
|
-
rupython/Модули/Матем.py,sha256=d8ekm7GJreu7LJ9KmAKcTOciIUQ-VBI567BfK_QeLSc,3587
|
5
|
-
rupython/Модули/РегВыр.py,sha256=yeXYfeDF2qw4DSKVdZVSFInMUW52U7Nq_KOJKvm4XnM,6349
|
6
|
-
rupython/Модули/Случ.py,sha256=oeVdSdFVb4X_T-nX2P7NSIhise1zUPIS4lk7h-67XSg,2689
|
7
|
-
rupython-1.0.12.dist-info/LICENSE,sha256=iWzdt1wyTlK8qNSu7TzK8pjjIcCvLvWHycp7ACRcWEc,59
|
8
|
-
rupython-1.0.12.dist-info/METADATA,sha256=ohCbOHUcAmTQm4k1J_Ak-SYFHvsRrYSvFEu9fyeHVqY,13870
|
9
|
-
rupython-1.0.12.dist-info/WHEEL,sha256=P9jw-gEje8ByB7_hXoICnHtVCrEwMQh-630tKvQWehc,91
|
10
|
-
rupython-1.0.12.dist-info/top_level.txt,sha256=GtXaS8JTsBm5hpQxxtQlrxK6rExvSAK_Cp44FrY4210,9
|
11
|
-
rupython-1.0.12.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|