django-qstash 0.0.15__tar.gz → 0.1.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.

Potentially problematic release.


This version of django-qstash might be problematic. Click here for more details.

Files changed (64) hide show
  1. {django_qstash-0.0.15 → django_qstash-0.1.1}/PKG-INFO +5 -5
  2. {django_qstash-0.0.15 → django_qstash-0.1.1}/README.md +4 -4
  3. {django_qstash-0.0.15 → django_qstash-0.1.1}/pyproject.toml +1 -1
  4. {django_qstash-0.0.15 → django_qstash-0.1.1}/src/django_qstash/__init__.py +1 -1
  5. {django_qstash-0.0.15 → django_qstash-0.1.1}/src/django_qstash/results/services.py +25 -8
  6. {django_qstash-0.0.15 → django_qstash-0.1.1}/src/django_qstash.egg-info/PKG-INFO +5 -5
  7. {django_qstash-0.0.15 → django_qstash-0.1.1}/setup.cfg +0 -0
  8. {django_qstash-0.0.15 → django_qstash-0.1.1}/src/django_qstash/app/__init__.py +0 -0
  9. {django_qstash-0.0.15 → django_qstash-0.1.1}/src/django_qstash/app/base.py +0 -0
  10. {django_qstash-0.0.15 → django_qstash-0.1.1}/src/django_qstash/app/decorators.py +0 -0
  11. {django_qstash-0.0.15 → django_qstash-0.1.1}/src/django_qstash/callbacks.py +0 -0
  12. {django_qstash-0.0.15 → django_qstash-0.1.1}/src/django_qstash/client.py +0 -0
  13. {django_qstash-0.0.15 → django_qstash-0.1.1}/src/django_qstash/cron.py +0 -0
  14. {django_qstash-0.0.15 → django_qstash-0.1.1}/src/django_qstash/db/__init__.py +0 -0
  15. {django_qstash-0.0.15 → django_qstash-0.1.1}/src/django_qstash/db/models.py +0 -0
  16. {django_qstash-0.0.15 → django_qstash-0.1.1}/src/django_qstash/discovery/__init__.py +0 -0
  17. {django_qstash-0.0.15 → django_qstash-0.1.1}/src/django_qstash/discovery/fields.py +0 -0
  18. {django_qstash-0.0.15 → django_qstash-0.1.1}/src/django_qstash/discovery/models.py +0 -0
  19. {django_qstash-0.0.15 → django_qstash-0.1.1}/src/django_qstash/discovery/utils.py +0 -0
  20. {django_qstash-0.0.15 → django_qstash-0.1.1}/src/django_qstash/discovery/validators.py +0 -0
  21. {django_qstash-0.0.15 → django_qstash-0.1.1}/src/django_qstash/exceptions.py +0 -0
  22. {django_qstash-0.0.15 → django_qstash-0.1.1}/src/django_qstash/handlers.py +0 -0
  23. {django_qstash-0.0.15 → django_qstash-0.1.1}/src/django_qstash/management/__init__.py +0 -0
  24. {django_qstash-0.0.15 → django_qstash-0.1.1}/src/django_qstash/management/commands/__init__.py +0 -0
  25. {django_qstash-0.0.15 → django_qstash-0.1.1}/src/django_qstash/management/commands/available_tasks.py +0 -0
  26. {django_qstash-0.0.15 → django_qstash-0.1.1}/src/django_qstash/management/commands/clear_stale_results.py +0 -0
  27. {django_qstash-0.0.15 → django_qstash-0.1.1}/src/django_qstash/management/commands/task_schedules.py +0 -0
  28. {django_qstash-0.0.15 → django_qstash-0.1.1}/src/django_qstash/results/__init__.py +0 -0
  29. {django_qstash-0.0.15 → django_qstash-0.1.1}/src/django_qstash/results/admin.py +0 -0
  30. {django_qstash-0.0.15 → django_qstash-0.1.1}/src/django_qstash/results/apps.py +0 -0
  31. {django_qstash-0.0.15 → django_qstash-0.1.1}/src/django_qstash/results/migrations/0001_initial.py +0 -0
  32. {django_qstash-0.0.15 → django_qstash-0.1.1}/src/django_qstash/results/migrations/0002_taskresult_function_path_alter_taskresult_status_and_more.py +0 -0
  33. {django_qstash-0.0.15 → django_qstash-0.1.1}/src/django_qstash/results/migrations/__init__.py +0 -0
  34. {django_qstash-0.0.15 → django_qstash-0.1.1}/src/django_qstash/results/models.py +0 -0
  35. {django_qstash-0.0.15 → django_qstash-0.1.1}/src/django_qstash/results/tasks.py +0 -0
  36. {django_qstash-0.0.15 → django_qstash-0.1.1}/src/django_qstash/schedules/__init__.py +0 -0
  37. {django_qstash-0.0.15 → django_qstash-0.1.1}/src/django_qstash/schedules/admin.py +0 -0
  38. {django_qstash-0.0.15 → django_qstash-0.1.1}/src/django_qstash/schedules/apps.py +0 -0
  39. {django_qstash-0.0.15 → django_qstash-0.1.1}/src/django_qstash/schedules/exceptions.py +0 -0
  40. {django_qstash-0.0.15 → django_qstash-0.1.1}/src/django_qstash/schedules/formatters.py +0 -0
  41. {django_qstash-0.0.15 → django_qstash-0.1.1}/src/django_qstash/schedules/forms.py +0 -0
  42. {django_qstash-0.0.15 → django_qstash-0.1.1}/src/django_qstash/schedules/migrations/0001_initial.py +0 -0
  43. {django_qstash-0.0.15 → django_qstash-0.1.1}/src/django_qstash/schedules/migrations/0002_taskschedule_updated_at.py +0 -0
  44. {django_qstash-0.0.15 → django_qstash-0.1.1}/src/django_qstash/schedules/migrations/0003_alter_taskschedule_cron.py +0 -0
  45. {django_qstash-0.0.15 → django_qstash-0.1.1}/src/django_qstash/schedules/migrations/__init__.py +0 -0
  46. {django_qstash-0.0.15 → django_qstash-0.1.1}/src/django_qstash/schedules/models.py +0 -0
  47. {django_qstash-0.0.15 → django_qstash-0.1.1}/src/django_qstash/schedules/services.py +0 -0
  48. {django_qstash-0.0.15 → django_qstash-0.1.1}/src/django_qstash/schedules/signals.py +0 -0
  49. {django_qstash-0.0.15 → django_qstash-0.1.1}/src/django_qstash/schedules/validators.py +0 -0
  50. {django_qstash-0.0.15 → django_qstash-0.1.1}/src/django_qstash/settings.py +0 -0
  51. {django_qstash-0.0.15 → django_qstash-0.1.1}/src/django_qstash/urls.py +0 -0
  52. {django_qstash-0.0.15 → django_qstash-0.1.1}/src/django_qstash/utils.py +0 -0
  53. {django_qstash-0.0.15 → django_qstash-0.1.1}/src/django_qstash/views.py +0 -0
  54. {django_qstash-0.0.15 → django_qstash-0.1.1}/src/django_qstash.egg-info/SOURCES.txt +0 -0
  55. {django_qstash-0.0.15 → django_qstash-0.1.1}/src/django_qstash.egg-info/dependency_links.txt +0 -0
  56. {django_qstash-0.0.15 → django_qstash-0.1.1}/src/django_qstash.egg-info/requires.txt +0 -0
  57. {django_qstash-0.0.15 → django_qstash-0.1.1}/src/django_qstash.egg-info/top_level.txt +0 -0
  58. {django_qstash-0.0.15 → django_qstash-0.1.1}/tests/test_callbacks.py +0 -0
  59. {django_qstash-0.0.15 → django_qstash-0.1.1}/tests/test_exceptions.py +0 -0
  60. {django_qstash-0.0.15 → django_qstash-0.1.1}/tests/test_handlers.py +0 -0
  61. {django_qstash-0.0.15 → django_qstash-0.1.1}/tests/test_results_models.py +0 -0
  62. {django_qstash-0.0.15 → django_qstash-0.1.1}/tests/test_settings.py +0 -0
  63. {django_qstash-0.0.15 → django_qstash-0.1.1}/tests/test_utils.py +0 -0
  64. {django_qstash-0.0.15 → django_qstash-0.1.1}/tests/test_views.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: django-qstash
3
- Version: 0.0.15
3
+ Version: 0.1.1
4
4
  Summary: A drop-in replacement for Celery's shared_task with Upstash QStash.
5
5
  Author-email: Justin Mitchel <justin@codingforentrepreneurs.com>
6
6
  Project-URL: Changelog, https://github.com/jmitchel3/django-qstash
@@ -27,11 +27,11 @@ Requires-Dist: django>=4.2
27
27
  Requires-Dist: qstash>=2
28
28
  Requires-Dist: requests>=2.30
29
29
 
30
- > :warning: **BETA Software**: Working on being production-ready soon.
31
-
32
30
  # django-qstash
33
31
 
34
- _django-qstash_ is a drop-in replacement for Celery's `shared_task`.
32
+ Run background tasks with Django through webhooks and Upstash QStash.
33
+
34
+ _django-qstash_ is designed to be a drop-in replacement for Celery's `shared_task` or run alongside Celery.
35
35
 
36
36
 
37
37
  ## How it works
@@ -46,7 +46,7 @@ from django_qstash import shared_task
46
46
  def my_task():
47
47
  pass
48
48
  ```
49
- > To use Celery too, you can use `@stashed_task` instead of `@shared_task` more below.
49
+ > To use django-qstash with Celery, you can use `@stashed_task` instead of `@shared_task` (more below).
50
50
 
51
51
  To do this we need:
52
52
 
@@ -1,8 +1,8 @@
1
- > :warning: **BETA Software**: Working on being production-ready soon.
2
-
3
1
  # django-qstash
4
2
 
5
- _django-qstash_ is a drop-in replacement for Celery's `shared_task`.
3
+ Run background tasks with Django through webhooks and Upstash QStash.
4
+
5
+ _django-qstash_ is designed to be a drop-in replacement for Celery's `shared_task` or run alongside Celery.
6
6
 
7
7
 
8
8
  ## How it works
@@ -17,7 +17,7 @@ from django_qstash import shared_task
17
17
  def my_task():
18
18
  pass
19
19
  ```
20
- > To use Celery too, you can use `@stashed_task` instead of `@shared_task` more below.
20
+ > To use django-qstash with Celery, you can use `@stashed_task` instead of `@shared_task` (more below).
21
21
 
22
22
  To do this we need:
23
23
 
@@ -6,7 +6,7 @@ requires = [
6
6
 
7
7
  [project]
8
8
  name = "django-qstash"
9
- version = "0.0.15"
9
+ version = "0.1.1"
10
10
  description = "A drop-in replacement for Celery's shared_task with Upstash QStash."
11
11
  readme = "README.md"
12
12
  license = { file = "LICENSE" }
@@ -1,6 +1,6 @@
1
1
  from __future__ import annotations
2
2
 
3
- __version__ = "0.0.15"
3
+ __version__ = "0.1.1"
4
4
 
5
5
  from django_qstash.app import shared_task
6
6
  from django_qstash.app import stashed_task
@@ -12,14 +12,31 @@ from django_qstash.db.models import TaskStatus
12
12
  logger = logging.getLogger(__name__)
13
13
 
14
14
 
15
- def function_result_to_json(result: Any) -> str:
16
- """Convert a function result to a JSON string"""
17
- try:
18
- data = {"result": result}
19
- return json.dumps(data)
20
- except Exception as e:
21
- logger.exception("Failed to convert function result to JSON: %s", str(e))
15
+ def function_result_to_dict(result: Any) -> dict | None:
16
+ """
17
+ Convert a task result to a Python dict for the result JSONField.
18
+
19
+ Args:
20
+ result: Any Python value to be converted
21
+
22
+ Returns:
23
+ dict: A dictionary representation of the result
24
+ None: If the input is None
25
+ """
26
+ if result is None:
22
27
  return None
28
+ elif isinstance(result, dict):
29
+ return result
30
+ elif isinstance(result, str):
31
+ try:
32
+ parsed = json.loads(result)
33
+ if isinstance(parsed, dict):
34
+ return parsed
35
+ return {"result": parsed}
36
+ except json.JSONDecodeError as e:
37
+ logger.info("Task result is not a JSON string: %s", str(e))
38
+ return {"result": result}
39
+ return {"result": result}
23
40
 
24
41
 
25
42
  def store_task_result(
@@ -44,7 +61,7 @@ def store_task_result(
44
61
  task_name=task_name,
45
62
  status=status,
46
63
  date_done=timezone.now(),
47
- result=function_result_to_json(result),
64
+ result=function_result_to_dict(result),
48
65
  traceback=traceback,
49
66
  args=args,
50
67
  kwargs=kwargs,
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: django-qstash
3
- Version: 0.0.15
3
+ Version: 0.1.1
4
4
  Summary: A drop-in replacement for Celery's shared_task with Upstash QStash.
5
5
  Author-email: Justin Mitchel <justin@codingforentrepreneurs.com>
6
6
  Project-URL: Changelog, https://github.com/jmitchel3/django-qstash
@@ -27,11 +27,11 @@ Requires-Dist: django>=4.2
27
27
  Requires-Dist: qstash>=2
28
28
  Requires-Dist: requests>=2.30
29
29
 
30
- > :warning: **BETA Software**: Working on being production-ready soon.
31
-
32
30
  # django-qstash
33
31
 
34
- _django-qstash_ is a drop-in replacement for Celery's `shared_task`.
32
+ Run background tasks with Django through webhooks and Upstash QStash.
33
+
34
+ _django-qstash_ is designed to be a drop-in replacement for Celery's `shared_task` or run alongside Celery.
35
35
 
36
36
 
37
37
  ## How it works
@@ -46,7 +46,7 @@ from django_qstash import shared_task
46
46
  def my_task():
47
47
  pass
48
48
  ```
49
- > To use Celery too, you can use `@stashed_task` instead of `@shared_task` more below.
49
+ > To use django-qstash with Celery, you can use `@stashed_task` instead of `@shared_task` (more below).
50
50
 
51
51
  To do this we need:
52
52
 
File without changes