tarrac

Untitled

Nov 5th, 2021 (edited)
59
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.41 KB | None | 0 0
  1. from dataclasses import dataclass
  2. from dataclass_factory import Factory, Schema
  3. from typing import List, Generic, TypeVar
  4.  
  5. T = TypeVar('T')
  6.  
  7.  
  8. @dataclass
  9. class Camera:
  10.     id: int
  11.     error: int
  12.     title: str
  13.  
  14.  
  15. @dataclass
  16. class ListResult(Generic[T]):
  17.     result: List[T]
  18.  
  19.  
  20. class CameraSchema(Schema):
  21.     def pre_parse(self, data: dict):
  22.         cam = {
  23.             'id': data['id'],
  24.             'error': data['error'][0]['code'],
  25.             'title': data['title']
  26.         }
  27.         return cam
  28.  
  29.  
  30. def create_factory():
  31.     return Factory(
  32.         schemas={
  33.             Camera: CameraSchema(),
  34.         },
  35.         default_schema=Schema(
  36.             omit_default=True,
  37.         ),
  38.     )
  39.  
  40.  
  41. if __name__ == "__main__":
  42.     result = {'result': [
  43.         {'error': [{'code': 80, 'outdated_at': 1635822494333, 'occurred_at': 1635821433000}], 'contract_bindings': [],
  44.          'title': 'ул. 8 Марта, д. 2, подъезд 2, обзор/фиксация лиц', 'ip_address': '172.26.253.148', 'id': 144036},
  45.         {'error': [{'code': 80, 'outdated_at': 1635822494333, 'occurred_at': 1635821433000}], 'contract_bindings': [],
  46.          'title': 'ул. 8 Марта, д. 2, подъезд 2, обзор/фиксация лиц', 'ip_address': '172.26.253.148', 'id': 144036},
  47.     ]}
  48.     factory = create_factory()
  49.     cam = result['result'][0]
  50.     print(factory.load(result, ListResult[Camera]))
Add Comment
Please, Sign In to add comment