Issue 1:
Checklist

I have verified that the issue exists against the master branch of Celery.

This has already been asked to the discussion group first.

I have read the relevant section in the

contribution guide

on reporting bugs.

I have checked the issues list

for similar or identical bug reports.

I have checked the pull requests list

for existing proposed fixes.

I have checked the commit log

to find out if the bug was already fixed 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).

Mandatory Debugging Information

I have included the output of celery -A proj report in the issue.

(if you are not able to do this, then at least specify the Celery

version affected).

I have verified that the issue exists against the master branch of Celery.

I have included the contents of pip freeze in the issue.

I have included all the versions of all the external dependencies required

to reproduce this bug.

Optional Debugging Information

I have tried reproducing the issue on more than one Python version

and/or implementation.

I have tried reproducing the issue on more than one message broker and/or

result backend.

I have tried reproducing the issue on more than one version of the message

broker and/or result backend.

I have tried reproducing the issue on more than one operating system.

I have tried reproducing the issue on more than one workers pool.

I have tried reproducing the issue with autoscaling, retries,

ETA/Countdown & rate limits disabled.

I have tried reproducing the issue after downgrading

and/or upgrading Celery and its dependencies.

Related Issues and Possible Duplicates

Related Commits

0f37ba0

Related Issues

None

Possible Duplicates

None

Environment & Settings

Celery version:

celery report Output:

Steps to Reproduce

Required Dependencies

Minimal Python Version: N/A or Unknown

Minimal Celery Version: N/A or Unknown

Minimal Kombu Version: N/A or Unknown

Minimal Broker Version: N/A or Unknown

Minimal Result Backend Version: N/A or Unknown

Minimal OS and/or Kernel Version: N/A or Unknown

Minimal Broker Client Version: N/A or Unknown

Minimal Result Backend Client Version: N/A or Unknown

Python Packages

pip freeze Output:

Other Dependencies

N/A

Minimally Reproducible Test Case

>>> import platform
>>> import pkg_resources
>>>
>>> your_python_requires_str = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*,"
>>> pkg_resources.Requirement.parse("python_version%s" % your_python_requires_str)
.....
pkg_resources.RequirementParseError: Invalid requirement, parse error at "','"
>>>
>>> valid_python_requires_str = your_python_requires_str.rstrip(',')
>>> pkg_resources.Requirement.parse("python_version%s" % valid_python_requires_str)
Requirement.parse('python_version!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,>=2.7')

Expected Behavior

python_requires string should be a valid python version specifier.

The same applies to the requires_python attribute on pypi.org

Actual Behavior

pkg_resources.Requirement.parse raises an Exception with the current provided string

Issue 2:
I was looking for the difference between Celery.start and Celery.worker_main (I've been using the former, but now see in the user guide that the latter is recommended), but I found that neither has a docstring. Nor does the class and many other methods on it. Could you add some minimal docstrings to at least point out the difference?

(I'm not sure why I picked start at first, was this recommended before or did I just guess wrongly?)