vikunja-python 0.1.0__py3-none-any.whl → 0.1.2__py3-none-any.whl

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.
@@ -0,0 +1,144 @@
1
+ Metadata-Version: 2.4
2
+ Name: vikunja-python
3
+ Version: 0.1.2
4
+ Summary: API wrapper, CLI tool, and MCP server for Vikunja
5
+ Author-email: Your Name <your.email@example.com>
6
+ License-Expression: WTFPL
7
+ Project-URL: Homepage, https://github.com/oedo808/vikunja-python
8
+ Project-URL: Repository, https://github.com/oedo808/vikunja-python
9
+ Project-URL: Documentation, https://github.com/oedo808/vikunja-python
10
+ Requires-Python: >=3.11
11
+ Description-Content-Type: text/markdown
12
+ Requires-Dist: httpx>=0.27.0
13
+ Requires-Dist: pydantic>=2.0.0
14
+ Requires-Dist: dateparser>=1.2.0
15
+ Requires-Dist: typer>=0.12.0
16
+ Requires-Dist: fastmcp>=0.1.0
17
+ Provides-Extra: test
18
+ Requires-Dist: pytest>=8.0.0; extra == "test"
19
+ Requires-Dist: pytest-asyncio>=0.23.0; extra == "test"
20
+ Requires-Dist: testcontainers[mysql]>=4.0.0; extra == "test"
21
+
22
+ # Vikunja Python
23
+
24
+ Python API wrapper, CLI tool, MCP server, and Home Assistant integration for the [Vikunja](https://vikunja.io/) task management system.
25
+
26
+ Built for Python 3.13 with httpx, pydantic v2, fastmcp, and typer.
27
+
28
+ ## Architecture
29
+
30
+ The project is structured into layers:
31
+
32
+ - **core/** -- Pydantic models, async HTTP client (httpx), error handling, API token and JWT authentication
33
+ - **cli/** -- Rich CLI built with typer and rich (task CRUD, project views, saved filter queries, dashboard summary)
34
+ - **mcp/** -- MCP server for agentic AI workflows (13 tools including list_tasks, get_task, create_task, list_saved_filter, task_summary)
35
+ - **custom_components/vikunja/** -- Home Assistant HACS integration (config flow, 3 sensors for saved filters)
36
+
37
+ ## Getting Started
38
+
39
+ ### Installation
40
+
41
+ From PyPI:
42
+
43
+ ```bash
44
+ pip install vikunja-python
45
+ ```
46
+
47
+ Or with uv:
48
+
49
+ ```bash
50
+ uv sync --all-extras
51
+ ```
52
+
53
+ ### Environment Variables
54
+
55
+ Configure your Vikunja instance in a `.env` file or your shell:
56
+
57
+ ```bash
58
+ VIKUNJA_URL="https://your-vikunja-instance.com/api/v1"
59
+ VIKUNJA_API_TOKEN="your_api_token_here"
60
+ VIKUNJA_DEBUG="true" # Enable verbose stderr logging
61
+ ```
62
+
63
+ ## Features
64
+
65
+ ### CLI (vikunja)
66
+
67
+ The CLI provides a human-friendly interface for managing tasks:
68
+
69
+ - list-tasks -- List tasks with rich table output (supports saved filters via negative project IDs)
70
+ - list-saved-filter -- Query saved filters (e.g., -2 for Due in 3 Days, -3 for Overdue, -4 for Due Today)
71
+ - summary -- Quick dashboard summary across all saved filters (parallel queries, optimized for ePaper dashboards)
72
+ - get-project -- Project details and views
73
+ - list-view-tasks -- List tasks from a specific project view
74
+ - get-task -- Full task details with description
75
+ - create-task -- Create a new task
76
+ - create-label -- Create a new label
77
+
78
+ ```bash
79
+ uv run vikunja list-tasks
80
+ uv run vikunja list-saved-filter --filter-id -2
81
+ uv run vikunja summary --top 5
82
+ ```
83
+
84
+ ### MCP Server (vikunja-mcp)
85
+
86
+ MCP server for agentic workflows. 13 tools including:
87
+
88
+ - list_tasks, get_task, create_task, update_task, complete_task, delete_task
89
+ - list_saved_filter -- Query saved filters (e.g., -2 for Due in 3 Days)
90
+ - task_summary -- Dashboard summary across all filters in one parallel call
91
+ - list_projects, get_project, list_project_view_tasks
92
+ - list_labels, create_label
93
+ - add_subtask, add_task_link
94
+
95
+ ```bash
96
+ uv run vikunja-mcp
97
+ ```
98
+
99
+ ### Home Assistant Integration
100
+
101
+ The package includes a HACS-ready custom component for Home Assistant:
102
+
103
+ - Config flow: URL + API token via the HA UI
104
+ - 3 sensors: Overdue, Due Today, Due in 3 Days (from Vikunja saved filters)
105
+ - Each sensor: state = task count, attributes = task list with IDs, titles, due dates
106
+ - Coordinator polls all filters in parallel every 5 minutes
107
+
108
+ Copy `custom_components/vikunja/` to your HA config's `custom_components/` directory, restart HA, and add via Settings -> Devices & Services.
109
+
110
+ ## Saved Filter Support
111
+
112
+ Vikunja saved filters are accessed via negative project IDs:
113
+
114
+ | ID | Filter |
115
+ |----|--------|
116
+ | -2 | Due in 3 Days |
117
+ | -3 | Overdue |
118
+ | -4 | Due Today |
119
+
120
+ The API route is `GET /tasks?project_id=-2` (NOT `/projects/-2/tasks`).
121
+
122
+ ## Testing
123
+
124
+ Unit tests run without Docker:
125
+
126
+ ```bash
127
+ uv run pytest tests/test_task_models_unit.py tests/test_label_model_validation.py -v
128
+ ```
129
+
130
+ Integration tests require Docker (spins up a real Vikunja instance via testcontainers):
131
+
132
+ ```bash
133
+ uv run pytest
134
+ ```
135
+
136
+ ## Security & Auth
137
+
138
+ - API Key auth is the primary authentication method for both CLI and MCP server
139
+ - JWT tokens are used for UI-specific features (kanban buckets, reactions) in the CLI only
140
+ - The MCP server only supports API key authentication
141
+
142
+ ## License
143
+
144
+ WTFPL - Do What the Fuck You Want to Public License.
@@ -21,8 +21,8 @@ vikunja_python/core/models/user.py,sha256=ETOV31K9rjIXeMhjSEu2xzroFh8PouVY2fcMi6
21
21
  vikunja_python/core/models/webhook.py,sha256=debhzsM4Y_wKrMvS64LLdj2WlLN8G5jll9WBhPIj1Tg,9338
22
22
  vikunja_python/mcp/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
23
23
  vikunja_python/mcp/server.py,sha256=0JSVpoT-JlyNtu3k8-0hI03k7tYb3YLlWxCrEgd8THw,31680
24
- vikunja_python-0.1.0.dist-info/METADATA,sha256=w1k0RIMfwK5jwG4tavoqu9teAaea7H4h8D_yCvMW6YE,554
25
- vikunja_python-0.1.0.dist-info/WHEEL,sha256=aeYiig01lYGDzBgS8HxWXOg3uV61G9ijOsup-k9o1sk,91
26
- vikunja_python-0.1.0.dist-info/entry_points.txt,sha256=pXGwoqxBR9cEnBo9t31b-0mPxz0ztVu79p_YvHBkVT0,101
27
- vikunja_python-0.1.0.dist-info/top_level.txt,sha256=sWuGn_X83F5Q5auXGSc8Pm0aJbp61_7yMCa2EImJtK4,15
28
- vikunja_python-0.1.0.dist-info/RECORD,,
24
+ vikunja_python-0.1.2.dist-info/METADATA,sha256=n5j1PzRDKLsyIy427uEL7_iQc6qo2xDY2mG4zhyO3ew,4492
25
+ vikunja_python-0.1.2.dist-info/WHEEL,sha256=aeYiig01lYGDzBgS8HxWXOg3uV61G9ijOsup-k9o1sk,91
26
+ vikunja_python-0.1.2.dist-info/entry_points.txt,sha256=pXGwoqxBR9cEnBo9t31b-0mPxz0ztVu79p_YvHBkVT0,101
27
+ vikunja_python-0.1.2.dist-info/top_level.txt,sha256=sWuGn_X83F5Q5auXGSc8Pm0aJbp61_7yMCa2EImJtK4,15
28
+ vikunja_python-0.1.2.dist-info/RECORD,,
@@ -1,16 +0,0 @@
1
- Metadata-Version: 2.4
2
- Name: vikunja-python
3
- Version: 0.1.0
4
- Summary: API wrapper, CLI tool, and MCP server for Vikunja
5
- Author-email: Your Name <your.email@example.com>
6
- License-Expression: WTFPL
7
- Requires-Python: >=3.13.12
8
- Requires-Dist: httpx>=0.27.0
9
- Requires-Dist: pydantic>=2.0.0
10
- Requires-Dist: dateparser>=1.2.0
11
- Requires-Dist: typer>=0.12.0
12
- Requires-Dist: fastmcp>=0.1.0
13
- Provides-Extra: test
14
- Requires-Dist: pytest>=8.0.0; extra == "test"
15
- Requires-Dist: pytest-asyncio>=0.23.0; extra == "test"
16
- Requires-Dist: testcontainers[mysql]>=4.0.0; extra == "test"