eetlijst-python 0.0.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 (86) hide show
  1. eetlijst_python-0.0.1/PKG-INFO +80 -0
  2. eetlijst_python-0.0.1/README.md +65 -0
  3. eetlijst_python-0.0.1/pyproject.toml +94 -0
  4. eetlijst_python-0.0.1/setup.cfg +4 -0
  5. eetlijst_python-0.0.1/src/eetlijst/__init__.py +3 -0
  6. eetlijst_python-0.0.1/src/eetlijst/eetlijst.py +37 -0
  7. eetlijst_python-0.0.1/src/eetlijst/exceptions.py +2 -0
  8. eetlijst_python-0.0.1/src/eetlijst/generated/__init__.py +1153 -0
  9. eetlijst_python-0.0.1/src/eetlijst/generated/all_attendances.py +13 -0
  10. eetlijst_python-0.0.1/src/eetlijst/generated/all_events.py +13 -0
  11. eetlijst_python-0.0.1/src/eetlijst/generated/all_expenses.py +13 -0
  12. eetlijst_python-0.0.1/src/eetlijst/generated/all_groups.py +27 -0
  13. eetlijst_python-0.0.1/src/eetlijst/generated/all_settlements.py +13 -0
  14. eetlijst_python-0.0.1/src/eetlijst/generated/all_users_in_group.py +20 -0
  15. eetlijst_python-0.0.1/src/eetlijst/generated/app_status.py +16 -0
  16. eetlijst_python-0.0.1/src/eetlijst/generated/async_base_client.py +393 -0
  17. eetlijst_python-0.0.1/src/eetlijst/generated/automatic_events.py +18 -0
  18. eetlijst_python-0.0.1/src/eetlijst/generated/base_model.py +28 -0
  19. eetlijst_python-0.0.1/src/eetlijst/generated/client.py +1748 -0
  20. eetlijst_python-0.0.1/src/eetlijst/generated/create_expense.py +15 -0
  21. eetlijst_python-0.0.1/src/eetlijst/generated/create_group.py +15 -0
  22. eetlijst_python-0.0.1/src/eetlijst/generated/create_list_item.py +15 -0
  23. eetlijst_python-0.0.1/src/eetlijst/generated/create_many_list_items.py +20 -0
  24. eetlijst_python-0.0.1/src/eetlijst/generated/create_settlement.py +15 -0
  25. eetlijst_python-0.0.1/src/eetlijst/generated/enums.py +555 -0
  26. eetlijst_python-0.0.1/src/eetlijst/generated/exceptions.py +83 -0
  27. eetlijst_python-0.0.1/src/eetlijst/generated/fragments.py +237 -0
  28. eetlijst_python-0.0.1/src/eetlijst/generated/get_attendance.py +17 -0
  29. eetlijst_python-0.0.1/src/eetlijst/generated/get_event.py +15 -0
  30. eetlijst_python-0.0.1/src/eetlijst/generated/get_group.py +20 -0
  31. eetlijst_python-0.0.1/src/eetlijst/generated/get_user.py +13 -0
  32. eetlijst_python-0.0.1/src/eetlijst/generated/get_user_in_group.py +20 -0
  33. eetlijst_python-0.0.1/src/eetlijst/generated/group_total_expense.py +45 -0
  34. eetlijst_python-0.0.1/src/eetlijst/generated/input_types.py +4702 -0
  35. eetlijst_python-0.0.1/src/eetlijst/generated/join_group.py +17 -0
  36. eetlijst_python-0.0.1/src/eetlijst/generated/list_items.py +13 -0
  37. eetlijst_python-0.0.1/src/eetlijst/generated/remove_account.py +16 -0
  38. eetlijst_python-0.0.1/src/eetlijst/generated/settle_unsettled_expenses.py +21 -0
  39. eetlijst_python-0.0.1/src/eetlijst/generated/settlement_expenses.py +13 -0
  40. eetlijst_python-0.0.1/src/eetlijst/generated/update_attendance.py +17 -0
  41. eetlijst_python-0.0.1/src/eetlijst/generated/update_event.py +15 -0
  42. eetlijst_python-0.0.1/src/eetlijst/generated/update_expense.py +20 -0
  43. eetlijst_python-0.0.1/src/eetlijst/generated/update_expense_distribution.py +23 -0
  44. eetlijst_python-0.0.1/src/eetlijst/generated/update_group.py +15 -0
  45. eetlijst_python-0.0.1/src/eetlijst/generated/update_list_item.py +15 -0
  46. eetlijst_python-0.0.1/src/eetlijst/generated/update_many_attendance.py +22 -0
  47. eetlijst_python-0.0.1/src/eetlijst/generated/update_user.py +15 -0
  48. eetlijst_python-0.0.1/src/eetlijst/generated/update_user_in_group.py +17 -0
  49. eetlijst_python-0.0.1/src/eetlijst/generated/update_users_in_group.py +25 -0
  50. eetlijst_python-0.0.1/src/eetlijst/services/__init__.py +9 -0
  51. eetlijst_python-0.0.1/src/eetlijst/services/app/__init__.py +1 -0
  52. eetlijst_python-0.0.1/src/eetlijst/services/app/app.py +20 -0
  53. eetlijst_python-0.0.1/src/eetlijst/services/app/transformers.py +10 -0
  54. eetlijst_python-0.0.1/src/eetlijst/services/event_attendance/__init__.py +1 -0
  55. eetlijst_python-0.0.1/src/eetlijst/services/event_attendance/event_attendance.py +94 -0
  56. eetlijst_python-0.0.1/src/eetlijst/services/event_attendance/transformers.py +58 -0
  57. eetlijst_python-0.0.1/src/eetlijst/services/events/__init__.py +1 -0
  58. eetlijst_python-0.0.1/src/eetlijst/services/events/events.py +148 -0
  59. eetlijst_python-0.0.1/src/eetlijst/services/events/transformers.py +67 -0
  60. eetlijst_python-0.0.1/src/eetlijst/services/expenses/__init__.py +1 -0
  61. eetlijst_python-0.0.1/src/eetlijst/services/expenses/expenses.py +98 -0
  62. eetlijst_python-0.0.1/src/eetlijst/services/expenses/transformers.py +73 -0
  63. eetlijst_python-0.0.1/src/eetlijst/services/expenses/utils.py +31 -0
  64. eetlijst_python-0.0.1/src/eetlijst/services/group_list/__init__.py +1 -0
  65. eetlijst_python-0.0.1/src/eetlijst/services/group_list/group_list.py +95 -0
  66. eetlijst_python-0.0.1/src/eetlijst/services/group_list/transformers.py +38 -0
  67. eetlijst_python-0.0.1/src/eetlijst/services/group_users/__init__.py +1 -0
  68. eetlijst_python-0.0.1/src/eetlijst/services/group_users/group_users.py +130 -0
  69. eetlijst_python-0.0.1/src/eetlijst/services/group_users/transformers.py +84 -0
  70. eetlijst_python-0.0.1/src/eetlijst/services/groups/__init__.py +1 -0
  71. eetlijst_python-0.0.1/src/eetlijst/services/groups/groups.py +84 -0
  72. eetlijst_python-0.0.1/src/eetlijst/services/groups/transformers.py +140 -0
  73. eetlijst_python-0.0.1/src/eetlijst/services/settlements/__init__.py +1 -0
  74. eetlijst_python-0.0.1/src/eetlijst/services/settlements/settlements.py +225 -0
  75. eetlijst_python-0.0.1/src/eetlijst/services/settlements/transformers.py +95 -0
  76. eetlijst_python-0.0.1/src/eetlijst/services/settlements/utils.py +84 -0
  77. eetlijst_python-0.0.1/src/eetlijst/services/users/__init__.py +1 -0
  78. eetlijst_python-0.0.1/src/eetlijst/services/users/transformers.py +103 -0
  79. eetlijst_python-0.0.1/src/eetlijst/services/users/users.py +44 -0
  80. eetlijst_python-0.0.1/src/eetlijst/utils/__init__.py +0 -0
  81. eetlijst_python-0.0.1/src/eetlijst/utils/datetime.py +25 -0
  82. eetlijst_python-0.0.1/src/eetlijst_python.egg-info/PKG-INFO +80 -0
  83. eetlijst_python-0.0.1/src/eetlijst_python.egg-info/SOURCES.txt +84 -0
  84. eetlijst_python-0.0.1/src/eetlijst_python.egg-info/dependency_links.txt +1 -0
  85. eetlijst_python-0.0.1/src/eetlijst_python.egg-info/requires.txt +9 -0
  86. eetlijst_python-0.0.1/src/eetlijst_python.egg-info/top_level.txt +1 -0
@@ -0,0 +1,80 @@
1
+ Metadata-Version: 2.4
2
+ Name: eetlijst-python
3
+ Version: 0.0.1
4
+ Summary: Python rewrite of the Eetlijst GraphQL client
5
+ Requires-Python: <3.15,>=3.14
6
+ Description-Content-Type: text/markdown
7
+ Requires-Dist: httpx>=0.28
8
+ Requires-Dist: pydantic>=2.0.0
9
+ Provides-Extra: dev
10
+ Requires-Dist: ariadne-codegen>=0.18; extra == "dev"
11
+ Requires-Dist: mypy>=1.8.0; extra == "dev"
12
+ Requires-Dist: black>=24.0; extra == "dev"
13
+ Requires-Dist: isort>=5.13; extra == "dev"
14
+ Requires-Dist: pylint>=3.0; extra == "dev"
15
+
16
+ # eetlijst-python
17
+
18
+ A simple Python API client for Eetlijst.
19
+
20
+ > [!NOTE]
21
+ > This project is made for use in a student house, and will probably not be maintained.
22
+ > Most of this Python port was converted from the TypeScript version (https://github.com/DJ1TJOO/eetlijst-api-ts) using Google Gemini.
23
+
24
+ ## Usage
25
+
26
+ Create a virtual environment and install the package:
27
+
28
+ python -m venv .venv
29
+ # Activate virtual environment (.venv\Scripts\Activate.ps1 on Windows or source .venv/bin/activate on Linux/macOS)
30
+ python -m pip install -e .
31
+
32
+ The API key can be retrieved from the account page, under Developer API key (BETA), at https://v5.eetlijst.nl/account
33
+
34
+ ```python
35
+ import asyncio
36
+ from eetlijst import Eetlijst
37
+
38
+ eetlijst = Eetlijst("<API_KEY>")
39
+
40
+ async def main():
41
+ app_status = await eetlijst.app.status()
42
+ print(app_status)
43
+
44
+ if __name__ == "__main__":
45
+ asyncio.run(main())
46
+ ```
47
+
48
+ See Examples (./examples/) for more.
49
+
50
+ ## What is Included
51
+
52
+ - Service classes for app, events, expenses, groups, users, groups.users, groups.list, events.attendance, and expenses.settlements.
53
+ - A complete GraphQL operation manifest at src/eetlijst/operations.graphql for ariadne-codegen.
54
+ - Example scripts matching the TS examples.
55
+
56
+ ## Development & Codegen
57
+
58
+ This project uses ariadne-codegen (https://github.com/mirumee/ariadne-codegen) for GraphQL code generation.
59
+
60
+ Run code generation:
61
+
62
+ ```
63
+ ariadne-codegen
64
+ ```
65
+
66
+ The configuration in pyproject.toml points to the GraphQL schema and outputs generated code into src/generated/.
67
+
68
+ ### Building
69
+
70
+ To build the package locally, install the build tool first:
71
+
72
+ ```
73
+ python -m pip install build
74
+ ```
75
+
76
+ Build the package:
77
+
78
+ ```
79
+ python -m build
80
+ ```
@@ -0,0 +1,65 @@
1
+ # eetlijst-python
2
+
3
+ A simple Python API client for Eetlijst.
4
+
5
+ > [!NOTE]
6
+ > This project is made for use in a student house, and will probably not be maintained.
7
+ > Most of this Python port was converted from the TypeScript version (https://github.com/DJ1TJOO/eetlijst-api-ts) using Google Gemini.
8
+
9
+ ## Usage
10
+
11
+ Create a virtual environment and install the package:
12
+
13
+ python -m venv .venv
14
+ # Activate virtual environment (.venv\Scripts\Activate.ps1 on Windows or source .venv/bin/activate on Linux/macOS)
15
+ python -m pip install -e .
16
+
17
+ The API key can be retrieved from the account page, under Developer API key (BETA), at https://v5.eetlijst.nl/account
18
+
19
+ ```python
20
+ import asyncio
21
+ from eetlijst import Eetlijst
22
+
23
+ eetlijst = Eetlijst("<API_KEY>")
24
+
25
+ async def main():
26
+ app_status = await eetlijst.app.status()
27
+ print(app_status)
28
+
29
+ if __name__ == "__main__":
30
+ asyncio.run(main())
31
+ ```
32
+
33
+ See Examples (./examples/) for more.
34
+
35
+ ## What is Included
36
+
37
+ - Service classes for app, events, expenses, groups, users, groups.users, groups.list, events.attendance, and expenses.settlements.
38
+ - A complete GraphQL operation manifest at src/eetlijst/operations.graphql for ariadne-codegen.
39
+ - Example scripts matching the TS examples.
40
+
41
+ ## Development & Codegen
42
+
43
+ This project uses ariadne-codegen (https://github.com/mirumee/ariadne-codegen) for GraphQL code generation.
44
+
45
+ Run code generation:
46
+
47
+ ```
48
+ ariadne-codegen
49
+ ```
50
+
51
+ The configuration in pyproject.toml points to the GraphQL schema and outputs generated code into src/generated/.
52
+
53
+ ### Building
54
+
55
+ To build the package locally, install the build tool first:
56
+
57
+ ```
58
+ python -m pip install build
59
+ ```
60
+
61
+ Build the package:
62
+
63
+ ```
64
+ python -m build
65
+ ```
@@ -0,0 +1,94 @@
1
+ [project]
2
+ name = "eetlijst-python"
3
+ version = "0.0.1"
4
+ description = "Python rewrite of the Eetlijst GraphQL client"
5
+ readme = "README.md"
6
+ requires-python = ">=3.14,<3.15"
7
+ dependencies = [
8
+ "httpx>=0.28",
9
+ "pydantic>=2.0.0",
10
+ ]
11
+
12
+ [project.optional-dependencies]
13
+ dev = [
14
+ "ariadne-codegen>=0.18",
15
+ "mypy>=1.8.0",
16
+ "black>=24.0",
17
+ "isort>=5.13",
18
+ "pylint>=3.0",
19
+ ]
20
+
21
+ [build-system]
22
+ requires = ["setuptools>=61.0"]
23
+ build-backend = "setuptools.build_meta"
24
+
25
+ [tool.ariadne-codegen]
26
+ schema_path = "schema.graphql"
27
+ queries_path = "src/eetlijst/services"
28
+ target_package_name = "generated"
29
+ target_package_path = "src/eetlijst"
30
+ include_comments = "none"
31
+ client_name = "GraphQlClient"
32
+
33
+ [tool.ariadne-codegen.scalars.uuid]
34
+ type = "str"
35
+
36
+ [tool.ariadne-codegen.scalars.timestamptz]
37
+ type = "datetime.datetime"
38
+ deserialize = "iso8601.parse_date"
39
+
40
+ [tool.pylint.main]
41
+ ignore-paths = [
42
+ "src/eetlijst/generated"
43
+ ]
44
+
45
+ [tool.pylint.messages_control]
46
+ disable = [
47
+ "duplicate-code",
48
+ "too-many-arguments",
49
+ "too-many-positional-arguments",
50
+ "line-too-long",
51
+ "missing-module-docstring",
52
+ "missing-class-docstring",
53
+ "missing-function-docstring",
54
+ "bare-except",
55
+ "too-many-branches",
56
+ "too-many-locals",
57
+ "too-few-public-methods",
58
+ "too-many-public-methods",
59
+ "fixme"
60
+ ]
61
+
62
+ [tool.pylint.BASIC]
63
+ typevar-rgx = "^_?[A-Z][a-zA-Z0-9_]*$"
64
+
65
+ [tool.black]
66
+ exclude = "src/eetlijst/generated"
67
+
68
+ [tool.isort]
69
+ profile = "black"
70
+ skip = [
71
+ "src/eetlijst/generated"
72
+ ]
73
+ sections = [
74
+ "FUTURE",
75
+ "STDLIB",
76
+ "THIRDPARTY",
77
+ "GENERATED",
78
+ "SRC",
79
+ "SERVICES",
80
+ "UTILS",
81
+ "FIRSTPARTY",
82
+ "LOCALFOLDER"
83
+ ]
84
+ known_generated = ["eetlijst.generated"]
85
+ known_src = ["eetlijst"]
86
+ known_services = ["eetlijst.services"]
87
+ known_utils = ["eetlijst.utils"]
88
+
89
+ [tool.mypy]
90
+ exclude = "src/eetlijst/generated"
91
+ check_untyped_defs = true
92
+ warn_redundant_casts = true
93
+ disallow_any_generics = true
94
+ disallow_any_unimported = true
@@ -0,0 +1,4 @@
1
+ [egg_info]
2
+ tag_build =
3
+ tag_date = 0
4
+
@@ -0,0 +1,3 @@
1
+ from .eetlijst import Eetlijst
2
+
3
+ __all__ = ["Eetlijst"]
@@ -0,0 +1,37 @@
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)
@@ -0,0 +1,2 @@
1
+ class EetlijstException(Exception):
2
+ pass