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.
This commit is contained in:
Lance Stout 2011-08-04 00:07:30 -07:00
parent 9ffdba8643
commit a0767f6af6
6 changed files with 61 additions and 10 deletions

3
README
View file

@ -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). 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. "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: SleekXMPP has several design goals/philosophies:
- Low number of dependencies. - Low number of dependencies.
- Every XEP as a plugin. - Every XEP as a plugin.

View file

@ -54,11 +54,15 @@ packages = [ 'sleekxmpp',
'sleekxmpp/plugins/xep_0059', 'sleekxmpp/plugins/xep_0059',
'sleekxmpp/plugins/xep_0060', 'sleekxmpp/plugins/xep_0060',
'sleekxmpp/plugins/xep_0060/stanza', 'sleekxmpp/plugins/xep_0060/stanza',
'sleekxmpp/plugins/xep_0066',
'sleekxmpp/plugins/xep_0085', 'sleekxmpp/plugins/xep_0085',
'sleekxmpp/plugins/xep_0086', 'sleekxmpp/plugins/xep_0086',
'sleekxmpp/plugins/xep_0092', 'sleekxmpp/plugins/xep_0092',
'sleekxmpp/plugins/xep_0128', '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',
'sleekxmpp/features/feature_mechanisms', 'sleekxmpp/features/feature_mechanisms',
'sleekxmpp/features/feature_mechanisms/stanza', 'sleekxmpp/features/feature_mechanisms/stanza',

View file

@ -6,6 +6,20 @@
See the file LICENSE for copying permission. See the file LICENSE for copying permission.
""" """
__all__ = ['xep_0004', 'xep_0009', 'xep_0012', 'xep_0030', 'xep_0033', __all__ = ['xep_0004', 'xep_0009', 'xep_0012', 'xep_0030', 'xep_0033',
'xep_0045', 'xep_0050', 'xep_0060', 'xep_0066', 'xep_0082', 'xep_0045', 'xep_0050', 'xep_0060', 'xep_0066', 'xep_0085',
'xep_0085', 'xep_0086', 'xep_0092', 'xep_0128', 'xep_0199', 'xep_0086', 'xep_0092', 'xep_0128', 'xep_0199', 'xep_0203',
'xep_0202', 'xep_0203', 'xep_0224', 'xep_0249', 'gmail_notify'] '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')

View file

@ -6,11 +6,18 @@
See the file LICENSE for copying permission. See the file LICENSE for copying permission.
""" """
import logging
import datetime as dt import datetime as dt
from dateutil import parser
from dateutil.tz import tzoffset, tzutc
from sleekxmpp.plugins.base import base_plugin 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 # To make it easier for stanzas without direct access to plugin objects

View file

@ -6,6 +6,23 @@
See the file LICENSE for copying permission. See the file LICENSE for copying permission.
""" """
from sleekxmpp.plugins.xep_0202 import stanza import logging
from sleekxmpp.plugins.xep_0202.stanza import EntityTime import sleekxmpp
from sleekxmpp.plugins.xep_0202.time import xep_0202
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")

View file

@ -6,12 +6,18 @@
See the file LICENSE for copying permission. See the file LICENSE for copying permission.
""" """
import logging
import datetime as dt import datetime as dt
from dateutil.tz import tzoffset, tzutc
from sleekxmpp.xmlstream import ElementBase from sleekxmpp.xmlstream import ElementBase
from sleekxmpp.plugins import xep_0082 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): class EntityTime(ElementBase):