apexdevkit 1.5.5__tar.gz → 1.5.7__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 (35) hide show
  1. {apexdevkit-1.5.5 → apexdevkit-1.5.7}/PKG-INFO +1 -1
  2. {apexdevkit-1.5.5 → apexdevkit-1.5.7}/apexdevkit/error.py +1 -0
  3. {apexdevkit-1.5.5 → apexdevkit-1.5.7}/apexdevkit/fastapi/router.py +1 -1
  4. apexdevkit-1.5.7/apexdevkit/formatter.py +35 -0
  5. {apexdevkit-1.5.5 → apexdevkit-1.5.7}/pyproject.toml +1 -1
  6. apexdevkit-1.5.5/apexdevkit/formatter.py +0 -23
  7. {apexdevkit-1.5.5 → apexdevkit-1.5.7}/LICENSE +0 -0
  8. {apexdevkit-1.5.5 → apexdevkit-1.5.7}/README.md +0 -0
  9. {apexdevkit-1.5.5 → apexdevkit-1.5.7}/apexdevkit/__init__.py +0 -0
  10. {apexdevkit-1.5.5 → apexdevkit-1.5.7}/apexdevkit/annotation/__init__.py +0 -0
  11. {apexdevkit-1.5.5 → apexdevkit-1.5.7}/apexdevkit/annotation/deprecate.py +0 -0
  12. {apexdevkit-1.5.5 → apexdevkit-1.5.7}/apexdevkit/fastapi/__init__.py +0 -0
  13. {apexdevkit-1.5.5 → apexdevkit-1.5.7}/apexdevkit/fastapi/builder.py +0 -0
  14. {apexdevkit-1.5.5 → apexdevkit-1.5.7}/apexdevkit/fastapi/dependable.py +0 -0
  15. {apexdevkit-1.5.5 → apexdevkit-1.5.7}/apexdevkit/fastapi/docs.py +0 -0
  16. {apexdevkit-1.5.5 → apexdevkit-1.5.7}/apexdevkit/fastapi/response.py +0 -0
  17. {apexdevkit-1.5.5 → apexdevkit-1.5.7}/apexdevkit/fastapi/schema.py +0 -0
  18. {apexdevkit-1.5.5 → apexdevkit-1.5.7}/apexdevkit/fastapi/service.py +0 -0
  19. {apexdevkit-1.5.5 → apexdevkit-1.5.7}/apexdevkit/http/__init__.py +0 -0
  20. {apexdevkit-1.5.5 → apexdevkit-1.5.7}/apexdevkit/http/fake.py +0 -0
  21. {apexdevkit-1.5.5 → apexdevkit-1.5.7}/apexdevkit/http/fluent.py +0 -0
  22. {apexdevkit-1.5.5 → apexdevkit-1.5.7}/apexdevkit/http/httpx.py +0 -0
  23. {apexdevkit-1.5.5 → apexdevkit-1.5.7}/apexdevkit/http/json.py +0 -0
  24. {apexdevkit-1.5.5 → apexdevkit-1.5.7}/apexdevkit/http/url.py +0 -0
  25. {apexdevkit-1.5.5 → apexdevkit-1.5.7}/apexdevkit/py.typed +0 -0
  26. {apexdevkit-1.5.5 → apexdevkit-1.5.7}/apexdevkit/repository/__init__.py +0 -0
  27. {apexdevkit-1.5.5 → apexdevkit-1.5.7}/apexdevkit/repository/base.py +0 -0
  28. {apexdevkit-1.5.5 → apexdevkit-1.5.7}/apexdevkit/repository/connector.py +0 -0
  29. {apexdevkit-1.5.5 → apexdevkit-1.5.7}/apexdevkit/repository/database.py +0 -0
  30. {apexdevkit-1.5.5 → apexdevkit-1.5.7}/apexdevkit/repository/in_memory.py +0 -0
  31. {apexdevkit-1.5.5 → apexdevkit-1.5.7}/apexdevkit/repository/interface.py +0 -0
  32. {apexdevkit-1.5.5 → apexdevkit-1.5.7}/apexdevkit/testing/__init__.py +0 -0
  33. {apexdevkit-1.5.5 → apexdevkit-1.5.7}/apexdevkit/testing/database.py +0 -0
  34. {apexdevkit-1.5.5 → apexdevkit-1.5.7}/apexdevkit/testing/fake.py +0 -0
  35. {apexdevkit-1.5.5 → apexdevkit-1.5.7}/apexdevkit/testing/rest.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: apexdevkit
3
- Version: 1.5.5
3
+ Version: 1.5.7
4
4
  Summary: Apex Development Tools for python.
5
5
  Author: Apex Dev
6
6
  Author-email: dev@apex.ge
@@ -43,6 +43,7 @@ class DoesNotExistError(Exception):
43
43
  @dataclass
44
44
  class ForbiddenError(Exception):
45
45
  item: Any = field(default_factory=UnknownItem)
46
+ message: str = "Forbidden"
46
47
 
47
48
  @property
48
49
  def id(self) -> Any:
@@ -60,7 +60,7 @@ class RestfulResponse:
60
60
  return self._response(
61
61
  403,
62
62
  data={"id": str(e.id)},
63
- error="Forbidden",
63
+ error=e.message,
64
64
  )
65
65
 
66
66
  def created_one(self, item: Any) -> dict[str, Any]:
@@ -0,0 +1,35 @@
1
+ from dataclasses import asdict, dataclass, field
2
+ from typing import Any, Generic, Protocol, Self, TypeVar
3
+
4
+ ItemT = TypeVar("ItemT")
5
+
6
+
7
+ class Formatter(Protocol[ItemT]): # pragma: no cover
8
+ def load(self, raw: dict[str, Any]) -> ItemT:
9
+ pass
10
+
11
+ def dump(self, item: ItemT) -> dict[str, Any]:
12
+ pass
13
+
14
+
15
+ @dataclass
16
+ class DataclassFormatter(Generic[ItemT]):
17
+ resource: type[ItemT]
18
+ sub_formatters: dict[str, Formatter[Any]] = field(default_factory=dict)
19
+
20
+ def and_nested(self, **formatters: Formatter[Any]) -> Self:
21
+ return self.with_nested(**formatters)
22
+
23
+ def with_nested(self, **formatters: Formatter[Any]) -> Self:
24
+ self.sub_formatters.update(formatters)
25
+
26
+ return self
27
+
28
+ def load(self, raw: dict[str, Any]) -> ItemT:
29
+ for key, formatter in self.sub_formatters.items():
30
+ raw[key] = formatter.load(raw.pop(key))
31
+
32
+ return self.resource(**raw)
33
+
34
+ def dump(self, item: ItemT) -> dict[str, Any]:
35
+ return asdict(item) # type: ignore
@@ -1,6 +1,6 @@
1
1
  [tool.poetry]
2
2
  name = "apexdevkit"
3
- version = "1.5.5"
3
+ version = "1.5.7"
4
4
  description = "Apex Development Tools for python."
5
5
  authors = ["Apex Dev <dev@apex.ge>"]
6
6
  readme = "README.md"
@@ -1,23 +0,0 @@
1
- from dataclasses import asdict, dataclass
2
- from typing import Any, Generic, Protocol, TypeVar
3
-
4
- ItemT = TypeVar("ItemT")
5
-
6
-
7
- class Formatter(Protocol[ItemT]):
8
- def load(self, raw: dict[str, Any]) -> ItemT:
9
- pass
10
-
11
- def dump(self, item: ItemT) -> dict[str, Any]:
12
- pass
13
-
14
-
15
- @dataclass
16
- class DataclassFormatter(Generic[ItemT]):
17
- resource: type[ItemT]
18
-
19
- def load(self, raw: dict[str, Any]) -> ItemT:
20
- return self.resource(**raw)
21
-
22
- def dump(self, item: ItemT) -> dict[str, Any]:
23
- return asdict(item) # type: ignore
File without changes
File without changes