more pep8 fixes

This commit is contained in:
Joe Cabrera 2014-07-24 13:50:36 +00:00
parent 1455d8769a
commit 6206c0b73f
2 changed files with 62 additions and 33 deletions

View file

@ -27,29 +27,41 @@ warnings.simplefilter('always', TwythonDeprecationWarning) # For Python 2.7 >
class Twython(EndpointsMixin, object): class Twython(EndpointsMixin, object):
def __init__(self, app_key=None, app_secret=None, oauth_token=None, def __init__(self, app_key=None, app_secret=None, oauth_token=None,
oauth_token_secret=None, access_token=None, token_type='bearer', oauth_token_secret=None, access_token=None,
oauth_version=1, api_version='1.1', client_args=None, auth_endpoint='authenticate'): token_type='bearer', oauth_version=1, api_version='1.1',
"""Instantiates an instance of Twython. Takes optional parameters for authentication and such (see below). client_args=None, auth_endpoint='authenticate'):
"""Instantiates an instance of Twython. Takes optional parameters for
authentication and such (see below).
:param app_key: (optional) Your applications key :param app_key: (optional) Your applications key
:param app_secret: (optional) Your applications secret key :param app_secret: (optional) Your applications secret key
:param oauth_token: (optional) When using **OAuth 1**, combined with oauth_token_secret to make authenticated calls :param oauth_token: (optional) When using **OAuth 1**, combined with
:param oauth_token_secret: (optional) When using **OAuth 1** combined with oauth_token to make authenticated calls oauth_token_secret to make authenticated calls
:param access_token: (optional) When using **OAuth 2**, provide a valid access token if you have one :param oauth_token_secret: (optional) When using **OAuth 1** combined
:param token_type: (optional) When using **OAuth 2**, provide your token type. Default: bearer with oauth_token to make authenticated calls
:param oauth_version: (optional) Choose which OAuth version to use. Default: 1 :param access_token: (optional) When using **OAuth 2**, provide a
:param api_version: (optional) Choose which Twitter API version to use. Default: 1.1 valid access token if you have one
:param token_type: (optional) When using **OAuth 2**, provide your
token type. Default: bearer
:param oauth_version: (optional) Choose which OAuth version to use.
Default: 1
:param api_version: (optional) Choose which Twitter API version to
use. Default: 1.1
:param client_args: (optional) Accepts some requests Session parameters and some requests Request parameters. :param client_args: (optional) Accepts some requests Session parameters
See http://docs.python-requests.org/en/latest/api/#sessionapi and requests section below it for details. and some requests Request parameters.
See http://docs.python-requests.org/en/latest/api/#sessionapi
and requests section below it for details.
[ex. headers, proxies, verify(SSL verification)] [ex. headers, proxies, verify(SSL verification)]
:param auth_endpoint: (optional) Lets you select which authentication endpoint will use your application. :param auth_endpoint: (optional) Lets you select which authentication
This will allow the application to have DM access if the endpoint is 'authorize'. endpoint will use your application.
This will allow the application to have DM access
if the endpoint is 'authorize'.
Default: authenticate. Default: authenticate.
""" """
# API urls, OAuth urls and API version; needed for hitting that there API. # API urls, OAuth urls and API version; needed for hitting that there
# API.
self.api_version = api_version self.api_version = api_version
self.api_url = 'https://api.twitter.com/%s' self.api_url = 'https://api.twitter.com/%s'
@ -75,16 +87,18 @@ class Twython(EndpointsMixin, object):
self.client_args = client_args or {} self.client_args = client_args or {}
default_headers = {'User-Agent': 'Twython v' + __version__} default_headers = {'User-Agent': 'Twython v' + __version__}
if not 'headers' in self.client_args: if 'headers' not in self.client_args:
# If they didn't set any headers, set our defaults for them # If they didn't set any headers, set our defaults for them
self.client_args['headers'] = default_headers self.client_args['headers'] = default_headers
elif 'User-Agent' not in self.client_args['headers']: elif 'User-Agent' not in self.client_args['headers']:
# If they set headers, but didn't include User-Agent.. set it for them # If they set headers, but didn't include User-Agent.. set
# it for them
self.client_args['headers'].update(default_headers) self.client_args['headers'].update(default_headers)
# Generate OAuth authentication object for the request # Generate OAuth authentication object for the request
# If no keys/tokens are passed to __init__, auth=None allows for # If no keys/tokens are passed to __init__, auth=None allows for
# unauthenticated requests, although I think all v1.1 requests need auth # unauthenticated requests, although I think all v1.1 requests
# need auth
auth = None auth = None
if oauth_version == 1: if oauth_version == 1:
# User Authentication is through OAuth 1 # User Authentication is through OAuth 1
@ -93,12 +107,14 @@ class Twython(EndpointsMixin, object):
auth = OAuth1(self.app_key, self.app_secret) auth = OAuth1(self.app_key, self.app_secret)
if self.app_key is not None and self.app_secret is not None and \ if self.app_key is not None and self.app_secret is not None and \
self.oauth_token is not None and self.oauth_token_secret is not None: self.oauth_token is not None and self.oauth_token_secret is \
not None:
auth = OAuth1(self.app_key, self.app_secret, auth = OAuth1(self.app_key, self.app_secret,
self.oauth_token, self.oauth_token_secret) self.oauth_token, self.oauth_token_secret)
elif oauth_version == 2 and self.access_token: elif oauth_version == 2 and self.access_token:
# Application Authentication is through OAuth 2 # Application Authentication is through OAuth 2
token = {'token_type': token_type, 'access_token': self.access_token} token = {'token_type': token_type,
'access_token': self.access_token}
auth = OAuth2(self.app_key, token=token) auth = OAuth2(self.app_key, token=token)
self.client = requests.Session() self.client = requests.Session()
@ -166,11 +182,14 @@ class Twython(EndpointsMixin, object):
ExceptionType = TwythonError ExceptionType = TwythonError
if response.status_code == 429: if response.status_code == 429:
# Twitter API 1.1, always return 429 when rate limit is exceeded # Twitter API 1.1, always return 429 when
# rate limit is exceeded
ExceptionType = TwythonRateLimitError ExceptionType = TwythonRateLimitError
elif response.status_code == 401 or 'Bad Authentication data' in error_message: elif response.status_code == 401 or 'Bad Authentication data' \
in error_message:
# Twitter API 1.1, returns a 401 Unauthorized or # Twitter API 1.1, returns a 401 Unauthorized or
# a 400 "Bad Authentication data" for invalid/expired app keys/user tokens # a 400 "Bad Authentication data" for invalid/expired
# app keys/user tokens
ExceptionType = TwythonAuthError ExceptionType = TwythonAuthError
raise ExceptionType(error_message, raise ExceptionType(error_message,

View file

@ -918,13 +918,23 @@ TWITTER_HTTP_STATUS_CODE = {
refused. An accompanying error message will explain why. \ refused. An accompanying error message will explain why. \
This code is used when requests are being denied due to \ This code is used when requests are being denied due to \
update limits.'), update limits.'),
404: ('Not Found', 'The URI requested is invalid or the resource requested, such as a user, does not exists.'), 404: ('Not Found', 'The URI requested is invalid or the resource \
406: ('Not Acceptable', 'Returned by the Search API when an invalid format is specified in the request.'), requested, such as a user, does not exists.'),
410: ('Gone', 'This resource is gone. Used to indicate that an API endpoint has been turned off.'), 406: ('Not Acceptable', 'Returned by the Search API when an \
422: ('Unprocessable Entity', 'Returned when an image uploaded to POST account/update_profile_banner is unable to be processed.'), invalid format is specified in the request.'),
429: ('Too Many Requests', 'Returned in API v1.1 when a request cannot be served due to the application\'s rate limit having been exhausted for the resource.'), 410: ('Gone', 'This resource is gone. Used to indicate that an \
500: ('Internal Server Error', 'Something is broken. Please post to the group so the Twitter team can investigate.'), API endpoint has been turned off.'),
422: ('Unprocessable Entity', 'Returned when an image uploaded to \
POST account/update_profile_banner is unable to be processed.'),
429: ('Too Many Requests', 'Returned in API v1.1 when a request cannot \
be served due to the application\'s rate limit having been \
exhausted for the resource.'),
500: ('Internal Server Error', 'Something is broken. Please post to the \
group so the Twitter team can investigate.'),
502: ('Bad Gateway', 'Twitter is down or being upgraded.'), 502: ('Bad Gateway', 'Twitter is down or being upgraded.'),
503: ('Service Unavailable', 'The Twitter servers are up, but overloaded with requests. Try again later.'), 503: ('Service Unavailable', 'The Twitter servers are up, but overloaded \
504: ('Gateway Timeout', 'The Twitter servers are up, but the request couldn\'t be serviced due to some failure within our stack. Try again later.'), with requests. Try again later.'),
504: ('Gateway Timeout', 'The Twitter servers are up, but the request \
couldn\'t be serviced due to some failure within our stack. Try \
again later.'),
} }