Skip to content

Commit 28585a8

Browse files
committed
celery cannot be an optional dependency but celery extra's can
1 parent 40ee732 commit 28585a8

File tree

14 files changed

+97
-57
lines changed

14 files changed

+97
-57
lines changed

.readthedocs.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ build:
1717
# Tell poetry to not use a virtual environment
1818
- poetry config virtualenvs.create false
1919
post_install:
20-
- poetry install -E "celery" --with docs
20+
- poetry install -E "full" --with docs
2121

2222
# Build documentation in the "docs/" directory with Sphinx
2323
sphinx:

docs/includes/installation.txt

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,11 +11,12 @@ To install using :command:`pip`:
1111

1212
$ pip install -U pytest-celery
1313

14-
To include the latest celery package, install with the ``celery`` extra:
14+
To include optional celery dependencies for redis and memcached support,
15+
install with the ``full`` extra:
1516

1617
.. code-block:: console
1718

18-
$ pip install -U "pytest-celery[celery]"
19+
$ pip install -U "pytest-celery[full]"
1920

2021
With git
2122
~~~~~~~~

examples/django/requirements.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
sqlalchemy>=1.2.18
22
django>=2.2.1
33
pytest-django>=4.7.0
4-
pytest-celery[celery]@git+https://github.com/celery/pytest-celery.git
4+
pytest-celery[full]@git+https://github.com/celery/pytest-celery.git
55
pytest-xdist>=3.5.0

examples/myworker/requirements.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
11
pytest>=7.4.4
2-
pytest-celery[celery]@git+https://github.com/celery/pytest-celery.git
2+
pytest-celery[full]@git+https://github.com/celery/pytest-celery.git
33
pytest-xdist>=3.5.0
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
11
pytest>=7.4.4
2-
pytest-celery[celery]@git+https://github.com/celery/pytest-celery.git
2+
pytest-celery[full]@git+https://github.com/celery/pytest-celery.git
33
pytest-xdist>=3.5.0

examples/range/requirements.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
11
pytest>=7.4.4
2-
pytest-celery[celery]@git+https://github.com/celery/pytest-celery.git
2+
pytest-celery[full]@git+https://github.com/celery/pytest-celery.git
33
pytest-xdist>=3.5.0
44
pytest-subtests>=0.11.0

poetry.lock

Lines changed: 15 additions & 15 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

pyproject.toml

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -73,18 +73,18 @@ replace = ':Version: {new_version}'
7373

7474
[tool.poetry.dependencies]
7575
python = ">= 3.8,<4.0"
76-
celery = { version = "<6.0.0", extras = [
77-
"redis",
78-
"pymemcache",
79-
], optional = true }
76+
celery = [
77+
{ version = "<6.0.0" },
78+
{ version = "<6.0.0", extras = ["redis", "pymemcache"], markers = "extra == 'full'" }
79+
]
8080
retry = "^0.9.2"
8181
pytest-docker-tools = "^3.1.3"
8282
docker = "^7.0.0"
8383
psutil = "^5.9.7"
8484
setuptools = "^69.1.0"
8585

8686
[tool.poetry.extras]
87-
celery = ["celery"]
87+
full = []
8888

8989
[tool.poetry.group.dev]
9090

src/pytest_celery/__init__.py

Lines changed: 18 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -24,17 +24,27 @@
2424
from pytest_celery.fixtures.broker import *
2525
from pytest_celery.fixtures.setup import *
2626
from pytest_celery.fixtures.worker import *
27-
from pytest_celery.vendors.memcached.api import *
28-
from pytest_celery.vendors.memcached.container import *
29-
from pytest_celery.vendors.memcached.fixtures import *
27+
from pytest_celery.vendors import MissingCeleryDependency
3028
from pytest_celery.vendors.rabbitmq.api import *
3129
from pytest_celery.vendors.rabbitmq.container import *
3230
from pytest_celery.vendors.rabbitmq.fixtures import *
33-
from pytest_celery.vendors.redis.backend.api import *
34-
from pytest_celery.vendors.redis.backend.fixtures import *
35-
from pytest_celery.vendors.redis.broker.api import *
36-
from pytest_celery.vendors.redis.broker.fixtures import *
37-
from pytest_celery.vendors.redis.container import *
31+
32+
try:
33+
from pytest_celery.vendors.memcached.api import *
34+
from pytest_celery.vendors.memcached.container import *
35+
from pytest_celery.vendors.memcached.fixtures import *
36+
except MissingCeleryDependency:
37+
pass
38+
39+
try:
40+
from pytest_celery.vendors.redis.backend.api import *
41+
from pytest_celery.vendors.redis.backend.fixtures import *
42+
from pytest_celery.vendors.redis.broker.api import *
43+
from pytest_celery.vendors.redis.broker.fixtures import *
44+
from pytest_celery.vendors.redis.container import *
45+
except MissingCeleryDependency:
46+
pass
47+
3848
from pytest_celery.vendors.worker.container import *
3949
from pytest_celery.vendors.worker.fixtures import *
4050

src/pytest_celery/defaults.py

Lines changed: 26 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -4,18 +4,35 @@
44

55
from pytest_docker_tools import network
66

7-
from pytest_celery.vendors.memcached.defaults import CELERY_MEMCACHED_BACKEND
8-
from pytest_celery.vendors.memcached.defaults import *
7+
from pytest_celery.vendors import MissingCeleryDependency
98
from pytest_celery.vendors.rabbitmq.defaults import CELERY_RABBITMQ_BROKER
109
from pytest_celery.vendors.rabbitmq.defaults import *
11-
from pytest_celery.vendors.redis.backend.defaults import CELERY_REDIS_BACKEND
12-
from pytest_celery.vendors.redis.backend.defaults import *
13-
from pytest_celery.vendors.redis.broker.defaults import CELERY_REDIS_BROKER
14-
from pytest_celery.vendors.redis.broker.defaults import *
15-
from pytest_celery.vendors.redis.defaults import *
1610
from pytest_celery.vendors.worker.defaults import CELERY_SETUP_WORKER
1711
from pytest_celery.vendors.worker.defaults import *
1812

13+
try:
14+
import pytest_celery.vendors.memcached
15+
except MissingCeleryDependency:
16+
_CELERY_MEMCACHED_BACKEND = None
17+
else:
18+
from pytest_celery.vendors.memcached.defaults import CELERY_MEMCACHED_BACKEND as _CELERY_MEMCACHED_BACKEND
19+
from pytest_celery.vendors.memcached.defaults import *
20+
21+
_CELERY_MEMCACHED_BACKEND = None # Beta support at the moment, to be used manually
22+
23+
try:
24+
import pytest_celery.vendors.redis
25+
except MissingCeleryDependency:
26+
_CELERY_REDIS_BACKEND = None
27+
_CELERY_REDIS_BROKER = None
28+
else:
29+
from pytest_celery.vendors.redis.backend.defaults import CELERY_REDIS_BACKEND as _CELERY_REDIS_BACKEND
30+
from pytest_celery.vendors.redis.backend.defaults import *
31+
from pytest_celery.vendors.redis.broker.defaults import CELERY_REDIS_BROKER as _CELERY_REDIS_BROKER
32+
from pytest_celery.vendors.redis.broker.defaults import *
33+
from pytest_celery.vendors.redis.defaults import *
34+
35+
1936
####################################################################################
2037
# Automatic components
2138
####################################################################################
@@ -29,14 +46,8 @@
2946
# Tests that do not rely on default parametrization will not be affected.
3047

3148
ALL_CELERY_WORKERS = (CELERY_SETUP_WORKER,)
32-
ALL_CELERY_BACKENDS = (
33-
CELERY_REDIS_BACKEND,
34-
# CELERY_MEMCACHED_BACKEND, # Beta support at the moment, to be used manually
35-
)
36-
ALL_CELERY_BROKERS = (
37-
CELERY_REDIS_BROKER,
38-
CELERY_RABBITMQ_BROKER,
39-
)
49+
ALL_CELERY_BACKENDS = (backend for backend in [_CELERY_REDIS_BACKEND, _CELERY_MEMCACHED_BACKEND] if backend is not None)
50+
ALL_CELERY_BROKERS = (broker for broker in [CELERY_RABBITMQ_BROKER, _CELERY_REDIS_BROKER] if broker is not None)
4051

4152
####################################################################################
4253
# Fixtures

0 commit comments

Comments
 (0)