summaryrefslogtreecommitdiff
path: root/sleekxmpp
diff options
context:
space:
mode:
Diffstat (limited to 'sleekxmpp')
-rw-r--r--sleekxmpp/plugins/__init__.py20
-rw-r--r--sleekxmpp/plugins/xep_0082.py11
-rw-r--r--sleekxmpp/plugins/xep_0202/__init__.py23
-rw-r--r--sleekxmpp/plugins/xep_0202/stanza.py8
4 files changed, 53 insertions, 9 deletions
diff --git a/sleekxmpp/plugins/__init__.py b/sleekxmpp/plugins/__init__.py
index b48a4c03..21a05fe0 100644
--- a/sleekxmpp/plugins/__init__.py
+++ b/sleekxmpp/plugins/__init__.py
@@ -6,6 +6,20 @@
See the file LICENSE for copying permission.
"""
__all__ = ['xep_0004', 'xep_0009', 'xep_0012', 'xep_0030', 'xep_0033',
- 'xep_0045', 'xep_0050', 'xep_0060', 'xep_0066', 'xep_0082',
- 'xep_0085', 'xep_0086', 'xep_0092', 'xep_0128', 'xep_0199',
- 'xep_0202', 'xep_0203', 'xep_0224', 'xep_0249', 'gmail_notify']
+ 'xep_0045', 'xep_0050', 'xep_0060', 'xep_0066', 'xep_0085',
+ 'xep_0086', 'xep_0092', 'xep_0128', 'xep_0199', 'xep_0203',
+ 'xep_0224', 'xep_0249', 'gmail_notify']
+
+# Some plugins may require external dependencies beyond what the
+# core SleekXMPP installation requires. Thus they should only by
+# imported automatically if those dependecies are met.
+
+HAVE_DATEUTIL = True
+try:
+ import dateutil
+except:
+ HAVE_DATEUTIL = False
+
+if HAVE_DATEUTIL:
+ __all__.append('xep_0082')
+ __all__.append('xep_0202')
diff --git a/sleekxmpp/plugins/xep_0082.py b/sleekxmpp/plugins/xep_0082.py
index 785ba36b..e78a50ad 100644
--- a/sleekxmpp/plugins/xep_0082.py
+++ b/sleekxmpp/plugins/xep_0082.py
@@ -6,11 +6,18 @@
See the file LICENSE for copying permission.
"""
+import logging
import datetime as dt
-from dateutil import parser
-from dateutil.tz import tzoffset, tzutc
+
from sleekxmpp.plugins.base import base_plugin
+try:
+ from dateutil import parser
+ from dateutil.tz import tzoffset, tzutc
+except e:
+ log = logging.getLogger(__name__)
+ log.warning("XEP-0082 plugin requires dateutil")
+
# =====================================================================
# To make it easier for stanzas without direct access to plugin objects
diff --git a/sleekxmpp/plugins/xep_0202/__init__.py b/sleekxmpp/plugins/xep_0202/__init__.py
index 82338d3a..3fb4744d 100644
--- a/sleekxmpp/plugins/xep_0202/__init__.py
+++ b/sleekxmpp/plugins/xep_0202/__init__.py
@@ -6,6 +6,23 @@
See the file LICENSE for copying permission.
"""
-from sleekxmpp.plugins.xep_0202 import stanza
-from sleekxmpp.plugins.xep_0202.stanza import EntityTime
-from sleekxmpp.plugins.xep_0202.time import xep_0202
+import logging
+import sleekxmpp
+
+
+log = logging.getLogger(__name__)
+
+
+HAVE_DATEUTIL = True
+try:
+ import dateutil
+except:
+ HAVE_DATEUTIL = False
+
+
+if HAVE_DATEUTIL:
+ from sleekxmpp.plugins.xep_0202 import stanza
+ from sleekxmpp.plugins.xep_0202.stanza import EntityTime
+ from sleekxmpp.plugins.xep_0202.time import xep_0202
+else:
+ log.warning("XEP-0202 requires the dateutil package")
diff --git a/sleekxmpp/plugins/xep_0202/stanza.py b/sleekxmpp/plugins/xep_0202/stanza.py
index bb27692a..72ab403d 100644
--- a/sleekxmpp/plugins/xep_0202/stanza.py
+++ b/sleekxmpp/plugins/xep_0202/stanza.py
@@ -6,12 +6,18 @@
See the file LICENSE for copying permission.
"""
+import logging
import datetime as dt
-from dateutil.tz import tzoffset, tzutc
from sleekxmpp.xmlstream import ElementBase
from sleekxmpp.plugins import xep_0082
+try:
+ from dateutil.tz import tzutc
+except:
+ log = logging.getLogger(__name__)
+ log.warning("XEP-0202 plugin requies dateutil package")
+
class EntityTime(ElementBase):