taskbadger 1.3.1__tar.gz → 1.3.2__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.
- {taskbadger-1.3.1 → taskbadger-1.3.2}/PKG-INFO +6 -5
- {taskbadger-1.3.1 → taskbadger-1.3.2}/pyproject.toml +10 -6
- {taskbadger-1.3.1 → taskbadger-1.3.2}/taskbadger/celery.py +17 -6
- {taskbadger-1.3.1 → taskbadger-1.3.2}/taskbadger/sdk.py +9 -0
- {taskbadger-1.3.1 → taskbadger-1.3.2}/LICENSE +0 -0
- {taskbadger-1.3.1 → taskbadger-1.3.2}/README.md +0 -0
- {taskbadger-1.3.1 → taskbadger-1.3.2}/taskbadger/__init__.py +0 -0
- {taskbadger-1.3.1 → taskbadger-1.3.2}/taskbadger/cli/__init__.py +0 -0
- {taskbadger-1.3.1 → taskbadger-1.3.2}/taskbadger/cli/basics.py +0 -0
- {taskbadger-1.3.1 → taskbadger-1.3.2}/taskbadger/cli/list_tasks.py +0 -0
- {taskbadger-1.3.1 → taskbadger-1.3.2}/taskbadger/cli/utils.py +0 -0
- {taskbadger-1.3.1 → taskbadger-1.3.2}/taskbadger/cli/wrapper.py +0 -0
- {taskbadger-1.3.1 → taskbadger-1.3.2}/taskbadger/cli_main.py +0 -0
- {taskbadger-1.3.1 → taskbadger-1.3.2}/taskbadger/config.py +0 -0
- {taskbadger-1.3.1 → taskbadger-1.3.2}/taskbadger/decorators.py +0 -0
- {taskbadger-1.3.1 → taskbadger-1.3.2}/taskbadger/exceptions.py +0 -0
- {taskbadger-1.3.1 → taskbadger-1.3.2}/taskbadger/integrations.py +0 -0
- {taskbadger-1.3.1 → taskbadger-1.3.2}/taskbadger/internal/__init__.py +0 -0
- {taskbadger-1.3.1 → taskbadger-1.3.2}/taskbadger/internal/api/__init__.py +0 -0
- {taskbadger-1.3.1 → taskbadger-1.3.2}/taskbadger/internal/api/action_endpoints/__init__.py +0 -0
- {taskbadger-1.3.1 → taskbadger-1.3.2}/taskbadger/internal/api/action_endpoints/action_cancel.py +0 -0
- {taskbadger-1.3.1 → taskbadger-1.3.2}/taskbadger/internal/api/action_endpoints/action_create.py +0 -0
- {taskbadger-1.3.1 → taskbadger-1.3.2}/taskbadger/internal/api/action_endpoints/action_get.py +0 -0
- {taskbadger-1.3.1 → taskbadger-1.3.2}/taskbadger/internal/api/action_endpoints/action_list.py +0 -0
- {taskbadger-1.3.1 → taskbadger-1.3.2}/taskbadger/internal/api/action_endpoints/action_partial_update.py +0 -0
- {taskbadger-1.3.1 → taskbadger-1.3.2}/taskbadger/internal/api/action_endpoints/action_update.py +0 -0
- {taskbadger-1.3.1 → taskbadger-1.3.2}/taskbadger/internal/api/task_endpoints/__init__.py +0 -0
- {taskbadger-1.3.1 → taskbadger-1.3.2}/taskbadger/internal/api/task_endpoints/task_cancel.py +0 -0
- {taskbadger-1.3.1 → taskbadger-1.3.2}/taskbadger/internal/api/task_endpoints/task_create.py +0 -0
- {taskbadger-1.3.1 → taskbadger-1.3.2}/taskbadger/internal/api/task_endpoints/task_get.py +0 -0
- {taskbadger-1.3.1 → taskbadger-1.3.2}/taskbadger/internal/api/task_endpoints/task_list.py +0 -0
- {taskbadger-1.3.1 → taskbadger-1.3.2}/taskbadger/internal/api/task_endpoints/task_partial_update.py +0 -0
- {taskbadger-1.3.1 → taskbadger-1.3.2}/taskbadger/internal/api/task_endpoints/task_update.py +0 -0
- {taskbadger-1.3.1 → taskbadger-1.3.2}/taskbadger/internal/client.py +0 -0
- {taskbadger-1.3.1 → taskbadger-1.3.2}/taskbadger/internal/errors.py +0 -0
- {taskbadger-1.3.1 → taskbadger-1.3.2}/taskbadger/internal/models/__init__.py +0 -0
- {taskbadger-1.3.1 → taskbadger-1.3.2}/taskbadger/internal/models/action.py +0 -0
- {taskbadger-1.3.1 → taskbadger-1.3.2}/taskbadger/internal/models/action_config.py +0 -0
- {taskbadger-1.3.1 → taskbadger-1.3.2}/taskbadger/internal/models/action_request.py +0 -0
- {taskbadger-1.3.1 → taskbadger-1.3.2}/taskbadger/internal/models/action_request_config.py +0 -0
- {taskbadger-1.3.1 → taskbadger-1.3.2}/taskbadger/internal/models/paginated_task_list.py +0 -0
- {taskbadger-1.3.1 → taskbadger-1.3.2}/taskbadger/internal/models/patched_action_request.py +0 -0
- {taskbadger-1.3.1 → taskbadger-1.3.2}/taskbadger/internal/models/patched_action_request_config.py +0 -0
- {taskbadger-1.3.1 → taskbadger-1.3.2}/taskbadger/internal/models/patched_task_request.py +0 -0
- {taskbadger-1.3.1 → taskbadger-1.3.2}/taskbadger/internal/models/patched_task_request_data.py +0 -0
- {taskbadger-1.3.1 → taskbadger-1.3.2}/taskbadger/internal/models/status_enum.py +0 -0
- {taskbadger-1.3.1 → taskbadger-1.3.2}/taskbadger/internal/models/task.py +0 -0
- {taskbadger-1.3.1 → taskbadger-1.3.2}/taskbadger/internal/models/task_data.py +0 -0
- {taskbadger-1.3.1 → taskbadger-1.3.2}/taskbadger/internal/models/task_request.py +0 -0
- {taskbadger-1.3.1 → taskbadger-1.3.2}/taskbadger/internal/models/task_request_data.py +0 -0
- {taskbadger-1.3.1 → taskbadger-1.3.2}/taskbadger/internal/py.typed +0 -0
- {taskbadger-1.3.1 → taskbadger-1.3.2}/taskbadger/internal/types.py +0 -0
- {taskbadger-1.3.1 → taskbadger-1.3.2}/taskbadger/mug.py +0 -0
- {taskbadger-1.3.1 → taskbadger-1.3.2}/taskbadger/process.py +0 -0
- {taskbadger-1.3.1 → taskbadger-1.3.2}/taskbadger/safe_sdk.py +0 -0
- {taskbadger-1.3.1 → taskbadger-1.3.2}/taskbadger/systems/__init__.py +0 -0
- {taskbadger-1.3.1 → taskbadger-1.3.2}/taskbadger/systems/celery.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: taskbadger
|
|
3
|
-
Version: 1.3.
|
|
3
|
+
Version: 1.3.2
|
|
4
4
|
Summary: The official Python SDK for Task Badger
|
|
5
5
|
Home-page: https://taskbadger.net/
|
|
6
6
|
License: Apache-2.0
|
|
@@ -23,14 +23,15 @@ Classifier: Topic :: Software Development :: Libraries :: Python Modules
|
|
|
23
23
|
Provides-Extra: celery
|
|
24
24
|
Requires-Dist: attrs (>=21.3.0)
|
|
25
25
|
Requires-Dist: celery (>=4.0.0,<6.0.0) ; extra == "celery"
|
|
26
|
-
Requires-Dist: httpx (>=0.20.0,<0.
|
|
26
|
+
Requires-Dist: httpx (>=0.20.0,<0.28.0)
|
|
27
27
|
Requires-Dist: importlib-metadata (>=1.0,<2.0) ; python_version < "3.8"
|
|
28
28
|
Requires-Dist: python-dateutil (>=2.8.0,<3.0.0)
|
|
29
|
-
Requires-Dist: tomlkit (>=0.
|
|
30
|
-
Requires-Dist: typer[all] (
|
|
29
|
+
Requires-Dist: tomlkit (>=0.12.5,<0.13.0)
|
|
30
|
+
Requires-Dist: typer[all] (<0.10.0)
|
|
31
31
|
Requires-Dist: typing-extensions (>=4.7.1,<5.0.0) ; python_version == "3.9"
|
|
32
|
+
Project-URL: Changelog, https://github.com/taskbadger/taskbadger-python/releases
|
|
32
33
|
Project-URL: Documentation, https://docs.taskbadger.net/
|
|
33
|
-
Project-URL: Repository, https://github.com/taskbadger/taskbadger-
|
|
34
|
+
Project-URL: Repository, https://github.com/taskbadger/taskbadger-python
|
|
34
35
|
Description-Content-Type: text/markdown
|
|
35
36
|
|
|
36
37
|
# Task Badger Python Client
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[tool.poetry]
|
|
2
2
|
name = "taskbadger"
|
|
3
|
-
version = "1.3.
|
|
3
|
+
version = "1.3.2"
|
|
4
4
|
description = "The official Python SDK for Task Badger"
|
|
5
5
|
license = "Apache-2.0"
|
|
6
6
|
|
|
@@ -13,7 +13,7 @@ packages = [
|
|
|
13
13
|
include = ["CHANGELOG.md", "taskbadger/internal/py.typed"]
|
|
14
14
|
|
|
15
15
|
homepage = "https://taskbadger.net/"
|
|
16
|
-
repository = "https://github.com/taskbadger/taskbadger-
|
|
16
|
+
repository = "https://github.com/taskbadger/taskbadger-python"
|
|
17
17
|
documentation = "https://docs.taskbadger.net/"
|
|
18
18
|
classifiers = [
|
|
19
19
|
"Development Status :: 4 - Beta",
|
|
@@ -30,13 +30,16 @@ classifiers = [
|
|
|
30
30
|
"Topic :: Software Development :: Libraries :: Python Modules",
|
|
31
31
|
]
|
|
32
32
|
|
|
33
|
+
[tool.poetry.urls]
|
|
34
|
+
"Changelog" = "https://github.com/taskbadger/taskbadger-python/releases"
|
|
35
|
+
|
|
33
36
|
[tool.poetry.dependencies]
|
|
34
37
|
python = "^3.8"
|
|
35
|
-
httpx = ">=0.20.0,<0.
|
|
38
|
+
httpx = ">=0.20.0,<0.28.0"
|
|
36
39
|
attrs = ">=21.3.0"
|
|
37
40
|
python-dateutil = "^2.8.0"
|
|
38
|
-
typer = {extras = ["all"], version = "
|
|
39
|
-
tomlkit = "^0.
|
|
41
|
+
typer = {extras = ["all"], version = "<0.10.0"}
|
|
42
|
+
tomlkit = "^0.12.5"
|
|
40
43
|
importlib-metadata = {version = "^1.0", python = "<3.8"}
|
|
41
44
|
typing-extensions = {version = "^4.7.1", python = "3.9"}
|
|
42
45
|
celery = {version = ">=4.0.0,<6.0.0", optional = true}
|
|
@@ -52,7 +55,8 @@ black = "^23.1.0"
|
|
|
52
55
|
pre-commit = "^3.0.2"
|
|
53
56
|
pytest-httpx = "^0.21.3"
|
|
54
57
|
invoke = "^2.0.0"
|
|
55
|
-
pytest-celery = "
|
|
58
|
+
pytest-celery = ">0.0.0"
|
|
59
|
+
redis = "^5.0.4"
|
|
56
60
|
|
|
57
61
|
[tool.poetry.scripts]
|
|
58
62
|
taskbadger = "taskbadger.cli_main:app"
|
|
@@ -103,11 +103,13 @@ class Task(celery.Task):
|
|
|
103
103
|
def apply_async(self, *args, **kwargs):
|
|
104
104
|
headers = kwargs.setdefault("headers", {})
|
|
105
105
|
headers["taskbadger_track"] = True
|
|
106
|
-
tb_kwargs =
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
106
|
+
tb_kwargs = self._get_tb_kwargs(kwargs)
|
|
107
|
+
if kwargs.get("kwargs"):
|
|
108
|
+
# extract taskbadger options from task kwargs when supplied as keyword argument
|
|
109
|
+
tb_kwargs.update(self._get_tb_kwargs(kwargs["kwargs"]))
|
|
110
|
+
elif len(args) > 1 and isinstance(args[1], dict):
|
|
111
|
+
# extract taskbadger options from task kwargs when supplied as positional argument
|
|
112
|
+
tb_kwargs.update(self._get_tb_kwargs(args[1]))
|
|
111
113
|
headers[TB_KWARGS_ARG] = tb_kwargs
|
|
112
114
|
result = super().apply_async(*args, **kwargs)
|
|
113
115
|
|
|
@@ -119,6 +121,14 @@ class Task(celery.Task):
|
|
|
119
121
|
|
|
120
122
|
return result
|
|
121
123
|
|
|
124
|
+
def _get_tb_kwargs(self, kwargs):
|
|
125
|
+
tb_kwargs = kwargs.pop(TB_KWARGS_ARG, {})
|
|
126
|
+
for name in list(kwargs):
|
|
127
|
+
if name.startswith(KWARG_PREFIX):
|
|
128
|
+
val = kwargs.pop(name)
|
|
129
|
+
tb_kwargs[name.removeprefix(KWARG_PREFIX)] = val
|
|
130
|
+
return tb_kwargs
|
|
131
|
+
|
|
122
132
|
@property
|
|
123
133
|
def taskbadger_task_id(self):
|
|
124
134
|
return _get_taskbadger_task_id(self.request)
|
|
@@ -146,6 +156,7 @@ def task_publish_handler(sender=None, headers=None, body=None, **kwargs):
|
|
|
146
156
|
celery_system = Badger.current.settings.get_system_by_id("celery")
|
|
147
157
|
auto_track = celery_system and celery_system.track_task(sender)
|
|
148
158
|
manual_track = headers.get("taskbadger_track")
|
|
159
|
+
header_kwargs = headers.pop(TB_KWARGS_ARG, {})
|
|
149
160
|
if not manual_track and not auto_track:
|
|
150
161
|
return
|
|
151
162
|
|
|
@@ -158,7 +169,7 @@ def task_publish_handler(sender=None, headers=None, body=None, **kwargs):
|
|
|
158
169
|
kwargs[attr.removeprefix(KWARG_PREFIX)] = getattr(ctask, attr)
|
|
159
170
|
|
|
160
171
|
# get kwargs from the task headers (set via apply_async)
|
|
161
|
-
kwargs.update(
|
|
172
|
+
kwargs.update(header_kwargs)
|
|
162
173
|
kwargs["status"] = StatusEnum.PENDING
|
|
163
174
|
name = kwargs.pop("name", headers["task"])
|
|
164
175
|
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import logging
|
|
1
2
|
import os
|
|
2
3
|
from typing import Any, List
|
|
3
4
|
|
|
@@ -15,6 +16,8 @@ from taskbadger.internal.types import UNSET
|
|
|
15
16
|
from taskbadger.mug import Badger, Session, Settings
|
|
16
17
|
from taskbadger.systems import System
|
|
17
18
|
|
|
19
|
+
log = logging.getLogger("taskbadger")
|
|
20
|
+
|
|
18
21
|
_TB_HOST = "https://taskbadger.net"
|
|
19
22
|
|
|
20
23
|
|
|
@@ -338,6 +341,12 @@ class Task:
|
|
|
338
341
|
def __getattr__(self, item):
|
|
339
342
|
return getattr(self._task, item)
|
|
340
343
|
|
|
344
|
+
def safe_update(self, **kwargs):
|
|
345
|
+
try:
|
|
346
|
+
self.update(**kwargs)
|
|
347
|
+
except Exception as e:
|
|
348
|
+
log.exception("Error updating task '%s'", self._task.id)
|
|
349
|
+
|
|
341
350
|
|
|
342
351
|
def _none_to_unset(value):
|
|
343
352
|
return UNSET if value is None else value
|
|
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
|
{taskbadger-1.3.1 → taskbadger-1.3.2}/taskbadger/internal/api/action_endpoints/action_cancel.py
RENAMED
|
File without changes
|
{taskbadger-1.3.1 → taskbadger-1.3.2}/taskbadger/internal/api/action_endpoints/action_create.py
RENAMED
|
File without changes
|
{taskbadger-1.3.1 → taskbadger-1.3.2}/taskbadger/internal/api/action_endpoints/action_get.py
RENAMED
|
File without changes
|
{taskbadger-1.3.1 → taskbadger-1.3.2}/taskbadger/internal/api/action_endpoints/action_list.py
RENAMED
|
File without changes
|
|
File without changes
|
{taskbadger-1.3.1 → taskbadger-1.3.2}/taskbadger/internal/api/action_endpoints/action_update.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{taskbadger-1.3.1 → taskbadger-1.3.2}/taskbadger/internal/api/task_endpoints/task_partial_update.py
RENAMED
|
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
|
{taskbadger-1.3.1 → taskbadger-1.3.2}/taskbadger/internal/models/patched_action_request_config.py
RENAMED
|
File without changes
|
|
File without changes
|
{taskbadger-1.3.1 → taskbadger-1.3.2}/taskbadger/internal/models/patched_task_request_data.py
RENAMED
|
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
|