66
77class Resource :
88 """Bag of attributes"""
9+
910 def __init__ (self , manager , data ):
1011 """Resource initializer.
1112
@@ -47,11 +48,11 @@ def update(self):
4748 Returns:
4849 The updated resource from the server
4950 """
50- return self ._manager .update (self .get ('id' ), ** self .attrs )
51+ return self ._manager .update (self .get ("id" ), ** self .attrs )
5152
5253 def delete (self ) -> None :
5354 """Deletes the resource from the server"""
54- self ._manager .delete (self .get ('id' ))
55+ self ._manager .delete (self .get ("id" ))
5556
5657 def __repr__ (self ) -> str :
5758 return str (self )
@@ -64,6 +65,7 @@ class Manager:
6465 """
6566 Base class for handling crud resources
6667 """
68+
6769 resource_class = Resource
6870 path = None # Type: str
6971
@@ -76,10 +78,12 @@ def __init__(self, http_client: HttpClient):
7678 self ._http = http_client
7779
7880 if self .resource_class is None :
79- raise ValueError ('resource_class not defined in class {}' .format (self .__class__ ))
81+ raise ValueError (
82+ "resource_class not defined in class {}" .format (self .__class__ )
83+ )
8084
8185 if self .path is None :
82- raise ValueError (' path not defined for class {}' .format (self .__class__ ))
86+ raise ValueError (" path not defined for class {}" .format (self .__class__ ))
8387
8488 def instance_from_dict (self , data : dict ) -> Resource :
8589 """Creates a resource instance from a dictionary.
@@ -128,13 +132,15 @@ def instance_list_from_json(self, data: str) -> List[Resource]:
128132 """
129133 instances = json .loads (data )
130134 if not isinstance (instances , list ):
131- raise ValueError ("json data is {}, not a list : {}" .format (type (instances ), instances ))
135+ raise ValueError (
136+ "json data is {}, not a list : {}" .format (type (instances ), instances )
137+ )
132138
133139 return [self .resource_class (self , inst ) for inst in instances ]
134140
135141 def _create (self , path : str , data : dict ):
136142 response = self ._http .post (path , data = data )
137- return self .resource_class (self , response .json ()[' data' ])
143+ return self .resource_class (self , response .json ()[" data" ])
138144
139145 def _update (self , path : str , resource_id : int , data : dict ) -> Resource :
140146 """Generic resource updater
@@ -148,9 +154,11 @@ def _update(self, path: str, resource_id: int, data: dict) -> Resource:
148154 Resource: The updated resource from the server
149155 """
150156 response = self ._http .put ("{}/{}" .format (path , resource_id ), data = data )
151- return self .resource_class (self , response .json ()[' data' ])
157+ return self .resource_class (self , response .json ()[" data" ])
152158
153- def _list_paginated (self , path : str , page = 1 , per_page = 20 ) -> Generator [Resource , None , None ]:
159+ def _list_paginated (
160+ self , path : str , page = 1 , per_page = 20
161+ ) -> Generator [Resource , None , None ]:
154162 """List resources paginated.
155163
156164 Args:
@@ -167,19 +175,19 @@ def _list_paginated(self, path: str, page=1, per_page=20) -> Generator[Resource,
167175 result = self ._http .get (
168176 path ,
169177 params = {
170- ' page' : page ,
171- ' per_page' : per_page ,
178+ " page" : page ,
179+ " per_page" : per_page ,
172180 },
173181 )
174182 json_data = result .json ()
175183
176- meta = json_data [' meta' ]
177- data = json_data [' data' ]
184+ meta = json_data [" meta" ]
185+ data = json_data [" data" ]
178186
179187 for entry in data :
180188 yield self .resource_class (self , entry )
181189
182- if page >= meta [' pagination' ][ ' total_pages' ]:
190+ if page >= meta [" pagination" ][ " total_pages" ]:
183191 break
184192
185193 page += 1
@@ -201,7 +209,7 @@ def _get(self, path: str, resource_id: int):
201209 """
202210 result = self ._http .get ("{}/{}" .format (path , resource_id ))
203211 json_data = result .json ()
204- return self .resource_class (self , json_data [' data' ])
212+ return self .resource_class (self , json_data [" data" ])
205213
206214 def _count (self , path : str ) -> int :
207215 """Generic count method
@@ -213,9 +221,9 @@ def _count(self, path: str) -> int:
213221 Returns:
214222 int: Number of resources
215223 """
216- result = self ._http .get (path , params = {' per_page' : 1 })
224+ result = self ._http .get (path , params = {" per_page" : 1 })
217225 json_data = result .json ()
218- return json_data [' meta' ][ ' pagination' ][ ' total' ]
226+ return json_data [" meta" ][ " pagination" ][ " total" ]
219227
220228 def _delete (self , path : str , resource_id : int ) -> None :
221229 """Generic resource deleter
0 commit comments