diff --git a/README.rst b/README.rst index f8137f7..9ab19eb 100644 --- a/README.rst +++ b/README.rst @@ -31,6 +31,14 @@ To install snakebite 2.x run: pip install snakebite + + +To install snakebite 2.x with Kerberos/SASL support, make sure you can install python-krbV (https://fedorahosted.org/python-krbV/) and then run: + + pip install "snakebite[kerberos]" + + + Documentation ************* More information and documentation can be found at http://spotify.github.io/snakebite/ diff --git a/debian/changelog b/debian/changelog index 3e8f819..5898e83 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,9 @@ +snakebite (2.7.0) unstable; urgency=low + + * Make kerberos/sasl optional in python packaging + + -- Wouter de Bie Tue, 24 Sep 2015 13:12:25 -0000 + snakebite (2.6.1) unstable; urgency=low * Wraps use of the Python 'pwd' module in a utility procedure for Windows compatibility diff --git a/requirements.txt b/requirements.txt index f285fa3..544f3b8 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,4 +1,2 @@ argparse -protobuf>2.4.1 -sasl -python-krbV +protobuf>2.4.1 \ No newline at end of file diff --git a/setup.py b/setup.py index 7d4568e..5ca53b4 100755 --- a/setup.py +++ b/setup.py @@ -42,9 +42,13 @@ def run_tests(self): install_requires = [ 'protobuf>2.4.1', - 'argparse', - 'sasl', - 'python-krbV'] + 'argparse'] + +extras_require = { + 'kerberos': [ + 'python-krbV', + 'sasl'] +} tests_require = [ 'tox', @@ -74,6 +78,7 @@ def run_tests(self): ('', ['LICENSE']) ], install_requires=install_requires, + extras_require=extras_require, tests_require=tests_require, cmdclass={'test': Tox} ) diff --git a/snakebite/channel.py b/snakebite/channel.py index f34dedb..479de1e 100644 --- a/snakebite/channel.py +++ b/snakebite/channel.py @@ -60,10 +60,6 @@ import google.protobuf.internal.encoder as encoder import google.protobuf.internal.decoder as decoder -# SASL -from snakebite.rpc_sasl import SaslRpcClient -from snakebite.kerberos import Kerberos - # Module imports import logger @@ -178,6 +174,13 @@ def __init__(self, host, port, version, effective_user=None, use_sasl=False): self.client_id = str(uuid.uuid4()) self.use_sasl = use_sasl if self.use_sasl: + try: + # Only import if SASL is enabled + from snakebite.rpc_sasl import SaslRpcClient + from snakebite.kerberos import Kerberos + except ImportError: + raise Exception("Kerberos libs not found. Please install snakebite using 'pip install snakebite[kerberos]'") + kerberos = Kerberos() self.effective_user = effective_user or kerberos.user_principal().name else: diff --git a/snakebite/version.py b/snakebite/version.py index 6d6dc88..006c530 100644 --- a/snakebite/version.py +++ b/snakebite/version.py @@ -1,4 +1,4 @@ -VERSION = "2.6.1" +VERSION = "2.7.0" def version():