Sfoglia il codice sorgente

Added rudimentary relative date functionality

pull/75/head
brain_face 5 anni fa
parent
commit
a0af6eee27
3 ha cambiato i file con 27 aggiunte e 7 eliminazioni
  1. +1
    -0
      Pipfile
  2. +0
    -0
      kosmorro
  3. +26
    -7
      kosmorrolib/main.py

+ 1
- 0
Pipfile Vedi File

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

[requires]
python_version = "3"

+ 0
- 0
kosmorro Vedi File


+ 26
- 7
kosmorrolib/main.py Vedi File

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

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

from kosmorrolib.version import VERSION
@@ -99,14 +100,32 @@ def main():
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}:


Caricamento…
Annulla
Salva