eetlijst-python 0.0.2__tar.gz → 0.0.4__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 (89) hide show
  1. {eetlijst_python-0.0.2 → eetlijst_python-0.0.4}/PKG-INFO +1 -1
  2. {eetlijst_python-0.0.2 → eetlijst_python-0.0.4}/pyproject.toml +1 -1
  3. eetlijst_python-0.0.4/src/eetlijst/eetlijst.py +61 -0
  4. {eetlijst_python-0.0.2 → eetlijst_python-0.0.4}/src/eetlijst/services/__init__.py +1 -0
  5. eetlijst_python-0.0.4/src/eetlijst/services/me/__init__.py +1 -0
  6. eetlijst_python-0.0.4/src/eetlijst/services/me/me.py +53 -0
  7. {eetlijst_python-0.0.2 → eetlijst_python-0.0.4}/src/eetlijst_python.egg-info/PKG-INFO +1 -1
  8. {eetlijst_python-0.0.2 → eetlijst_python-0.0.4}/src/eetlijst_python.egg-info/SOURCES.txt +2 -0
  9. eetlijst_python-0.0.2/src/eetlijst/eetlijst.py +0 -37
  10. {eetlijst_python-0.0.2 → eetlijst_python-0.0.4}/README.md +0 -0
  11. {eetlijst_python-0.0.2 → eetlijst_python-0.0.4}/setup.cfg +0 -0
  12. {eetlijst_python-0.0.2 → eetlijst_python-0.0.4}/src/eetlijst/__init__.py +0 -0
  13. {eetlijst_python-0.0.2 → eetlijst_python-0.0.4}/src/eetlijst/exceptions.py +0 -0
  14. {eetlijst_python-0.0.2 → eetlijst_python-0.0.4}/src/eetlijst/generated/__init__.py +0 -0
  15. {eetlijst_python-0.0.2 → eetlijst_python-0.0.4}/src/eetlijst/generated/all_attendances.py +0 -0
  16. {eetlijst_python-0.0.2 → eetlijst_python-0.0.4}/src/eetlijst/generated/all_events.py +0 -0
  17. {eetlijst_python-0.0.2 → eetlijst_python-0.0.4}/src/eetlijst/generated/all_expenses.py +0 -0
  18. {eetlijst_python-0.0.2 → eetlijst_python-0.0.4}/src/eetlijst/generated/all_groups.py +0 -0
  19. {eetlijst_python-0.0.2 → eetlijst_python-0.0.4}/src/eetlijst/generated/all_settlements.py +0 -0
  20. {eetlijst_python-0.0.2 → eetlijst_python-0.0.4}/src/eetlijst/generated/all_users_in_group.py +0 -0
  21. {eetlijst_python-0.0.2 → eetlijst_python-0.0.4}/src/eetlijst/generated/app_status.py +0 -0
  22. {eetlijst_python-0.0.2 → eetlijst_python-0.0.4}/src/eetlijst/generated/async_base_client.py +0 -0
  23. {eetlijst_python-0.0.2 → eetlijst_python-0.0.4}/src/eetlijst/generated/automatic_events.py +0 -0
  24. {eetlijst_python-0.0.2 → eetlijst_python-0.0.4}/src/eetlijst/generated/base_model.py +0 -0
  25. {eetlijst_python-0.0.2 → eetlijst_python-0.0.4}/src/eetlijst/generated/client.py +0 -0
  26. {eetlijst_python-0.0.2 → eetlijst_python-0.0.4}/src/eetlijst/generated/create_expense.py +0 -0
  27. {eetlijst_python-0.0.2 → eetlijst_python-0.0.4}/src/eetlijst/generated/create_group.py +0 -0
  28. {eetlijst_python-0.0.2 → eetlijst_python-0.0.4}/src/eetlijst/generated/create_list_item.py +0 -0
  29. {eetlijst_python-0.0.2 → eetlijst_python-0.0.4}/src/eetlijst/generated/create_many_list_items.py +0 -0
  30. {eetlijst_python-0.0.2 → eetlijst_python-0.0.4}/src/eetlijst/generated/create_settlement.py +0 -0
  31. {eetlijst_python-0.0.2 → eetlijst_python-0.0.4}/src/eetlijst/generated/enums.py +0 -0
  32. {eetlijst_python-0.0.2 → eetlijst_python-0.0.4}/src/eetlijst/generated/exceptions.py +0 -0
  33. {eetlijst_python-0.0.2 → eetlijst_python-0.0.4}/src/eetlijst/generated/fragments.py +0 -0
  34. {eetlijst_python-0.0.2 → eetlijst_python-0.0.4}/src/eetlijst/generated/get_attendance.py +0 -0
  35. {eetlijst_python-0.0.2 → eetlijst_python-0.0.4}/src/eetlijst/generated/get_event.py +0 -0
  36. {eetlijst_python-0.0.2 → eetlijst_python-0.0.4}/src/eetlijst/generated/get_group.py +0 -0
  37. {eetlijst_python-0.0.2 → eetlijst_python-0.0.4}/src/eetlijst/generated/get_user.py +0 -0
  38. {eetlijst_python-0.0.2 → eetlijst_python-0.0.4}/src/eetlijst/generated/get_user_in_group.py +0 -0
  39. {eetlijst_python-0.0.2 → eetlijst_python-0.0.4}/src/eetlijst/generated/group_total_expense.py +0 -0
  40. {eetlijst_python-0.0.2 → eetlijst_python-0.0.4}/src/eetlijst/generated/input_types.py +0 -0
  41. {eetlijst_python-0.0.2 → eetlijst_python-0.0.4}/src/eetlijst/generated/join_group.py +0 -0
  42. {eetlijst_python-0.0.2 → eetlijst_python-0.0.4}/src/eetlijst/generated/list_items.py +0 -0
  43. {eetlijst_python-0.0.2 → eetlijst_python-0.0.4}/src/eetlijst/generated/remove_account.py +0 -0
  44. {eetlijst_python-0.0.2 → eetlijst_python-0.0.4}/src/eetlijst/generated/settle_unsettled_expenses.py +0 -0
  45. {eetlijst_python-0.0.2 → eetlijst_python-0.0.4}/src/eetlijst/generated/settlement_expenses.py +0 -0
  46. {eetlijst_python-0.0.2 → eetlijst_python-0.0.4}/src/eetlijst/generated/update_attendance.py +0 -0
  47. {eetlijst_python-0.0.2 → eetlijst_python-0.0.4}/src/eetlijst/generated/update_event.py +0 -0
  48. {eetlijst_python-0.0.2 → eetlijst_python-0.0.4}/src/eetlijst/generated/update_expense.py +0 -0
  49. {eetlijst_python-0.0.2 → eetlijst_python-0.0.4}/src/eetlijst/generated/update_expense_distribution.py +0 -0
  50. {eetlijst_python-0.0.2 → eetlijst_python-0.0.4}/src/eetlijst/generated/update_group.py +0 -0
  51. {eetlijst_python-0.0.2 → eetlijst_python-0.0.4}/src/eetlijst/generated/update_list_item.py +0 -0
  52. {eetlijst_python-0.0.2 → eetlijst_python-0.0.4}/src/eetlijst/generated/update_many_attendance.py +0 -0
  53. {eetlijst_python-0.0.2 → eetlijst_python-0.0.4}/src/eetlijst/generated/update_user.py +0 -0
  54. {eetlijst_python-0.0.2 → eetlijst_python-0.0.4}/src/eetlijst/generated/update_user_in_group.py +0 -0
  55. {eetlijst_python-0.0.2 → eetlijst_python-0.0.4}/src/eetlijst/generated/update_users_in_group.py +0 -0
  56. {eetlijst_python-0.0.2 → eetlijst_python-0.0.4}/src/eetlijst/services/app/__init__.py +0 -0
  57. {eetlijst_python-0.0.2 → eetlijst_python-0.0.4}/src/eetlijst/services/app/app.py +0 -0
  58. {eetlijst_python-0.0.2 → eetlijst_python-0.0.4}/src/eetlijst/services/app/transformers.py +0 -0
  59. {eetlijst_python-0.0.2 → eetlijst_python-0.0.4}/src/eetlijst/services/event_attendance/__init__.py +0 -0
  60. {eetlijst_python-0.0.2 → eetlijst_python-0.0.4}/src/eetlijst/services/event_attendance/event_attendance.py +0 -0
  61. {eetlijst_python-0.0.2 → eetlijst_python-0.0.4}/src/eetlijst/services/event_attendance/transformers.py +0 -0
  62. {eetlijst_python-0.0.2 → eetlijst_python-0.0.4}/src/eetlijst/services/events/__init__.py +0 -0
  63. {eetlijst_python-0.0.2 → eetlijst_python-0.0.4}/src/eetlijst/services/events/events.py +0 -0
  64. {eetlijst_python-0.0.2 → eetlijst_python-0.0.4}/src/eetlijst/services/events/transformers.py +0 -0
  65. {eetlijst_python-0.0.2 → eetlijst_python-0.0.4}/src/eetlijst/services/expenses/__init__.py +0 -0
  66. {eetlijst_python-0.0.2 → eetlijst_python-0.0.4}/src/eetlijst/services/expenses/expenses.py +0 -0
  67. {eetlijst_python-0.0.2 → eetlijst_python-0.0.4}/src/eetlijst/services/expenses/transformers.py +0 -0
  68. {eetlijst_python-0.0.2 → eetlijst_python-0.0.4}/src/eetlijst/services/expenses/utils.py +0 -0
  69. {eetlijst_python-0.0.2 → eetlijst_python-0.0.4}/src/eetlijst/services/group_list/__init__.py +0 -0
  70. {eetlijst_python-0.0.2 → eetlijst_python-0.0.4}/src/eetlijst/services/group_list/group_list.py +0 -0
  71. {eetlijst_python-0.0.2 → eetlijst_python-0.0.4}/src/eetlijst/services/group_list/transformers.py +0 -0
  72. {eetlijst_python-0.0.2 → eetlijst_python-0.0.4}/src/eetlijst/services/group_users/__init__.py +0 -0
  73. {eetlijst_python-0.0.2 → eetlijst_python-0.0.4}/src/eetlijst/services/group_users/group_users.py +0 -0
  74. {eetlijst_python-0.0.2 → eetlijst_python-0.0.4}/src/eetlijst/services/group_users/transformers.py +0 -0
  75. {eetlijst_python-0.0.2 → eetlijst_python-0.0.4}/src/eetlijst/services/groups/__init__.py +0 -0
  76. {eetlijst_python-0.0.2 → eetlijst_python-0.0.4}/src/eetlijst/services/groups/groups.py +0 -0
  77. {eetlijst_python-0.0.2 → eetlijst_python-0.0.4}/src/eetlijst/services/groups/transformers.py +0 -0
  78. {eetlijst_python-0.0.2 → eetlijst_python-0.0.4}/src/eetlijst/services/settlements/__init__.py +0 -0
  79. {eetlijst_python-0.0.2 → eetlijst_python-0.0.4}/src/eetlijst/services/settlements/settlements.py +0 -0
  80. {eetlijst_python-0.0.2 → eetlijst_python-0.0.4}/src/eetlijst/services/settlements/transformers.py +0 -0
  81. {eetlijst_python-0.0.2 → eetlijst_python-0.0.4}/src/eetlijst/services/settlements/utils.py +0 -0
  82. {eetlijst_python-0.0.2 → eetlijst_python-0.0.4}/src/eetlijst/services/users/__init__.py +0 -0
  83. {eetlijst_python-0.0.2 → eetlijst_python-0.0.4}/src/eetlijst/services/users/transformers.py +0 -0
  84. {eetlijst_python-0.0.2 → eetlijst_python-0.0.4}/src/eetlijst/services/users/users.py +0 -0
  85. {eetlijst_python-0.0.2 → eetlijst_python-0.0.4}/src/eetlijst/utils/__init__.py +0 -0
  86. {eetlijst_python-0.0.2 → eetlijst_python-0.0.4}/src/eetlijst/utils/datetime.py +0 -0
  87. {eetlijst_python-0.0.2 → eetlijst_python-0.0.4}/src/eetlijst_python.egg-info/dependency_links.txt +0 -0
  88. {eetlijst_python-0.0.2 → eetlijst_python-0.0.4}/src/eetlijst_python.egg-info/requires.txt +0 -0
  89. {eetlijst_python-0.0.2 → eetlijst_python-0.0.4}/src/eetlijst_python.egg-info/top_level.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: eetlijst-python
3
- Version: 0.0.2
3
+ Version: 0.0.4
4
4
  Summary: Python rewrite of the Eetlijst GraphQL client
5
5
  Requires-Python: <3.15,>=3.14
6
6
  Description-Content-Type: text/markdown
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "eetlijst-python"
3
- version = "0.0.2"
3
+ version = "0.0.4"
4
4
  description = "Python rewrite of the Eetlijst GraphQL client"
5
5
  readme = "README.md"
6
6
  requires-python = ">=3.14,<3.15"
@@ -0,0 +1,61 @@
1
+ from typing import Any, Optional
2
+
3
+ from httpx import AsyncClient
4
+
5
+ from eetlijst.generated import GraphQlClient
6
+
7
+ from eetlijst.services import (
8
+ App,
9
+ EventAttendance,
10
+ Events,
11
+ Expenses,
12
+ GroupList,
13
+ Groups,
14
+ GroupUsers,
15
+ Me,
16
+ Settlements,
17
+ Users,
18
+ )
19
+
20
+
21
+ class Eetlijst:
22
+
23
+ def __init__(
24
+ self,
25
+ api_key: str,
26
+ url: Optional[str] = None,
27
+ headers: Optional[dict[str, str]] = None,
28
+ http_client: Optional[AsyncClient] = None,
29
+ ws_url: str = "",
30
+ ws_headers: Optional[dict[str, Any]] = None,
31
+ ws_origin: Optional[str] = None,
32
+ ws_connection_init_payload: Optional[dict[str, Any]] = None,
33
+ ):
34
+ client_headers = dict(headers) if headers else {}
35
+ if api_key:
36
+ client_headers["Authorization"] = f"Bearer {api_key}"
37
+
38
+ self._client = GraphQlClient(
39
+ url=url or "https://api.eetlijst.nl/v1/graphql",
40
+ headers=client_headers,
41
+ http_client=http_client,
42
+ ws_url=ws_url,
43
+ ws_headers=ws_headers,
44
+ ws_origin=ws_origin,
45
+ ws_connection_init_payload=ws_connection_init_payload,
46
+ )
47
+
48
+ self.app = App(self._client)
49
+
50
+ event_attendance = EventAttendance(self._client)
51
+ self.events = Events(self._client, event_attendance)
52
+
53
+ group_users = GroupUsers(self._client)
54
+ group_list = GroupList(self._client)
55
+ self.groups = Groups(self._client, group_users, group_list)
56
+
57
+ settlements = Settlements(self._client)
58
+ self.expenses = Expenses(self._client, settlements)
59
+
60
+ self.users = Users(self._client)
61
+ self.me = Me(api_key, self.users)
@@ -5,5 +5,6 @@ from .expenses import Expenses
5
5
  from .group_list import GroupList
6
6
  from .group_users import GroupUsers
7
7
  from .groups import Groups
8
+ from .me import Me
8
9
  from .settlements import Settlements
9
10
  from .users import Users
@@ -0,0 +1 @@
1
+ from .me import Me
@@ -0,0 +1,53 @@
1
+ import base64
2
+ import json
3
+ from datetime import datetime, timezone
4
+ from typing import Any, Optional
5
+
6
+ from eetlijst.services.users import Users
7
+
8
+
9
+ class Me:
10
+ def __init__(self, api_key: str, users: Users):
11
+ self._users = users
12
+ payload = self._decode_payload(api_key)
13
+
14
+ self.user_id: Optional[str] = payload.get("sub")
15
+ self.name: Optional[str] = payload.get("name")
16
+
17
+ iat_timestamp = payload.get("iat")
18
+ self.issued_at: Optional[datetime] = (
19
+ datetime.fromtimestamp(iat_timestamp, tz=timezone.utc)
20
+ if iat_timestamp is not None
21
+ else None
22
+ )
23
+
24
+ exp_timestamp = payload.get("exp")
25
+ self.expires: Optional[datetime] = (
26
+ datetime.fromtimestamp(exp_timestamp, tz=timezone.utc)
27
+ if exp_timestamp is not None
28
+ else None
29
+ )
30
+
31
+ async def get(self):
32
+ if not self.user_id:
33
+ raise ValueError(
34
+ "Cannot fetch user profile: missing 'sub' (user_id) in JWT."
35
+ )
36
+ return await self._users.get(self.user_id)
37
+
38
+ @staticmethod
39
+ def _decode_payload(token: str) -> dict[str, Any]:
40
+ try:
41
+ if token.lower().startswith("bearer "):
42
+ token = token[7:]
43
+
44
+ parts = token.split(".")
45
+ if len(parts) != 3:
46
+ return {}
47
+
48
+ payload_b64 = parts[1]
49
+ padding = "=" * (-len(payload_b64) % 4)
50
+ decoded_bytes = base64.urlsafe_b64decode(payload_b64 + padding)
51
+ return json.loads(decoded_bytes.decode("utf-8"))
52
+ except Exception:
53
+ return {}
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: eetlijst-python
3
- Version: 0.0.2
3
+ Version: 0.0.4
4
4
  Summary: Python rewrite of the Eetlijst GraphQL client
5
5
  Requires-Python: <3.15,>=3.14
6
6
  Description-Content-Type: text/markdown
@@ -68,6 +68,8 @@ src/eetlijst/services/group_users/transformers.py
68
68
  src/eetlijst/services/groups/__init__.py
69
69
  src/eetlijst/services/groups/groups.py
70
70
  src/eetlijst/services/groups/transformers.py
71
+ src/eetlijst/services/me/__init__.py
72
+ src/eetlijst/services/me/me.py
71
73
  src/eetlijst/services/settlements/__init__.py
72
74
  src/eetlijst/services/settlements/settlements.py
73
75
  src/eetlijst/services/settlements/transformers.py
@@ -1,37 +0,0 @@
1
- from typing import Optional
2
-
3
- from eetlijst.generated import GraphQlClient
4
-
5
- from eetlijst.services import (
6
- App,
7
- EventAttendance,
8
- Events,
9
- Expenses,
10
- GroupList,
11
- Groups,
12
- GroupUsers,
13
- Settlements,
14
- Users,
15
- )
16
-
17
-
18
- class Eetlijst:
19
- def __init__(self, api_key: str, url: Optional[str] = None):
20
- self._client = GraphQlClient(
21
- url or "https://api.eetlijst.nl/v1/graphql",
22
- {"Authorization": f"Bearer {api_key}"},
23
- )
24
-
25
- self.app = App(self._client)
26
-
27
- event_attendance = EventAttendance(self._client)
28
- self.events = Events(self._client, event_attendance)
29
-
30
- group_users = GroupUsers(self._client)
31
- group_list = GroupList(self._client)
32
- self.groups = Groups(self._client, group_users, group_list)
33
-
34
- settlements = Settlements(self._client)
35
- self.expenses = Expenses(self._client, settlements)
36
-
37
- self.users = Users(self._client)