rupython 1.2.13__py3-none-any.whl → 1.2.15__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.
Files changed (12) hide show
  1. 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 +1 -0
  2. rupython//342/225/250/320/254/342/225/250/342/225/233/342/225/250/342/224/244/342/225/244/320/223/342/225/250/342/225/227/342/225/250/342/225/225//342/225/250/320/241/342/225/250/320/244.py +163 -9
  3. rupython//342/225/250/320/254/342/225/250/342/225/233/342/225/250/342/224/244/342/225/244/320/223/342/225/250/342/225/227/342/225/250/342/225/225//342/225/250/320/247/342/225/250/342/226/221/342/225/250/342/224/220/342/225/244/320/220/342/225/250/342/225/233/342/225/244/320/221/342/225/244/320/233.py +141 -0
  4. rupython//342/225/250/320/254/342/225/250/342/225/233/342/225/250/342/224/244/342/225/244/320/223/342/225/250/342/225/227/342/225/250/342/225/225//342/225/250/320/254/342/225/250/342/226/221/342/225/244/320/222/342/225/250/342/225/241/342/225/250/342/225/235.py +4 -4
  5. rupython//342/225/250/320/254/342/225/250/342/225/233/342/225/250/342/224/244/342/225/244/320/223/342/225/250/342/225/227/342/225/250/342/225/225//342/225/250/320/264/342/225/250/342/226/221/342/225/250/342/225/243/342/225/250/342/225/227/342/225/244/320/233.py +123 -0
  6. 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 +2 -1
  7. rupython-1.2.15.dist-info/LICENSE +55 -0
  8. {rupython-1.2.13.dist-info → rupython-1.2.15.dist-info}/METADATA +4 -1
  9. {rupython-1.2.13.dist-info → rupython-1.2.15.dist-info}/RECORD +11 -9
  10. rupython-1.2.13.dist-info/LICENSE +0 -27
  11. {rupython-1.2.13.dist-info → rupython-1.2.15.dist-info}/WHEEL +0 -0
  12. {rupython-1.2.13.dist-info → rupython-1.2.15.dist-info}/top_level.txt +0 -0
@@ -171,6 +171,7 @@ for классы, таблица in Встроенные_поля.items():
171
171
  eval("Установить_поле(" + класс + ", '" + замена + "', lambda *ПА, **ИА: " + класс + "." + название + "(*ПА, **ИА))")
172
172
 
173
173
  Система.path.insert(0, ОС.path.dirname(__file__) + '/Модули')
174
+ Система.path.insert(0, ОС.path.dirname(__file__) + '/Модули/Дополнительно')
174
175
 
175
176
  def Заменить_преобразование_в_строку(класс, функция):
176
177
  class Объект_типа(ctypes.Structure): pass
@@ -47,11 +47,11 @@ import re as РегВыр
47
47
  'ПО': 'ON',
48
48
  'ПЕРЕКРЁСТНО': 'CROSS',
49
49
  'ИСПОЛЬЗУЯ': 'USING',
50
- 'ВСТАВИТЬ ИЛИ ПРЕРВАТЬ В': 'INSERT OR ABORT INTO',
51
- 'ВСТАВИТЬ ИЛИ СБОЙ В': 'INSERT OR FAIL INTO',
52
- 'ВСТАВИТЬ ИЛИ ПРОПУСТИТЬ В': 'INSERT OR IGNORE INTO',
53
- 'ВСТАВИТЬ ИЛИ ЗАМЕНИТЬ В': 'INSERT OR REPLACE INTO',
54
- 'ВСТАВИТЬ ИЛИ ОТКАТИТЬ В': 'INSERT OR ROLLBACK INTO',
50
+ 'ДОБАВИТЬ ИЛИ ПРЕРВАТЬ В': 'INSERT OR ABORT INTO',
51
+ 'ДОБАВИТЬ ИЛИ СБОЙ В': 'INSERT OR FAIL INTO',
52
+ 'ДОБАВИТЬ ИЛИ ПРОПУСТИТЬ В': 'INSERT OR IGNORE INTO',
53
+ 'ДОБАВИТЬ ИЛИ ЗАМЕНИТЬ В': 'INSERT OR REPLACE INTO',
54
+ 'ДОБАВИТЬ ИЛИ ОТКАТИТЬ В': 'INSERT OR ROLLBACK INTO',
55
55
  'ДОБАВИТЬ В': 'INSERT INTO',
56
56
  'ЗНАЧЕНИЯ': 'VALUES',
57
57
  'ИЗМЕНИТЬ': 'UPDATE',
@@ -122,7 +122,7 @@ import re as РегВыр
122
122
  'КАК': 'AS',
123
123
  'ДА': 'TRUE',
124
124
  'НЕТ': 'FALSE',
125
- 'ПО_УМОЛЧАНИЮ': 'DEFAULT',
125
+ 'ПО УМОЛЧАНИЮ': 'DEFAULT',
126
126
  'САМОУВЕЛИЧИВАЮЩЕЕСЯ': 'AUTOINCREMENT',
127
127
  'ССЫЛАЕТСЯ НА': 'REFERENCES',
128
128
  'БЕЗ ИСКЛЮЧЕНИЙ': 'EXCLUDE NO OTHERS',
@@ -231,8 +231,6 @@ import re as РегВыр
231
231
  }
232
232
 
233
233
  def Получить_токены(запрос):
234
- запрос = РегВыр.sub(r'\s+', ' ', запрос.strip())
235
-
236
234
  токены = []
237
235
  текущий_токен = ''
238
236
  в_строке = False
@@ -369,7 +367,7 @@ def Перевести_код_запроса(текст):
369
367
 
370
368
  Переводы_ошибок = {
371
369
  r"no such table: (.+)": r'Таблица "\1" не существует.',
372
- r"database is locked": r'База данных заблокирована.',
370
+ r"database is locked": r'База данных заблокована.',
373
371
  r"near \"(.+)\": syntax error": r'Синтаксическая ошибка около "\1".',
374
372
  r"table (.+) already exists": r'Таблица "\1" уже существует.',
375
373
  r"no such column: (.+)": r'Столбец "\1" не существует.',
@@ -602,3 +600,159 @@ class Соединение():
602
600
  if значение not in (None, 'DEFERRED', 'IMMEDIATE', 'EXCLUSIVE'):
603
601
  raise ValueError(f"Недопустимый уровень изоляции: {значение}")
604
602
  экземпляр._соединение.isolation_level = значение
603
+
604
+ class Обёртка:
605
+ def __init__(экземпляр, путь_к_файлу, **аргументы_инициализации):
606
+ экземпляр._соединение = None
607
+
608
+ try:
609
+ экземпляр._соединение = Соединение(путь_к_файлу, **аргументы_инициализации)._соединение
610
+
611
+ except Ошибка as ош:
612
+ экземпляр._Обновить_ошибку(ош)
613
+ except Exception as ош:
614
+ экземпляр._Обновить_ошибку(ош)
615
+
616
+ def __del__(экземпляр):
617
+ if экземпляр._соединение:
618
+ try:
619
+ экземпляр._соединение.close()
620
+ except Ошибка as ош:
621
+ print(f"Ошибка при закрытии соединения: {Перевести_ошибку(ош)}")
622
+
623
+ def _Обновить_ошибку(экземпляр, ош=None):
624
+ if isinstance(ош, Ошибка):
625
+ raise Ошибка(Перевести_ошибку(ош)) from ош
626
+ elif ош:
627
+ raise Exception(f"Неизвестная ошибка: {ош}") from ош
628
+ else:
629
+ raise Exception("Неизвестная ошибка или проблема соединения.")
630
+
631
+ def Выполнить_запрос(экземпляр, запрос, параметры=()):
632
+ # Выполняет запрос к БД.
633
+ if not экземпляр._соединение:
634
+ экземпляр._Обновить_ошибку(Ошибка("Соединение с БД не установлено."))
635
+
636
+ try:
637
+ переведённый_запрос = Перевести_код_запроса(запрос)
638
+ курсор = экземпляр._соединение.cursor()
639
+ курсор.execute(переведённый_запрос, параметры)
640
+ экземпляр._соединение.commit()
641
+
642
+ except Ошибка as ош:
643
+ экземпляр._Обновить_ошибку(ош)
644
+
645
+ def Запросить_таблицу(экземпляр, запрос, параметры=()):
646
+ # Выполняет запрос ВЫБРАТЬ и возвращает все строки как список словарей.
647
+ if not экземпляр._соединение:
648
+ экземпляр._Обновить_ошибку(Ошибка("Соединение с БД не установлено."))
649
+
650
+ try:
651
+ экземпляр._соединение.row_factory = sqlite3.Row
652
+
653
+ переведённый_запрос = Перевести_код_запроса(запрос)
654
+ курсор = экземпляр._соединение.cursor()
655
+ курсор.execute(переведённый_запрос, параметры)
656
+
657
+ результат = [dict(запись) for запись in курсор.fetchall()]
658
+
659
+ return результат
660
+ except Ошибка as ош:
661
+ экземпляр._Обновить_ошибку(ош)
662
+
663
+ def Запросить_столбец(экземпляр, запрос, параметры=()):
664
+ # Выполняет запрос ВЫБРАТЬ и возвращает значения первого столбца всех строк как список.
665
+ if not экземпляр._соединение:
666
+ экземпляр._Обновить_ошибку(Ошибка("Соединение с БД не установлено."))
667
+
668
+ try:
669
+ экземпляр._соединение.row_factory = None
670
+
671
+ переведённый_запрос = Перевести_код_запроса(запрос)
672
+ курсор = экземпляр._соединение.cursor()
673
+ курсор.execute(переведённый_запрос, параметры)
674
+ результат = [строка[0] for строка in курсор.fetchall()]
675
+
676
+ return результат
677
+
678
+ except Ошибка as ош:
679
+ экземпляр._Обновить_ошибку(ош)
680
+
681
+ def Запросить_строку(экземпляр, запрос, параметры=()):
682
+ # Выполняет запрос ВЫБРАТЬ и возвращает первую строку как словарь.
683
+ if not экземпляр._соединение:
684
+ экземпляр._Обновить_ошибку(Ошибка("Соединение с БД не установлено."))
685
+
686
+ try:
687
+ экземпляр._соединение.row_factory = sqlite3.Row
688
+
689
+ переведённый_запрос = Перевести_код_запроса(запрос)
690
+ курсор = экземпляр._соединение.cursor()
691
+ курсор.execute(переведённый_запрос, параметры)
692
+ строка = курсор.fetchone()
693
+
694
+ return dict(строка) if строка else None
695
+
696
+ except Ошибка as ош:
697
+ экземпляр._Обновить_ошибку(ош)
698
+
699
+ def Запросить_таблицу_нум_стр(экземпляр, запрос, параметры=()):
700
+ # Выполняет запрос ВЫБРАТЬ и возвращает все строки как список кортежей.
701
+ if not экземпляр._соединение:
702
+ экземпляр._Обновить_ошибку(Ошибка("Соединение с БД не установлено."))
703
+
704
+ try:
705
+ экземпляр._соединение.row_factory = None
706
+
707
+ переведённый_запрос = Перевести_код_запроса(запрос)
708
+ курсор = экземпляр._соединение.cursor()
709
+ курсор.execute(переведённый_запрос, параметры)
710
+ результат = курсор.fetchall()
711
+
712
+ return результат
713
+
714
+ except Ошибка as ош:
715
+ экземпляр._Обновить_ошибку(ош)
716
+
717
+ def Запросить_строку_нум(экземпляр, запрос, параметры=()):
718
+ # Выполняет запрос ВЫБРАТЬ и возвращает первую строку как кортеж.
719
+ if not экземпляр._соединение:
720
+ экземпляр._Обновить_ошибку(Ошибка("Соединение с БД не установлено."))
721
+
722
+ try:
723
+ экземпляр._соединение.row_factory = None
724
+
725
+ переведённый_запрос = Перевести_код_запроса(запрос)
726
+ курсор = экземпляр._соединение.cursor()
727
+ курсор.execute(переведённый_запрос, параметры)
728
+ строка = курсор.fetchone()
729
+
730
+ return строка
731
+
732
+ except Ошибка as ош:
733
+ экземпляр._Обновить_ошибку(ош)
734
+
735
+ def Запросить_ячейку(экземпляр, запрос, параметры=()):
736
+ # Выполняет запрос ВЫБРАТЬ и возвращает значение первой ячейки первой строки.
737
+ if not экземпляр._соединение:
738
+ экземпляр._Обновить_ошибку(Ошибка("Соединение с БД не установлено."))
739
+
740
+ try:
741
+ экземпляр._соединение.row_factory = None
742
+
743
+ переведённый_запрос = Перевести_код_запроса(запрос)
744
+ курсор = экземпляр._соединение.cursor()
745
+ курсор.execute(переведённый_запрос, параметры)
746
+ строка = курсор.fetchone()
747
+
748
+ return строка[0] if строка else None
749
+
750
+ except Ошибка as ош:
751
+ экземпляр._Обновить_ошибку(ош)
752
+
753
+ def Добавленный_номер(экземпляр):
754
+ # Возвращает номер последней вставленной строки.
755
+ if not экземпляр._соединение:
756
+ экземпляр._Обновить_ошибку(Ошибка("Соединение с БД не установлено."))
757
+
758
+ return экземпляр._соединение.lastrowid
@@ -0,0 +1,141 @@
1
+ import requests
2
+
3
+ Словарь_параметров_запроса = {
4
+ 'параметры': 'params',
5
+ 'данные': 'data',
6
+ 'данные_json': 'json',
7
+ 'заголовки': 'headers',
8
+ 'куки': 'cookies',
9
+ 'аутентификация': 'auth',
10
+ 'таймаут': 'timeout',
11
+ 'разрешить_перенаправления': 'allow_redirects',
12
+ 'проверить_шифрование': 'verify',
13
+ 'поток': 'stream',
14
+ 'прокси': 'proxies',
15
+ 'кодование_ответа': 'encoding',
16
+ 'задержка_соединения': 'connect',
17
+ 'задержка_чтения': 'read'
18
+ }
19
+
20
+ Успешно = 200
21
+ Создано = 201
22
+ Принято = 202
23
+ Нет_содержимого = 204
24
+ Множественный_выбор = 300
25
+ Перенаправление = 301
26
+ Найдено = 302
27
+ Не_изменено = 304
28
+ Неверный_запрос = 400
29
+ Не_авторизован = 401
30
+ Запрещено = 403
31
+ Не_найдено = 404
32
+ Метод_не_разрешен = 405
33
+ Конфликт = 409
34
+ Ошибка_сервера = 500
35
+ Не_реализовано = 501
36
+ Служба_недоступна = 503
37
+
38
+ class Ответ:
39
+ def __init__(экземпляр, исходный_ответ: requests.Response):
40
+ экземпляр._ответ = исходный_ответ
41
+
42
+ @property
43
+ def код_статуса(экземпляр): return экземпляр._ответ.status_code
44
+
45
+ @property
46
+ def текст(экземпляр): return экземпляр._ответ.text
47
+
48
+ @property
49
+ def json(экземпляр):
50
+ try: return экземпляр._ответ.json()
51
+ except requests.exceptions.JSONDecodeError: return None
52
+
53
+ @property
54
+ def заголовки(экземпляр): return экземпляр._ответ.headers
55
+
56
+ @property
57
+ def байты(экземпляр): return экземпляр._ответ.content
58
+
59
+ @property
60
+ def успешно(экземпляр): return экземпляр._ответ.ok
61
+
62
+ @property
63
+ def кодование(экземпляр): return экземпляр._ответ.encoding
64
+
65
+ @кодование.setter
66
+ def кодование(экземпляр, новое_кодование):
67
+ экземпляр._ответ.encoding = новое_кодование
68
+
69
+ def Выдать_ошибку(экземпляр): экземпляр._ответ.raise_for_status()
70
+
71
+ def __str__(экземпляр):
72
+ return f"Ответ (статус: {экземпляр.код_статуса}, ссылка: {экземпляр._ответ.ссылка})"
73
+
74
+ def __repr__(экземпляр):
75
+ return f"<Ответ - статус: {экземпляр.код_статуса}, ссылка: {экземпляр._ответ.ссылка}>"
76
+
77
+ class Запросы:
78
+ def __init__(экземпляр):
79
+ экземпляр._сессия = requests.Session()
80
+
81
+ def _Перевести_параметры(экземпляр, **ИА):
82
+ новые_ИА = {}
83
+ for ключ, значение in ИА.items():
84
+ if isinstance(ключ, tuple) and ключ[0] == 'таймаут':
85
+ connect_timeout = ИА.get(('таймаут', 'задержка_соединения'), None)
86
+ read_timeout = ИА.get(('таймаут', 'задержка_чтения'), None)
87
+ if connect_timeout is not None or read_timeout is not None:
88
+ новые_ИА['timeout'] = (connect_timeout, read_timeout)
89
+ else:
90
+ if ключ in Словарь_параметров_запроса:
91
+ новые_ИА[Словарь_параметров_запроса[ключ]] = значение
92
+ else:
93
+ новые_ИА[ключ] = значение
94
+ return новые_ИА
95
+
96
+ def Получить(экземпляр, ссылка, **ИА):
97
+ переведенные_параметры = экземпляр._Перевести_параметры(**ИА)
98
+ ответ = экземпляр._сессия.get(ссылка, **переведенные_параметры)
99
+ return Ответ_HTTP(ответ)
100
+
101
+ def Отправить(экземпляр, ссылка, **ИА):
102
+ переведенные_параметры = экземпляр._Перевести_параметры(**ИА)
103
+ ответ = экземпляр._сессия.post(ссылка, **переведенные_параметры)
104
+ return Ответ_HTTP(ответ)
105
+
106
+ def Положить(экземпляр, ссылка, **ИА):
107
+ переведенные_параметры = экземпляр._Перевести_параметры(**ИА)
108
+ ответ = экземпляр._сессия.put(ссылка, **переведенные_параметры)
109
+ return Ответ_HTTP(ответ)
110
+
111
+ def Удалить(экземпляр, ссылка, **ИА):
112
+ переведенные_параметры = экземпляр._Перевести_параметры(**ИА)
113
+ ответ = экземпляр._сессия.delete(ссылка, **переведенные_параметры)
114
+ return Ответ_HTTP(ответ)
115
+
116
+ def Заголовки(экземпляр, ссылка, **ИА):
117
+ переведенные_параметры = экземпляр._Перевести_параметры(**ИА)
118
+ ответ = экземпляр._сессия.head(ссылка, **переведенные_параметры)
119
+ return Ответ_HTTP(ответ)
120
+
121
+ def Опции(экземпляр, ссылка, **ИА):
122
+ переведенные_параметры = экземпляр._Перевести_параметры(**ИА)
123
+ ответ = экземпляр._сессия.options(ссылка, **переведенные_параметры)
124
+ return Ответ_HTTP(ответ)
125
+
126
+ def Изменить(экземпляр, ссылка, **ИА):
127
+ переведенные_параметры = экземпляр._Перевести_параметры(**ИА)
128
+ ответ = экземпляр._сессия.patch(ссылка, **переведенные_параметры)
129
+ return Ответ_HTTP(ответ)
130
+
131
+ def Закрыть_сессию(экземпляр):
132
+ экземпляр._сессия.close()
133
+
134
+ Запросы_по_умолчанию = Запросы()
135
+ def Получить(ссылка, **ИА): return Запросы_по_умолчанию.Получить(ссылка, **ИА)
136
+ def Отправить(ссылка, **ИА): return Запросы_по_умолчанию.Отправить(ссылка, **ИА)
137
+ def Положить(ссылка, **ИА): return Запросы_по_умолчанию.Положить(ссылка, **ИА)
138
+ def Удалить(ссылка, **ИА): return Запросы_по_умолчанию.Удалить(ссылка, **ИА)
139
+ def Заголовки(ссылка, **ИА): return Запросы_по_умолчанию.Заголовки(ссылка, **ИА)
140
+ def Опции(ссылка, **ИА): return Запросы_по_умолчанию.Опции(ссылка, **ИА)
141
+ def Изменить(ссылка, **ИА): return Запросы_по_умолчанию.Изменить(ссылка, **ИА)
@@ -3,8 +3,8 @@ import math
3
3
  Пи = math.pi
4
4
  e = math.e
5
5
  Тау = math.tau
6
- Бскн = math.inf
7
- НеЧ = math.nan
6
+ Бесконечность = math.inf
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)
@@ -0,0 +1,123 @@
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
@@ -707,13 +707,14 @@ def Посчитать_физические_строки(путь_к_файлу,
707
707
  r"(.+) takes exactly (\d+) arguments \((\d+) given\)": r'"\1" принимает аргументы в количестве ровно \2 (получено \3).',
708
708
  r"(.+) takes at most (\d+) arguments \((\d+) given\)": r'"\1" принимает аргументы в количестве не более \2 (получено \3).',
709
709
  r"(.+) takes at least (\d+) arguments \((\d+) given\)": r'"\1" принимает аргументы в количестве не менее \2 (получено \3).',
710
+ r"(.+) takes (\d+) positional argument but (\d+) were given": r'Функция "\1" имеет позиционных аргументов: \2, однако получила: \3.',
710
711
  r"ValueError: (.+)": r'Ошибка значения: \1.',
711
712
  r"AttributeError: '(\w+)' object is not callable": r'Объект типа "\1" не является вызываемым.',
712
713
  r"ImportError: No module named '(\w+)'": r'Ошибка импорта: модуль "\1" не найден.',
713
714
  r"FileNotFoundError: \[Errno 2\] No such file or directory: '(.+)'": r'Файл "\1" не найден.',
714
715
  r"IndexError: tuple index out of range": r'Индекс за пределами кортежа.',
715
716
  r"SyntaxError: unexpected EOF while parsing": r'Неожиданный конец файла при разборе кода.',
716
- r"ZeroDivisionError: float division by zero": r'Деление числа с плавающей точкой на ноль.',
717
+ r"ZeroDivisionError: float division by zero": r'Деление числа с плавающей запятой на ноль.',
717
718
  r"TypeError: cannot unpack non-iterable (\w+) object": r'Невозможно распаковать неитерируемый объект типа "\1".',
718
719
  r"MemoryError": r'Недостаточно памяти для выполнения операции.',
719
720
  r"OverflowError: (.+)": r'Переполнение: \1.',
@@ -0,0 +1,55 @@
1
+ Настоящая лицензия основана на ценностях и правовых принципах русской культурной традиции и предназначена для обеспечения распространения данного продукта — программного обеспечения, произведения или иного объекта интеллектуальной деятельности (далее — «Продукт») — на условиях свободного использования в рамках этой традиции.
2
+
3
+ Настоящей лицензией заявляется, что Продукт создан представителями Русской нации в рамках расширения её культурного и духовного наследия и предназначен для использования теми, кто разделяет идентичность и ценности Русской нации — исторического и духовного единства великорусской, малорусской и белорусской народностей. Авторы Продукта добровольно передают Продукт в общественное достояние Русской нации, в рамках которого он остаётся свободным для использования всеми представителями Русской нации и людьми, разделяющими ценности и идеалы Русской нации, без ограничений.
4
+
5
+ Настоящий Продукт распространяется на условиях свободного использования: любой пользователь (далее — «Пользователь»), принадлежа к Русской нации или разделяя её ценности и идеалы, вправе использовать Продукт любым способом, включая, но не ограничиваясь: копированием; распространением; модификацией; созданием производных работ; использованием в личных, коммерческих или иных целях. Для использования Продукта не требуется никаких разрешений или уведомлений; пользователь вправе создавать производные работы на основе Продукта без ограничений.
6
+
7
+ Настоящая лицензия не накладывает юридических ограничений на использование Продукта, за исключением соблюдения применимого законодательства в юрисдикции Пользователя. Продукт предоставляется «как есть», без каких-либо гарантий, явных или подразумеваемых, включая, но не ограничиваясь, гарантиями пригодности для конкретной цели, коммерческой ценности или отсутствия дефектов. Ни при каких обстоятельствах авторы не несут ответственность за любой ущерб, прямой или косвенный, возникший в результате использования или невозможности использования Продукта. Пользователь несёт полную ответственность за использование Продукта, включая соблюдение применимых законов, уважение прав третьих лиц, а также прав и интересов Русской нации.
8
+
9
+ =======
10
+
11
+ Ця ліцензія заснована на цінностях і правових засадах руської культурної традиції й призначена для забезпечення поширення цього продукту — програмного забезпечення, твору чи іншого об’єкта інтелектуальної діяльності (далі — «Продукт») — на умовах вільного користування в межах зазначеної традиції.
12
+
13
+ Цією ліцензією стверджується, що Продукт створений представниками Руської нації в межах розбудови її духовної та культурної спадщини, і призначений для користування тими, хто поділяє ідентичність та цінності Руської нації — історичну й духовну єдність великоруської, малоруської та білоруської народностей. Автори Продукту добровільно передають його у громадське надбання Руської нації, в межах якого він залишається вільним для користування усіма представниками Руської нації та особами, що поділяють її цінності та ідеали, без будь-яких обмежень.
14
+
15
+ Цей Продукт поширюється на засадах вільного користування: кожен користувач (далі — «Користувач»), який належить до Руської нації або поділяє її цінності та ідеали, має право використовувати Продукт у будь-який спосіб, включно з, але не обмежуючись: копіюванням, поширенням, модифікацією, створенням похідних творів, використанням у приватних, комерційних або інших цілях. Для користування Продуктом не вимагається жодних дозволів чи повідомлень; Користувач має право створювати похідні твори на основі Продукту без обмежень.
16
+
17
+ Ця ліцензія не накладає правових обмежень на використання Продукту, окрім дотримання чинного законодавства у відповідній юрисдикції. Продукт надається «як є», без жодних гарантій, явних або неявних, включаючи, але не обмежуючись, гарантіями придатності для певної мети, товарної цінності чи відсутності вад. За жодних обставин автори не несуть відповідальності за будь-які збитки, прямі чи опосередковані, що виникли внаслідок використання або неможливості використання Продукту. Користувач несе повну відповідальність за використання Продукту, включаючи дотримання чинного законодавства, повагу до прав третіх осіб, а також прав і інтересів Руської нації.
18
+
19
+ =======
20
+
21
+ Сапраўдная ліцэнзія грунтуецца на каштоўнасцях і прававых прынцыпах рускай культурнай традыцыі і прызначана для забеспячэння распаўсюджвання гэтага прадукта — праграмнага забеспячэння, твора ці іншага аб'екта інтэлектуальнай дзейнасці (далей — «Прадукт») — на ўмовах свабоднага выкарыстання ў рамках гэтай традыцыі.
22
+
23
+ Гэтай ліцэнзіяй заяўляецца, што Прадукт створаны прадстаўнікамі Рускай нацыі ў рамках пашырэння яе культурнай і духоўнай спадчыны і прызначаны для выкарыстання тымі, хто падзяляе ідэнтычнасць і каштоўнасці Рускай нацыі — гістарычнага і духоўнага адзінства вялікарускай, маларускай і беларускай народнасцей. Аўтары Прадукта добраахвотна перадаюць Прадукт у грамадскае надбанне Рускай нацыі, у рамках якога ён застаецца свабодным для выкарыстання ўсімі прадстаўнікамі Рускай нацыі і людзьмі, якія падзяляюць каштоўнасці і ідэалы Рускай нацыі, без абмежаванняў.
24
+
25
+ Гэты Прадукт распаўсюджваецца на ўмовах свабоднага выкарыстання: любы карыстальнік (далей — «Карыстальнік»), які належыць да Рускай нацыі або падзяляе яе каштоўнасці і ідэалы, мае права выкарыстоўваць Прадукт любым спосабам, уключаючы, але не абмяжоўваючыся: капіраваннем; распаўсюджваннем; мадыфікацыяй; стварэннем вытворных прац; выкарыстаннем у асабістых, камерцыйных ці іншых мэтах. Для выкарыстання Прадукта не патрабуецца ніякіх дазволаў або паведамленняў; карыстальнік мае права ствараць вытворныя працы на аснове Прадукта без абмежаванняў.
26
+
27
+ Гэтая ліцэнзія не накладвае юрыдычных абмежаванняў на выкарыстанне Прадукта, за выключэннем выканання прыдатнага заканадаўства ў юрысдыкцыі Карыстальніка. Прадукт прадастаўляецца «як ёсць», без якіх-небудзь гарантый, яўных або невыяўленых, уключаючы, але не абмяжоўваючыся, гарантыямі яго прыдатнасці для пэўнай мэты, камерцыйнай каштоўнасці або адсутнасці дэфектаў. Ні пры якіх абставінах аўтары не нясуць адказнасці за любы ўрон, прамы ці ўскосны, які ўзнік у выніку выкарыстання або немагчымасці выкарыстання Прадукта. Карыстальнік нясе поўную адказнасць за выкарыстанне Прадукта, уключаючы выкананне прыдатных законаў, павагу правоў трэціх асоб, а таксама правоў і інтарэсаў Рускай нацыі.
28
+ Настоящая лицензия опирается на ценности и правовые принципы русской культурной традиции и регулирует распространение данного продукта — программного обеспечения, произведения или иного объекта интеллектуальной деятельности (далее — «Продукт») — на условиях свободного и неограниченного использования в рамках этой традиции. Лицензия призвана содействовать осуществлению права Русской нации на свободное творчество, поощряя совместное созидание и открытый обмен продуктами интеллектуального труда.
29
+
30
+ Настоящей лицензией заявляется, что Продукт создан представителями Русской нации в целях сохранения, приумножения и расширения культурного и духовного наследия Русской нации в качестве вклада в её нематериальное богатство. Продукт предназначен для использования теми, кто разделяет идентичность и ценности Русской нации — исторического и духовного единства великорусской, малорусской и белорусской народностей. Авторы добровольно и безвозмездно передают Продукт в общественное достояние Русской нации, в рамках которого он остаётся свободным для использования всеми её представителями и иными лицами, разделяющими её ценности и идеалы, без каких-либо ограничений.
31
+
32
+ Продукт распространяется на условиях свободного использования. Любой пользователь (далее — «Пользователь»), принадлежащий к Русской нации или разделяющий её ценности и идеалы, вправе использовать Продукт любым способом, включая, но не ограничиваясь копированием, распространением, модификацией, созданием производных работ, а также использованием в личных, коммерческих или иных целях, без необходимости получения разрешений или направления уведомлений авторам. Пользователь вправе публиковать Продукт в любых формах, передавать его для использования другим лицам и включать его компоненты в другие проекты.
33
+
34
+ Настоящая лицензия не накладывает никаких юридических ограничений на использование Продукта. Продукт предоставляется «как есть», без каких-либо гарантий — явных или подразумеваемых, включая, но не ограничиваясь гарантиями пригодности для конкретной цели, коммерческой ценности и/или отсутствия дефектов. Ни при каких обстоятельствах авторы не несут ответственности за прямой или косвенный ущерб, возникший в результате использования или невозможности использования Продукта. Пользователь несёт полную ответственность за использование Продукта, включая соблюдение применимого в юрисдикции Пользователя законодательства, при условии, что такое законодательство не вступает в противоречие с основополагающими принципами данной лицензии, а также соблюдение прав третьих лиц и прав и интересов Русской нации.
35
+
36
+ =======
37
+
38
+ Ця ліцензія спирається на цінності та правові засади руської культурної традиції та регулює поширення цього продукту — програмного забезпечення, твору або іншого об’єкта інтелектуальної діяльності (далі — «Продукт») — на умовах вільного та необмеженого використання в межах цієї традиції. Вона покликана сприяти здійсненню права Руської нації на вільну творчість, заохочуючи спільне творення та відкритий обмін продуктами інтелектуальної праці.
39
+
40
+ Цією ліцензією заявляється, що Продукт створено представниками Руської нації з метою збереження, примноження та розширення культурної і духовної спадщини Руської нації як внесок у її нематеріальне багатство. Продукт призначено для використання тими, хто поділяє ідентичність і цінності Руської нації — історичної та духовної єдності великоруської, малоруської і білоруської народностей. Автори добровільно і безоплатно передають Продукт у суспільне надбання Руської нації, в межах якого він залишається вільним для використання всіма її представниками та іншими особами, які поділяють її цінності й ідеали, без будь-яких обмежень.
41
+
42
+ Продукт поширюється на умовах вільного використання. Будь-який користувач (далі — «Користувач»), що належить до Руської нації або поділяє її цінності й ідеали, має право використовувати Продукт будь-яким способом, включаючи, але не обмежуючись копіюванням, розповсюдженням, модифікацією, створенням похідних творів, а також використанням у приватних, комерційних чи інших цілях, без необхідності отримання дозволів або направлення повідомлень авторам. Користувач має право публікувати Продукт у будь-яких формах, передавати його для використання іншим особам і включати його компоненти в інші проекти.
43
+
44
+ Ця ліцензія не накладає жодних юридичних обмежень на використання Продукту. Продукт надається «як є», без будь-яких гарантій — явних або неявних, включаючи, але не обмежуючись гарантіями придатності для конкретної мети, комерційної цінності та/або відсутності вад. За жодних обставин автори не несуть відповідальності за будь-яку шкоду, пряму чи опосередковану, що виникла внаслідок використання або неможливості використання Продукту. Користувач несе повну відповідальність за використання Продукту, включаючи дотримання чинного законодавства в юрисдикції Користувача за умови, що таке законодавство не суперечить основоположним принципам цієї ліцензії, а також дотримання прав третіх осіб та прав та інтересів Руської нації.
45
+
46
+ =======
47
+
48
+ Гэтая ліцэнзія абапіраецца на каштоўнасці і прававыя прынцыпы рускай культурнай традыцыі і рэгулюе распаўсюджванне дадзенага прадукту — праграмнага забеспячэння, твора або іншага аб’екта інтэлектуальнай дзейнасці (далей — «Прадукт») — на ўмовах вольнага і неабмежаванага выкарыстання ў межах гэтай традыцыі. Яна прызначана садзейнічаць ажыццяўленню права Рускай нацыі на свабодную творчасць, заахвочваючы сумеснае стварэнне і адкрыты абмен прадуктамі інтэлектуальнай працы.
49
+
50
+ Гэтай ліцэнзіяй заяўляецца, што Прадукт створаны прадстаўнікамі Рускай нацыі з мэтай захавання, прымнажэння і пашырэння культурнай і духоўнай спадчыны Рускай нацыі як уклад у яе нематэрыяльнае багацце. Прадукт прызначаны для выкарыстання тымі, хто падзяляе ідэнтычнасць і каштоўнасці Рускай нацыі — гістарычнага і духоўнага адзінства вялікарускага, маларускага і беларускага народаў. Аўтары добраахвотна і бязвыплатна перадаюць Прадукт у грамадскі набытак Рускай нацыі, у межах якога ён застаецца вольным для выкарыстання ўсімі яе прадстаўнікамі і іншымі асобамі, якія падзяляюць яе каштоўнасці і ідэалы, без якіх-небудзь абмежаванняў.
51
+
52
+ Прадукт распаўсюджваецца на ўмовах вольнага выкарыстання. Любы карыстальнік (далей — «Карыстальнік»), які належыць да Рускай нацыі або падзяляе яе каштоўнасці і ідэалы, мае права выкарыстоўваць Прадукт любым спосабам, уключаючы, але не абмяжоўваючыся капіраваннем, распаўсюджваннем, мадыфікацыяй, стварэннем вытворных прац, а таксама выкарыстаннем у асабістых, камерцыйных або іншых мэтах, без неабходнасці атрымання дазволаў або накіравання паведамленняў аўтарам. Карыстальнік мае права публікаваць Прадукт у любых формах, перадаваць яго для выкарыстання іншым асобам і ўключаць его кампаненты ў іншыя праекты.
53
+
54
+ Гэтая ліцэнзія не накладвае ніякіх юрыдычных абмежаванняў на выкарыстанне Прадукта. Прадукт прадастаўляецца «як ёсць», без якіх-небудзь гарантый — прамых ці ўскосных, уключаючы, але не абмяжоўваючыся гарантыямі прыдатнасці для пэўнай мэты, камерцыйнай каштоўнасці і/або адсутнасці дэфектаў. Ні пры якіх умовах аўтары не нясуць адказнасці за любыя страты, прамыя ці ўскосныя, што ўзніклі ў выніку выкарыстання або немагчымасці выкарыстання Прадукта. Карыстальнік нясе поўную адказнасць за выкарыстанне Прадукта, у тым ліку выкананне дзеючага заканадаўства ў юрысдыкцыі Карыстальніка за ўмовы, што такое заканадаўства не супярэчыць асноўным прынцыпам гэтай ліцэнзіі, а таксама выкананне правоў трэціх асоб і правоў і інтарэсаў Рускай нацыі.
55
+
@@ -1,7 +1,10 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: rupython
3
- Version: 1.2.13
3
+ Version: 1.2.15
4
4
  Summary: Исполнитель кода Русского Питона
5
+ Author: Сообщество русских программистов
6
+ License: ОДРН
7
+ Keywords: Россия,русский язык
5
8
  Description-Content-Type: text/markdown
6
9
  License-File: LICENSE
7
10
 
@@ -1,19 +1,21 @@
1
1
  rupython/__main__.py,sha256=wfmjyJhg6iQN1_9Hl6tIu6mKHO95xP2ibVcDdIIEXjE,1256
2
- rupython/__Заголовочный_код__.py,sha256=rWwsi5zSDUKinOeF6lLN-0MVYDcKclrKlq-eEw8Rpz0,13489
2
+ rupython/__Заголовочный_код__.py,sha256=yTxMJ93pxJeg_h-BnrTMoAqSB_a0tliYX6gkXtTyWx8,13594
3
3
  rupython/__Общие_функции__.py,sha256=MH9QLcXqeFmpOS5_N8P5wA5eCYutlHRc7YUatn3CUIk,1255
4
- rupython/Преобразователь.py,sha256=ZRTJnKOLG-ckVifnKQQwAKyDCKo4j8qHbyIlwOAbTD4,48431
4
+ rupython/Преобразователь.py,sha256=HpqS-ETWK1GFiKhwpW9Bg_qgYWh-DWTGJZlOA8xYCVg,48619
5
5
  rupython/Модули/Асинхр.py,sha256=sPQUgbS_kXj-Gyn2YCjXNCUqAy8aUW2-P6gO5e7f6Cc,9925
6
- rupython/Модули/БД.py,sha256=KNgVf91n_jZcrU8sLNnvsa2W0NCsJcPSWr7uM2lmUpg,29685
6
+ rupython/Модули/БД.py,sha256=xNZfeXIDgby8P9L4aZFLYgzR0xHIXwYB4znCKzezePo,38456
7
7
  rupython/Модули/ДатаВремя.py,sha256=Ec9YyY1jb-R9uyXrrDNfaTqBQVv98_GPn29OY8dUkj8,27523
8
+ rupython/Модули/Запросы.py,sha256=BPFWyPDLA6Qjmzb5KwOhuGZ5qjeAE0fudz5aJ8lRa6o,7562
8
9
  rupython/Модули/Коллекции.py,sha256=GAqmEjrPu5BO81S5_4JvdWfhFyjLHhkCmfEmlo0NdyI,25770
9
10
  rupython/Модули/Куча.py,sha256=h70utcxeF0Mi3X7OF5PlF_5z-98kc7qu_RQHFyL6lI8,3529
10
- rupython/Модули/Матем.py,sha256=d8ekm7GJreu7LJ9KmAKcTOciIUQ-VBI567BfK_QeLSc,3587
11
+ rupython/Модули/Матем.py,sha256=qhiQWIhba4anB5fYy5IIe1XlzeiQpKpNoSvz7lgDqzY,3612
11
12
  rupython/Модули/Очередь.py,sha256=9j50lXeBW5Jme2BSpJg599Vc5zmYfIE-C8awPN2HUZo,8502
12
13
  rupython/Модули/Потоки.py,sha256=am6hWxcrCx4Vx_FFPMIIhSl_ShWSV5vjW5deXV6EYTU,12342
13
14
  rupython/Модули/РегВыр.py,sha256=OWgYtgBDtHsEHUOAsGx7K0UGq92sumSqEyf-sVpICjw,6709
14
15
  rupython/Модули/Случ.py,sha256=foIuQo2QZ5z0iyxp9fn4NaunSx96vYzC2pRjwaT2FD8,2723
15
- rupython-1.2.13.dist-info/LICENSE,sha256=vTQDUsS-xxBMZEA2avkNBOGb58hRM-WHr8Getk-XTqQ,11780
16
- rupython-1.2.13.dist-info/METADATA,sha256=Sj4-DXKZHFtvGWn16c5zkDLUj_AxxsY3J06X-Lhergc,30185
17
- rupython-1.2.13.dist-info/WHEEL,sha256=P9jw-gEje8ByB7_hXoICnHtVCrEwMQh-630tKvQWehc,91
18
- rupython-1.2.13.dist-info/top_level.txt,sha256=GtXaS8JTsBm5hpQxxtQlrxK6rExvSAK_Cp44FrY4210,9
19
- rupython-1.2.13.dist-info/RECORD,,
16
+ rupython/Модули/Файлы.py,sha256=AekdYf2jmPhRW_9BngbQDzgTfsMr4zPpKzuwp6fRfzQ,6895
17
+ rupython-1.2.15.dist-info/LICENSE,sha256=qqVMvbdzR5e4XIV6qwYVgI5Ovki8wR0qZaKB2Oj9DXw,25656
18
+ rupython-1.2.15.dist-info/METADATA,sha256=bcBYYUHAkmwbMJ4PcHVQkkMwY9SjpSxUbAqpXZL19mA,30324
19
+ rupython-1.2.15.dist-info/WHEEL,sha256=P9jw-gEje8ByB7_hXoICnHtVCrEwMQh-630tKvQWehc,91
20
+ rupython-1.2.15.dist-info/top_level.txt,sha256=GtXaS8JTsBm5hpQxxtQlrxK6rExvSAK_Cp44FrY4210,9
21
+ rupython-1.2.15.dist-info/RECORD,,
@@ -1,27 +0,0 @@
1
- Настоящая лицензия основана на ценностях и правовых принципах русской культурной традиции и предназначена для обеспечения распространения данного продукта — программного обеспечения, произведения или иного объекта интеллектуальной деятельности (далее — «Продукт») — на условиях свободного использования в рамках этой традиции.
2
-
3
- Настоящей лицензией заявляется, что Продукт создан представителями Русской нации в рамках расширения её культурного и духовного наследия и предназначен для использования теми, кто разделяет идентичность и ценности Русской нации — исторического и духовного единства великорусской, малорусской и белорусской народностей. Авторы Продукта добровольно передают Продукт в общественное достояние Русской нации, в рамках которого он остаётся свободным для использования всеми представителями Русской нации и людьми, разделяющими ценности и идеалы Русской нации, без ограничений.
4
-
5
- Настоящий Продукт распространяется на условиях свободного использования: любой пользователь (далее — «Пользователь»), принадлежа к Русской нации или разделяя её ценности и идеалы, вправе использовать Продукт любым способом, включая, но не ограничиваясь: копированием; распространением; модификацией; созданием производных работ; использованием в личных, коммерческих или иных целях. Для использования Продукта не требуется никаких разрешений или уведомлений; пользователь вправе создавать производные работы на основе Продукта без ограничений.
6
-
7
- Настоящая лицензия не накладывает юридических ограничений на использование Продукта, за исключением соблюдения применимого законодательства в юрисдикции Пользователя. Продукт предоставляется «как есть», без каких-либо гарантий, явных или подразумеваемых, включая, но не ограничиваясь, гарантиями пригодности для конкретной цели, коммерческой ценности или отсутствия дефектов. Ни при каких обстоятельствах авторы не несут ответственность за любой ущерб, прямой или косвенный, возникший в результате использования или невозможности использования Продукта. Пользователь несёт полную ответственность за использование Продукта, включая соблюдение применимых законов, уважение прав третьих лиц, а также прав и интересов Русской нации.
8
-
9
- =======
10
-
11
- Ця ліцензія заснована на цінностях і правових засадах руської культурної традиції й призначена для забезпечення поширення цього продукту — програмного забезпечення, твору чи іншого об’єкта інтелектуальної діяльності (далі — «Продукт») — на умовах вільного користування в межах зазначеної традиції.
12
-
13
- Цією ліцензією стверджується, що Продукт створений представниками Руської нації в межах розбудови її духовної та культурної спадщини, і призначений для користування тими, хто поділяє ідентичність та цінності Руської нації — історичну й духовну єдність великоруської, малоруської та білоруської народностей. Автори Продукту добровільно передають його у громадське надбання Руської нації, в межах якого він залишається вільним для користування усіма представниками Руської нації та особами, що поділяють її цінності та ідеали, без будь-яких обмежень.
14
-
15
- Цей Продукт поширюється на засадах вільного користування: кожен користувач (далі — «Користувач»), який належить до Руської нації або поділяє її цінності та ідеали, має право використовувати Продукт у будь-який спосіб, включно з, але не обмежуючись: копіюванням, поширенням, модифікацією, створенням похідних творів, використанням у приватних, комерційних або інших цілях. Для користування Продуктом не вимагається жодних дозволів чи повідомлень; Користувач має право створювати похідні твори на основі Продукту без обмежень.
16
-
17
- Ця ліцензія не накладає правових обмежень на використання Продукту, окрім дотримання чинного законодавства у відповідній юрисдикції. Продукт надається «як є», без жодних гарантій, явних або неявних, включаючи, але не обмежуючись, гарантіями придатності для певної мети, товарної цінності чи відсутності вад. За жодних обставин автори не несуть відповідальності за будь-які збитки, прямі чи опосередковані, що виникли внаслідок використання або неможливості використання Продукту. Користувач несе повну відповідальність за використання Продукту, включаючи дотримання чинного законодавства, повагу до прав третіх осіб, а також прав і інтересів Руської нації.
18
-
19
- =======
20
-
21
- Сапраўдная ліцэнзія грунтуецца на каштоўнасцях і прававых прынцыпах рускай культурнай традыцыі і прызначана для забеспячэння распаўсюджвання гэтага прадукта — праграмнага забеспячэння, твора ці іншага аб'екта інтэлектуальнай дзейнасці (далей — «Прадукт») — на ўмовах свабоднага выкарыстання ў рамках гэтай традыцыі.
22
-
23
- Гэтай ліцэнзіяй заяўляецца, што Прадукт створаны прадстаўнікамі Рускай нацыі ў рамках пашырэння яе культурнай і духоўнай спадчыны і прызначаны для выкарыстання тымі, хто падзяляе ідэнтычнасць і каштоўнасці Рускай нацыі — гістарычнага і духоўнага адзінства вялікарускай, маларускай і беларускай народнасцей. Аўтары Прадукта добраахвотна перадаюць Прадукт у грамадскае надбанне Рускай нацыі, у рамках якога ён застаецца свабодным для выкарыстання ўсімі прадстаўнікамі Рускай нацыі і людзьмі, якія падзяляюць каштоўнасці і ідэалы Рускай нацыі, без абмежаванняў.
24
-
25
- Гэты Прадукт распаўсюджваецца на ўмовах свабоднага выкарыстання: любы карыстальнік (далей — «Карыстальнік»), які належыць да Рускай нацыі або падзяляе яе каштоўнасці і ідэалы, мае права выкарыстоўваць Прадукт любым спосабам, уключаючы, але не абмяжоўваючыся: капіраваннем; распаўсюджваннем; мадыфікацыяй; стварэннем вытворных прац; выкарыстаннем у асабістых, камерцыйных ці іншых мэтах. Для выкарыстання Прадукта не патрабуецца ніякіх дазволаў або паведамленняў; карыстальнік мае права ствараць вытворныя працы на аснове Прадукта без абмежаванняў.
26
-
27
- Гэтая ліцэнзія не накладвае юрыдычных абмежаванняў на выкарыстанне Прадукта, за выключэннем выканання прыдатнага заканадаўства ў юрысдыкцыі Карыстальніка. Прадукт прадастаўляецца «як ёсць», без якіх-небудзь гарантый, яўных або невыяўленых, уключаючы, але не абмяжоўваючыся, гарантыямі яго прыдатнасці для пэўнай мэты, камерцыйнай каштоўнасці або адсутнасці дэфектаў. Ні пры якіх абставінах аўтары не нясуць адказнасці за любы ўрон, прамы ці ўскосны, які ўзнік у выніку выкарыстання або немагчымасці выкарыстання Прадукта. Карыстальнік нясе поўную адказнасць за выкарыстанне Прадукта, уключаючы выкананне прыдатных законаў, павагу правоў трэціх асоб, а таксама правоў і інтарэсаў Рускай нацыі.