summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--LICENSE90
-rw-r--r--README3
-rw-r--r--setup.py6
-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
7 files changed, 151 insertions, 10 deletions
diff --git a/LICENSE b/LICENSE
index fb9f977c..b981b0ad 100644
--- a/LICENSE
+++ b/LICENSE
@@ -17,3 +17,93 @@ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
+
+
+
+
+Licences of Bundled Third Pary Code
+-----------------------------------
+
+dateutil - Extensions to the standard python 2.3+ datetime module.
+
+Copyright (c) 2003-2011 - Gustavo Niemeyer <gustavo@niemeyer.net>
+
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ * Redistributions of source code must retain the above copyright notice,
+ this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+ * Neither the name of the copyright holder nor the names of its
+ contributors may be used to endorse or promote products derived from
+ this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+
+
+
+OrderedDict - A port of the Python 2.7+ OrderedDict to Python 2.6
+
+Copyright (c) 2009 Raymond Hettinger
+
+Permission is hereby granted, free of charge, to any person
+obtaining a copy of this software and associated documentation files
+(the "Software"), to deal in the Software without restriction,
+including without limitation the rights to use, copy, modify, merge,
+publish, distribute, sublicense, and/or sell copies of the Software,
+and to permit persons to whom the Software is furnished to do so,
+subject to the following conditions:
+
+ The above copyright notice and this permission notice shall be
+ included in all copies or substantial portions of the Software.
+
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+ OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+ HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+ WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+ OTHER DEALINGS IN THE SOFTWARE.
+
+
+
+
+SUELTA – A PURE-PYTHON SASL CLIENT LIBRARY
+
+This software is subject to "The MIT License"
+
+Copyright 2007-2010 David Alan Cridland
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
diff --git a/README b/README
index 8a85365c..aab5ae8c 100644
--- a/README
+++ b/README
@@ -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.
diff --git a/setup.py b/setup.py
index 42b7dfab..be9a0d32 100644
--- a/setup.py
+++ b/setup.py
@@ -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):