From ad17753418f454ec63a00d2647e073967c54d587 Mon Sep 17 00:00:00 2001 From: Jianwei Han Date: Mon, 7 Apr 2014 19:51:20 +0800 Subject: [PATCH] OSS from Aliyun --- .gitignore | 6 + OSS_Python_SDK.pdf | Bin 0 -> 333379 bytes README | 326 +++++++++++ oss/__init__.py | 0 oss/oss_api.py | 1497 ++++++++++++++++++++++++++++++++++++++++++++++++ oss/oss_sample.py | 261 +++++++++ oss/oss_util.py | 1026 +++++++++++++++++++++++++++++++++ oss/oss_xml_handler.py | 331 +++++++++++ oss/pkg_info.py | 10 + osscmd | 1324 ++++++++++++++++++++++++++++++++++++++++++ setup.py | 54 ++ 11 files changed, 4835 insertions(+) create mode 100644 .gitignore create mode 100644 OSS_Python_SDK.pdf create mode 100644 README create mode 100644 oss/__init__.py create mode 100644 oss/oss_api.py create mode 100644 oss/oss_sample.py create mode 100644 oss/oss_util.py create mode 100644 oss/oss_xml_handler.py create mode 100644 oss/pkg_info.py create mode 100755 osscmd create mode 100644 setup.py diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..a1b8ab3 --- /dev/null +++ b/.gitignore @@ -0,0 +1,6 @@ +*.pyc +.venv +.idea +*.iml +*.egg-info + diff --git a/OSS_Python_SDK.pdf b/OSS_Python_SDK.pdf new file mode 100644 index 0000000000000000000000000000000000000000..155571fa029053f59f0c24bc55a907cef1e631b9 GIT binary patch literal 333379 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