Skip to content

Commit 4242019

Browse files
committed
python 2.6 support
1 parent 2722206 commit 4242019

14 files changed

Lines changed: 76 additions & 47 deletions

File tree

leancloud/__init__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@
1919
from .role import Role
2020

2121
__author__ = 'asaka <lan@leancloud.rocks>'
22-
__version__ = '1.0.7'
22+
__version__ = '1.0.8'
2323

2424

2525
__all__ = [

leancloud/acl.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -73,25 +73,25 @@ def set_role_read_access(self, role, allowed):
7373
role = role.get_name()
7474
if not isinstance(role, basestring):
7575
raise TypeError('role must be a leancloud.Role or str')
76-
self.set_read_access('role:{}'.format(role), allowed)
76+
self.set_read_access('role:{0}'.format(role), allowed)
7777

7878
def get_role_read_access(self, role):
7979
if isinstance(role, leancloud.Role):
8080
role = role.get_name()
8181
if not isinstance(role, basestring):
8282
raise TypeError('role must be a leancloud.Role or str')
83-
self.get_read_access('role:{}'.format(role))
83+
self.get_read_access('role:{0}'.format(role))
8484

8585
def set_role_write_access(self, role, allowed):
8686
if isinstance(role, leancloud.Role):
8787
role = role.get_name()
8888
if not isinstance(role, basestring):
8989
raise TypeError('role must be a leancloud.Role or str')
90-
self.set_write_access('role:{}'.format(role), allowed)
90+
self.set_write_access('role:{0}'.format(role), allowed)
9191

9292
def get_role_write_access(self, role):
9393
if isinstance(role, leancloud.Role):
9494
role = role.get_name()
9595
if not isinstance(role, basestring):
9696
raise TypeError('role must be a leancloud.Role or str')
97-
self.get_write_access('role:{}'.format(role))
97+
self.get_write_access('role:{0}'.format(role))

leancloud/client.py

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
import requests
66

77
import leancloud
8+
from leancloud import utils
89

910
__author__ = 'asaka <lan@leancloud.rocks>'
1011

@@ -55,7 +56,7 @@ def new_func(*args, **kwargs):
5556
'Content-Type': 'application/json;charset=utf-8',
5657
}
5758
headers['X-AVOSCloud-Application-Id'] = APP_ID
58-
headers['User-Agent'] = 'AVOS Cloud python-{} SDK'.format(leancloud.__version__)
59+
headers['User-Agent'] = 'AVOS Cloud python-{0} SDK'.format(leancloud.__version__)
5960
if MASTER_KEY:
6061
headers['X-AVOSCloud-Master-Key'] = MASTER_KEY
6162
else:
@@ -70,7 +71,9 @@ def new_func(*args, **kwargs):
7071
response = func(*args, **kwargs)
7172
if response.headers['Content-Type'] == 'text/html':
7273
raise leancloud.LeanCloudError(-1, 'Bad Request')
73-
content = response.json()
74+
75+
content = utils.response_to_json(response)
76+
7477
if 'error' in content:
7578
raise leancloud.LeanCloudError(content.get('code', 1), content.get('error', 'Unknown Error'))
7679

leancloud/errors.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,4 +10,4 @@ def __init__(self, code, error):
1010

1111
def __str__(self):
1212
error = self.error if isinstance(self.error, str) else self.error.encode('utf-8', 'ignore')
13-
return '[{}] {}'.format(self.code, error)
13+
return '[{0}] {1}'.format(self.code, error)

leancloud/file_.py

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88

99
import leancloud
1010
from leancloud import client
11+
from leancloud import utils
1112
from leancloud.mime_type import mime_types
1213

1314

@@ -115,13 +116,13 @@ def get_thumbnail_url(self, width, height, quality=100, scale_to_fit=True, fmt='
115116

116117
mode = 2 if scale_to_fit else 1
117118

118-
return self.url + '?imageView/{}/w/{}/h/{}/q/{}/format/{}'.format(mode, width, height, quality, fmt)
119+
return self.url + '?imageView/{0}/w/{1}/h/{2}/q/{3}/format/{4}'.format(mode, width, height, quality, fmt)
119120

120121
def destroy(self):
121122
if not self.id:
122123
return False
123-
response = client.delete('/files/{}'.format(self.id))
124-
content = response.json()
124+
response = client.delete('/files/{0}'.format(self.id))
125+
content = utils.response_to_json(response)
125126
return response
126127

127128
def save(self):
@@ -147,8 +148,8 @@ def save(self):
147148
else:
148149
raise ValueError
149150

150-
response = client.post('/files/{}'.format(self._name), data)
151-
content = response.json()
151+
response = client.post('/files/{0}'.format(self._name), data)
152+
content = utils.response_to_json(response)
152153

153154
self._name = content['name']
154155
self._url = content['url']

leancloud/geo_point.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -23,16 +23,16 @@ def __init__(self, latitude=0, longitude=0):
2323
@classmethod
2424
def _validate(cls, latitude, longitude):
2525
if latitude < -90.0:
26-
raise ValueError('GeoPoint latitude {} < -90.0'.format(latitude))
26+
raise ValueError('GeoPoint latitude {0} < -90.0'.format(latitude))
2727

2828
if latitude > 90.0:
29-
raise ValueError('GeoPoint latitude {} > 90.0'.format(latitude))
29+
raise ValueError('GeoPoint latitude {0} > 90.0'.format(latitude))
3030

3131
if longitude < -180.0:
32-
raise ValueError('GeoPoint longitude {} < -180.0'.format(longitude))
32+
raise ValueError('GeoPoint longitude {0} < -180.0'.format(longitude))
3333

3434
if longitude > 180.0:
35-
raise ValueError('GeoPoint longitude {} > 180.0'.format(longitude))
35+
raise ValueError('GeoPoint longitude {0} > 180.0'.format(longitude))
3636

3737
@property
3838
def latitude(self):

leancloud/object_.py

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -133,7 +133,7 @@ def destroy(self):
133133
"""
134134
if not self.id:
135135
return False
136-
client.delete('/classes/{}/{}'.format(self._class_name, self.id))
136+
client.delete('/classes/{0}/{1}'.format(self._class_name, self.id))
137137

138138
def save(self):
139139
"""
@@ -157,11 +157,11 @@ def save(self):
157157
method = 'PUT' if self.id is not None else 'POST'
158158

159159
if method == 'PUT':
160-
response = client.put('/classes/{}/{}'.format(self._class_name, self.id), data)
160+
response = client.put('/classes/{0}/{1}'.format(self._class_name, self.id), data)
161161
else:
162-
response = client.post('/classes/{}'.format(self._class_name), data)
162+
response = client.post('/classes/{0}'.format(self._class_name), data)
163163

164-
self._finish_save(self.parse(response.json(), response.status_code))
164+
self._finish_save(self.parse(utils.response_to_json(response), response.status_code))
165165

166166
def _deep_save(self, exclude=None):
167167
# TODO: chunk
@@ -179,7 +179,7 @@ def _deep_save(self, exclude=None):
179179
for obj in unsaved_children:
180180
obj._start_save()
181181
method = 'POST' if obj.id is None else 'PUT'
182-
path = '/{}/classes/{}'.format(client.SERVER_VERSION, obj._class_name)
182+
path = '/{0}/classes/{1}'.format(client.SERVER_VERSION, obj._class_name)
183183
body = obj._dump_save()
184184
dumped_obj = {
185185
'method': method,
@@ -188,7 +188,7 @@ def _deep_save(self, exclude=None):
188188
}
189189
dumped_objs.append(dumped_obj)
190190

191-
response = client.post('/batch', params={'requests': dumped_objs}).json()
191+
response = utils.response_to_json(client.post('/batch', params={'requests': dumped_objs}))
192192

193193
errors = []
194194
for idx, obj in enumerate(unsaved_children):
@@ -424,8 +424,8 @@ def fetch(self):
424424
425425
:return: 当前对象
426426
"""
427-
response = client.get('/classes/{}/{}'.format(self._class_name, self.id), {})
428-
result = self.parse(response.json(), response.status_code)
427+
response = client.get('/classes/{0}/{1}'.format(self._class_name, self.id), {})
428+
result = self.parse(utils.response_to_json(response), response.status_code)
429429
self._finish_fetch(result, True)
430430

431431
def parse(self, content, status_code=None):

leancloud/operation.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -206,8 +206,8 @@ class Relation(BaseOp):
206206
def __init__(self, adds, removes):
207207
self._target_class_name = None
208208

209-
self.relations_to_add = {self._pointer_to_id(x) for x in adds}
210-
self.relations_to_remove = {self._pointer_to_id(x) for x in removes}
209+
self.relations_to_add = set([self._pointer_to_id(x) for x in adds])
210+
self.relations_to_remove = set([self._pointer_to_id(x) for x in removes])
211211

212212
def _pointer_to_id(self, obj):
213213
if isinstance(obj, leancloud.Object):
@@ -274,7 +274,7 @@ def _merge(self, previous=None):
274274
raise ValueError('can\'t modify a relation after deleting it.')
275275
elif isinstance(previous, Relation):
276276
if (previous._target_class_name) and (previous._target_class_name != self._target_class_name):
277-
raise TypeError('related object must be class of {}'.format(previous._target_class_name))
277+
raise TypeError('related object must be class of {0}'.format(previous._target_class_name))
278278
new_add = (previous.relations_to_add - self.relations_to_remove) | self.relations_to_add
279279
new_remove = (previous.relations_to_remove - self.relations_to_add) | self.relations_to_remove
280280

@@ -291,7 +291,7 @@ def _apply(self, old, obj=None, key=None):
291291
if self._target_class_name:
292292
if old.target_class_name:
293293
if old.target_class_name != self._target_class_name:
294-
raise TypeError('related object must be class of {}'.format(old.target_class_name))
294+
raise TypeError('related object must be class of {0}'.format(old.target_class_name))
295295
else:
296296
old.target_class_name = self._target_class_name
297297
return old

leancloud/push.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44

55
from leancloud.object_ import Object
66
from leancloud import client
7+
from leancloud import utils
78

89

910
__author__ = 'asaka <lan@leancloud.rocks>'
@@ -54,7 +55,7 @@ def send(data, channels=None, push_time=None, expiration_time=None, expiration_i
5455
if cql:
5556
params['cql'] = cql
5657

57-
result = client.post('/push', params=params).json()
58+
result = utils.response_to_json(client.post('/push', params=params))
5859

5960
notification = Notification.create_without_data(result['objectId'])
6061
return notification

leancloud/query.py

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -94,7 +94,7 @@ def do_cloud_query(cls, cql, *pvalues):
9494
if len(pvalues) > 0:
9595
params['pvalues'] = json.dumps(pvalues)
9696

97-
content = client.get('/cloudQuery', params).json()
97+
content = utils.response_to_json(client.get('/cloudQuery', params))
9898

9999
objs = []
100100
query = Query(content['className'])
@@ -142,7 +142,7 @@ def first(self):
142142
"""
143143
params = self.dump()
144144
params['limit'] = 1
145-
content = client.get('/classes/{}'.format(self._query_class._class_name), params).json()
145+
content = utils.response_to_json(client.get('/classes/{0}'.format(self._query_class._class_name), params))
146146
results = content['results']
147147
if not results:
148148
raise LeanCloudError(101, 'Object not found')
@@ -167,7 +167,7 @@ def find(self):
167167
168168
:rtype: list
169169
"""
170-
content = client.get('/classes/{}'.format(self._query_class._class_name), self.dump()).json()
170+
content = utils.response_to_json(client.get('/classes/{0}'.format(self._query_class._class_name), self.dump()))
171171

172172
objs = []
173173
for result in content['results']:
@@ -183,7 +183,7 @@ def destroy_all(self):
183183
184184
:raise: LeanCLoudError
185185
"""
186-
result = client.delete('/classes/{}'.format(self._query_class._class_name), self.dump())
186+
result = client.delete('/classes/{0}'.format(self._query_class._class_name), self.dump())
187187
return result
188188

189189
def count(self):
@@ -195,8 +195,8 @@ def count(self):
195195
params = self.dump()
196196
params['limit'] = 0
197197
params['count'] = 1
198-
response = client.get('/classes/{}'.format(self._query_class._class_name), params)
199-
return response.json()['count']
198+
response = client.get('/classes/{0}'.format(self._query_class._class_name), params)
199+
return utils.response_to_json(response)['count']
200200

201201
def skip(self, n):
202202
"""
@@ -500,7 +500,7 @@ def descending(self, key):
500500
:param key: 排序字段名
501501
:rtype: Query
502502
"""
503-
self._order = ['-{}'.format(key)]
503+
self._order = ['-{0}'.format(key)]
504504
return self
505505

506506
def add_descending(self, key):
@@ -510,7 +510,7 @@ def add_descending(self, key):
510510
:param key: 排序字段名
511511
:rtype: Query
512512
"""
513-
self._order.append('-{}'.format(key))
513+
self._order.append('-{0}'.format(key))
514514
return self
515515

516516
def near(self, key, point):

0 commit comments

Comments
 (0)