aliyun-log-python-sdk 0.9.38__tar.gz → 0.9.40__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 (149) hide show
  1. {aliyun_log_python_sdk-0.9.38/aliyun_log_python_sdk.egg-info → aliyun_log_python_sdk-0.9.40}/PKG-INFO +1 -1
  2. {aliyun_log_python_sdk-0.9.38 → aliyun_log_python_sdk-0.9.40}/aliyun/log/__init__.py +2 -0
  3. {aliyun_log_python_sdk-0.9.38 → aliyun_log_python_sdk-0.9.40}/aliyun/log/auth.py +20 -8
  4. {aliyun_log_python_sdk-0.9.38 → aliyun_log_python_sdk-0.9.40}/aliyun/log/logclient.py +57 -0
  5. aliyun_log_python_sdk-0.9.40/aliyun/log/multimodal_config_response.py +61 -0
  6. {aliyun_log_python_sdk-0.9.38 → aliyun_log_python_sdk-0.9.40}/aliyun/log/object_response.py +0 -7
  7. {aliyun_log_python_sdk-0.9.38 → aliyun_log_python_sdk-0.9.40}/aliyun/log/util.py +10 -1
  8. {aliyun_log_python_sdk-0.9.38 → aliyun_log_python_sdk-0.9.40}/aliyun/log/version.py +1 -1
  9. {aliyun_log_python_sdk-0.9.38 → aliyun_log_python_sdk-0.9.40/aliyun_log_python_sdk.egg-info}/PKG-INFO +1 -1
  10. {aliyun_log_python_sdk-0.9.38 → aliyun_log_python_sdk-0.9.40}/aliyun_log_python_sdk.egg-info/SOURCES.txt +1 -0
  11. {aliyun_log_python_sdk-0.9.38 → aliyun_log_python_sdk-0.9.40}/LICENSE +0 -0
  12. {aliyun_log_python_sdk-0.9.38 → aliyun_log_python_sdk-0.9.40}/README.md +0 -0
  13. {aliyun_log_python_sdk-0.9.38 → aliyun_log_python_sdk-0.9.40}/aliyun/__init__.py +0 -0
  14. {aliyun_log_python_sdk-0.9.38 → aliyun_log_python_sdk-0.9.40}/aliyun/log/_proto_py2/__init__.py +0 -0
  15. {aliyun_log_python_sdk-0.9.38 → aliyun_log_python_sdk-0.9.40}/aliyun/log/_proto_py2/log_logs_pb2.py +0 -0
  16. {aliyun_log_python_sdk-0.9.38 → aliyun_log_python_sdk-0.9.40}/aliyun/log/_proto_py2/log_logs_raw_pb2.py +0 -0
  17. {aliyun_log_python_sdk-0.9.38 → aliyun_log_python_sdk-0.9.40}/aliyun/log/acl_config.py +0 -0
  18. {aliyun_log_python_sdk-0.9.38 → aliyun_log_python_sdk-0.9.40}/aliyun/log/acl_response.py +0 -0
  19. {aliyun_log_python_sdk-0.9.38 → aliyun_log_python_sdk-0.9.40}/aliyun/log/async_sql_pb2.py +0 -0
  20. {aliyun_log_python_sdk-0.9.38 → aliyun_log_python_sdk-0.9.40}/aliyun/log/async_sql_response.py +0 -0
  21. {aliyun_log_python_sdk-0.9.38 → aliyun_log_python_sdk-0.9.40}/aliyun/log/common_response.py +0 -0
  22. {aliyun_log_python_sdk-0.9.38 → aliyun_log_python_sdk-0.9.40}/aliyun/log/compress.py +0 -0
  23. {aliyun_log_python_sdk-0.9.38 → aliyun_log_python_sdk-0.9.40}/aliyun/log/consumer/__init__.py +0 -0
  24. {aliyun_log_python_sdk-0.9.38 → aliyun_log_python_sdk-0.9.40}/aliyun/log/consumer/checkpoint_tracker.py +0 -0
  25. {aliyun_log_python_sdk-0.9.38 → aliyun_log_python_sdk-0.9.40}/aliyun/log/consumer/config.py +0 -0
  26. {aliyun_log_python_sdk-0.9.38 → aliyun_log_python_sdk-0.9.40}/aliyun/log/consumer/consumer_client.py +0 -0
  27. {aliyun_log_python_sdk-0.9.38 → aliyun_log_python_sdk-0.9.40}/aliyun/log/consumer/exceptions.py +0 -0
  28. {aliyun_log_python_sdk-0.9.38 → aliyun_log_python_sdk-0.9.40}/aliyun/log/consumer/fetched_log_group.py +0 -0
  29. {aliyun_log_python_sdk-0.9.38 → aliyun_log_python_sdk-0.9.40}/aliyun/log/consumer/heart_beat.py +0 -0
  30. {aliyun_log_python_sdk-0.9.38 → aliyun_log_python_sdk-0.9.40}/aliyun/log/consumer/preprocessor.py +0 -0
  31. {aliyun_log_python_sdk-0.9.38 → aliyun_log_python_sdk-0.9.40}/aliyun/log/consumer/shard_worker.py +0 -0
  32. {aliyun_log_python_sdk-0.9.38 → aliyun_log_python_sdk-0.9.40}/aliyun/log/consumer/tasks.py +0 -0
  33. {aliyun_log_python_sdk-0.9.38 → aliyun_log_python_sdk-0.9.40}/aliyun/log/consumer/worker.py +0 -0
  34. {aliyun_log_python_sdk-0.9.38 → aliyun_log_python_sdk-0.9.40}/aliyun/log/consumer_group_request.py +0 -0
  35. {aliyun_log_python_sdk-0.9.38 → aliyun_log_python_sdk-0.9.40}/aliyun/log/consumer_group_response.py +0 -0
  36. {aliyun_log_python_sdk-0.9.38 → aliyun_log_python_sdk-0.9.40}/aliyun/log/credentials.py +0 -0
  37. {aliyun_log_python_sdk-0.9.38 → aliyun_log_python_sdk-0.9.40}/aliyun/log/cursor_response.py +0 -0
  38. {aliyun_log_python_sdk-0.9.38 → aliyun_log_python_sdk-0.9.40}/aliyun/log/cursor_time_response.py +0 -0
  39. {aliyun_log_python_sdk-0.9.38 → aliyun_log_python_sdk-0.9.40}/aliyun/log/delete_async_sql_request.py +0 -0
  40. {aliyun_log_python_sdk-0.9.38 → aliyun_log_python_sdk-0.9.40}/aliyun/log/deletelogsrequest.py +0 -0
  41. {aliyun_log_python_sdk-0.9.38 → aliyun_log_python_sdk-0.9.40}/aliyun/log/deletelogssresponse.py +0 -0
  42. {aliyun_log_python_sdk-0.9.38 → aliyun_log_python_sdk-0.9.40}/aliyun/log/es_migration/__init__.py +0 -0
  43. {aliyun_log_python_sdk-0.9.38 → aliyun_log_python_sdk-0.9.40}/aliyun/log/es_migration/doc_logitem_converter.py +0 -0
  44. {aliyun_log_python_sdk-0.9.38 → aliyun_log_python_sdk-0.9.40}/aliyun/log/es_migration/index_logstore_mappings.py +0 -0
  45. {aliyun_log_python_sdk-0.9.38 → aliyun_log_python_sdk-0.9.40}/aliyun/log/es_migration/mapping_index_converter.py +0 -0
  46. {aliyun_log_python_sdk-0.9.38 → aliyun_log_python_sdk-0.9.40}/aliyun/log/es_migration/migration_log.py +0 -0
  47. {aliyun_log_python_sdk-0.9.38 → aliyun_log_python_sdk-0.9.40}/aliyun/log/es_migration/migration_manager.py +0 -0
  48. {aliyun_log_python_sdk-0.9.38 → aliyun_log_python_sdk-0.9.40}/aliyun/log/es_migration/migration_response.py +0 -0
  49. {aliyun_log_python_sdk-0.9.38 → aliyun_log_python_sdk-0.9.40}/aliyun/log/es_migration/migration_task.py +0 -0
  50. {aliyun_log_python_sdk-0.9.38 → aliyun_log_python_sdk-0.9.40}/aliyun/log/es_migration/util.py +0 -0
  51. {aliyun_log_python_sdk-0.9.38 → aliyun_log_python_sdk-0.9.40}/aliyun/log/etl_config_response.py +0 -0
  52. {aliyun_log_python_sdk-0.9.38 → aliyun_log_python_sdk-0.9.40}/aliyun/log/etl_core/__init__.py +0 -0
  53. {aliyun_log_python_sdk-0.9.38 → aliyun_log_python_sdk-0.9.40}/aliyun/log/etl_core/config_parser.py +0 -0
  54. {aliyun_log_python_sdk-0.9.38 → aliyun_log_python_sdk-0.9.40}/aliyun/log/etl_core/etl_util.py +0 -0
  55. {aliyun_log_python_sdk-0.9.38 → aliyun_log_python_sdk-0.9.40}/aliyun/log/etl_core/exceptions.py +0 -0
  56. {aliyun_log_python_sdk-0.9.38 → aliyun_log_python_sdk-0.9.40}/aliyun/log/etl_core/restrict_config_parser.py +0 -0
  57. {aliyun_log_python_sdk-0.9.38 → aliyun_log_python_sdk-0.9.40}/aliyun/log/etl_core/runner.py +0 -0
  58. {aliyun_log_python_sdk-0.9.38 → aliyun_log_python_sdk-0.9.40}/aliyun/log/etl_core/settings.py +0 -0
  59. {aliyun_log_python_sdk-0.9.38 → aliyun_log_python_sdk-0.9.40}/aliyun/log/etl_core/trans_comp/__init__.py +0 -0
  60. {aliyun_log_python_sdk-0.9.38 → aliyun_log_python_sdk-0.9.40}/aliyun/log/etl_core/trans_comp/trans_base.py +0 -0
  61. {aliyun_log_python_sdk-0.9.38 → aliyun_log_python_sdk-0.9.40}/aliyun/log/etl_core/trans_comp/trans_csv.py +0 -0
  62. {aliyun_log_python_sdk-0.9.38 → aliyun_log_python_sdk-0.9.40}/aliyun/log/etl_core/trans_comp/trans_json.py +0 -0
  63. {aliyun_log_python_sdk-0.9.38 → aliyun_log_python_sdk-0.9.40}/aliyun/log/etl_core/trans_comp/trans_kv.py +0 -0
  64. {aliyun_log_python_sdk-0.9.38 → aliyun_log_python_sdk-0.9.40}/aliyun/log/etl_core/trans_comp/trans_lookup.py +0 -0
  65. {aliyun_log_python_sdk-0.9.38 → aliyun_log_python_sdk-0.9.40}/aliyun/log/etl_core/trans_comp/trans_mv.py +0 -0
  66. {aliyun_log_python_sdk-0.9.38 → aliyun_log_python_sdk-0.9.40}/aliyun/log/etl_core/trans_comp/trans_regex.py +0 -0
  67. {aliyun_log_python_sdk-0.9.38 → aliyun_log_python_sdk-0.9.40}/aliyun/log/etl_core/trans_comp/trans_set_field.py +0 -0
  68. {aliyun_log_python_sdk-0.9.38 → aliyun_log_python_sdk-0.9.40}/aliyun/log/etl_core/transform/__init__.py +0 -0
  69. {aliyun_log_python_sdk-0.9.38 → aliyun_log_python_sdk-0.9.40}/aliyun/log/etl_core/transform/condition_list.py +0 -0
  70. {aliyun_log_python_sdk-0.9.38 → aliyun_log_python_sdk-0.9.40}/aliyun/log/etl_core/transform/condition_transform.py +0 -0
  71. {aliyun_log_python_sdk-0.9.38 → aliyun_log_python_sdk-0.9.40}/aliyun/log/etl_core/transform/condition_util.py +0 -0
  72. {aliyun_log_python_sdk-0.9.38 → aliyun_log_python_sdk-0.9.40}/aliyun/log/etl_core/transform/transform_base.py +0 -0
  73. {aliyun_log_python_sdk-0.9.38 → aliyun_log_python_sdk-0.9.40}/aliyun/log/etl_core/transform/transform_list.py +0 -0
  74. {aliyun_log_python_sdk-0.9.38 → aliyun_log_python_sdk-0.9.40}/aliyun/log/etl_core/transform/transform_meta.py +0 -0
  75. {aliyun_log_python_sdk-0.9.38 → aliyun_log_python_sdk-0.9.40}/aliyun/log/export_response.py +0 -0
  76. {aliyun_log_python_sdk-0.9.38 → aliyun_log_python_sdk-0.9.40}/aliyun/log/ext/__init__.py +0 -0
  77. {aliyun_log_python_sdk-0.9.38 → aliyun_log_python_sdk-0.9.40}/aliyun/log/ext/jupyter_magic.py +0 -0
  78. {aliyun_log_python_sdk-0.9.38 → aliyun_log_python_sdk-0.9.40}/aliyun/log/ext/syslogclient.py +0 -0
  79. {aliyun_log_python_sdk-0.9.38 → aliyun_log_python_sdk-0.9.40}/aliyun/log/external_store_config.py +0 -0
  80. {aliyun_log_python_sdk-0.9.38 → aliyun_log_python_sdk-0.9.40}/aliyun/log/external_store_config_response.py +0 -0
  81. {aliyun_log_python_sdk-0.9.38 → aliyun_log_python_sdk-0.9.40}/aliyun/log/get_async_sql_request.py +0 -0
  82. {aliyun_log_python_sdk-0.9.38 → aliyun_log_python_sdk-0.9.40}/aliyun/log/getcontextlogsresponse.py +0 -0
  83. {aliyun_log_python_sdk-0.9.38 → aliyun_log_python_sdk-0.9.40}/aliyun/log/getdeletelogsstatusrequest.py +0 -0
  84. {aliyun_log_python_sdk-0.9.38 → aliyun_log_python_sdk-0.9.40}/aliyun/log/getdeletelogsstatusresponse.py +0 -0
  85. {aliyun_log_python_sdk-0.9.38 → aliyun_log_python_sdk-0.9.40}/aliyun/log/gethistogramsrequest.py +0 -0
  86. {aliyun_log_python_sdk-0.9.38 → aliyun_log_python_sdk-0.9.40}/aliyun/log/gethistogramsresponse.py +0 -0
  87. {aliyun_log_python_sdk-0.9.38 → aliyun_log_python_sdk-0.9.40}/aliyun/log/getlogsrequest.py +0 -0
  88. {aliyun_log_python_sdk-0.9.38 → aliyun_log_python_sdk-0.9.40}/aliyun/log/getlogsresponse.py +0 -0
  89. {aliyun_log_python_sdk-0.9.38 → aliyun_log_python_sdk-0.9.40}/aliyun/log/histogram.py +0 -0
  90. {aliyun_log_python_sdk-0.9.38 → aliyun_log_python_sdk-0.9.40}/aliyun/log/index_config.py +0 -0
  91. {aliyun_log_python_sdk-0.9.38 → aliyun_log_python_sdk-0.9.40}/aliyun/log/index_config_response.py +0 -0
  92. {aliyun_log_python_sdk-0.9.38 → aliyun_log_python_sdk-0.9.40}/aliyun/log/ingestion_response.py +0 -0
  93. {aliyun_log_python_sdk-0.9.38 → aliyun_log_python_sdk-0.9.40}/aliyun/log/job.py +0 -0
  94. {aliyun_log_python_sdk-0.9.38 → aliyun_log_python_sdk-0.9.40}/aliyun/log/listdeletelogsstasksrequest.py +0 -0
  95. {aliyun_log_python_sdk-0.9.38 → aliyun_log_python_sdk-0.9.40}/aliyun/log/listdeletelogsstasksresponse.py +0 -0
  96. {aliyun_log_python_sdk-0.9.38 → aliyun_log_python_sdk-0.9.40}/aliyun/log/listlogstoresrequest.py +0 -0
  97. {aliyun_log_python_sdk-0.9.38 → aliyun_log_python_sdk-0.9.40}/aliyun/log/listlogstoresresponse.py +0 -0
  98. {aliyun_log_python_sdk-0.9.38 → aliyun_log_python_sdk-0.9.40}/aliyun/log/listtopicsrequest.py +0 -0
  99. {aliyun_log_python_sdk-0.9.38 → aliyun_log_python_sdk-0.9.40}/aliyun/log/listtopicsresponse.py +0 -0
  100. {aliyun_log_python_sdk-0.9.38 → aliyun_log_python_sdk-0.9.40}/aliyun/log/log_logs_pb2.py +0 -0
  101. {aliyun_log_python_sdk-0.9.38 → aliyun_log_python_sdk-0.9.40}/aliyun/log/log_logs_raw_pb2.py +0 -0
  102. {aliyun_log_python_sdk-0.9.38 → aliyun_log_python_sdk-0.9.40}/aliyun/log/logclient_core.py +0 -0
  103. {aliyun_log_python_sdk-0.9.38 → aliyun_log_python_sdk-0.9.40}/aliyun/log/logclient_operator.py +0 -0
  104. {aliyun_log_python_sdk-0.9.38 → aliyun_log_python_sdk-0.9.40}/aliyun/log/logexception.py +0 -0
  105. {aliyun_log_python_sdk-0.9.38 → aliyun_log_python_sdk-0.9.40}/aliyun/log/logger_hanlder.py +0 -0
  106. {aliyun_log_python_sdk-0.9.38 → aliyun_log_python_sdk-0.9.40}/aliyun/log/logitem.py +0 -0
  107. {aliyun_log_python_sdk-0.9.38 → aliyun_log_python_sdk-0.9.40}/aliyun/log/logrequest.py +0 -0
  108. {aliyun_log_python_sdk-0.9.38 → aliyun_log_python_sdk-0.9.40}/aliyun/log/logresponse.py +0 -0
  109. {aliyun_log_python_sdk-0.9.38 → aliyun_log_python_sdk-0.9.40}/aliyun/log/logstore_config_response.py +0 -0
  110. {aliyun_log_python_sdk-0.9.38 → aliyun_log_python_sdk-0.9.40}/aliyun/log/logtail_config_detail.py +0 -0
  111. {aliyun_log_python_sdk-0.9.38 → aliyun_log_python_sdk-0.9.40}/aliyun/log/logtail_config_response.py +0 -0
  112. {aliyun_log_python_sdk-0.9.38 → aliyun_log_python_sdk-0.9.40}/aliyun/log/logtail_pipeline_config_detail.py +0 -0
  113. {aliyun_log_python_sdk-0.9.38 → aliyun_log_python_sdk-0.9.40}/aliyun/log/logtail_pipeline_config_response.py +0 -0
  114. {aliyun_log_python_sdk-0.9.38 → aliyun_log_python_sdk-0.9.40}/aliyun/log/machine_group_detail.py +0 -0
  115. {aliyun_log_python_sdk-0.9.38 → aliyun_log_python_sdk-0.9.40}/aliyun/log/machinegroup_response.py +0 -0
  116. {aliyun_log_python_sdk-0.9.38 → aliyun_log_python_sdk-0.9.40}/aliyun/log/metering_mode_response.py +0 -0
  117. {aliyun_log_python_sdk-0.9.38 → aliyun_log_python_sdk-0.9.40}/aliyun/log/odps_sink.py +0 -0
  118. {aliyun_log_python_sdk-0.9.38 → aliyun_log_python_sdk-0.9.40}/aliyun/log/oss_sink.py +0 -0
  119. {aliyun_log_python_sdk-0.9.38 → aliyun_log_python_sdk-0.9.40}/aliyun/log/pluralize.py +0 -0
  120. {aliyun_log_python_sdk-0.9.38 → aliyun_log_python_sdk-0.9.40}/aliyun/log/project_response.py +0 -0
  121. {aliyun_log_python_sdk-0.9.38 → aliyun_log_python_sdk-0.9.40}/aliyun/log/proto.py +0 -0
  122. {aliyun_log_python_sdk-0.9.38 → aliyun_log_python_sdk-0.9.40}/aliyun/log/pulllog_response.py +0 -0
  123. {aliyun_log_python_sdk-0.9.38 → aliyun_log_python_sdk-0.9.40}/aliyun/log/putlogsrequest.py +0 -0
  124. {aliyun_log_python_sdk-0.9.38 → aliyun_log_python_sdk-0.9.40}/aliyun/log/putlogsresponse.py +0 -0
  125. {aliyun_log_python_sdk-0.9.38 → aliyun_log_python_sdk-0.9.40}/aliyun/log/queriedlog.py +0 -0
  126. {aliyun_log_python_sdk-0.9.38 → aliyun_log_python_sdk-0.9.40}/aliyun/log/rebuild_index_response.py +0 -0
  127. {aliyun_log_python_sdk-0.9.38 → aliyun_log_python_sdk-0.9.40}/aliyun/log/resource_params.py +0 -0
  128. {aliyun_log_python_sdk-0.9.38 → aliyun_log_python_sdk-0.9.40}/aliyun/log/resource_response.py +0 -0
  129. {aliyun_log_python_sdk-0.9.38 → aliyun_log_python_sdk-0.9.40}/aliyun/log/scheduled_sql.py +0 -0
  130. {aliyun_log_python_sdk-0.9.38 → aliyun_log_python_sdk-0.9.40}/aliyun/log/scheduled_sql_response.py +0 -0
  131. {aliyun_log_python_sdk-0.9.38 → aliyun_log_python_sdk-0.9.40}/aliyun/log/shard_response.py +0 -0
  132. {aliyun_log_python_sdk-0.9.38 → aliyun_log_python_sdk-0.9.40}/aliyun/log/shipper_config.py +0 -0
  133. {aliyun_log_python_sdk-0.9.38 → aliyun_log_python_sdk-0.9.40}/aliyun/log/shipper_response.py +0 -0
  134. {aliyun_log_python_sdk-0.9.38 → aliyun_log_python_sdk-0.9.40}/aliyun/log/sink.py +0 -0
  135. {aliyun_log_python_sdk-0.9.38 → aliyun_log_python_sdk-0.9.40}/aliyun/log/sql_instance_response.py +0 -0
  136. {aliyun_log_python_sdk-0.9.38 → aliyun_log_python_sdk-0.9.40}/aliyun/log/store_view.py +0 -0
  137. {aliyun_log_python_sdk-0.9.38 → aliyun_log_python_sdk-0.9.40}/aliyun/log/store_view_response.py +0 -0
  138. {aliyun_log_python_sdk-0.9.38 → aliyun_log_python_sdk-0.9.40}/aliyun/log/submit_async_sql_request.py +0 -0
  139. {aliyun_log_python_sdk-0.9.38 → aliyun_log_python_sdk-0.9.40}/aliyun/log/substore_config_response.py +0 -0
  140. {aliyun_log_python_sdk-0.9.38 → aliyun_log_python_sdk-0.9.40}/aliyun/log/tag_response.py +0 -0
  141. {aliyun_log_python_sdk-0.9.38 → aliyun_log_python_sdk-0.9.40}/aliyun/log/topostore_params.py +0 -0
  142. {aliyun_log_python_sdk-0.9.38 → aliyun_log_python_sdk-0.9.40}/aliyun/log/topostore_response.py +0 -0
  143. {aliyun_log_python_sdk-0.9.38 → aliyun_log_python_sdk-0.9.40}/aliyun_log_python_sdk.egg-info/dependency_links.txt +0 -0
  144. {aliyun_log_python_sdk-0.9.38 → aliyun_log_python_sdk-0.9.40}/aliyun_log_python_sdk.egg-info/requires.txt +0 -0
  145. {aliyun_log_python_sdk-0.9.38 → aliyun_log_python_sdk-0.9.40}/aliyun_log_python_sdk.egg-info/top_level.txt +0 -0
  146. {aliyun_log_python_sdk-0.9.38 → aliyun_log_python_sdk-0.9.40}/setup.cfg +0 -0
  147. {aliyun_log_python_sdk-0.9.38 → aliyun_log_python_sdk-0.9.40}/setup.py +0 -0
  148. {aliyun_log_python_sdk-0.9.38 → aliyun_log_python_sdk-0.9.40}/tests/test_alert.py +0 -0
  149. {aliyun_log_python_sdk-0.9.38 → aliyun_log_python_sdk-0.9.40}/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.40
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
@@ -48,6 +48,8 @@ from .logger_hanlder import SimpleLogHandler, QueuedLogHandler, LogFields, Uwsgi
48
48
  from .metering_mode_response import GetLogStoreMeteringModeResponse, \
49
49
  GetMetricStoreMeteringModeResponse, \
50
50
  UpdateLogStoreMeteringModeResponse, UpdateMetricStoreMeteringModeResponse
51
+ from .multimodal_config_response import GetLogStoreMultimodalConfigurationResponse, \
52
+ PutLogStoreMultimodalConfigurationResponse
51
53
  from .object_response import PutObjectResponse, GetObjectResponse
52
54
 
53
55
  from .store_view import StoreView, StoreViewStore
@@ -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()):
@@ -76,6 +76,8 @@ from .compress import CompressType, Compressor
76
76
  from .metering_mode_response import GetLogStoreMeteringModeResponse, \
77
77
  GetMetricStoreMeteringModeResponse, UpdateLogStoreMeteringModeResponse, \
78
78
  UpdateMetricStoreMeteringModeResponse
79
+ from .multimodal_config_response import GetLogStoreMultimodalConfigurationResponse, \
80
+ PutLogStoreMultimodalConfigurationResponse
79
81
  from .object_response import PutObjectResponse, GetObjectResponse
80
82
  from .util import require_python3, object_name_encode
81
83
 
@@ -1833,6 +1835,61 @@ class LogClient(object):
1833
1835
  (resp, header) = self._send("PUT", project_name, body_str, resource, params, headers)
1834
1836
  return UpdateLogStoreMeteringModeResponse(header, resp)
1835
1837
 
1838
+ def get_logstore_multimodal_configuration(self, project_name, logstore_name):
1839
+ """ Get the multimodal configuration of the logstore
1840
+ Unsuccessful operation will cause an LogException.
1841
+
1842
+ :type project_name: string
1843
+ :param project_name: the Project name
1844
+
1845
+ :type logstore_name: string
1846
+ :param logstore_name: the logstore name
1847
+
1848
+ :return: GetLogStoreMultimodalConfigurationResponse
1849
+
1850
+ :raise: LogException
1851
+ """
1852
+ params = {}
1853
+ resource = "/logstores/" + logstore_name + "/multimodalconfiguration"
1854
+ headers = {}
1855
+
1856
+ (resp, header) = self._send("GET", project_name, None, resource, params, headers)
1857
+ return GetLogStoreMultimodalConfigurationResponse(resp, header)
1858
+
1859
+ def put_logstore_multimodal_configuration(self, project_name, logstore_name, status, anonymous_write=None):
1860
+ """ Put the multimodal configuration of the logstore
1861
+ Unsuccessful operation will cause an LogException.
1862
+
1863
+ :type project_name: string
1864
+ :param project_name: the Project name
1865
+
1866
+ :type logstore_name: string
1867
+ :param logstore_name: the logstore name
1868
+
1869
+ :type status: string
1870
+ :param status: the status of multimodal configuration, required (e.g., "Enabled" or "Disabled")
1871
+
1872
+ :type anonymous_write: string
1873
+ :param anonymous_write: the anonymous write setting, optional (e.g., "Enabled" or "Disabled")
1874
+
1875
+ :return: PutLogStoreMultimodalConfigurationResponse
1876
+
1877
+ :raise: LogException
1878
+ """
1879
+ params = {}
1880
+ resource = "/logstores/" + logstore_name + "/multimodalconfiguration"
1881
+ headers = {"x-log-bodyrawsize": '0', "Content-Type": "application/json"}
1882
+ body = {
1883
+ "status": status
1884
+ }
1885
+ if anonymous_write is not None:
1886
+ body["anonymousWrite"] = anonymous_write
1887
+
1888
+ body_str = six.b(json.dumps(body))
1889
+
1890
+ (resp, header) = self._send("PUT", project_name, body_str, resource, params, headers)
1891
+ return PutLogStoreMultimodalConfigurationResponse(header, resp)
1892
+
1836
1893
  def get_metric_store_metering_mode(self, project_name, metric_store_name):
1837
1894
  """ Get the metering mode of the metric store
1838
1895
  Unsuccessful operation will cause an LogException.
@@ -0,0 +1,61 @@
1
+ #!/usr/bin/env python
2
+ # encoding: utf-8
3
+
4
+ # Copyright (C) Alibaba Cloud Computing
5
+ # All rights reserved.
6
+
7
+ from .util import Util
8
+ from .logresponse import LogResponse
9
+
10
+
11
+ class GetLogStoreMultimodalConfigurationResponse(LogResponse):
12
+ """ The response of the get_logstore_multimodal_configuration API from log.
13
+
14
+ :type header: dict
15
+ :param header: GetLogStoreMultimodalConfigurationResponse HTTP response header
16
+
17
+ :type resp: dict
18
+ :param resp: the HTTP response body
19
+ """
20
+
21
+ def __init__(self, resp, header):
22
+ LogResponse.__init__(self, header, resp)
23
+ self.status = Util.convert_unicode_to_str(resp["status"])
24
+ self.anonymous_write = None
25
+ if "anonymousWrite" in resp:
26
+ self.anonymous_write = Util.convert_unicode_to_str(resp["anonymousWrite"])
27
+
28
+ def get_status(self):
29
+ """
30
+ :return: string, the status of the multimodal configuration
31
+ """
32
+ return self.status
33
+
34
+ def get_anonymous_write(self):
35
+ """
36
+ :return: string, the anonymous write setting, or None if not set
37
+ """
38
+ return self.anonymous_write
39
+
40
+ def log_print(self):
41
+ print('GetLogStoreMultimodalConfigurationResponse')
42
+ print('headers:', self.get_all_headers())
43
+ print('status:', self.status)
44
+ if self.anonymous_write is not None:
45
+ print('anonymousWrite:', self.anonymous_write)
46
+
47
+
48
+ class PutLogStoreMultimodalConfigurationResponse(LogResponse):
49
+ """ The response of the put_logstore_multimodal_configuration API from log.
50
+
51
+ :type header: dict
52
+ :param header: PutLogStoreMultimodalConfigurationResponse HTTP response header
53
+ """
54
+
55
+ def __init__(self, header, resp=''):
56
+ LogResponse.__init__(self, header, resp)
57
+
58
+ def log_print(self):
59
+ print('PutLogStoreMultimodalConfigurationResponse:')
60
+ print('headers:', self.get_all_headers())
61
+
@@ -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.40'
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.40
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
@@ -59,6 +59,7 @@ aliyun/log/logtail_pipeline_config_response.py
59
59
  aliyun/log/machine_group_detail.py
60
60
  aliyun/log/machinegroup_response.py
61
61
  aliyun/log/metering_mode_response.py
62
+ aliyun/log/multimodal_config_response.py
62
63
  aliyun/log/object_response.py
63
64
  aliyun/log/odps_sink.py
64
65
  aliyun/log/oss_sink.py