Просмотр исходного кода

Added rudimentary relative date functionality

pull/75/head
brain_face 6 лет назад
Родитель
Сommit
a0af6eee27
3 измененных файлов: 27 добавлений и 7 удалений
  1. +1
    -0
      Pipfile
  2. +0
    -0
      kosmorro
  3. +26
    -7
      kosmorrolib/main.py

+ 1
- 0
Pipfile Просмотреть файл

@@ -16,6 +16,7 @@ tabulate = "*"
numpy = ">=1.17.0,<2.0.0" numpy = ">=1.17.0,<2.0.0"
termcolor = "*" termcolor = "*"
latex = "*" latex = "*"
dateutil = ">=2.8.1"


[requires] [requires]
python_version = "3" python_version = "3"


+ 26
- 7
kosmorrolib/main.py Просмотреть файл

@@ -22,6 +22,7 @@ import re
import sys import sys


from datetime import date from datetime import date
from dateutil.relativedelta import relativedelta
from termcolor import colored from termcolor import colored


from kosmorrolib.version import VERSION from kosmorrolib.version import VERSION
@@ -99,14 +100,32 @@ def main():
return 0 return 0




def get_date(yyyymmdd: str) -> date:
if not re.match(r'^\d{4}-\d{2}-\d{2}$', yyyymmdd):
raise ValueError(_('The date {date} does not match the required YYYY-MM-DD format.').format(date=yyyymmdd))
def get_date(date_arg: str) -> date:
if re.match(r'^\d{4}-\d{2}-\d{2}$', date_arg):
try:
return date.fromisoformat(date_arg)
except ValueError as error:
raise ValueError(_('The date {date} is not valid: {error}').format(date=date_arg, error=error.args[0]))
elif re.match(r'^([+-])(([0-9]+)y)?[ ]?(([0-9]+)m)?[ ]?(([0-9]+)d)?$', date_arg):
def get_offset(date_arg: str, signifier: str):
if re.search(r'([0-9]+)' + signifier, date_arg):
return int(re.search(r'[+-]?([0-9]+)' + signifier, date_arg).group(0)[:-1])
else:
return 0

days = get_offset(date_arg, 'd')
months = get_offset(date_arg, 'm')
years = get_offset(date_arg, 'y')


if date_arg[0] == '+':
return date.today() + relativedelta(days=days, months=months, years=years)
else:
return date.today() - relativedelta(days=days, months=months, years=years)

else:
raise ValueError(_('The date {date} does not match the required YYYY-MM-DD format or the offset format.').format(date=date_arg))


try:
return date.fromisoformat(yyyymmdd)
except ValueError as error:
raise ValueError(_('The date {date} is not valid: {error}').format(date=yyyymmdd, error=error.args[0]))




def get_dumpers() -> {str: dumper.Dumper}: def get_dumpers() -> {str: dumper.Dumper}:


Загрузка…
Отмена
Сохранить