rupython 1.2.2__tar.gz → 1.2.3__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.2.2 → rupython-1.2.3}/PKG-INFO +1 -1
- {rupython-1.2.2 → rupython-1.2.3}/rupython/__main__.py +4 -15
- rupython-1.2.3/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 +21 -0
- rupython-1.2.3/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 +478 -0
- {rupython-1.2.2 → rupython-1.2.3}/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 +11 -10
- {rupython-1.2.2 → rupython-1.2.3}/rupython//320/234/320/276/320/264/321/203/320/273/320/270//320/241/320/273/321/203/321/207.py +4 -3
- {rupython-1.2.2 → rupython-1.2.3}/rupython.egg-info/PKG-INFO +1 -1
- {rupython-1.2.2 → rupython-1.2.3}/rupython.egg-info/SOURCES.txt +2 -0
- {rupython-1.2.2 → rupython-1.2.3}/setup.py +1 -1
- {rupython-1.2.2 → rupython-1.2.3}/LICENSE +0 -0
- {rupython-1.2.2 → rupython-1.2.3}/README.md +0 -0
- {rupython-1.2.2 → rupython-1.2.3}/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" +0 -0
- {rupython-1.2.2 → rupython-1.2.3}/rupython//320/234/320/276/320/264/321/203/320/273/320/270//320/221/320/224.py" +0 -0
- {rupython-1.2.2 → rupython-1.2.3}/rupython//320/234/320/276/320/264/321/203/320/273/320/270//320/234/320/260/321/202/320/265/320/274.py" +0 -0
- {rupython-1.2.2 → rupython-1.2.3}/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" +0 -0
- {rupython-1.2.2 → rupython-1.2.3}/rupython.egg-info/dependency_links.txt +0 -0
- {rupython-1.2.2 → rupython-1.2.3}/rupython.egg-info/top_level.txt +0 -0
- {rupython-1.2.2 → rupython-1.2.3}/setup.cfg +0 -0
@@ -1,4 +1,5 @@
|
|
1
1
|
from . import Преобразователь
|
2
|
+
from . import __Общие_функции__
|
2
3
|
import os as ОС
|
3
4
|
import sys as Система
|
4
5
|
|
@@ -13,18 +14,6 @@ def Перехватчик_прерывания_клавиатурой(тип_и
|
|
13
14
|
Исходник = Преобразователь.Преобразовать_код(Путь_к_файлу)
|
14
15
|
if Исходник: Преобразователь.Запустить_код(Название_файла, Исходник, Путь_к_файлу)
|
15
16
|
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
print('\n' + сообщение)
|
20
|
-
msvcrt.getch()
|
21
|
-
else:
|
22
|
-
import tty
|
23
|
-
import termios
|
24
|
-
print('\n' + сообщение)
|
25
|
-
fd = Система.stdin.fileno()
|
26
|
-
старые_настройки = termios.tcgetattr(fd)
|
27
|
-
try: tty.setraw(fd); Система.stdin.read(1)
|
28
|
-
finally: termios.tcsetattr(fd, termios.TCSADRAIN, старые_настройки)
|
29
|
-
|
30
|
-
Ожидать_нажатие_клавиши('=== Исполнение кода завершено. Нажмите любую клавишу для выхода. ===')
|
17
|
+
__Общие_функции__.Ожидать_нажатие_клавиши(
|
18
|
+
'=== Исполнение кода завершено. Нажмите любую клавишу для выхода. ==='
|
19
|
+
)
|
@@ -0,0 +1,21 @@
|
|
1
|
+
import os as ОС
|
2
|
+
|
3
|
+
def Заменить_ключи_в_словаре(словарь, замены):
|
4
|
+
новый = {}
|
5
|
+
for н, з in словарь.items():
|
6
|
+
новый.setdefault(замены[н] if н in замены.keys() else н, з)
|
7
|
+
return новый
|
8
|
+
|
9
|
+
def Ожидать_нажатие_клавиши(сообщение):
|
10
|
+
if ОС.name == 'nt':
|
11
|
+
import msvcrt
|
12
|
+
print('\n' + сообщение)
|
13
|
+
msvcrt.getch()
|
14
|
+
else:
|
15
|
+
import tty
|
16
|
+
import termios
|
17
|
+
print('\n' + сообщение)
|
18
|
+
fd = Система.stdin.fileno()
|
19
|
+
старые_настройки = termios.tcgetattr(fd)
|
20
|
+
try: tty.setraw(fd); Система.stdin.read(1)
|
21
|
+
finally: termios.tcsetattr(fd, termios.TCSADRAIN, старые_настройки)
|
@@ -0,0 +1,478 @@
|
|
1
|
+
import datetime
|
2
|
+
from rupython import __Общие_функции__
|
3
|
+
|
4
|
+
Часовой_пояс = datetime.timezone
|
5
|
+
Временная_метка = datetime.datetime
|
6
|
+
|
7
|
+
Формат_даты = '%Д.%М.%Г'
|
8
|
+
Формат_времени = '%ч:%м:%с'
|
9
|
+
Формат_даты_и_времени = '%Д.%М.%Г %ч:%м:%с'
|
10
|
+
|
11
|
+
Словарь_спецификаторов = {
|
12
|
+
'%Г': '%Y', # год (4 цифры, например 1945)
|
13
|
+
'%М': '%m', # месяц (2 цифры, 01–12)
|
14
|
+
'%Д': '%d', # день (2 цифры, 01–31)
|
15
|
+
'%ч': '%H', # часы (2 цифры, 00–23)
|
16
|
+
'%м': '%M', # минуты (2 цифры, 00–59)
|
17
|
+
'%с': '%S', # секунды (2 цифры, 00–59)
|
18
|
+
'%д': '%f' # дробная часть секунды (в микросекундах) (6 цифр, 000000–999999)
|
19
|
+
}
|
20
|
+
|
21
|
+
Словарь_параметров = {
|
22
|
+
'год': 'year', 'месяц': 'month', 'день': 'day',
|
23
|
+
'часов': 'hour', 'минут': 'minute', 'секунд': 'second',
|
24
|
+
'микросекунд': 'microsecond', 'часовой_пояс': 'tzinfo',
|
25
|
+
'добавка_летнего_времени': 'fold'
|
26
|
+
}
|
27
|
+
|
28
|
+
Словарь_параметров_интервала = {
|
29
|
+
'дней': 'days', 'секунд': 'seconds',
|
30
|
+
'микросекунд': 'microseconds', 'миллисекунд': 'milliseconds',
|
31
|
+
'минут': 'minutes', 'часов': 'hours', 'недель': 'weeks'
|
32
|
+
}
|
33
|
+
|
34
|
+
def Перевести_формат(формат):
|
35
|
+
for русский, питоновский in Словарь_спецификаторов.items():
|
36
|
+
формат = формат.replace(русский, питоновский)
|
37
|
+
return формат
|
38
|
+
|
39
|
+
class Дата_и_время:
|
40
|
+
def __init__(здесь, *ПА, **ИА):
|
41
|
+
if len(ПА) > 0 and type(ПА[0]) == datetime.datetime: здесь._дата_время = ПА[0]
|
42
|
+
else:
|
43
|
+
ИА = __Общие_функции__.Заменить_ключи_в_словаре(
|
44
|
+
ИА, Словарь_параметров
|
45
|
+
)
|
46
|
+
здесь._дата_время = datetime.datetime(*ПА, **ИА)
|
47
|
+
|
48
|
+
@staticmethod
|
49
|
+
def Сейчас(часовой_пояс=None):
|
50
|
+
return Дата_и_время(datetime.datetime.now(часовой_пояс))
|
51
|
+
|
52
|
+
@staticmethod
|
53
|
+
def До_сейчас():
|
54
|
+
return Дата_и_время(datetime.datetime.utcnow())
|
55
|
+
|
56
|
+
@staticmethod
|
57
|
+
def Из_метки_времени(метка_времени, часовой_пояс=None):
|
58
|
+
return Дата_и_время(datetime.datetime.fromtimestamp(метка_времени, часовой_пояс))
|
59
|
+
|
60
|
+
@staticmethod
|
61
|
+
def Из_формата_ISO(строка):
|
62
|
+
return Дата_и_время(datetime.datetime.fromisoformat(строка))
|
63
|
+
|
64
|
+
@staticmethod
|
65
|
+
def Разобрать(строка, формат):
|
66
|
+
формат = Перевести_формат(формат)
|
67
|
+
return Дата_и_время(datetime.datetime.strptime(строка, формат))
|
68
|
+
|
69
|
+
def Формат(здесь, формат):
|
70
|
+
формат = Перевести_формат(формат)
|
71
|
+
return здесь._дата_время.strftime(формат)
|
72
|
+
|
73
|
+
def В_строку(здесь):
|
74
|
+
return здесь._дата_время.isoformat()
|
75
|
+
|
76
|
+
def В_метку_времени(здесь):
|
77
|
+
return здесь._дата_время.timestamp()
|
78
|
+
|
79
|
+
def День_недели(здесь):
|
80
|
+
return здесь._дата_время.weekday()
|
81
|
+
|
82
|
+
def Номер_дня_недели(здесь):
|
83
|
+
return здесь._дата_время.isoweekday()
|
84
|
+
|
85
|
+
def Добавить(здесь, интервал):
|
86
|
+
return Дата_и_время(здесь._дата_время + интервал._интервал)
|
87
|
+
|
88
|
+
def Вычесть(здесь, интервал):
|
89
|
+
return Дата_и_время(здесь._дата_время - интервал._интервал)
|
90
|
+
|
91
|
+
def __add__(здесь, другой):
|
92
|
+
if isinstance(другой, Интервал):
|
93
|
+
return здесь.Добавить(другой)
|
94
|
+
return NotImplemented
|
95
|
+
|
96
|
+
def __radd__(здесь, другой):
|
97
|
+
if isinstance(другой, Интервал):
|
98
|
+
return здесь.Добавить(другой)
|
99
|
+
return NotImplemented
|
100
|
+
|
101
|
+
def __sub__(здесь, другой):
|
102
|
+
if isinstance(другой, Интервал):
|
103
|
+
return здесь.Вычесть(другой)
|
104
|
+
return NotImplemented
|
105
|
+
|
106
|
+
def __eq__(здесь, другой):
|
107
|
+
if isinstance(другой, Дата_и_время):
|
108
|
+
return здесь._дата_время == другой._дата_время
|
109
|
+
return NotImplemented
|
110
|
+
|
111
|
+
def __lt__(здесь, другой):
|
112
|
+
if isinstance(другой, Дата_и_время):
|
113
|
+
return здесь._дата_время < другой._дата_время
|
114
|
+
return NotImplemented
|
115
|
+
|
116
|
+
def __le__(здесь, другой):
|
117
|
+
if isinstance(другой, Дата_и_время):
|
118
|
+
return здесь._дата_время <= другой._дата_время
|
119
|
+
return NotImplemented
|
120
|
+
|
121
|
+
def __gt__(здесь, другой):
|
122
|
+
if isinstance(другой, Дата_и_время):
|
123
|
+
return здесь._дата_время > другой._дата_время
|
124
|
+
return NotImplemented
|
125
|
+
|
126
|
+
def __ge__(здесь, другой):
|
127
|
+
if isinstance(другой, Дата_и_время):
|
128
|
+
return здесь._дата_время >= другой._дата_время
|
129
|
+
return NotImplemented
|
130
|
+
|
131
|
+
@property
|
132
|
+
def Год(здесь):
|
133
|
+
return здесь._дата_время.year
|
134
|
+
|
135
|
+
@property
|
136
|
+
def Месяц(здесь):
|
137
|
+
return здесь._дата_время.month
|
138
|
+
|
139
|
+
@property
|
140
|
+
def День(здесь):
|
141
|
+
return здесь._дата_время.day
|
142
|
+
|
143
|
+
@property
|
144
|
+
def Часов(здесь):
|
145
|
+
return здесь._дата_время.hour
|
146
|
+
|
147
|
+
@property
|
148
|
+
def Минут(здесь):
|
149
|
+
return здесь._дата_время.minute
|
150
|
+
|
151
|
+
@property
|
152
|
+
def Секунд(здесь):
|
153
|
+
return здесь._дата_время.second
|
154
|
+
|
155
|
+
@property
|
156
|
+
def Микросекунд(здесь):
|
157
|
+
return здесь._дата_время.microsecond
|
158
|
+
|
159
|
+
@property
|
160
|
+
def Часовой_пояс(здесь):
|
161
|
+
return здесь._дата_время.tzinfo
|
162
|
+
|
163
|
+
class Дата:
|
164
|
+
def __init__(здесь, *ПА, **ИА):
|
165
|
+
if len(ПА) > 0 and type(ПА[0]) == datetime.date: здесь._дата = ПА[0]
|
166
|
+
else:
|
167
|
+
ИА = __Общие_функции__.Заменить_ключи_в_словаре(
|
168
|
+
ИА, Словарь_параметров
|
169
|
+
)
|
170
|
+
здесь._дата = datetime.date(*ПА, **ИА)
|
171
|
+
|
172
|
+
@staticmethod
|
173
|
+
def Сегодня():
|
174
|
+
return Дата(datetime.date.today())
|
175
|
+
|
176
|
+
@staticmethod
|
177
|
+
def От_даты(порядковый_номер):
|
178
|
+
return Дата(datetime.date.fromordinal(порядковый_номер))
|
179
|
+
|
180
|
+
def Формат(здесь, формат):
|
181
|
+
формат = Перевести_формат(формат)
|
182
|
+
return здесь._дата.strftime(формат)
|
183
|
+
|
184
|
+
def В_строку(здесь):
|
185
|
+
return здесь._дата.isoformat()
|
186
|
+
|
187
|
+
def День_недели(здесь):
|
188
|
+
return здесь._дата.isoweekday()
|
189
|
+
|
190
|
+
def Добавить(здесь, интервал):
|
191
|
+
return Дата(здесь._дата + интервал._интервал)
|
192
|
+
|
193
|
+
def Вычесть(здесь, интервал):
|
194
|
+
return Дата(здесь._дата - интервал._интервал)
|
195
|
+
|
196
|
+
def __add__(здесь, другой):
|
197
|
+
if isinstance(другой, Интервал):
|
198
|
+
return здесь.Добавить(другой)
|
199
|
+
return NotImplemented
|
200
|
+
|
201
|
+
def __radd__(здесь, другой):
|
202
|
+
if isinstance(другой, Интервал):
|
203
|
+
return здесь.Добавить(другой)
|
204
|
+
return NotImplemented
|
205
|
+
|
206
|
+
def __sub__(здесь, другой):
|
207
|
+
if isinstance(другой, Интервал):
|
208
|
+
return здесь.Вычесть(другой)
|
209
|
+
return NotImplemented
|
210
|
+
|
211
|
+
def __eq__(здесь, другой):
|
212
|
+
if isinstance(другой, Дата):
|
213
|
+
return здесь._дата == другой._дата
|
214
|
+
return NotImplemented
|
215
|
+
|
216
|
+
def __lt__(здесь, другой):
|
217
|
+
if isinstance(другой, Дата):
|
218
|
+
return здесь._дата < другой._дата
|
219
|
+
return NotImplemented
|
220
|
+
|
221
|
+
def __le__(здесь, другой):
|
222
|
+
if isinstance(другой, Дата):
|
223
|
+
return здесь._дата <= другой._дата
|
224
|
+
return NotImplemented
|
225
|
+
|
226
|
+
def __gt__(здесь, другой):
|
227
|
+
if isinstance(другой, Дата):
|
228
|
+
return здесь._дата > другой._дата
|
229
|
+
return NotImplemented
|
230
|
+
|
231
|
+
def __ge__(здесь, другой):
|
232
|
+
if isinstance(другой, Дата):
|
233
|
+
return здесь._дата >= другой._дата
|
234
|
+
return NotImplemented
|
235
|
+
|
236
|
+
@property
|
237
|
+
def год(здесь): return здесь._дата.year
|
238
|
+
|
239
|
+
@property
|
240
|
+
def месяц(здесь): return здесь._дата.month
|
241
|
+
|
242
|
+
@property
|
243
|
+
def день(здесь): return здесь._дата.day
|
244
|
+
|
245
|
+
class Время:
|
246
|
+
def __init__(здесь, *ПА, **ИА):
|
247
|
+
ИА = __Общие_функции__.Заменить_ключи_в_словаре(
|
248
|
+
ИА, Словарь_параметров
|
249
|
+
)
|
250
|
+
здесь._время = datetime.time(*ПА, **ИА)
|
251
|
+
|
252
|
+
def Формат(здесь, формат):
|
253
|
+
формат = Перевести_формат(формат)
|
254
|
+
return здесь._время.strftime(формат)
|
255
|
+
|
256
|
+
def В_строку(здесь):
|
257
|
+
return здесь._время.isoformat()
|
258
|
+
|
259
|
+
def Заменить(здесь, **ИА):
|
260
|
+
ИА = __Общие_функции__.Заменить_ключи_в_словаре(
|
261
|
+
ИА, Словарь_параметров
|
262
|
+
)
|
263
|
+
return Время(здесь._время.replace(**ИА))
|
264
|
+
|
265
|
+
def Добавить(здесь, интервал):
|
266
|
+
базовая_дата = datetime.datetime(1970, 1, 1, здесь._время.hour, здесь._время.minute, здесь._время.second, здесь._время.microsecond, здесь._время.tzinfo)
|
267
|
+
результат = базовая_дата + интервал._интервал
|
268
|
+
return Время(результат.hour, результат.minute, результат.second, результат.microsecond, здесь._время.tzinfo)
|
269
|
+
|
270
|
+
def Вычесть(здесь, интервал):
|
271
|
+
базовая_дата = datetime.datetime(1970, 1, 1, здесь._время.hour, здесь._время.minute, здесь._время.second, здесь._время.microsecond, здесь._время.tzinfo)
|
272
|
+
результат = базовая_дата - интервал._интервал
|
273
|
+
return Время(результат.hour, результат.minute, результат.second, результат.microsecond, здесь._время.tzinfo)
|
274
|
+
|
275
|
+
def __add__(здесь, другой):
|
276
|
+
if isinstance(другой, Интервал):
|
277
|
+
return здесь.Добавить(другой)
|
278
|
+
return NotImplemented
|
279
|
+
|
280
|
+
def __radd__(здесь, другой):
|
281
|
+
if isinstance(другой, Интервал):
|
282
|
+
return здесь.Добавить(другой)
|
283
|
+
return NotImplemented
|
284
|
+
|
285
|
+
def __sub__(здесь, другой):
|
286
|
+
if isinstance(другой, Интервал):
|
287
|
+
return здесь.Вычесть(другой)
|
288
|
+
return NotImplemented
|
289
|
+
|
290
|
+
def __eq__(здесь, другой):
|
291
|
+
if isinstance(другой, Время):
|
292
|
+
return здесь._время == другой._время
|
293
|
+
return NotImplemented
|
294
|
+
|
295
|
+
def __lt__(здесь, другой):
|
296
|
+
if isinstance(другой, Время):
|
297
|
+
return здесь._время < другой._время
|
298
|
+
return NotImplemented
|
299
|
+
|
300
|
+
def __le__(здесь, другой):
|
301
|
+
if isinstance(другой, Время):
|
302
|
+
return здесь._время <= другой._время
|
303
|
+
return NotImplemented
|
304
|
+
|
305
|
+
def __gt__(здесь, другой):
|
306
|
+
if isinstance(другой, Время):
|
307
|
+
return здесь._время > другой._время
|
308
|
+
return NotImplemented
|
309
|
+
|
310
|
+
def __ge__(здесь, другой):
|
311
|
+
if isinstance(другой, Время):
|
312
|
+
return здесь._время >= другой._время
|
313
|
+
return NotImplemented
|
314
|
+
|
315
|
+
@property
|
316
|
+
def Часов(здесь):
|
317
|
+
return здесь._время.hour
|
318
|
+
|
319
|
+
@property
|
320
|
+
def Минут(здесь):
|
321
|
+
return здесь._время.minute
|
322
|
+
|
323
|
+
@property
|
324
|
+
def Секунд(здесь):
|
325
|
+
return здесь._время.second
|
326
|
+
|
327
|
+
@property
|
328
|
+
def Микросекунд(здесь):
|
329
|
+
return здесь._время.microsecond
|
330
|
+
|
331
|
+
@property
|
332
|
+
def Часовой_пояс(здесь):
|
333
|
+
return здесь._время.tzinfo
|
334
|
+
|
335
|
+
class Интервал:
|
336
|
+
def __init__(здесь, *ПА, **ИА):
|
337
|
+
if len(ПА) > 0 and type(ПА[0]) == datetime.timedelta: здесь._интервал = ПА[0]
|
338
|
+
else:
|
339
|
+
ИА = __Общие_функции__.Заменить_ключи_в_словаре(
|
340
|
+
ИА, Словарь_параметров_интервала
|
341
|
+
)
|
342
|
+
здесь._интервал = datetime.timedelta(*ПА, **ИА)
|
343
|
+
|
344
|
+
def Добавить(здесь, другой):
|
345
|
+
return Интервал(дней=(здесь._интервал + другой._интервал).days, секунд=(здесь._интервал + другой._интервал).seconds, микросекунд=(здесь._интервал + другой._интервал).microseconds)
|
346
|
+
|
347
|
+
def Вычесть(здесь, другой):
|
348
|
+
return Интервал(дней=(здесь._интервал - другой._интервал).days, секунд=(здесь._интервал - другой._интервал).seconds, микросекунд=(здесь._интервал - другой._интервал).microseconds)
|
349
|
+
|
350
|
+
def __add__(здесь, другой):
|
351
|
+
if isinstance(другой, Интервал):
|
352
|
+
return здесь.Добавить(другой)
|
353
|
+
return NotImplemented
|
354
|
+
|
355
|
+
def __sub__(здесь, другой):
|
356
|
+
if isinstance(другой, Интервал):
|
357
|
+
return здесь.Вычесть(другой)
|
358
|
+
return NotImplemented
|
359
|
+
|
360
|
+
def __eq__(здесь, другой):
|
361
|
+
if isinstance(другой, Интервал):
|
362
|
+
return здесь._интервал == другой._интервал
|
363
|
+
return NotImplemented
|
364
|
+
|
365
|
+
def __lt__(здесь, другой):
|
366
|
+
if isinstance(другой, Интервал):
|
367
|
+
return здесь._интервал < другой._интервал
|
368
|
+
return NotImplemented
|
369
|
+
|
370
|
+
def __le__(здесь, другой):
|
371
|
+
if isinstance(другой, Интервал):
|
372
|
+
return здесь._интервал <= другой._интервал
|
373
|
+
return NotImplemented
|
374
|
+
|
375
|
+
def __gt__(здесь, другой):
|
376
|
+
if isinstance(другой, Интервал):
|
377
|
+
return здесь._интервал > другой._интервал
|
378
|
+
return NotImplemented
|
379
|
+
|
380
|
+
def __ge__(здесь, другой):
|
381
|
+
if isinstance(другой, Интервал):
|
382
|
+
return здесь._интервал >= другой._интервал
|
383
|
+
return NotImplemented
|
384
|
+
|
385
|
+
@property
|
386
|
+
def Дней(здесь):
|
387
|
+
return здесь._интервал.days
|
388
|
+
|
389
|
+
@property
|
390
|
+
def Секунд(здесь):
|
391
|
+
return здесь._интервал.seconds
|
392
|
+
|
393
|
+
@property
|
394
|
+
def Микросекунд(здесь):
|
395
|
+
return здесь._интервал.microseconds
|
396
|
+
|
397
|
+
@property
|
398
|
+
def Всего_секунд(здесь):
|
399
|
+
return здесь._интервал.total_seconds()
|
400
|
+
|
401
|
+
def Совместить(дата, время):
|
402
|
+
return Дата_время(datetime.datetime.combine(дата._дата, время._время))
|
403
|
+
|
404
|
+
class ДатаСтСт:
|
405
|
+
def __init__(здесь, *ПА):
|
406
|
+
if len(ПА) == 3:
|
407
|
+
здесь.год, здесь.месяц, здесь.день = ПА
|
408
|
+
здесь._Посчитать_дни()
|
409
|
+
else:
|
410
|
+
if isinstance(ПА[0], ДатаСтСт):
|
411
|
+
здесь.в_днях = ПА[0].в_днях
|
412
|
+
else:
|
413
|
+
здесь.в_днях = ПА[0]
|
414
|
+
здесь._Посчитать_дату()
|
415
|
+
|
416
|
+
def _Посчитать_день_недели_и_года(здесь):
|
417
|
+
здесь.день_недели = (здесь.в_днях - 1) % 7
|
418
|
+
if здесь.день_недели == 0: здесь.день_недели = 7
|
419
|
+
здесь.день_года = (
|
420
|
+
(275 * здесь.месяц // 9)
|
421
|
+
- (((здесь.месяц + 9) // 12) * (1 + ((здесь.год - 4 * (здесь.год // 4) + 2) // 3)))
|
422
|
+
+ здесь.день
|
423
|
+
- 31
|
424
|
+
)
|
425
|
+
|
426
|
+
def _Посчитать_дни(здесь):
|
427
|
+
здесь.в_днях = (
|
428
|
+
367 * здесь.год
|
429
|
+
- int((7 * (здесь.год + 5001 + int((здесь.месяц - 9) / 7))) / 4)
|
430
|
+
+ int((275 * здесь.месяц) / 9)
|
431
|
+
+ здесь.день
|
432
|
+
+ 8353
|
433
|
+
)
|
434
|
+
здесь._Посчитать_день_недели_и_года()
|
435
|
+
|
436
|
+
def _Посчитать_дату(здесь):
|
437
|
+
a = здесь.в_днях + 1890
|
438
|
+
b = int((a - 122.1) / 365.25)
|
439
|
+
c = int(365.25 * b)
|
440
|
+
d = int((a - c) / 30.6001)
|
441
|
+
здесь.день = a - c - int(30.6001 * d)
|
442
|
+
здесь.месяц = d - (13 if d > 13 else 1)
|
443
|
+
здесь.год = b - (3 if здесь.месяц < 3 else 4)
|
444
|
+
здесь._Посчитать_день_недели_и_года()
|
445
|
+
|
446
|
+
def Добавить_дни(здесь, количество):
|
447
|
+
здесь.в_днях += количество
|
448
|
+
здесь._Посчитать_дату()
|
449
|
+
return здесь
|
450
|
+
|
451
|
+
def Разница_в_днях(здесь, другая_дата):
|
452
|
+
return здесь.в_днях - другая_дата.в_днях
|
453
|
+
|
454
|
+
def Сравнить(здесь, другая_дата):
|
455
|
+
if здесь.в_днях < другая_дата.в_днях: return -1
|
456
|
+
elif здесь.в_днях > другая_дата.в_днях: return 1
|
457
|
+
else: return 0
|
458
|
+
|
459
|
+
def В_новый_стиль(здесь):
|
460
|
+
разница = здесь.год // 100 - здесь.год // 400 - 2
|
461
|
+
год_увеличения_разницы = здесь.год % 100 == 0 and здесь.год % 400 != 0
|
462
|
+
if год_увеличения_разницы:
|
463
|
+
if здесь.день_года < 60: разница -= 1
|
464
|
+
if здесь.день_года == 59 and год_увеличения_разницы:
|
465
|
+
дата = Дата(здесь.год, 3, 1) + Интервал(дней = разница)
|
466
|
+
else:
|
467
|
+
дата = Дата(здесь.год, здесь.месяц, здесь.день)
|
468
|
+
дата += Интервал(дней = разница)
|
469
|
+
return дата
|
470
|
+
|
471
|
+
def Пасха(год, нов_ст = None):
|
472
|
+
смещение = (год % 19 * 19 + 15) % 30
|
473
|
+
смещение += (год % 4 * 2 + год % 7 * 4 + 6 * смещение + 6) % 7
|
474
|
+
нов_ст = True if нов_ст is None and год >= 1918 else нов_ст
|
475
|
+
дата = ДатаСтСт(год, 3, 22)
|
476
|
+
дата.Добавить_дни(смещение)
|
477
|
+
if нов_ст: return дата.В_новый_стиль()
|
478
|
+
else: return дата
|
@@ -1,4 +1,5 @@
|
|
1
1
|
import re
|
2
|
+
from rupython import __Общие_функции__
|
2
3
|
|
3
4
|
БезФлагов = 0
|
4
5
|
Знаки7бит = A = re.ASCII
|
@@ -19,42 +20,42 @@ class Шаблон:
|
|
19
20
|
здесь.шаблон = объект.pattern
|
20
21
|
|
21
22
|
def Поиск(здесь, *ПА, **ИА):
|
22
|
-
ИА = __
|
23
|
+
ИА = __Общие_функции__.Заменить_ключи_в_словаре(ИА, \
|
23
24
|
{ 'строка': 'string', 'нач_поз': 'pos', 'кон_поз': 'endpos' })
|
24
25
|
return здесь.объект.search(*ПА, **ИА)
|
25
26
|
|
26
27
|
def СовпадНач(здесь, *ПА, **ИА):
|
27
|
-
ИА = __
|
28
|
+
ИА = __Общие_функции__.Заменить_ключи_в_словаре(ИА, \
|
28
29
|
{ 'строка': 'string', 'нач_поз': 'pos', 'кон_поз': 'endpos' })
|
29
30
|
return здесь.объект.match(*ПА, **ИА)
|
30
31
|
|
31
32
|
def ПолнСоотв(здесь, *ПА, **ИА):
|
32
|
-
ИА = __
|
33
|
+
ИА = __Общие_функции__.Заменить_ключи_в_словаре(ИА, \
|
33
34
|
{ 'строка': 'string', 'нач_поз': 'pos', 'кон_поз': 'endpos' })
|
34
35
|
return здесь.объект.fullmatch(*ПА, **ИА)
|
35
36
|
|
36
37
|
def Разбить(здесь, *ПА, **ИА):
|
37
|
-
ИА = __
|
38
|
+
ИА = __Общие_функции__.Заменить_ключи_в_словаре(ИА, \
|
38
39
|
{ 'строка': 'string', 'макс_делений': 'maxsplit' })
|
39
40
|
return здесь.объект.split(*ПА, **ИА)
|
40
41
|
|
41
42
|
def НайтиВсё(здесь, *ПА, **ИА):
|
42
|
-
ИА = __
|
43
|
+
ИА = __Общие_функции__.Заменить_ключи_в_словаре(ИА, \
|
43
44
|
{ 'строка': 'string', 'нач_поз': 'pos', 'кон_поз': 'endpos' })
|
44
45
|
return здесь.объект.findall(*ПА, **ИА)
|
45
46
|
|
46
47
|
def ИскатьПеречисл(здесь, *ПА, **ИА):
|
47
|
-
ИА = __
|
48
|
+
ИА = __Общие_функции__.Заменить_ключи_в_словаре(ИА, \
|
48
49
|
{ 'строка': 'string', 'нач_поз': 'pos', 'кон_поз': 'endpos' })
|
49
50
|
return здесь.объект.finditer(*ПА, **ИА)
|
50
51
|
|
51
52
|
def Заменить(здесь, *ПА, **ИА):
|
52
|
-
ИА = __
|
53
|
+
ИА = __Общие_функции__.Заменить_ключи_в_словаре(ИА, \
|
53
54
|
{ 'замена': 'repl', 'строка': 'string', 'количество': 'count' })
|
54
55
|
return здесь.объект.sub(*ПА, **ИА)
|
55
56
|
|
56
57
|
def ЗаменитьСч(здесь, *ПА, **ИА):
|
57
|
-
ИА = __
|
58
|
+
ИА = __Общие_функции__.Заменить_ключи_в_словаре(ИА, \
|
58
59
|
{ 'замена': 'repl', 'строка': 'string', 'количество': 'count' })
|
59
60
|
return здесь.объект.subn(*ПА, **ИА)
|
60
61
|
|
@@ -74,11 +75,11 @@ class Соответствие:
|
|
74
75
|
def __getitem__(здесь, индекс): return объект[индекс]
|
75
76
|
|
76
77
|
def Группы(здесь, *ПА, **ИА):
|
77
|
-
ИА = __
|
78
|
+
ИА = __Общие_функции__.Заменить_ключи_в_словаре(ИА, { 'по_умолчанию': 'default' })
|
78
79
|
return здесь.объект.groups(*ПА, **ИА)
|
79
80
|
|
80
81
|
def ИменовГруппы(здесь, *ПА, **ИА):
|
81
|
-
ИА = __
|
82
|
+
ИА = __Общие_функции__.Заменить_ключи_в_словаре(ИА, { 'по_умолчанию': 'default' })
|
82
83
|
return здесь.объект.groupdict(*ПА, **ИА)
|
83
84
|
|
84
85
|
def Начало(здесь, *группа): return здесь.объект.start(*группа)
|
@@ -1,4 +1,5 @@
|
|
1
1
|
import random
|
2
|
+
from rupython import __Общие_функции__
|
2
3
|
|
3
4
|
# Управление
|
4
5
|
def НачЗнач(a = None): return random.seed(a, version = 2)
|
@@ -10,7 +11,7 @@ def СлучБайты(n): return random.randbytes(n)
|
|
10
11
|
|
11
12
|
# Целые числа
|
12
13
|
def ИзДиапазона(*ПА, **ИА):
|
13
|
-
ИА = __
|
14
|
+
ИА = __Общие_функции__.Заменить_ключи_в_словаре(ИА, \
|
14
15
|
{ 'нач': 'start', 'кон': 'stop', 'шаг': 'step' })
|
15
16
|
return random.randrange(*ПА, **ИА)
|
16
17
|
def СлучЦелое(a, b): return random.randint(a, b)
|
@@ -19,12 +20,12 @@ def СлучБиты(k): return random.getrandbits(k)
|
|
19
20
|
# Последовательности
|
20
21
|
def ВыбратьИзПосл(посл): return random.choice(посл)
|
21
22
|
def ВыбратьПосл(*ПА, **ИА):
|
22
|
-
ИА = __
|
23
|
+
ИА = __Общие_функции__.Заменить_ключи_в_словаре(ИА, \
|
23
24
|
{ 'посл': 'population', 'веса': 'weights', 'накоплВеса': 'cum_weights' })
|
24
25
|
return random.choices(*ПА, **ИА)
|
25
26
|
def Перемешать(x): return random.shuffle(x)
|
26
27
|
def СлучПосл(*ПА, **ИА):
|
27
|
-
ИА = __
|
28
|
+
ИА = __Общие_функции__.Заменить_ключи_в_словаре(ИА, \
|
28
29
|
{ 'посл': 'population', 'колич': 'counts' })
|
29
30
|
return random.sample(*ПА, **ИА)
|
30
31
|
|
@@ -4,12 +4,14 @@ setup.cfg
|
|
4
4
|
setup.py
|
5
5
|
rupython/__main__.py
|
6
6
|
rupython/__Заголовочный_код__.py
|
7
|
+
rupython/__Общие_функции__.py
|
7
8
|
rupython/Преобразователь.py
|
8
9
|
rupython.egg-info/PKG-INFO
|
9
10
|
rupython.egg-info/SOURCES.txt
|
10
11
|
rupython.egg-info/dependency_links.txt
|
11
12
|
rupython.egg-info/top_level.txt
|
12
13
|
rupython/Модули/БД.py
|
14
|
+
rupython/Модули/ДатаВремя.py
|
13
15
|
rupython/Модули/Матем.py
|
14
16
|
rupython/Модули/РегВыр.py
|
15
17
|
rupython/Модули/Случ.py
|
@@ -3,7 +3,7 @@ from pathlib import Path as Путь
|
|
3
3
|
|
4
4
|
Установить(
|
5
5
|
name = 'rupython',
|
6
|
-
version = '1.2.
|
6
|
+
version = '1.2.3',
|
7
7
|
description = "Исполнитель кода Русского Питона",
|
8
8
|
packages = [ 'rupython', 'rupython.Модули' ],
|
9
9
|
long_description = (Путь(__file__).parent / 'README.md').read_text('UTF-8'),
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|