diff options
author | Lance Stout <lancestout@gmail.com> | 2011-08-04 00:07:30 -0700 |
---|---|---|
committer | Lance Stout <lancestout@gmail.com> | 2011-08-04 00:07:30 -0700 |
commit | a0767f6af61bc9c54b2526cd51aef7af4e383e90 (patch) | |
tree | 9004b290fc7870ba062032d4fa2cafe425b49d7b | |
parent | 9ffdba8643ca8e52a30ce227331cd772a5fea6d1 (diff) | |
download | slixmpp-a0767f6af61bc9c54b2526cd51aef7af4e383e90.tar.gz slixmpp-a0767f6af61bc9c54b2526cd51aef7af4e383e90.tar.bz2 slixmpp-a0767f6af61bc9c54b2526cd51aef7af4e383e90.tar.xz slixmpp-a0767f6af61bc9c54b2526cd51aef7af4e383e90.zip |
Sadly, dateutil is not actually part of the standard lib.
Thus, using the XEP-0082 and XEP-0202 introduces a dependency
on the dateutil package (installable using pip install python-dateutil).
Maybe we'll be able to rework how these plugins work to avoid
needing dateutil, but for now this will have to do.
-rw-r--r-- | README | 3 | ||||
-rw-r--r-- | setup.py | 6 | ||||
-rw-r--r-- | sleekxmpp/plugins/__init__.py | 20 | ||||
-rw-r--r-- | sleekxmpp/plugins/xep_0082.py | 11 | ||||
-rw-r--r-- | sleekxmpp/plugins/xep_0202/__init__.py | 23 | ||||
-rw-r--r-- | sleekxmpp/plugins/xep_0202/stanza.py | 8 |
6 files changed, 61 insertions, 10 deletions
@@ -9,6 +9,9 @@ We try to keep requirements to a minimum, but we suggest that you install http:/ If you do not install this library, you may need to specify the server/port for services that use SRV records (like GTalk). "sudo pip install dnspython" on a *nix system with pip installed. +Two time related plugins (XEP-0082 and XEP-0202) also require the dateutil package, but that is not a hard requirement if you +don't need those plugins. + SleekXMPP has several design goals/philosophies: - Low number of dependencies. - Every XEP as a plugin. @@ -54,11 +54,15 @@ packages = [ 'sleekxmpp', 'sleekxmpp/plugins/xep_0059',
'sleekxmpp/plugins/xep_0060',
'sleekxmpp/plugins/xep_0060/stanza',
+ 'sleekxmpp/plugins/xep_0066',
'sleekxmpp/plugins/xep_0085',
'sleekxmpp/plugins/xep_0086',
'sleekxmpp/plugins/xep_0092',
'sleekxmpp/plugins/xep_0128',
- 'sleekxmpp/plugins/xep_0199',
+ 'sleekxmpp/plugins/xep_0202',
+ 'sleekxmpp/plugins/xep_0203',
+ 'sleekxmpp/plugins/xep_0224',
+ 'sleekxmpp/plugins/xep_0249',
'sleekxmpp/features',
'sleekxmpp/features/feature_mechanisms',
'sleekxmpp/features/feature_mechanisms/stanza',
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): |