rupython 1.2.3__tar.gz → 1.2.4__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 (18) hide show
  1. {rupython-1.2.3 → rupython-1.2.4}/PKG-INFO +1 -1
  2. {rupython-1.2.3 → rupython-1.2.4}/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 +90 -15
  3. {rupython-1.2.3 → rupython-1.2.4}/rupython.egg-info/PKG-INFO +1 -1
  4. {rupython-1.2.3 → rupython-1.2.4}/setup.py +1 -1
  5. {rupython-1.2.3 → rupython-1.2.4}/LICENSE +0 -0
  6. {rupython-1.2.3 → rupython-1.2.4}/README.md +0 -0
  7. {rupython-1.2.3 → rupython-1.2.4}/rupython/__main__.py +0 -0
  8. {rupython-1.2.3 → rupython-1.2.4}/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
  9. {rupython-1.2.3 → rupython-1.2.4}/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
  10. {rupython-1.2.3 → rupython-1.2.4}/rupython//320/234/320/276/320/264/321/203/320/273/320/270//320/221/320/224.py" +0 -0
  11. {rupython-1.2.3 → rupython-1.2.4}/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
  12. {rupython-1.2.3 → rupython-1.2.4}/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
  13. {rupython-1.2.3 → rupython-1.2.4}/rupython//320/234/320/276/320/264/321/203/320/273/320/270//320/241/320/273/321/203/321/207.py" +0 -0
  14. {rupython-1.2.3 → rupython-1.2.4}/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
  15. {rupython-1.2.3 → rupython-1.2.4}/rupython.egg-info/SOURCES.txt +0 -0
  16. {rupython-1.2.3 → rupython-1.2.4}/rupython.egg-info/dependency_links.txt +0 -0
  17. {rupython-1.2.3 → rupython-1.2.4}/rupython.egg-info/top_level.txt +0 -0
  18. {rupython-1.2.3 → rupython-1.2.4}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: rupython
3
- Version: 1.2.3
3
+ Version: 1.2.4
4
4
  Summary: Исполнитель кода Русского Питона
5
5
  Description-Content-Type: text/markdown
6
6
  License-File: LICENSE
@@ -31,6 +31,28 @@ from rupython import __Общие_функции__
31
31
  'минут': 'minutes', 'часов': 'hours', 'недель': 'weeks'
32
32
  }
33
33
 
34
+ Месяцы_родительный = {
35
+ 1: 'января', 2: 'февраля', 3: 'марта', 4: 'апреля',
36
+ 5: 'мая', 6: 'июня', 7: 'июля', 8: 'августа',
37
+ 9: 'сентября', 10: 'октября', 11: 'ноября', 12: 'декабря'
38
+ }
39
+
40
+ Дни_недели_полные = {
41
+ 1: 'понедельник', 2: 'вторник', 3: 'среда', 4: 'четверг',
42
+ 5: 'пятница', 6: 'суббота', 7: 'воскресенье'
43
+ }
44
+
45
+ Дни_недели_краткие = {
46
+ 1: 'Пн', 2: 'Вт', 3: 'Ср', 4: 'Чт',
47
+ 5: 'Пт', 6: 'Сб', 7: 'Вс'
48
+ }
49
+
50
+ def Склонение_после_числительного(число, слова):
51
+ return str(число) + ' ' + \
52
+ (слова[2] if число % 100 >= 5 and число % 100 <= 20 else \
53
+ (слова[0] if число % 10 == 1 else \
54
+ (слова[1] if число % 10 >= 2 and число % 10 <= 4 else слова[2])))
55
+
34
56
  def Перевести_формат(формат):
35
57
  for русский, питоновский in Словарь_спецификаторов.items():
36
58
  формат = формат.replace(русский, питоновский)
@@ -49,29 +71,41 @@ class Дата_и_время:
49
71
  def Сейчас(часовой_пояс=None):
50
72
  return Дата_и_время(datetime.datetime.now(часовой_пояс))
51
73
 
52
- @staticmethod
53
- def До_сейчас():
54
- return Дата_и_время(datetime.datetime.utcnow())
55
-
56
74
  @staticmethod
57
75
  def Из_метки_времени(метка_времени, часовой_пояс=None):
58
76
  return Дата_и_время(datetime.datetime.fromtimestamp(метка_времени, часовой_пояс))
59
77
 
60
78
  @staticmethod
61
- def Из_формата_ISO(строка):
62
- return Дата_и_время(datetime.datetime.fromisoformat(строка))
79
+ def Из_строки(строка):
80
+ return Дата_и_время.Разобрать(строка, Формат_даты_и_времени)
63
81
 
64
82
  @staticmethod
65
83
  def Разобрать(строка, формат):
66
84
  формат = Перевести_формат(формат)
67
85
  return Дата_и_время(datetime.datetime.strptime(строка, формат))
68
86
 
69
- def Формат(здесь, формат):
87
+ def В_формат(здесь, формат):
70
88
  формат = Перевести_формат(формат)
71
89
  return здесь._дата_время.strftime(формат)
72
90
 
73
- def В_строку(здесь):
74
- return здесь._дата_время.isoformat()
91
+ def __str__(строка):
92
+ формат = Перевести_формат(Формат_даты_и_времени)
93
+ return здесь._дата_время.strftime(формат)
94
+
95
+ def Словами(здесь, формат='полный'):
96
+ день_недели = здесь.Номер_дня_недели()
97
+ if формат == 'полный':
98
+ return f"{Дни_недели_полные[день_недели]}, {здесь.День} {Месяцы_родительный[здесь.Месяц]} {здесь.Год} года, {здесь.Часов:02d}:{здесь.Минут:02d}"
99
+ elif формат == 'краткий':
100
+ return f"{Дни_недели_краткие[день_недели]}, {здесь.День} {Месяцы_родительный[здесь.Месяц]} {здесь.Год} г."
101
+ elif формат == 'дата':
102
+ return f"{здесь.День} {Месяцы_родительный[здесь.Месяц]} {здесь.Год} года"
103
+ elif формат == 'время':
104
+ return f"{здесь.Часов:02d}:{здесь.Минут:02d}"
105
+ elif формат == 'день_недели':
106
+ return Дни_недели_полные[день_недели]
107
+ else:
108
+ raise ValueError("Неподдерживаемый формат")
75
109
 
76
110
  def В_метку_времени(здесь):
77
111
  return здесь._дата_время.timestamp()
@@ -177,12 +211,16 @@ class Дата:
177
211
  def От_даты(порядковый_номер):
178
212
  return Дата(datetime.date.fromordinal(порядковый_номер))
179
213
 
180
- def Формат(здесь, формат):
214
+ def В_формат(здесь, формат):
181
215
  формат = Перевести_формат(формат)
182
216
  return здесь._дата.strftime(формат)
183
217
 
184
- def В_строку(здесь):
185
- return здесь._дата.isoformat()
218
+ def __str__(здесь):
219
+ формат = Перевести_формат(Формат_даты)
220
+ return здесь._дата.strftime(формат)
221
+
222
+ def Из_строки(строка):
223
+ return Время(Дата_и_время.Разобрать(строка, Формат_времени)._дата_время.time())
186
224
 
187
225
  def День_недели(здесь):
188
226
  return здесь._дата.isoweekday()
@@ -249,12 +287,13 @@ class Время:
249
287
  )
250
288
  здесь._время = datetime.time(*ПА, **ИА)
251
289
 
252
- def Формат(здесь, формат):
290
+ def В_формат(здесь, формат):
253
291
  формат = Перевести_формат(формат)
254
292
  return здесь._время.strftime(формат)
255
293
 
256
- def В_строку(здесь):
257
- return здесь._время.isoformat()
294
+ def __str__(здесь):
295
+ формат = Перевести_формат(Формат_времени)
296
+ return здесь._время.strftime(формат)
258
297
 
259
298
  def Заменить(здесь, **ИА):
260
299
  ИА = __Общие_функции__.Заменить_ключи_в_словаре(
@@ -347,6 +386,42 @@ class Интервал:
347
386
  def Вычесть(здесь, другой):
348
387
  return Интервал(дней=(здесь._интервал - другой._интервал).days, секунд=(здесь._интервал - другой._интервал).seconds, микросекунд=(здесь._интервал - другой._интервал).microseconds)
349
388
 
389
+ def __str__(здесь):
390
+ части = []
391
+ if здесь.Дней:
392
+ части.append(Склонение_после_числительного(здесь.Дней, ['день', 'дня', 'дней']))
393
+ секунд = здесь.Секунд
394
+ if секунд >= 3600:
395
+ часов = секунд // 3600
396
+ части.append(Склонение_после_числительного(часов, ['час', 'часа', 'часов']))
397
+ секунд %= 3600
398
+ if секунд >= 60:
399
+ минут = секунд // 60
400
+ части.append(Склонение_после_числительного(минут, ['минута', 'минуты', 'минут']))
401
+ секунд %= 60
402
+ if секунд:
403
+ части.append(Склонение_после_числительного(секунд, ['секунда', 'секунды', 'секунд']))
404
+ return ' '.join(части) or '0 секунд'
405
+
406
+ @staticmethod
407
+ def Из_строки(строка):
408
+ части = строка.split()
409
+ ИА = {}
410
+ i = 0
411
+ while i < len(части):
412
+ число = int(части[i])
413
+ единица = части[i + 1]
414
+ if 'день' in единица or 'дня' in единица or 'дней' in единица:
415
+ ИА['дней'] = число
416
+ elif 'час' in единица:
417
+ ИА['часов'] = число
418
+ elif 'минут' in единица:
419
+ ИА['минут'] = число
420
+ elif 'секунд' in единица:
421
+ ИА['секунд'] = число
422
+ i += 2
423
+ return Интервал(**ИА)
424
+
350
425
  def __add__(здесь, другой):
351
426
  if isinstance(другой, Интервал):
352
427
  return здесь.Добавить(другой)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: rupython
3
- Version: 1.2.3
3
+ Version: 1.2.4
4
4
  Summary: Исполнитель кода Русского Питона
5
5
  Description-Content-Type: text/markdown
6
6
  License-File: LICENSE
@@ -3,7 +3,7 @@ from pathlib import Path as Путь
3
3
 
4
4
  Установить(
5
5
  name = 'rupython',
6
- version = '1.2.3',
6
+ version = '1.2.4',
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