Skip to content

Commit a5ad8d0

Browse files
alzhangalzhang
authored andcommitted
Merge remote-tracking branch 'upstream/master'
2 parents f4e5265 + 4b1d079 commit a5ad8d0

19 files changed

+11151
-291
lines changed

.travis.yml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,8 @@ python:
66
- 3.4
77
- 3.5
88
install:
9+
- if [[ $TRAVIS_PYTHON_VERSION == '3.3' ]]; then travis_retry pip install pycryptodome==3.6.6;
10+
fi
911
- pip install crcmod requests nose nose-cov python-coveralls pycryptodome aliyun-python-sdk-sts
1012
aliyun-python-sdk-kms
1113
- pip install --upgrade mock

CHANGELOG.rst

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,16 @@ OSS SDK for Python 版本记录
33

44
Python SDK的版本号遵循 `Semantic Versioning <http://semver.org/>`_ 规则。
55

6+
Version 2.6.1
7+
-------------
8+
9+
- 修复: 不指定默认的日志级别
10+
- 修复: 修复日志中存在的中文标点符号的问题
11+
- 增加: 帮助文档增加如何设置日志级别的方法说明
12+
- 修复: 当传入的playlist为空时,不指定playlist为生成推流签名的url的参数
13+
- 修复: 初始化LiveChannelInfo实例时,使用默认的构造函数初始化target成员
14+
- 修复: 有些调试信息的日志,修改成debug级别,避免过多的日志打印
15+
616
Version 2.6.0
717
-------------
818

README-CN.rst

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -93,6 +93,17 @@ Python 2.6,2.7,3.3,3.4,3.5
9393
except oss2.exceptions.NoSuchKey as e:
9494
print('{0} not found: http_status={1}, request_id={2}'.format(key, e.status, e.request_id))
9595
96+
97+
98+
设置日志
99+
---------------
100+
使用下面的代码可以设置oss2的日志级别.
101+
102+
.. code-block:: python
103+
104+
import logging
105+
logging.getLogger('oss2').setLevel(logging.WARNING)
106+
96107
测试
97108
----
98109

README.rst

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -93,6 +93,15 @@ The Python SDK interface will throw an exception in case of an error (see oss2.e
9393
except oss2.exceptions.NoSuchKey as e:
9494
print('{0} not found: http_status={1}, request_id={2}'.format(key, e.status, e.request_id))
9595
96+
Setup Logging
97+
---------------
98+
99+
The following code can set the logging level of 'oss2'.
100+
.. code-block:: python
101+
102+
import logging
103+
logging.getLogger('oss2').setLevel(logging.WARNING)
104+
96105
Testing
97106
-------
98107

examples/object_basic.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,12 @@
3434
# 上传一段字符串。Object名是motto.txt,内容是一段名言。
3535
bucket.put_object('motto.txt', 'Never give up. - Jack Ma')
3636

37+
# 获取Object的metadata
38+
object_meta = bucket.get_object_meta('你的对象名')
39+
print('last modified: ' + object_meta.last_modified)
40+
print('etag: ' + object_meta.etag)
41+
print('size: ' + object_meta.content_length)
42+
3743
# 下载到本地文件
3844
bucket.get_object_to_file('motto.txt', '本地文件名.txt')
3945

oss2/__init__.py

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
__version__ = '2.6.0'
1+
__version__ = '2.6.1'
22

33
from . import models, exceptions
44

@@ -57,6 +57,3 @@ def set_stream_logger(name='oss2', level=logging.DEBUG, format_string=None):
5757
formatter = logging.Formatter(format_string)
5858
fh.setFormatter(formatter)
5959
logger.addHandler(fh)
60-
61-
62-
set_stream_logger('oss2', logging.INFO)

oss2/api.py

Lines changed: 211 additions & 177 deletions
Large diffs are not rendered by default.

oss2/auth.py

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -17,10 +17,10 @@
1717

1818
def make_auth(access_key_id, access_key_secret, auth_version=AUTH_VERSION_1):
1919
if auth_version == AUTH_VERSION_2:
20-
logger.info("Init Auth V2: access_key_id: {0}, access_key_secret: ******".format(access_key_id))
20+
logger.debug("Init Auth V2: access_key_id: {0}, access_key_secret: ******".format(access_key_id))
2121
return AuthV2(access_key_id.strip(), access_key_secret.strip())
2222
else:
23-
logger.info("Init Auth v1: access_key_id: {0}, access_key_secret: ******".format(access_key_id))
23+
logger.debug("Init Auth v1: access_key_id: {0}, access_key_secret: ******".format(access_key_id))
2424
return Auth(access_key_id.strip(), access_key_secret.strip())
2525

2626

@@ -30,7 +30,7 @@ def __init__(self, access_key_id, access_key_secret):
3030
self.id = access_key_id.strip()
3131
self.secret = access_key_secret.strip()
3232

33-
def _sign_rtmp_url(self, url, bucket_name, channel_name, playlist_name, expires, params):
33+
def _sign_rtmp_url(self, url, bucket_name, channel_name, expires, params):
3434
expiration_time = int(time.time()) + expires
3535

3636
canonicalized_resource = "/%s/%s" % (bucket_name, channel_name)
@@ -156,7 +156,7 @@ def __param_to_query(self, k, v):
156156
return k + '=' + v
157157
else:
158158
return k
159-
159+
160160

161161
class AnonymousAuth(object):
162162
"""用于匿名访问。
@@ -171,9 +171,9 @@ def _sign_request(self, req, bucket_name, key):
171171
def _sign_url(self, req, bucket_name, key, expires):
172172
return req.url + '?' + '&'.join(_param_to_quoted_query(k, v) for k, v in req.params.items())
173173

174-
def _sign_rtmp_url(self, url, bucket_name, channel_name, playlist_name, expires, params):
174+
def _sign_rtmp_url(self, url, bucket_name, channel_name, expires, params):
175175
return url + '?' + '&'.join(_param_to_quoted_query(k, v) for k, v in params.items())
176-
176+
177177

178178
class StsAuth(object):
179179
"""用于STS临时凭证访问。可以通过官方STS客户端获得临时密钥(AccessKeyId、AccessKeySecret)以及临时安全令牌(SecurityToken)。
@@ -187,7 +187,7 @@ class StsAuth(object):
187187
:param str auth_version: 需要生成auth的版本,默认为AUTH_VERSION_1(v1)
188188
"""
189189
def __init__(self, access_key_id, access_key_secret, security_token, auth_version=AUTH_VERSION_1):
190-
logger.info("Init StsAuth: access_key_id: {0}, access_key_secret: ******, security_token: ******".format(access_key_id))
190+
logger.debug("Init StsAuth: access_key_id: {0}, access_key_secret: ******, security_token: ******".format(access_key_id))
191191
self.__auth = make_auth(access_key_id, access_key_secret, auth_version)
192192
self.__security_token = security_token
193193

@@ -199,9 +199,9 @@ def _sign_url(self, req, bucket_name, key, expires):
199199
req.params['security-token'] = self.__security_token
200200
return self.__auth._sign_url(req, bucket_name, key, expires)
201201

202-
def _sign_rtmp_url(self, url, bucket_name, channel_name, playlist_name, expires, params):
202+
def _sign_rtmp_url(self, url, bucket_name, channel_name, expires, params):
203203
params['security-token'] = self.__security_token
204-
return self.__auth._sign_rtmp_url(url, bucket_name, channel_name, playlist_name, expires, params)
204+
return self.__auth._sign_rtmp_url(url, bucket_name, channel_name, expires, params)
205205

206206

207207
def _param_to_quoted_query(k, v):

oss2/exceptions.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -232,12 +232,14 @@ class AccessDenied(ServerError):
232232

233233
class SelectOperationFailed(ServerError):
234234
code = 'SelectOperationFailed'
235-
def __init__(self, status, message):
235+
def __init__(self, status, code, message):
236236
self.status = status
237+
self.code = code
237238
self.message = message
238239

239240
def __str__(self):
240241
error = {'status': self.status,
242+
'code': self.code,
241243
'details': self.message}
242244
return str(error)
243245

oss2/models.py

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -95,8 +95,10 @@ def __init__(self, resp):
9595
for data in self.select_resp: # waiting the response body to finish
9696
pass
9797

98-
self.csv_rows = self.select_resp.rows
99-
self.csv_splits = self.select_resp.splits
98+
self.csv_rows = self.select_resp.rows # to be compatible with previous version.
99+
self.csv_splits = self.select_resp.splits # to be compatible with previous version.
100+
self.rows = self.csv_rows
101+
self.splits = self.csv_splits
100102

101103

102104
class GetObjectMetaResult(RequestResult):
@@ -671,7 +673,7 @@ class LiveChannelInfo(object):
671673
def __init__(self,
672674
status = 'enabled',
673675
description = '',
674-
target = None,
676+
target = LiveChannelInfoTarget(),
675677
last_modified = None,
676678
name = None,
677679
play_url = None,

0 commit comments

Comments
 (0)