pytaskwarrior 2.0.6__tar.gz → 2.0.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.
- {pytaskwarrior-2.0.6 → pytaskwarrior-2.0.7}/PKG-INFO +1 -1
- {pytaskwarrior-2.0.6 → pytaskwarrior-2.0.7}/pyproject.toml +1 -1
- {pytaskwarrior-2.0.6 → pytaskwarrior-2.0.7}/src/pytaskwarrior.egg-info/PKG-INFO +1 -1
- {pytaskwarrior-2.0.6 → pytaskwarrior-2.0.7}/src/taskwarrior/dto/task_dto.py +8 -2
- {pytaskwarrior-2.0.6 → pytaskwarrior-2.0.7}/src/taskwarrior/enums.py +20 -28
- {pytaskwarrior-2.0.6 → pytaskwarrior-2.0.7}/LICENSE +0 -0
- {pytaskwarrior-2.0.6 → pytaskwarrior-2.0.7}/PYPI_README.md +0 -0
- {pytaskwarrior-2.0.6 → pytaskwarrior-2.0.7}/README.md +0 -0
- {pytaskwarrior-2.0.6 → pytaskwarrior-2.0.7}/setup.cfg +0 -0
- {pytaskwarrior-2.0.6 → pytaskwarrior-2.0.7}/src/__init__.py +0 -0
- {pytaskwarrior-2.0.6 → pytaskwarrior-2.0.7}/src/pytaskwarrior.egg-info/SOURCES.txt +0 -0
- {pytaskwarrior-2.0.6 → pytaskwarrior-2.0.7}/src/pytaskwarrior.egg-info/dependency_links.txt +0 -0
- {pytaskwarrior-2.0.6 → pytaskwarrior-2.0.7}/src/pytaskwarrior.egg-info/requires.txt +0 -0
- {pytaskwarrior-2.0.6 → pytaskwarrior-2.0.7}/src/pytaskwarrior.egg-info/top_level.txt +0 -0
- {pytaskwarrior-2.0.6 → pytaskwarrior-2.0.7}/src/taskwarrior/__init__.py +0 -0
- {pytaskwarrior-2.0.6 → pytaskwarrior-2.0.7}/src/taskwarrior/adapters/__init__.py +0 -0
- {pytaskwarrior-2.0.6 → pytaskwarrior-2.0.7}/src/taskwarrior/adapters/taskwarrior_adapter.py +0 -0
- {pytaskwarrior-2.0.6 → pytaskwarrior-2.0.7}/src/taskwarrior/config/config_store.py +0 -0
- {pytaskwarrior-2.0.6 → pytaskwarrior-2.0.7}/src/taskwarrior/config/uda_parser.py +0 -0
- {pytaskwarrior-2.0.6 → pytaskwarrior-2.0.7}/src/taskwarrior/dto/__init__.py +0 -0
- {pytaskwarrior-2.0.6 → pytaskwarrior-2.0.7}/src/taskwarrior/dto/annotation_dto.py +0 -0
- {pytaskwarrior-2.0.6 → pytaskwarrior-2.0.7}/src/taskwarrior/dto/context_dto.py +0 -0
- {pytaskwarrior-2.0.6 → pytaskwarrior-2.0.7}/src/taskwarrior/dto/task_id.py +0 -0
- {pytaskwarrior-2.0.6 → pytaskwarrior-2.0.7}/src/taskwarrior/dto/uda_dto.py +0 -0
- {pytaskwarrior-2.0.6 → pytaskwarrior-2.0.7}/src/taskwarrior/exceptions.py +0 -0
- {pytaskwarrior-2.0.6 → pytaskwarrior-2.0.7}/src/taskwarrior/main.py +0 -0
- {pytaskwarrior-2.0.6 → pytaskwarrior-2.0.7}/src/taskwarrior/py.typed +0 -0
- {pytaskwarrior-2.0.6 → pytaskwarrior-2.0.7}/src/taskwarrior/registry/__init__.py +0 -0
- {pytaskwarrior-2.0.6 → pytaskwarrior-2.0.7}/src/taskwarrior/registry/uda_registry.py +0 -0
- {pytaskwarrior-2.0.6 → pytaskwarrior-2.0.7}/src/taskwarrior/services/__init__.py +0 -0
- {pytaskwarrior-2.0.6 → pytaskwarrior-2.0.7}/src/taskwarrior/services/context_service.py +0 -0
- {pytaskwarrior-2.0.6 → pytaskwarrior-2.0.7}/src/taskwarrior/services/uda_service.py +0 -0
- {pytaskwarrior-2.0.6 → pytaskwarrior-2.0.7}/src/taskwarrior/utils/__init__.py +0 -0
- {pytaskwarrior-2.0.6 → pytaskwarrior-2.0.7}/src/taskwarrior/utils/conversions.py +0 -0
- {pytaskwarrior-2.0.6 → pytaskwarrior-2.0.7}/src/taskwarrior/utils/dto_converter.py +0 -0
- {pytaskwarrior-2.0.6 → pytaskwarrior-2.0.7}/tests/test_main_get_udas.py +0 -0
|
@@ -82,8 +82,14 @@ class TaskInputDTO(BaseModel):
|
|
|
82
82
|
default_factory=list, description="List of UUIDs of tasks this task depends on"
|
|
83
83
|
)
|
|
84
84
|
parent: UUID | None = Field(default=None, description="UUID of the template task")
|
|
85
|
-
recur: RecurrencePeriod | None = Field(
|
|
86
|
-
default=None,
|
|
85
|
+
recur: RecurrencePeriod | str | None = Field(
|
|
86
|
+
default=None,
|
|
87
|
+
description=(
|
|
88
|
+
"Recurrence period. "
|
|
89
|
+
"Use standard values: 'daily', 'weekly', 'monthly', 'yearly', 'quarterly', 'semiannually', 'hourly', 'minutely', 'secondly'. "
|
|
90
|
+
"OR use custom TaskWarrior expressions like '2weeks', '3days', 'every 10 days', '2months'. "
|
|
91
|
+
"TaskWarrior will validate the expression."
|
|
92
|
+
)
|
|
87
93
|
)
|
|
88
94
|
scheduled: str | None = Field(
|
|
89
95
|
default=None,
|
|
@@ -57,34 +57,26 @@ class Priority(str, Enum):
|
|
|
57
57
|
class RecurrencePeriod(str, Enum):
|
|
58
58
|
"""Supported recurrence periods for recurring tasks.
|
|
59
59
|
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
Example:
|
|
75
|
-
>>>
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
... )
|
|
81
|
-
|
|
82
|
-
Note:
|
|
83
|
-
For custom periods not listed here (e.g. ``"2weeks"``, ``"10days"``,
|
|
84
|
-
``"6months"``), pass a plain string directly to the ``recur`` field —
|
|
85
|
-
TaskWarrior accepts any valid recurrence expression:
|
|
86
|
-
|
|
87
|
-
>>> custom_task = TaskInputDTO(description="Bi-weekly review", recur="2weeks")
|
|
60
|
+
TaskWarrior supports both standard keywords and custom duration expressions.
|
|
61
|
+
|
|
62
|
+
Standard Keywords (Recommended):
|
|
63
|
+
- DAILY, WEEKLY, MONTHLY, YEARLY
|
|
64
|
+
- QUARTERLY, SEMIANNUALLY
|
|
65
|
+
- HOURLY, MINUTELY, SECONDLY
|
|
66
|
+
|
|
67
|
+
Custom Expressions (Also Valid):
|
|
68
|
+
- "2weeks" (Every two weeks)
|
|
69
|
+
- "3days" (Every three days)
|
|
70
|
+
- "every 10 days"
|
|
71
|
+
- "2months"
|
|
72
|
+
- "6months"
|
|
73
|
+
|
|
74
|
+
Example (Standard):
|
|
75
|
+
>>> task = TaskInputDTO(description="Daily standup", recur=RecurrencePeriod.DAILY)
|
|
76
|
+
|
|
77
|
+
Example (Custom):
|
|
78
|
+
>>> task = TaskInputDTO(description="Bi-weekly report", recur="2weeks")
|
|
79
|
+
# Note: Passing a string directly bypasses the Enum but is fully supported by TaskWarrior.
|
|
88
80
|
"""
|
|
89
81
|
|
|
90
82
|
DAILY = "daily"
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|