Setuptools lets you list requirements for optional features
# mypackage
'extras_require' : { 'PDF' : ['reportlab'], 'DOCX' : ['docxlib'] }
and another package can specify 'requires' : [ 'mypackage[PDF]' ]
.
If another package wants to require more than one extra from the first package, can it ask for 'requires' : [ 'mypackage[PDF, DOCX]' ]
?