rupython 1.4.8__tar.gz → 1.4.10__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.
Files changed (26) hide show
  1. {rupython-1.4.8 → rupython-1.4.10}/PKG-INFO +3 -2
  2. {rupython-1.4.8 → rupython-1.4.10}/README.md +2 -1
  3. {rupython-1.4.8 → rupython-1.4.10}/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 +7 -6
  4. {rupython-1.4.8 → rupython-1.4.10}/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
  5. rupython-1.4.10/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
  6. rupython-1.4.10/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
  7. {rupython-1.4.8 → rupython-1.4.10}/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 +6 -6
  8. {rupython-1.4.8 → rupython-1.4.10}/rupython.egg-info/PKG-INFO +3 -2
  9. {rupython-1.4.8 → rupython-1.4.10}/rupython.egg-info/SOURCES.txt +1 -0
  10. {rupython-1.4.8 → rupython-1.4.10}/setup.py +1 -1
  11. rupython-1.4.8/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
  12. {rupython-1.4.8 → rupython-1.4.10}/LICENSE +0 -0
  13. {rupython-1.4.8 → rupython-1.4.10}/rupython/__main__.py +0 -0
  14. {rupython-1.4.8 → rupython-1.4.10}/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
  15. {rupython-1.4.8 → rupython-1.4.10}/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
  16. {rupython-1.4.8 → rupython-1.4.10}/rupython//320/234/320/276/320/264/321/203/320/273/320/270//320/221/320/224.py" +0 -0
  17. {rupython-1.4.8 → rupython-1.4.10}/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
  18. {rupython-1.4.8 → rupython-1.4.10}/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
  19. {rupython-1.4.8 → rupython-1.4.10}/rupython//320/234/320/276/320/264/321/203/320/273/320/270//320/232/321/203/321/207/320/260.py" +0 -0
  20. {rupython-1.4.8 → rupython-1.4.10}/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
  21. {rupython-1.4.8 → rupython-1.4.10}/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
  22. {rupython-1.4.8 → rupython-1.4.10}/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
  23. {rupython-1.4.8 → rupython-1.4.10}/rupython//320/234/320/276/320/264/321/203/320/273/320/270//320/241/320/273/321/203/321/207.py" +0 -0
  24. {rupython-1.4.8 → rupython-1.4.10}/rupython.egg-info/dependency_links.txt +0 -0
  25. {rupython-1.4.8 → rupython-1.4.10}/rupython.egg-info/top_level.txt +0 -0
  26. {rupython-1.4.8 → rupython-1.4.10}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: rupython
3
- Version: 1.4.8
3
+ Version: 1.4.10
4
4
  Summary: Исполнитель кода Русского Питона
5
5
  Home-page: https://gitflic.ru/project/russky/rupython
6
6
  Author: Сообщество русских программистов
@@ -669,7 +669,7 @@ x = 0
669
669
  - `Писать(данные)` — запись данных (строки или байтов).
670
670
  - `Позиция()` — возвращает текущую позицию указателя.
671
671
  - `Задать_позицию(смещение[, откуда])` — изменение позиции указателя файла.
672
- - `Усечь([размер])` — обрезание файла до заданного размера.
672
+ - `Обрезать([размер])` — усечение файла до заданного размера.
673
673
  - `Отделить()` — отделяет базовый поток от оболочки.
674
674
  - `Закрыть()` — закрывает файл.
675
675
 
@@ -688,5 +688,6 @@ x = 0
688
688
  - `Очередь`
689
689
  - `Потоки`
690
690
  - `РегВыр`
691
+ - `Система`
691
692
  - `Случ`
692
693
  - `Файлы`
@@ -643,7 +643,7 @@ x = 0
643
643
  - `Писать(данные)` — запись данных (строки или байтов).
644
644
  - `Позиция()` — возвращает текущую позицию указателя.
645
645
  - `Задать_позицию(смещение[, откуда])` — изменение позиции указателя файла.
646
- - `Усечь([размер])` — обрезание файла до заданного размера.
646
+ - `Обрезать([размер])` — усечение файла до заданного размера.
647
647
  - `Отделить()` — отделяет базовый поток от оболочки.
648
648
  - `Закрыть()` — закрывает файл.
649
649
 
@@ -662,5 +662,6 @@ x = 0
662
662
  - `Очередь`
663
663
  - `Потоки`
664
664
  - `РегВыр`
665
+ - `Система`
665
666
  - `Случ`
666
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': 'Вытащить',
@@ -112,9 +112,9 @@ def Установить_поле(класс, атрибут, значение):
112
112
  'clear': 'Очистить'
113
113
  },
114
114
  'int': {
115
- 'bit_length': 'Длина_в_битах',
116
- 'to_bytes': ( 'В_байты', { 'length': 'длина', 'byteorder': 'порядок', 'signed': 'со_знаком' }, { (2, 'byteorder'): { 'МлСт': 'little', 'СтМл': 'big' } } ),
117
- 'from_bytes': ( 'Из_байтов', { 'bytes': 'байты', 'byteorder': 'порядок', 'signed': 'со_знаком' }, { (1, 'byteorder'): { 'МлСт': 'little', 'СтМл': 'big' } } ),
115
+ 'bit_length': 'Длина_в_битах', # Битовая_длина
116
+ 'to_bytes': ( 'В_байты', { 'length': 'длина', 'byteorder': 'порядок', 'signed': 'со_знаком' }, { (2, 'byteorder'): { 'МлСт': 'little', 'СтМл': 'big' } } ), # Возр, Убыв
117
+ 'from_bytes': ( 'Из_байтов', { 'bytes': 'байты', 'byteorder': 'порядок', 'signed': 'со_знаком' }, { (1, 'byteorder'): { 'МлСт': 'little', 'СтМл': 'big' } } ), # Возр, Убыв
118
118
  '.numerator': 'числитель',
119
119
  '.denominator': 'знаменатель'
120
120
  },
@@ -139,8 +139,9 @@ def Установить_поле(класс, атрибут, значение):
139
139
  'write': 'Писать',
140
140
  'tell': 'Позиция',
141
141
  'seek': 'Задать_позицию',
142
- 'truncate': 'Усечь',
142
+ 'truncate': 'Обрезать', # Усечь
143
143
  'detach': 'Отделить',
144
+ 'flush': 'Выгрузить',
144
145
  'close': 'Закрыть',
145
146
  '.closed': 'закрыт'
146
147
  }
@@ -4,7 +4,7 @@ import math
4
4
  e = math.e
5
5
  Тау = math.tau
6
6
  Бесконечность = math.inf
7
- Не_число = math.nan
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, отнДопуск=1e-09, абсДопуск=0.0): return math.isclose(a, b, rel_tol=отнДопуск, abs_tol=абсДопуск)
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 Не_число(x): return math.isnan(x)
30
- def СледПосле(x, y, шаг = 1): return math.nextafter(x, y, steps=шаг)
31
- def НаименьшЗначБит(x): return math.ulp(x)
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, base=основание)
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): return math.prod(перечислимое, start=нач_знач)
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): return math.cos(x) / math.sin(x)
54
- def sec(x): return 1 / math.cos(x)
55
- def cosec(x): return 1 / math.sin(x)
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.cos(x / math.sqrt(1 + x ** 2))
60
- def arcsec(x): return math.acos(1 / x)
61
- def arccosec(x): return math.asin(1 / x)
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): return 1 / math.tanh(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): return 1 / math.sinh(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): return math.log((x + 1) / (x - 1)) / 2
73
- def arsch(x): return math.acosh(1 / x)
74
- def arcsch(x): return math.asinh(1 / x)
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',
@@ -46,7 +46,7 @@ from io import StringIO as Текстовый_ВВ
46
46
  'Проверить': 'assert',
47
47
  'фун': 'lambda',
48
48
  'Выдать': 'yield',
49
- 'Используя': 'with',
49
+ 'Используя': 'with', # ВКонтексте
50
50
  'Удалить': 'del',
51
51
  'Выбрать': 'match',
52
52
  'При': 'case',
@@ -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.8
3
+ Version: 1.4.10
4
4
  Summary: Исполнитель кода Русского Питона
5
5
  Home-page: https://gitflic.ru/project/russky/rupython
6
6
  Author: Сообщество русских программистов
@@ -669,7 +669,7 @@ x = 0
669
669
  - `Писать(данные)` — запись данных (строки или байтов).
670
670
  - `Позиция()` — возвращает текущую позицию указателя.
671
671
  - `Задать_позицию(смещение[, откуда])` — изменение позиции указателя файла.
672
- - `Усечь([размер])` — обрезание файла до заданного размера.
672
+ - `Обрезать([размер])` — усечение файла до заданного размера.
673
673
  - `Отделить()` — отделяет базовый поток от оболочки.
674
674
  - `Закрыть()` — закрывает файл.
675
675
 
@@ -688,5 +688,6 @@ x = 0
688
688
  - `Очередь`
689
689
  - `Потоки`
690
690
  - `РегВыр`
691
+ - `Система`
691
692
  - `Случ`
692
693
  - `Файлы`
@@ -19,5 +19,6 @@ rupython/Модули/Матем.py
19
19
  rupython/Модули/Очередь.py
20
20
  rupython/Модули/Потоки.py
21
21
  rupython/Модули/РегВыр.py
22
+ rupython/Модули/Система.py
22
23
  rupython/Модули/Случ.py
23
24
  rupython/Модули/Файлы.py
@@ -3,7 +3,7 @@ from pathlib import Path as Путь
3
3
 
4
4
  Установить(
5
5
  name = 'rupython',
6
- version = '1.4.8',
6
+ version = '1.4.10',
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