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,10 +6,17 @@
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 sleekxmpp.plugins.base import base_plugin
try:
from dateutil import parser from dateutil import parser
from dateutil.tz import tzoffset, tzutc from dateutil.tz import tzoffset, tzutc
from sleekxmpp.plugins.base import base_plugin except e:
log = logging.getLogger(__name__)
log.warning("XEP-0082 plugin requires dateutil")
# ===================================================================== # =====================================================================

View file

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