apexdevkit 1.10.1__tar.gz → 1.11.1__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 (39) hide show
  1. {apexdevkit-1.10.1 → apexdevkit-1.11.1}/PKG-INFO +1 -1
  2. {apexdevkit-1.10.1 → apexdevkit-1.11.1}/apexdevkit/repository/in_memory.py +20 -26
  3. {apexdevkit-1.10.1 → apexdevkit-1.11.1}/pyproject.toml +1 -1
  4. {apexdevkit-1.10.1 → apexdevkit-1.11.1}/LICENSE +0 -0
  5. {apexdevkit-1.10.1 → apexdevkit-1.11.1}/README.md +0 -0
  6. {apexdevkit-1.10.1 → apexdevkit-1.11.1}/apexdevkit/__init__.py +0 -0
  7. {apexdevkit-1.10.1 → apexdevkit-1.11.1}/apexdevkit/annotation/__init__.py +0 -0
  8. {apexdevkit-1.10.1 → apexdevkit-1.11.1}/apexdevkit/annotation/deprecate.py +0 -0
  9. {apexdevkit-1.10.1 → apexdevkit-1.11.1}/apexdevkit/error.py +0 -0
  10. {apexdevkit-1.10.1 → apexdevkit-1.11.1}/apexdevkit/fastapi/__init__.py +0 -0
  11. {apexdevkit-1.10.1 → apexdevkit-1.11.1}/apexdevkit/fastapi/builder.py +0 -0
  12. {apexdevkit-1.10.1 → apexdevkit-1.11.1}/apexdevkit/fastapi/dependable.py +0 -0
  13. {apexdevkit-1.10.1 → apexdevkit-1.11.1}/apexdevkit/fastapi/docs.py +0 -0
  14. {apexdevkit-1.10.1 → apexdevkit-1.11.1}/apexdevkit/fastapi/resource.py +0 -0
  15. {apexdevkit-1.10.1 → apexdevkit-1.11.1}/apexdevkit/fastapi/response.py +0 -0
  16. {apexdevkit-1.10.1 → apexdevkit-1.11.1}/apexdevkit/fastapi/router.py +0 -0
  17. {apexdevkit-1.10.1 → apexdevkit-1.11.1}/apexdevkit/fastapi/schema.py +0 -0
  18. {apexdevkit-1.10.1 → apexdevkit-1.11.1}/apexdevkit/fastapi/service.py +0 -0
  19. {apexdevkit-1.10.1 → apexdevkit-1.11.1}/apexdevkit/fluent.py +0 -0
  20. {apexdevkit-1.10.1 → apexdevkit-1.11.1}/apexdevkit/formatter.py +0 -0
  21. {apexdevkit-1.10.1 → apexdevkit-1.11.1}/apexdevkit/http/__init__.py +0 -0
  22. {apexdevkit-1.10.1 → apexdevkit-1.11.1}/apexdevkit/http/fake.py +0 -0
  23. {apexdevkit-1.10.1 → apexdevkit-1.11.1}/apexdevkit/http/fluent.py +0 -0
  24. {apexdevkit-1.10.1 → apexdevkit-1.11.1}/apexdevkit/http/httpx.py +0 -0
  25. {apexdevkit-1.10.1 → apexdevkit-1.11.1}/apexdevkit/http/json.py +0 -0
  26. {apexdevkit-1.10.1 → apexdevkit-1.11.1}/apexdevkit/http/url.py +0 -0
  27. {apexdevkit-1.10.1 → apexdevkit-1.11.1}/apexdevkit/py.typed +0 -0
  28. {apexdevkit-1.10.1 → apexdevkit-1.11.1}/apexdevkit/repository/__init__.py +0 -0
  29. {apexdevkit-1.10.1 → apexdevkit-1.11.1}/apexdevkit/repository/base.py +0 -0
  30. {apexdevkit-1.10.1 → apexdevkit-1.11.1}/apexdevkit/repository/connector.py +0 -0
  31. {apexdevkit-1.10.1 → apexdevkit-1.11.1}/apexdevkit/repository/database.py +0 -0
  32. {apexdevkit-1.10.1 → apexdevkit-1.11.1}/apexdevkit/repository/decorator.py +0 -0
  33. {apexdevkit-1.10.1 → apexdevkit-1.11.1}/apexdevkit/repository/interface.py +0 -0
  34. {apexdevkit-1.10.1 → apexdevkit-1.11.1}/apexdevkit/repository/mongo.py +0 -0
  35. {apexdevkit-1.10.1 → apexdevkit-1.11.1}/apexdevkit/repository/sqlite.py +0 -0
  36. {apexdevkit-1.10.1 → apexdevkit-1.11.1}/apexdevkit/testing/__init__.py +0 -0
  37. {apexdevkit-1.10.1 → apexdevkit-1.11.1}/apexdevkit/testing/database.py +0 -0
  38. {apexdevkit-1.10.1 → apexdevkit-1.11.1}/apexdevkit/testing/fake.py +0 -0
  39. {apexdevkit-1.10.1 → apexdevkit-1.11.1}/apexdevkit/testing/rest.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: apexdevkit
3
- Version: 1.10.1
3
+ Version: 1.11.1
4
4
  Summary: Apex Development Tools for python.
5
5
  Author: Apex Dev
6
6
  Author-email: dev@apex.ge
@@ -1,20 +1,13 @@
1
1
  from copy import deepcopy
2
2
  from dataclasses import dataclass, field
3
- from typing import Any, Callable, Generic, Iterable, Iterator, Protocol, Self, TypeVar
3
+ from typing import Any, Callable, Iterable, Iterator, Self
4
4
 
5
5
  from apexdevkit.error import DoesNotExistError, ExistsError
6
- from apexdevkit.formatter import DataclassFormatter, Formatter
7
-
8
-
9
- class _Item(Protocol): # pragma: no cover
10
- @property
11
- def id(self) -> Any:
12
- pass
13
-
6
+ from apexdevkit.formatter import Formatter
7
+ from apexdevkit.repository import RepositoryBase
8
+ from apexdevkit.repository.interface import IdT, ItemT
14
9
 
15
10
  KeyFunction = Callable[[Any], str]
16
-
17
- ItemT = TypeVar("ItemT", bound=_Item)
18
11
  _Raw = dict[str, Any]
19
12
 
20
13
 
@@ -27,16 +20,12 @@ class AttributeKey:
27
20
 
28
21
 
29
22
  @dataclass
30
- class InMemoryRepository(Generic[ItemT]):
23
+ class InMemoryRepository(RepositoryBase[IdT, ItemT]):
31
24
  formatter: Formatter[_Raw, ItemT]
32
25
  items: dict[str, _Raw] = field(default_factory=dict)
33
26
 
34
27
  _key_functions: list[KeyFunction] = field(init=False, default_factory=list)
35
28
 
36
- @classmethod
37
- def for_dataclass(cls, value: type[ItemT]) -> "InMemoryRepository[ItemT]":
38
- return cls(DataclassFormatter(value))
39
-
40
29
  def with_key(self, function: KeyFunction) -> Self:
41
30
  self._key_functions.append(function)
42
31
 
@@ -55,7 +44,7 @@ class InMemoryRepository(Generic[ItemT]):
55
44
 
56
45
  def create(self, item: ItemT) -> ItemT:
57
46
  self._ensure_does_not_exist(item)
58
- self.items[str(item.id)] = deepcopy(self.formatter.dump(item))
47
+ self.items[self._key_functions[0](item)] = deepcopy(self.formatter.dump(item))
59
48
 
60
49
  return item
61
50
 
@@ -69,27 +58,32 @@ class InMemoryRepository(Generic[ItemT]):
69
58
 
70
59
  error.fire()
71
60
 
72
- def read(self, item_id: Any) -> ItemT:
73
- for item in self:
74
- for key in self._key_functions:
61
+ def read(self, item_id: IdT) -> ItemT:
62
+ for key in self._key_functions:
63
+ for item in self:
75
64
  if key(item) == str(item_id):
76
65
  return item
77
66
 
78
67
  raise DoesNotExistError(item_id)
79
68
 
80
69
  def update(self, item: ItemT) -> None:
81
- self.delete(item.id)
70
+ try:
71
+ del self.items[self._key_functions[0](item)]
72
+ except KeyError:
73
+ raise DoesNotExistError(self._key_functions[0](item))
82
74
  self.create(item)
83
75
 
84
76
  def update_many(self, items: list[ItemT]) -> None:
85
77
  for item in items:
86
78
  self.update(item)
87
79
 
88
- def delete(self, item_id: Any) -> None:
89
- try:
90
- del self.items[str(item_id)]
91
- except KeyError:
92
- raise DoesNotExistError(item_id)
80
+ def delete(self, item_id: IdT) -> None:
81
+ for key in self._key_functions:
82
+ for item in self:
83
+ if key(item) == str(item_id):
84
+ del self.items[self._key_functions[0](item)]
85
+ return
86
+ raise DoesNotExistError(item_id)
93
87
 
94
88
  def search(self, **kwargs: Any) -> Iterable[ItemT]:
95
89
  items = []
@@ -1,6 +1,6 @@
1
1
  [tool.poetry]
2
2
  name = "apexdevkit"
3
- version = "1.10.1"
3
+ version = "1.11.1"
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