Add RelativedeltaConverter and parse_relativedelta (#5000)

* Added years and months to parse_timedelta

* Added new parse_datetimedelta along with classes for relative dates

* Switched datetime as dt to just datetime for clarity

* Changed to returning relativedelta instead of datetime

* Fixed single char typo

* After some digging, removed min and max from relative delta b/c of https://github.com/dateutil/dateutil/issues/350

* Add dateutil to intersphinx mapping

* Change uppercase D in RelativeDeltaConverter to a lowercase D

* Fix cross-references in docstrings

* Add new class and methods to __all__

* Remove get_relativedelta_converter()

* style

* Fix name of parse_relativedelta test

* more style

* Re-export new class and function in `redbot.core.commands`

Co-authored-by: jack1142 <6032823+jack1142@users.noreply.github.com>
This commit is contained in:
Zoë F
2021-09-05 18:50:21 -06:00
committed by GitHub
parent 86649e897f
commit ed9bb77eec
4 changed files with 165 additions and 36 deletions

View File

@@ -1,9 +1,12 @@
import inspect
import datetime
from dateutil.relativedelta import relativedelta
import pytest
from discord.ext import commands as dpy_commands
from redbot.core import commands
from redbot.core.commands import converter
@pytest.fixture(scope="session")
@@ -49,3 +52,16 @@ def test_dpy_commands_reexports():
missing_attrs = dpy_attrs - set(commands.__dict__.keys())
assert not missing_attrs
def test_converter_timedelta():
assert converter.parse_timedelta("1 day") == datetime.timedelta(days=1)
assert converter.parse_timedelta("1 minute") == datetime.timedelta(minutes=1)
assert converter.parse_timedelta("13 days 5 minutes") == datetime.timedelta(days=13, minutes=5)
def test_converter_relativedelta():
assert converter.parse_relativedelta("1 year") == relativedelta(years=1)
assert converter.parse_relativedelta("1 year 10 days 3 seconds") == relativedelta(
years=1, days=10, seconds=3
)