Skip to content

Commit

Permalink
0.0.163
Browse files Browse the repository at this point in the history
  • Loading branch information
joocer committed Jun 27, 2024
1 parent 0f7f070 commit 4eea9f6
Show file tree
Hide file tree
Showing 3 changed files with 60 additions and 1 deletion.
8 changes: 8 additions & 0 deletions orso/tools.py
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,11 @@

from orso.exceptions import MissingDependencyError

try:
import pandas
except ImportError:
pandas = None


def retry(
max_tries: int = 3,
Expand Down Expand Up @@ -632,6 +637,9 @@ def parse_iso(value):
tzinfo=None
)

if pandas and hasattr(value, "to_pydatetime"):
return value.to_pydatetime()

if input_type == datetime.datetime:
return value.replace(microsecond=0)
if input_type == datetime.date:
Expand Down
2 changes: 1 addition & 1 deletion orso/version.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,5 +10,5 @@
# See the License for the specific language governing permissions and
# limitations under the License.

__version__: str = "0.0.162"
__version__: str = "0.0.163"
__author__: str = "@joocer"
51 changes: 51 additions & 0 deletions tests/test_tools_dates.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
import os
import sys
import pytest

sys.path.insert(1, os.path.join(sys.path[0], ".."))

import datetime
import numpy
import pandas

from orso.tools import parse_iso

# fmt:off
DATE_TESTS = [
("2021001011", datetime.datetime(2034, 1, 16, 5, 10, 11)),
("2021-02-21", datetime.datetime(2021,2,21)),
("2021-02-21T", None),
("2021-01-11 12:00", datetime.datetime(2021,1,11,12,0)),
("2021-01-11 12:00+0100", datetime.datetime(2021,1,11,12,0)),
("2021-01-11 12:00Z", datetime.datetime(2021,1,11,12,0)),
("2021-01-11T12:00", datetime.datetime(2021,1,11,12,0)),
("2021-01-11T12:00Z", datetime.datetime(2021,1,11,12,0)),
("2020-10-01 18:05:20", datetime.datetime(2020,10,1,18,5,20)),
("2020-10-01T18:05:20", datetime.datetime(2020,10,1,18,5,20)),
("2020-10-01T18:05:20+0100", datetime.datetime(2020,10,1,18,5,20)),
("1999-12-31 23:59:59.9", datetime.datetime(1999,12,31,23,59,59)),
("1999-12-31 23:59:59.9999", datetime.datetime(1999,12,31,23,59,59)),
("1999-12-31T23:59:59.9999", datetime.datetime(1999,12,31,23,59,59)),
("1999-12-31T23:59:59.9999Z", datetime.datetime(1999,12,31,23,59,59)),
("1999-12-31T23:59:59.999999", datetime.datetime(1999,12,31,23,59,59)),
("1999-12-31T23:59:59.999999+0800", datetime.datetime(1999,12,31,23,59,59)),
("1999-12-31T23:59:59.99999999", datetime.datetime(1999,12,31,23,59,59)),
(numpy.datetime64("2021-01-11T12:00"), datetime.datetime(2021, 1, 11, 12, 0)),
(numpy.datetime64("2021-02-21T00:00"), datetime.datetime(2021, 2, 21)),
(pandas.Timestamp("2021-03-11T12:00"), datetime.datetime(2021, 3, 11, 12, 0, 0)),
(pandas.Timestamp("2021-04-21T00:00"), datetime.datetime(2021, 4, 21)),
]
# fmt:on


@pytest.mark.parametrize("string, expect", DATE_TESTS)
def test_date_parser(string, expect):
assert parse_iso(string) == expect, f"in:{string} res:{parse_iso(string)} exp:{expect}"


if __name__ == "__main__": # pragma: no cover
print(f"RUNNING BATTERY OF {len(DATE_TESTS)} DATE TESTS")
for date_string, date_date in DATE_TESTS:
print(date_string)
test_date_parser(date_string, date_date)
print("okay")

0 comments on commit 4eea9f6

Please sign in to comment.