diff --git a/poetry.lock b/poetry.lock index 1e31c5f..9592505 100644 --- a/poetry.lock +++ b/poetry.lock @@ -4447,4 +4447,4 @@ testing = ["big-O", "jaraco.functools", "jaraco.itertools", "more-itertools", "p [metadata] lock-version = "2.0" python-versions = ">=3.8,<4.0" -content-hash = "870e530cb9511cf2dd1660f028407321dbd8700b0a5ed0209d16867e8559b57b" +content-hash = "6b78777677526c41d20fc7303321f99491f082b52fd545c4c848b7d6b8625468" diff --git a/pyproject.toml b/pyproject.toml index ca81d85..fe31528 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -45,6 +45,7 @@ pyarrow = "^15.0.0" bump-my-version = "^0.17.3" notebook = "^7.0.7" deptry = "^0.12.0" +python-dateutil = "^2.8.2" [tool.poetry.group.docs.dependencies] mkdocs = "^1.4.2" diff --git a/tests/test_traces_external.py b/tests/test_traces_external.py new file mode 100644 index 0000000..3f018f1 --- /dev/null +++ b/tests/test_traces_external.py @@ -0,0 +1,27 @@ +import csv +import os +from datetime import datetime + +from dateutil.parser import parse as date_parse + +from traces import TimeSeries + + +def test_csv(): + filename = "sample.csv" + with open(filename, "w") as csvfile: + writer = csv.writer(csvfile) + writer.writerow(["hour", "value"]) + writer.writerow(["2000-01-01 10:00am", "15"]) + writer.writerow(["2000-01-01 11:00am", "34"]) + writer.writerow(["2000-01-01 12:00pm", "19"]) + writer.writerow(["2000-01-01 1:00pm", "nan"]) + writer.writerow(["2000-01-01 2:00pm", "18"]) + writer.writerow(["2000-01-01 3:00pm", "nan"]) + + ts = TimeSeries.from_csv(filename, time_transform=date_parse) + os.remove(filename) + + assert ts[datetime(2000, 1, 1, 9)] is None + assert ts[datetime(2000, 1, 1, 10, 30)] == "15" + assert ts[datetime(2000, 1, 1, 20)] == "nan" diff --git a/traces/timeseries.py b/traces/timeseries.py index 6be9572..6c6c615 100644 --- a/traces/timeseries.py +++ b/traces/timeseries.py @@ -808,9 +808,7 @@ def merge(cls, ts_list, compact=True, operation=None): @staticmethod def csv_time_transform(raw): - from dateutil.parser import parse - - return parse(raw) + return datetime.datetime.strptime(raw, "%Y-%m-%d %H:%M:%S") @staticmethod def csv_value_transform(raw):