Hello community,

here is the log from the commit of package python-slumber for openSUSE:Factory 
checked in at 2015-05-18 22:25:38
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-slumber (Old)
 and      /work/SRC/openSUSE:Factory/.python-slumber.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "python-slumber"

Changes:
--------
--- /work/SRC/openSUSE:Factory/python-slumber/python-slumber.changes    
2013-09-16 16:35:35.000000000 +0200
+++ /work/SRC/openSUSE:Factory/.python-slumber.new/python-slumber.changes       
2015-05-18 22:25:39.000000000 +0200
@@ -1,0 +2,14 @@
+Wed May 13 10:51:10 UTC 2015 - benoit.mo...@gmx.fr
+
+- update to version 0.7.0:
+  * no changelog available
+- additional changes from version 0.6.2:
+  * Further Python 3 compatibility fixes, many thanks to
+    Alexander Shchepetilnikov (irqed)
+- additional changes from version 0.6.1:
+  * Remove simplejson dependency.
+  * Support range now Python 2.6 - Python 3.4
+- suggests python-PyYAML and python-simplejson
+  instead of requiring them
+
+-------------------------------------------------------------------

Old:
----
  slumber-0.6.0.tar.gz

New:
----
  slumber-0.7.0.tar.gz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ python-slumber.spec ++++++
--- /var/tmp/diff_new_pack.a6cyGr/_old  2015-05-18 22:25:40.000000000 +0200
+++ /var/tmp/diff_new_pack.a6cyGr/_new  2015-05-18 22:25:40.000000000 +0200
@@ -1,7 +1,7 @@
 #
 # spec file for package python-slumber
 #
-# Copyright (c) 2013 SUSE LINUX Products GmbH, Nuernberg, Germany.
+# Copyright (c) 2015 SUSE LINUX GmbH, Nuernberg, Germany.
 #
 # All modifications and additions to the file contributed by third parties
 # remain the property of their copyright owners, unless otherwise agreed
@@ -17,7 +17,7 @@
 
 
 Name:           python-slumber
-Version:        0.6.0
+Version:        0.7.0
 Release:        0
 Url:            http://slumber.in/
 Summary:        A library that makes consuming a REST API easier and more 
convenient
@@ -29,9 +29,9 @@
 BuildRequires:  python-setuptools
 #BuildRequires:  python-mock
 #BuildRequires:  python-requests
-Requires:       python-PyYAML
 Requires:       python-requests
-Requires:       python-simplejson
+Suggests:       python-PyYAML
+Suggests:       python-simplejson
 %if 0%{?suse_version} && 0%{?suse_version} <= 1110
 %{!?python_sitelib: %global python_sitelib %(python -c "from 
distutils.sysconfig import get_python_lib; print get_python_lib()")}
 %else

++++++ slumber-0.6.0.tar.gz -> slumber-0.7.0.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/slumber-0.6.0/CHANGELOG.rst 
new/slumber-0.7.0/CHANGELOG.rst
--- old/slumber-0.6.0/CHANGELOG.rst     2013-04-01 19:27:51.000000000 +0200
+++ new/slumber-0.7.0/CHANGELOG.rst     2015-02-27 10:53:09.000000000 +0100
@@ -3,6 +3,23 @@
 Changelog
 =========
 
+
+development version
+-------------------
+
+0.6.2
+-----
+
+* Further Python 3 compatibility fixes, many thanks to Alexander 
Shchepetilnikov (irqed)
+
+0.6.1
+-----
+
+* Remove ``simplejson`` dependency.
+
+* Support range now Python 2.6 - Python 3.4
+
+
 0.6.0
 -----
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/slumber-0.6.0/PKG-INFO new/slumber-0.7.0/PKG-INFO
--- old/slumber-0.6.0/PKG-INFO  2013-04-01 20:25:05.000000000 +0200
+++ new/slumber-0.7.0/PKG-INFO  2015-04-17 11:29:45.000000000 +0200
@@ -1,25 +1,25 @@
 Metadata-Version: 1.0
 Name: slumber
-Version: 0.6.0
+Version: 0.7.0
 Summary: A library that makes consuming a REST API easier and more convenient
-Home-page: http://slumber.in/
-Author: Donald Stufft
-Author-email: donald.stu...@gmail.com
+Home-page: http://github.com/samgiles/slumber
+Author: Samuel Giles
+Author-email: sam.e.gi...@gmail.com
 License: UNKNOWN
-Description: Slumber
-        =======
+Description: Slumber |build-status| |coverage-status| |docs|
+        ===============================================
         
-        Slumber is a python library that provides a convenient yet powerful 
object
-        orientated interface to ReSTful APIs. It acts as a wrapper around the
-        excellent requests_ library and abstracts away the handling of urls, 
serialization,
-        and processing requests.
+        Slumber is a Python library that provides a convenient yet powerful
+        object-oriented interface to ReSTful APIs. It acts as a wrapper around 
the
+        excellent requests_ library and abstracts away the handling of URLs, 
serialization,
+        and request processing.
         
         .. _requests: http://python-requests.org/
         
         Getting Help
         ============
         
-        I have an IRC channel (`#slumber on irc.freenode.net`_) to get help, 
bounce idea
+        Visit IRC channel (`#slumber on irc.freenode.net`_) to get help, 
bounce ideas
         or generally shoot the breeze.
         
         .. _#slumber on irc.freenode.net: irc://irc.freenode.net/slumber
@@ -31,9 +31,9 @@
         
             $ pip install slumber
         
-        2. Install Optional Requirements::
+        2. Install Optional Requirement::
         
-            pip install simplejson pyyaml
+            pip install pyyaml
         
         3. Use Slumber!
         
@@ -44,11 +44,17 @@
         
         * Python 2.6+
         * requests
-        * simplejson (If you desire the speedups for JSON serialization)
-        * pyyaml (If you are using the optional yaml serialization)
-        
-        .. _Pip: http://pip.openplans.org/
+        * pyyaml (If you are using the optional YAML serialization)
         
+        .. |build-status| image:: 
https://travis-ci.org/samgiles/slumber.svg?branch=master
+           :target: https://travis-ci.org/samgiles/slumber
+           :alt: Build status
+        .. |coverage-status| image:: 
https://img.shields.io/coveralls/samgiles/slumber.svg
+           :target: https://coveralls.io/r/samgiles/slumber
+           :alt: Test coverage percentage
+        .. |docs| image:: 
https://readthedocs.org/projects/slumber/badge/?version=latest
+           :target: http://slumber.readthedocs.org/
+           :alt: Documentation
         
         
         .. :changelog:
@@ -56,6 +62,23 @@
         Changelog
         =========
         
+        
+        development version
+        -------------------
+        
+        0.6.2
+        -----
+        
+        * Further Python 3 compatibility fixes, many thanks to Alexander 
Shchepetilnikov (irqed)
+        
+        0.6.1
+        -----
+        
+        * Remove ``simplejson`` dependency.
+        
+        * Support range now Python 2.6 - Python 3.4
+        
+        
         0.6.0
         -----
         
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/slumber-0.6.0/README.rst new/slumber-0.7.0/README.rst
--- old/slumber-0.6.0/README.rst        2013-04-01 19:27:51.000000000 +0200
+++ new/slumber-0.7.0/README.rst        2015-02-27 10:53:09.000000000 +0100
@@ -1,17 +1,17 @@
-Slumber
-=======
+Slumber |build-status| |coverage-status| |docs|
+===============================================
 
-Slumber is a python library that provides a convenient yet powerful object
-orientated interface to ReSTful APIs. It acts as a wrapper around the
-excellent requests_ library and abstracts away the handling of urls, 
serialization,
-and processing requests.
+Slumber is a Python library that provides a convenient yet powerful
+object-oriented interface to ReSTful APIs. It acts as a wrapper around the
+excellent requests_ library and abstracts away the handling of URLs, 
serialization,
+and request processing.
 
 .. _requests: http://python-requests.org/
 
 Getting Help
 ============
 
-I have an IRC channel (`#slumber on irc.freenode.net`_) to get help, bounce 
idea
+Visit IRC channel (`#slumber on irc.freenode.net`_) to get help, bounce ideas
 or generally shoot the breeze.
 
 .. _#slumber on irc.freenode.net: irc://irc.freenode.net/slumber
@@ -23,9 +23,9 @@
 
     $ pip install slumber
 
-2. Install Optional Requirements::
+2. Install Optional Requirement::
 
-    pip install simplejson pyyaml
+    pip install pyyaml
 
 3. Use Slumber!
 
@@ -36,8 +36,14 @@
 
 * Python 2.6+
 * requests
-* simplejson (If you desire the speedups for JSON serialization)
-* pyyaml (If you are using the optional yaml serialization)
-
-.. _Pip: http://pip.openplans.org/
+* pyyaml (If you are using the optional YAML serialization)
 
+.. |build-status| image:: 
https://travis-ci.org/samgiles/slumber.svg?branch=master
+   :target: https://travis-ci.org/samgiles/slumber
+   :alt: Build status
+.. |coverage-status| image:: 
https://img.shields.io/coveralls/samgiles/slumber.svg
+   :target: https://coveralls.io/r/samgiles/slumber
+   :alt: Test coverage percentage
+.. |docs| image:: 
https://readthedocs.org/projects/slumber/badge/?version=latest
+   :target: http://slumber.readthedocs.org/
+   :alt: Documentation
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/slumber-0.6.0/docs/index.rst 
new/slumber-0.7.0/docs/index.rst
--- old/slumber-0.6.0/docs/index.rst    2013-04-01 19:27:51.000000000 +0200
+++ new/slumber-0.7.0/docs/index.rst    2015-02-27 10:53:09.000000000 +0100
@@ -31,9 +31,9 @@
 
     $ pip install slumber
 
-2. Install Optional Requirements::
+2. Install Optional Requirement::
 
-    pip install simplejson pyyaml
+    pip install pyyaml
 
 3. Use Slumber!
 
@@ -42,9 +42,8 @@
 
 Slumber requires the following modules:
 
-* Python 2.5+
+* Python 2.6+
 * requests
-* simplejson (If using Python 2.5, or you desire the speedups for JSON 
serialization)
 * pyyaml (If you are using the optional yaml serialization)
 
 .. _Pip: http://pip.openplans.org/
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/slumber-0.6.0/docs/options.rst 
new/slumber-0.7.0/docs/options.rst
--- old/slumber-0.6.0/docs/options.rst  2013-04-01 19:27:51.000000000 +0200
+++ new/slumber-0.7.0/docs/options.rst  2015-02-27 10:53:09.000000000 +0100
@@ -25,6 +25,21 @@
 
 And slumber will attempt to use those credentials with each request.
 
+With Tastypie ApikeyAuthentication you can use::
+
+    from requests.auth import AuthBase
+    
+    class TastypieApikeyAuth(AuthBase):
+        def __init__(self, username, apikey):
+            self.username = username
+            self.apikey = apikey
+
+        def __call__(self, r):
+            r.headers['Authorization'] = "ApiKey 
{0}:{1}".format(self.username, self.apikey)
+            return r
+
+    api = slumber.API("http://path/to/my/api/";, 
auth=TastypieApikeyAuth("myuser", "mypass"))
+
 To Use Digest or OAuth please consult the requests documentation. The auth
 argument is passed directly to requests and thus works exactly the same way
 and accepts exactly the same arguments.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/slumber-0.6.0/setup.py new/slumber-0.7.0/setup.py
--- old/slumber-0.6.0/setup.py  2013-04-01 19:27:51.000000000 +0200
+++ new/slumber-0.7.0/setup.py  2015-04-17 11:29:16.000000000 +0200
@@ -1,23 +1,40 @@
 import os
+import sys
 from setuptools import setup
 
 install_requires = ["requests"]
+tests_require = ["mock", "unittest2"]
 
 base_dir = os.path.dirname(os.path.abspath(__file__))
 
+version = "0.7.0"
+
+if sys.argv[-1] == 'publish':
+    os.system("git tag -a %s -m 'v%s'" % (version, version))
+    os.system("python setup.py sdist bdist_wheel upload -r pypi")
+    print("Published version %s, do `git push --tags` to push new tag to 
remote" % version)
+    sys.exit()
+
+if sys.argv[-1] == 'syncci':
+    os.system("panci --to=tox .travis.yml > tox.ini");
+    sys.exit();
+
 setup(
     name = "slumber",
-    version = "0.6.0",
+    version = version,
     description = "A library that makes consuming a REST API easier and more 
convenient",
     long_description="\n\n".join([
         open(os.path.join(base_dir, "README.rst"), "r").read(),
         open(os.path.join(base_dir, "CHANGELOG.rst"), "r").read()
     ]),
-    url = "http://slumber.in/";,
+    url = "http://github.com/samgiles/slumber";,
     author = "Donald Stufft",
     author_email = "donald.stu...@gmail.com",
+    maintainer = "Samuel Giles",
+    maintainer_email = "sam.e.gi...@gmail.com",
     packages = ["slumber"],
     zip_safe = False,
     install_requires = install_requires,
+    tests_require = tests_require,
     test_suite = "tests.get_tests",
 )
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/slumber-0.6.0/slumber/__init__.py 
new/slumber-0.7.0/slumber/__init__.py
--- old/slumber-0.6.0/slumber/__init__.py       2013-04-01 19:27:51.000000000 
+0200
+++ new/slumber-0.7.0/slumber/__init__.py       2015-04-17 10:58:57.000000000 
+0200
@@ -1,45 +1,42 @@
-import posixpath
-import urlparse
-
 import requests
 
-from slumber import exceptions
-from slumber.serialize import Serializer
+try:
+    from urllib.parse import urlparse, urlsplit, urlunsplit
+except ImportError:
+    from urlparse import urlparse, urlsplit, urlunsplit
+
+from . import exceptions
+from .serialize import Serializer
+from .utils import url_join, iterator, copy_kwargs
 
 __all__ = ["Resource", "API"]
 
 
-def url_join(base, *args):
-    """
-    Helper function to join an arbitrary number of url segments together.
-    """
-    scheme, netloc, path, query, fragment = urlparse.urlsplit(base)
-    path = path if len(path) else "/"
-    path = posixpath.join(path, *[('%s' % x) for x in args])
-    return urlparse.urlunsplit([scheme, netloc, path, query, fragment])
-
-
 class ResourceAttributesMixin(object):
     """
-    A Mixin that makes it so that accessing an undefined attribute on a class
-    results in returning a Resource Instance. This Instance can then be used
-    to make calls to the a Resource.
+    A Mixin that allows access to an undefined attribute on a class.
+    Instead of raising an attribute error, the undefined attribute will
+    return a Resource Instance which can be used to make calls to the
+    resource identified by the attribute.
+
+    The type of the resource returned can be overridden by adding a
+    resource_class attribute.
 
     It assumes that a Meta class exists at self._meta with all the required
     attributes.
     """
 
     def __getattr__(self, item):
+        # Don't allow access to 'private' by convention attributes.
+        # @@@: How would this work with resources names that begin with
+        # underscores?
         if item.startswith("_"):
             raise AttributeError(item)
 
-        kwargs = {}
-        for key, value in self._store.iteritems():
-            kwargs[key] = value
-
+        kwargs = copy_kwargs(self._store)
         kwargs.update({"base_url": url_join(self._store["base_url"], item)})
 
-        return Resource(**kwargs)
+        return self._get_resource(**kwargs)
 
 
 class Resource(ResourceAttributesMixin, object):
@@ -68,9 +65,7 @@
         if id is None and format is None and url_override is None:
             return self
 
-        kwargs = {}
-        for key, value in self._store.iteritems():
-            kwargs[key] = value
+        kwargs = copy_kwargs(self._store)
 
         if id is not None:
             kwargs["base_url"] = url_join(self._store["base_url"], id)
@@ -86,26 +81,24 @@
 
         kwargs["session"] = self._store["session"]
 
-        return self.__class__(**kwargs)
+        return self._get_resource(**kwargs)
 
     def _request(self, method, data=None, files=None, params=None):
-        s = self._store["serializer"]
-        url = self._store["base_url"]
-
-        if self._store["append_slash"] and not url.endswith("/"):
-            url = url + "/"
+        serializer = self._store["serializer"]
+        url = self.url()
 
-        headers = {"accept": s.get_content_type()}
+        headers = {"accept": serializer.get_content_type()}
 
         if not files:
-            headers["content-type"] = s.get_content_type()
+            headers["content-type"] = serializer.get_content_type()
             if data is not None:
-                data = s.dumps(data)
+                data = serializer.dumps(data)
 
         resp = self._store["session"].request(method, url, data=data, 
params=params, files=files, headers=headers)
 
         if 400 <= resp.status_code <= 499:
-            raise exceptions.HttpClientError("Client Error %s: %s" % 
(resp.status_code, url), response=resp, content=resp.content)
+            exception_class = exceptions.HttpNotFoundError if resp.status_code 
== 404 else exceptions.HttpClientError
+            raise exception_class("Client Error %s: %s" % (resp.status_code, 
url), response=resp, content=resp.content)
         elif 500 <= resp.status_code <= 599:
             raise exceptions.HttpServerError("Server Error %s: %s" % 
(resp.status_code, url), response=resp, content=resp.content)
 
@@ -116,12 +109,14 @@
     def _handle_redirect(self, resp, **kwargs):
         # @@@ Hacky, see description in __call__
         resource_obj = self(url_override=resp.headers["location"])
-        return resource_obj.get(params=kwargs)
+        return resource_obj.get(**kwargs)
 
     def _try_to_serialize_response(self, resp):
         s = self._store["serializer"]
+        if resp.status_code in [204, 205]:
+            return
 
-        if resp.headers.get("content-type", None):
+        if resp.headers.get("content-type", None) and resp.content:
             content_type = 
resp.headers.get("content-type").split(";")[0].strip()
 
             try:
@@ -129,44 +124,55 @@
             except exceptions.SerializerNotAvailable:
                 return resp.content
 
+            if type(resp.content) == bytes:
+                try:
+                    return stype.loads(resp.content.decode())
+                except:
+                    return resp.content
             return stype.loads(resp.content)
         else:
             return resp.content
 
-    def get(self, **kwargs):
-        resp = self._request("GET", params=kwargs)
+    def _process_response(self, resp):
+        # TODO: something to expose headers and status
+
         if 200 <= resp.status_code <= 299:
             return self._try_to_serialize_response(resp)
         else:
             return  # @@@ We should probably do some sort of error here? (Is 
this even possible?)
 
-    def post(self, data=None, files=None, **kwargs):
-        s = self._store["serializer"]
+    def url(self):
+        url = self._store["base_url"]
+
+        if self._store["append_slash"] and not url.endswith("/"):
+            url = url + "/"
+
+        return url
 
+    # TODO: refactor these methods - lots of commonality
+    def get(self, **kwargs):
+        resp = self._request("GET", params=kwargs)
+        return self._process_response(resp)
+
+    def options(self, **kwargs):
+        resp = self._request("OPTIONS", params=kwargs)
+        return self._process_response(resp)
+
+    def head(self, **kwargs):
+        resp = self._request("HEAD", params=kwargs)
+        return self._process_response(resp)
+
+    def post(self, data=None, files=None, **kwargs):
         resp = self._request("POST", data=data, files=files, params=kwargs)
-        if 200 <= resp.status_code <= 299:
-            return self._try_to_serialize_response(resp)
-        else:
-            # @@@ Need to be Some sort of Error Here or Something
-            return
+        return self._process_response(resp)
 
     def patch(self, data=None, files=None, **kwargs):
-        s = self._store["serializer"]
-
         resp = self._request("PATCH", data=data, files=files, params=kwargs)
-        if 200 <= resp.status_code <= 299:
-            return self._try_to_serialize_response(resp)
-        else:
-            # @@@ Need to be Some sort of Error Here or Something
-            return
+        return self._process_response(resp)
 
     def put(self, data=None, files=None, **kwargs):
         resp = self._request("PUT", data=data, files=files, params=kwargs)
-
-        if 200 <= resp.status_code <= 299:
-            return self._try_to_serialize_response(resp)
-        else:
-            return False
+        return self._process_response(resp)
 
     def delete(self, **kwargs):
         resp = self._request("DELETE", params=kwargs)
@@ -178,15 +184,22 @@
         else:
             return False
 
+    def _get_resource(self, **kwargs):
+        return self.__class__(**kwargs)
+
 
 class API(ResourceAttributesMixin, object):
 
+    resource_class = Resource
+
     def __init__(self, base_url=None, auth=None, format=None, 
append_slash=True, session=None, serializer=None):
         if serializer is None:
             serializer = Serializer(default=format)
 
         if session is None:
             session = requests.session()
+
+        if auth is not None:
             session.auth = auth
 
         self._store = {
@@ -200,3 +213,6 @@
         # Do some Checks for Required Values
         if self._store.get("base_url") is None:
             raise exceptions.ImproperlyConfigured("base_url is required")
+
+    def _get_resource(self, **kwargs):
+        return self.resource_class(**kwargs)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/slumber-0.6.0/slumber/exceptions.py 
new/slumber-0.7.0/slumber/exceptions.py
--- old/slumber-0.6.0/slumber/exceptions.py     2013-04-01 19:27:51.000000000 
+0200
+++ new/slumber-0.7.0/slumber/exceptions.py     2015-04-17 10:54:38.000000000 
+0200
@@ -1,3 +1,6 @@
+from .utils import url_join, iterator
+
+
 class SlumberBaseException(Exception):
     """
     All Slumber exceptions inherit from this exception.
@@ -10,7 +13,7 @@
     """
 
     def __init__(self, *args, **kwargs):
-        for key, value in kwargs.iteritems():
+        for key, value in iterator(kwargs):
             setattr(self, key, value)
         super(SlumberHttpBaseException, self).__init__(*args)
 
@@ -21,6 +24,12 @@
     """
 
 
+class HttpNotFoundError(HttpClientError):
+    """
+    Called when the server sends a 404 error.
+    """
+
+
 class HttpServerError(SlumberHttpBaseException):
     """
     Called when the server tells us there was a server error (5xx).
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/slumber-0.6.0/slumber/serialize.py 
new/slumber-0.7.0/slumber/serialize.py
--- old/slumber-0.6.0/slumber/serialize.py      2013-04-01 19:27:51.000000000 
+0200
+++ new/slumber-0.7.0/slumber/serialize.py      2015-04-17 10:54:38.000000000 
+0200
@@ -6,12 +6,9 @@
 }
 
 try:
-    import simplejson as json
+    import json
 except ImportError:
-    try:
-        import json
-    except ImportError:
-        _SERIALIZERS["json"] = False
+    _SERIALIZERS["json"] = False
 
 try:
     import yaml
@@ -48,7 +45,7 @@
     key = "json"
 
     def loads(self, data):
-        return json.loads(data)
+        return json.loads(str(data))
 
     def dumps(self, data):
         return json.dumps(data)
@@ -60,7 +57,7 @@
     key = "yaml"
 
     def loads(self, data):
-        return yaml.safe_load(data)
+        return yaml.safe_load(str(data))
 
     def dumps(self, data):
         return yaml.dump(data)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/slumber-0.6.0/slumber/utils.py 
new/slumber-0.7.0/slumber/utils.py
--- old/slumber-0.6.0/slumber/utils.py  1970-01-01 01:00:00.000000000 +0100
+++ new/slumber-0.7.0/slumber/utils.py  2015-04-17 10:54:38.000000000 +0200
@@ -0,0 +1,32 @@
+import posixpath
+
+try:
+    from urllib.parse import urlsplit, urlunsplit
+except ImportError:
+    from urlparse import urlsplit, urlunsplit
+
+
+def url_join(base, *args):
+    """
+    Helper function to join an arbitrary number of url segments together.
+    """
+    scheme, netloc, path, query, fragment = urlsplit(base)
+    path = path if len(path) else "/"
+    path = posixpath.join(path, *[('%s' % x) for x in args])
+    return urlunsplit([scheme, netloc, path, query, fragment])
+
+def copy_kwargs(dictionary):
+       kwargs = {}
+       for key, value in iterator(dictionary):
+               kwargs[key] = value
+
+       return kwargs
+
+def iterator(d):
+    """
+    Helper to get and a proper dict iterator with Py2k and Py3k
+    """
+    try:
+        return d.iteritems()
+    except AttributeError:
+        return d.items()
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/slumber-0.6.0/slumber.egg-info/PKG-INFO 
new/slumber-0.7.0/slumber.egg-info/PKG-INFO
--- old/slumber-0.6.0/slumber.egg-info/PKG-INFO 2013-04-01 20:25:05.000000000 
+0200
+++ new/slumber-0.7.0/slumber.egg-info/PKG-INFO 2015-04-17 11:29:41.000000000 
+0200
@@ -1,25 +1,25 @@
 Metadata-Version: 1.0
 Name: slumber
-Version: 0.6.0
+Version: 0.7.0
 Summary: A library that makes consuming a REST API easier and more convenient
-Home-page: http://slumber.in/
-Author: Donald Stufft
-Author-email: donald.stu...@gmail.com
+Home-page: http://github.com/samgiles/slumber
+Author: Samuel Giles
+Author-email: sam.e.gi...@gmail.com
 License: UNKNOWN
-Description: Slumber
-        =======
+Description: Slumber |build-status| |coverage-status| |docs|
+        ===============================================
         
-        Slumber is a python library that provides a convenient yet powerful 
object
-        orientated interface to ReSTful APIs. It acts as a wrapper around the
-        excellent requests_ library and abstracts away the handling of urls, 
serialization,
-        and processing requests.
+        Slumber is a Python library that provides a convenient yet powerful
+        object-oriented interface to ReSTful APIs. It acts as a wrapper around 
the
+        excellent requests_ library and abstracts away the handling of URLs, 
serialization,
+        and request processing.
         
         .. _requests: http://python-requests.org/
         
         Getting Help
         ============
         
-        I have an IRC channel (`#slumber on irc.freenode.net`_) to get help, 
bounce idea
+        Visit IRC channel (`#slumber on irc.freenode.net`_) to get help, 
bounce ideas
         or generally shoot the breeze.
         
         .. _#slumber on irc.freenode.net: irc://irc.freenode.net/slumber
@@ -31,9 +31,9 @@
         
             $ pip install slumber
         
-        2. Install Optional Requirements::
+        2. Install Optional Requirement::
         
-            pip install simplejson pyyaml
+            pip install pyyaml
         
         3. Use Slumber!
         
@@ -44,11 +44,17 @@
         
         * Python 2.6+
         * requests
-        * simplejson (If you desire the speedups for JSON serialization)
-        * pyyaml (If you are using the optional yaml serialization)
-        
-        .. _Pip: http://pip.openplans.org/
+        * pyyaml (If you are using the optional YAML serialization)
         
+        .. |build-status| image:: 
https://travis-ci.org/samgiles/slumber.svg?branch=master
+           :target: https://travis-ci.org/samgiles/slumber
+           :alt: Build status
+        .. |coverage-status| image:: 
https://img.shields.io/coveralls/samgiles/slumber.svg
+           :target: https://coveralls.io/r/samgiles/slumber
+           :alt: Test coverage percentage
+        .. |docs| image:: 
https://readthedocs.org/projects/slumber/badge/?version=latest
+           :target: http://slumber.readthedocs.org/
+           :alt: Documentation
         
         
         .. :changelog:
@@ -56,6 +62,23 @@
         Changelog
         =========
         
+        
+        development version
+        -------------------
+        
+        0.6.2
+        -----
+        
+        * Further Python 3 compatibility fixes, many thanks to Alexander 
Shchepetilnikov (irqed)
+        
+        0.6.1
+        -----
+        
+        * Remove ``simplejson`` dependency.
+        
+        * Support range now Python 2.6 - Python 3.4
+        
+        
         0.6.0
         -----
         
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/slumber-0.6.0/slumber.egg-info/SOURCES.txt 
new/slumber-0.7.0/slumber.egg-info/SOURCES.txt
--- old/slumber-0.6.0/slumber.egg-info/SOURCES.txt      2013-04-01 
20:25:05.000000000 +0200
+++ new/slumber-0.7.0/slumber.egg-info/SOURCES.txt      2015-04-17 
11:29:44.000000000 +0200
@@ -10,6 +10,7 @@
 slumber/__init__.py
 slumber/exceptions.py
 slumber/serialize.py
+slumber/utils.py
 slumber.egg-info/PKG-INFO
 slumber.egg-info/SOURCES.txt
 slumber.egg-info/dependency_links.txt


Reply via email to