rupython 1.4.7__tar.gz → 1.4.9__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.4.7 → rupython-1.4.9}/PKG-INFO +6 -1
- {rupython-1.4.7 → rupython-1.4.9}/README.md +5 -0
- {rupython-1.4.7 → rupython-1.4.9}/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 +6 -4
- {rupython-1.4.7 → rupython-1.4.9}/rupython//320/234/320/276/320/264/321/203/320/273/320/270//320/234/320/260/321/202/320/265/320/274.py +42 -20
- rupython-1.4.9/rupython//320/234/320/276/320/264/321/203/320/273/320/270//320/241/320/270/321/201/321/202/320/265/320/274/320/260.py +22 -0
- rupython-1.4.9/rupython//320/234/320/276/320/264/321/203/320/273/320/270//320/244/320/260/320/271/320/273/321/213.py +127 -0
- {rupython-1.4.7 → rupython-1.4.9}/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 +5 -5
- {rupython-1.4.7 → rupython-1.4.9}/rupython.egg-info/PKG-INFO +6 -1
- {rupython-1.4.7 → rupython-1.4.9}/rupython.egg-info/SOURCES.txt +1 -0
- {rupython-1.4.7 → rupython-1.4.9}/setup.py +1 -1
- rupython-1.4.7/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 -123
- {rupython-1.4.7 → rupython-1.4.9}/LICENSE +0 -0
- {rupython-1.4.7 → rupython-1.4.9}/rupython/__main__.py +0 -0
- {rupython-1.4.7 → rupython-1.4.9}/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
- {rupython-1.4.7 → rupython-1.4.9}/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
- {rupython-1.4.7 → rupython-1.4.9}/rupython//320/234/320/276/320/264/321/203/320/273/320/270//320/221/320/224.py" +0 -0
- {rupython-1.4.7 → rupython-1.4.9}/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
- {rupython-1.4.7 → rupython-1.4.9}/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
- {rupython-1.4.7 → rupython-1.4.9}/rupython//320/234/320/276/320/264/321/203/320/273/320/270//320/232/321/203/321/207/320/260.py" +0 -0
- {rupython-1.4.7 → rupython-1.4.9}/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
- {rupython-1.4.7 → rupython-1.4.9}/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
- {rupython-1.4.7 → rupython-1.4.9}/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.4.7 → rupython-1.4.9}/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.4.7 → rupython-1.4.9}/rupython.egg-info/dependency_links.txt +0 -0
- {rupython-1.4.7 → rupython-1.4.9}/rupython.egg-info/top_level.txt +0 -0
- {rupython-1.4.7 → rupython-1.4.9}/setup.cfg +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: rupython
|
|
3
|
-
Version: 1.4.
|
|
3
|
+
Version: 1.4.9
|
|
4
4
|
Summary: Исполнитель кода Русского Питона
|
|
5
5
|
Home-page: https://gitflic.ru/project/russky/rupython
|
|
6
6
|
Author: Сообщество русских программистов
|
|
@@ -654,6 +654,10 @@ x = 0
|
|
|
654
654
|
Методы:
|
|
655
655
|
|
|
656
656
|
- `Целое()` — проверяет, является ли число равно целому.
|
|
657
|
+
|
|
658
|
+
#### `Вещ`, `Байты`, `БайтМассив`
|
|
659
|
+
Методы:
|
|
660
|
+
|
|
657
661
|
- `В_шестн()` — возвращает шестнадцатеричное строковое представление.
|
|
658
662
|
- `Из_шестн(строка)` — создаёт число из шестнадцатеричной строки.
|
|
659
663
|
|
|
@@ -684,5 +688,6 @@ x = 0
|
|
|
684
688
|
- `Очередь`
|
|
685
689
|
- `Потоки`
|
|
686
690
|
- `РегВыр`
|
|
691
|
+
- `Система`
|
|
687
692
|
- `Случ`
|
|
688
693
|
- `Файлы`
|
|
@@ -628,6 +628,10 @@ x = 0
|
|
|
628
628
|
Методы:
|
|
629
629
|
|
|
630
630
|
- `Целое()` — проверяет, является ли число равно целому.
|
|
631
|
+
|
|
632
|
+
#### `Вещ`, `Байты`, `БайтМассив`
|
|
633
|
+
Методы:
|
|
634
|
+
|
|
631
635
|
- `В_шестн()` — возвращает шестнадцатеричное строковое представление.
|
|
632
636
|
- `Из_шестн(строка)` — создаёт число из шестнадцатеричной строки.
|
|
633
637
|
|
|
@@ -658,5 +662,6 @@ x = 0
|
|
|
658
662
|
- `Очередь`
|
|
659
663
|
- `Потоки`
|
|
660
664
|
- `РегВыр`
|
|
665
|
+
- `Система`
|
|
661
666
|
- `Случ`
|
|
662
667
|
- `Файлы`
|
|
@@ -34,7 +34,7 @@ def Установить_поле(класс, атрибут, значение):
|
|
|
34
34
|
'lower': 'В_строчные',
|
|
35
35
|
'startswith': 'Начинается',
|
|
36
36
|
'endswith': 'Кончается',
|
|
37
|
-
'join': 'Сцепить',
|
|
37
|
+
'join': 'Сцепить', # Присоединить
|
|
38
38
|
'capitalize': 'Начать_с_заглавной',
|
|
39
39
|
'center': 'Отцентровать',
|
|
40
40
|
'count': 'Число_вхождений',
|
|
@@ -62,7 +62,7 @@ def Установить_поле(класс, атрибут, значение):
|
|
|
62
62
|
'clear': 'Очистить',
|
|
63
63
|
'copy': 'Копия',
|
|
64
64
|
'count': 'Число_вхождений',
|
|
65
|
-
'extend': 'Дополнить',
|
|
65
|
+
'extend': 'Дополнить', # Присоединить
|
|
66
66
|
'index': 'Положение',
|
|
67
67
|
'insert': 'Вставить',
|
|
68
68
|
'pop': 'Вытащить',
|
|
@@ -119,7 +119,9 @@ def Установить_поле(класс, атрибут, значение):
|
|
|
119
119
|
'.denominator': 'знаменатель'
|
|
120
120
|
},
|
|
121
121
|
'float': {
|
|
122
|
-
'is_integer': 'Целое'
|
|
122
|
+
'is_integer': 'Целое'
|
|
123
|
+
},
|
|
124
|
+
('float', 'bytes', 'bytearray'): {
|
|
123
125
|
'hex': 'В_шестн',
|
|
124
126
|
'fromhex': 'Из_шестн'
|
|
125
127
|
},
|
|
@@ -137,7 +139,7 @@ def Установить_поле(класс, атрибут, значение):
|
|
|
137
139
|
'write': 'Писать',
|
|
138
140
|
'tell': 'Позиция',
|
|
139
141
|
'seek': 'Задать_позицию',
|
|
140
|
-
'truncate': 'Усечь',
|
|
142
|
+
'truncate': 'Усечь', # Обрезать
|
|
141
143
|
'detach': 'Отделить',
|
|
142
144
|
'close': 'Закрыть',
|
|
143
145
|
'.closed': 'закрыт'
|
|
@@ -4,7 +4,7 @@ import math
|
|
|
4
4
|
e = math.e
|
|
5
5
|
Тау = math.tau
|
|
6
6
|
Бесконечность = math.inf
|
|
7
|
-
|
|
7
|
+
Нечисло = math.nan
|
|
8
8
|
|
|
9
9
|
def Сочетаний(n, k): return math.comb(n, k)
|
|
10
10
|
def Перестановок(n, k): return math.perm(n, k)
|
|
@@ -12,8 +12,8 @@ def Факториал(n): return math.factorial(n)
|
|
|
12
12
|
def НОД(*целые): return math.gcd(*целые)
|
|
13
13
|
def НОК(*целые): return math.lcm(*целые)
|
|
14
14
|
def ЦелКвКорень(n): return math.isqrt(n)
|
|
15
|
-
def БольшЦел(x): return math.ceil(x)
|
|
16
|
-
def МеньшЦел(x): return math.floor(x)
|
|
15
|
+
def БольшЦел(x): return math.ceil(x) # ЦелВверх, ОкруглВверх
|
|
16
|
+
def МеньшЦел(x): return math.floor(x) # ЦелВниз, ОкруглВниз
|
|
17
17
|
def Модуль(x): return math.fabs(x)
|
|
18
18
|
def УмножСлож(x, y, z): return math.fma(x, y, z)
|
|
19
19
|
def Остаток(x, y): return math.fmod(x, y)
|
|
@@ -23,17 +23,18 @@ def ЦелЧасть(x): return math.trunc(x)
|
|
|
23
23
|
def Перенести_знак(x, y): return math.copysign(x, y)
|
|
24
24
|
def ВЭксп(x): return math.frexp(x)
|
|
25
25
|
def ИзЭксп(x, i): return math.ldexp(x, i)
|
|
26
|
-
def Близки(a, b,
|
|
26
|
+
def Близки(a, b, отнДопуск = 1e-09, абсДопуск = 0.0):
|
|
27
|
+
return math.isclose(a, b, rel_tol = отнДопуск, abs_tol = абсДопуск)
|
|
27
28
|
def Конечное(x): return math.isfinite(x)
|
|
28
29
|
def Бесконечное(x): return math.isinf(x)
|
|
29
|
-
def
|
|
30
|
-
def СледПосле(x, y, шаг = 1): return math.nextafter(x, y,
|
|
31
|
-
def
|
|
30
|
+
def НеЧислЗнач(x): return math.isnan(x)
|
|
31
|
+
def СледПосле(x, y, шаг = 1): return math.nextafter(x, y, шаг)
|
|
32
|
+
def ВесМладшБита(x): return math.ulp(x)
|
|
32
33
|
def КубКорень(x): return math.cbrt(x)
|
|
33
34
|
def exp(x): return math.exp(x)
|
|
34
35
|
def exp2(x): return math.exp2(x)
|
|
35
36
|
def expm1(x): return math.expm1(x)
|
|
36
|
-
def log(x, основание = e): return math.log(x,
|
|
37
|
+
def log(x, основание = e): return math.log(x, основание)
|
|
37
38
|
def ln(x): return math.log(x)
|
|
38
39
|
def log1p(x): return math.log1p(x)
|
|
39
40
|
def log2(x): return math.log2(x)
|
|
@@ -43,35 +44,56 @@ def КвКорень(x): return math.sqrt(x)
|
|
|
43
44
|
def Расстояние(p, q): return math.dist(p, q)
|
|
44
45
|
def Сумма(перечислимое): return math.fsum(перечислимое)
|
|
45
46
|
def Гипотенуза(*координаты): return math.hypot(*координаты)
|
|
46
|
-
def Произведение(перечислимое, нач_знач = 1):
|
|
47
|
+
def Произведение(перечислимое, нач_знач = 1):
|
|
48
|
+
return math.prod(перечислимое, start = нач_знач)
|
|
47
49
|
def СуммаПроизв(p, q): return math.sumprod(p, q)
|
|
48
50
|
def Градусы(x): return math.degrees(x)
|
|
49
51
|
def Радианы(x): return math.radians(x)
|
|
50
52
|
def sin(x): return math.sin(x)
|
|
51
53
|
def cos(x): return math.cos(x)
|
|
52
54
|
def tg(x): return math.tan(x)
|
|
53
|
-
def ctg(x):
|
|
54
|
-
|
|
55
|
-
|
|
55
|
+
def ctg(x):
|
|
56
|
+
try: return 1 / math.tan(x)
|
|
57
|
+
except ZeroDivisionError: return math.copysign(Бесконечность, x)
|
|
58
|
+
def sec(x):
|
|
59
|
+
try: return 1 / math.cos(x)
|
|
60
|
+
except ZeroDivisionError: return math.copysign(Бесконечность, x)
|
|
61
|
+
def cosec(x):
|
|
62
|
+
try: return 1 / math.sin(x)
|
|
63
|
+
except ZeroDivisionError: return math.copysign(Бесконечность, x)
|
|
56
64
|
def arcsin(x): return math.asin(x)
|
|
57
65
|
def arccos(x): return math.acos(x)
|
|
58
66
|
def arctg(x): return math.atan(x)
|
|
59
|
-
def arcctg(x): return math.
|
|
60
|
-
def arcsec(x):
|
|
61
|
-
|
|
67
|
+
def arcctg(x): return math.pi / 2 - math.atan(x)
|
|
68
|
+
def arcsec(x):
|
|
69
|
+
try: return math.acos(1 / x)
|
|
70
|
+
except ZeroDivisionError: return Нечисло
|
|
71
|
+
def arccosec(x):
|
|
72
|
+
try: return math.asin(1 / x)
|
|
73
|
+
except ZeroDivisionError: return Нечисло
|
|
62
74
|
def Угол_по_точке(x, y): return math.atan2(y, x)
|
|
63
75
|
def sh(x): return math.sinh(x)
|
|
64
76
|
def ch(x): return math.cosh(x)
|
|
65
77
|
def th(x): return math.tanh(x)
|
|
66
|
-
def cth(x):
|
|
78
|
+
def cth(x):
|
|
79
|
+
try: return 1 / math.tanh(x)
|
|
80
|
+
except ZeroDivisionError: return math.copysign(Бесконечность, x)
|
|
67
81
|
def sch(x): return 1 / math.cosh(x)
|
|
68
|
-
def csch(x):
|
|
82
|
+
def csch(x):
|
|
83
|
+
try: return 1 / math.sinh(x)
|
|
84
|
+
except ZeroDivisionError: return math.copysign(Бесконечность, x)
|
|
69
85
|
def arsh(x): return math.asinh(x)
|
|
70
86
|
def arch(x): return math.acosh(x)
|
|
71
87
|
def arth(x): return math.atanh(x)
|
|
72
|
-
def arcth(x):
|
|
73
|
-
|
|
74
|
-
|
|
88
|
+
def arcth(x):
|
|
89
|
+
try: return math.atanh(1 / x)
|
|
90
|
+
except ZeroDivisionError: return Нечисло
|
|
91
|
+
def arsch(x):
|
|
92
|
+
try: return math.acosh(1 / x)
|
|
93
|
+
except ZeroDivisionError: return Бесконечность
|
|
94
|
+
def arcsch(x):
|
|
95
|
+
try: return math.asinh(1 / x)
|
|
96
|
+
except ZeroDivisionError: return math.copysign(Бесконечность, x)
|
|
75
97
|
def ФунОшибок(x): return math.erf(x)
|
|
76
98
|
def ДопФунОшибок(x): return math.erfc(x)
|
|
77
99
|
def Гамма(x): return math.gamma(x)
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import os
|
|
2
|
+
import sys
|
|
3
|
+
|
|
4
|
+
Аргументы_запуска = sys.argv
|
|
5
|
+
Пути_модулей = sys.path
|
|
6
|
+
Платформа = sys.platform
|
|
7
|
+
Версия_языка = sys.version
|
|
8
|
+
|
|
9
|
+
Поток_ввода = sys.stdin
|
|
10
|
+
Поток_вывода = sys.stdout
|
|
11
|
+
Поток_ошибок = sys.stderr
|
|
12
|
+
|
|
13
|
+
Название_ОС = os.name
|
|
14
|
+
Окружение = os.environ
|
|
15
|
+
|
|
16
|
+
def Завершить_работу(код_ошибки = 0): sys.exit(код_ошибки)
|
|
17
|
+
def Размер_в_памяти(объект): return sys.getsizeof(объект)
|
|
18
|
+
def Выполнить_команду(команда): return os.system(команда)
|
|
19
|
+
def Случайные_байты(длина): return os.urandom(длина)
|
|
20
|
+
|
|
21
|
+
if Название_ОС == 'nt':
|
|
22
|
+
def Запустить_файл(путь): os.startfile(путь)
|
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
import os
|
|
2
|
+
import shutil
|
|
3
|
+
import pathlib
|
|
4
|
+
|
|
5
|
+
Словарь_параметров_файлов = {
|
|
6
|
+
'путь': 'path',
|
|
7
|
+
'старый_путь': 'src',
|
|
8
|
+
'новый_путь': 'dst',
|
|
9
|
+
'режим': 'mode',
|
|
10
|
+
'создать_родительские': 'parents',
|
|
11
|
+
'существование_допустимо': 'exist_ok',
|
|
12
|
+
'игнорировать_ошибки': 'ignore_errors',
|
|
13
|
+
'директория': 'dir_fd',
|
|
14
|
+
'следовать_по_ярлыкам': 'follow_symlinks'
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
def Склеить_пути(*части_пути): return os.path.join(*части_пути)
|
|
18
|
+
def Разделить_путь(путь): return os.path.split(путь)
|
|
19
|
+
def Нормализовать_путь(путь): return os.path.normpath(путь)
|
|
20
|
+
def Абсолютный_путь(путь): return os.path.abspath(путь)
|
|
21
|
+
def Основное_название(путь): return os.path.basename(путь)
|
|
22
|
+
def Название_папки(путь): return os.path.dirname(путь)
|
|
23
|
+
def Разбить_расширение(путь): return os.path.splitext(путь)
|
|
24
|
+
def Существует(путь): return os.path.exists(путь)
|
|
25
|
+
def Это_файл(путь): return os.path.isfile(путь)
|
|
26
|
+
def Это_папка(путь): return os.path.isdir(путь)
|
|
27
|
+
def Размер_файла(путь): return os.path.getsize(путь)
|
|
28
|
+
def Время_создания(путь): return os.path.getctime(путь)
|
|
29
|
+
def Время_изменения(путь): return os.path.getmtime(путь)
|
|
30
|
+
|
|
31
|
+
def Текущая_папка(): return os.getcwd()
|
|
32
|
+
def Создать_папку(путь): os.mkdir(путь)
|
|
33
|
+
def Создать_вложенные_папки(путь, режим = 0o777, создать_родительские = False, существование_допустимо = False):
|
|
34
|
+
os.makedirs(путь, mode = режим, exist_ok = существование_допустимо)
|
|
35
|
+
def Сменить_папку(путь): os.chdir(путь)
|
|
36
|
+
def Удалить_файл(путь): os.remove(путь)
|
|
37
|
+
def Удалить_папку(путь): os.rmdir(путь)
|
|
38
|
+
def Удалить_вложенные_папки(путь): os.removedirs(путь)
|
|
39
|
+
def Переименовать(старый_путь, новый_путь): os.rename(старый_путь, новый_путь)
|
|
40
|
+
def Заменить_файл(старое_имя, новое_имя): os.replace(старое_имя, новое_имя)
|
|
41
|
+
def Содержимое_папки(путь = '.'): return os.listdir(путь)
|
|
42
|
+
def Обход_дерева(путь): return os.walk(путь)
|
|
43
|
+
def Обрезать_файл(путь, размер): os.truncate(path, length)
|
|
44
|
+
|
|
45
|
+
def Копировать_файл(путь_источника, путь_назначения):
|
|
46
|
+
shutil.copy2(путь_источника, путь_назначения)
|
|
47
|
+
|
|
48
|
+
def Копировать_папку(путь_источника, путь_назначения, игнорировать = None):
|
|
49
|
+
shutil.copytree(путь_источника, путь_назначения, ignore = игнорировать)
|
|
50
|
+
|
|
51
|
+
def Переместить(путь_источника, путь_назначения):
|
|
52
|
+
shutil.move(путь_источника, путь_назначения)
|
|
53
|
+
|
|
54
|
+
def Удалить_папку_с_содержимым(путь, игнорировать_ошибки = False):
|
|
55
|
+
shutil.rmtree(путь, ignore_errors = игнорировать_ошибки)
|
|
56
|
+
|
|
57
|
+
class Путь:
|
|
58
|
+
def __init__(экземпляр, *части_пути):
|
|
59
|
+
экземпляр._путь = pathlib.Path(*части_пути)
|
|
60
|
+
|
|
61
|
+
@property
|
|
62
|
+
def название(экземпляр): return экземпляр._путь.name
|
|
63
|
+
|
|
64
|
+
@property
|
|
65
|
+
def расширение(экземпляр): return экземпляр._путь.suffix
|
|
66
|
+
|
|
67
|
+
@property
|
|
68
|
+
def родитель(экземпляр): return Путь(экземпляр._путь.parent)
|
|
69
|
+
|
|
70
|
+
@property
|
|
71
|
+
def существует(экземпляр): return экземпляр._путь.exists()
|
|
72
|
+
|
|
73
|
+
@property
|
|
74
|
+
def это_файл(экземпляр): return экземпляр._путь.is_file()
|
|
75
|
+
|
|
76
|
+
@property
|
|
77
|
+
def это_каталог(экземпляр): return экземпляр._путь.is_dir()
|
|
78
|
+
|
|
79
|
+
def Создать_папку(экземпляр, создать_родительские = False, существование_допустимо = False):
|
|
80
|
+
экземпляр._путь.mkdir(parents = создать_родительские, exist_ok = существование_допустимо)
|
|
81
|
+
|
|
82
|
+
def Удалить(экземпляр):
|
|
83
|
+
if экземпляр.это_файл: экземпляр._путь.unlink()
|
|
84
|
+
elif экземпляр.это_каталог: экземпляр._путь.rmdir()
|
|
85
|
+
else:
|
|
86
|
+
raise FileNotFoundError(f"Путь не существует или не является файлом/пустой папкой: {экземпляр._путь}")
|
|
87
|
+
|
|
88
|
+
def Удалить_рекурсивно(экземпляр, игнорировать_ошибки = False):
|
|
89
|
+
if экземпляр.это_каталог:
|
|
90
|
+
Удалить_дерево(str(экземпляр._путь), игнорировать_ошибки)
|
|
91
|
+
else:
|
|
92
|
+
raise NotADirectoryError(f"Путь не является каталогом: {экземпляр._путь}")
|
|
93
|
+
|
|
94
|
+
def Переименовать_в(экземпляр, новый_путь):
|
|
95
|
+
экземпляр._путь.rename(новый_путь)
|
|
96
|
+
экземпляр._путь = pathlib.Path(новый_путь)
|
|
97
|
+
|
|
98
|
+
def Копировать_в(экземпляр, путь_назначения):
|
|
99
|
+
if экземпляр.это_файл:
|
|
100
|
+
Копировать_файл(str(экземпляр._путь), str(путь_назначения))
|
|
101
|
+
elif экземпляр.это_каталог:
|
|
102
|
+
Копировать_каталог(str(экземпляр._путь), str(путь_назначения))
|
|
103
|
+
else:
|
|
104
|
+
raise FileNotFoundError(f"Невозможно скопировать: путь не является файлом или каталогом: {экземпляр._путь}")
|
|
105
|
+
|
|
106
|
+
def Переместить_в(экземпляр, путь_назначения):
|
|
107
|
+
Переместить(str(экземпляр._путь), str(путь_назначения))
|
|
108
|
+
экземпляр._путь = pathlib.Path(путь_назначения)
|
|
109
|
+
|
|
110
|
+
def Содержимое(экземпляр):
|
|
111
|
+
if not экземпляр.это_каталог:
|
|
112
|
+
raise NotADirectoryError(f"Путь не является каталогом: {экземпляр._путь}")
|
|
113
|
+
return [Путь(p) for p in экземпляр._путь.iterdir()]
|
|
114
|
+
|
|
115
|
+
def __truediv__(экземпляр, другая_часть):
|
|
116
|
+
return Путь(экземпляр._путь / другая_часть)
|
|
117
|
+
|
|
118
|
+
def __str__(экземпляр):
|
|
119
|
+
return str(экземпляр._путь)
|
|
120
|
+
|
|
121
|
+
def __repr__(экземпляр):
|
|
122
|
+
return f"Путь('{экземпляр._путь}')"
|
|
123
|
+
|
|
124
|
+
def __eq__(экземпляр, другой):
|
|
125
|
+
if isinstance(другой, Путь):
|
|
126
|
+
return экземпляр._путь == другой._путь
|
|
127
|
+
return NotImplemented
|
|
@@ -10,12 +10,12 @@ from io import StringIO as Текстовый_ВВ
|
|
|
10
10
|
Служебные_слова = {
|
|
11
11
|
'Да': 'True',
|
|
12
12
|
'Нет': 'False',
|
|
13
|
-
'Пусто': 'None', # Ничего,
|
|
13
|
+
'Пусто': 'None', # Ничего, Неопр, Ничто
|
|
14
14
|
'и': 'and',
|
|
15
15
|
'или': 'or',
|
|
16
16
|
'не': 'not',
|
|
17
17
|
'это': 'is',
|
|
18
|
-
'Функция': 'def',
|
|
18
|
+
'Функция': 'def', # Задача
|
|
19
19
|
'функция': 'def',
|
|
20
20
|
'Класс': 'class',
|
|
21
21
|
'Общее': 'global', # Глобальное
|
|
@@ -27,7 +27,7 @@ from io import StringIO as Текстовый_ВВ
|
|
|
27
27
|
'Возврат': 'return',
|
|
28
28
|
'Вернуть': 'return',
|
|
29
29
|
'Пропустить': 'pass',
|
|
30
|
-
'Бросить': 'raise',
|
|
30
|
+
'Бросить': 'raise', # Поднять
|
|
31
31
|
'Продолжить': 'continue',
|
|
32
32
|
'в': 'in',
|
|
33
33
|
'Если': 'if',
|
|
@@ -261,11 +261,11 @@ from io import StringIO as Текстовый_ВВ
|
|
|
261
261
|
}
|
|
262
262
|
|
|
263
263
|
Исключения = {
|
|
264
|
-
'БазовоеИсключение': 'BaseException',
|
|
264
|
+
'БазовоеИсключение': 'BaseException', # ОсновноеИсключение
|
|
265
265
|
'СистемнаяОстановка': 'SystemExit',
|
|
266
266
|
'ПрерываниеКлавиатурой': 'KeyboardInterrupt',
|
|
267
267
|
'ОстановкаГенератора': 'GeneratorExit',
|
|
268
|
-
'ОбщееИсключение': 'Exception',
|
|
268
|
+
'ОбщееИсключение': 'Exception', # Исключение
|
|
269
269
|
'ОстановкаИтерации': 'StopIteration',
|
|
270
270
|
'АрифметическаяОшибка': 'ArithmeticError',
|
|
271
271
|
'ОшибкаПлавающейЗапятой': 'FloatingPointError',
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: rupython
|
|
3
|
-
Version: 1.4.
|
|
3
|
+
Version: 1.4.9
|
|
4
4
|
Summary: Исполнитель кода Русского Питона
|
|
5
5
|
Home-page: https://gitflic.ru/project/russky/rupython
|
|
6
6
|
Author: Сообщество русских программистов
|
|
@@ -654,6 +654,10 @@ x = 0
|
|
|
654
654
|
Методы:
|
|
655
655
|
|
|
656
656
|
- `Целое()` — проверяет, является ли число равно целому.
|
|
657
|
+
|
|
658
|
+
#### `Вещ`, `Байты`, `БайтМассив`
|
|
659
|
+
Методы:
|
|
660
|
+
|
|
657
661
|
- `В_шестн()` — возвращает шестнадцатеричное строковое представление.
|
|
658
662
|
- `Из_шестн(строка)` — создаёт число из шестнадцатеричной строки.
|
|
659
663
|
|
|
@@ -684,5 +688,6 @@ x = 0
|
|
|
684
688
|
- `Очередь`
|
|
685
689
|
- `Потоки`
|
|
686
690
|
- `РегВыр`
|
|
691
|
+
- `Система`
|
|
687
692
|
- `Случ`
|
|
688
693
|
- `Файлы`
|
|
@@ -3,7 +3,7 @@ from pathlib import Path as Путь
|
|
|
3
3
|
|
|
4
4
|
Установить(
|
|
5
5
|
name = 'rupython',
|
|
6
|
-
version = '1.4.
|
|
6
|
+
version = '1.4.9',
|
|
7
7
|
description = "Исполнитель кода Русского Питона",
|
|
8
8
|
packages = [ 'rupython', 'rupython.Модули' ],
|
|
9
9
|
long_description = (Путь(__file__).parent / 'README.md').read_text('UTF-8'),
|
|
@@ -1,123 +0,0 @@
|
|
|
1
|
-
import os
|
|
2
|
-
import shutil
|
|
3
|
-
import pathlib
|
|
4
|
-
|
|
5
|
-
Путь_Строка = str
|
|
6
|
-
Путь_Объект = pathlib.Path
|
|
7
|
-
|
|
8
|
-
Словарь_параметров_файлов = {
|
|
9
|
-
'путь': 'path',
|
|
10
|
-
'старый_путь': 'src',
|
|
11
|
-
'новый_путь': 'dst',
|
|
12
|
-
'режим': 'mode',
|
|
13
|
-
'создать_родительские': 'parents',
|
|
14
|
-
'существование_допустимо': 'exist_ok',
|
|
15
|
-
'игнорировать_ошибки': 'ignore_errors',
|
|
16
|
-
'директория': 'dir_fd',
|
|
17
|
-
'следовать_символическим_ссылкам': 'follow_symlinks'
|
|
18
|
-
}
|
|
19
|
-
|
|
20
|
-
def Объединить_пути(*части_пути): return os.path.join(*части_пути)
|
|
21
|
-
def Нормализовать_путь(путь): return os.path.normpath(путь)
|
|
22
|
-
def Абсолютный_путь(путь): return os.path.abspath(путь)
|
|
23
|
-
def Базовое_название(путь): return os.path.basename(путь)
|
|
24
|
-
def Название_каталога(путь): return os.path.dirname(путь)
|
|
25
|
-
def Разбить_расширение(путь): return os.path.splitext(путь)
|
|
26
|
-
def Существует(путь): return os.path.exists(путь)
|
|
27
|
-
def Это_файл(путь): return os.path.isfile(путь)
|
|
28
|
-
def Это_каталог(путь): return os.path.isdir(путь)
|
|
29
|
-
def Размер_файла(путь): return os.path.getsize(путь)
|
|
30
|
-
|
|
31
|
-
def Создать_каталог(путь, режим=0o777, создать_родительские=False, существование_допустимо=False):
|
|
32
|
-
os.makedirs(путь, mode=режим, exist_ok=существование_допустимок)
|
|
33
|
-
|
|
34
|
-
def Удалить_файл(путь): os.remove(путь)
|
|
35
|
-
def Удалить_каталог(путь): os.rmdir(путь)
|
|
36
|
-
def Переименовать(старый_путь, новый_путь): os.rename(старый_путь, новый_путь)
|
|
37
|
-
def Перечислить_содержимое(путь='.'): return os.listdir(путь)
|
|
38
|
-
def Текущий_каталог(): return os.getcwd()
|
|
39
|
-
def Изменить_текущий_каталог(путь): os.chdir(путь)
|
|
40
|
-
|
|
41
|
-
def Копировать_файл(путь_источника, путь_назначения):
|
|
42
|
-
shutil.copy2(путь_источника, путь_назначения)
|
|
43
|
-
|
|
44
|
-
def Копировать_каталог(путь_источника, путь_назначения, игнорировать=None):
|
|
45
|
-
shutil.copytree(путь_источника, путь_назначения, ignore=игнорировать)
|
|
46
|
-
|
|
47
|
-
def Переместить(путь_источника, путь_назначения):
|
|
48
|
-
shutil.move(путь_источника, путь_назначения)
|
|
49
|
-
|
|
50
|
-
def Удалить_дерево(путь, игнорировать_ошибки=False):
|
|
51
|
-
shutil.rmtree(путь, ignore_errors=игнорировать_ошибки)
|
|
52
|
-
|
|
53
|
-
class Путь:
|
|
54
|
-
def __init__(экземпляр, *части_пути):
|
|
55
|
-
экземпляр._путь = pathlib.Path(*части_пути)
|
|
56
|
-
|
|
57
|
-
@property
|
|
58
|
-
def название(экземпляр): return экземпляр._путь.name
|
|
59
|
-
|
|
60
|
-
@property
|
|
61
|
-
def расширение(экземпляр): return экземпляр._путь.suffix
|
|
62
|
-
|
|
63
|
-
@property
|
|
64
|
-
def родитель(экземпляр): return Путь(экземпляр._путь.parent)
|
|
65
|
-
|
|
66
|
-
@property
|
|
67
|
-
def существует(экземпляр): return экземпляр._путь.exists()
|
|
68
|
-
|
|
69
|
-
@property
|
|
70
|
-
def это_файл(экземпляр): return экземпляр._путь.is_file()
|
|
71
|
-
|
|
72
|
-
@property
|
|
73
|
-
def это_каталог(экземпляр): return экземпляр._путь.is_dir()
|
|
74
|
-
|
|
75
|
-
def Создать_каталоги(экземпляр, создать_родительские=False, существование_допустимо=False):
|
|
76
|
-
экземпляр._путь.mkdir(parents=создать_родительские, exist_ok=существование_допустимо)
|
|
77
|
-
|
|
78
|
-
def Удалить(экземпляр):
|
|
79
|
-
if экземпляр.это_файл: экземпляр._путь.unlink()
|
|
80
|
-
elif экземпляр.это_каталог: экземпляр._путь.rmdir()
|
|
81
|
-
else:
|
|
82
|
-
raise FileNotFoundError(f"Путь не существует или не является файлом/пустым каталогом: {экземпляр._путь}")
|
|
83
|
-
|
|
84
|
-
def Удалить_рекурсивно(экземпляр, игнорировать_ошибки=False):
|
|
85
|
-
if экземпляр.это_каталог:
|
|
86
|
-
Удалить_дерево(str(экземпляр._путь), игнорировать_ошибки)
|
|
87
|
-
else:
|
|
88
|
-
raise NotADirectoryError(f"Путь не является каталогом: {экземпляр._путь}")
|
|
89
|
-
|
|
90
|
-
def Переименовать_в(экземпляр, новый_путь):
|
|
91
|
-
экземпляр._путь.rename(новый_путь)
|
|
92
|
-
экземпляр._путь = pathlib.Path(новый_путь)
|
|
93
|
-
|
|
94
|
-
def Копировать_в(экземпляр, путь_назначения):
|
|
95
|
-
if экземпляр.это_файл:
|
|
96
|
-
Копировать_файл(str(экземпляр._путь), str(путь_назначения))
|
|
97
|
-
elif экземпляр.это_каталог:
|
|
98
|
-
Копировать_каталог(str(экземпляр._путь), str(путь_назначения))
|
|
99
|
-
else:
|
|
100
|
-
raise FileNotFoundError(f"Невозможно скопировать: путь не является файлом или каталогом: {экземпляр._путь}")
|
|
101
|
-
|
|
102
|
-
def Переместить_в(экземпляр, путь_назначения):
|
|
103
|
-
Переместить(str(экземпляр._путь), str(путь_назначения))
|
|
104
|
-
экземпляр._путь = pathlib.Path(путь_назначения)
|
|
105
|
-
|
|
106
|
-
def Содержимое(экземпляр):
|
|
107
|
-
if not экземпляр.это_каталог:
|
|
108
|
-
raise NotADirectoryError(f"Путь не является каталогом: {экземпляр._путь}")
|
|
109
|
-
return [Путь(p) for p in экземпляр._путь.iterdir()]
|
|
110
|
-
|
|
111
|
-
def __truediv__(экземпляр, другая_часть):
|
|
112
|
-
return Путь(экземпляр._путь / другая_часть)
|
|
113
|
-
|
|
114
|
-
def __str__(экземпляр):
|
|
115
|
-
return str(экземпляр._путь)
|
|
116
|
-
|
|
117
|
-
def __repr__(экземпляр):
|
|
118
|
-
return f"Путь('{экземпляр._путь}')"
|
|
119
|
-
|
|
120
|
-
def __eq__(экземпляр, другой):
|
|
121
|
-
if isinstance(другой, Путь):
|
|
122
|
-
return экземпляр._путь == другой._путь
|
|
123
|
-
return NotImplemented
|
|
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
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|