add parse_obj
This commit is contained in:
@@ -5,7 +5,7 @@ from base64 import urlsafe_b64decode, urlsafe_b64encode
|
|||||||
from dataclasses import dataclass
|
from dataclasses import dataclass
|
||||||
from datetime import datetime
|
from datetime import datetime
|
||||||
from ipaddress import IPv4Address
|
from ipaddress import IPv4Address
|
||||||
from typing import TYPE_CHECKING, Any, Type, TypedDict
|
from typing import TYPE_CHECKING, Any, Self, Type, TypedDict
|
||||||
from urllib.parse import quote, unquote
|
from urllib.parse import quote, unquote
|
||||||
from uuid import UUID
|
from uuid import UUID
|
||||||
|
|
||||||
@@ -251,6 +251,19 @@ class KeyPair(Key):
|
|||||||
':sk': self[SK],
|
':sk': self[SK],
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def parse_obj(cls, obj: Any) -> Self | None:
|
||||||
|
if not obj:
|
||||||
|
return None
|
||||||
|
|
||||||
|
match obj:
|
||||||
|
case dict():
|
||||||
|
pair = obj.values()
|
||||||
|
case _:
|
||||||
|
pair = obj
|
||||||
|
|
||||||
|
return cls(*pair)
|
||||||
|
|
||||||
|
|
||||||
class TransactItems:
|
class TransactItems:
|
||||||
def __init__(self, table_name: str) -> None:
|
def __init__(self, table_name: str) -> None:
|
||||||
|
|||||||
@@ -75,6 +75,10 @@ def test_keypair():
|
|||||||
assert KeyPair('123', 'abc').expr_attr_name() == {'#pk': 'id', '#sk': 'sk'}
|
assert KeyPair('123', 'abc').expr_attr_name() == {'#pk': 'id', '#sk': 'sk'}
|
||||||
assert KeyPair('123', 'abc').expr_attr_values() == {':pk': '123', ':sk': 'abc'}
|
assert KeyPair('123', 'abc').expr_attr_values() == {':pk': '123', ':sk': 'abc'}
|
||||||
|
|
||||||
|
assert KeyPair.parse_obj({'id': '123', 'sk': 'abc'}) == {'id': '123', 'sk': 'abc'}
|
||||||
|
assert KeyPair.parse_obj(['123', 'abc']) == {'id': '123', 'sk': 'abc'}
|
||||||
|
assert KeyPair.parse_obj([]) is None
|
||||||
|
|
||||||
|
|
||||||
def test_prefixkey():
|
def test_prefixkey():
|
||||||
key = PrefixKey('emails')
|
key = PrefixKey('emails')
|
||||||
|
|||||||
Reference in New Issue
Block a user