base-api-utils 1.1.115__tar.gz → 1.1.117.dev1__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.
Files changed (112) hide show
  1. {base_api_utils-1.1.115/src/base_api_utils.egg-info → base_api_utils-1.1.117.dev1}/PKG-INFO +1 -1
  2. {base_api_utils-1.1.115 → base_api_utils-1.1.117.dev1}/pyproject.toml +1 -1
  3. {base_api_utils-1.1.115 → base_api_utils-1.1.117.dev1}/src/base_api_utils/filters/filter_utils_mixin.py +12 -0
  4. base_api_utils-1.1.117.dev1/src/base_api_utils/tests/test_task_status_endpoints.py +104 -0
  5. {base_api_utils-1.1.115 → base_api_utils-1.1.117.dev1}/src/base_api_utils/views/tasks_result_view.py +2 -4
  6. {base_api_utils-1.1.115 → base_api_utils-1.1.117.dev1/src/base_api_utils.egg-info}/PKG-INFO +1 -1
  7. {base_api_utils-1.1.115 → base_api_utils-1.1.117.dev1}/src/base_api_utils.egg-info/SOURCES.txt +1 -0
  8. {base_api_utils-1.1.115 → base_api_utils-1.1.117.dev1}/LICENSE +0 -0
  9. {base_api_utils-1.1.115 → base_api_utils-1.1.117.dev1}/README.md +0 -0
  10. {base_api_utils-1.1.115 → base_api_utils-1.1.117.dev1}/setup.cfg +0 -0
  11. {base_api_utils-1.1.115 → base_api_utils-1.1.117.dev1}/src/base_api_utils/__init__.py +0 -0
  12. {base_api_utils-1.1.115 → base_api_utils-1.1.117.dev1}/src/base_api_utils/commands/__init__.py +0 -0
  13. {base_api_utils-1.1.115 → base_api_utils-1.1.117.dev1}/src/base_api_utils/commands/failed_task_management_mixin.py +0 -0
  14. {base_api_utils-1.1.115 → base_api_utils-1.1.117.dev1}/src/base_api_utils/domain/__init__.py +0 -0
  15. {base_api_utils-1.1.115 → base_api_utils-1.1.117.dev1}/src/base_api_utils/domain/event_message.py +0 -0
  16. {base_api_utils-1.1.115 → base_api_utils-1.1.117.dev1}/src/base_api_utils/domain/event_message_factory.py +0 -0
  17. {base_api_utils-1.1.115 → base_api_utils-1.1.117.dev1}/src/base_api_utils/domain/events.py +0 -0
  18. {base_api_utils-1.1.115 → base_api_utils-1.1.117.dev1}/src/base_api_utils/dtos/__init__.py +0 -0
  19. {base_api_utils-1.1.115 → base_api_utils-1.1.117.dev1}/src/base_api_utils/dtos/authz_user.py +0 -0
  20. {base_api_utils-1.1.115 → base_api_utils-1.1.117.dev1}/src/base_api_utils/fields/__init__.py +0 -0
  21. {base_api_utils-1.1.115 → base_api_utils-1.1.117.dev1}/src/base_api_utils/fields/email_list_field.py +0 -0
  22. {base_api_utils-1.1.115 → base_api_utils-1.1.117.dev1}/src/base_api_utils/filters/__init__.py +0 -0
  23. {base_api_utils-1.1.115 → base_api_utils-1.1.117.dev1}/src/base_api_utils/filters/base_filter.py +0 -0
  24. {base_api_utils-1.1.115 → base_api_utils-1.1.117.dev1}/src/base_api_utils/filters/custom_ordering_filter.py +0 -0
  25. {base_api_utils-1.1.115 → base_api_utils-1.1.117.dev1}/src/base_api_utils/handlers/__init__.py +0 -0
  26. {base_api_utils-1.1.115 → base_api_utils-1.1.117.dev1}/src/base_api_utils/handlers/base_event_handler.py +0 -0
  27. {base_api_utils-1.1.115 → base_api_utils-1.1.117.dev1}/src/base_api_utils/handlers/sponsor_event_handler.py +0 -0
  28. {base_api_utils-1.1.115 → base_api_utils-1.1.117.dev1}/src/base_api_utils/handlers/sponsorship_addon_event_handler.py +0 -0
  29. {base_api_utils-1.1.115 → base_api_utils-1.1.117.dev1}/src/base_api_utils/handlers/sponsorship_event_handler.py +0 -0
  30. {base_api_utils-1.1.115 → base_api_utils-1.1.117.dev1}/src/base_api_utils/handlers/summit_event_handler.py +0 -0
  31. {base_api_utils-1.1.115 → base_api_utils-1.1.117.dev1}/src/base_api_utils/ioc/__init__.py +0 -0
  32. {base_api_utils-1.1.115 → base_api_utils-1.1.117.dev1}/src/base_api_utils/ioc/container.py +0 -0
  33. {base_api_utils-1.1.115 → base_api_utils-1.1.117.dev1}/src/base_api_utils/models/__init__.py +0 -0
  34. {base_api_utils-1.1.115 → base_api_utils-1.1.117.dev1}/src/base_api_utils/models/item_image.py +0 -0
  35. {base_api_utils-1.1.115 → base_api_utils-1.1.117.dev1}/src/base_api_utils/security/__init__.py +0 -0
  36. {base_api_utils-1.1.115 → base_api_utils-1.1.117.dev1}/src/base_api_utils/security/abstract_access_token_service.py +0 -0
  37. {base_api_utils-1.1.115 → base_api_utils-1.1.117.dev1}/src/base_api_utils/security/abstract_oauth2_api_client.py +0 -0
  38. {base_api_utils-1.1.115 → base_api_utils-1.1.117.dev1}/src/base_api_utils/security/access_token_service.py +0 -0
  39. {base_api_utils-1.1.115 → base_api_utils-1.1.117.dev1}/src/base_api_utils/security/check_sponsor_user_permissions.py +0 -0
  40. {base_api_utils-1.1.115 → base_api_utils-1.1.117.dev1}/src/base_api_utils/security/group_required.py +0 -0
  41. {base_api_utils-1.1.115 → base_api_utils-1.1.117.dev1}/src/base_api_utils/security/oauth2_authentication.py +0 -0
  42. {base_api_utils-1.1.115 → base_api_utils-1.1.117.dev1}/src/base_api_utils/security/oauth2_client_factory.py +0 -0
  43. {base_api_utils-1.1.115 → base_api_utils-1.1.117.dev1}/src/base_api_utils/security/oauth2_scope_required.py +0 -0
  44. {base_api_utils-1.1.115 → base_api_utils-1.1.117.dev1}/src/base_api_utils/security/permission_event_handler.py +0 -0
  45. {base_api_utils-1.1.115 → base_api_utils-1.1.117.dev1}/src/base_api_utils/security/shared.py +0 -0
  46. {base_api_utils-1.1.115 → base_api_utils-1.1.117.dev1}/src/base_api_utils/security/user_permissions_service.py +0 -0
  47. {base_api_utils-1.1.115 → base_api_utils-1.1.117.dev1}/src/base_api_utils/serializers/__init__.py +0 -0
  48. {base_api_utils-1.1.115 → base_api_utils-1.1.117.dev1}/src/base_api_utils/serializers/base_model_serializer.py +0 -0
  49. {base_api_utils-1.1.115 → base_api_utils-1.1.117.dev1}/src/base_api_utils/serializers/email_list_char_field.py +0 -0
  50. {base_api_utils-1.1.115 → base_api_utils-1.1.117.dev1}/src/base_api_utils/serializers/nullable_slug_related_field.py +0 -0
  51. {base_api_utils-1.1.115 → base_api_utils-1.1.117.dev1}/src/base_api_utils/serializers/serializers_registry.py +0 -0
  52. {base_api_utils-1.1.115 → base_api_utils-1.1.117.dev1}/src/base_api_utils/serializers/task_result_serializer.py +0 -0
  53. {base_api_utils-1.1.115 → base_api_utils-1.1.117.dev1}/src/base_api_utils/serializers/timestamp_field.py +0 -0
  54. {base_api_utils-1.1.115 → base_api_utils-1.1.117.dev1}/src/base_api_utils/serializers/v2/__init__.py +0 -0
  55. {base_api_utils-1.1.115 → base_api_utils-1.1.117.dev1}/src/base_api_utils/serializers/v2/abstract_serializer.py +0 -0
  56. {base_api_utils-1.1.115 → base_api_utils-1.1.117.dev1}/src/base_api_utils/serializers/v2/base_model_serializer.py +0 -0
  57. {base_api_utils-1.1.115 → base_api_utils-1.1.117.dev1}/src/base_api_utils/serializers/v2/expands.py +0 -0
  58. {base_api_utils-1.1.115 → base_api_utils-1.1.117.dev1}/src/base_api_utils/serializers/v2/query_params.py +0 -0
  59. {base_api_utils-1.1.115 → base_api_utils-1.1.117.dev1}/src/base_api_utils/serializers/v2/spectacular.py +0 -0
  60. {base_api_utils-1.1.115 → base_api_utils-1.1.117.dev1}/src/base_api_utils/services/__init__.py +0 -0
  61. {base_api_utils-1.1.115 → base_api_utils-1.1.117.dev1}/src/base_api_utils/services/abstract_domain_events_service.py +0 -0
  62. {base_api_utils-1.1.115 → base_api_utils-1.1.117.dev1}/src/base_api_utils/services/abstract_event_dispatcher.py +0 -0
  63. {base_api_utils-1.1.115 → base_api_utils-1.1.117.dev1}/src/base_api_utils/services/abstract_images_service.py +0 -0
  64. {base_api_utils-1.1.115 → base_api_utils-1.1.117.dev1}/src/base_api_utils/services/abstract_sponsor_metadata_service.py +0 -0
  65. {base_api_utils-1.1.115 → base_api_utils-1.1.117.dev1}/src/base_api_utils/services/abstract_storage_service.py +0 -0
  66. {base_api_utils-1.1.115 → base_api_utils-1.1.117.dev1}/src/base_api_utils/services/abstract_summit_metadata_service.py +0 -0
  67. {base_api_utils-1.1.115 → base_api_utils-1.1.117.dev1}/src/base_api_utils/services/amqp_service.py +0 -0
  68. {base_api_utils-1.1.115 → base_api_utils-1.1.117.dev1}/src/base_api_utils/services/celery_failed.py +0 -0
  69. {base_api_utils-1.1.115 → base_api_utils-1.1.117.dev1}/src/base_api_utils/services/event_dispatcher.py +0 -0
  70. {base_api_utils-1.1.115 → base_api_utils-1.1.117.dev1}/src/base_api_utils/services/images_service.py +0 -0
  71. {base_api_utils-1.1.115 → base_api_utils-1.1.117.dev1}/src/base_api_utils/services/s3_service.py +0 -0
  72. {base_api_utils-1.1.115 → base_api_utils-1.1.117.dev1}/src/base_api_utils/services/strategies/__init__.py +0 -0
  73. {base_api_utils-1.1.115 → base_api_utils-1.1.117.dev1}/src/base_api_utils/services/strategies/abstract_task_runner_strategy.py +0 -0
  74. {base_api_utils-1.1.115 → base_api_utils-1.1.117.dev1}/src/base_api_utils/services/strategies/publish_domain_event_strategy.py +0 -0
  75. {base_api_utils-1.1.115 → base_api_utils-1.1.117.dev1}/src/base_api_utils/tests/__init__.py +0 -0
  76. {base_api_utils-1.1.115 → base_api_utils-1.1.117.dev1}/src/base_api_utils/tests/test_failed_celery_task_management.py +0 -0
  77. {base_api_utils-1.1.115 → base_api_utils-1.1.117.dev1}/src/base_api_utils/urls.py +0 -0
  78. {base_api_utils-1.1.115 → base_api_utils-1.1.117.dev1}/src/base_api_utils/utils/__init__.py +0 -0
  79. {base_api_utils-1.1.115 → base_api_utils-1.1.117.dev1}/src/base_api_utils/utils/async_helpers.py +0 -0
  80. {base_api_utils-1.1.115 → base_api_utils-1.1.117.dev1}/src/base_api_utils/utils/circuit_breaker.py +0 -0
  81. {base_api_utils-1.1.115 → base_api_utils-1.1.117.dev1}/src/base_api_utils/utils/config.py +0 -0
  82. {base_api_utils-1.1.115 → base_api_utils-1.1.117.dev1}/src/base_api_utils/utils/custom_auto_schema.py +0 -0
  83. {base_api_utils-1.1.115 → base_api_utils-1.1.117.dev1}/src/base_api_utils/utils/db_connection_helpers.py +0 -0
  84. {base_api_utils-1.1.115 → base_api_utils-1.1.117.dev1}/src/base_api_utils/utils/debounce_helpers.py +0 -0
  85. {base_api_utils-1.1.115 → base_api_utils-1.1.117.dev1}/src/base_api_utils/utils/enums.py +0 -0
  86. {base_api_utils-1.1.115 → base_api_utils-1.1.117.dev1}/src/base_api_utils/utils/env_var_eval.py +0 -0
  87. {base_api_utils-1.1.115 → base_api_utils-1.1.117.dev1}/src/base_api_utils/utils/exceptions.py +0 -0
  88. {base_api_utils-1.1.115 → base_api_utils-1.1.117.dev1}/src/base_api_utils/utils/expand_queryset_optimization_mixin.py +0 -0
  89. {base_api_utils-1.1.115 → base_api_utils-1.1.117.dev1}/src/base_api_utils/utils/external_errors.py +0 -0
  90. {base_api_utils-1.1.115 → base_api_utils-1.1.117.dev1}/src/base_api_utils/utils/file_lock.py +0 -0
  91. {base_api_utils-1.1.115 → base_api_utils-1.1.117.dev1}/src/base_api_utils/utils/fingerprint_helpers.py +0 -0
  92. {base_api_utils-1.1.115 → base_api_utils-1.1.117.dev1}/src/base_api_utils/utils/http_helpers.py +0 -0
  93. {base_api_utils-1.1.115 → base_api_utils-1.1.117.dev1}/src/base_api_utils/utils/inject_job.py +0 -0
  94. {base_api_utils-1.1.115 → base_api_utils-1.1.117.dev1}/src/base_api_utils/utils/look_up_value_mixin.py +0 -0
  95. {base_api_utils-1.1.115 → base_api_utils-1.1.117.dev1}/src/base_api_utils/utils/model_helpers.py +0 -0
  96. {base_api_utils-1.1.115 → base_api_utils-1.1.117.dev1}/src/base_api_utils/utils/oauth2_custom_schema_base.py +0 -0
  97. {base_api_utils-1.1.115 → base_api_utils-1.1.117.dev1}/src/base_api_utils/utils/pagination.py +0 -0
  98. {base_api_utils-1.1.115 → base_api_utils-1.1.117.dev1}/src/base_api_utils/utils/rate_utils.py +0 -0
  99. {base_api_utils-1.1.115 → base_api_utils-1.1.117.dev1}/src/base_api_utils/utils/read_write_serializer_mixin.py +0 -0
  100. {base_api_utils-1.1.115 → base_api_utils-1.1.117.dev1}/src/base_api_utils/utils/serializers.py +0 -0
  101. {base_api_utils-1.1.115 → base_api_utils-1.1.117.dev1}/src/base_api_utils/utils/service_utils.py +0 -0
  102. {base_api_utils-1.1.115 → base_api_utils-1.1.117.dev1}/src/base_api_utils/utils/string.py +0 -0
  103. {base_api_utils-1.1.115 → base_api_utils-1.1.117.dev1}/src/base_api_utils/utils/tests.py +0 -0
  104. {base_api_utils-1.1.115 → base_api_utils-1.1.117.dev1}/src/base_api_utils/views/__init__.py +0 -0
  105. {base_api_utils-1.1.115 → base_api_utils-1.1.117.dev1}/src/base_api_utils/views/base_view.py +0 -0
  106. {base_api_utils-1.1.115 → base_api_utils-1.1.117.dev1}/src/base_api_utils/views/parent_children_crud.py +0 -0
  107. {base_api_utils-1.1.115 → base_api_utils-1.1.117.dev1}/src/base_api_utils/views/root_entity_crud.py +0 -0
  108. {base_api_utils-1.1.115 → base_api_utils-1.1.117.dev1}/src/base_api_utils.egg-info/dependency_links.txt +0 -0
  109. {base_api_utils-1.1.115 → base_api_utils-1.1.117.dev1}/src/base_api_utils.egg-info/requires.txt +0 -0
  110. {base_api_utils-1.1.115 → base_api_utils-1.1.117.dev1}/src/base_api_utils.egg-info/top_level.txt +0 -0
  111. {base_api_utils-1.1.115 → base_api_utils-1.1.117.dev1}/tests/test_circuit_breaker.py +0 -0
  112. {base_api_utils-1.1.115 → base_api_utils-1.1.117.dev1}/tests/test_lazy_imports.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: base-api-utils
3
- Version: 1.1.115
3
+ Version: 1.1.117.dev1
4
4
  Summary: Django Rest Framework micro services common utilities
5
5
  Author-email: Román Gutierrez <roman@tipit.net>, Sebastian Marcet <sebastian@tipit.net>
6
6
  Project-URL: Homepage, https://github.com/fntechgit/base-api-utils
@@ -7,7 +7,7 @@ where = ["src"]
7
7
 
8
8
  [project]
9
9
  name = "base-api-utils"
10
- version = "1.1.115"
10
+ version = "1.1.117.dev1"
11
11
  dependencies = [
12
12
  "boto3",
13
13
  "celery",
@@ -56,3 +56,15 @@ class FilterUtilsMixin:
56
56
  def filter_isnull(self, queryset, field_name, value):
57
57
  is_null = str(value).lower() == 'true'
58
58
  return Q(**{f"{field_name}__isnull": is_null})
59
+
60
+ def get_and_filter(self, filter_name):
61
+ """Returns (operator, value) for the named AND filter, or None if absent."""
62
+ for f in self.data.getlist(self.filters_param, []):
63
+ fname, fop, fval = self.parse_filter(f)
64
+ if fname == filter_name:
65
+ return fop, fval
66
+ return None
67
+
68
+ def has_and_filter(self, filter_name):
69
+ """Returns True if the named filter is present in the AND filter list."""
70
+ return self.get_and_filter(filter_name) is not None
@@ -0,0 +1,104 @@
1
+ from unittest.mock import patch, MagicMock
2
+
3
+ from django.core.management import call_command
4
+ from rest_framework.test import APITestCase
5
+ from django.urls import reverse
6
+ import json
7
+ from rest_framework import status
8
+
9
+
10
+ class TaskStatusEndpointsTest(APITestCase):
11
+ def setUp(self):
12
+ self.access_token = 'ACCESS_TOKEN'
13
+ call_command('seed_data')
14
+
15
+ def test_task_status_pending(self):
16
+ task_id = 'test-task-pending'
17
+ url = reverse('private-tasks-admin-endpoints:retrieve_async_task_status', kwargs={'task_id': task_id})
18
+
19
+ mock_result = MagicMock()
20
+ mock_result.status = 'PENDING'
21
+
22
+ with patch('base_api_utils.views.tasks_result_view.AsyncResult', return_value=mock_result):
23
+ response = self.client.get(f'{url}?access_token={self.access_token}')
24
+
25
+ self.assertEqual(response.status_code, status.HTTP_200_OK)
26
+ json_response = json.loads(response.content)
27
+ self.assertEqual(json_response['task_id'], task_id)
28
+ self.assertEqual(json_response['status'], 'PENDING')
29
+ self.assertNotIn('result', json_response)
30
+ self.assertNotIn('error', json_response)
31
+
32
+ def test_task_status_started(self):
33
+ task_id = 'test-task-started'
34
+ url = reverse('private-tasks-admin-endpoints:retrieve_async_task_status', kwargs={'task_id': task_id})
35
+
36
+ mock_result = MagicMock()
37
+ mock_result.status = 'STARTED'
38
+
39
+ with patch('base_api_utils.views.tasks_result_view.AsyncResult', return_value=mock_result):
40
+ response = self.client.get(f'{url}?access_token={self.access_token}')
41
+
42
+ self.assertEqual(response.status_code, status.HTTP_200_OK)
43
+ json_response = json.loads(response.content)
44
+ self.assertEqual(json_response['status'], 'STARTED')
45
+ self.assertNotIn('result', json_response)
46
+ self.assertNotIn('error', json_response)
47
+
48
+ def test_task_status_success(self):
49
+ task_id = 'test-task-success'
50
+ url = reverse('private-tasks-admin-endpoints:retrieve_async_task_status', kwargs={'task_id': task_id})
51
+
52
+ mock_result = MagicMock()
53
+ mock_result.status = 'SUCCESS'
54
+ mock_result.result = {'imported': [1667], 'errors': []}
55
+
56
+ with patch('base_api_utils.views.tasks_result_view.AsyncResult', return_value=mock_result):
57
+ response = self.client.get(f'{url}?access_token={self.access_token}')
58
+
59
+ self.assertEqual(response.status_code, status.HTTP_200_OK)
60
+ json_response = json.loads(response.content)
61
+ self.assertEqual(json_response['task_id'], task_id)
62
+ self.assertEqual(json_response['status'], 'SUCCESS')
63
+ self.assertIn('result', json_response)
64
+ self.assertEqual(json_response['result'], {'imported': [1667], 'errors': []})
65
+ self.assertNotIn('error', json_response)
66
+
67
+ def test_task_status_success_with_partial_errors(self):
68
+ task_id = 'test-task-partial'
69
+ url = reverse('private-tasks-admin-endpoints:retrieve_async_task_status', kwargs={'task_id': task_id})
70
+
71
+ mock_result = MagicMock()
72
+ mock_result.status = 'SUCCESS'
73
+ mock_result.result = {
74
+ 'imported': [1667],
75
+ 'errors': [{'user_id': 9999, 'error': 'There is no sponsor user registered with the id 9999'}]
76
+ }
77
+
78
+ with patch('base_api_utils.views.tasks_result_view.AsyncResult', return_value=mock_result):
79
+ response = self.client.get(f'{url}?access_token={self.access_token}')
80
+
81
+ self.assertEqual(response.status_code, status.HTTP_200_OK)
82
+ json_response = json.loads(response.content)
83
+ self.assertEqual(json_response['status'], 'SUCCESS')
84
+ self.assertEqual(len(json_response['result']['imported']), 1)
85
+ self.assertEqual(len(json_response['result']['errors']), 1)
86
+ self.assertEqual(json_response['result']['errors'][0]['user_id'], 9999)
87
+
88
+ def test_task_status_failure(self):
89
+ task_id = 'test-task-failure'
90
+ url = reverse('private-tasks-admin-endpoints:retrieve_async_task_status', kwargs={'task_id': task_id})
91
+
92
+ mock_result = MagicMock()
93
+ mock_result.status = 'FAILURE'
94
+ mock_result.result = Exception('Sponsor 999 not found')
95
+
96
+ with patch('base_api_utils.views.tasks_result_view.AsyncResult', return_value=mock_result):
97
+ response = self.client.get(f'{url}?access_token={self.access_token}')
98
+
99
+ self.assertEqual(response.status_code, status.HTTP_200_OK)
100
+ json_response = json.loads(response.content)
101
+ self.assertEqual(json_response['task_id'], task_id)
102
+ self.assertEqual(json_response['status'], 'FAILURE')
103
+ self.assertIn('error', json_response)
104
+ self.assertNotIn('result', json_response)
@@ -1,4 +1,5 @@
1
1
  from celery.result import AsyncResult
2
+ from drf_spectacular.utils import extend_schema
2
3
  from rest_framework import viewsets, status
3
4
  from rest_framework.response import Response
4
5
  from django_celery_results.models import TaskResult
@@ -8,17 +9,14 @@ from ..security import oauth2_scope_required, group_required
8
9
  from ..serializers import TaskResultSerializer
9
10
 
10
11
 
12
+ @extend_schema(tags=["Celery Tasks"])
11
13
  class TasksResultAPIView(viewsets.ReadOnlyModelViewSet):
12
- """
13
- ViewSet to view failed Celery tasks and retry them manually.
14
- """
15
14
  queryset = TaskResult.objects.filter(status='FAILURE')
16
15
  serializer_class = TaskResultSerializer
17
16
 
18
17
  @oauth2_scope_required()
19
18
  @group_required()
20
19
  def retry(self, request, task_id, *args, **kwargs):
21
- """Rerun a failed task manually"""
22
20
  task_result = self.get_queryset().filter(task_id=task_id).first()
23
21
  if not task_result:
24
22
  return Response({"error": "Task not registered as failed"}, status=status.HTTP_404_NOT_FOUND)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: base-api-utils
3
- Version: 1.1.115
3
+ Version: 1.1.117.dev1
4
4
  Summary: Django Rest Framework micro services common utilities
5
5
  Author-email: Román Gutierrez <roman@tipit.net>, Sebastian Marcet <sebastian@tipit.net>
6
6
  Project-URL: Homepage, https://github.com/fntechgit/base-api-utils
@@ -74,6 +74,7 @@ src/base_api_utils/services/strategies/abstract_task_runner_strategy.py
74
74
  src/base_api_utils/services/strategies/publish_domain_event_strategy.py
75
75
  src/base_api_utils/tests/__init__.py
76
76
  src/base_api_utils/tests/test_failed_celery_task_management.py
77
+ src/base_api_utils/tests/test_task_status_endpoints.py
77
78
  src/base_api_utils/utils/__init__.py
78
79
  src/base_api_utils/utils/async_helpers.py
79
80
  src/base_api_utils/utils/circuit_breaker.py