deezer-python 0.9.0__tar.gz → 1.1.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (41) hide show
  1. {deezer-python-0.9.0 → Users/bruno/.virtualenvs/deezer-python/lib/python3.6/site-packages}/deezer/__init__.py +2 -2
  2. Users/bruno/.virtualenvs/deezer-python/lib/python3.6/site-packages/deezer/__pycache__/__init__.cpython-36.pyc +0 -0
  3. Users/bruno/.virtualenvs/deezer-python/lib/python3.6/site-packages/deezer/__pycache__/asynchronous.cpython-36.pyc +0 -0
  4. Users/bruno/.virtualenvs/deezer-python/lib/python3.6/site-packages/deezer/__pycache__/client.cpython-36.pyc +0 -0
  5. Users/bruno/.virtualenvs/deezer-python/lib/python3.6/site-packages/deezer/__pycache__/resources.cpython-36.pyc +0 -0
  6. Users/bruno/.virtualenvs/deezer-python/lib/python3.6/site-packages/deezer/__pycache__/utils.cpython-36.pyc +0 -0
  7. deezer-python-0.9.0/deezer/contrib/tornado.py → Users/bruno/.virtualenvs/deezer-python/lib/python3.6/site-packages/deezer/asynchronous.py +8 -11
  8. {deezer-python-0.9.0 → Users/bruno/.virtualenvs/deezer-python/lib/python3.6/site-packages}/deezer/client.py +26 -20
  9. {deezer-python-0.9.0 → Users/bruno/.virtualenvs/deezer-python/lib/python3.6/site-packages}/deezer/resources.py +3 -4
  10. Users/bruno/.virtualenvs/deezer-python/lib/python3.6/site-packages/deezer/utils.py +20 -0
  11. {deezer-python-0.9.0 → Users/bruno/.virtualenvs/deezer-python/lib/python3.6/site-packages/deezer_python-1.1.0-py3.6.egg-info}/PKG-INFO +22 -8
  12. {deezer-python-0.9.0/deezer_python.egg-info → Users/bruno/.virtualenvs/deezer-python/lib/python3.6/site-packages/deezer_python-1.1.0-py3.6.egg-info}/SOURCES.txt +2 -0
  13. {deezer-python-0.9.0/deezer_python.egg-info → Users/bruno/.virtualenvs/deezer-python/lib/python3.6/site-packages/deezer_python-1.1.0-py3.6.egg-info}/requires.txt +0 -1
  14. deezer-python-0.9.0/.coveragerc +0 -17
  15. deezer-python-0.9.0/AUTHORS.rst +0 -20
  16. deezer-python-0.9.0/CONTRIBUTING.rst +0 -127
  17. deezer-python-0.9.0/HISTORY.rst +0 -95
  18. deezer-python-0.9.0/LICENSE.txt +0 -19
  19. deezer-python-0.9.0/MANIFEST.in +0 -10
  20. deezer-python-0.9.0/README.rst +0 -91
  21. deezer-python-0.9.0/deezer/contrib/__init__.py +0 -0
  22. deezer-python-0.9.0/deezer_python.egg-info/PKG-INFO +0 -235
  23. deezer-python-0.9.0/docs/Makefile +0 -177
  24. deezer-python-0.9.0/docs/make.bat +0 -242
  25. deezer-python-0.9.0/docs/source/_static/.placeholder +0 -0
  26. deezer-python-0.9.0/docs/source/api_reference/client.rst +0 -5
  27. deezer-python-0.9.0/docs/source/api_reference/contrib/tornado.rst +0 -5
  28. deezer-python-0.9.0/docs/source/api_reference/resources.rst +0 -5
  29. deezer-python-0.9.0/docs/source/api_reference/toc.rst +0 -8
  30. deezer-python-0.9.0/docs/source/authors.rst +0 -1
  31. deezer-python-0.9.0/docs/source/changelog.rst +0 -1
  32. deezer-python-0.9.0/docs/source/conf.py +0 -267
  33. deezer-python-0.9.0/docs/source/contributing.rst +0 -1
  34. deezer-python-0.9.0/docs/source/index.rst +0 -17
  35. deezer-python-0.9.0/docs/source/license.rst +0 -4
  36. deezer-python-0.9.0/requirements-test.txt +0 -8
  37. deezer-python-0.9.0/requirements.txt +0 -2
  38. deezer-python-0.9.0/setup.cfg +0 -43
  39. deezer-python-0.9.0/setup.py +0 -48
  40. {deezer-python-0.9.0/deezer_python.egg-info → Users/bruno/.virtualenvs/deezer-python/lib/python3.6/site-packages/deezer_python-1.1.0-py3.6.egg-info}/dependency_links.txt +0 -0
  41. {deezer-python-0.9.0/deezer_python.egg-info → Users/bruno/.virtualenvs/deezer-python/lib/python3.6/site-packages/deezer_python-1.1.0-py3.6.egg-info}/top_level.txt +0 -0
@@ -9,7 +9,7 @@ from deezer.resources import Album, Resource, Artist, Playlist
9
9
  from deezer.resources import Genre, Track, User, Comment, Radio
10
10
 
11
11
 
12
- __version__ = "0.9.0"
12
+ __version__ = "1.1.0"
13
13
  __all__ = [
14
14
  "Client",
15
15
  "Resource",
@@ -23,4 +23,4 @@ __all__ = [
23
23
  "Radio",
24
24
  ]
25
25
 
26
- USER_AGENT = "Deezer Python API Wrapper v{0}".format(__version__)
26
+ USER_AGENT = "Deezer Python API Wrapper v{}".format(__version__)
@@ -2,12 +2,10 @@
2
2
  Implements an async tornado client class to query the
3
3
  `Deezer API <http://developers.deezer.com/api>`_
4
4
  """
5
- from __future__ import absolute_import, unicode_literals
6
-
7
5
  import json
8
6
  import logging
9
7
 
10
- from tornado.gen import Return, coroutine
8
+ from tornado.gen import coroutine, Return
11
9
  from tornado.httpclient import AsyncHTTPClient
12
10
 
13
11
  from deezer.client import Client
@@ -15,13 +13,13 @@ from deezer.client import Client
15
13
 
16
14
  class AsyncClient(Client):
17
15
  """
18
- An async client to retrieve some basic infos about Deezer resources.
16
+ An async client to retrieve some basic infos about Deezer resourses.
19
17
 
20
18
  Create a client instance with the provided options. Options should
21
19
  be passed in to the constructor as kwargs.
22
20
 
23
- >>> from deezer.contrib.tornado import AsyncClient
24
- >>> client = AsyncClient(app_id='foo', app_secret='bar')
21
+ >>> import deezer
22
+ >>> client = deezer.AsyncClient(app_id='foo', app_secret='bar')
25
23
 
26
24
  This client provides several method to retrieve the content of most
27
25
  sort of Deezer objects, based on their json structure.
@@ -29,13 +27,12 @@ class AsyncClient(Client):
29
27
 
30
28
  def __init__(self, *args, **kwargs):
31
29
  super(AsyncClient, self).__init__(*args, **kwargs)
32
- max_clients = kwargs.get("max_clients", 2)
30
+ max_clients = kwargs.get('max_clients', 2)
33
31
  self._async_client = AsyncHTTPClient(max_clients=max_clients)
34
32
 
35
33
  @coroutine
36
- def get_object(
37
- self, object_t, object_id=None, relation=None, parent=None, **kwargs
38
- ):
34
+ def get_object(self, object_t, object_id=None, relation=None, parent=None,
35
+ **kwargs):
39
36
  """
40
37
  Actually query the Deezer API to retrieve the object
41
38
 
@@ -45,7 +42,7 @@ class AsyncClient(Client):
45
42
  url = self.object_url(object_t, object_id, relation, **kwargs)
46
43
  logging.debug(url)
47
44
  response = yield self._async_client.fetch(url)
48
- resp_str = response.body.decode("utf-8")
45
+ resp_str = response.body.decode('utf-8')
49
46
  jsn = json.loads(resp_str)
50
47
  result = self._process_json(jsn, parent)
51
48
  raise Return(result)
@@ -1,21 +1,17 @@
1
- # -*- coding: utf-8
2
1
  """
3
2
  Implements a client class to query the
4
3
  `Deezer API <http://developers.deezer.com/api>`_
5
4
  """
6
-
7
- from __future__ import unicode_literals, absolute_import
8
-
9
5
  import requests
10
- from six import text_type, iteritems
11
- from six.moves.urllib.parse import urlencode
6
+ from urllib.parse import urlencode
12
7
 
8
+ from deezer.utils import SortedDict
13
9
  from deezer.resources import Album, Artist, Comment, Genre
14
10
  from deezer.resources import Chart, Resource
15
11
  from deezer.resources import Playlist, Radio, Track, User
16
12
 
17
13
 
18
- class Client(object):
14
+ class Client:
19
15
  """
20
16
  A client to retrieve some basic infos about Deezer resourses.
21
17
 
@@ -48,11 +44,16 @@ class Client(object):
48
44
  }
49
45
 
50
46
  def __init__(self, **kwargs):
51
- super(Client, self).__init__()
47
+ super().__init__()
52
48
 
53
49
  self.use_ssl = kwargs.get("use_ssl", self.use_ssl)
54
50
  self.host = kwargs.get("host", self.host)
55
51
  self.session = requests.Session()
52
+
53
+ # Do not compress the response: to be readable in tests (cassettes)
54
+ if kwargs.get("do_not_compress_reponse"):
55
+ self.session.headers.update({"Accept-Encoding": "identity"})
56
+
56
57
  self.options = kwargs
57
58
  self._authorize_url = None
58
59
 
@@ -95,7 +96,7 @@ class Client(object):
95
96
  """Build the url with the appended request if provided."""
96
97
  if request.startswith("/"):
97
98
  request = request[1:]
98
- return "{0}://{1}/{2}".format(self.scheme, self.host, request)
99
+ return "{}://{}/{}".format(self.scheme, self.host, request)
99
100
 
100
101
  def object_url(self, object_t, object_id=None, relation=None, **kwargs):
101
102
  """
@@ -105,21 +106,21 @@ class Client(object):
105
106
  :raises TypeError: if the object type is invalid
106
107
  """
107
108
  if object_t not in self.objects_types:
108
- raise TypeError("{0} is not a valid type".format(object_t))
109
+ raise TypeError("{} is not a valid type".format(object_t))
109
110
  request_items = (
110
- text_type(item)
111
- for item in [object_t, object_id, relation]
112
- if item is not None
111
+ str(item) for item in [object_t, object_id, relation] if item is not None
113
112
  )
114
113
  request = "/".join(request_items)
115
114
  base_url = self.url(request)
116
115
  if self.access_token is not None:
117
- kwargs["access_token"] = text_type(self.access_token)
116
+ kwargs["access_token"] = str(self.access_token)
118
117
  if kwargs:
119
- for key, value in iteritems(kwargs):
118
+ for key, value in kwargs.items():
120
119
  if not isinstance(value, str):
121
- kwargs[key] = text_type(value)
122
- result = "{0}?{1}".format(base_url, urlencode(kwargs))
120
+ kwargs[key] = str(value)
121
+ # kwargs are sorted (for consistent tests between Python < 3.7 and >= 3.7)
122
+ sorted_kwargs = SortedDict.from_dict(kwargs)
123
+ result = "{}?{}".format(base_url, urlencode(sorted_kwargs))
123
124
  else:
124
125
  result = base_url
125
126
  return result
@@ -238,7 +239,9 @@ class Client(object):
238
239
 
239
240
  :returns: a list of :class:`~deezer.resources.Resource` objects.
240
241
  """
241
- return self.get_object("search", relation=relation, q=query, **kwargs)
242
+ return self.get_object(
243
+ "search", relation=relation, q=query, index=index, limit=limit, **kwargs
244
+ )
242
245
 
243
246
  def advanced_search(self, terms, relation=None, index=0, limit=25, **kwargs):
244
247
  """
@@ -254,5 +257,8 @@ class Client(object):
254
257
  ... relation="track")
255
258
  """
256
259
  assert isinstance(terms, dict), "terms must be a dict"
257
- query = " ".join(['{0}:"{1}"'.format(k, v) for (k, v) in terms.items()])
258
- return self.get_object("search", relation=relation, q=query, **kwargs)
260
+ # terms are sorted (for consistent tests between Python < 3.7 and >= 3.7)
261
+ query = " ".join(sorted(['{}:"{}"'.format(k, v) for (k, v) in terms.items()]))
262
+ return self.get_object(
263
+ "search", relation=relation, q=query, index=index, limit=limit, **kwargs
264
+ )
@@ -2,10 +2,9 @@
2
2
  Module to implement the various types of resources that
3
3
  can be found in the API.
4
4
  """
5
- from six import text_type
6
5
 
7
6
 
8
- class Resource(object):
7
+ class Resource:
9
8
  """
10
9
  Base class for any resource.
11
10
 
@@ -23,8 +22,8 @@ class Resource(object):
23
22
  def __repr__(self):
24
23
  name = getattr(self, "name", getattr(self, "title", None))
25
24
  if name is not None:
26
- return "<{0}: {1}>".format(self.__class__.__name__, text_type(name))
27
- return super(Resource, self).__repr__()
25
+ return "<{}: {}>".format(self.__class__.__name__, str(name))
26
+ return super().__repr__()
28
27
 
29
28
  def asdict(self):
30
29
  """
@@ -0,0 +1,20 @@
1
+ """Utils."""
2
+
3
+ from collections import OrderedDict
4
+
5
+
6
+ class SortedDict(OrderedDict):
7
+ """Sorted ``dict``.
8
+
9
+ This class is present to order query string and keep the request call always the
10
+ same way. This is necessary to have reproductible tests with ``vcr.py``.
11
+
12
+ ``dict`` ordering is deterministic before 3.6 and is not guaranteed in Python < 3.7
13
+ """
14
+
15
+ @classmethod
16
+ def from_dict(cls, dct):
17
+ odict = cls()
18
+ for key in sorted(dct.keys()):
19
+ odict[key] = dct[key]
20
+ return odict
@@ -1,12 +1,12 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: deezer-python
3
- Version: 0.9.0
3
+ Version: 1.1.0
4
4
  Summary: A friendly wrapper library for the Deezer API
5
5
  Home-page: https://github.com/browniebroke/deezer-python
6
6
  Author: Bruno Alla
7
7
  Author-email: alla.brunoo@gmail.com
8
8
  License: MIT
9
- Download-URL: https://github.com/browniebroke/deezer-python/tarball/0.9.0
9
+ Download-URL: https://github.com/browniebroke/deezer-python/tarball/1.1.0
10
10
  Description: Deezer Python Client
11
11
  ====================
12
12
 
@@ -38,7 +38,7 @@ Description: Deezer Python Client
38
38
  >>> client.get_album(12).title
39
39
  'Monkey Business'
40
40
 
41
- See the whole API reference on the `Sphinx`_ generated `documentation`_.
41
+ The detailed `API reference`_ is available in the `documentation`_ on the RTD.
42
42
 
43
43
  Asynchronous client
44
44
  ```````````````````
@@ -95,7 +95,7 @@ Description: Deezer Python Client
95
95
  .. |pyversions| image:: https://img.shields.io/pypi/pyversions/deezer-python.svg?style=flat-square
96
96
  .. |license| image:: https://img.shields.io/pypi/l/deezer-python.svg?style=flat-square
97
97
  .. _Deezer API: http://developers.deezer.com/api
98
- .. _Sphinx: http://sphinx-doc.org/
98
+ .. _API reference: https://deezer-python.readthedocs.io/api_reference/toc.html
99
99
  .. _documentation: http://deezer-python.readthedocs.io/
100
100
  .. _Python Social Auth: https://github.com/python-social-auth
101
101
 
@@ -105,6 +105,18 @@ Description: Deezer Python Client
105
105
  History
106
106
  =======
107
107
 
108
+ 1.1.0 (2019-05-25)
109
+ ------------------
110
+
111
+ - Tests with ``vcr.py`` instead of ``requests_mock``.
112
+ - Support for Python 3.7 & 3.8 is finally official.
113
+ - Breaking: drop support for Python 3.4.
114
+
115
+ 1.0.0 (2019-02-11)
116
+ ------------------
117
+
118
+ - Breaking: drop support for Python 2.
119
+
108
120
  0.9.0 (2019-02-10)
109
121
  ------------------
110
122
 
@@ -208,6 +220,7 @@ Description: Deezer Python Client
208
220
 
209
221
  Other people contributed to this project:
210
222
 
223
+ - `Hugo van Kemenade <https://github.com/hugovk>`_
211
224
  - `Jonathan Virga <https://github.com/jnth>`_
212
225
  - `khamaileon <https://github.com/khamaileon>`_
213
226
  - `Kieran Wynne <https://github.com/k33k00>`_
@@ -219,17 +232,18 @@ Description: Deezer Python Client
219
232
  Please add yourself here alphabetically when you submit your first pull request.
220
233
 
221
234
  Platform: UNKNOWN
222
- Classifier: Development Status :: 4 - Beta
235
+ Classifier: Development Status :: 5 - Production/Stable
223
236
  Classifier: Intended Audience :: Developers
224
237
  Classifier: Natural Language :: English
225
238
  Classifier: License :: OSI Approved :: MIT License
226
239
  Classifier: Operating System :: OS Independent
227
240
  Classifier: Programming Language :: Python
228
- Classifier: Programming Language :: Python :: 2
229
- Classifier: Programming Language :: Python :: 2.7
230
241
  Classifier: Programming Language :: Python :: 3
231
- Classifier: Programming Language :: Python :: 3.4
232
242
  Classifier: Programming Language :: Python :: 3.5
233
243
  Classifier: Programming Language :: Python :: 3.6
244
+ Classifier: Programming Language :: Python :: 3.7
245
+ Classifier: Programming Language :: Python :: 3.8
246
+ Classifier: Programming Language :: Python :: 3 :: Only
234
247
  Classifier: Topic :: Software Development :: Libraries :: Python Modules
248
+ Requires-Python: >=3.5
235
249
  Provides-Extra: tornado
@@ -12,6 +12,7 @@ setup.py
12
12
  deezer/__init__.py
13
13
  deezer/client.py
14
14
  deezer/resources.py
15
+ deezer/utils.py
15
16
  deezer/contrib/__init__.py
16
17
  deezer/contrib/tornado.py
17
18
  deezer_python.egg-info/PKG-INFO
@@ -31,4 +32,5 @@ docs/source/_static/.placeholder
31
32
  docs/source/api_reference/client.rst
32
33
  docs/source/api_reference/resources.rst
33
34
  docs/source/api_reference/toc.rst
35
+ docs/source/api_reference/utils.rst
34
36
  docs/source/api_reference/contrib/tornado.rst
@@ -1,17 +0,0 @@
1
- # Test coverage configuration.
2
- # Usage:
3
- # pip install coverage
4
- # coverage erase # clears previous data if any
5
- # coverage run -m unittest discover
6
- # coverage report # prints to stdout
7
- # coverage html # creates ./htmlcov/*.html including annotated source
8
- [run]
9
- branch = true
10
- source = deezer
11
- omit =
12
- ENV/*
13
- deezer/tests/*
14
-
15
- [report]
16
- # Ignore missing source files, i.e. fake template-generated "files"
17
- ignore_errors = true
@@ -1,20 +0,0 @@
1
- Credits
2
- =======
3
-
4
- “deezer-python” is written and maintained by Bruno Alla.
5
-
6
-
7
- Contributors
8
- ------------
9
-
10
- Other people contributed to this project:
11
-
12
- - `Jonathan Virga <https://github.com/jnth>`_
13
- - `khamaileon <https://github.com/khamaileon>`_
14
- - `Kieran Wynne <https://github.com/k33k00>`_
15
- - `Matheus Horstmann <https://github.com/horstmannmat>`_
16
- - `Misuzu <https://github.com/misuzu>`_
17
- - `Nikolay Sheregeda <https://github.com/sheregeda>`_
18
- - `Pascal <https://github.com/pfouque>`_
19
-
20
- Please add yourself here alphabetically when you submit your first pull request.
@@ -1,127 +0,0 @@
1
- ============
2
- Contributing
3
- ============
4
-
5
- Contributions are welcome, and they are greatly appreciated! Every
6
- little bit helps, and credit will always be given.
7
-
8
- You can contribute in many ways:
9
-
10
- Types of Contributions
11
- ----------------------
12
-
13
- Report Bugs
14
- ~~~~~~~~~~~
15
-
16
- Report bugs on the `issues page`_. If you are reporting a bug, please include:
17
-
18
- * Any details about your local setup that might be helpful in troubleshooting.
19
- * Detailed steps to reproduce the bug.
20
-
21
- Fix Bugs
22
- ~~~~~~~~
23
-
24
- Look through the GitHub issues for bugs. Anything tagged with "bug"
25
- is open to whoever wants to implement it.
26
-
27
- Implement Features
28
- ~~~~~~~~~~~~~~~~~~
29
-
30
- Look through the GitHub issues for features. Anything tagged with "feature"
31
- is open to whoever wants to implement it.
32
-
33
- Write Documentation
34
- ~~~~~~~~~~~~~~~~~~~
35
-
36
- This module could always use more documentation, whether as part of the
37
- official docs, in docstrings, or other.
38
-
39
- Submit Feedback
40
- ~~~~~~~~~~~~~~~
41
-
42
- The best way to send feedback is to file an ticket on the `issues page`_. If you
43
- are proposing a feature:
44
-
45
- * Explain how it would work.
46
- * Keep the scope as narrow as possible, to make it easier to implement.
47
- * Remember that this is a volunteer-driven project, and that contributions
48
- are welcome 🙂
49
-
50
- Get Started!
51
- ------------
52
-
53
- Ready to contribute? Here's how to set up ``deezer-python`` for local development.
54
-
55
- 1. Fork the repo on GitHub.
56
- 2. Clone your fork locally::
57
-
58
- $ git clone git@github.com:your_name_here/deezer-python.git
59
-
60
- 3. Install your local copy into a virtualenv. Assuming you have virtualenvwrapper
61
- installed, this is how you set up your fork for local development::
62
-
63
- $ mkvirtualenv deezer-python
64
- $ cd deezer-python/
65
-
66
- 4. Create a branch for local development::
67
-
68
- $ git checkout -b name-of-your-bugfix-or-feature
69
-
70
- Now you can make your changes locally.
71
-
72
- 5. When you're done making changes, check that your changes pass our
73
- tests and that the doc builds. The easiest way to do that is by running
74
- `tox`_ environments::
75
-
76
- $ tox -e lint,docs,py36
77
-
78
- It will run our linters (`flake8`_ and `black`_), build the docs and run the tests
79
-
80
- 6. Commit your changes, quoting GitHub issue in the commit message, if applicable,
81
- and push your branch to GitHub::
82
-
83
- $ git add .
84
- $ git commit -m "Fix #XX - My awesome fix"
85
- $ git push origin name-of-your-bugfix-or-feature
86
-
87
- 7. Submit a pull request on GitHub.
88
-
89
- Pull Request Guidelines
90
- -----------------------
91
-
92
- Feel free to open the pull request as soon as possible, but please be explicit
93
- if it's still a work in progress. To be mergeable, pull requests should follow the
94
- following guidelines:
95
-
96
- 1. It should include tests for feature or bug fixes.
97
- 2. If it adds functionality, the docs should be updated.
98
- 3. It should work for Python 2.7, 3.4, 3.5, 3.6 and for PyPy.
99
- Check `Travis`_ as well as `Appveyor`_ and make sure that the tests
100
- pass for all supported Python versions.
101
- 4. If your change is worthwhile a mention in the changelog, update the
102
- Unreleased section of ``HISTORY.rst``.
103
- 5. If this is your first contribution, don't forget to leave your name in
104
- the ``AUTHORS.rst`` file.
105
-
106
- Create a New Release
107
- --------------------
108
-
109
- This project is configured to use `bumpversion`_, only prerequisite
110
- is to have it installed. When the tests have passed and you're happy with the code base,
111
- you can bump the version everywhere needed, commit and create a git tag by running::
112
-
113
- $ bumpversion [major|minor|patch]
114
-
115
- Then, do a git push, without forgetting about git tags::
116
-
117
- $ git push --tags
118
-
119
- `Travis`_ will take care of creating the release, and upload it to PyPI.
120
-
121
- .. _issues page: https://github.com/browniebroke/deezer-python/issues
122
- .. _Travis: https://travis-ci.org/browniebroke/deezer-python/pull_requests
123
- .. _Appveyor: https://ci.appveyor.com/project/browniebroke/deezer-python
124
- .. _tox: http://tox.readthedocs.io/en/stable/index.html
125
- .. _flake8: http://flake8.pycqa.org/en/latest/
126
- .. _black: https://github.com/ambv/black
127
- .. _bumpversion: https://github.com/peritus/bumpversion
@@ -1,95 +0,0 @@
1
- .. :changelog:
2
-
3
- History
4
- =======
5
-
6
- 0.9.0 (2019-02-10)
7
- ------------------
8
-
9
- - Add ``Client.advanced_search``.
10
-
11
- 0.8.0 (2018-10-30)
12
- ------------------
13
-
14
- - Added ``index`` and ``limit`` to ``Client.search`` & ``Client.get_charts``.
15
- Defaults are set to Deezer API defaults.
16
- - Changed tornado to be an optional requirement. If you want to use the
17
- asynchronous client, you need to install the library as follow
18
- ``pip install deezer-python[tornado]``.
19
- - Simplified a couple of things to rely more on `six`_ for Python compatibility.
20
- - Auto-format code using `black`_.
21
-
22
- .. _black: https://github.com/ambv/black
23
-
24
- 0.7.0 (2018-10-03)
25
- ------------------
26
-
27
- - Breaking: the ``async`` module has been renamed ``asynchronous`` as it was
28
- breaking under Python 3.7, thanks `Matheus Horstmann`_ for the patch
29
- - Optimisation: the session is now stored internally by the client
30
-
31
- 0.6.1 (2017-06-19)
32
- ------------------
33
-
34
- - Added access token to the request kwargs. Thanks `Nikolay Sheregeda`_ for
35
- the patch.
36
- - Documentation update, thanks `Khamaileon`_ for the correction.
37
-
38
- 0.6.0 (2016-12-27)
39
- ------------------
40
-
41
- - Refactoring to use `requests`_ instead of urllib, mocking using
42
- Requests mock instead of manual patching. Use `six`_ for Python
43
- 2 and 3 compatibility.
44
-
45
- .. _requests: http://docs.python-requests.org/
46
- .. _six: https://pythonhosted.org/six/
47
-
48
- 0.5.0 (2016-12-26)
49
- ------------------
50
-
51
- - Python 3.6 support
52
- - Remove Python 3.2 classifier, support was dropped since 0.2.3
53
- - Updated docs and testing setup
54
-
55
- 0.4.0 (2016-12-08)
56
- ------------------
57
-
58
- - Add the `chart`_ resource. Thanks to `Pascal`_.
59
- - Documentation updates regarding changelog and list of authors.
60
-
61
- 0.3.0 (2016-11-09)
62
- ------------------
63
-
64
- - Enriching the API for resources to get related resources as iterators.
65
- Thanks to `Pascal`_.
66
-
67
- 0.2.3 (2016-11-07)
68
- ------------------
69
-
70
- - Drop support for Python 3.2. It should still work, but we are not testing
71
- it anymore, as this version as reached end of life.
72
-
73
- 0.2.2 (2015-09-14)
74
- ------------------
75
-
76
- - Python 3.5 support
77
- - Various doc updates
78
-
79
- 0.2.0 (2015-01-31)
80
- ------------------
81
-
82
- - Enriching the API for resources to get artists for a genre,
83
- top tracks of an artist, etc... Thanks to `Misuzu`_.
84
-
85
- 0.1.0 (2014-11-22)
86
- ------------------
87
-
88
- - Initial release.
89
-
90
- .. _Misuzu: https://github.com/misuzu
91
- .. _Pascal: https://github.com/pfouque
92
- .. _chart: https://developers.deezer.com/api/chart
93
- .. _Khamaileon: https://github.com/khamaileon
94
- .. _Nikolay Sheregeda: https://github.com/sheregeda
95
- .. _Matheus Horstmann: https://github.com/horstmannmat
@@ -1,19 +0,0 @@
1
- Copyright (c) 2014 Bruno Alla
2
-
3
- Permission is hereby granted, free of charge, to any person obtaining a copy
4
- of this software and associated documentation files (the "Software"), to deal
5
- in the Software without restriction, including without limitation the rights
6
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
7
- copies of the Software, and to permit persons to whom the Software is
8
- furnished to do so, subject to the following conditions:
9
-
10
- The above copyright notice and this permission notice shall be included in
11
- all copies or substantial portions of the Software.
12
-
13
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
14
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
15
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
16
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
17
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
18
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
19
- THE SOFTWARE.
@@ -1,10 +0,0 @@
1
- recursive-include deezer *.py
2
- include *.txt
3
- include *.rst
4
- include .coveragerc
5
- recursive-include deezer *.json
6
- recursive-include docs *.bat
7
- recursive-include docs *.placeholder
8
- recursive-include docs *.py
9
- recursive-include docs *.rst
10
- recursive-include docs Makefile