This commit is contained in:
2025-04-13 01:11:44 -03:00
parent bef51f492a
commit 273c580139
20 changed files with 552 additions and 29 deletions

View File

@@ -14,7 +14,7 @@ from boto3.dynamodb.types import TypeDeserializer, TypeSerializer
from botocore.exceptions import ClientError
from .dateutils import now, timestamp
from .funcs import omit
from .funcs import omit, pick
TZ = os.getenv('TZ', 'UTC')
PK = os.getenv('DYNAMODB_PARTITION_KEY', 'pk')
@@ -75,8 +75,9 @@ else:
def __new__(
cls,
keyparts: str | tuple[str, ...],
*,
/,
prefix: str | None = None,
*,
delimiter: str = '#',
) -> str:
if isinstance(keyparts, str):
@@ -90,8 +91,9 @@ else:
def __init__(
self,
keyparts: str | tuple[str, ...],
*,
/,
prefix: str | None = None,
*,
delimiter: str = '#',
) -> None:
# __init__ is used to store the parameters for later reference.
@@ -258,7 +260,7 @@ class KeyPair(Key):
match obj:
case dict():
pair = obj.values()
pair = pick((PK, SK), obj).values() # Gotta keep them in order
case _:
pair = obj

View File

@@ -1,6 +1,6 @@
[project]
name = "layercake"
version = "0.2.5"
version = "0.2.9"
description = "Packages shared dependencies to optimize deployment and ensure consistency across functions."
readme = "README.md"
authors = [

View File

@@ -76,6 +76,7 @@ def test_keypair():
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({'sk': 'abc', 'id': '123'}) == {'id': '123', 'sk': 'abc'}
assert KeyPair.parse_obj(['123', 'abc']) == {'id': '123', 'sk': 'abc'}
assert KeyPair.parse_obj([]) is None
@@ -103,7 +104,7 @@ def test_transact_write_items(
transact.put(
item=KeyPair(
'5OxmMjL-ujoR5IMGegQz',
ComposeKey('sergio@somosbeta.com.br', prefix='emails'),
ComposeKey('sergio@somosbeta.com.br', 'emails'),
),
cond_expr='attribute_not_exists(sk)',
)

2
layercake/uv.lock generated
View File

@@ -600,7 +600,7 @@ wheels = [
[[package]]
name = "layercake"
version = "0.2.5"
version = "0.2.8"
source = { editable = "." }
dependencies = [
{ name = "arnparse" },