We are currently solving the following issue within our repository. Here is the issue text:
--- BEGIN ISSUE ---
stop loading pytest plugin by default
currently celery, by default, will add a set of fixtures and a mark, which can be confusing to new developers on a project when running `pytest --fixtures` and begin using them even through we've not yet opted into and started configuring them.

An alternative is to use an approach like https://github.com/aio-libs/pytest-aiohttp/ where there is a shim package that just lists an entrypoint, and depends on aiohttp.

Those that don't want to install the shim package can add `pytest_plugins = 'celery.contrib.pytest'` to their `pytest.ini`



<!--
Please fill this template entirely and do not erase parts of it.
We reserve the right to close without a response
feature requests which are incomplete.
-->
# Checklist
<!--
To check an item on the list replace [ ] with [x].
-->

- [ ] I have checked the [issues list](https://github.com/celery/celery/issues?utf8=%E2%9C%93&q=is%3Aissue+label%3A%22Issue+Type%3A+Feature+Request%22+)
  for similar or identical feature requests.
- [ ] I have checked the [pull requests list](https://github.com/celery/celery/pulls?utf8=%E2%9C%93&q=is%3Apr+label%3A%22PR+Type%3A+Feature%22+)
  for existing proposed implementations of this feature.
- [ ] I have checked the [commit log](https://github.com/celery/celery/commits/master)
  to find out if the if the same feature was already implemented in the
  master branch.
- [ ] I have included all related issues and possible duplicate issues
  in this issue (If there are none, check this box anyway).

## Related Issues and Possible Duplicates
<!--
Please make sure to search and mention any related issues
or possible duplicates to this issue as requested by the checklist above.

This may or may not include issues in other repositories that the Celery project
maintains or other repositories that are dependencies of Celery.

If you don't know how to mention issues, please refer to Github's documentation
on the subject: https://help.github.com/en/articles/autolinked-references-and-urls#issues-and-pull-requests
-->

#### Related Issues

- None

#### Possible Duplicates

- None

# Brief Summary
<!--
Please include a brief summary of what the feature does
and why it is needed.
-->

# Design

## Architectural Considerations
<!--
If more components other than Celery are involved,
describe them here and the effect it would have on Celery.
-->
None

## Proposed Behavior
<!--
Please describe in detail how this feature is going to behave.
Describe what happens in case of failures as well if applicable.
-->

## Proposed UI/UX
<!--
Please provide your ideas for the API, CLI options,
configuration key names etc. that will be introduced for this feature.
-->

## Diagrams
<!--
Please include any diagrams that might be relevant
to the implementation of this feature such as:
* Class Diagrams
* Sequence Diagrams
* Activity Diagrams
You can drag and drop images into the text box to attach them to this issue.
-->
N/A

## Alternatives
<!--
If you have considered any alternative implementations
describe them in detail below.
-->
None


--- END ISSUE ---

Below are some code segments, each from a relevant file. One or more of these files may contain bugs.
--- BEGIN FILES ---
Path: `setup.py`
Content:
```
1 #!/usr/bin/env python
2 # -*- coding: utf-8 -*-
3 import codecs
4 import os
5 import re
6 import sys
7 
8 import setuptools
9 import setuptools.command.test
10 
11 try:
12     from platform import python_implementation as _pyimp
13 except (AttributeError, ImportError):
14     def _pyimp():
15         return 'Python (unknown)'
16 
17 NAME = 'celery'
18 
19 # -*- Python Versions -*-
20 
21 E_UNSUPPORTED_PYTHON = """
22 ----------------------------------------
23  Celery 4.0 requires %s %s or later
24 ----------------------------------------
25 
26 - For CPython 2.6, PyPy 1.x, Jython 2.6, CPython 3.2->3.3; use Celery 3.1:
27 
28     $ pip install 'celery<4'
29 
30 - For CPython 2.5, Jython 2.5; use Celery 3.0:
31 
32     $ pip install 'celery<3.1'
33 
34 - For CPython 2.4; use Celery 2.2:
35 
36     $ pip install 'celery<2.3'
37 """
38 
39 PYIMP = _pyimp()
40 PY26_OR_LESS = sys.version_info < (2, 7)
41 PY3 = sys.version_info[0] == 3
42 PY34_OR_LESS = PY3 and sys.version_info < (3, 5)
43 PYPY_VERSION = getattr(sys, 'pypy_version_info', None)
44 PYPY = PYPY_VERSION is not None
45 PYPY24_ATLEAST = PYPY_VERSION and PYPY_VERSION >= (2, 4)
46 
47 if PY26_OR_LESS:
48     raise Exception(E_UNSUPPORTED_PYTHON % (PYIMP, '2.7'))
49 elif PY34_OR_LESS and not PYPY24_ATLEAST:
50     raise Exception(E_UNSUPPORTED_PYTHON % (PYIMP, '3.5'))
51 
52 # -*- Extras -*-
53 
54 EXTENSIONS = {
55     'arangodb',
56     'auth',
57     'azureblockblob',
58     'brotli',
59     'cassandra',
60     'consul',
61     'cosmosdbsql',
62     'couchbase',
63     'couchdb',
64     'django',
65     'dynamodb',
66     'elasticsearch',
67     'eventlet',
68     'gevent',
69     'librabbitmq',
70     'lzma',
71     'memcache',
72     'mongodb',
73     'msgpack',
74     'pymemcache',
75     'pyro',
76     'redis',
77     'riak',
78     's3',
79     'slmq',
80     'solar',
81     'sqlalchemy',
82     'sqs',
83     'tblib',
84     'yaml',
85     'zookeeper',
86     'zstd'
87 }
88 
89 # -*- Distribution Meta -*-
90 
91 re_meta = re.compile(r'__(\w+?)__\s*=\s*(.*)')
92 re_doc = re.compile(r'^"""(.+?)"""')
93 
94 
95 def _add_default(m):
96     attr_name, attr_value = m.groups()
97     return ((attr_name, attr_value.strip("\"'")),)
98 
99 
100 def _add_doc(m):
101     return (('doc', m.groups()[0]),)
102 
103 
104 def parse_dist_meta():
105     """Extract metadata information from ``$dist/__init__.py``."""
106     pats = {re_meta: _add_default, re_doc: _add_doc}
107     here = os.path.abspath(os.path.dirname(__file__))
108     with open(os.path.join(here, NAME, '__init__.py')) as meta_fh:
109         distmeta = {}
110         for line in meta_fh:
111             if line.strip() == '# -eof meta-':
112                 break
113             for pattern, handler in pats.items():
114                 m = pattern.match(line.strip())
115                 if m:
116                     distmeta.update(handler(m))
117         return distmeta
118 
119 # -*- Requirements -*-
120 
121 
122 def _strip_comments(l):
123     return l.split('#', 1)[0].strip()
124 
125 
126 def _pip_requirement(req):
127     if req.startswith('-r '):
128         _, path = req.split()
129         return reqs(*path.split('/'))
130     return [req]
131 
132 
133 def _reqs(*f):
134     return [
135         _pip_requirement(r) for r in (
136             _strip_comments(l) for l in open(
137                 os.path.join(os.getcwd(), 'requirements', *f)).readlines()
138         ) if r]
139 
140 
141 def reqs(*f):
142     """Parse requirement file.
143 
144     Example:
145         reqs('default.txt')          # requirements/default.txt
146         reqs('extras', 'redis.txt')  # requirements/extras/redis.txt
147     Returns:
148         List[str]: list of requirements specified in the file.
149     """
150     return [req for subreq in _reqs(*f) for req in subreq]
151 
152 
153 def extras(*p):
154     """Parse requirement in the requirements/extras/ directory."""
155     return reqs('extras', *p)
156 
157 
158 def install_requires():
159     """Get list of requirements required for installation."""
160     return reqs('default.txt')
161 
162 
163 def extras_require():
164     """Get map of all extra requirements."""
165     return {x: extras(x + '.txt') for x in EXTENSIONS}
166 
167 # -*- Long Description -*-
168 
169 
170 def long_description():
171     try:
172         return codecs.open('README.rst', 'r', 'utf-8').read()
173     except IOError:
174         return 'Long description error: Missing README.rst file'
175 
176 # -*- Command: setup.py test -*-
177 
178 
179 class pytest(setuptools.command.test.test):
180     user_options = [('pytest-args=', 'a', 'Arguments to pass to py.test')]
181 
182     def initialize_options(self):
183         setuptools.command.test.test.initialize_options(self)
184         self.pytest_args = []
185 
186     def run_tests(self):
187         import pytest as _pytest
188         sys.exit(_pytest.main(self.pytest_args))
189 
190 # -*- %%% -*-
191 
192 
193 meta = parse_dist_meta()
194 setuptools.setup(
195     name=NAME,
196     packages=setuptools.find_packages(exclude=['t', 't.*']),
197     version=meta['version'],
198     description=meta['doc'],
199     long_description=long_description(),
200     keywords=meta['keywords'],
201     author=meta['author'],
202     author_email=meta['contact'],
203     url=meta['homepage'],
204     license='BSD',
205     platforms=['any'],
206     install_requires=install_requires(),
207     python_requires=">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*",
208     tests_require=reqs('test.txt'),
209     extras_require=extras_require(),
210     cmdclass={'test': pytest},
211     include_package_data=True,
212     zip_safe=False,
213     entry_points={
214         'console_scripts': [
215             'celery = celery.__main__:main',
216         ],
217         'pytest11': [
218             'celery = celery.contrib.pytest',
219         ],
220     },
221     project_urls={
222         "Documentation": "http://docs.celeryproject.org/en/latest/index.html",
223         "Code": "https://github.com/celery/celery",
224         "Tracker": "https://github.com/celery/celery/issues",
225         "Funding": "https://opencollective.com/celery"
226     },
227     classifiers=[
228         "Development Status :: 5 - Production/Stable",
229         "License :: OSI Approved :: BSD License",
230         "Topic :: System :: Distributed Computing",
231         "Topic :: Software Development :: Object Brokering",
232         "Programming Language :: Python",
233         "Programming Language :: Python :: 2",
234         "Programming Language :: Python :: 2.7",
235         "Programming Language :: Python :: 3",
236         "Programming Language :: Python :: 3.5",
237         "Programming Language :: Python :: 3.6",
238         "Programming Language :: Python :: 3.7",
239         "Programming Language :: Python :: 3.8",
240         "Programming Language :: Python :: Implementation :: CPython",
241         "Programming Language :: Python :: Implementation :: PyPy",
242         "Operating System :: OS Independent"
243     ]
244 )
245
```
--- END FILES ---

Please first localize the bug based on the issue statement, and then generate a patch according to the `git diff` format fenced by three backticks.

Here is an example:

```diff
diff --git a/examples/server_async.py b/examples/server_async.py
--- a/examples/server_async.py
+++ b/examples/server_async.py
@@ -313,4 +313,4 @@
 
 
 if __name__ == "__main__":
-    asyncio.run(run_async_server("."), debug=True)
+    asyncio.run(run_async_server(), debug=True)
diff --git a/examples/server_sync.py b/examples/server_sync.py
--- a/examples/server_sync.py
+++ b/examples/server_sync.py
@@ -313,5 +313,5 @@
 
 
 if __name__ == "__main__":
-    server = run_sync_server(".")
+    server = run_sync_server()
     server.shutdown()

```

diff --git a/setup.py b/setup.py
--- a/setup.py
+++ b/setup.py
@@ -213,10 +213,7 @@
     entry_points={
         'console_scripts': [
             'celery = celery.__main__:main',
-        ],
-        'pytest11': [
-            'celery = celery.contrib.pytest',
-        ],
+        ]
     },
     project_urls={
         "Documentation": "http://docs.celeryproject.org/en/latest/index.html",

{"golden_diff": "diff --git a/setup.py b/setup.py\n--- a/setup.py\n+++ b/setup.py\n@@ -213,10 +213,7 @@\n     entry_points={\n         'console_scripts': [\n             'celery = celery.__main__:main',\n-        ],\n-        'pytest11': [\n-            'celery = celery.contrib.pytest',\n-        ],\n+        ]\n     },\n     project_urls={\n         \"Documentation\": \"http://docs.celeryproject.org/en/latest/index.html\",\n", "issue": "stop loading pytest plugin by default\ncurrently celery, by default, will add a set of fixtures and a mark, which can be confusing to new developers on a project when running `pytest --fixtures` and begin using them even through we've not yet opted into and started configuring them.\r\n\r\nAn alternative is to use an approach like https://github.com/aio-libs/pytest-aiohttp/ where there is a shim package that just lists an entrypoint, and depends on aiohttp.\r\n\r\nThose that don't want to install the shim package can add `pytest_plugins = 'celery.contrib.pytest'` to their `pytest.ini`\r\n\r\n\r\n\r\n<!--\r\nPlease fill this template entirely and do not erase parts of it.\r\nWe reserve the right to close without a response\r\nfeature requests which are incomplete.\r\n-->\r\n# Checklist\r\n<!--\r\nTo check an item on the list replace [ ] with [x].\r\n-->\r\n\r\n- [ ] I have checked the [issues list](https://github.com/celery/celery/issues?utf8=%E2%9C%93&q=is%3Aissue+label%3A%22Issue+Type%3A+Feature+Request%22+)\r\n  for similar or identical feature requests.\r\n- [ ] I have checked the [pull requests list](https://github.com/celery/celery/pulls?utf8=%E2%9C%93&q=is%3Apr+label%3A%22PR+Type%3A+Feature%22+)\r\n  for existing proposed implementations of this feature.\r\n- [ ] I have checked the [commit log](https://github.com/celery/celery/commits/master)\r\n  to find out if the if the same feature was already implemented in the\r\n  master branch.\r\n- [ ] I have included all related issues and possible duplicate issues\r\n  in this issue (If there are none, check this box anyway).\r\n\r\n## Related Issues and Possible Duplicates\r\n<!--\r\nPlease make sure to search and mention any related issues\r\nor possible duplicates to this issue as requested by the checklist above.\r\n\r\nThis may or may not include issues in other repositories that the Celery project\r\nmaintains or other repositories that are dependencies of Celery.\r\n\r\nIf you don't know how to mention issues, please refer to Github's documentation\r\non the subject: https://help.github.com/en/articles/autolinked-references-and-urls#issues-and-pull-requests\r\n-->\r\n\r\n#### Related Issues\r\n\r\n- None\r\n\r\n#### Possible Duplicates\r\n\r\n- None\r\n\r\n# Brief Summary\r\n<!--\r\nPlease include a brief summary of what the feature does\r\nand why it is needed.\r\n-->\r\n\r\n# Design\r\n\r\n## Architectural Considerations\r\n<!--\r\nIf more components other than Celery are involved,\r\ndescribe them here and the effect it would have on Celery.\r\n-->\r\nNone\r\n\r\n## Proposed Behavior\r\n<!--\r\nPlease describe in detail how this feature is going to behave.\r\nDescribe what happens in case of failures as well if applicable.\r\n-->\r\n\r\n## Proposed UI/UX\r\n<!--\r\nPlease provide your ideas for the API, CLI options,\r\nconfiguration key names etc. that will be introduced for this feature.\r\n-->\r\n\r\n## Diagrams\r\n<!--\r\nPlease include any diagrams that might be relevant\r\nto the implementation of this feature such as:\r\n* Class Diagrams\r\n* Sequence Diagrams\r\n* Activity Diagrams\r\nYou can drag and drop images into the text box to attach them to this issue.\r\n-->\r\nN/A\r\n\r\n## Alternatives\r\n<!--\r\nIf you have considered any alternative implementations\r\ndescribe them in detail below.\r\n-->\r\nNone\r\n\n", "before_files": [{"content": "#!/usr/bin/env python\n# -*- coding: utf-8 -*-\nimport codecs\nimport os\nimport re\nimport sys\n\nimport setuptools\nimport setuptools.command.test\n\ntry:\n    from platform import python_implementation as _pyimp\nexcept (AttributeError, ImportError):\n    def _pyimp():\n        return 'Python (unknown)'\n\nNAME = 'celery'\n\n# -*- Python Versions -*-\n\nE_UNSUPPORTED_PYTHON = \"\"\"\n----------------------------------------\n Celery 4.0 requires %s %s or later\n----------------------------------------\n\n- For CPython 2.6, PyPy 1.x, Jython 2.6, CPython 3.2->3.3; use Celery 3.1:\n\n    $ pip install 'celery<4'\n\n- For CPython 2.5, Jython 2.5; use Celery 3.0:\n\n    $ pip install 'celery<3.1'\n\n- For CPython 2.4; use Celery 2.2:\n\n    $ pip install 'celery<2.3'\n\"\"\"\n\nPYIMP = _pyimp()\nPY26_OR_LESS = sys.version_info < (2, 7)\nPY3 = sys.version_info[0] == 3\nPY34_OR_LESS = PY3 and sys.version_info < (3, 5)\nPYPY_VERSION = getattr(sys, 'pypy_version_info', None)\nPYPY = PYPY_VERSION is not None\nPYPY24_ATLEAST = PYPY_VERSION and PYPY_VERSION >= (2, 4)\n\nif PY26_OR_LESS:\n    raise Exception(E_UNSUPPORTED_PYTHON % (PYIMP, '2.7'))\nelif PY34_OR_LESS and not PYPY24_ATLEAST:\n    raise Exception(E_UNSUPPORTED_PYTHON % (PYIMP, '3.5'))\n\n# -*- Extras -*-\n\nEXTENSIONS = {\n    'arangodb',\n    'auth',\n    'azureblockblob',\n    'brotli',\n    'cassandra',\n    'consul',\n    'cosmosdbsql',\n    'couchbase',\n    'couchdb',\n    'django',\n    'dynamodb',\n    'elasticsearch',\n    'eventlet',\n    'gevent',\n    'librabbitmq',\n    'lzma',\n    'memcache',\n    'mongodb',\n    'msgpack',\n    'pymemcache',\n    'pyro',\n    'redis',\n    'riak',\n    's3',\n    'slmq',\n    'solar',\n    'sqlalchemy',\n    'sqs',\n    'tblib',\n    'yaml',\n    'zookeeper',\n    'zstd'\n}\n\n# -*- Distribution Meta -*-\n\nre_meta = re.compile(r'__(\\w+?)__\\s*=\\s*(.*)')\nre_doc = re.compile(r'^\"\"\"(.+?)\"\"\"')\n\n\ndef _add_default(m):\n    attr_name, attr_value = m.groups()\n    return ((attr_name, attr_value.strip(\"\\\"'\")),)\n\n\ndef _add_doc(m):\n    return (('doc', m.groups()[0]),)\n\n\ndef parse_dist_meta():\n    \"\"\"Extract metadata information from ``$dist/__init__.py``.\"\"\"\n    pats = {re_meta: _add_default, re_doc: _add_doc}\n    here = os.path.abspath(os.path.dirname(__file__))\n    with open(os.path.join(here, NAME, '__init__.py')) as meta_fh:\n        distmeta = {}\n        for line in meta_fh:\n            if line.strip() == '# -eof meta-':\n                break\n            for pattern, handler in pats.items():\n                m = pattern.match(line.strip())\n                if m:\n                    distmeta.update(handler(m))\n        return distmeta\n\n# -*- Requirements -*-\n\n\ndef _strip_comments(l):\n    return l.split('#', 1)[0].strip()\n\n\ndef _pip_requirement(req):\n    if req.startswith('-r '):\n        _, path = req.split()\n        return reqs(*path.split('/'))\n    return [req]\n\n\ndef _reqs(*f):\n    return [\n        _pip_requirement(r) for r in (\n            _strip_comments(l) for l in open(\n                os.path.join(os.getcwd(), 'requirements', *f)).readlines()\n        ) if r]\n\n\ndef reqs(*f):\n    \"\"\"Parse requirement file.\n\n    Example:\n        reqs('default.txt')          # requirements/default.txt\n        reqs('extras', 'redis.txt')  # requirements/extras/redis.txt\n    Returns:\n        List[str]: list of requirements specified in the file.\n    \"\"\"\n    return [req for subreq in _reqs(*f) for req in subreq]\n\n\ndef extras(*p):\n    \"\"\"Parse requirement in the requirements/extras/ directory.\"\"\"\n    return reqs('extras', *p)\n\n\ndef install_requires():\n    \"\"\"Get list of requirements required for installation.\"\"\"\n    return reqs('default.txt')\n\n\ndef extras_require():\n    \"\"\"Get map of all extra requirements.\"\"\"\n    return {x: extras(x + '.txt') for x in EXTENSIONS}\n\n# -*- Long Description -*-\n\n\ndef long_description():\n    try:\n        return codecs.open('README.rst', 'r', 'utf-8').read()\n    except IOError:\n        return 'Long description error: Missing README.rst file'\n\n# -*- Command: setup.py test -*-\n\n\nclass pytest(setuptools.command.test.test):\n    user_options = [('pytest-args=', 'a', 'Arguments to pass to py.test')]\n\n    def initialize_options(self):\n        setuptools.command.test.test.initialize_options(self)\n        self.pytest_args = []\n\n    def run_tests(self):\n        import pytest as _pytest\n        sys.exit(_pytest.main(self.pytest_args))\n\n# -*- %%% -*-\n\n\nmeta = parse_dist_meta()\nsetuptools.setup(\n    name=NAME,\n    packages=setuptools.find_packages(exclude=['t', 't.*']),\n    version=meta['version'],\n    description=meta['doc'],\n    long_description=long_description(),\n    keywords=meta['keywords'],\n    author=meta['author'],\n    author_email=meta['contact'],\n    url=meta['homepage'],\n    license='BSD',\n    platforms=['any'],\n    install_requires=install_requires(),\n    python_requires=\">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*\",\n    tests_require=reqs('test.txt'),\n    extras_require=extras_require(),\n    cmdclass={'test': pytest},\n    include_package_data=True,\n    zip_safe=False,\n    entry_points={\n        'console_scripts': [\n            'celery = celery.__main__:main',\n        ],\n        'pytest11': [\n            'celery = celery.contrib.pytest',\n        ],\n    },\n    project_urls={\n        \"Documentation\": \"http://docs.celeryproject.org/en/latest/index.html\",\n        \"Code\": \"https://github.com/celery/celery\",\n        \"Tracker\": \"https://github.com/celery/celery/issues\",\n        \"Funding\": \"https://opencollective.com/celery\"\n    },\n    classifiers=[\n        \"Development Status :: 5 - Production/Stable\",\n        \"License :: OSI Approved :: BSD License\",\n        \"Topic :: System :: Distributed Computing\",\n        \"Topic :: Software Development :: Object Brokering\",\n        \"Programming Language :: Python\",\n        \"Programming Language :: Python :: 2\",\n        \"Programming Language :: Python :: 2.7\",\n        \"Programming Language :: Python :: 3\",\n        \"Programming Language :: Python :: 3.5\",\n        \"Programming Language :: Python :: 3.6\",\n        \"Programming Language :: Python :: 3.7\",\n        \"Programming Language :: Python :: 3.8\",\n        \"Programming Language :: Python :: Implementation :: CPython\",\n        \"Programming Language :: Python :: Implementation :: PyPy\",\n        \"Operating System :: OS Independent\"\n    ]\n)\n", "path": "setup.py"}], "after_files": [{"content": "#!/usr/bin/env python\n# -*- coding: utf-8 -*-\nimport codecs\nimport os\nimport re\nimport sys\n\nimport setuptools\nimport setuptools.command.test\n\ntry:\n    from platform import python_implementation as _pyimp\nexcept (AttributeError, ImportError):\n    def _pyimp():\n        return 'Python (unknown)'\n\nNAME = 'celery'\n\n# -*- Python Versions -*-\n\nE_UNSUPPORTED_PYTHON = \"\"\"\n----------------------------------------\n Celery 4.0 requires %s %s or later\n----------------------------------------\n\n- For CPython 2.6, PyPy 1.x, Jython 2.6, CPython 3.2->3.3; use Celery 3.1:\n\n    $ pip install 'celery<4'\n\n- For CPython 2.5, Jython 2.5; use Celery 3.0:\n\n    $ pip install 'celery<3.1'\n\n- For CPython 2.4; use Celery 2.2:\n\n    $ pip install 'celery<2.3'\n\"\"\"\n\nPYIMP = _pyimp()\nPY26_OR_LESS = sys.version_info < (2, 7)\nPY3 = sys.version_info[0] == 3\nPY34_OR_LESS = PY3 and sys.version_info < (3, 5)\nPYPY_VERSION = getattr(sys, 'pypy_version_info', None)\nPYPY = PYPY_VERSION is not None\nPYPY24_ATLEAST = PYPY_VERSION and PYPY_VERSION >= (2, 4)\n\nif PY26_OR_LESS:\n    raise Exception(E_UNSUPPORTED_PYTHON % (PYIMP, '2.7'))\nelif PY34_OR_LESS and not PYPY24_ATLEAST:\n    raise Exception(E_UNSUPPORTED_PYTHON % (PYIMP, '3.5'))\n\n# -*- Extras -*-\n\nEXTENSIONS = {\n    'arangodb',\n    'auth',\n    'azureblockblob',\n    'brotli',\n    'cassandra',\n    'consul',\n    'cosmosdbsql',\n    'couchbase',\n    'couchdb',\n    'django',\n    'dynamodb',\n    'elasticsearch',\n    'eventlet',\n    'gevent',\n    'librabbitmq',\n    'lzma',\n    'memcache',\n    'mongodb',\n    'msgpack',\n    'pymemcache',\n    'pyro',\n    'redis',\n    'riak',\n    's3',\n    'slmq',\n    'solar',\n    'sqlalchemy',\n    'sqs',\n    'tblib',\n    'yaml',\n    'zookeeper',\n    'zstd'\n}\n\n# -*- Distribution Meta -*-\n\nre_meta = re.compile(r'__(\\w+?)__\\s*=\\s*(.*)')\nre_doc = re.compile(r'^\"\"\"(.+?)\"\"\"')\n\n\ndef _add_default(m):\n    attr_name, attr_value = m.groups()\n    return ((attr_name, attr_value.strip(\"\\\"'\")),)\n\n\ndef _add_doc(m):\n    return (('doc', m.groups()[0]),)\n\n\ndef parse_dist_meta():\n    \"\"\"Extract metadata information from ``$dist/__init__.py``.\"\"\"\n    pats = {re_meta: _add_default, re_doc: _add_doc}\n    here = os.path.abspath(os.path.dirname(__file__))\n    with open(os.path.join(here, NAME, '__init__.py')) as meta_fh:\n        distmeta = {}\n        for line in meta_fh:\n            if line.strip() == '# -eof meta-':\n                break\n            for pattern, handler in pats.items():\n                m = pattern.match(line.strip())\n                if m:\n                    distmeta.update(handler(m))\n        return distmeta\n\n# -*- Requirements -*-\n\n\ndef _strip_comments(l):\n    return l.split('#', 1)[0].strip()\n\n\ndef _pip_requirement(req):\n    if req.startswith('-r '):\n        _, path = req.split()\n        return reqs(*path.split('/'))\n    return [req]\n\n\ndef _reqs(*f):\n    return [\n        _pip_requirement(r) for r in (\n            _strip_comments(l) for l in open(\n                os.path.join(os.getcwd(), 'requirements', *f)).readlines()\n        ) if r]\n\n\ndef reqs(*f):\n    \"\"\"Parse requirement file.\n\n    Example:\n        reqs('default.txt')          # requirements/default.txt\n        reqs('extras', 'redis.txt')  # requirements/extras/redis.txt\n    Returns:\n        List[str]: list of requirements specified in the file.\n    \"\"\"\n    return [req for subreq in _reqs(*f) for req in subreq]\n\n\ndef extras(*p):\n    \"\"\"Parse requirement in the requirements/extras/ directory.\"\"\"\n    return reqs('extras', *p)\n\n\ndef install_requires():\n    \"\"\"Get list of requirements required for installation.\"\"\"\n    return reqs('default.txt')\n\n\ndef extras_require():\n    \"\"\"Get map of all extra requirements.\"\"\"\n    return {x: extras(x + '.txt') for x in EXTENSIONS}\n\n# -*- Long Description -*-\n\n\ndef long_description():\n    try:\n        return codecs.open('README.rst', 'r', 'utf-8').read()\n    except IOError:\n        return 'Long description error: Missing README.rst file'\n\n# -*- Command: setup.py test -*-\n\n\nclass pytest(setuptools.command.test.test):\n    user_options = [('pytest-args=', 'a', 'Arguments to pass to py.test')]\n\n    def initialize_options(self):\n        setuptools.command.test.test.initialize_options(self)\n        self.pytest_args = []\n\n    def run_tests(self):\n        import pytest as _pytest\n        sys.exit(_pytest.main(self.pytest_args))\n\n# -*- %%% -*-\n\n\nmeta = parse_dist_meta()\nsetuptools.setup(\n    name=NAME,\n    packages=setuptools.find_packages(exclude=['t', 't.*']),\n    version=meta['version'],\n    description=meta['doc'],\n    long_description=long_description(),\n    keywords=meta['keywords'],\n    author=meta['author'],\n    author_email=meta['contact'],\n    url=meta['homepage'],\n    license='BSD',\n    platforms=['any'],\n    install_requires=install_requires(),\n    python_requires=\">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*\",\n    tests_require=reqs('test.txt'),\n    extras_require=extras_require(),\n    cmdclass={'test': pytest},\n    include_package_data=True,\n    zip_safe=False,\n    entry_points={\n        'console_scripts': [\n            'celery = celery.__main__:main',\n        ]\n    },\n    project_urls={\n        \"Documentation\": \"http://docs.celeryproject.org/en/latest/index.html\",\n        \"Code\": \"https://github.com/celery/celery\",\n        \"Tracker\": \"https://github.com/celery/celery/issues\",\n        \"Funding\": \"https://opencollective.com/celery\"\n    },\n    classifiers=[\n        \"Development Status :: 5 - Production/Stable\",\n        \"License :: OSI Approved :: BSD License\",\n        \"Topic :: System :: Distributed Computing\",\n        \"Topic :: Software Development :: Object Brokering\",\n        \"Programming Language :: Python\",\n        \"Programming Language :: Python :: 2\",\n        \"Programming Language :: Python :: 2.7\",\n        \"Programming Language :: Python :: 3\",\n        \"Programming Language :: Python :: 3.5\",\n        \"Programming Language :: Python :: 3.6\",\n        \"Programming Language :: Python :: 3.7\",\n        \"Programming Language :: Python :: 3.8\",\n        \"Programming Language :: Python :: Implementation :: CPython\",\n        \"Programming Language :: Python :: Implementation :: PyPy\",\n        \"Operating System :: OS Independent\"\n    ]\n)\n", "path": "setup.py"}]}