Skip to content

Commit

Permalink
Merge 0651d5b into 51d653f
Browse files Browse the repository at this point in the history
  • Loading branch information
akariv committed Nov 22, 2018
2 parents 51d653f + 0651d5b commit b69460b
Show file tree
Hide file tree
Showing 3 changed files with 30 additions and 9 deletions.
3 changes: 2 additions & 1 deletion dataflows/processors/dumpers/file_dumper.py
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ def process_datapackage(self, datapackage):

# Make sure all resources are proper CSVs
resource: Resource = None
for resource in datapackage.resources:
for i, resource in enumerate(datapackage.resources):
if self.force_format:
file_format = self.forced_format
else:
Expand All @@ -39,6 +39,7 @@ def process_datapackage(self, datapackage):
self.file_formatters[resource.name] = file_formatter
self.file_formatters[resource.name].prepare_resource(resource)
resource.commit()
datapackage.descriptor['resources'][i] = resource.descriptor

return datapackage

Expand Down
7 changes: 2 additions & 5 deletions dataflows/processors/dumpers/file_formats.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,6 @@
import isodate
import logging

from tableschema import Field


DATE_FORMAT = '%Y-%m-%d'
DATETIME_FORMAT = '%Y-%m-%dT%H:%M:%SZ'
Expand Down Expand Up @@ -34,9 +32,8 @@ def __init__(self, writer, schema):

@classmethod
def prepare_resource(cls, resource):
field: Field = None
for field in resource.schema.fields:
field.descriptor.update(cls.PYTHON_DIALECT.get(field.type, {}))
for field in resource.descriptor['schema']['fields']:
field.update(cls.PYTHON_DIALECT.get(field['type'], {}))

def __transform_row(self, row):
try:
Expand Down
29 changes: 26 additions & 3 deletions tests/test_lib.py
Original file line number Diff line number Diff line change
Expand Up @@ -464,10 +464,16 @@ def run_flow(datetime_format=None):
except ValidationError:
assert True

# must set format='any' to parse from datetime string
run_flow(datetime_format='any')
# Default is isoformat(), str() gives a slightly different format:
# >>> from datetime import datetime
# >>> n = datetime.now()
# >>> str(n)
# '2018-11-22 13:25:47.945209'
# >>> n.isoformat()
# '2018-11-22T13:25:47.945209'
run_flow(datetime_format='%Y-%m-%d %H:%M:%S.%f')

out_now = datetime.datetime(_now.year, _now.month, _now.day, _now.hour, _now.minute, _now.second, tzinfo=tzutc())
out_now = datetime.datetime(_now.year, _now.month, _now.day, _now.hour, _now.minute, _now.second)

assert Flow(
load('data/dump_dates/datapackage.json'),
Expand Down Expand Up @@ -547,3 +553,20 @@ def test_load_xml():
{'publication-year': 1954, 'title': 'The Two Towers'},
{'publication-year': 1955, 'title': 'The Return of the King'}
]

def test_save_load_dates():
from dataflows import Flow, dump_to_path, load, set_type, printer
import datetime

Flow(
[{'id': 1, 'ts': datetime.datetime.now()},
{'id': 2, 'ts': datetime.datetime.now()}],
set_type('ts', type='datetime', format='%Y-%m-%d/%H:%M:%S'),
dump_to_path('data/test_save_load_dates')
).process()

res, _, _ = Flow(
load('data/test_save_load_dates/datapackage.json'),
printer()
).results()

0 comments on commit b69460b

Please sign in to comment.