Page MenuHomeSoftware Heritage

D2880.id10431.diff
No OneTemporary

D2880.id10431.diff

diff --git a/swh/model/hypothesis_strategies.py b/swh/model/hypothesis_strategies.py
--- a/swh/model/hypothesis_strategies.py
+++ b/swh/model/hypothesis_strategies.py
@@ -1,4 +1,4 @@
-# Copyright (C) 2019 The Software Heritage developers
+# Copyright (C) 2019-2020 The Software Heritage developers
# See the AUTHORS file at the top-level directory of this distribution
# License: GNU General Public License version 3, or any later version
# See top-level LICENSE file for more information
@@ -15,8 +15,8 @@
from .from_disk import DentryPerms
from .model import (
Person, Timestamp, TimestampWithTimezone, Origin, OriginVisit,
- Snapshot, SnapshotBranch, TargetType, Release, Revision,
- Directory, DirectoryEntry, Content, SkippedContent
+ OriginVisitUpdate, Snapshot, SnapshotBranch, TargetType, Release,
+ Revision, Directory, DirectoryEntry, Content, SkippedContent
)
from .identifiers import snapshot_identifier, identifier_to_bytes
@@ -85,7 +85,22 @@
origin=urls(),
status=sampled_from(['ongoing', 'full', 'partial']),
type=pgsql_text(),
- snapshot=optional(sha1_git()))
+ snapshot=optional(sha1_git()),
+ )
+
+
+def metadata_dict():
+ return dictionaries(pgsql_text(), pgsql_text())
+
+
+def origin_visit_updates():
+ return builds(
+ OriginVisitUpdate,
+ visit=integers(0, 1000),
+ origin=urls(),
+ status=sampled_from(['ongoing', 'full', 'partial']),
+ snapshot=optional(sha1_git()),
+ metadata=one_of(none(), metadata_dict()))
@composite
@@ -104,8 +119,7 @@
author=author)
-def revision_metadata():
- return dictionaries(pgsql_text(), pgsql_text())
+revision_metadata = metadata_dict
def revisions():
@@ -238,6 +252,7 @@
return one_of(
origins().map(lambda x: ('origin', x)),
origin_visits().map(lambda x: ('origin_visit', x)),
+ origin_visit_updates().map(lambda x: ('origin_visit_update', x)),
snapshots().map(lambda x: ('snapshot', x)),
releases().map(lambda x: ('release', x)),
revisions().map(lambda x: ('revision', x)),
diff --git a/swh/model/model.py b/swh/model/model.py
--- a/swh/model/model.py
+++ b/swh/model/model.py
@@ -234,6 +234,23 @@
**d)
+@attr.s(frozen=True)
+class OriginVisitUpdate(BaseModel):
+ """Represents a visit update of an origin at a given point in time.
+
+ """
+ origin = attr.ib(type=str)
+ visit = attr.ib(type=int)
+
+ date = attr.ib(type=datetime.datetime)
+ status = attr.ib(
+ type=str,
+ validator=attr.validators.in_(['ongoing', 'full', 'partial']))
+ snapshot = attr.ib(type=Optional[Sha1Git])
+ metadata = attr.ib(type=Optional[Dict[str, object]],
+ default=None)
+
+
class TargetType(Enum):
"""The type of content pointed to by a snapshot branch. Usually a
revision or an alias."""
diff --git a/swh/model/tests/test_model.py b/swh/model/tests/test_model.py
--- a/swh/model/tests/test_model.py
+++ b/swh/model/tests/test_model.py
@@ -1,4 +1,4 @@
-# Copyright (C) 2019 The Software Heritage developers
+# Copyright (C) 2019-2020 The Software Heritage developers
# See the AUTHORS file at the top-level directory of this distribution
# License: GNU General Public License version 3, or any later version
# See top-level LICENSE file for more information
@@ -16,7 +16,9 @@
MissingData, Person
)
from swh.model.hashutil import hash_to_bytes, MultiHash
-from swh.model.hypothesis_strategies import objects, origins, origin_visits
+from swh.model.hypothesis_strategies import (
+ objects, origins, origin_visits, origin_visit_updates
+)
from swh.model.identifiers import (
directory_identifier, revision_identifier, release_identifier,
snapshot_identifier
@@ -61,6 +63,13 @@
assert origin_visit == type(origin_visit).from_dict(obj)
+@given(origin_visit_updates())
+def test_todict_origin_visit_updates(origin_visit_update):
+ obj = origin_visit_update.to_dict()
+
+ assert origin_visit_update == type(origin_visit_update).from_dict(obj)
+
+
def test_timestampwithtimezone_from_datetime():
tz = datetime.timezone(datetime.timedelta(minutes=+60))
date = datetime.datetime(

File Metadata

Mime Type
text/plain
Expires
Sun, Aug 17, 7:58 PM (1 w, 4 d ago)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
3223412

Event Timeline