rupython 1.0.11__tar.gz → 1.1.0__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.11/rupython.egg-info → rupython-1.1.0}/PKG-INFO +14 -6
- rupython-1.0.11/PKG-INFO → rupython-1.1.0/README.md +13 -12
- {rupython-1.0.11 → rupython-1.1.0}/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 +34 -43
- {rupython-1.0.11 → rupython-1.1.0}/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 +14 -12
- rupython-1.0.11/README.md → rupython-1.1.0/rupython.egg-info/PKG-INFO +19 -4
- {rupython-1.0.11 → rupython-1.1.0}/setup.py +1 -1
- {rupython-1.0.11 → rupython-1.1.0}/LICENSE +0 -0
- {rupython-1.0.11 → rupython-1.1.0}/rupython/__main__.py +0 -0
- {rupython-1.0.11 → rupython-1.1.0}/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.11 → rupython-1.1.0}/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.11 → rupython-1.1.0}/rupython//320/234/320/276/320/264/321/203/320/273/320/270//320/241/320/273/321/203/321/207.py" +0 -0
- {rupython-1.0.11 → rupython-1.1.0}/rupython.egg-info/SOURCES.txt +0 -0
- {rupython-1.0.11 → rupython-1.1.0}/rupython.egg-info/dependency_links.txt +0 -0
- {rupython-1.0.11 → rupython-1.1.0}/rupython.egg-info/top_level.txt +0 -0
- {rupython-1.0.11 → rupython-1.1.0}/setup.cfg +0 -0
@@ -1,19 +1,29 @@
|
|
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
|
7
7
|
|
8
|
-
Русская версия языка Python, реализованная в виде транслятора кода в код Python.
|
9
|
-
|
10
|
-
`pip install rupython`
|
8
|
+
Русская версия языка Python, реализованная в виде транслятора кода в код Python.
|
11
9
|
|
12
10
|
Русский Питон почти полностью идентичен оригинальному языку с англоязычной лексической базой, основное отличие заключается в использовании русских названий для именования сущностей в коде. Данный инструмент создан для достижения двух целей:
|
13
11
|
|
14
12
|
* Повышение производительности труда работников, выполняющих задачи автоматизации процессов и формализации алгоритмов, за счёт применения лексики на родном им языке, что априори повышает усвоение и читаемость кода.
|
15
13
|
* Упрощение освоения навыков алгоритмизации и составления компьютерных программ учащимися путём устранения искусственного препятствия в виде необходимости оперировать лексикой иностранного языка.
|
16
14
|
|
15
|
+
Приложения на Русском Питоне могут использовать все возможности оригинального Python, включая всё богатство подключаемых пакетов и библиотек. Код может быть написан на обоих вариантах языка.
|
16
|
+
|
17
|
+
### Установка
|
18
|
+
|
19
|
+
Транслятор устанавливается как пакет соответствующей командой:
|
20
|
+
|
21
|
+
`pip install rupython`
|
22
|
+
|
23
|
+
Если "pip" выдаёт ошибку "externally-managed-environment" (под некоторыми версиями ОС Linux), то установка производится следущей командой:
|
24
|
+
|
25
|
+
`pip install rupython --break-system-packages`
|
26
|
+
|
17
27
|
Код модулей Русского Питона размещается в файлах с расширением **.крп**. Для интеграции в операционную систему необходимо ассоциировать эти файлы с транслятором. Например, для ОС Windows это выполняется следующими консольными командами:
|
18
28
|
|
19
29
|
```
|
@@ -21,8 +31,6 @@ assoc .крп = "Код на Русском Питоне"
|
|
21
31
|
ftype "Код на Русском Питоне"=py -m rupython "%%1" %%*
|
22
32
|
```
|
23
33
|
|
24
|
-
Приложения на Русском Питоне могут использовать все возможности оригинального Python, включая всё богатство подключаемых пакетов и библиотек. Код может быть написан на обоих вариантах языка.
|
25
|
-
|
26
34
|
Исходный код размещён тут: https://github.com/russkiy/rupython
|
27
35
|
|
28
36
|
### Примеры кода
|
@@ -1,19 +1,22 @@
|
|
1
|
-
|
2
|
-
Name: rupython
|
3
|
-
Version: 1.0.11
|
4
|
-
Summary: Исполнитель кода Русского Питона
|
5
|
-
Description-Content-Type: text/markdown
|
6
|
-
License-File: LICENSE
|
7
|
-
|
8
|
-
Русская версия языка Python, реализованная в виде транслятора кода в код Python. Транслятор устанавливается как пакет соответствующей командой:
|
9
|
-
|
10
|
-
`pip install rupython`
|
1
|
+
Русская версия языка Python, реализованная в виде транслятора кода в код Python.
|
11
2
|
|
12
3
|
Русский Питон почти полностью идентичен оригинальному языку с англоязычной лексической базой, основное отличие заключается в использовании русских названий для именования сущностей в коде. Данный инструмент создан для достижения двух целей:
|
13
4
|
|
14
5
|
* Повышение производительности труда работников, выполняющих задачи автоматизации процессов и формализации алгоритмов, за счёт применения лексики на родном им языке, что априори повышает усвоение и читаемость кода.
|
15
6
|
* Упрощение освоения навыков алгоритмизации и составления компьютерных программ учащимися путём устранения искусственного препятствия в виде необходимости оперировать лексикой иностранного языка.
|
16
7
|
|
8
|
+
Приложения на Русском Питоне могут использовать все возможности оригинального Python, включая всё богатство подключаемых пакетов и библиотек. Код может быть написан на обоих вариантах языка.
|
9
|
+
|
10
|
+
### Установка
|
11
|
+
|
12
|
+
Транслятор устанавливается как пакет соответствующей командой:
|
13
|
+
|
14
|
+
`pip install rupython`
|
15
|
+
|
16
|
+
Если "pip" выдаёт ошибку "externally-managed-environment" (под некоторыми версиями ОС Linux), то установка производится следущей командой:
|
17
|
+
|
18
|
+
`pip install rupython --break-system-packages`
|
19
|
+
|
17
20
|
Код модулей Русского Питона размещается в файлах с расширением **.крп**. Для интеграции в операционную систему необходимо ассоциировать эти файлы с транслятором. Например, для ОС Windows это выполняется следующими консольными командами:
|
18
21
|
|
19
22
|
```
|
@@ -21,8 +24,6 @@ assoc .крп = "Код на Русском Питоне"
|
|
21
24
|
ftype "Код на Русском Питоне"=py -m rupython "%%1" %%*
|
22
25
|
```
|
23
26
|
|
24
|
-
Приложения на Русском Питоне могут использовать все возможности оригинального Python, включая всё богатство подключаемых пакетов и библиотек. Код может быть написан на обоих вариантах языка.
|
25
|
-
|
26
27
|
Исходный код размещён тут: https://github.com/russkiy/rupython
|
27
28
|
|
28
29
|
### Примеры кода
|
@@ -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'): {
|
@@ -75,7 +51,11 @@ def Добавить_поле(класс, название, значение, ф
|
|
75
51
|
'rjust': 'Дополнить_слева'
|
76
52
|
},
|
77
53
|
'str': {
|
78
|
-
'format': 'Формат'
|
54
|
+
'format': 'Формат',
|
55
|
+
'encode': 'Закодовать'
|
56
|
+
},
|
57
|
+
('bytes', 'bytearray'): {
|
58
|
+
'decode': 'Раскодовать'
|
79
59
|
},
|
80
60
|
('list', 'bytearray'): {
|
81
61
|
'append': 'Добавить',
|
@@ -133,7 +113,7 @@ def Добавить_поле(класс, название, значение, ф
|
|
133
113
|
},
|
134
114
|
'int': {
|
135
115
|
'bit_length': 'Длина_в_битах',
|
136
|
-
'to_bytes': ( 'В_байты', { 'length': 'длина', 'byteorder': 'порядок', 'signed': 'со_знаком' }, { (
|
116
|
+
'to_bytes': ( 'В_байты', { 'length': 'длина', 'byteorder': 'порядок', 'signed': 'со_знаком' }, { (2, 'byteorder'): { 'МлСт': 'little', 'СтМл': 'big' } } ),
|
137
117
|
'from_bytes': ( 'Из_байтов', { 'bytes': 'байты', 'byteorder': 'порядок', 'signed': 'со_знаком' }, { (1, 'byteorder'): { 'МлСт': 'little', 'СтМл': 'big' } } ),
|
138
118
|
'.numerator': 'числитель',
|
139
119
|
'.denominator': 'знаменатель'
|
@@ -182,27 +162,38 @@ for классы, таблица in Встроенные_поля.items():
|
|
182
162
|
замещающая_функция += ' ИА["' + зам_арг[1] + '"] = ' + str(знач_зам) + '[ИА["' + зам_арг[1] + '"]]\n'
|
183
163
|
замещающая_функция += ' return ' + класс + '.' + название + '(*ПА, **ИА)'
|
184
164
|
exec(замещающая_функция)
|
185
|
-
exec("
|
165
|
+
exec("Установить_поле(" + класс + ", '" + замена[0] + "', __" + класс + "_" + название + "__)")
|
186
166
|
exec('del __' + класс + '_' + название + '__')
|
187
167
|
else:
|
188
168
|
if название[0] == '.':
|
189
|
-
eval("
|
169
|
+
eval("Установить_поле(" + класс + ", '" + замена + "', " + класс + название + ")")
|
190
170
|
else:
|
191
|
-
eval("
|
171
|
+
eval("Установить_поле(" + класс + ", '" + замена + "', lambda *ПА, **ИА: " + класс + "." + название + "(*ПА, **ИА))")
|
192
172
|
|
193
173
|
Система.path.insert(0, ОС.path.dirname(__file__) + '/Модули')
|
194
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
|
+
|
195
186
|
Обёртка__Вещ_в_стр = lambda здесь: Вещ_в_стр(здесь).replace('.', ',').replace('inf', 'Бскн')
|
196
187
|
Вещ_в_стр = float.__str__
|
197
|
-
|
188
|
+
Заменить_преобразование_в_строку(float, Обёртка__Вещ_в_стр)
|
198
189
|
|
199
190
|
Обёртка__Логич_в_стр = lambda здесь: Логич_в_стр(здесь).replace('True', 'Да').replace('False', 'Нет')
|
200
191
|
Логич_в_стр = bool.__str__
|
201
|
-
|
192
|
+
Заменить_преобразование_в_строку(bool, Обёртка__Логич_в_стр)
|
202
193
|
|
203
194
|
Обёртка__Пусто_в_стр = lambda здесь: Пусто_в_стр(здесь).replace('None', 'Пусто')
|
204
195
|
Пусто_в_стр = type(None).__str__
|
205
|
-
|
196
|
+
Заменить_преобразование_в_строку(type(None), Обёртка__Пусто_в_стр)
|
206
197
|
|
207
198
|
def Проверить_существование(код, местн, общ):
|
208
199
|
try: eval(код, местн, общ)
|
@@ -8,7 +8,7 @@ import importlib as Импортование
|
|
8
8
|
Служебные_слова = {
|
9
9
|
'Да': 'True',
|
10
10
|
'Нет': 'False',
|
11
|
-
'Пусто': 'None',
|
11
|
+
'Пусто': 'None', # Ничего, Неопр
|
12
12
|
'и': 'and',
|
13
13
|
'или': 'or',
|
14
14
|
'не': 'not',
|
@@ -65,7 +65,7 @@ import importlib as Импортование
|
|
65
65
|
'ВычВыр': ( 'eval', None, False ),
|
66
66
|
'Двоич': ( 'bin', None, False ),
|
67
67
|
'ДелОст': ( 'divmod', None, False ),
|
68
|
-
'Длина': ( 'len', None, False ),
|
68
|
+
'Длина': ( 'len', None, False ), # Размер
|
69
69
|
'Знак_в_код': ( 'ord', None, False ),
|
70
70
|
'Идент': ( 'id', None, False ),
|
71
71
|
'Имеет_поле': ( 'hasattr', None, False ),
|
@@ -99,8 +99,7 @@ import importlib as Импортование
|
|
99
99
|
'Поля': ( 'vars', None, False ),
|
100
100
|
'Представление': ( 'repr', None, False ),
|
101
101
|
'Принять': ( 'input', None, False ),
|
102
|
-
'
|
103
|
-
'Ряд': ( 'range', None, True ),
|
102
|
+
'Ряд': ( 'range', None, True ), # Диапазон, Последов
|
104
103
|
'Свойство': ( 'property', { 'ф_получения': 'fget', 'ф_установки': 'fset', 'ф_удаления': 'fdel', 'документация': 'doc' }, True ),
|
105
104
|
'Следующий': ( 'next', None, False ),
|
106
105
|
'Словарь': ( 'dict', None, True ),
|
@@ -111,7 +110,7 @@ import importlib as Импортование
|
|
111
110
|
'Срез': ( 'slice', None, True ),
|
112
111
|
'Статический_метод': ( 'staticmethod', None, False ),
|
113
112
|
'Степень': ( 'pow', None, False ),
|
114
|
-
'Строка': ( 'str', { 'кодование': 'encoding', 'при_ошибках': 'errors' },
|
113
|
+
'Строка': ( 'str', { 'кодование': 'encoding', 'при_ошибках': 'errors' }, True ),
|
115
114
|
'Сумма': ( 'sum', { 'начало': 'start' }, False ),
|
116
115
|
'Тип': ( 'type', None, True ),
|
117
116
|
'Удалить_поле': ( 'delattr', None, False ),
|
@@ -200,7 +199,7 @@ import importlib as Импортование
|
|
200
199
|
'__ЛСдвиг__': '__lshift__',
|
201
200
|
'__ПСдвиг__': '__rshift__',
|
202
201
|
'__ПобитИ__': '__and__',
|
203
|
-
'__
|
202
|
+
'__ПобитИсклИли__': '__xor__',
|
204
203
|
'__ПобитИли__': '__or__',
|
205
204
|
'__АрифмОтр__': '__neg__',
|
206
205
|
'__ОдПлюс__': '__pos__',
|
@@ -218,7 +217,7 @@ import importlib as Импортование
|
|
218
217
|
'__Прав_ЛСдвиг__': '__rlshift__',
|
219
218
|
'__Прав_ПСдвиг__': '__rrshift__',
|
220
219
|
'__Прав_И__': '__rand__',
|
221
|
-
'__Прав_
|
220
|
+
'__Прав_ИсклИли__': '__rxor__',
|
222
221
|
'__Прав_Или__': '__ror__',
|
223
222
|
'__Присв_Сложение__': '__iadd__',
|
224
223
|
'__Присв_Вычитание__': '__isub__',
|
@@ -231,7 +230,7 @@ import importlib as Импортование
|
|
231
230
|
'__Присв_ЛСдвиг__': '__ilshift__',
|
232
231
|
'__Присв_ПСдвиг__': '__irshift__',
|
233
232
|
'__Присв_И__': '__iand__',
|
234
|
-
'__Присв_
|
233
|
+
'__Присв_ИсклИли__': '__ixor__',
|
235
234
|
'__Присв_Или__': '__ior__',
|
236
235
|
'__Компл__': '__complex__',
|
237
236
|
'__Цел__': '__int__',
|
@@ -439,19 +438,22 @@ def Проверить_соответствие_слов(слова, путь_к
|
|
439
438
|
|
440
439
|
for сл in ('Подключить', 'Если', 'Иначе'):
|
441
440
|
for поз in [i for i, x in enumerate(слова) if x[1] == сл]:
|
442
|
-
if поз > 0 and слова[поз - 1][
|
441
|
+
if поз > 0 and слова[поз - 1][0] not in (4, 5, 6):
|
442
|
+
print(слова[поз])
|
443
|
+
print(слова[поз - 1])
|
444
|
+
print(слова)
|
443
445
|
Вывести_исключение(сл); return False
|
444
446
|
сл_ = сл.lower()
|
445
447
|
for поз in [i for i, x in enumerate(слова) if x[1] == сл_]:
|
446
|
-
if поз == 0 or слова[поз - 1][
|
448
|
+
if поз == 0 or слова[поз - 1][0] in (4, 5, 6):
|
447
449
|
Вывести_исключение(сл_); return False
|
448
450
|
|
449
451
|
for поз in [i for i, x in enumerate(слова) if x[1] == 'Вернуть']:
|
450
|
-
if поз == len(слова) - 1 or слова[поз + 1][
|
452
|
+
if поз == len(слова) - 1 or слова[поз + 1][0] == 4:
|
451
453
|
Вывести_исключение('Вернуть'); return False
|
452
454
|
|
453
455
|
for поз in [i for i, x in enumerate(слова) if x[1] == 'Возврат']:
|
454
|
-
if поз != len(слова) - 1 and слова[поз + 1][
|
456
|
+
if поз != len(слова) - 1 and слова[поз + 1][0] != 4:
|
455
457
|
Вывести_исключение('Возврат'); return False
|
456
458
|
|
457
459
|
return True
|
@@ -1,12 +1,29 @@
|
|
1
|
-
|
1
|
+
Metadata-Version: 2.1
|
2
|
+
Name: rupython
|
3
|
+
Version: 1.1.0
|
4
|
+
Summary: Исполнитель кода Русского Питона
|
5
|
+
Description-Content-Type: text/markdown
|
6
|
+
License-File: LICENSE
|
2
7
|
|
3
|
-
|
8
|
+
Русская версия языка Python, реализованная в виде транслятора кода в код Python.
|
4
9
|
|
5
10
|
Русский Питон почти полностью идентичен оригинальному языку с англоязычной лексической базой, основное отличие заключается в использовании русских названий для именования сущностей в коде. Данный инструмент создан для достижения двух целей:
|
6
11
|
|
7
12
|
* Повышение производительности труда работников, выполняющих задачи автоматизации процессов и формализации алгоритмов, за счёт применения лексики на родном им языке, что априори повышает усвоение и читаемость кода.
|
8
13
|
* Упрощение освоения навыков алгоритмизации и составления компьютерных программ учащимися путём устранения искусственного препятствия в виде необходимости оперировать лексикой иностранного языка.
|
9
14
|
|
15
|
+
Приложения на Русском Питоне могут использовать все возможности оригинального Python, включая всё богатство подключаемых пакетов и библиотек. Код может быть написан на обоих вариантах языка.
|
16
|
+
|
17
|
+
### Установка
|
18
|
+
|
19
|
+
Транслятор устанавливается как пакет соответствующей командой:
|
20
|
+
|
21
|
+
`pip install rupython`
|
22
|
+
|
23
|
+
Если "pip" выдаёт ошибку "externally-managed-environment" (под некоторыми версиями ОС Linux), то установка производится следущей командой:
|
24
|
+
|
25
|
+
`pip install rupython --break-system-packages`
|
26
|
+
|
10
27
|
Код модулей Русского Питона размещается в файлах с расширением **.крп**. Для интеграции в операционную систему необходимо ассоциировать эти файлы с транслятором. Например, для ОС Windows это выполняется следующими консольными командами:
|
11
28
|
|
12
29
|
```
|
@@ -14,8 +31,6 @@ assoc .крп = "Код на Русском Питоне"
|
|
14
31
|
ftype "Код на Русском Питоне"=py -m rupython "%%1" %%*
|
15
32
|
```
|
16
33
|
|
17
|
-
Приложения на Русском Питоне могут использовать все возможности оригинального Python, включая всё богатство подключаемых пакетов и библиотек. Код может быть написан на обоих вариантах языка.
|
18
|
-
|
19
34
|
Исходный код размещён тут: https://github.com/russkiy/rupython
|
20
35
|
|
21
36
|
### Примеры кода
|
@@ -3,7 +3,7 @@ from pathlib import Path as Путь
|
|
3
3
|
|
4
4
|
Установить(
|
5
5
|
name = 'rupython',
|
6
|
-
version = '1.0
|
6
|
+
version = '1.1.0',
|
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
|
File without changes
|
File without changes
|