From bd5a5012d24820b54cdca2955f5405b84de1178c Mon Sep 17 00:00:00 2001 From: Christian Heimes Date: May 09 2017 15:17:29 +0000 Subject: Slim down dependencies * Make jinja2 an optional dependency and csrgen an optional plugin * Make otptoken_yubikey an optional plugin Signed-off-by: Christian Heimes Reviewed-By: Martin Basti --- diff --git a/ipaclient/plugins/csrgen.py b/ipaclient/plugins/csrgen.py index 568a79f..d18a90c 100644 --- a/ipaclient/plugins/csrgen.py +++ b/ipaclient/plugins/csrgen.py @@ -6,8 +6,6 @@ import base64 import six -from ipaclient import csrgen -from ipaclient import csrgen_ffi from ipalib import api from ipalib import errors from ipalib import output @@ -18,6 +16,14 @@ from ipalib.plugable import Registry from ipalib.text import _ from ipapython import dogtag +try: + import jinja2 # pylint: disable=unused-import +except ImportError: + raise errors.SkipPluginModule(reason=_("jinja2 is not installed.")) +else: + from ipaclient import csrgen + from ipaclient import csrgen_ffi + if six.PY3: unicode = str diff --git a/ipaclient/plugins/otptoken_yubikey.py b/ipaclient/plugins/otptoken_yubikey.py index 759b722..9993ec8 100644 --- a/ipaclient/plugins/otptoken_yubikey.py +++ b/ipaclient/plugins/otptoken_yubikey.py @@ -20,15 +20,20 @@ import os import six -import usb.core -import yubico from ipalib import _, api, IntEnum -from ipalib.errors import NotFound +from ipalib.errors import NotFound, SkipPluginModule from ipalib.frontend import Command, Method, Object from ipalib.plugable import Registry from ipalib.util import classproperty +try: + import usb.core + import yubico +except ImportError: + # python-yubico depends on pyusb + raise SkipPluginModule(reason=_("python-yubico is not installed.")) + if six.PY3: unicode = str diff --git a/ipaclient/setup.py b/ipaclient/setup.py index 0140fd5..ac947e7 100644 --- a/ipaclient/setup.py +++ b/ipaclient/setup.py @@ -50,11 +50,9 @@ if __name__ == '__main__': ], }, install_requires=[ - "cffi", "cryptography", "ipalib", "ipapython", - "jinja2", "qrcode", "six", ], @@ -66,6 +64,7 @@ if __name__ == '__main__': extras_require={ "install": ["ipaplatform"], "otptoken_yubikey": ["python-yubico", "pyusb"], + "csrgen": ["cffi", "jinja2"], }, zip_safe=False, ) diff --git a/tox.ini b/tox.ini index ccface9..931b125 100644 --- a/tox.ini +++ b/tox.ini @@ -13,7 +13,7 @@ changedir={envdir} setenv= HOME={envtmpdir} deps= - ipaclient + ipaclient[csrgen] ipatests commands= {envbindir}/ipa --help @@ -22,7 +22,7 @@ commands= [testenv:pylint2] basepython=python2.7 deps= - ipaclient[otptoken_yubikey] + ipaclient[csrgen,otptoken_yubikey] pylint commands= {envpython} -m pylint \