aliyun-log-python-sdk 0.9.38__tar.gz → 0.9.39__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (148) hide show
  1. {aliyun_log_python_sdk-0.9.38/aliyun_log_python_sdk.egg-info → aliyun_log_python_sdk-0.9.39}/PKG-INFO +1 -1
  2. {aliyun_log_python_sdk-0.9.38 → aliyun_log_python_sdk-0.9.39}/aliyun/log/auth.py +20 -8
  3. {aliyun_log_python_sdk-0.9.38 → aliyun_log_python_sdk-0.9.39}/aliyun/log/object_response.py +0 -7
  4. {aliyun_log_python_sdk-0.9.38 → aliyun_log_python_sdk-0.9.39}/aliyun/log/util.py +10 -1
  5. {aliyun_log_python_sdk-0.9.38 → aliyun_log_python_sdk-0.9.39}/aliyun/log/version.py +1 -1
  6. {aliyun_log_python_sdk-0.9.38 → aliyun_log_python_sdk-0.9.39/aliyun_log_python_sdk.egg-info}/PKG-INFO +1 -1
  7. {aliyun_log_python_sdk-0.9.38 → aliyun_log_python_sdk-0.9.39}/LICENSE +0 -0
  8. {aliyun_log_python_sdk-0.9.38 → aliyun_log_python_sdk-0.9.39}/README.md +0 -0
  9. {aliyun_log_python_sdk-0.9.38 → aliyun_log_python_sdk-0.9.39}/aliyun/__init__.py +0 -0
  10. {aliyun_log_python_sdk-0.9.38 → aliyun_log_python_sdk-0.9.39}/aliyun/log/__init__.py +0 -0
  11. {aliyun_log_python_sdk-0.9.38 → aliyun_log_python_sdk-0.9.39}/aliyun/log/_proto_py2/__init__.py +0 -0
  12. {aliyun_log_python_sdk-0.9.38 → aliyun_log_python_sdk-0.9.39}/aliyun/log/_proto_py2/log_logs_pb2.py +0 -0
  13. {aliyun_log_python_sdk-0.9.38 → aliyun_log_python_sdk-0.9.39}/aliyun/log/_proto_py2/log_logs_raw_pb2.py +0 -0
  14. {aliyun_log_python_sdk-0.9.38 → aliyun_log_python_sdk-0.9.39}/aliyun/log/acl_config.py +0 -0
  15. {aliyun_log_python_sdk-0.9.38 → aliyun_log_python_sdk-0.9.39}/aliyun/log/acl_response.py +0 -0
  16. {aliyun_log_python_sdk-0.9.38 → aliyun_log_python_sdk-0.9.39}/aliyun/log/async_sql_pb2.py +0 -0
  17. {aliyun_log_python_sdk-0.9.38 → aliyun_log_python_sdk-0.9.39}/aliyun/log/async_sql_response.py +0 -0
  18. {aliyun_log_python_sdk-0.9.38 → aliyun_log_python_sdk-0.9.39}/aliyun/log/common_response.py +0 -0
  19. {aliyun_log_python_sdk-0.9.38 → aliyun_log_python_sdk-0.9.39}/aliyun/log/compress.py +0 -0
  20. {aliyun_log_python_sdk-0.9.38 → aliyun_log_python_sdk-0.9.39}/aliyun/log/consumer/__init__.py +0 -0
  21. {aliyun_log_python_sdk-0.9.38 → aliyun_log_python_sdk-0.9.39}/aliyun/log/consumer/checkpoint_tracker.py +0 -0
  22. {aliyun_log_python_sdk-0.9.38 → aliyun_log_python_sdk-0.9.39}/aliyun/log/consumer/config.py +0 -0
  23. {aliyun_log_python_sdk-0.9.38 → aliyun_log_python_sdk-0.9.39}/aliyun/log/consumer/consumer_client.py +0 -0
  24. {aliyun_log_python_sdk-0.9.38 → aliyun_log_python_sdk-0.9.39}/aliyun/log/consumer/exceptions.py +0 -0
  25. {aliyun_log_python_sdk-0.9.38 → aliyun_log_python_sdk-0.9.39}/aliyun/log/consumer/fetched_log_group.py +0 -0
  26. {aliyun_log_python_sdk-0.9.38 → aliyun_log_python_sdk-0.9.39}/aliyun/log/consumer/heart_beat.py +0 -0
  27. {aliyun_log_python_sdk-0.9.38 → aliyun_log_python_sdk-0.9.39}/aliyun/log/consumer/preprocessor.py +0 -0
  28. {aliyun_log_python_sdk-0.9.38 → aliyun_log_python_sdk-0.9.39}/aliyun/log/consumer/shard_worker.py +0 -0
  29. {aliyun_log_python_sdk-0.9.38 → aliyun_log_python_sdk-0.9.39}/aliyun/log/consumer/tasks.py +0 -0
  30. {aliyun_log_python_sdk-0.9.38 → aliyun_log_python_sdk-0.9.39}/aliyun/log/consumer/worker.py +0 -0
  31. {aliyun_log_python_sdk-0.9.38 → aliyun_log_python_sdk-0.9.39}/aliyun/log/consumer_group_request.py +0 -0
  32. {aliyun_log_python_sdk-0.9.38 → aliyun_log_python_sdk-0.9.39}/aliyun/log/consumer_group_response.py +0 -0
  33. {aliyun_log_python_sdk-0.9.38 → aliyun_log_python_sdk-0.9.39}/aliyun/log/credentials.py +0 -0
  34. {aliyun_log_python_sdk-0.9.38 → aliyun_log_python_sdk-0.9.39}/aliyun/log/cursor_response.py +0 -0
  35. {aliyun_log_python_sdk-0.9.38 → aliyun_log_python_sdk-0.9.39}/aliyun/log/cursor_time_response.py +0 -0
  36. {aliyun_log_python_sdk-0.9.38 → aliyun_log_python_sdk-0.9.39}/aliyun/log/delete_async_sql_request.py +0 -0
  37. {aliyun_log_python_sdk-0.9.38 → aliyun_log_python_sdk-0.9.39}/aliyun/log/deletelogsrequest.py +0 -0
  38. {aliyun_log_python_sdk-0.9.38 → aliyun_log_python_sdk-0.9.39}/aliyun/log/deletelogssresponse.py +0 -0
  39. {aliyun_log_python_sdk-0.9.38 → aliyun_log_python_sdk-0.9.39}/aliyun/log/es_migration/__init__.py +0 -0
  40. {aliyun_log_python_sdk-0.9.38 → aliyun_log_python_sdk-0.9.39}/aliyun/log/es_migration/doc_logitem_converter.py +0 -0
  41. {aliyun_log_python_sdk-0.9.38 → aliyun_log_python_sdk-0.9.39}/aliyun/log/es_migration/index_logstore_mappings.py +0 -0
  42. {aliyun_log_python_sdk-0.9.38 → aliyun_log_python_sdk-0.9.39}/aliyun/log/es_migration/mapping_index_converter.py +0 -0
  43. {aliyun_log_python_sdk-0.9.38 → aliyun_log_python_sdk-0.9.39}/aliyun/log/es_migration/migration_log.py +0 -0
  44. {aliyun_log_python_sdk-0.9.38 → aliyun_log_python_sdk-0.9.39}/aliyun/log/es_migration/migration_manager.py +0 -0
  45. {aliyun_log_python_sdk-0.9.38 → aliyun_log_python_sdk-0.9.39}/aliyun/log/es_migration/migration_response.py +0 -0
  46. {aliyun_log_python_sdk-0.9.38 → aliyun_log_python_sdk-0.9.39}/aliyun/log/es_migration/migration_task.py +0 -0
  47. {aliyun_log_python_sdk-0.9.38 → aliyun_log_python_sdk-0.9.39}/aliyun/log/es_migration/util.py +0 -0
  48. {aliyun_log_python_sdk-0.9.38 → aliyun_log_python_sdk-0.9.39}/aliyun/log/etl_config_response.py +0 -0
  49. {aliyun_log_python_sdk-0.9.38 → aliyun_log_python_sdk-0.9.39}/aliyun/log/etl_core/__init__.py +0 -0
  50. {aliyun_log_python_sdk-0.9.38 → aliyun_log_python_sdk-0.9.39}/aliyun/log/etl_core/config_parser.py +0 -0
  51. {aliyun_log_python_sdk-0.9.38 → aliyun_log_python_sdk-0.9.39}/aliyun/log/etl_core/etl_util.py +0 -0
  52. {aliyun_log_python_sdk-0.9.38 → aliyun_log_python_sdk-0.9.39}/aliyun/log/etl_core/exceptions.py +0 -0
  53. {aliyun_log_python_sdk-0.9.38 → aliyun_log_python_sdk-0.9.39}/aliyun/log/etl_core/restrict_config_parser.py +0 -0
  54. {aliyun_log_python_sdk-0.9.38 → aliyun_log_python_sdk-0.9.39}/aliyun/log/etl_core/runner.py +0 -0
  55. {aliyun_log_python_sdk-0.9.38 → aliyun_log_python_sdk-0.9.39}/aliyun/log/etl_core/settings.py +0 -0
  56. {aliyun_log_python_sdk-0.9.38 → aliyun_log_python_sdk-0.9.39}/aliyun/log/etl_core/trans_comp/__init__.py +0 -0
  57. {aliyun_log_python_sdk-0.9.38 → aliyun_log_python_sdk-0.9.39}/aliyun/log/etl_core/trans_comp/trans_base.py +0 -0
  58. {aliyun_log_python_sdk-0.9.38 → aliyun_log_python_sdk-0.9.39}/aliyun/log/etl_core/trans_comp/trans_csv.py +0 -0
  59. {aliyun_log_python_sdk-0.9.38 → aliyun_log_python_sdk-0.9.39}/aliyun/log/etl_core/trans_comp/trans_json.py +0 -0
  60. {aliyun_log_python_sdk-0.9.38 → aliyun_log_python_sdk-0.9.39}/aliyun/log/etl_core/trans_comp/trans_kv.py +0 -0
  61. {aliyun_log_python_sdk-0.9.38 → aliyun_log_python_sdk-0.9.39}/aliyun/log/etl_core/trans_comp/trans_lookup.py +0 -0
  62. {aliyun_log_python_sdk-0.9.38 → aliyun_log_python_sdk-0.9.39}/aliyun/log/etl_core/trans_comp/trans_mv.py +0 -0
  63. {aliyun_log_python_sdk-0.9.38 → aliyun_log_python_sdk-0.9.39}/aliyun/log/etl_core/trans_comp/trans_regex.py +0 -0
  64. {aliyun_log_python_sdk-0.9.38 → aliyun_log_python_sdk-0.9.39}/aliyun/log/etl_core/trans_comp/trans_set_field.py +0 -0
  65. {aliyun_log_python_sdk-0.9.38 → aliyun_log_python_sdk-0.9.39}/aliyun/log/etl_core/transform/__init__.py +0 -0
  66. {aliyun_log_python_sdk-0.9.38 → aliyun_log_python_sdk-0.9.39}/aliyun/log/etl_core/transform/condition_list.py +0 -0
  67. {aliyun_log_python_sdk-0.9.38 → aliyun_log_python_sdk-0.9.39}/aliyun/log/etl_core/transform/condition_transform.py +0 -0
  68. {aliyun_log_python_sdk-0.9.38 → aliyun_log_python_sdk-0.9.39}/aliyun/log/etl_core/transform/condition_util.py +0 -0
  69. {aliyun_log_python_sdk-0.9.38 → aliyun_log_python_sdk-0.9.39}/aliyun/log/etl_core/transform/transform_base.py +0 -0
  70. {aliyun_log_python_sdk-0.9.38 → aliyun_log_python_sdk-0.9.39}/aliyun/log/etl_core/transform/transform_list.py +0 -0
  71. {aliyun_log_python_sdk-0.9.38 → aliyun_log_python_sdk-0.9.39}/aliyun/log/etl_core/transform/transform_meta.py +0 -0
  72. {aliyun_log_python_sdk-0.9.38 → aliyun_log_python_sdk-0.9.39}/aliyun/log/export_response.py +0 -0
  73. {aliyun_log_python_sdk-0.9.38 → aliyun_log_python_sdk-0.9.39}/aliyun/log/ext/__init__.py +0 -0
  74. {aliyun_log_python_sdk-0.9.38 → aliyun_log_python_sdk-0.9.39}/aliyun/log/ext/jupyter_magic.py +0 -0
  75. {aliyun_log_python_sdk-0.9.38 → aliyun_log_python_sdk-0.9.39}/aliyun/log/ext/syslogclient.py +0 -0
  76. {aliyun_log_python_sdk-0.9.38 → aliyun_log_python_sdk-0.9.39}/aliyun/log/external_store_config.py +0 -0
  77. {aliyun_log_python_sdk-0.9.38 → aliyun_log_python_sdk-0.9.39}/aliyun/log/external_store_config_response.py +0 -0
  78. {aliyun_log_python_sdk-0.9.38 → aliyun_log_python_sdk-0.9.39}/aliyun/log/get_async_sql_request.py +0 -0
  79. {aliyun_log_python_sdk-0.9.38 → aliyun_log_python_sdk-0.9.39}/aliyun/log/getcontextlogsresponse.py +0 -0
  80. {aliyun_log_python_sdk-0.9.38 → aliyun_log_python_sdk-0.9.39}/aliyun/log/getdeletelogsstatusrequest.py +0 -0
  81. {aliyun_log_python_sdk-0.9.38 → aliyun_log_python_sdk-0.9.39}/aliyun/log/getdeletelogsstatusresponse.py +0 -0
  82. {aliyun_log_python_sdk-0.9.38 → aliyun_log_python_sdk-0.9.39}/aliyun/log/gethistogramsrequest.py +0 -0
  83. {aliyun_log_python_sdk-0.9.38 → aliyun_log_python_sdk-0.9.39}/aliyun/log/gethistogramsresponse.py +0 -0
  84. {aliyun_log_python_sdk-0.9.38 → aliyun_log_python_sdk-0.9.39}/aliyun/log/getlogsrequest.py +0 -0
  85. {aliyun_log_python_sdk-0.9.38 → aliyun_log_python_sdk-0.9.39}/aliyun/log/getlogsresponse.py +0 -0
  86. {aliyun_log_python_sdk-0.9.38 → aliyun_log_python_sdk-0.9.39}/aliyun/log/histogram.py +0 -0
  87. {aliyun_log_python_sdk-0.9.38 → aliyun_log_python_sdk-0.9.39}/aliyun/log/index_config.py +0 -0
  88. {aliyun_log_python_sdk-0.9.38 → aliyun_log_python_sdk-0.9.39}/aliyun/log/index_config_response.py +0 -0
  89. {aliyun_log_python_sdk-0.9.38 → aliyun_log_python_sdk-0.9.39}/aliyun/log/ingestion_response.py +0 -0
  90. {aliyun_log_python_sdk-0.9.38 → aliyun_log_python_sdk-0.9.39}/aliyun/log/job.py +0 -0
  91. {aliyun_log_python_sdk-0.9.38 → aliyun_log_python_sdk-0.9.39}/aliyun/log/listdeletelogsstasksrequest.py +0 -0
  92. {aliyun_log_python_sdk-0.9.38 → aliyun_log_python_sdk-0.9.39}/aliyun/log/listdeletelogsstasksresponse.py +0 -0
  93. {aliyun_log_python_sdk-0.9.38 → aliyun_log_python_sdk-0.9.39}/aliyun/log/listlogstoresrequest.py +0 -0
  94. {aliyun_log_python_sdk-0.9.38 → aliyun_log_python_sdk-0.9.39}/aliyun/log/listlogstoresresponse.py +0 -0
  95. {aliyun_log_python_sdk-0.9.38 → aliyun_log_python_sdk-0.9.39}/aliyun/log/listtopicsrequest.py +0 -0
  96. {aliyun_log_python_sdk-0.9.38 → aliyun_log_python_sdk-0.9.39}/aliyun/log/listtopicsresponse.py +0 -0
  97. {aliyun_log_python_sdk-0.9.38 → aliyun_log_python_sdk-0.9.39}/aliyun/log/log_logs_pb2.py +0 -0
  98. {aliyun_log_python_sdk-0.9.38 → aliyun_log_python_sdk-0.9.39}/aliyun/log/log_logs_raw_pb2.py +0 -0
  99. {aliyun_log_python_sdk-0.9.38 → aliyun_log_python_sdk-0.9.39}/aliyun/log/logclient.py +0 -0
  100. {aliyun_log_python_sdk-0.9.38 → aliyun_log_python_sdk-0.9.39}/aliyun/log/logclient_core.py +0 -0
  101. {aliyun_log_python_sdk-0.9.38 → aliyun_log_python_sdk-0.9.39}/aliyun/log/logclient_operator.py +0 -0
  102. {aliyun_log_python_sdk-0.9.38 → aliyun_log_python_sdk-0.9.39}/aliyun/log/logexception.py +0 -0
  103. {aliyun_log_python_sdk-0.9.38 → aliyun_log_python_sdk-0.9.39}/aliyun/log/logger_hanlder.py +0 -0
  104. {aliyun_log_python_sdk-0.9.38 → aliyun_log_python_sdk-0.9.39}/aliyun/log/logitem.py +0 -0
  105. {aliyun_log_python_sdk-0.9.38 → aliyun_log_python_sdk-0.9.39}/aliyun/log/logrequest.py +0 -0
  106. {aliyun_log_python_sdk-0.9.38 → aliyun_log_python_sdk-0.9.39}/aliyun/log/logresponse.py +0 -0
  107. {aliyun_log_python_sdk-0.9.38 → aliyun_log_python_sdk-0.9.39}/aliyun/log/logstore_config_response.py +0 -0
  108. {aliyun_log_python_sdk-0.9.38 → aliyun_log_python_sdk-0.9.39}/aliyun/log/logtail_config_detail.py +0 -0
  109. {aliyun_log_python_sdk-0.9.38 → aliyun_log_python_sdk-0.9.39}/aliyun/log/logtail_config_response.py +0 -0
  110. {aliyun_log_python_sdk-0.9.38 → aliyun_log_python_sdk-0.9.39}/aliyun/log/logtail_pipeline_config_detail.py +0 -0
  111. {aliyun_log_python_sdk-0.9.38 → aliyun_log_python_sdk-0.9.39}/aliyun/log/logtail_pipeline_config_response.py +0 -0
  112. {aliyun_log_python_sdk-0.9.38 → aliyun_log_python_sdk-0.9.39}/aliyun/log/machine_group_detail.py +0 -0
  113. {aliyun_log_python_sdk-0.9.38 → aliyun_log_python_sdk-0.9.39}/aliyun/log/machinegroup_response.py +0 -0
  114. {aliyun_log_python_sdk-0.9.38 → aliyun_log_python_sdk-0.9.39}/aliyun/log/metering_mode_response.py +0 -0
  115. {aliyun_log_python_sdk-0.9.38 → aliyun_log_python_sdk-0.9.39}/aliyun/log/odps_sink.py +0 -0
  116. {aliyun_log_python_sdk-0.9.38 → aliyun_log_python_sdk-0.9.39}/aliyun/log/oss_sink.py +0 -0
  117. {aliyun_log_python_sdk-0.9.38 → aliyun_log_python_sdk-0.9.39}/aliyun/log/pluralize.py +0 -0
  118. {aliyun_log_python_sdk-0.9.38 → aliyun_log_python_sdk-0.9.39}/aliyun/log/project_response.py +0 -0
  119. {aliyun_log_python_sdk-0.9.38 → aliyun_log_python_sdk-0.9.39}/aliyun/log/proto.py +0 -0
  120. {aliyun_log_python_sdk-0.9.38 → aliyun_log_python_sdk-0.9.39}/aliyun/log/pulllog_response.py +0 -0
  121. {aliyun_log_python_sdk-0.9.38 → aliyun_log_python_sdk-0.9.39}/aliyun/log/putlogsrequest.py +0 -0
  122. {aliyun_log_python_sdk-0.9.38 → aliyun_log_python_sdk-0.9.39}/aliyun/log/putlogsresponse.py +0 -0
  123. {aliyun_log_python_sdk-0.9.38 → aliyun_log_python_sdk-0.9.39}/aliyun/log/queriedlog.py +0 -0
  124. {aliyun_log_python_sdk-0.9.38 → aliyun_log_python_sdk-0.9.39}/aliyun/log/rebuild_index_response.py +0 -0
  125. {aliyun_log_python_sdk-0.9.38 → aliyun_log_python_sdk-0.9.39}/aliyun/log/resource_params.py +0 -0
  126. {aliyun_log_python_sdk-0.9.38 → aliyun_log_python_sdk-0.9.39}/aliyun/log/resource_response.py +0 -0
  127. {aliyun_log_python_sdk-0.9.38 → aliyun_log_python_sdk-0.9.39}/aliyun/log/scheduled_sql.py +0 -0
  128. {aliyun_log_python_sdk-0.9.38 → aliyun_log_python_sdk-0.9.39}/aliyun/log/scheduled_sql_response.py +0 -0
  129. {aliyun_log_python_sdk-0.9.38 → aliyun_log_python_sdk-0.9.39}/aliyun/log/shard_response.py +0 -0
  130. {aliyun_log_python_sdk-0.9.38 → aliyun_log_python_sdk-0.9.39}/aliyun/log/shipper_config.py +0 -0
  131. {aliyun_log_python_sdk-0.9.38 → aliyun_log_python_sdk-0.9.39}/aliyun/log/shipper_response.py +0 -0
  132. {aliyun_log_python_sdk-0.9.38 → aliyun_log_python_sdk-0.9.39}/aliyun/log/sink.py +0 -0
  133. {aliyun_log_python_sdk-0.9.38 → aliyun_log_python_sdk-0.9.39}/aliyun/log/sql_instance_response.py +0 -0
  134. {aliyun_log_python_sdk-0.9.38 → aliyun_log_python_sdk-0.9.39}/aliyun/log/store_view.py +0 -0
  135. {aliyun_log_python_sdk-0.9.38 → aliyun_log_python_sdk-0.9.39}/aliyun/log/store_view_response.py +0 -0
  136. {aliyun_log_python_sdk-0.9.38 → aliyun_log_python_sdk-0.9.39}/aliyun/log/submit_async_sql_request.py +0 -0
  137. {aliyun_log_python_sdk-0.9.38 → aliyun_log_python_sdk-0.9.39}/aliyun/log/substore_config_response.py +0 -0
  138. {aliyun_log_python_sdk-0.9.38 → aliyun_log_python_sdk-0.9.39}/aliyun/log/tag_response.py +0 -0
  139. {aliyun_log_python_sdk-0.9.38 → aliyun_log_python_sdk-0.9.39}/aliyun/log/topostore_params.py +0 -0
  140. {aliyun_log_python_sdk-0.9.38 → aliyun_log_python_sdk-0.9.39}/aliyun/log/topostore_response.py +0 -0
  141. {aliyun_log_python_sdk-0.9.38 → aliyun_log_python_sdk-0.9.39}/aliyun_log_python_sdk.egg-info/SOURCES.txt +0 -0
  142. {aliyun_log_python_sdk-0.9.38 → aliyun_log_python_sdk-0.9.39}/aliyun_log_python_sdk.egg-info/dependency_links.txt +0 -0
  143. {aliyun_log_python_sdk-0.9.38 → aliyun_log_python_sdk-0.9.39}/aliyun_log_python_sdk.egg-info/requires.txt +0 -0
  144. {aliyun_log_python_sdk-0.9.38 → aliyun_log_python_sdk-0.9.39}/aliyun_log_python_sdk.egg-info/top_level.txt +0 -0
  145. {aliyun_log_python_sdk-0.9.38 → aliyun_log_python_sdk-0.9.39}/setup.cfg +0 -0
  146. {aliyun_log_python_sdk-0.9.38 → aliyun_log_python_sdk-0.9.39}/setup.py +0 -0
  147. {aliyun_log_python_sdk-0.9.38 → aliyun_log_python_sdk-0.9.39}/tests/test_alert.py +0 -0
  148. {aliyun_log_python_sdk-0.9.38 → aliyun_log_python_sdk-0.9.39}/tests/test_util.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: aliyun-log-python-sdk
3
- Version: 0.9.38
3
+ Version: 0.9.39
4
4
  Summary: Aliyun log service Python client SDK
5
5
  Home-page: https://github.com/aliyun/aliyun-log-python-sdk
6
6
  Author: Aliyun
@@ -68,13 +68,17 @@ class AuthV1(AuthBase):
68
68
  headers['x-log-signaturemethod'] = 'hmac-sha1'
69
69
  headers['Date'] = self._getGMT()
70
70
 
71
+ content_md5 = None
72
+ # we don't need content-md5 in signature if compute_content_hash is False
71
73
  if body and compute_content_hash:
72
- headers['Content-MD5'] = Util.cal_md5(body)
74
+ content_md5 = Util.cal_md5(body)
75
+ headers['Content-MD5'] = content_md5
76
+
73
77
  if not credentials.get_access_key_secret():
74
78
  return six.b('')
75
79
  content = method + '\n'
76
- if 'Content-MD5' in headers:
77
- content += headers['Content-MD5']
80
+ if content_md5 is not None:
81
+ content += content_md5
78
82
  content += '\n'
79
83
  if 'Content-Type' in headers:
80
84
  content += headers['Content-Type']
@@ -87,6 +91,8 @@ class AuthV1(AuthBase):
87
91
  headers['x-log-date'] = headers['Date'] # bypass some proxy doesn't allow "Date" in header issue.
88
92
 
89
93
 
94
+ _EMPTY_CONTENT_SHA256 = 'e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855'
95
+
90
96
  class AuthV4(AuthBase):
91
97
  def __init__(self, credentials_provider, region):
92
98
  AuthBase.__init__(self, credentials_provider)
@@ -94,16 +100,18 @@ class AuthV4(AuthBase):
94
100
 
95
101
  def sign_request(self, method, resource, params, headers, body, compute_content_hash=True):
96
102
  current_time = datetime.utcnow().strftime("%Y%m%dT%H%M%SZ")
97
- headers['Authorization'] = self._do_sign_request(method, resource, params, headers, body, current_time)
103
+ headers['Authorization'] = self._do_sign_request(method, resource, params, headers, body, current_time, compute_content_hash=compute_content_hash)
98
104
 
99
- def _do_sign_request(self, method, resource, params, headers, body, current_time):
105
+ def _do_sign_request(self, method, resource, params, headers, body, current_time, compute_content_hash=True):
100
106
  credentials = self.credentials_provider.get_credentials()
101
107
 
102
108
  if credentials.get_security_token():
103
109
  headers['x-acs-security-token'] = credentials.get_security_token()
104
110
 
105
- content_sha256 = sha256(body).hexdigest() \
106
- if body else 'e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855'
111
+ content_sha256 = _EMPTY_CONTENT_SHA256
112
+ if compute_content_hash and body:
113
+ content_sha256 = sha256(body).hexdigest()
114
+
107
115
  headers['x-log-content-sha256'] = content_sha256
108
116
  headers['x-log-date'] = current_time
109
117
  current_date = current_time[:8]
@@ -111,7 +119,11 @@ class AuthV4(AuthBase):
111
119
  signed_headers = ''
112
120
  for original_key, value in headers.items():
113
121
  key = original_key.lower()
114
- if key == 'content-type' or key == 'host' or key.startswith('x-log-') or key.startswith('x-acs-'):
122
+ if (
123
+ key == "content-type"
124
+ or key == "host"
125
+ or Util._is_extra_sign_header(key)
126
+ ):
115
127
  canonical_headers[key] = value
116
128
  headers_to_string = ''
117
129
  for key, value in sorted(canonical_headers.items()):
@@ -55,13 +55,6 @@ class GetObjectResponse(LogResponse):
55
55
  """
56
56
  return Util.h_v_td(self.headers, 'ETag', None)
57
57
 
58
- def get_last_modified(self):
59
- """ Get the last modified time of the object.
60
-
61
- :return: string, last modified time, may be None if not set
62
- """
63
- return Util.h_v_td(self.headers, 'Last-Modified', None)
64
-
65
58
  def get_content_type(self):
66
59
  """ Get the content type of the object.
67
60
 
@@ -40,6 +40,7 @@ def base64_decodestring(s):
40
40
  s = s.encode('utf8')
41
41
  return base64.decodebytes(s).decode('utf8')
42
42
 
43
+ _EXCLUDE_SIGN_HEADER_PREFIX = 'x-log-meta-'
43
44
 
44
45
  class Util(object):
45
46
  @staticmethod
@@ -90,10 +91,18 @@ class Util(object):
90
91
  def canonicalized_log_headers(headers):
91
92
  content = ''
92
93
  for key in sorted(six.iterkeys(headers)):
93
- if key[:6].lower() in ('x-log-', 'x-acs-'): # x-log- header
94
+ if Util._is_extra_sign_header(key):
94
95
  content += key + ':' + str(headers[key]) + "\n"
95
96
  return content
96
97
 
98
+ @staticmethod
99
+ def _is_extra_sign_header(key):
100
+ lower_key = key.lower()
101
+ return lower_key.startswith("x-acs-") or (
102
+ lower_key.startswith("x-log-")
103
+ and not lower_key.startswith(_EXCLUDE_SIGN_HEADER_PREFIX)
104
+ )
105
+
97
106
  @staticmethod
98
107
  def url_encode(params):
99
108
  for key, value in params.items(): # urllib.urlencode accept 8-bit str
@@ -1,4 +1,4 @@
1
- __version__ = '0.9.38'
1
+ __version__ = '0.9.39'
2
2
 
3
3
  import sys
4
4
  OS_VERSION = str(sys.platform)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: aliyun-log-python-sdk
3
- Version: 0.9.38
3
+ Version: 0.9.39
4
4
  Summary: Aliyun log service Python client SDK
5
5
  Home-page: https://github.com/aliyun/aliyun-log-python-sdk
6
6
  Author: Aliyun