Users/developers have reported that our project has too many Python dependencies. This is related to things being overly complex.
Here is pde's attempt to characterize what our dependencies currently are:
-
Purely for certbot-auto and the things it needs to build, not for
the python code itself (these no longer apply on recent OSes where we have packages):
git
gcc
python-dev
libffi-dev
libssl-dev
setuptools
virtualenv
-
Essential OS packages
python
openssl
-
Semi-essential OS packages:
dialog
-
Needed for specific plugins:
python-psutil (standalone -- see what has bound :80 or :443) (now only "recommended")
libaugeas0 (apache -- parse & edit conf files)
python-augeas
-
Python dependencies:
ConfigArgParse (for reading config files)
configobj (for writing & reading renewal conf files)
python-cryptography (>= 0.8)
PyOpenSSL (>= 0.15) (>= 0.13)
pythondialog
ndg-httpsclient (for working around TLS insecurities in older Python versions)
requests
six
-
Python dependencies specifically related to time processing. It seems
absurd that there are four of these:
werkzeug
pytz
parsedatetime
pyicu (needed by parsedatetime)
pyrfc3339
-
Python dependencies for python-cryptography:
idna
enum34
ipaddress
cffi
pycparser (build dep only, but affects letsencrypt-auto)
pyasn1
-
These were used to define plugin interfaces. Not sure if that was wise,
but it's probably annoying to third parties if we ditch them:
zope.components
zope.interface
zope.event
-
Development and doc-building dependencies. For reasons I don't
yet understand, pip always fetches some of these too:
mock
funcsigs (mock depends on this)
pbr (mock depends on this)
sphinxdocs
Users/developers have reported that our project has too many Python dependencies. This is related to things being overly complex.
Here is pde's attempt to characterize what our dependencies currently are: