Skip to content
This repository was archived by the owner on Mar 30, 2023. It is now read-only.

Commit d44df6a

Browse files
author
Jason Costello
authored
Merge pull request #1 from hypervectorio/definition-history
Definition history
2 parents 1b90800 + d244188 commit d44df6a

File tree

5 files changed

+57
-1
lines changed

5 files changed

+57
-1
lines changed

hypervector/resources/auxilliary/__init__.py

Whitespace-only changes.
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
from hypervector.resources.abstract.api_resource import APIResource
2+
3+
4+
class Revision(APIResource):
5+
resource_name = 'revision'
6+
7+
def __init__(self, revision_uuid, added, features):
8+
self.revision_uuid = revision_uuid
9+
self.added = added
10+
self.features = features
11+
12+
@classmethod
13+
def from_response(cls, dictionary):
14+
return cls(
15+
revision_uuid=dictionary['revision_uuid'],
16+
added=dictionary['added'],
17+
features=dictionary['features']
18+
)
19+
20+
def to_response(self):
21+
return {
22+
"revision_uuid": self.revision_uuid,
23+
"added": self.added,
24+
"features": self.features
25+
}

hypervector/resources/core/definition.py

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
import requests
44

55
import hypervector
6+
from hypervector.resources.auxilliary.revision import Revision
67
from hypervector.resources.core.ensemble import Ensemble
78
from hypervector.resources.abstract.api_resource import APIResource
89

@@ -57,6 +58,12 @@ def new(cls, definition_file, project_uuid=None):
5758
response = requests.post(endpoint, json=data, headers=cls.get_headers()).json()
5859
return cls.from_response(response)
5960

61+
def history(self):
62+
endpoint = f"{hypervector.API_BASE}/definition/{self.definition_uuid}/history"
63+
response = requests.get(endpoint, headers=self.get_headers()).json()
64+
history = [Revision.from_response(response_item) for response_item in response]
65+
return history
66+
6067

6168
def _parse_definition_from_json_file(definition_json_file):
6269
return json.load(open(definition_json_file, 'rb'))

setup.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55

66
setup(
77
name='hypervector-wrapper',
8-
version='0.0.7',
8+
version='0.0.8',
99
description='Python wrapper to use the Hypervector API',
1010
long_description=long_description,
1111
long_description_content_type="text/markdown",

tests/test_definition_api_resource.py

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,8 @@
1+
import uuid
2+
13
import responses
24
import hypervector
5+
from hypervector.resources.auxilliary.revision import Revision
36
from tests.util import get_resource_path
47

58

@@ -33,3 +36,24 @@ def test_definition_new(mocked_resources):
3336

3437
assert isinstance(definition, hypervector.Definition)
3538

39+
40+
def test_definition_history(mocked_resources, mocked_responses):
41+
_, definition, _, _ = mocked_resources
42+
43+
mocked_revision = Revision(
44+
revision_uuid=str(uuid.uuid4()),
45+
added="01/01/1970 00:00:01",
46+
features=[]
47+
)
48+
49+
mocked_responses.add(
50+
responses.GET,
51+
f'{hypervector.API_BASE}/definition/{definition.definition_uuid}/history',
52+
json=[mocked_revision.to_response()]
53+
)
54+
55+
history = definition.history()
56+
57+
for revision in history:
58+
assert isinstance(revision, Revision)
59+

0 commit comments

Comments
 (0)