remoulade 3.2.4.dev0__tar.gz → 3.2.5.dev0__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 (119) hide show
  1. {remoulade-3.2.4.dev0/remoulade.egg-info → remoulade-3.2.5.dev0}/PKG-INFO +11 -11
  2. {remoulade-3.2.4.dev0 → remoulade-3.2.5.dev0}/remoulade/__init__.py +1 -1
  3. {remoulade-3.2.4.dev0 → remoulade-3.2.5.dev0}/remoulade/results/backends/redis.py +5 -3
  4. {remoulade-3.2.4.dev0 → remoulade-3.2.5.dev0/remoulade.egg-info}/PKG-INFO +11 -11
  5. {remoulade-3.2.4.dev0 → remoulade-3.2.5.dev0}/tests/test_results.py +21 -0
  6. {remoulade-3.2.4.dev0 → remoulade-3.2.5.dev0}/COPYING +0 -0
  7. {remoulade-3.2.4.dev0 → remoulade-3.2.5.dev0}/COPYING.LESSER +0 -0
  8. {remoulade-3.2.4.dev0 → remoulade-3.2.5.dev0}/MANIFEST.in +0 -0
  9. {remoulade-3.2.4.dev0 → remoulade-3.2.5.dev0}/README.md +0 -0
  10. {remoulade-3.2.4.dev0 → remoulade-3.2.5.dev0}/bin/remoulade-gevent +0 -0
  11. {remoulade-3.2.4.dev0 → remoulade-3.2.5.dev0}/pyproject.toml +0 -0
  12. {remoulade-3.2.4.dev0 → remoulade-3.2.5.dev0}/remoulade/__main__.py +0 -0
  13. {remoulade-3.2.4.dev0 → remoulade-3.2.5.dev0}/remoulade/actor.py +0 -0
  14. {remoulade-3.2.4.dev0 → remoulade-3.2.5.dev0}/remoulade/api/__init__.py +0 -0
  15. {remoulade-3.2.4.dev0 → remoulade-3.2.5.dev0}/remoulade/api/apispec.py +0 -0
  16. {remoulade-3.2.4.dev0 → remoulade-3.2.5.dev0}/remoulade/api/main.py +0 -0
  17. {remoulade-3.2.4.dev0 → remoulade-3.2.5.dev0}/remoulade/api/scheduler.py +0 -0
  18. {remoulade-3.2.4.dev0 → remoulade-3.2.5.dev0}/remoulade/api/state.py +0 -0
  19. {remoulade-3.2.4.dev0 → remoulade-3.2.5.dev0}/remoulade/broker.py +0 -0
  20. {remoulade-3.2.4.dev0 → remoulade-3.2.5.dev0}/remoulade/brokers/__init__.py +0 -0
  21. {remoulade-3.2.4.dev0 → remoulade-3.2.5.dev0}/remoulade/brokers/local.py +0 -0
  22. {remoulade-3.2.4.dev0 → remoulade-3.2.5.dev0}/remoulade/brokers/rabbitmq.py +0 -0
  23. {remoulade-3.2.4.dev0 → remoulade-3.2.5.dev0}/remoulade/brokers/stub.py +0 -0
  24. {remoulade-3.2.4.dev0 → remoulade-3.2.5.dev0}/remoulade/cancel/__init__.py +0 -0
  25. {remoulade-3.2.4.dev0 → remoulade-3.2.5.dev0}/remoulade/cancel/backend.py +0 -0
  26. {remoulade-3.2.4.dev0 → remoulade-3.2.5.dev0}/remoulade/cancel/backends/__init__.py +0 -0
  27. {remoulade-3.2.4.dev0 → remoulade-3.2.5.dev0}/remoulade/cancel/backends/redis.py +0 -0
  28. {remoulade-3.2.4.dev0 → remoulade-3.2.5.dev0}/remoulade/cancel/backends/stub.py +0 -0
  29. {remoulade-3.2.4.dev0 → remoulade-3.2.5.dev0}/remoulade/cancel/errors.py +0 -0
  30. {remoulade-3.2.4.dev0 → remoulade-3.2.5.dev0}/remoulade/cancel/middleware.py +0 -0
  31. {remoulade-3.2.4.dev0 → remoulade-3.2.5.dev0}/remoulade/cli/__init__.py +0 -0
  32. {remoulade-3.2.4.dev0 → remoulade-3.2.5.dev0}/remoulade/cli/remoulade_ls.py +0 -0
  33. {remoulade-3.2.4.dev0 → remoulade-3.2.5.dev0}/remoulade/cli/remoulade_run.py +0 -0
  34. {remoulade-3.2.4.dev0 → remoulade-3.2.5.dev0}/remoulade/cli/remoulade_scheduler.py +0 -0
  35. {remoulade-3.2.4.dev0 → remoulade-3.2.5.dev0}/remoulade/collection_results.py +0 -0
  36. {remoulade-3.2.4.dev0 → remoulade-3.2.5.dev0}/remoulade/common.py +0 -0
  37. {remoulade-3.2.4.dev0 → remoulade-3.2.5.dev0}/remoulade/composition.py +0 -0
  38. {remoulade-3.2.4.dev0 → remoulade-3.2.5.dev0}/remoulade/encoder.py +0 -0
  39. {remoulade-3.2.4.dev0 → remoulade-3.2.5.dev0}/remoulade/errors.py +0 -0
  40. {remoulade-3.2.4.dev0 → remoulade-3.2.5.dev0}/remoulade/generic.py +0 -0
  41. {remoulade-3.2.4.dev0 → remoulade-3.2.5.dev0}/remoulade/helpers/__init__.py +0 -0
  42. {remoulade-3.2.4.dev0 → remoulade-3.2.5.dev0}/remoulade/helpers/actor_arguments.py +0 -0
  43. {remoulade-3.2.4.dev0 → remoulade-3.2.5.dev0}/remoulade/helpers/backoff.py +0 -0
  44. {remoulade-3.2.4.dev0 → remoulade-3.2.5.dev0}/remoulade/helpers/queues.py +0 -0
  45. {remoulade-3.2.4.dev0 → remoulade-3.2.5.dev0}/remoulade/helpers/redis_client.py +0 -0
  46. {remoulade-3.2.4.dev0 → remoulade-3.2.5.dev0}/remoulade/helpers/reduce.py +0 -0
  47. {remoulade-3.2.4.dev0 → remoulade-3.2.5.dev0}/remoulade/logging.py +0 -0
  48. {remoulade-3.2.4.dev0 → remoulade-3.2.5.dev0}/remoulade/message.py +0 -0
  49. {remoulade-3.2.4.dev0 → remoulade-3.2.5.dev0}/remoulade/middleware/__init__.py +0 -0
  50. {remoulade-3.2.4.dev0 → remoulade-3.2.5.dev0}/remoulade/middleware/age_limit.py +0 -0
  51. {remoulade-3.2.4.dev0 → remoulade-3.2.5.dev0}/remoulade/middleware/catch_error.py +0 -0
  52. {remoulade-3.2.4.dev0 → remoulade-3.2.5.dev0}/remoulade/middleware/current_message.py +0 -0
  53. {remoulade-3.2.4.dev0 → remoulade-3.2.5.dev0}/remoulade/middleware/logging_metadata.py +0 -0
  54. {remoulade-3.2.4.dev0 → remoulade-3.2.5.dev0}/remoulade/middleware/max_memory.py +0 -0
  55. {remoulade-3.2.4.dev0 → remoulade-3.2.5.dev0}/remoulade/middleware/max_tasks.py +0 -0
  56. {remoulade-3.2.4.dev0 → remoulade-3.2.5.dev0}/remoulade/middleware/middleware.py +0 -0
  57. {remoulade-3.2.4.dev0 → remoulade-3.2.5.dev0}/remoulade/middleware/pipelines.py +0 -0
  58. {remoulade-3.2.4.dev0 → remoulade-3.2.5.dev0}/remoulade/middleware/prometheus.py +0 -0
  59. {remoulade-3.2.4.dev0 → remoulade-3.2.5.dev0}/remoulade/middleware/retries.py +0 -0
  60. {remoulade-3.2.4.dev0 → remoulade-3.2.5.dev0}/remoulade/middleware/shutdown.py +0 -0
  61. {remoulade-3.2.4.dev0 → remoulade-3.2.5.dev0}/remoulade/middleware/threading.py +0 -0
  62. {remoulade-3.2.4.dev0 → remoulade-3.2.5.dev0}/remoulade/middleware/time_limit.py +0 -0
  63. {remoulade-3.2.4.dev0 → remoulade-3.2.5.dev0}/remoulade/middleware/worker_thread_logging.py +0 -0
  64. {remoulade-3.2.4.dev0 → remoulade-3.2.5.dev0}/remoulade/py.typed +0 -0
  65. {remoulade-3.2.4.dev0 → remoulade-3.2.5.dev0}/remoulade/rate_limits/__init__.py +0 -0
  66. {remoulade-3.2.4.dev0 → remoulade-3.2.5.dev0}/remoulade/rate_limits/backend.py +0 -0
  67. {remoulade-3.2.4.dev0 → remoulade-3.2.5.dev0}/remoulade/rate_limits/backends/__init__.py +0 -0
  68. {remoulade-3.2.4.dev0 → remoulade-3.2.5.dev0}/remoulade/rate_limits/backends/redis.py +0 -0
  69. {remoulade-3.2.4.dev0 → remoulade-3.2.5.dev0}/remoulade/rate_limits/backends/stub.py +0 -0
  70. {remoulade-3.2.4.dev0 → remoulade-3.2.5.dev0}/remoulade/rate_limits/bucket.py +0 -0
  71. {remoulade-3.2.4.dev0 → remoulade-3.2.5.dev0}/remoulade/rate_limits/concurrent.py +0 -0
  72. {remoulade-3.2.4.dev0 → remoulade-3.2.5.dev0}/remoulade/rate_limits/rate_limiter.py +0 -0
  73. {remoulade-3.2.4.dev0 → remoulade-3.2.5.dev0}/remoulade/rate_limits/window.py +0 -0
  74. {remoulade-3.2.4.dev0 → remoulade-3.2.5.dev0}/remoulade/result.py +0 -0
  75. {remoulade-3.2.4.dev0 → remoulade-3.2.5.dev0}/remoulade/results/__init__.py +0 -0
  76. {remoulade-3.2.4.dev0 → remoulade-3.2.5.dev0}/remoulade/results/backend.py +0 -0
  77. {remoulade-3.2.4.dev0 → remoulade-3.2.5.dev0}/remoulade/results/backends/__init__.py +0 -0
  78. {remoulade-3.2.4.dev0 → remoulade-3.2.5.dev0}/remoulade/results/backends/local.py +0 -0
  79. {remoulade-3.2.4.dev0 → remoulade-3.2.5.dev0}/remoulade/results/backends/stub.py +0 -0
  80. {remoulade-3.2.4.dev0 → remoulade-3.2.5.dev0}/remoulade/results/errors.py +0 -0
  81. {remoulade-3.2.4.dev0 → remoulade-3.2.5.dev0}/remoulade/results/middleware.py +0 -0
  82. {remoulade-3.2.4.dev0 → remoulade-3.2.5.dev0}/remoulade/scheduler/__init__.py +0 -0
  83. {remoulade-3.2.4.dev0 → remoulade-3.2.5.dev0}/remoulade/scheduler/scheduler.py +0 -0
  84. {remoulade-3.2.4.dev0 → remoulade-3.2.5.dev0}/remoulade/state/__init__.py +0 -0
  85. {remoulade-3.2.4.dev0 → remoulade-3.2.5.dev0}/remoulade/state/backend.py +0 -0
  86. {remoulade-3.2.4.dev0 → remoulade-3.2.5.dev0}/remoulade/state/backends/__init__.py +0 -0
  87. {remoulade-3.2.4.dev0 → remoulade-3.2.5.dev0}/remoulade/state/backends/postgres.py +0 -0
  88. {remoulade-3.2.4.dev0 → remoulade-3.2.5.dev0}/remoulade/state/backends/redis.py +0 -0
  89. {remoulade-3.2.4.dev0 → remoulade-3.2.5.dev0}/remoulade/state/backends/stub.py +0 -0
  90. {remoulade-3.2.4.dev0 → remoulade-3.2.5.dev0}/remoulade/state/errors.py +0 -0
  91. {remoulade-3.2.4.dev0 → remoulade-3.2.5.dev0}/remoulade/state/middleware.py +0 -0
  92. {remoulade-3.2.4.dev0 → remoulade-3.2.5.dev0}/remoulade/utils.py +0 -0
  93. {remoulade-3.2.4.dev0 → remoulade-3.2.5.dev0}/remoulade/worker.py +0 -0
  94. {remoulade-3.2.4.dev0 → remoulade-3.2.5.dev0}/remoulade.egg-info/SOURCES.txt +0 -0
  95. {remoulade-3.2.4.dev0 → remoulade-3.2.5.dev0}/remoulade.egg-info/dependency_links.txt +0 -0
  96. {remoulade-3.2.4.dev0 → remoulade-3.2.5.dev0}/remoulade.egg-info/entry_points.txt +0 -0
  97. {remoulade-3.2.4.dev0 → remoulade-3.2.5.dev0}/remoulade.egg-info/requires.txt +10 -10
  98. {remoulade-3.2.4.dev0 → remoulade-3.2.5.dev0}/remoulade.egg-info/top_level.txt +0 -0
  99. {remoulade-3.2.4.dev0 → remoulade-3.2.5.dev0}/setup.cfg +0 -0
  100. {remoulade-3.2.4.dev0 → remoulade-3.2.5.dev0}/setup.py +0 -0
  101. {remoulade-3.2.4.dev0 → remoulade-3.2.5.dev0}/tests/test_actors.py +0 -0
  102. {remoulade-3.2.4.dev0 → remoulade-3.2.5.dev0}/tests/test_broker.py +0 -0
  103. {remoulade-3.2.4.dev0 → remoulade-3.2.5.dev0}/tests/test_bucket_rate_limiter.py +0 -0
  104. {remoulade-3.2.4.dev0 → remoulade-3.2.5.dev0}/tests/test_cancel.py +0 -0
  105. {remoulade-3.2.4.dev0 → remoulade-3.2.5.dev0}/tests/test_channel_pool.py +0 -0
  106. {remoulade-3.2.4.dev0 → remoulade-3.2.5.dev0}/tests/test_cli.py +0 -0
  107. {remoulade-3.2.4.dev0 → remoulade-3.2.5.dev0}/tests/test_common.py +0 -0
  108. {remoulade-3.2.4.dev0 → remoulade-3.2.5.dev0}/tests/test_composition.py +0 -0
  109. {remoulade-3.2.4.dev0 → remoulade-3.2.5.dev0}/tests/test_concurrent_rate_limiter.py +0 -0
  110. {remoulade-3.2.4.dev0 → remoulade-3.2.5.dev0}/tests/test_encoders.py +0 -0
  111. {remoulade-3.2.4.dev0 → remoulade-3.2.5.dev0}/tests/test_generic_actors.py +0 -0
  112. {remoulade-3.2.4.dev0 → remoulade-3.2.5.dev0}/tests/test_helpers.py +0 -0
  113. {remoulade-3.2.4.dev0 → remoulade-3.2.5.dev0}/tests/test_local.py +0 -0
  114. {remoulade-3.2.4.dev0 → remoulade-3.2.5.dev0}/tests/test_pidfile.py +0 -0
  115. {remoulade-3.2.4.dev0 → remoulade-3.2.5.dev0}/tests/test_rabbitmq.py +0 -0
  116. {remoulade-3.2.4.dev0 → remoulade-3.2.5.dev0}/tests/test_scheduler.py +0 -0
  117. {remoulade-3.2.4.dev0 → remoulade-3.2.5.dev0}/tests/test_stub_broker.py +0 -0
  118. {remoulade-3.2.4.dev0 → remoulade-3.2.5.dev0}/tests/test_window_rate_limiter.py +0 -0
  119. {remoulade-3.2.4.dev0 → remoulade-3.2.5.dev0}/tests/test_worker.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: remoulade
3
- Version: 3.2.4.dev0
3
+ Version: 3.2.5.dev0
4
4
  Summary: Background Processing for Python 3.
5
5
  Author: Wiremind
6
6
  Author-email: dev@wiremind.io
@@ -36,25 +36,25 @@ Provides-Extra: pydantic
36
36
  Requires-Dist: pydantic>=2.0; extra == "pydantic"
37
37
  Requires-Dist: simplejson; extra == "pydantic"
38
38
  Provides-Extra: all
39
+ Requires-Dist: flask-apispec; extra == "all"
39
40
  Requires-Dist: amqpstorm<3,>=2.6; extra == "all"
40
- Requires-Dist: marshmallow>=3; extra == "all"
41
41
  Requires-Dist: pydantic>=2.0; extra == "all"
42
- Requires-Dist: simplejson; extra == "all"
43
- Requires-Dist: sqlalchemy<2,>=1.4.29; extra == "all"
44
- Requires-Dist: flask>=1.1,~=2.3.3; extra == "all"
45
42
  Requires-Dist: psycopg2==2.9.5; extra == "all"
46
43
  Requires-Dist: redis~=5.0; extra == "all"
47
- Requires-Dist: flask-apispec; extra == "all"
44
+ Requires-Dist: flask>=1.1,~=2.3.3; extra == "all"
45
+ Requires-Dist: sqlalchemy<2,>=1.4.29; extra == "all"
46
+ Requires-Dist: marshmallow>=3; extra == "all"
47
+ Requires-Dist: simplejson; extra == "all"
48
48
  Provides-Extra: dev
49
+ Requires-Dist: flask-apispec; extra == "dev"
49
50
  Requires-Dist: amqpstorm<3,>=2.6; extra == "dev"
50
- Requires-Dist: marshmallow>=3; extra == "dev"
51
51
  Requires-Dist: pydantic>=2.0; extra == "dev"
52
- Requires-Dist: simplejson; extra == "dev"
53
- Requires-Dist: sqlalchemy<2,>=1.4.29; extra == "dev"
54
- Requires-Dist: flask>=1.1,~=2.3.3; extra == "dev"
55
52
  Requires-Dist: psycopg2==2.9.5; extra == "dev"
56
53
  Requires-Dist: redis~=5.0; extra == "dev"
57
- Requires-Dist: flask-apispec; extra == "dev"
54
+ Requires-Dist: flask>=1.1,~=2.3.3; extra == "dev"
55
+ Requires-Dist: sqlalchemy<2,>=1.4.29; extra == "dev"
56
+ Requires-Dist: marshmallow>=3; extra == "dev"
57
+ Requires-Dist: simplejson; extra == "dev"
58
58
  Requires-Dist: alabaster; extra == "dev"
59
59
  Requires-Dist: sphinx==4.1.1; extra == "dev"
60
60
  Requires-Dist: sphinxcontrib-napoleon; extra == "dev"
@@ -90,4 +90,4 @@ __all__ = [
90
90
  "set_scheduler",
91
91
  ]
92
92
 
93
- __version__ = "3.2.4-dev"
93
+ __version__ = "3.2.5-dev"
@@ -114,7 +114,8 @@ class RedisBackend(ResultBackend):
114
114
  timeout = int(timeout / 1000)
115
115
  deadline = time.monotonic() + timeout
116
116
  retry_count, data = 0, None
117
-
117
+ end_time = self.get_end_time(timeout)
118
+ attempts = 0
118
119
  while data is None:
119
120
  try:
120
121
  if timeout > 0:
@@ -127,8 +128,9 @@ class RedisBackend(ResultBackend):
127
128
  else:
128
129
  data = await self.async_client.brpoplpush(message_key, message_key, timeout=timeout)
129
130
  if data is None:
130
- raise ResultMissing(message_id)
131
- except (redis.ConnectionError, redis.TimeoutError):
131
+ forget_delay = self.check_timeout(attempts, end_time, message_id)
132
+ await asyncio.sleep(forget_delay)
133
+ except (redis.ConnectionError, redis.TimeoutError, ResultTimeout):
132
134
  if data is not None:
133
135
  break
134
136
  if retry_count >= self.max_retries:
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: remoulade
3
- Version: 3.2.4.dev0
3
+ Version: 3.2.5.dev0
4
4
  Summary: Background Processing for Python 3.
5
5
  Author: Wiremind
6
6
  Author-email: dev@wiremind.io
@@ -36,25 +36,25 @@ Provides-Extra: pydantic
36
36
  Requires-Dist: pydantic>=2.0; extra == "pydantic"
37
37
  Requires-Dist: simplejson; extra == "pydantic"
38
38
  Provides-Extra: all
39
+ Requires-Dist: flask-apispec; extra == "all"
39
40
  Requires-Dist: amqpstorm<3,>=2.6; extra == "all"
40
- Requires-Dist: marshmallow>=3; extra == "all"
41
41
  Requires-Dist: pydantic>=2.0; extra == "all"
42
- Requires-Dist: simplejson; extra == "all"
43
- Requires-Dist: sqlalchemy<2,>=1.4.29; extra == "all"
44
- Requires-Dist: flask>=1.1,~=2.3.3; extra == "all"
45
42
  Requires-Dist: psycopg2==2.9.5; extra == "all"
46
43
  Requires-Dist: redis~=5.0; extra == "all"
47
- Requires-Dist: flask-apispec; extra == "all"
44
+ Requires-Dist: flask>=1.1,~=2.3.3; extra == "all"
45
+ Requires-Dist: sqlalchemy<2,>=1.4.29; extra == "all"
46
+ Requires-Dist: marshmallow>=3; extra == "all"
47
+ Requires-Dist: simplejson; extra == "all"
48
48
  Provides-Extra: dev
49
+ Requires-Dist: flask-apispec; extra == "dev"
49
50
  Requires-Dist: amqpstorm<3,>=2.6; extra == "dev"
50
- Requires-Dist: marshmallow>=3; extra == "dev"
51
51
  Requires-Dist: pydantic>=2.0; extra == "dev"
52
- Requires-Dist: simplejson; extra == "dev"
53
- Requires-Dist: sqlalchemy<2,>=1.4.29; extra == "dev"
54
- Requires-Dist: flask>=1.1,~=2.3.3; extra == "dev"
55
52
  Requires-Dist: psycopg2==2.9.5; extra == "dev"
56
53
  Requires-Dist: redis~=5.0; extra == "dev"
57
- Requires-Dist: flask-apispec; extra == "dev"
54
+ Requires-Dist: flask>=1.1,~=2.3.3; extra == "dev"
55
+ Requires-Dist: sqlalchemy<2,>=1.4.29; extra == "dev"
56
+ Requires-Dist: marshmallow>=3; extra == "dev"
57
+ Requires-Dist: simplejson; extra == "dev"
58
58
  Requires-Dist: alabaster; extra == "dev"
59
59
  Requires-Dist: sphinx==4.1.1; extra == "dev"
60
60
  Requires-Dist: sphinxcontrib-napoleon; extra == "dev"
@@ -568,6 +568,27 @@ async def test_redis_async_get_results_with_forget(
568
568
  assert result == 42
569
569
 
570
570
 
571
+ @pytest.mark.parametrize("forget", [True])
572
+ async def test_redis_async_get_results_with_forget_timeout(
573
+ rabbitmq_broker: RabbitmqBroker,
574
+ rabbitmq_worker: Worker,
575
+ redis_result_backend,
576
+ forget: bool,
577
+ ):
578
+ rabbitmq_broker.add_middleware(Results(backend=redis_result_backend))
579
+
580
+ @remoulade.actor(store_results=True)
581
+ def do_work():
582
+ time.sleep(0.2)
583
+ return 42
584
+
585
+ rabbitmq_broker.declare_actor(do_work)
586
+ message = do_work.send()
587
+ rabbitmq_broker.join(do_work.queue_name)
588
+ with pytest.raises(ResultTimeout):
589
+ await message.result.async_get(forget=forget, timeout=1)
590
+
591
+
571
592
  def test_completed_count_no_messages(stub_broker, result_middleware):
572
593
  result = CollectionResults([])
573
594
  assert result.completed_count == 0
File without changes
File without changes
@@ -5,26 +5,26 @@ typing-extensions>=3.8
5
5
  attrs>=19.2.0
6
6
 
7
7
  [all]
8
+ flask-apispec
8
9
  amqpstorm<3,>=2.6
9
- marshmallow>=3
10
10
  pydantic>=2.0
11
- simplejson
12
- sqlalchemy<2,>=1.4.29
13
- flask>=1.1,~=2.3.3
14
11
  psycopg2==2.9.5
15
12
  redis~=5.0
16
- flask-apispec
13
+ flask>=1.1,~=2.3.3
14
+ sqlalchemy<2,>=1.4.29
15
+ marshmallow>=3
16
+ simplejson
17
17
 
18
18
  [dev]
19
+ flask-apispec
19
20
  amqpstorm<3,>=2.6
20
- marshmallow>=3
21
21
  pydantic>=2.0
22
- simplejson
23
- sqlalchemy<2,>=1.4.29
24
- flask>=1.1,~=2.3.3
25
22
  psycopg2==2.9.5
26
23
  redis~=5.0
27
- flask-apispec
24
+ flask>=1.1,~=2.3.3
25
+ sqlalchemy<2,>=1.4.29
26
+ marshmallow>=3
27
+ simplejson
28
28
  alabaster
29
29
  sphinx==4.1.1
30
30
  sphinxcontrib-napoleon
File without changes
File without changes