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.
- eetlijst_python-0.0.1/PKG-INFO +80 -0
- eetlijst_python-0.0.1/README.md +65 -0
- eetlijst_python-0.0.1/pyproject.toml +94 -0
- eetlijst_python-0.0.1/setup.cfg +4 -0
- eetlijst_python-0.0.1/src/eetlijst/__init__.py +3 -0
- eetlijst_python-0.0.1/src/eetlijst/eetlijst.py +37 -0
- eetlijst_python-0.0.1/src/eetlijst/exceptions.py +2 -0
- eetlijst_python-0.0.1/src/eetlijst/generated/__init__.py +1153 -0
- eetlijst_python-0.0.1/src/eetlijst/generated/all_attendances.py +13 -0
- eetlijst_python-0.0.1/src/eetlijst/generated/all_events.py +13 -0
- eetlijst_python-0.0.1/src/eetlijst/generated/all_expenses.py +13 -0
- eetlijst_python-0.0.1/src/eetlijst/generated/all_groups.py +27 -0
- eetlijst_python-0.0.1/src/eetlijst/generated/all_settlements.py +13 -0
- eetlijst_python-0.0.1/src/eetlijst/generated/all_users_in_group.py +20 -0
- eetlijst_python-0.0.1/src/eetlijst/generated/app_status.py +16 -0
- eetlijst_python-0.0.1/src/eetlijst/generated/async_base_client.py +393 -0
- eetlijst_python-0.0.1/src/eetlijst/generated/automatic_events.py +18 -0
- eetlijst_python-0.0.1/src/eetlijst/generated/base_model.py +28 -0
- eetlijst_python-0.0.1/src/eetlijst/generated/client.py +1748 -0
- eetlijst_python-0.0.1/src/eetlijst/generated/create_expense.py +15 -0
- eetlijst_python-0.0.1/src/eetlijst/generated/create_group.py +15 -0
- eetlijst_python-0.0.1/src/eetlijst/generated/create_list_item.py +15 -0
- eetlijst_python-0.0.1/src/eetlijst/generated/create_many_list_items.py +20 -0
- eetlijst_python-0.0.1/src/eetlijst/generated/create_settlement.py +15 -0
- eetlijst_python-0.0.1/src/eetlijst/generated/enums.py +555 -0
- eetlijst_python-0.0.1/src/eetlijst/generated/exceptions.py +83 -0
- eetlijst_python-0.0.1/src/eetlijst/generated/fragments.py +237 -0
- eetlijst_python-0.0.1/src/eetlijst/generated/get_attendance.py +17 -0
- eetlijst_python-0.0.1/src/eetlijst/generated/get_event.py +15 -0
- eetlijst_python-0.0.1/src/eetlijst/generated/get_group.py +20 -0
- eetlijst_python-0.0.1/src/eetlijst/generated/get_user.py +13 -0
- eetlijst_python-0.0.1/src/eetlijst/generated/get_user_in_group.py +20 -0
- eetlijst_python-0.0.1/src/eetlijst/generated/group_total_expense.py +45 -0
- eetlijst_python-0.0.1/src/eetlijst/generated/input_types.py +4702 -0
- eetlijst_python-0.0.1/src/eetlijst/generated/join_group.py +17 -0
- eetlijst_python-0.0.1/src/eetlijst/generated/list_items.py +13 -0
- eetlijst_python-0.0.1/src/eetlijst/generated/remove_account.py +16 -0
- eetlijst_python-0.0.1/src/eetlijst/generated/settle_unsettled_expenses.py +21 -0
- eetlijst_python-0.0.1/src/eetlijst/generated/settlement_expenses.py +13 -0
- eetlijst_python-0.0.1/src/eetlijst/generated/update_attendance.py +17 -0
- eetlijst_python-0.0.1/src/eetlijst/generated/update_event.py +15 -0
- eetlijst_python-0.0.1/src/eetlijst/generated/update_expense.py +20 -0
- eetlijst_python-0.0.1/src/eetlijst/generated/update_expense_distribution.py +23 -0
- eetlijst_python-0.0.1/src/eetlijst/generated/update_group.py +15 -0
- eetlijst_python-0.0.1/src/eetlijst/generated/update_list_item.py +15 -0
- eetlijst_python-0.0.1/src/eetlijst/generated/update_many_attendance.py +22 -0
- eetlijst_python-0.0.1/src/eetlijst/generated/update_user.py +15 -0
- eetlijst_python-0.0.1/src/eetlijst/generated/update_user_in_group.py +17 -0
- eetlijst_python-0.0.1/src/eetlijst/generated/update_users_in_group.py +25 -0
- eetlijst_python-0.0.1/src/eetlijst/services/__init__.py +9 -0
- eetlijst_python-0.0.1/src/eetlijst/services/app/__init__.py +1 -0
- eetlijst_python-0.0.1/src/eetlijst/services/app/app.py +20 -0
- eetlijst_python-0.0.1/src/eetlijst/services/app/transformers.py +10 -0
- eetlijst_python-0.0.1/src/eetlijst/services/event_attendance/__init__.py +1 -0
- eetlijst_python-0.0.1/src/eetlijst/services/event_attendance/event_attendance.py +94 -0
- eetlijst_python-0.0.1/src/eetlijst/services/event_attendance/transformers.py +58 -0
- eetlijst_python-0.0.1/src/eetlijst/services/events/__init__.py +1 -0
- eetlijst_python-0.0.1/src/eetlijst/services/events/events.py +148 -0
- eetlijst_python-0.0.1/src/eetlijst/services/events/transformers.py +67 -0
- eetlijst_python-0.0.1/src/eetlijst/services/expenses/__init__.py +1 -0
- eetlijst_python-0.0.1/src/eetlijst/services/expenses/expenses.py +98 -0
- eetlijst_python-0.0.1/src/eetlijst/services/expenses/transformers.py +73 -0
- eetlijst_python-0.0.1/src/eetlijst/services/expenses/utils.py +31 -0
- eetlijst_python-0.0.1/src/eetlijst/services/group_list/__init__.py +1 -0
- eetlijst_python-0.0.1/src/eetlijst/services/group_list/group_list.py +95 -0
- eetlijst_python-0.0.1/src/eetlijst/services/group_list/transformers.py +38 -0
- eetlijst_python-0.0.1/src/eetlijst/services/group_users/__init__.py +1 -0
- eetlijst_python-0.0.1/src/eetlijst/services/group_users/group_users.py +130 -0
- eetlijst_python-0.0.1/src/eetlijst/services/group_users/transformers.py +84 -0
- eetlijst_python-0.0.1/src/eetlijst/services/groups/__init__.py +1 -0
- eetlijst_python-0.0.1/src/eetlijst/services/groups/groups.py +84 -0
- eetlijst_python-0.0.1/src/eetlijst/services/groups/transformers.py +140 -0
- eetlijst_python-0.0.1/src/eetlijst/services/settlements/__init__.py +1 -0
- eetlijst_python-0.0.1/src/eetlijst/services/settlements/settlements.py +225 -0
- eetlijst_python-0.0.1/src/eetlijst/services/settlements/transformers.py +95 -0
- eetlijst_python-0.0.1/src/eetlijst/services/settlements/utils.py +84 -0
- eetlijst_python-0.0.1/src/eetlijst/services/users/__init__.py +1 -0
- eetlijst_python-0.0.1/src/eetlijst/services/users/transformers.py +103 -0
- eetlijst_python-0.0.1/src/eetlijst/services/users/users.py +44 -0
- eetlijst_python-0.0.1/src/eetlijst/utils/__init__.py +0 -0
- eetlijst_python-0.0.1/src/eetlijst/utils/datetime.py +25 -0
- eetlijst_python-0.0.1/src/eetlijst_python.egg-info/PKG-INFO +80 -0
- eetlijst_python-0.0.1/src/eetlijst_python.egg-info/SOURCES.txt +84 -0
- eetlijst_python-0.0.1/src/eetlijst_python.egg-info/dependency_links.txt +1 -0
- eetlijst_python-0.0.1/src/eetlijst_python.egg-info/requires.txt +9 -0
- 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,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)
|