diff --git a/swh/loader/svn/loader.py b/swh/loader/svn/loader.py --- a/swh/loader/svn/loader.py +++ b/swh/loader/svn/loader.py @@ -7,6 +7,7 @@ swh-storage. """ +from datetime import datetime from mmap import ACCESS_WRITE, mmap import os import pty @@ -16,8 +17,6 @@ import tempfile from typing import Dict, Iterator, List, Optional, Tuple -import iso8601 - from subvertpy import SubversionException from swh.loader.core.loader import BaseLoader @@ -67,7 +66,7 @@ storage: StorageInterface, url: str, origin_url: Optional[str] = None, - visit_date: Optional[str] = None, + visit_date: Optional[datetime] = None, destination_path: Optional[str] = None, swh_revision: Optional[str] = None, start_from_scratch: bool = False, @@ -101,10 +100,7 @@ self._last_revision = None self._visit_status = "full" self._load_status = "uneventful" - if visit_date: - self.visit_date = iso8601.parse_date(visit_date) - else: - self.visit_date = None + self.visit_date = visit_date self.destination_path = destination_path self.start_from_scratch = start_from_scratch self.snapshot = None @@ -555,7 +551,7 @@ destination_path: Optional[str] = None, swh_revision: Optional[str] = None, start_from_scratch: bool = False, - visit_date: Optional[str] = None, + visit_date: Optional[datetime] = None, temp_directory: str = "/tmp", debug: bool = False, check_revision: Optional[int] = None, @@ -614,7 +610,7 @@ destination_path: Optional[str] = None, swh_revision: Optional[str] = None, start_from_scratch: bool = False, - visit_date: Optional[str] = None, + visit_date: Optional[datetime] = None, temp_directory: str = "/tmp", debug: bool = False, check_revision: Optional[int] = None, diff --git a/swh/loader/svn/tasks.py b/swh/loader/svn/tasks.py --- a/swh/loader/svn/tasks.py +++ b/swh/loader/svn/tasks.py @@ -3,13 +3,24 @@ # License: GNU General Public License version 3, or any later version # See top-level LICENSE file for more information +from datetime import datetime from typing import Optional from celery import shared_task +import iso8601 from .loader import SvnLoader, SvnLoaderFromDumpArchive, SvnLoaderFromRemoteDump +def convert_to_datetime(date: Optional[str]) -> Optional[datetime]: + if not date: + return None + try: + return iso8601.parse_date(date) + except Exception: + return None + + @shared_task(name=__name__ + ".LoadSvnRepository") def load_svn( *, @@ -41,7 +52,7 @@ origin_url=origin_url, destination_path=destination_path, swh_revision=swh_revision, - visit_date=visit_date, + visit_date=convert_to_datetime(visit_date), start_from_scratch=start_from_scratch, ) return loader.load() @@ -70,7 +81,7 @@ loader = SvnLoaderFromDumpArchive.from_configfile( url=url, archive_path=archive_path, - visit_date=visit_date, + visit_date=convert_to_datetime(visit_date), start_from_scratch=start_from_scratch, ) return loader.load() @@ -100,7 +111,7 @@ loader = SvnLoaderFromRemoteDump.from_configfile( url=url, origin_url=origin_url, - visit_date=visit_date, + visit_date=convert_to_datetime(visit_date), start_from_scratch=start_from_scratch, ) return loader.load()