Merge pull request #351 from ryanmcgrath/new-release

3.2.0
This commit is contained in:
Mike Helmick 2014-10-30 16:59:46 -04:00
commit d63e6ce1c0
9 changed files with 56 additions and 18 deletions

View file

@ -27,7 +27,7 @@ Patches and Suggestions
- `Jonathan Elsas <https://github.com/jelsas>`_, Fix for original Streaming API stub causing import errors. - `Jonathan Elsas <https://github.com/jelsas>`_, Fix for original Streaming API stub causing import errors.
- `LuqueDaniel <https://github.com/LuqueDaniel>`_, Extended example code where necessary. - `LuqueDaniel <https://github.com/LuqueDaniel>`_, Extended example code where necessary.
- `Mesar Hameed <https://github.com/mhameed>`_, Commit to swap ``__getattr__`` trick for a more debuggable solution. - `Mesar Hameed <https://github.com/mhameed>`_, Commit to swap ``__getattr__`` trick for a more debuggable solution.
- `Remy DeCausemaker <https://github.com/decause>`_, PEP-8 contributions. - `Remy DeCausemaker <https://github.com/decause>`_, PEP 8 contributions.
- `mckellister <https://github.com/mckellister>`_ Twitter Spring 2012 Clean Up fixes to ``Exception`` raised by Twython (Rate Limits, etc). - `mckellister <https://github.com/mckellister>`_ Twitter Spring 2012 Clean Up fixes to ``Exception`` raised by Twython (Rate Limits, etc).
- `Tatz Tsuchiya <http://d.hatena.ne.jp/tatz_tsuchiya/20120115/1326623451>`_, Fix for ``lambda`` scoping in key injection phase. - `Tatz Tsuchiya <http://d.hatena.ne.jp/tatz_tsuchiya/20120115/1326623451>`_, Fix for ``lambda`` scoping in key injection phase.
- `Mohammed ALDOUB <https://github.com/Voulnet>`_, Fixes for ``http/https`` access endpoints. - `Mohammed ALDOUB <https://github.com/Voulnet>`_, Fixes for ``http/https`` access endpoints.
@ -35,7 +35,7 @@ Patches and Suggestions
- `Terry Jones <https://github.com/terrycojones>`_, Error cleanup and Exception processing in 2.3.0. - `Terry Jones <https://github.com/terrycojones>`_, Error cleanup and Exception processing in 2.3.0.
- `Leandro Ferreira <https://github.com/leandroferreira>`_, Fix for double-encoding of search queries in 2.3.0. - `Leandro Ferreira <https://github.com/leandroferreira>`_, Fix for double-encoding of search queries in 2.3.0.
- `Chris Brown <https://github.com/chbrown>`_, Updated to use v1.1 endpoints over v1 - `Chris Brown <https://github.com/chbrown>`_, Updated to use v1.1 endpoints over v1
- `Virendra Rajput <https://github.com/bkvirendra>`_, Fixed unicode (json) encoding in twython.py 2.7.2. - `Virendra Rajput <https://github.com/bkvirendra>`_, Fixed unicode (json) encoding in twython.py 2.7.2.
- `Paul Solbach <https://github.com/hansenrum>`_, fixed requirement for oauth_verifier - `Paul Solbach <https://github.com/hansenrum>`_, fixed requirement for oauth_verifier
- `Greg Nofi <https://github.com/nofeet>`_, fixed using built-in Exception attributes for storing & retrieving error message - `Greg Nofi <https://github.com/nofeet>`_, fixed using built-in Exception attributes for storing & retrieving error message
- `Jonathan Vanasco <https://github.com/jvanasco>`_, Debugging support, error_code tracking, Twitter error API tracking, other fixes - `Jonathan Vanasco <https://github.com/jvanasco>`_, Debugging support, error_code tracking, Twitter error API tracking, other fixes
@ -43,3 +43,14 @@ Patches and Suggestions
- `Ruben Varela Rosa <https://github.com/rubenvarela>`_, Fixed search example - `Ruben Varela Rosa <https://github.com/rubenvarela>`_, Fixed search example
- `Oleg Anashkin <https://github.com/extesy>`_, streaming ``handlers`` functionality - `Oleg Anashkin <https://github.com/extesy>`_, streaming ``handlers`` functionality
- `Luis Alberto Santana <https://github.com/jackboot7`_, Added auth_endpoint parameter for cases when the right permissions weren't being shown on authenticate step - `Luis Alberto Santana <https://github.com/jackboot7`_, Added auth_endpoint parameter for cases when the right permissions weren't being shown on authenticate step
- `Cory Benfield <https://github.com/Lukasa>`_, Fixed issue where Twython was unnecessarily disabling compression
- `Cory Dolphin <https://github.com/wcdolphin>`_, Added retry_after attribute to TwythonRateLimitError
- `Natan L <https://github.com/kuyan>`_, Fixed typo in documentation
- `Cash Costello <https://github.com/cash>`_, Moved tests to use `responsoes`, fixed typos in documentation
- `Joe Cabrera <https://github.com/greedo>`_, PEP 8 contributions
- `bsbkeven <https://github.com/bsbkeven>`_, Added `lookup_status` function to `endpoints.py`
- `drevicko <https://github.com/drevicko>`_, Added option to yield full page vs individual results in `cursor`
- `Filipe A Ximenes <https://github.com/filipeximenes>`_, Added `upload_media` function to `endpoints.py`
- `Mertcan Mermerkaya <https://github.com/mmermerkaya>`_, Fixed code example in documentation
- `Donne Martin <https://github.com/donnemartin>`_, Fixed typos in `README.rst`
- `Diego Allen <https://github.com/dalleng>`_, Add missing comma in documentation code snippet

View file

@ -3,6 +3,21 @@
History History
------- -------
3.2.0 (2014-08-xx)
++++++++++++++++++
- PEP8'd some code
- Added `lookup_status` function to `endpoints.py`
- Added keyword argument to `cursor` to return full pages rather than individual results
- `cursor` now uses while loop rather than recursion
- Fixed issue where Twython was unnecessarily disabling compression
- Using `responses` to mock API calls in tests
- Fixed some typos in documentation
- Added `retry_after` attribute to `TwythonRateLimitError`
- Added `upload_media` method to `Twython` in favor of `update_with_media`
- Deprecating `update_with_media` per Twitter API 1.1 (https://dev.twitter.com/rest/reference/post/statuses/update_with_media)
- Unpin `requests` and `requests-oauthlib` in `requirements.txt`
3.1.2 (2013-12-05) 3.1.2 (2013-12-05)
++++++++++++++++++ ++++++++++++++++++

View file

@ -50,9 +50,9 @@ copyright = u'2013, Ryan McGrath'
# built documents. # built documents.
# #
# The short X.Y version. # The short X.Y version.
version = '3.1.2' version = '3.2.0'
# The full version, including alpha/beta/rc tags. # The full version, including alpha/beta/rc tags.
release = '3.1.2' release = '3.2.0'
# The language for content autogenerated by Sphinx. Refer to documentation # The language for content autogenerated by Sphinx. Refer to documentation
# for a list of supported languages. # for a list of supported languages.

View file

@ -1,6 +1,6 @@
coverage==3.6.0 coverage==3.6.0
requests==2.1.0 requests>=2.1.0
requests_oauthlib==0.4.0 requests_oauthlib>=0.4.0
python-coveralls==2.1.0 python-coveralls==2.1.0
nose-cov==1.6 nose-cov==1.6
responses==0.2.0 responses==0.3.0

View file

@ -9,7 +9,7 @@ except ImportError:
from distutils.core import setup from distutils.core import setup
__author__ = 'Ryan McGrath <ryan@venodesigns.net>' __author__ = 'Ryan McGrath <ryan@venodesigns.net>'
__version__ = '3.1.2' __version__ = '3.2.0'
packages = [ packages = [
'twython', 'twython',
@ -23,7 +23,7 @@ if sys.argv[-1] == 'publish':
setup( setup(
name='twython', name='twython',
version=__version__, version=__version__,
install_requires=['requests==2.1.0', 'requests_oauthlib==0.4.0'], install_requires=['requests>=2.1.0', 'requests_oauthlib>=0.4.0'],
author='Ryan McGrath', author='Ryan McGrath',
author_email='ryan@venodesigns.net', author_email='ryan@venodesigns.net',
license=open('LICENSE').read(), license=open('LICENSE').read(),

View file

@ -262,16 +262,16 @@ class TwythonAPITestCase(unittest.TestCase):
"""Test getting last specific header of the last API call works""" """Test getting last specific header of the last API call works"""
endpoint = 'statuses/home_timeline' endpoint = 'statuses/home_timeline'
url = self.get_url(endpoint) url = self.get_url(endpoint)
self.register_response(responses.GET, url, adding_headers={'x-rate-limit-remaining': 37}) self.register_response(responses.GET, url, adding_headers={'x-rate-limit-remaining': '37'})
self.api.get(endpoint) self.api.get(endpoint)
value = self.api.get_lastfunction_header('x-rate-limit-remaining') value = self.api.get_lastfunction_header('x-rate-limit-remaining')
self.assertEqual(37, value) self.assertEqual('37', value)
value2 = self.api.get_lastfunction_header('does-not-exist') value2 = self.api.get_lastfunction_header('does-not-exist')
self.assertIsNone(value2) self.assertIsNone(value2)
value3 = self.api.get_lastfunction_header('not-there-either', 96) value3 = self.api.get_lastfunction_header('not-there-either', '96')
self.assertEqual(96, value3) self.assertEqual('96', value3)
def test_get_lastfunction_header_should_raise_error_when_no_previous_call(self): def test_get_lastfunction_header_should_raise_error_when_no_previous_call(self):
"""Test attempting to get a header when no API call was made raises a TwythonError""" """Test attempting to get a header when no API call was made raises a TwythonError"""
@ -286,7 +286,7 @@ class TwythonAPITestCase(unittest.TestCase):
self.api.get(endpoint) self.api.get(endpoint)
self.assertEqual(b'gzip, deflate, compress', responses.calls[0].request.headers['Accept-Encoding']) self.assertEqual(b'gzip, deflate', responses.calls[0].request.headers['Accept-Encoding'])
# Static methods # Static methods
def test_construct_api_url(self): def test_construct_api_url(self):

View file

@ -19,7 +19,7 @@ Questions, comments? ryan@venodesigns.net
""" """
__author__ = 'Ryan McGrath <ryan@venodesigns.net>' __author__ = 'Ryan McGrath <ryan@venodesigns.net>'
__version__ = '3.1.2' __version__ = '3.2.0'
from .api import Twython from .api import Twython
from .streaming import TwythonStreamer from .streaming import TwythonStreamer

View file

@ -9,6 +9,8 @@ Twitter Authentication, and miscellaneous methods that are useful when
dealing with the Twitter API dealing with the Twitter API
""" """
import warnings
import requests import requests
from requests.auth import HTTPBasicAuth from requests.auth import HTTPBasicAuth
from requests_oauthlib import OAuth1, OAuth2 from requests_oauthlib import OAuth1, OAuth2
@ -20,8 +22,6 @@ from .endpoints import EndpointsMixin
from .exceptions import TwythonError, TwythonAuthError, TwythonRateLimitError from .exceptions import TwythonError, TwythonAuthError, TwythonRateLimitError
from .helpers import _transparent_params from .helpers import _transparent_params
import warnings
warnings.simplefilter('always', TwythonDeprecationWarning) # For Python 2.7 > warnings.simplefilter('always', TwythonDeprecationWarning) # For Python 2.7 >
@ -243,9 +243,12 @@ class Twython(EndpointsMixin, object):
:rtype: dict :rtype: dict
""" """
if endpoint.startswith('http://'):
raise TwythonError('api.twitter.com is restricted to SSL/TLS traffic.')
# In case they want to pass a full Twitter URL # In case they want to pass a full Twitter URL
# i.e. https://api.twitter.com/1.1/search/tweets.json # i.e. https://api.twitter.com/1.1/search/tweets.json
if endpoint.startswith('http://') or endpoint.startswith('https://'): if endpoint.startswith('https://'):
url = endpoint url = endpoint
else: else:
url = '%s/%s.json' % (self.api_url % version, endpoint) url = '%s/%s.json' % (self.api_url % version, endpoint)

View file

@ -14,6 +14,10 @@ This map is organized the order functions are documented at:
https://dev.twitter.com/docs/api/1.1 https://dev.twitter.com/docs/api/1.1
""" """
import warnings
from .advisory import TwythonDeprecationWarning
class EndpointsMixin(object): class EndpointsMixin(object):
# Timelines # Timelines
@ -118,6 +122,11 @@ class EndpointsMixin(object):
https://dev.twitter.com/docs/api/1.1/post/statuses/update_with_media https://dev.twitter.com/docs/api/1.1/post/statuses/update_with_media
""" """
warnings.warn(
'This method is deprecated. You should use Twython.upload_media instead.',
TwythonDeprecationWarning,
stacklevel=2
)
return self.post('statuses/update_with_media', params=params) return self.post('statuses/update_with_media', params=params)
def upload_media(self, **params): def upload_media(self, **params):