apexdevkit 1.12.4__tar.gz → 1.12.5__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (40) hide show
  1. {apexdevkit-1.12.4 → apexdevkit-1.12.5}/PKG-INFO +1 -1
  2. {apexdevkit-1.12.4 → apexdevkit-1.12.5}/apexdevkit/formatter.py +1 -1
  3. {apexdevkit-1.12.4 → apexdevkit-1.12.5}/apexdevkit/repository/in_memory.py +27 -32
  4. {apexdevkit-1.12.4 → apexdevkit-1.12.5}/pyproject.toml +1 -1
  5. {apexdevkit-1.12.4 → apexdevkit-1.12.5}/LICENSE +0 -0
  6. {apexdevkit-1.12.4 → apexdevkit-1.12.5}/README.md +0 -0
  7. {apexdevkit-1.12.4 → apexdevkit-1.12.5}/apexdevkit/__init__.py +0 -0
  8. {apexdevkit-1.12.4 → apexdevkit-1.12.5}/apexdevkit/annotation/__init__.py +0 -0
  9. {apexdevkit-1.12.4 → apexdevkit-1.12.5}/apexdevkit/annotation/deprecate.py +0 -0
  10. {apexdevkit-1.12.4 → apexdevkit-1.12.5}/apexdevkit/environment.py +0 -0
  11. {apexdevkit-1.12.4 → apexdevkit-1.12.5}/apexdevkit/error.py +0 -0
  12. {apexdevkit-1.12.4 → apexdevkit-1.12.5}/apexdevkit/fastapi/__init__.py +0 -0
  13. {apexdevkit-1.12.4 → apexdevkit-1.12.5}/apexdevkit/fastapi/builder.py +0 -0
  14. {apexdevkit-1.12.4 → apexdevkit-1.12.5}/apexdevkit/fastapi/dependable.py +0 -0
  15. {apexdevkit-1.12.4 → apexdevkit-1.12.5}/apexdevkit/fastapi/docs.py +0 -0
  16. {apexdevkit-1.12.4 → apexdevkit-1.12.5}/apexdevkit/fastapi/resource.py +0 -0
  17. {apexdevkit-1.12.4 → apexdevkit-1.12.5}/apexdevkit/fastapi/response.py +0 -0
  18. {apexdevkit-1.12.4 → apexdevkit-1.12.5}/apexdevkit/fastapi/router.py +0 -0
  19. {apexdevkit-1.12.4 → apexdevkit-1.12.5}/apexdevkit/fastapi/schema.py +0 -0
  20. {apexdevkit-1.12.4 → apexdevkit-1.12.5}/apexdevkit/fastapi/service.py +0 -0
  21. {apexdevkit-1.12.4 → apexdevkit-1.12.5}/apexdevkit/fluent.py +0 -0
  22. {apexdevkit-1.12.4 → apexdevkit-1.12.5}/apexdevkit/http/__init__.py +0 -0
  23. {apexdevkit-1.12.4 → apexdevkit-1.12.5}/apexdevkit/http/fake.py +0 -0
  24. {apexdevkit-1.12.4 → apexdevkit-1.12.5}/apexdevkit/http/fluent.py +0 -0
  25. {apexdevkit-1.12.4 → apexdevkit-1.12.5}/apexdevkit/http/httpx.py +0 -0
  26. {apexdevkit-1.12.4 → apexdevkit-1.12.5}/apexdevkit/http/json.py +0 -0
  27. {apexdevkit-1.12.4 → apexdevkit-1.12.5}/apexdevkit/http/url.py +0 -0
  28. {apexdevkit-1.12.4 → apexdevkit-1.12.5}/apexdevkit/py.typed +0 -0
  29. {apexdevkit-1.12.4 → apexdevkit-1.12.5}/apexdevkit/repository/__init__.py +0 -0
  30. {apexdevkit-1.12.4 → apexdevkit-1.12.5}/apexdevkit/repository/base.py +0 -0
  31. {apexdevkit-1.12.4 → apexdevkit-1.12.5}/apexdevkit/repository/connector.py +0 -0
  32. {apexdevkit-1.12.4 → apexdevkit-1.12.5}/apexdevkit/repository/database.py +0 -0
  33. {apexdevkit-1.12.4 → apexdevkit-1.12.5}/apexdevkit/repository/decorator.py +0 -0
  34. {apexdevkit-1.12.4 → apexdevkit-1.12.5}/apexdevkit/repository/interface.py +0 -0
  35. {apexdevkit-1.12.4 → apexdevkit-1.12.5}/apexdevkit/repository/mongo.py +0 -0
  36. {apexdevkit-1.12.4 → apexdevkit-1.12.5}/apexdevkit/repository/sqlite.py +0 -0
  37. {apexdevkit-1.12.4 → apexdevkit-1.12.5}/apexdevkit/testing/__init__.py +0 -0
  38. {apexdevkit-1.12.4 → apexdevkit-1.12.5}/apexdevkit/testing/database.py +0 -0
  39. {apexdevkit-1.12.4 → apexdevkit-1.12.5}/apexdevkit/testing/fake.py +0 -0
  40. {apexdevkit-1.12.4 → apexdevkit-1.12.5}/apexdevkit/testing/rest.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: apexdevkit
3
- Version: 1.12.4
3
+ Version: 1.12.5
4
4
  Summary: Apex Development Tools for python.
5
5
  Author: Apex Dev
6
6
  Author-email: dev@apex.ge
@@ -42,7 +42,7 @@ class DataclassFormatter(Generic[_TargetT]):
42
42
  raw = deepcopy(raw)
43
43
 
44
44
  for key, formatter in self.sub_formatters.items():
45
- raw[key] = formatter.load(raw.pop(key))
45
+ raw[key] = formatter.load(raw.pop(key)) if raw[key] else None
46
46
 
47
47
  return self.resource(**raw)
48
48
 
@@ -1,4 +1,3 @@
1
- from copy import deepcopy
2
1
  from dataclasses import dataclass, field
3
2
  from typing import Any, Callable, Iterable, Iterator, Self
4
3
 
@@ -24,19 +23,19 @@ class InMemoryRepository(RepositoryBase[IdT, ItemT]):
24
23
  formatter: Formatter[_Raw, ItemT]
25
24
  items: dict[str, _Raw] = field(default_factory=dict)
26
25
 
27
- _key_functions: list[KeyFunction] = field(init=False, default_factory=list)
26
+ _keys: list[KeyFunction] = field(init=False, default_factory=list)
27
+
28
+ def bind(self, **kwargs: Any) -> Self:
29
+ return self
28
30
 
29
31
  def with_key(self, function: KeyFunction) -> Self:
30
- self._key_functions.append(function)
32
+ self._keys.append(function)
31
33
 
32
34
  return self
33
35
 
34
36
  def with_seeded(self, *items: ItemT) -> Self:
35
- for item in items:
36
- self.create(item)
37
- return self
37
+ self.create_many(list(items))
38
38
 
39
- def bind(self, **kwargs: Any) -> Self:
40
39
  return self
41
40
 
42
41
  def create_many(self, items: list[ItemT]) -> list[ItemT]:
@@ -47,7 +46,7 @@ class InMemoryRepository(RepositoryBase[IdT, ItemT]):
47
46
 
48
47
  def create(self, item: ItemT) -> ItemT:
49
48
  self._ensure_does_not_exist(item)
50
- self.items[self._key_functions[0](item)] = deepcopy(self.formatter.dump(item))
49
+ self.items[self._pk(item)] = self.formatter.dump(item)
51
50
 
52
51
  return item
53
52
 
@@ -55,39 +54,41 @@ class InMemoryRepository(RepositoryBase[IdT, ItemT]):
55
54
  for existing in self:
56
55
  error = ExistsError(existing)
57
56
 
58
- for key in self._key_functions:
57
+ for key in self._keys:
59
58
  if key(new) == key(existing):
60
59
  error.with_duplicate(key)
61
60
 
62
61
  error.fire()
63
62
 
64
- def read(self, item_id: IdT) -> ItemT:
65
- for key in self._key_functions:
66
- for item in self:
67
- if key(item) == str(item_id):
68
- return item
69
-
70
- raise DoesNotExistError(item_id)
71
-
72
- def update(self, item: ItemT) -> None:
73
- try:
74
- del self.items[self._key_functions[0](item)]
75
- except KeyError:
76
- raise DoesNotExistError(self._key_functions[0](item))
77
- self.create(item)
63
+ def _pk(self, item: ItemT) -> Any:
64
+ return self._keys[0](item)
78
65
 
79
66
  def update_many(self, items: list[ItemT]) -> None:
80
67
  for item in items:
81
68
  self.update(item)
82
69
 
70
+ def update(self, item: ItemT) -> None:
71
+ self.delete(self._pk(item))
72
+ self.create(item)
73
+
83
74
  def delete(self, item_id: IdT) -> None:
84
- for key in self._key_functions:
75
+ item = self.read(item_id)
76
+ del self.items[self._pk(item)]
77
+
78
+ def read(self, item_id: IdT) -> ItemT:
79
+ for key in self._keys:
85
80
  for item in self:
86
81
  if key(item) == str(item_id):
87
- del self.items[self._key_functions[0](item)]
88
- return
82
+ return item
83
+
89
84
  raise DoesNotExistError(item_id)
90
85
 
86
+ def __iter__(self) -> Iterator[ItemT]:
87
+ yield from [self.formatter.load(raw) for raw in self.items.values()]
88
+
89
+ def __len__(self) -> int:
90
+ return len(self.items)
91
+
91
92
  def search(self, **kwargs: Any) -> Iterable[ItemT]:
92
93
  items = []
93
94
 
@@ -96,9 +97,3 @@ class InMemoryRepository(RepositoryBase[IdT, ItemT]):
96
97
  items.append(self.formatter.load(item))
97
98
 
98
99
  return items
99
-
100
- def __iter__(self) -> Iterator[ItemT]:
101
- yield from [self.formatter.load(deepcopy(raw)) for raw in self.items.values()]
102
-
103
- def __len__(self) -> int:
104
- return len(self.items)
@@ -1,6 +1,6 @@
1
1
  [tool.poetry]
2
2
  name = "apexdevkit"
3
- version = "1.12.4"
3
+ version = "1.12.5"
4
4
  description = "Apex Development Tools for python."
5
5
  authors = ["Apex Dev <dev@apex.ge>"]
6
6
  readme = "README.md"
File without changes
File without changes