sift-stack-py 0.18.0__tar.gz → 0.19.1__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 (655) hide show
  1. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/PKG-INFO +8 -1
  2. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift/calculated_channels/v2/calculated_channels_pb2.pyi +4 -0
  3. sift_stack_py-0.19.1/lib/sift/canvas/v1/canvas_pb2.py +27 -0
  4. sift_stack_py-0.19.1/lib/sift/canvas/v1/canvas_pb2.pyi +52 -0
  5. sift_stack_py-0.19.1/lib/sift/common/v1/filter_field_pb2.py +31 -0
  6. sift_stack_py-0.19.1/lib/sift/common/v1/filter_field_pb2.pyi +220 -0
  7. sift_stack_py-0.19.1/lib/sift/data_imports/v2/data_imports_pb2.py +216 -0
  8. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift/data_imports/v2/data_imports_pb2.pyi +167 -14
  9. sift_stack_py-0.19.1/lib/sift/docs/v1/docs_pb2.py +80 -0
  10. sift_stack_py-0.19.1/lib/sift/docs/v1/docs_pb2.pyi +155 -0
  11. sift_stack_py-0.19.1/lib/sift/docs/v1/docs_pb2_grpc.py +113 -0
  12. sift_stack_py-0.19.1/lib/sift/docs/v1/docs_pb2_grpc.pyi +94 -0
  13. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift/exports/v1/exports_pb2.py +12 -12
  14. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift/exports/v1/exports_pb2.pyi +8 -1
  15. sift_stack_py-0.19.1/lib/sift/families/v1/families_pb2.py +582 -0
  16. sift_stack_py-0.19.1/lib/sift/families/v1/families_pb2.pyi +1857 -0
  17. sift_stack_py-0.19.1/lib/sift/families/v1/families_pb2_grpc.py +825 -0
  18. sift_stack_py-0.19.1/lib/sift/families/v1/families_pb2_grpc.pyi +432 -0
  19. sift_stack_py-0.19.1/lib/sift/filters/v1/filter_grammar_pb2.py +41 -0
  20. sift_stack_py-0.19.1/lib/sift/filters/v1/filter_grammar_pb2.pyi +133 -0
  21. sift_stack_py-0.19.1/lib/sift/filters/v1/filter_grammar_pb2_grpc.py +81 -0
  22. sift_stack_py-0.19.1/lib/sift/filters/v1/filter_grammar_pb2_grpc.pyi +62 -0
  23. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift/metadata/v1/metadata_pb2.py +60 -57
  24. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift/metadata/v1/metadata_pb2.pyi +9 -1
  25. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift/panel_configurations/v1/panel_configuration_pb2.pyi +5 -1
  26. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift/remote_files/v1/remote_files_pb2.py +4 -4
  27. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift/remote_files/v1/remote_files_pb2.pyi +2 -0
  28. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift/reports/v1/reports_pb2.py +111 -75
  29. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift/reports/v1/reports_pb2.pyi +177 -8
  30. sift_stack_py-0.19.1/lib/sift/rule_evaluation/v1/rule_evaluation_pb2.py +105 -0
  31. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift/rule_evaluation/v1/rule_evaluation_pb2.pyi +44 -2
  32. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift/rules/v1/rules_pb2.py +31 -19
  33. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift/rules/v1/rules_pb2.pyi +69 -5
  34. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift/runs/v2/runs_pb2.pyi +6 -0
  35. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift/saved_searches/v1/saved_searches_pb2.py +24 -22
  36. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift/saved_searches/v1/saved_searches_pb2.pyi +10 -1
  37. sift_stack_py-0.19.1/lib/sift/tags/v1/tags_pb2_grpc.py +4 -0
  38. sift_stack_py-0.19.1/lib/sift/tags/v1/tags_pb2_grpc.pyi +17 -0
  39. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift_client/__init__.py +3 -0
  40. sift_stack_py-0.19.1/lib/sift_client/_internal/disk_cache.py +409 -0
  41. sift_stack_py-0.19.1/lib/sift_client/_internal/disk_cache_config.py +87 -0
  42. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift_client/_internal/gen_pyi.py +12 -2
  43. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift_client/_internal/grpc_transport/transport.py +4 -0
  44. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift_client/_internal/low_level_wrappers/__init__.py +14 -0
  45. sift_stack_py-0.19.1/lib/sift_client/_internal/low_level_wrappers/data.py +1039 -0
  46. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift_client/_internal/low_level_wrappers/data_imports.py +3 -0
  47. sift_stack_py-0.19.1/lib/sift_client/_internal/low_level_wrappers/principal_attributes.py +527 -0
  48. sift_stack_py-0.19.1/lib/sift_client/_internal/low_level_wrappers/report_templates.py +194 -0
  49. sift_stack_py-0.19.1/lib/sift_client/_internal/low_level_wrappers/resource_attributes.py +460 -0
  50. sift_stack_py-0.19.1/lib/sift_client/_internal/low_level_wrappers/users.py +130 -0
  51. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift_client/_internal/pytest_plugin/report.py +10 -1
  52. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift_client/_internal/pytest_plugin/steps.py +242 -62
  53. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift_client/_internal/sync_wrapper.py +40 -1
  54. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift_client/_internal/util/file.py +29 -4
  55. sift_stack_py-0.19.1/lib/sift_client/_internal/util/ulog.py +154 -0
  56. sift_stack_py-0.19.1/lib/sift_client/_internal/util/util.py +17 -0
  57. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift_client/client.py +93 -0
  58. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift_client/pytest_plugin.py +13 -8
  59. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift_client/resources/__init__.py +44 -1
  60. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift_client/resources/_base.py +6 -5
  61. sift_stack_py-0.19.1/lib/sift_client/resources/access_control/__init__.py +67 -0
  62. sift_stack_py-0.19.1/lib/sift_client/resources/access_control/_common.py +67 -0
  63. sift_stack_py-0.19.1/lib/sift_client/resources/access_control/principal_attributes.py +715 -0
  64. sift_stack_py-0.19.1/lib/sift_client/resources/access_control/resource_attributes.py +623 -0
  65. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift_client/resources/channels.py +31 -3
  66. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift_client/resources/data_imports.py +50 -24
  67. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift_client/resources/file_attachments.py +6 -21
  68. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift_client/resources/jobs.py +1 -1
  69. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift_client/resources/reports.py +210 -6
  70. sift_stack_py-0.19.1/lib/sift_client/resources/sync_stubs/__init__.py +113 -0
  71. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift_client/resources/sync_stubs/__init__.pyi +1357 -209
  72. sift_stack_py-0.19.1/lib/sift_client/resources/users.py +149 -0
  73. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift_client/sift_types/__init__.py +49 -0
  74. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift_client/sift_types/data_import.py +168 -0
  75. sift_stack_py-0.19.1/lib/sift_client/sift_types/principal_attribute.py +390 -0
  76. sift_stack_py-0.19.1/lib/sift_client/sift_types/report_template.py +313 -0
  77. sift_stack_py-0.19.1/lib/sift_client/sift_types/resource_attribute.py +402 -0
  78. sift_stack_py-0.19.1/lib/sift_client/sift_types/user.py +57 -0
  79. sift_stack_py-0.19.1/lib/sift_client/util/cache.py +273 -0
  80. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift_client/util/cel_utils.py +12 -6
  81. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift_client/util/test_results/context_manager.py +90 -21
  82. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift_client/util/util.py +8 -0
  83. sift_stack_py-0.19.1/lib/sift_py/file_attachment/_internal/__init__.py +0 -0
  84. sift_stack_py-0.19.1/lib/sift_py/grpc/_async_interceptors/__init__.py +0 -0
  85. sift_stack_py-0.19.1/lib/sift_py/grpc/_interceptors/__init__.py +0 -0
  86. sift_stack_py-0.19.1/lib/sift_py/ingestion/config/yaml/__init__.py +0 -0
  87. sift_stack_py-0.19.1/lib/sift_py/py.typed +0 -0
  88. sift_stack_py-0.19.1/lib/sift_py/report_templates/__init__.py +0 -0
  89. sift_stack_py-0.19.1/lib/sift_py/rule/__init__.py +0 -0
  90. sift_stack_py-0.19.1/lib/sift_py/yaml/__init__.py +0 -0
  91. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift_stack_py.egg-info/PKG-INFO +8 -1
  92. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift_stack_py.egg-info/SOURCES.txt +41 -0
  93. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift_stack_py.egg-info/requires.txt +8 -0
  94. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/pyproject.toml +29 -2
  95. sift_stack_py-0.18.0/lib/sift/common/v1/filter_field_pb2.py +0 -29
  96. sift_stack_py-0.18.0/lib/sift/common/v1/filter_field_pb2.pyi +0 -88
  97. sift_stack_py-0.18.0/lib/sift/data_imports/v2/data_imports_pb2.py +0 -204
  98. sift_stack_py-0.18.0/lib/sift/rule_evaluation/v1/rule_evaluation_pb2.py +0 -95
  99. sift_stack_py-0.18.0/lib/sift_client/_internal/low_level_wrappers/data.py +0 -344
  100. sift_stack_py-0.18.0/lib/sift_client/_internal/util/util.py +0 -6
  101. sift_stack_py-0.18.0/lib/sift_client/resources/sync_stubs/__init__.py +0 -50
  102. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/LICENSE +0 -0
  103. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/README.md +0 -0
  104. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift/__init__.py +0 -0
  105. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift/annotation_logs/__init__.py +0 -0
  106. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift/annotation_logs/v1/__init__.py +0 -0
  107. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift/annotation_logs/v1/annotation_logs_pb2.py +0 -0
  108. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift/annotation_logs/v1/annotation_logs_pb2.pyi +0 -0
  109. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift/annotation_logs/v1/annotation_logs_pb2_grpc.py +0 -0
  110. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift/annotation_logs/v1/annotation_logs_pb2_grpc.pyi +0 -0
  111. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift/annotations/__init__.py +0 -0
  112. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift/annotations/v1/__init__.py +0 -0
  113. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift/annotations/v1/annotations_pb2.py +0 -0
  114. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift/annotations/v1/annotations_pb2.pyi +0 -0
  115. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift/annotations/v1/annotations_pb2_grpc.py +0 -0
  116. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift/annotations/v1/annotations_pb2_grpc.pyi +0 -0
  117. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift/api_keys/__init__.py +0 -0
  118. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift/api_keys/v2/__init__.py +0 -0
  119. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift/api_keys/v2/api_keys_pb2.py +0 -0
  120. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift/api_keys/v2/api_keys_pb2.pyi +0 -0
  121. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift/api_keys/v2/api_keys_pb2_grpc.py +0 -0
  122. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift/api_keys/v2/api_keys_pb2_grpc.pyi +0 -0
  123. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift/assets/__init__.py +0 -0
  124. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift/assets/v1/__init__.py +0 -0
  125. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift/assets/v1/assets_pb2.py +0 -0
  126. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift/assets/v1/assets_pb2.pyi +0 -0
  127. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift/assets/v1/assets_pb2_grpc.py +0 -0
  128. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift/assets/v1/assets_pb2_grpc.pyi +0 -0
  129. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift/calculated_channels/__init__.py +0 -0
  130. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift/calculated_channels/v1/__init__.py +0 -0
  131. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift/calculated_channels/v1/calculated_channels_pb2.py +0 -0
  132. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift/calculated_channels/v1/calculated_channels_pb2.pyi +0 -0
  133. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift/calculated_channels/v1/calculated_channels_pb2_grpc.py +0 -0
  134. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift/calculated_channels/v1/calculated_channels_pb2_grpc.pyi +0 -0
  135. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift/calculated_channels/v2/__init__.py +0 -0
  136. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift/calculated_channels/v2/calculated_channels_pb2.py +0 -0
  137. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift/calculated_channels/v2/calculated_channels_pb2_grpc.py +0 -0
  138. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift/calculated_channels/v2/calculated_channels_pb2_grpc.pyi +0 -0
  139. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift/campaigns/__init__.py +0 -0
  140. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift/campaigns/v1/__init__.py +0 -0
  141. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift/campaigns/v1/campaigns_pb2.py +0 -0
  142. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift/campaigns/v1/campaigns_pb2.pyi +0 -0
  143. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift/campaigns/v1/campaigns_pb2_grpc.py +0 -0
  144. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift/campaigns/v1/campaigns_pb2_grpc.pyi +0 -0
  145. {sift_stack_py-0.18.0/lib/sift/channel_schemas → sift_stack_py-0.19.1/lib/sift/canvas}/__init__.py +0 -0
  146. {sift_stack_py-0.18.0/lib/sift/channel_schemas → sift_stack_py-0.19.1/lib/sift/canvas}/v1/__init__.py +0 -0
  147. /sift_stack_py-0.18.0/lib/sift/common/type/v1/calculated_channels_pb2_grpc.py → /sift_stack_py-0.19.1/lib/sift/canvas/v1/canvas_pb2_grpc.py +0 -0
  148. /sift_stack_py-0.18.0/lib/sift/common/type/v1/calculated_channels_pb2_grpc.pyi → /sift_stack_py-0.19.1/lib/sift/canvas/v1/canvas_pb2_grpc.pyi +0 -0
  149. {sift_stack_py-0.18.0/lib/sift/channel_schemas/v2 → sift_stack_py-0.19.1/lib/sift/channel_schemas}/__init__.py +0 -0
  150. {sift_stack_py-0.18.0/lib/sift/channels → sift_stack_py-0.19.1/lib/sift/channel_schemas/v1}/__init__.py +0 -0
  151. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift/channel_schemas/v1/channel_schemas_pb2.py +0 -0
  152. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift/channel_schemas/v1/channel_schemas_pb2.pyi +0 -0
  153. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift/channel_schemas/v1/channel_schemas_pb2_grpc.py +0 -0
  154. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift/channel_schemas/v1/channel_schemas_pb2_grpc.pyi +0 -0
  155. {sift_stack_py-0.18.0/lib/sift/channels → sift_stack_py-0.19.1/lib/sift/channel_schemas}/v2/__init__.py +0 -0
  156. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift/channel_schemas/v2/channel_schemas_pb2.py +0 -0
  157. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift/channel_schemas/v2/channel_schemas_pb2.pyi +0 -0
  158. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift/channel_schemas/v2/channel_schemas_pb2_grpc.py +0 -0
  159. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift/channel_schemas/v2/channel_schemas_pb2_grpc.pyi +0 -0
  160. {sift_stack_py-0.18.0/lib/sift/channels/v3 → sift_stack_py-0.19.1/lib/sift/channels}/__init__.py +0 -0
  161. {sift_stack_py-0.18.0/lib/sift/comment → sift_stack_py-0.19.1/lib/sift/channels/v2}/__init__.py +0 -0
  162. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift/channels/v2/channels_pb2.py +0 -0
  163. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift/channels/v2/channels_pb2.pyi +0 -0
  164. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift/channels/v2/channels_pb2_grpc.py +0 -0
  165. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift/channels/v2/channels_pb2_grpc.pyi +0 -0
  166. {sift_stack_py-0.18.0/lib/sift/comment/v1 → sift_stack_py-0.19.1/lib/sift/channels/v3}/__init__.py +0 -0
  167. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift/channels/v3/channels_pb2.py +0 -0
  168. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift/channels/v3/channels_pb2.pyi +0 -0
  169. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift/channels/v3/channels_pb2_grpc.py +0 -0
  170. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift/channels/v3/channels_pb2_grpc.pyi +0 -0
  171. {sift_stack_py-0.18.0/lib/sift/common → sift_stack_py-0.19.1/lib/sift/comment}/__init__.py +0 -0
  172. {sift_stack_py-0.18.0/lib/sift/common/type → sift_stack_py-0.19.1/lib/sift/comment/v1}/__init__.py +0 -0
  173. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift/comment/v1/comment_pb2.py +0 -0
  174. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift/comment/v1/comment_pb2.pyi +0 -0
  175. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift/comment/v1/comment_pb2_grpc.py +0 -0
  176. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift/comment/v1/comment_pb2_grpc.pyi +0 -0
  177. {sift_stack_py-0.18.0/lib/sift/common/type/v1 → sift_stack_py-0.19.1/lib/sift/common}/__init__.py +0 -0
  178. {sift_stack_py-0.18.0/lib/sift/common/v1 → sift_stack_py-0.19.1/lib/sift/common/type}/__init__.py +0 -0
  179. {sift_stack_py-0.18.0/lib/sift/data → sift_stack_py-0.19.1/lib/sift/common/type/v1}/__init__.py +0 -0
  180. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift/common/type/v1/calculated_channels_pb2.py +0 -0
  181. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift/common/type/v1/calculated_channels_pb2.pyi +0 -0
  182. /sift_stack_py-0.18.0/lib/sift/common/type/v1/channel_bit_field_element_pb2_grpc.py → /sift_stack_py-0.19.1/lib/sift/common/type/v1/calculated_channels_pb2_grpc.py +0 -0
  183. /sift_stack_py-0.18.0/lib/sift/common/type/v1/channel_bit_field_element_pb2_grpc.pyi → /sift_stack_py-0.19.1/lib/sift/common/type/v1/calculated_channels_pb2_grpc.pyi +0 -0
  184. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift/common/type/v1/channel_bit_field_element_pb2.py +0 -0
  185. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift/common/type/v1/channel_bit_field_element_pb2.pyi +0 -0
  186. /sift_stack_py-0.18.0/lib/sift/common/type/v1/channel_config_pb2_grpc.py → /sift_stack_py-0.19.1/lib/sift/common/type/v1/channel_bit_field_element_pb2_grpc.py +0 -0
  187. /sift_stack_py-0.18.0/lib/sift/common/type/v1/channel_config_pb2_grpc.pyi → /sift_stack_py-0.19.1/lib/sift/common/type/v1/channel_bit_field_element_pb2_grpc.pyi +0 -0
  188. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift/common/type/v1/channel_config_pb2.py +0 -0
  189. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift/common/type/v1/channel_config_pb2.pyi +0 -0
  190. /sift_stack_py-0.18.0/lib/sift/common/type/v1/channel_data_type_pb2_grpc.py → /sift_stack_py-0.19.1/lib/sift/common/type/v1/channel_config_pb2_grpc.py +0 -0
  191. /sift_stack_py-0.18.0/lib/sift/common/type/v1/channel_data_type_pb2_grpc.pyi → /sift_stack_py-0.19.1/lib/sift/common/type/v1/channel_config_pb2_grpc.pyi +0 -0
  192. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift/common/type/v1/channel_data_type_pb2.py +0 -0
  193. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift/common/type/v1/channel_data_type_pb2.pyi +0 -0
  194. /sift_stack_py-0.18.0/lib/sift/common/type/v1/channel_enum_type_pb2_grpc.py → /sift_stack_py-0.19.1/lib/sift/common/type/v1/channel_data_type_pb2_grpc.py +0 -0
  195. /sift_stack_py-0.18.0/lib/sift/common/type/v1/channel_enum_type_pb2_grpc.pyi → /sift_stack_py-0.19.1/lib/sift/common/type/v1/channel_data_type_pb2_grpc.pyi +0 -0
  196. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift/common/type/v1/channel_enum_type_pb2.py +0 -0
  197. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift/common/type/v1/channel_enum_type_pb2.pyi +0 -0
  198. /sift_stack_py-0.18.0/lib/sift/common/type/v1/organization_pb2_grpc.py → /sift_stack_py-0.19.1/lib/sift/common/type/v1/channel_enum_type_pb2_grpc.py +0 -0
  199. /sift_stack_py-0.18.0/lib/sift/common/type/v1/organization_pb2_grpc.pyi → /sift_stack_py-0.19.1/lib/sift/common/type/v1/channel_enum_type_pb2_grpc.pyi +0 -0
  200. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift/common/type/v1/organization_pb2.py +0 -0
  201. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift/common/type/v1/organization_pb2.pyi +0 -0
  202. /sift_stack_py-0.18.0/lib/sift/common/type/v1/resource_identifier_pb2_grpc.py → /sift_stack_py-0.19.1/lib/sift/common/type/v1/organization_pb2_grpc.py +0 -0
  203. /sift_stack_py-0.18.0/lib/sift/common/type/v1/resource_identifier_pb2_grpc.pyi → /sift_stack_py-0.19.1/lib/sift/common/type/v1/organization_pb2_grpc.pyi +0 -0
  204. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift/common/type/v1/resource_identifier_pb2.py +0 -0
  205. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift/common/type/v1/resource_identifier_pb2.pyi +0 -0
  206. /sift_stack_py-0.18.0/lib/sift/common/type/v1/resource_ref_pb2_grpc.py → /sift_stack_py-0.19.1/lib/sift/common/type/v1/resource_identifier_pb2_grpc.py +0 -0
  207. /sift_stack_py-0.18.0/lib/sift/common/type/v1/resource_ref_pb2_grpc.pyi → /sift_stack_py-0.19.1/lib/sift/common/type/v1/resource_identifier_pb2_grpc.pyi +0 -0
  208. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift/common/type/v1/resource_ref_pb2.py +0 -0
  209. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift/common/type/v1/resource_ref_pb2.pyi +0 -0
  210. /sift_stack_py-0.18.0/lib/sift/common/type/v1/user_defined_functions_pb2_grpc.py → /sift_stack_py-0.19.1/lib/sift/common/type/v1/resource_ref_pb2_grpc.py +0 -0
  211. /sift_stack_py-0.18.0/lib/sift/common/type/v1/user_defined_functions_pb2_grpc.pyi → /sift_stack_py-0.19.1/lib/sift/common/type/v1/resource_ref_pb2_grpc.pyi +0 -0
  212. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift/common/type/v1/user_defined_functions_pb2.py +0 -0
  213. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift/common/type/v1/user_defined_functions_pb2.pyi +0 -0
  214. /sift_stack_py-0.18.0/lib/sift/common/type/v1/user_pb2_grpc.py → /sift_stack_py-0.19.1/lib/sift/common/type/v1/user_defined_functions_pb2_grpc.py +0 -0
  215. /sift_stack_py-0.18.0/lib/sift/common/type/v1/user_pb2_grpc.pyi → /sift_stack_py-0.19.1/lib/sift/common/type/v1/user_defined_functions_pb2_grpc.pyi +0 -0
  216. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift/common/type/v1/user_pb2.py +0 -0
  217. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift/common/type/v1/user_pb2.pyi +0 -0
  218. /sift_stack_py-0.18.0/lib/sift/common/v1/action_type_pb2_grpc.py → /sift_stack_py-0.19.1/lib/sift/common/type/v1/user_pb2_grpc.py +0 -0
  219. /sift_stack_py-0.18.0/lib/sift/common/v1/action_type_pb2_grpc.pyi → /sift_stack_py-0.19.1/lib/sift/common/type/v1/user_pb2_grpc.pyi +0 -0
  220. {sift_stack_py-0.18.0/lib/sift/data → sift_stack_py-0.19.1/lib/sift/common}/v1/__init__.py +0 -0
  221. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift/common/v1/action_type_pb2.py +0 -0
  222. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift/common/v1/action_type_pb2.pyi +0 -0
  223. /sift_stack_py-0.18.0/lib/sift/common/v1/filter_field_pb2_grpc.py → /sift_stack_py-0.19.1/lib/sift/common/v1/action_type_pb2_grpc.py +0 -0
  224. /sift_stack_py-0.18.0/lib/sift/common/v1/filter_field_pb2_grpc.pyi → /sift_stack_py-0.19.1/lib/sift/common/v1/action_type_pb2_grpc.pyi +0 -0
  225. /sift_stack_py-0.18.0/lib/sift/common/v1/resource_type_pb2_grpc.py → /sift_stack_py-0.19.1/lib/sift/common/v1/filter_field_pb2_grpc.py +0 -0
  226. /sift_stack_py-0.18.0/lib/sift/common/v1/resource_type_pb2_grpc.pyi → /sift_stack_py-0.19.1/lib/sift/common/v1/filter_field_pb2_grpc.pyi +0 -0
  227. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift/common/v1/resource_type_pb2.py +0 -0
  228. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift/common/v1/resource_type_pb2.pyi +0 -0
  229. /sift_stack_py-0.18.0/lib/sift/protobuf_descriptors/v2/channel_parsing_options_pb2_grpc.py → /sift_stack_py-0.19.1/lib/sift/common/v1/resource_type_pb2_grpc.py +0 -0
  230. /sift_stack_py-0.18.0/lib/sift/tags/v1/tags_pb2_grpc.pyi → /sift_stack_py-0.19.1/lib/sift/common/v1/resource_type_pb2_grpc.pyi +0 -0
  231. {sift_stack_py-0.18.0/lib/sift/data/v2 → sift_stack_py-0.19.1/lib/sift/data}/__init__.py +0 -0
  232. {sift_stack_py-0.18.0/lib/sift/data_imports → sift_stack_py-0.19.1/lib/sift/data/v1}/__init__.py +0 -0
  233. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift/data/v1/data_pb2.py +0 -0
  234. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift/data/v1/data_pb2.pyi +0 -0
  235. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift/data/v1/data_pb2_grpc.py +0 -0
  236. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift/data/v1/data_pb2_grpc.pyi +0 -0
  237. {sift_stack_py-0.18.0/lib/sift/data_imports → sift_stack_py-0.19.1/lib/sift/data}/v2/__init__.py +0 -0
  238. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift/data/v2/data_pb2.py +0 -0
  239. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift/data/v2/data_pb2.pyi +0 -0
  240. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift/data/v2/data_pb2_grpc.py +0 -0
  241. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift/data/v2/data_pb2_grpc.pyi +0 -0
  242. {sift_stack_py-0.18.0/lib/sift/dlq_errors → sift_stack_py-0.19.1/lib/sift/data_imports}/__init__.py +0 -0
  243. {sift_stack_py-0.18.0/lib/sift/dlq_errors → sift_stack_py-0.19.1/lib/sift/data_imports}/v2/__init__.py +0 -0
  244. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift/data_imports/v2/data_imports_pb2_grpc.py +0 -0
  245. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift/data_imports/v2/data_imports_pb2_grpc.pyi +0 -0
  246. {sift_stack_py-0.18.0/lib/sift/exports → sift_stack_py-0.19.1/lib/sift/dlq_errors}/__init__.py +0 -0
  247. {sift_stack_py-0.18.0/lib/sift/exports/v1 → sift_stack_py-0.19.1/lib/sift/dlq_errors/v2}/__init__.py +0 -0
  248. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift/dlq_errors/v2/dlq_errors_pb2.py +0 -0
  249. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift/dlq_errors/v2/dlq_errors_pb2.pyi +0 -0
  250. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift/dlq_errors/v2/dlq_errors_pb2_grpc.py +0 -0
  251. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift/dlq_errors/v2/dlq_errors_pb2_grpc.pyi +0 -0
  252. {sift_stack_py-0.18.0/lib/sift/external_sync → sift_stack_py-0.19.1/lib/sift/docs}/__init__.py +0 -0
  253. {sift_stack_py-0.18.0/lib/sift/external_sync → sift_stack_py-0.19.1/lib/sift/docs}/v1/__init__.py +0 -0
  254. {sift_stack_py-0.18.0/lib/sift/ingest → sift_stack_py-0.19.1/lib/sift/exports}/__init__.py +0 -0
  255. {sift_stack_py-0.18.0/lib/sift/ingest → sift_stack_py-0.19.1/lib/sift/exports}/v1/__init__.py +0 -0
  256. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift/exports/v1/exports_pb2_grpc.py +0 -0
  257. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift/exports/v1/exports_pb2_grpc.pyi +0 -0
  258. {sift_stack_py-0.18.0/lib/sift/ingestion_configs → sift_stack_py-0.19.1/lib/sift/external_sync}/__init__.py +0 -0
  259. {sift_stack_py-0.18.0/lib/sift/ingestion_configs → sift_stack_py-0.19.1/lib/sift/external_sync}/v1/__init__.py +0 -0
  260. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift/external_sync/v1/external_sync_pb2.py +0 -0
  261. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift/external_sync/v1/external_sync_pb2.pyi +0 -0
  262. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift/external_sync/v1/external_sync_pb2_grpc.py +0 -0
  263. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift/external_sync/v1/external_sync_pb2_grpc.pyi +0 -0
  264. {sift_stack_py-0.18.0/lib/sift/ingestion_configs/v2 → sift_stack_py-0.19.1/lib/sift/families}/__init__.py +0 -0
  265. {sift_stack_py-0.18.0/lib/sift/jobs → sift_stack_py-0.19.1/lib/sift/families/v1}/__init__.py +0 -0
  266. {sift_stack_py-0.18.0/lib/sift/jobs/v1 → sift_stack_py-0.19.1/lib/sift/filters}/__init__.py +0 -0
  267. {sift_stack_py-0.18.0/lib/sift/me → sift_stack_py-0.19.1/lib/sift/filters/v1}/__init__.py +0 -0
  268. {sift_stack_py-0.18.0/lib/sift/me/v2 → sift_stack_py-0.19.1/lib/sift/ingest}/__init__.py +0 -0
  269. {sift_stack_py-0.18.0/lib/sift/metadata → sift_stack_py-0.19.1/lib/sift/ingest/v1}/__init__.py +0 -0
  270. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift/ingest/v1/ingest_pb2.py +0 -0
  271. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift/ingest/v1/ingest_pb2.pyi +0 -0
  272. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift/ingest/v1/ingest_pb2_grpc.py +0 -0
  273. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift/ingest/v1/ingest_pb2_grpc.pyi +0 -0
  274. {sift_stack_py-0.18.0/lib/sift/metadata/v1 → sift_stack_py-0.19.1/lib/sift/ingestion_configs}/__init__.py +0 -0
  275. {sift_stack_py-0.18.0/lib/sift/notifications → sift_stack_py-0.19.1/lib/sift/ingestion_configs/v1}/__init__.py +0 -0
  276. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift/ingestion_configs/v1/ingestion_configs_pb2.py +0 -0
  277. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift/ingestion_configs/v1/ingestion_configs_pb2.pyi +0 -0
  278. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift/ingestion_configs/v1/ingestion_configs_pb2_grpc.py +0 -0
  279. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift/ingestion_configs/v1/ingestion_configs_pb2_grpc.pyi +0 -0
  280. {sift_stack_py-0.18.0/lib/sift/notifications/v1 → sift_stack_py-0.19.1/lib/sift/ingestion_configs/v2}/__init__.py +0 -0
  281. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift/ingestion_configs/v2/ingestion_configs_pb2.py +0 -0
  282. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift/ingestion_configs/v2/ingestion_configs_pb2.pyi +0 -0
  283. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift/ingestion_configs/v2/ingestion_configs_pb2_grpc.py +0 -0
  284. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift/ingestion_configs/v2/ingestion_configs_pb2_grpc.pyi +0 -0
  285. {sift_stack_py-0.18.0/lib/sift/panel_configurations → sift_stack_py-0.19.1/lib/sift/jobs}/__init__.py +0 -0
  286. {sift_stack_py-0.18.0/lib/sift/panel_configurations → sift_stack_py-0.19.1/lib/sift/jobs}/v1/__init__.py +0 -0
  287. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift/jobs/v1/jobs_pb2.py +0 -0
  288. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift/jobs/v1/jobs_pb2.pyi +0 -0
  289. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift/jobs/v1/jobs_pb2_grpc.py +0 -0
  290. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift/jobs/v1/jobs_pb2_grpc.pyi +0 -0
  291. {sift_stack_py-0.18.0/lib/sift/ping → sift_stack_py-0.19.1/lib/sift/me}/__init__.py +0 -0
  292. {sift_stack_py-0.18.0/lib/sift/ping/v1 → sift_stack_py-0.19.1/lib/sift/me/v2}/__init__.py +0 -0
  293. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift/me/v2/me_pb2.py +0 -0
  294. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift/me/v2/me_pb2.pyi +0 -0
  295. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift/me/v2/me_pb2_grpc.py +0 -0
  296. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift/me/v2/me_pb2_grpc.pyi +0 -0
  297. {sift_stack_py-0.18.0/lib/sift/policies → sift_stack_py-0.19.1/lib/sift/metadata}/__init__.py +0 -0
  298. {sift_stack_py-0.18.0/lib/sift/policies → sift_stack_py-0.19.1/lib/sift/metadata}/v1/__init__.py +0 -0
  299. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift/metadata/v1/metadata_pb2_grpc.py +0 -0
  300. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift/metadata/v1/metadata_pb2_grpc.pyi +0 -0
  301. {sift_stack_py-0.18.0/lib/sift/principal_attributes → sift_stack_py-0.19.1/lib/sift/notifications}/__init__.py +0 -0
  302. {sift_stack_py-0.18.0/lib/sift/principal_attributes → sift_stack_py-0.19.1/lib/sift/notifications}/v1/__init__.py +0 -0
  303. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift/notifications/v1/notifications_pb2.py +0 -0
  304. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift/notifications/v1/notifications_pb2.pyi +0 -0
  305. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift/notifications/v1/notifications_pb2_grpc.py +0 -0
  306. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift/notifications/v1/notifications_pb2_grpc.pyi +0 -0
  307. {sift_stack_py-0.18.0/lib/sift/protobuf_descriptors → sift_stack_py-0.19.1/lib/sift/panel_configurations}/__init__.py +0 -0
  308. {sift_stack_py-0.18.0/lib/sift/protobuf_descriptors/v2 → sift_stack_py-0.19.1/lib/sift/panel_configurations/v1}/__init__.py +0 -0
  309. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift/panel_configurations/v1/panel_configuration_pb2.py +0 -0
  310. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift/panel_configurations/v1/panel_configuration_pb2_grpc.py +0 -0
  311. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift/panel_configurations/v1/panel_configuration_pb2_grpc.pyi +0 -0
  312. {sift_stack_py-0.18.0/lib/sift/remote_files → sift_stack_py-0.19.1/lib/sift/ping}/__init__.py +0 -0
  313. {sift_stack_py-0.18.0/lib/sift/remote_files → sift_stack_py-0.19.1/lib/sift/ping}/v1/__init__.py +0 -0
  314. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift/ping/v1/ping_pb2.py +0 -0
  315. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift/ping/v1/ping_pb2.pyi +0 -0
  316. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift/ping/v1/ping_pb2_grpc.py +0 -0
  317. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift/ping/v1/ping_pb2_grpc.pyi +0 -0
  318. {sift_stack_py-0.18.0/lib/sift/report_templates → sift_stack_py-0.19.1/lib/sift/policies}/__init__.py +0 -0
  319. {sift_stack_py-0.18.0/lib/sift/report_templates → sift_stack_py-0.19.1/lib/sift/policies}/v1/__init__.py +0 -0
  320. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift/policies/v1/policies_pb2.py +0 -0
  321. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift/policies/v1/policies_pb2.pyi +0 -0
  322. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift/policies/v1/policies_pb2_grpc.py +0 -0
  323. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift/policies/v1/policies_pb2_grpc.pyi +0 -0
  324. {sift_stack_py-0.18.0/lib/sift/reports → sift_stack_py-0.19.1/lib/sift/principal_attributes}/__init__.py +0 -0
  325. {sift_stack_py-0.18.0/lib/sift/reports → sift_stack_py-0.19.1/lib/sift/principal_attributes}/v1/__init__.py +0 -0
  326. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift/principal_attributes/v1/principal_attributes_pb2.py +0 -0
  327. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift/principal_attributes/v1/principal_attributes_pb2.pyi +0 -0
  328. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift/principal_attributes/v1/principal_attributes_pb2_grpc.py +0 -0
  329. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift/principal_attributes/v1/principal_attributes_pb2_grpc.pyi +0 -0
  330. {sift_stack_py-0.18.0/lib/sift/resource_attribute → sift_stack_py-0.19.1/lib/sift/protobuf_descriptors}/__init__.py +0 -0
  331. {sift_stack_py-0.18.0/lib/sift/resource_attribute/v1 → sift_stack_py-0.19.1/lib/sift/protobuf_descriptors/v2}/__init__.py +0 -0
  332. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift/protobuf_descriptors/v2/channel_parsing_options_pb2.py +0 -0
  333. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift/protobuf_descriptors/v2/channel_parsing_options_pb2.pyi +0 -0
  334. /sift_stack_py-0.18.0/lib/sift/tags/v1/tags_pb2_grpc.py → /sift_stack_py-0.19.1/lib/sift/protobuf_descriptors/v2/channel_parsing_options_pb2_grpc.py +0 -0
  335. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift/protobuf_descriptors/v2/channel_parsing_options_pb2_grpc.pyi +0 -0
  336. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift/protobuf_descriptors/v2/protobuf_descriptors_pb2.py +0 -0
  337. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift/protobuf_descriptors/v2/protobuf_descriptors_pb2.pyi +0 -0
  338. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift/protobuf_descriptors/v2/protobuf_descriptors_pb2_grpc.py +0 -0
  339. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift/protobuf_descriptors/v2/protobuf_descriptors_pb2_grpc.pyi +0 -0
  340. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift/py.typed +0 -0
  341. {sift_stack_py-0.18.0/lib/sift/roles → sift_stack_py-0.19.1/lib/sift/remote_files}/__init__.py +0 -0
  342. {sift_stack_py-0.18.0/lib/sift/roles/v2 → sift_stack_py-0.19.1/lib/sift/remote_files/v1}/__init__.py +0 -0
  343. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift/remote_files/v1/remote_files_pb2_grpc.py +0 -0
  344. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift/remote_files/v1/remote_files_pb2_grpc.pyi +0 -0
  345. {sift_stack_py-0.18.0/lib/sift/rule_evaluation → sift_stack_py-0.19.1/lib/sift/report_templates}/__init__.py +0 -0
  346. {sift_stack_py-0.18.0/lib/sift/rule_evaluation → sift_stack_py-0.19.1/lib/sift/report_templates}/v1/__init__.py +0 -0
  347. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift/report_templates/v1/report_templates_pb2.py +0 -0
  348. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift/report_templates/v1/report_templates_pb2.pyi +0 -0
  349. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift/report_templates/v1/report_templates_pb2_grpc.py +0 -0
  350. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift/report_templates/v1/report_templates_pb2_grpc.pyi +0 -0
  351. {sift_stack_py-0.18.0/lib/sift/rules → sift_stack_py-0.19.1/lib/sift/reports}/__init__.py +0 -0
  352. {sift_stack_py-0.18.0/lib/sift/rules → sift_stack_py-0.19.1/lib/sift/reports}/v1/__init__.py +0 -0
  353. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift/reports/v1/reports_pb2_grpc.py +0 -0
  354. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift/reports/v1/reports_pb2_grpc.pyi +0 -0
  355. {sift_stack_py-0.18.0/lib/sift/runs → sift_stack_py-0.19.1/lib/sift/resource_attribute}/__init__.py +0 -0
  356. {sift_stack_py-0.18.0/lib/sift/runs/v2 → sift_stack_py-0.19.1/lib/sift/resource_attribute/v1}/__init__.py +0 -0
  357. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift/resource_attribute/v1/resource_attribute_pb2.py +0 -0
  358. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift/resource_attribute/v1/resource_attribute_pb2.pyi +0 -0
  359. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift/resource_attribute/v1/resource_attribute_pb2_grpc.py +0 -0
  360. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift/resource_attribute/v1/resource_attribute_pb2_grpc.pyi +0 -0
  361. {sift_stack_py-0.18.0/lib/sift/saved_searches → sift_stack_py-0.19.1/lib/sift/roles}/__init__.py +0 -0
  362. {sift_stack_py-0.18.0/lib/sift/saved_searches/v1 → sift_stack_py-0.19.1/lib/sift/roles/v2}/__init__.py +0 -0
  363. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift/roles/v2/roles_pb2.py +0 -0
  364. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift/roles/v2/roles_pb2.pyi +0 -0
  365. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift/roles/v2/roles_pb2_grpc.py +0 -0
  366. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift/roles/v2/roles_pb2_grpc.pyi +0 -0
  367. {sift_stack_py-0.18.0/lib/sift/tags → sift_stack_py-0.19.1/lib/sift/rule_evaluation}/__init__.py +0 -0
  368. {sift_stack_py-0.18.0/lib/sift/tags → sift_stack_py-0.19.1/lib/sift/rule_evaluation}/v1/__init__.py +0 -0
  369. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift/rule_evaluation/v1/rule_evaluation_pb2_grpc.py +0 -0
  370. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift/rule_evaluation/v1/rule_evaluation_pb2_grpc.pyi +0 -0
  371. {sift_stack_py-0.18.0/lib/sift/tags/v2 → sift_stack_py-0.19.1/lib/sift/rules}/__init__.py +0 -0
  372. {sift_stack_py-0.18.0/lib/sift/test_reports → sift_stack_py-0.19.1/lib/sift/rules/v1}/__init__.py +0 -0
  373. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift/rules/v1/rules_pb2_grpc.py +0 -0
  374. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift/rules/v1/rules_pb2_grpc.pyi +0 -0
  375. {sift_stack_py-0.18.0/lib/sift/test_reports/v1 → sift_stack_py-0.19.1/lib/sift/runs}/__init__.py +0 -0
  376. {sift_stack_py-0.18.0/lib/sift/unit → sift_stack_py-0.19.1/lib/sift/runs/v2}/__init__.py +0 -0
  377. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift/runs/v2/runs_pb2.py +0 -0
  378. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift/runs/v2/runs_pb2_grpc.py +0 -0
  379. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift/runs/v2/runs_pb2_grpc.pyi +0 -0
  380. {sift_stack_py-0.18.0/lib/sift/unit/v2 → sift_stack_py-0.19.1/lib/sift/saved_searches}/__init__.py +0 -0
  381. {sift_stack_py-0.18.0/lib/sift/user_defined_functions → sift_stack_py-0.19.1/lib/sift/saved_searches/v1}/__init__.py +0 -0
  382. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift/saved_searches/v1/saved_searches_pb2_grpc.py +0 -0
  383. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift/saved_searches/v1/saved_searches_pb2_grpc.pyi +0 -0
  384. {sift_stack_py-0.18.0/lib/sift/user_defined_functions/v1 → sift_stack_py-0.19.1/lib/sift/tags}/__init__.py +0 -0
  385. {sift_stack_py-0.18.0/lib/sift/user_groups → sift_stack_py-0.19.1/lib/sift/tags/v1}/__init__.py +0 -0
  386. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift/tags/v1/tags_pb2.py +0 -0
  387. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift/tags/v1/tags_pb2.pyi +0 -0
  388. {sift_stack_py-0.18.0/lib/sift/user_groups → sift_stack_py-0.19.1/lib/sift/tags}/v2/__init__.py +0 -0
  389. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift/tags/v2/tags_pb2.py +0 -0
  390. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift/tags/v2/tags_pb2.pyi +0 -0
  391. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift/tags/v2/tags_pb2_grpc.py +0 -0
  392. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift/tags/v2/tags_pb2_grpc.pyi +0 -0
  393. {sift_stack_py-0.18.0/lib/sift/users → sift_stack_py-0.19.1/lib/sift/test_reports}/__init__.py +0 -0
  394. {sift_stack_py-0.18.0/lib/sift/users/v2 → sift_stack_py-0.19.1/lib/sift/test_reports/v1}/__init__.py +0 -0
  395. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift/test_reports/v1/test_reports_pb2.py +0 -0
  396. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift/test_reports/v1/test_reports_pb2.pyi +0 -0
  397. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift/test_reports/v1/test_reports_pb2_grpc.py +0 -0
  398. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift/test_reports/v1/test_reports_pb2_grpc.pyi +0 -0
  399. {sift_stack_py-0.18.0/lib/sift/views → sift_stack_py-0.19.1/lib/sift/unit}/__init__.py +0 -0
  400. {sift_stack_py-0.18.0/lib/sift/views/v1 → sift_stack_py-0.19.1/lib/sift/unit/v2}/__init__.py +0 -0
  401. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift/unit/v2/unit_pb2.py +0 -0
  402. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift/unit/v2/unit_pb2.pyi +0 -0
  403. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift/unit/v2/unit_pb2_grpc.py +0 -0
  404. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift/unit/v2/unit_pb2_grpc.pyi +0 -0
  405. {sift_stack_py-0.18.0/lib/sift/views/v2 → sift_stack_py-0.19.1/lib/sift/user_defined_functions}/__init__.py +0 -0
  406. {sift_stack_py-0.18.0/lib/sift/webhooks → sift_stack_py-0.19.1/lib/sift/user_defined_functions/v1}/__init__.py +0 -0
  407. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift/user_defined_functions/v1/user_defined_functions_pb2.py +0 -0
  408. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift/user_defined_functions/v1/user_defined_functions_pb2.pyi +0 -0
  409. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift/user_defined_functions/v1/user_defined_functions_pb2_grpc.py +0 -0
  410. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift/user_defined_functions/v1/user_defined_functions_pb2_grpc.pyi +0 -0
  411. {sift_stack_py-0.18.0/lib/sift/webhooks/v1 → sift_stack_py-0.19.1/lib/sift/user_groups}/__init__.py +0 -0
  412. {sift_stack_py-0.18.0/lib/sift_client/_internal → sift_stack_py-0.19.1/lib/sift/user_groups/v2}/__init__.py +0 -0
  413. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift/user_groups/v2/user_groups_pb2.py +0 -0
  414. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift/user_groups/v2/user_groups_pb2.pyi +0 -0
  415. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift/user_groups/v2/user_groups_pb2_grpc.py +0 -0
  416. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift/user_groups/v2/user_groups_pb2_grpc.pyi +0 -0
  417. {sift_stack_py-0.18.0/lib/sift_client/_internal/grpc_transport/_async_interceptors → sift_stack_py-0.19.1/lib/sift/users}/__init__.py +0 -0
  418. {sift_stack_py-0.18.0/lib/sift_client/_internal/grpc_transport/_interceptors → sift_stack_py-0.19.1/lib/sift/users/v2}/__init__.py +0 -0
  419. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift/users/v2/users_pb2.py +0 -0
  420. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift/users/v2/users_pb2.pyi +0 -0
  421. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift/users/v2/users_pb2_grpc.py +0 -0
  422. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift/users/v2/users_pb2_grpc.pyi +0 -0
  423. {sift_stack_py-0.18.0/lib/sift_client/_internal/grpc_transport/server_interceptors → sift_stack_py-0.19.1/lib/sift/views}/__init__.py +0 -0
  424. {sift_stack_py-0.18.0/lib/sift_client/_internal/pytest_plugin → sift_stack_py-0.19.1/lib/sift/views/v1}/__init__.py +0 -0
  425. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift/views/v1/views_pb2.py +0 -0
  426. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift/views/v1/views_pb2.pyi +0 -0
  427. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift/views/v1/views_pb2_grpc.py +0 -0
  428. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift/views/v1/views_pb2_grpc.pyi +0 -0
  429. {sift_stack_py-0.18.0/lib/sift_client/_internal/util → sift_stack_py-0.19.1/lib/sift/views/v2}/__init__.py +0 -0
  430. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift/views/v2/views_pb2.py +0 -0
  431. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift/views/v2/views_pb2.pyi +0 -0
  432. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift/views/v2/views_pb2_grpc.py +0 -0
  433. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift/views/v2/views_pb2_grpc.pyi +0 -0
  434. {sift_stack_py-0.18.0/lib/sift_client/scripts → sift_stack_py-0.19.1/lib/sift/webhooks}/__init__.py +0 -0
  435. {sift_stack_py-0.18.0/lib/sift_client/sift_types/_mixins → sift_stack_py-0.19.1/lib/sift/webhooks/v1}/__init__.py +0 -0
  436. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift/webhooks/v1/webhooks_pb2.py +0 -0
  437. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift/webhooks/v1/webhooks_pb2.pyi +0 -0
  438. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift/webhooks/v1/webhooks_pb2_grpc.py +0 -0
  439. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift/webhooks/v1/webhooks_pb2_grpc.pyi +0 -0
  440. {sift_stack_py-0.18.0/lib/sift_py/_internal/test_util → sift_stack_py-0.19.1/lib/sift_client/_internal}/__init__.py +0 -0
  441. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift_client/_internal/grpc_transport/__init__.py +0 -0
  442. {sift_stack_py-0.18.0/lib/sift_py/asset → sift_stack_py-0.19.1/lib/sift_client/_internal/grpc_transport/_async_interceptors}/__init__.py +0 -0
  443. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift_client/_internal/grpc_transport/_async_interceptors/base.py +0 -0
  444. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift_client/_internal/grpc_transport/_async_interceptors/metadata.py +0 -0
  445. {sift_stack_py-0.18.0/lib/sift_py/calculated_channels → sift_stack_py-0.19.1/lib/sift_client/_internal/grpc_transport/_interceptors}/__init__.py +0 -0
  446. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift_client/_internal/grpc_transport/_interceptors/base.py +0 -0
  447. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift_client/_internal/grpc_transport/_interceptors/context.py +0 -0
  448. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift_client/_internal/grpc_transport/_interceptors/metadata.py +0 -0
  449. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift_client/_internal/grpc_transport/_retry.py +0 -0
  450. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift_client/_internal/grpc_transport/keepalive.py +0 -0
  451. {sift_stack_py-0.18.0/lib/sift_py/file_attachment/_internal → sift_stack_py-0.19.1/lib/sift_client/_internal/grpc_transport/server_interceptors}/__init__.py +0 -0
  452. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift_client/_internal/grpc_transport/server_interceptors/server_interceptor.py +0 -0
  453. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift_client/_internal/grpc_transport/transport_test.py +0 -0
  454. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift_client/_internal/low_level_wrappers/_test_results_log.py +0 -0
  455. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift_client/_internal/low_level_wrappers/assets.py +0 -0
  456. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift_client/_internal/low_level_wrappers/base.py +0 -0
  457. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift_client/_internal/low_level_wrappers/calculated_channels.py +0 -0
  458. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift_client/_internal/low_level_wrappers/channels.py +0 -0
  459. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift_client/_internal/low_level_wrappers/exports.py +0 -0
  460. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift_client/_internal/low_level_wrappers/ingestion.py +0 -0
  461. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift_client/_internal/low_level_wrappers/jobs.py +0 -0
  462. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift_client/_internal/low_level_wrappers/ping.py +0 -0
  463. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift_client/_internal/low_level_wrappers/remote_files.py +0 -0
  464. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift_client/_internal/low_level_wrappers/reports.py +0 -0
  465. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift_client/_internal/low_level_wrappers/rules.py +0 -0
  466. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift_client/_internal/low_level_wrappers/runs.py +0 -0
  467. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift_client/_internal/low_level_wrappers/tags.py +0 -0
  468. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift_client/_internal/low_level_wrappers/test_results.py +0 -0
  469. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift_client/_internal/low_level_wrappers/units.py +0 -0
  470. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift_client/_internal/low_level_wrappers/upload.py +0 -0
  471. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift_client/_internal/pyproject_config.py +0 -0
  472. {sift_stack_py-0.18.0/lib/sift_py/grpc/_async_interceptors → sift_stack_py-0.19.1/lib/sift_client/_internal/pytest_plugin}/__init__.py +0 -0
  473. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift_client/_internal/pytest_plugin/audit_log.py +0 -0
  474. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift_client/_internal/pytest_plugin/modes.py +0 -0
  475. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift_client/_internal/pytest_plugin/options.py +0 -0
  476. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift_client/_internal/pytest_plugin/terminal.py +0 -0
  477. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift_client/_internal/rest.py +0 -0
  478. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift_client/_internal/time.py +0 -0
  479. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift_client/_internal/urls.py +0 -0
  480. {sift_stack_py-0.18.0/lib/sift_py/grpc/_interceptors → sift_stack_py-0.19.1/lib/sift_client/_internal/util}/__init__.py +0 -0
  481. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift_client/_internal/util/channels.py +0 -0
  482. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift_client/_internal/util/executor.py +0 -0
  483. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift_client/_internal/util/hdf5.py +0 -0
  484. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift_client/_internal/util/numpy_types.py +0 -0
  485. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift_client/_internal/util/progress.py +0 -0
  486. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift_client/_internal/util/tdms.py +0 -0
  487. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift_client/_internal/util/timestamp.py +0 -0
  488. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift_client/config.py +0 -0
  489. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift_client/errors.py +0 -0
  490. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift_client/py.typed +0 -0
  491. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift_client/resources/assets.py +0 -0
  492. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift_client/resources/calculated_channels.py +0 -0
  493. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift_client/resources/exports.py +0 -0
  494. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift_client/resources/ingestion.py +0 -0
  495. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift_client/resources/ping.py +0 -0
  496. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift_client/resources/py.typed +0 -0
  497. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift_client/resources/rules.py +0 -0
  498. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift_client/resources/runs.py +0 -0
  499. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift_client/resources/sync_stubs/py.typed +0 -0
  500. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift_client/resources/tags.py +0 -0
  501. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift_client/resources/test_results.py +0 -0
  502. {sift_stack_py-0.18.0/lib/sift_py/ingestion/config/yaml → sift_stack_py-0.19.1/lib/sift_client/scripts}/__init__.py +0 -0
  503. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift_client/scripts/import_test_result_log.py +0 -0
  504. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift_client/sift_types/_base.py +0 -0
  505. {sift_stack_py-0.18.0/lib/sift_py/report_templates → sift_stack_py-0.19.1/lib/sift_client/sift_types/_mixins}/__init__.py +0 -0
  506. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift_client/sift_types/_mixins/file_attachments.py +0 -0
  507. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift_client/sift_types/_mixins/metadata.py +0 -0
  508. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift_client/sift_types/_mixins/simulated.py +0 -0
  509. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift_client/sift_types/asset.py +0 -0
  510. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift_client/sift_types/calculated_channel.py +0 -0
  511. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift_client/sift_types/channel.py +0 -0
  512. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift_client/sift_types/export.py +0 -0
  513. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift_client/sift_types/file_attachment.py +0 -0
  514. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift_client/sift_types/ingestion.py +0 -0
  515. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift_client/sift_types/job.py +0 -0
  516. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift_client/sift_types/report.py +0 -0
  517. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift_client/sift_types/rule.py +0 -0
  518. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift_client/sift_types/run.py +0 -0
  519. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift_client/sift_types/tag.py +0 -0
  520. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift_client/sift_types/test_report.py +0 -0
  521. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift_client/transport/__init__.py +0 -0
  522. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift_client/transport/base_connection.py +0 -0
  523. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift_client/transport/grpc_transport.py +0 -0
  524. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift_client/transport/rest_transport.py +0 -0
  525. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift_client/util/__init__.py +0 -0
  526. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift_client/util/metadata.py +0 -0
  527. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift_client/util/test_results/__init__.py +0 -0
  528. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift_client/util/test_results/bounds.py +0 -0
  529. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift_py/__init__.py +0 -0
  530. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift_py/_internal/__init__.py +0 -0
  531. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift_py/_internal/cel.py +0 -0
  532. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift_py/_internal/channel.py +0 -0
  533. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift_py/_internal/convert/__init__.py +0 -0
  534. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift_py/_internal/convert/json.py +0 -0
  535. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift_py/_internal/convert/protobuf.py +0 -0
  536. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift_py/_internal/convert/timestamp.py +0 -0
  537. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift_py/_internal/metadata.py +0 -0
  538. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift_py/_internal/metadata_test.py +0 -0
  539. {sift_stack_py-0.18.0/lib/sift_py/rule → sift_stack_py-0.19.1/lib/sift_py/_internal/test_util}/__init__.py +0 -0
  540. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift_py/_internal/test_util/channel.py +0 -0
  541. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift_py/_internal/test_util/fn.py +0 -0
  542. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift_py/_internal/test_util/server_interceptor.py +0 -0
  543. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift_py/_internal/time.py +0 -0
  544. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift_py/_internal/user.py +0 -0
  545. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift_py/_rest_test.py +0 -0
  546. {sift_stack_py-0.18.0/lib/sift_py/yaml → sift_stack_py-0.19.1/lib/sift_py/asset}/__init__.py +0 -0
  547. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift_py/asset/_config_test.py +0 -0
  548. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift_py/asset/_internal/shared.py +0 -0
  549. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift_py/asset/_service_test.py +0 -0
  550. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift_py/asset/config.py +0 -0
  551. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift_py/asset/service.py +0 -0
  552. /sift_stack_py-0.18.0/lib/sift_py/py.typed → /sift_stack_py-0.19.1/lib/sift_py/calculated_channels/__init__.py +0 -0
  553. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift_py/calculated_channels/_service_test.py +0 -0
  554. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift_py/calculated_channels/config.py +0 -0
  555. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift_py/calculated_channels/service.py +0 -0
  556. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift_py/data/__init__.py +0 -0
  557. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift_py/data/_channel.py +0 -0
  558. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift_py/data/_deserialize.py +0 -0
  559. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift_py/data/_deserialize_test.py +0 -0
  560. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift_py/data/_service_test.py +0 -0
  561. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift_py/data/_validate.py +0 -0
  562. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift_py/data/error.py +0 -0
  563. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift_py/data/query.py +0 -0
  564. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift_py/data/service.py +0 -0
  565. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift_py/data_import/__init__.py +0 -0
  566. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift_py/data_import/_config.py +0 -0
  567. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift_py/data_import/_config_test.py +0 -0
  568. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift_py/data_import/_csv_test.py +0 -0
  569. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift_py/data_import/_hdf5_test.py +0 -0
  570. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift_py/data_import/_parquet_test.py +0 -0
  571. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift_py/data_import/_ros_channel.py +0 -0
  572. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift_py/data_import/_rosbag_test.py +0 -0
  573. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift_py/data_import/_status_test.py +0 -0
  574. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift_py/data_import/_tdms_test.py +0 -0
  575. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift_py/data_import/_utils.py +0 -0
  576. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift_py/data_import/_utils_test.py +0 -0
  577. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift_py/data_import/ch10.py +0 -0
  578. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift_py/data_import/config.py +0 -0
  579. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift_py/data_import/csv.py +0 -0
  580. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift_py/data_import/hdf5.py +0 -0
  581. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift_py/data_import/parquet.py +0 -0
  582. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift_py/data_import/parquet_complex_types.py +0 -0
  583. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift_py/data_import/rosbags.py +0 -0
  584. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift_py/data_import/status.py +0 -0
  585. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift_py/data_import/tdms.py +0 -0
  586. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift_py/data_import/tempfile.py +0 -0
  587. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift_py/data_import/time_format.py +0 -0
  588. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift_py/error.py +0 -0
  589. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift_py/file_attachment/__init__.py +0 -0
  590. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift_py/file_attachment/_internal/download.py +0 -0
  591. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift_py/file_attachment/_internal/upload.py +0 -0
  592. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift_py/file_attachment/_service_test.py +0 -0
  593. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift_py/file_attachment/entity.py +0 -0
  594. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift_py/file_attachment/metadata.py +0 -0
  595. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift_py/file_attachment/service.py +0 -0
  596. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift_py/grpc/__init__.py +0 -0
  597. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift_py/grpc/_async_interceptors/base.py +0 -0
  598. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift_py/grpc/_async_interceptors/metadata.py +0 -0
  599. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift_py/grpc/_interceptors/base.py +0 -0
  600. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift_py/grpc/_interceptors/context.py +0 -0
  601. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift_py/grpc/_interceptors/metadata.py +0 -0
  602. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift_py/grpc/_retry.py +0 -0
  603. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift_py/grpc/keepalive.py +0 -0
  604. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift_py/grpc/transport.py +0 -0
  605. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift_py/grpc/transport_test.py +0 -0
  606. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift_py/ingestion/__init__.py +0 -0
  607. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift_py/ingestion/_internal/__init__.py +0 -0
  608. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift_py/ingestion/_internal/channel.py +0 -0
  609. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift_py/ingestion/_internal/error.py +0 -0
  610. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift_py/ingestion/_internal/ingest.py +0 -0
  611. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift_py/ingestion/_internal/ingest_test.py +0 -0
  612. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift_py/ingestion/_internal/ingestion_config.py +0 -0
  613. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift_py/ingestion/_internal/run.py +0 -0
  614. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift_py/ingestion/_service_test.py +0 -0
  615. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift_py/ingestion/buffer.py +0 -0
  616. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift_py/ingestion/channel.py +0 -0
  617. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift_py/ingestion/config/__init__.py +0 -0
  618. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift_py/ingestion/config/_telemetry_test.py +0 -0
  619. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift_py/ingestion/config/telemetry.py +0 -0
  620. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift_py/ingestion/config/yaml/error.py +0 -0
  621. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift_py/ingestion/config/yaml/load.py +0 -0
  622. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift_py/ingestion/config/yaml/spec.py +0 -0
  623. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift_py/ingestion/config/yaml/test_load.py +0 -0
  624. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift_py/ingestion/flow.py +0 -0
  625. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift_py/ingestion/manager.py +0 -0
  626. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift_py/ingestion/rule/__init__.py +0 -0
  627. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift_py/ingestion/rule/config.py +0 -0
  628. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift_py/ingestion/service.py +0 -0
  629. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift_py/report/_report_test.py +0 -0
  630. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift_py/report/service.py +0 -0
  631. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift_py/report_templates/_config_test.py +0 -0
  632. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift_py/report_templates/_service_test.py +0 -0
  633. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift_py/report_templates/config.py +0 -0
  634. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift_py/report_templates/service.py +0 -0
  635. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift_py/rest.py +0 -0
  636. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift_py/rule/_config_test.py +0 -0
  637. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift_py/rule/_service_test.py +0 -0
  638. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift_py/rule/config.py +0 -0
  639. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift_py/rule/service.py +0 -0
  640. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift_py/rule_evaluation/_service_test.py +0 -0
  641. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift_py/rule_evaluation/service.py +0 -0
  642. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift_py/tag/_internal/shared.py +0 -0
  643. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift_py/yaml/_channel_test.py +0 -0
  644. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift_py/yaml/_rule_test.py +0 -0
  645. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift_py/yaml/_utils_test.py +0 -0
  646. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift_py/yaml/calculated_channels.py +0 -0
  647. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift_py/yaml/channel.py +0 -0
  648. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift_py/yaml/report_templates.py +0 -0
  649. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift_py/yaml/rule.py +0 -0
  650. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift_py/yaml/utils.py +0 -0
  651. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift_stack_py.egg-info/dependency_links.txt +0 -0
  652. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift_stack_py.egg-info/entry_points.txt +0 -0
  653. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/lib/sift_stack_py.egg-info/top_level.txt +0 -0
  654. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/setup.cfg +0 -0
  655. {sift_stack_py-0.18.0 → sift_stack_py-0.19.1}/setup.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: sift_stack_py
3
- Version: 0.18.0
3
+ Version: 0.19.1
4
4
  Summary: Python client library for the Sift API
5
5
  Maintainer-email: Sift Software Engineers <engineering@siftstack.com>
6
6
  License: Copyright (c) 2024 Azimuth Industries Inc.
@@ -38,6 +38,7 @@ Requires-Dist: pydantic_core~=2.3
38
38
  Requires-Dist: requests~=2.25
39
39
  Requires-Dist: requests-toolbelt~=1.0
40
40
  Requires-Dist: alive-progress~=3.0
41
+ Requires-Dist: diskcache~=5.6
41
42
  Requires-Dist: pandas-stubs<4.0,>=2.0
42
43
  Requires-Dist: types-PyYAML~=6.0
43
44
  Requires-Dist: types-protobuf>=5.0
@@ -54,6 +55,7 @@ Requires-Dist: npTDMS~=1.9; extra == "all"
54
55
  Requires-Dist: polars~=1.8; extra == "all"
55
56
  Requires-Dist: pyOpenSSL<24.0.0; extra == "all"
56
57
  Requires-Dist: pyarrow>=17.0.0; extra == "all"
58
+ Requires-Dist: pyulog~=1.2.2; extra == "all"
57
59
  Requires-Dist: rosbags~=0.0; python_full_version >= "3.8.2" and extra == "all"
58
60
  Requires-Dist: sift-stream-bindings==0.4.1; extra == "all"
59
61
  Requires-Dist: types-pyOpenSSL<24.0.0; extra == "all"
@@ -92,6 +94,7 @@ Requires-Dist: pytest-dotenv==0.5.2; extra == "dev-all"
92
94
  Requires-Dist: pytest-mock==3.14.0; extra == "dev-all"
93
95
  Requires-Dist: pytest-randomly==3.15.0; extra == "dev-all"
94
96
  Requires-Dist: pytest==8.2.2; extra == "dev-all"
97
+ Requires-Dist: pyulog~=1.2.2; extra == "dev-all"
95
98
  Requires-Dist: rosbags~=0.0; python_full_version >= "3.8.2" and extra == "dev-all"
96
99
  Requires-Dist: ruff~=0.12.10; extra == "dev-all"
97
100
  Requires-Dist: sift-stream-bindings==0.4.1; extra == "dev-all"
@@ -144,6 +147,7 @@ Requires-Dist: pytest-dotenv==0.5.2; extra == "docs-build"
144
147
  Requires-Dist: pytest-mock==3.14.0; extra == "docs-build"
145
148
  Requires-Dist: pytest-randomly==3.15.0; extra == "docs-build"
146
149
  Requires-Dist: pytest==8.2.2; extra == "docs-build"
150
+ Requires-Dist: pyulog~=1.2.2; extra == "docs-build"
147
151
  Requires-Dist: rosbags~=0.0; python_full_version >= "3.8.2" and extra == "docs-build"
148
152
  Requires-Dist: ruff~=0.12.10; extra == "docs-build"
149
153
  Requires-Dist: sift-stream-bindings==0.4.1; extra == "docs-build"
@@ -153,6 +157,7 @@ Provides-Extra: file-imports
153
157
  Requires-Dist: h5py~=3.11; extra == "file-imports"
154
158
  Requires-Dist: npTDMS~=1.9; extra == "file-imports"
155
159
  Requires-Dist: polars~=1.8; extra == "file-imports"
160
+ Requires-Dist: pyulog~=1.2.2; extra == "file-imports"
156
161
  Requires-Dist: rosbags~=0.0; python_full_version >= "3.8.2" and extra == "file-imports"
157
162
  Provides-Extra: hdf5
158
163
  Requires-Dist: h5py~=3.11; extra == "hdf5"
@@ -169,6 +174,8 @@ Provides-Extra: sift-stream-bindings
169
174
  Requires-Dist: sift-stream-bindings==0.4.1; extra == "sift-stream-bindings"
170
175
  Provides-Extra: tdms
171
176
  Requires-Dist: npTDMS~=1.9; extra == "tdms"
177
+ Provides-Extra: ulog
178
+ Requires-Dist: pyulog~=1.2.2; extra == "ulog"
172
179
 
173
180
  # Sift Python
174
181
  [![pypi](https://img.shields.io/pypi/v/sift-stack-py)](https://pypi.org/project/sift-stack-py/)
@@ -425,6 +425,10 @@ class ListCalculatedChannelsRequest(google.protobuf.message.Message):
425
425
  Available fields to filter by are `calculated_channel_id`, `organization_id`, `client_key`, `name`, `description`,
426
426
  `asset_id`, `asset_name`, `tag_id`, `tag_name`, `units`, `calculated_channel_version_id`,
427
427
  `created_date`, `modified_date`, `created_by_user_id`, `modified_by_user_id`, `is_archived`, and `archived_date`.
428
+ Folder membership is filterable via the `folders` and `activeFolders` fields. Both contain the ids of the folders
429
+ the calculated channel belongs to; `activeFolders` excludes archived folders. Use `"<folder_id>" in folders` to
430
+ return calculated channels in the given folder, and `size(activeFolders) == 0` to return uncategorized calculated
431
+ channels (calculated channels whose only memberships are in archived folders count as uncategorized).
428
432
  For further information about how to use CELs, please refer to [this guide](https://github.com/google/cel-spec/blob/master/doc/langdef.md#standard-definitions).
429
433
  For more information about the fields used for filtering, please refer to [this definition](/docs/api/grpc/protocol-buffers/calculated_channels#calculated_channel). Optional.
430
434
  """
@@ -0,0 +1,27 @@
1
+ # -*- coding: utf-8 -*-
2
+ # Generated by the protocol buffer compiler. DO NOT EDIT!
3
+ # source: sift/canvas/v1/canvas.proto
4
+ # Protobuf Python Version: 5.26.1
5
+ """Generated protocol buffer code."""
6
+ from google.protobuf import descriptor as _descriptor
7
+ from google.protobuf import descriptor_pool as _descriptor_pool
8
+ from google.protobuf import symbol_database as _symbol_database
9
+ from google.protobuf.internal import builder as _builder
10
+ # @@protoc_insertion_point(imports)
11
+
12
+ _sym_db = _symbol_database.Default()
13
+
14
+
15
+
16
+
17
+ DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1bsift/canvas/v1/canvas.proto\x12\x0esift.canvas.v1*\xe1\x03\n\x19\x43\x61nvasCellExecutionStatus\x12,\n(CANVAS_CELL_EXECUTION_STATUS_UNSPECIFIED\x10\x00\x12,\n(CANVAS_CELL_EXECUTION_STATUS_IN_PROGRESS\x10\x01\x12,\n(CANVAS_CELL_EXECUTION_STATUS_AUTO_PASSED\x10\x02\x12,\n(CANVAS_CELL_EXECUTION_STATUS_AUTO_FAILED\x10\x03\x12.\n*CANVAS_CELL_EXECUTION_STATUS_MANUAL_PASSED\x10\x04\x12.\n*CANVAS_CELL_EXECUTION_STATUS_MANUAL_FAILED\x10\x05\x12&\n\"CANVAS_CELL_EXECUTION_STATUS_ERROR\x10\x06\x12(\n$CANVAS_CELL_EXECUTION_STATUS_SKIPPED\x10\x07\x12%\n!CANVAS_CELL_EXECUTION_STATUS_OPEN\x10\x08\x12\x33\n/CANVAS_CELL_EXECUTION_STATUS_MANUALLY_CANCELLED\x10\tB{\n\x12\x63om.sift.canvas.v1B\x0b\x43\x61nvasProtoP\x01\xa2\x02\x03SCX\xaa\x02\x0eSift.Canvas.V1\xca\x02\x0eSift\\Canvas\\V1\xe2\x02\x1aSift\\Canvas\\V1\\GPBMetadata\xea\x02\x10Sift::Canvas::V1b\x06proto3')
18
+
19
+ _globals = globals()
20
+ _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
21
+ _builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'sift.canvas.v1.canvas_pb2', _globals)
22
+ if not _descriptor._USE_C_DESCRIPTORS:
23
+ _globals['DESCRIPTOR']._loaded_options = None
24
+ _globals['DESCRIPTOR']._serialized_options = b'\n\022com.sift.canvas.v1B\013CanvasProtoP\001\242\002\003SCX\252\002\016Sift.Canvas.V1\312\002\016Sift\\Canvas\\V1\342\002\032Sift\\Canvas\\V1\\GPBMetadata\352\002\020Sift::Canvas::V1'
25
+ _globals['_CANVASCELLEXECUTIONSTATUS']._serialized_start=48
26
+ _globals['_CANVASCELLEXECUTIONSTATUS']._serialized_end=529
27
+ # @@protoc_insertion_point(module_scope)
@@ -0,0 +1,52 @@
1
+ """
2
+ @generated by mypy-protobuf. Do not edit manually!
3
+ isort:skip_file
4
+ """
5
+
6
+ import builtins
7
+ import google.protobuf.descriptor
8
+ import google.protobuf.internal.enum_type_wrapper
9
+ import sys
10
+ import typing
11
+
12
+ if sys.version_info >= (3, 10):
13
+ import typing as typing_extensions
14
+ else:
15
+ import typing_extensions
16
+
17
+ DESCRIPTOR: google.protobuf.descriptor.FileDescriptor
18
+
19
+ class _CanvasCellExecutionStatus:
20
+ ValueType = typing.NewType("ValueType", builtins.int)
21
+ V: typing_extensions.TypeAlias = ValueType
22
+
23
+ class _CanvasCellExecutionStatusEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[_CanvasCellExecutionStatus.ValueType], builtins.type):
24
+ DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor
25
+ CANVAS_CELL_EXECUTION_STATUS_UNSPECIFIED: _CanvasCellExecutionStatus.ValueType # 0
26
+ CANVAS_CELL_EXECUTION_STATUS_IN_PROGRESS: _CanvasCellExecutionStatus.ValueType # 1
27
+ CANVAS_CELL_EXECUTION_STATUS_AUTO_PASSED: _CanvasCellExecutionStatus.ValueType # 2
28
+ CANVAS_CELL_EXECUTION_STATUS_AUTO_FAILED: _CanvasCellExecutionStatus.ValueType # 3
29
+ CANVAS_CELL_EXECUTION_STATUS_MANUAL_PASSED: _CanvasCellExecutionStatus.ValueType # 4
30
+ CANVAS_CELL_EXECUTION_STATUS_MANUAL_FAILED: _CanvasCellExecutionStatus.ValueType # 5
31
+ CANVAS_CELL_EXECUTION_STATUS_ERROR: _CanvasCellExecutionStatus.ValueType # 6
32
+ CANVAS_CELL_EXECUTION_STATUS_SKIPPED: _CanvasCellExecutionStatus.ValueType # 7
33
+ CANVAS_CELL_EXECUTION_STATUS_OPEN: _CanvasCellExecutionStatus.ValueType # 8
34
+ CANVAS_CELL_EXECUTION_STATUS_MANUALLY_CANCELLED: _CanvasCellExecutionStatus.ValueType # 9
35
+
36
+ class CanvasCellExecutionStatus(_CanvasCellExecutionStatus, metaclass=_CanvasCellExecutionStatusEnumTypeWrapper):
37
+ """Status of a single canvas cell execution. Also used as the status of the
38
+ parent CanvasExecution: the parent rolls up its cells' statuses into a
39
+ single value (e.g. any AUTO_FAILED cell yields an AUTO_FAILED execution).
40
+ """
41
+
42
+ CANVAS_CELL_EXECUTION_STATUS_UNSPECIFIED: CanvasCellExecutionStatus.ValueType # 0
43
+ CANVAS_CELL_EXECUTION_STATUS_IN_PROGRESS: CanvasCellExecutionStatus.ValueType # 1
44
+ CANVAS_CELL_EXECUTION_STATUS_AUTO_PASSED: CanvasCellExecutionStatus.ValueType # 2
45
+ CANVAS_CELL_EXECUTION_STATUS_AUTO_FAILED: CanvasCellExecutionStatus.ValueType # 3
46
+ CANVAS_CELL_EXECUTION_STATUS_MANUAL_PASSED: CanvasCellExecutionStatus.ValueType # 4
47
+ CANVAS_CELL_EXECUTION_STATUS_MANUAL_FAILED: CanvasCellExecutionStatus.ValueType # 5
48
+ CANVAS_CELL_EXECUTION_STATUS_ERROR: CanvasCellExecutionStatus.ValueType # 6
49
+ CANVAS_CELL_EXECUTION_STATUS_SKIPPED: CanvasCellExecutionStatus.ValueType # 7
50
+ CANVAS_CELL_EXECUTION_STATUS_OPEN: CanvasCellExecutionStatus.ValueType # 8
51
+ CANVAS_CELL_EXECUTION_STATUS_MANUALLY_CANCELLED: CanvasCellExecutionStatus.ValueType # 9
52
+ global___CanvasCellExecutionStatus = CanvasCellExecutionStatus
@@ -0,0 +1,31 @@
1
+ # -*- coding: utf-8 -*-
2
+ # Generated by the protocol buffer compiler. DO NOT EDIT!
3
+ # source: sift/common/v1/filter_field.proto
4
+ # Protobuf Python Version: 5.26.1
5
+ """Generated protocol buffer code."""
6
+ from google.protobuf import descriptor as _descriptor
7
+ from google.protobuf import descriptor_pool as _descriptor_pool
8
+ from google.protobuf import symbol_database as _symbol_database
9
+ from google.protobuf.internal import builder as _builder
10
+ # @@protoc_insertion_point(imports)
11
+
12
+ _sym_db = _symbol_database.Default()
13
+
14
+
15
+
16
+
17
+ DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n!sift/common/v1/filter_field.proto\x12\x0esift.common.v1\"\x86\x04\n\x0b\x46ilterField\x12\x1d\n\nfield_name\x18\x01 \x01(\tR\tfieldName\x12\x33\n\x04type\x18\x02 \x01(\x0e\x32\x1f.sift.common.v1.FilterFieldTypeR\x04type\x12\x1f\n\x0b\x65num_values\x18\x03 \x03(\tR\nenumValues\x12 \n\x0b\x64\x65scription\x18\x04 \x01(\tR\x0b\x64\x65scription\x12!\n\x0c\x64isplay_name\x18\x05 \x01(\tR\x0b\x64isplayName\x12\x1c\n\toperators\x18\x06 \x03(\tR\toperators\x12\x1c\n\tfunctions\x18\x07 \x03(\tR\tfunctions\x12\x1f\n\x08nullable\x18\x08 \x01(\x08H\x00R\x08nullable\x88\x01\x01\x12\x16\n\x06\x65ntity\x18\t \x01(\tR\x06\x65ntity\x12\x12\n\x04name\x18\n \x01(\tR\x04name\x12\x10\n\x03key\x18\x0b \x01(\tR\x03key\x12>\n\nfield_kind\x18\x0c \x01(\x0e\x32\x1f.sift.common.v1.FilterFieldKindR\tfieldKind\x12\x33\n\x06\x66ields\x18\r \x03(\x0b\x32\x1b.sift.common.v1.FilterFieldR\x06\x66ields\x12 \n\x0bquantifiers\x18\x0e \x03(\tR\x0bquantifiersB\x0b\n\t_nullable*\xa0\x02\n\x0f\x46ilterFieldType\x12!\n\x1d\x46ILTER_FIELD_TYPE_UNSPECIFIED\x10\x00\x12\x1c\n\x18\x46ILTER_FIELD_TYPE_STRING\x10\x01\x12\x1f\n\x1b\x46ILTER_FIELD_TYPE_TIMESTAMP\x10\x02\x12\x19\n\x15\x46ILTER_FIELD_TYPE_INT\x10\x03\x12\x1a\n\x16\x46ILTER_FIELD_TYPE_BOOL\x10\x04\x12\x1e\n\x1a\x46ILTER_FIELD_TYPE_DURATION\x10\x05\x12\x1c\n\x18\x46ILTER_FIELD_TYPE_DOUBLE\x10\x06\x12\x1a\n\x16\x46ILTER_FIELD_TYPE_ENUM\x10\x07\x12\x1a\n\x16\x46ILTER_FIELD_TYPE_UUID\x10\x08*\xae\x01\n\x0f\x46ilterFieldKind\x12!\n\x1d\x46ILTER_FIELD_KIND_UNSPECIFIED\x10\x00\x12\x1c\n\x18\x46ILTER_FIELD_KIND_SCALAR\x10\x01\x12\x19\n\x15\x46ILTER_FIELD_KIND_MAP\x10\x02\x12\x1e\n\x1a\x46ILTER_FIELD_KIND_RELATION\x10\x03\x12\x1f\n\x1b\x46ILTER_FIELD_KIND_DIRECTIVE\x10\x04\x42\x80\x01\n\x12\x63om.sift.common.v1B\x10\x46ilterFieldProtoP\x01\xa2\x02\x03SCX\xaa\x02\x0eSift.Common.V1\xca\x02\x0eSift\\Common\\V1\xe2\x02\x1aSift\\Common\\V1\\GPBMetadata\xea\x02\x10Sift::Common::V1b\x06proto3')
18
+
19
+ _globals = globals()
20
+ _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
21
+ _builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'sift.common.v1.filter_field_pb2', _globals)
22
+ if not _descriptor._USE_C_DESCRIPTORS:
23
+ _globals['DESCRIPTOR']._loaded_options = None
24
+ _globals['DESCRIPTOR']._serialized_options = b'\n\022com.sift.common.v1B\020FilterFieldProtoP\001\242\002\003SCX\252\002\016Sift.Common.V1\312\002\016Sift\\Common\\V1\342\002\032Sift\\Common\\V1\\GPBMetadata\352\002\020Sift::Common::V1'
25
+ _globals['_FILTERFIELDTYPE']._serialized_start=575
26
+ _globals['_FILTERFIELDTYPE']._serialized_end=863
27
+ _globals['_FILTERFIELDKIND']._serialized_start=866
28
+ _globals['_FILTERFIELDKIND']._serialized_end=1040
29
+ _globals['_FILTERFIELD']._serialized_start=54
30
+ _globals['_FILTERFIELD']._serialized_end=572
31
+ # @@protoc_insertion_point(module_scope)
@@ -0,0 +1,220 @@
1
+ """
2
+ @generated by mypy-protobuf. Do not edit manually!
3
+ isort:skip_file
4
+ """
5
+
6
+ import builtins
7
+ import collections.abc
8
+ import google.protobuf.descriptor
9
+ import google.protobuf.internal.containers
10
+ import google.protobuf.internal.enum_type_wrapper
11
+ import google.protobuf.message
12
+ import sys
13
+ import typing
14
+
15
+ if sys.version_info >= (3, 10):
16
+ import typing as typing_extensions
17
+ else:
18
+ import typing_extensions
19
+
20
+ DESCRIPTOR: google.protobuf.descriptor.FileDescriptor
21
+
22
+ class _FilterFieldType:
23
+ ValueType = typing.NewType("ValueType", builtins.int)
24
+ V: typing_extensions.TypeAlias = ValueType
25
+
26
+ class _FilterFieldTypeEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[_FilterFieldType.ValueType], builtins.type):
27
+ DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor
28
+ FILTER_FIELD_TYPE_UNSPECIFIED: _FilterFieldType.ValueType # 0
29
+ FILTER_FIELD_TYPE_STRING: _FilterFieldType.ValueType # 1
30
+ FILTER_FIELD_TYPE_TIMESTAMP: _FilterFieldType.ValueType # 2
31
+ FILTER_FIELD_TYPE_INT: _FilterFieldType.ValueType # 3
32
+ FILTER_FIELD_TYPE_BOOL: _FilterFieldType.ValueType # 4
33
+ FILTER_FIELD_TYPE_DURATION: _FilterFieldType.ValueType # 5
34
+ FILTER_FIELD_TYPE_DOUBLE: _FilterFieldType.ValueType # 6
35
+ FILTER_FIELD_TYPE_ENUM: _FilterFieldType.ValueType # 7
36
+ FILTER_FIELD_TYPE_UUID: _FilterFieldType.ValueType # 8
37
+
38
+ class FilterFieldType(_FilterFieldType, metaclass=_FilterFieldTypeEnumTypeWrapper):
39
+ """Describes the type of a filter field."""
40
+
41
+ FILTER_FIELD_TYPE_UNSPECIFIED: FilterFieldType.ValueType # 0
42
+ FILTER_FIELD_TYPE_STRING: FilterFieldType.ValueType # 1
43
+ FILTER_FIELD_TYPE_TIMESTAMP: FilterFieldType.ValueType # 2
44
+ FILTER_FIELD_TYPE_INT: FilterFieldType.ValueType # 3
45
+ FILTER_FIELD_TYPE_BOOL: FilterFieldType.ValueType # 4
46
+ FILTER_FIELD_TYPE_DURATION: FilterFieldType.ValueType # 5
47
+ FILTER_FIELD_TYPE_DOUBLE: FilterFieldType.ValueType # 6
48
+ FILTER_FIELD_TYPE_ENUM: FilterFieldType.ValueType # 7
49
+ FILTER_FIELD_TYPE_UUID: FilterFieldType.ValueType # 8
50
+ global___FilterFieldType = FilterFieldType
51
+
52
+ class _FilterFieldKind:
53
+ ValueType = typing.NewType("ValueType", builtins.int)
54
+ V: typing_extensions.TypeAlias = ValueType
55
+
56
+ class _FilterFieldKindEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[_FilterFieldKind.ValueType], builtins.type):
57
+ DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor
58
+ FILTER_FIELD_KIND_UNSPECIFIED: _FilterFieldKind.ValueType # 0
59
+ """Unset. Treated as FILTER_FIELD_KIND_SCALAR for backward compatibility."""
60
+ FILTER_FIELD_KIND_SCALAR: _FilterFieldKind.ValueType # 1
61
+ """A typed column: one operator plus one value editor. `type` is the value
62
+ type and the grammar resolves operators/functions from it.
63
+ """
64
+ FILTER_FIELD_KIND_MAP: _FilterFieldKind.ValueType # 2
65
+ """A dynamic key/value family (e.g. metadata). `name` is the map namespace and
66
+ `key` the chosen index. `type` is UNSPECIFIED because the value type is the
67
+ chosen key's type, resolved per key via the grammar.
68
+ """
69
+ FILTER_FIELD_KIND_RELATION: _FilterFieldKind.ValueType # 3
70
+ """A has-many collection filtered by a CEL comprehension
71
+ (e.g. measurements.exists(m, m.name == "humidity" && m.numeric_value > 50)).
72
+ See the recursive `fields` and `quantifiers` below.
73
+ """
74
+ FILTER_FIELD_KIND_DIRECTIVE: _FilterFieldKind.ValueType # 4
75
+ """A pseudo-field (e.g. include_archived) that resolves to query shape rather
76
+ than a column.
77
+ """
78
+
79
+ class FilterFieldKind(_FilterFieldKind, metaclass=_FilterFieldKindEnumTypeWrapper):
80
+ """Describes the structural shape of a filter field: how a client builds a
81
+ predicate for it. This is orthogonal to FilterFieldType (the value's data
82
+ type) and to the entity/name/key identity (which field it is).
83
+ """
84
+
85
+ FILTER_FIELD_KIND_UNSPECIFIED: FilterFieldKind.ValueType # 0
86
+ """Unset. Treated as FILTER_FIELD_KIND_SCALAR for backward compatibility."""
87
+ FILTER_FIELD_KIND_SCALAR: FilterFieldKind.ValueType # 1
88
+ """A typed column: one operator plus one value editor. `type` is the value
89
+ type and the grammar resolves operators/functions from it.
90
+ """
91
+ FILTER_FIELD_KIND_MAP: FilterFieldKind.ValueType # 2
92
+ """A dynamic key/value family (e.g. metadata). `name` is the map namespace and
93
+ `key` the chosen index. `type` is UNSPECIFIED because the value type is the
94
+ chosen key's type, resolved per key via the grammar.
95
+ """
96
+ FILTER_FIELD_KIND_RELATION: FilterFieldKind.ValueType # 3
97
+ """A has-many collection filtered by a CEL comprehension
98
+ (e.g. measurements.exists(m, m.name == "humidity" && m.numeric_value > 50)).
99
+ See the recursive `fields` and `quantifiers` below.
100
+ """
101
+ FILTER_FIELD_KIND_DIRECTIVE: FilterFieldKind.ValueType # 4
102
+ """A pseudo-field (e.g. include_archived) that resolves to query shape rather
103
+ than a column.
104
+ """
105
+ global___FilterFieldKind = FilterFieldKind
106
+
107
+ @typing.final
108
+ class FilterField(google.protobuf.message.Message):
109
+ """Describes a single field available for CEL filtering on a resource."""
110
+
111
+ DESCRIPTOR: google.protobuf.descriptor.Descriptor
112
+
113
+ FIELD_NAME_FIELD_NUMBER: builtins.int
114
+ TYPE_FIELD_NUMBER: builtins.int
115
+ ENUM_VALUES_FIELD_NUMBER: builtins.int
116
+ DESCRIPTION_FIELD_NUMBER: builtins.int
117
+ DISPLAY_NAME_FIELD_NUMBER: builtins.int
118
+ OPERATORS_FIELD_NUMBER: builtins.int
119
+ FUNCTIONS_FIELD_NUMBER: builtins.int
120
+ NULLABLE_FIELD_NUMBER: builtins.int
121
+ ENTITY_FIELD_NUMBER: builtins.int
122
+ NAME_FIELD_NUMBER: builtins.int
123
+ KEY_FIELD_NUMBER: builtins.int
124
+ FIELD_KIND_FIELD_NUMBER: builtins.int
125
+ FIELDS_FIELD_NUMBER: builtins.int
126
+ QUANTIFIERS_FIELD_NUMBER: builtins.int
127
+ field_name: builtins.str
128
+ """The field name to use in CEL filter expressions (e.g., "run_id", "created_date")."""
129
+ type: global___FilterFieldType.ValueType
130
+ """The data type of the field. UUID and ENUM are first-class types, so no
131
+ separate boolean flags are needed.
132
+ """
133
+ description: builtins.str
134
+ """Human-readable description of the field (e.g., "When the run was created")."""
135
+ display_name: builtins.str
136
+ """Human-friendly display name (e.g., "Asset Name" for field_name "asset_name")."""
137
+ nullable: builtins.bool
138
+ """Whether the field can compare against null. For a metadata key this is true:
139
+ a key that is not set on an entity reads as null, so `field == null` matches
140
+ entities missing the key and `field != null` matches those that have it.
141
+ (There is no separate "set but null" state, since an assigned metadata value
142
+ always holds a concrete value.) Optional so that an unset value means
143
+ "unknown" rather than implicitly "not nullable".
144
+ """
145
+ entity: builtins.str
146
+ """The owning scope of the field (e.g. "report", "test_step"). Together with
147
+ `name` and `key` this is the structured identity of the field; `field_name`
148
+ is its deterministic CEL serialization, so the client never assembles or
149
+ parses it. Optional; empty when the field carries no structured identity.
150
+ """
151
+ name: builtins.str
152
+ """The fixed field on the entity: a column, a map namespace (e.g. "metadata"),
153
+ or a relation (e.g. "measurements"). Optional.
154
+
155
+ When the field corresponds to a field on the resource's own message, `name`
156
+ matches that field's name (e.g. `run_id` or `is_archived` on a run), so it
157
+ maps directly to the resource schema you already know. Fields that are
158
+ derived or computed and have no direct counterpart on the message
159
+ (e.g. `duration_string`) carry a descriptive name instead.
160
+ """
161
+ key: builtins.str
162
+ """The dynamic map index when `name` is a map (e.g. the metadata key). Empty
163
+ when `name` is not a map. Optional.
164
+ """
165
+ field_kind: global___FilterFieldKind.ValueType
166
+ """The structural shape of the field. Unset is treated as SCALAR."""
167
+ @property
168
+ def enum_values(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.str]:
169
+ """If type is FILTER_FIELD_TYPE_ENUM, these are the valid string values."""
170
+
171
+ @property
172
+ def operators(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.str]:
173
+ """CEL infix operator tokens valid for this field, e.g. "==", "in". Usually the
174
+ default set for the field's type, but narrower when the field restricts it.
175
+ Display copy for each token comes from FilterGrammarService.
176
+ """
177
+
178
+ @property
179
+ def functions(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.str]:
180
+ """CEL member function names valid for this field, e.g. "contains", "getFullYear".
181
+ Display copy for each name comes from FilterGrammarService.
182
+ """
183
+
184
+ @property
185
+ def fields(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___FilterField]:
186
+ """For a RELATION field, the relation's filterable columns, each a full
187
+ FilterField (e.g. "name", "numeric_value", "passed" for measurements).
188
+ Empty for non-relation kinds.
189
+ """
190
+
191
+ @property
192
+ def quantifiers(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.str]:
193
+ """For a RELATION field, the comprehension macros that apply
194
+ (e.g. "exists", "all", "exists_one"). The client picks one, then composes
195
+ inner predicates over `fields`. Empty for non-relation kinds.
196
+ """
197
+
198
+ def __init__(
199
+ self,
200
+ *,
201
+ field_name: builtins.str = ...,
202
+ type: global___FilterFieldType.ValueType = ...,
203
+ enum_values: collections.abc.Iterable[builtins.str] | None = ...,
204
+ description: builtins.str = ...,
205
+ display_name: builtins.str = ...,
206
+ operators: collections.abc.Iterable[builtins.str] | None = ...,
207
+ functions: collections.abc.Iterable[builtins.str] | None = ...,
208
+ nullable: builtins.bool | None = ...,
209
+ entity: builtins.str = ...,
210
+ name: builtins.str = ...,
211
+ key: builtins.str = ...,
212
+ field_kind: global___FilterFieldKind.ValueType = ...,
213
+ fields: collections.abc.Iterable[global___FilterField] | None = ...,
214
+ quantifiers: collections.abc.Iterable[builtins.str] | None = ...,
215
+ ) -> None: ...
216
+ def HasField(self, field_name: typing.Literal["_nullable", b"_nullable", "nullable", b"nullable"]) -> builtins.bool: ...
217
+ def ClearField(self, field_name: typing.Literal["_nullable", b"_nullable", "description", b"description", "display_name", b"display_name", "entity", b"entity", "enum_values", b"enum_values", "field_kind", b"field_kind", "field_name", b"field_name", "fields", b"fields", "functions", b"functions", "key", b"key", "name", b"name", "nullable", b"nullable", "operators", b"operators", "quantifiers", b"quantifiers", "type", b"type"]) -> None: ...
218
+ def WhichOneof(self, oneof_group: typing.Literal["_nullable", b"_nullable"]) -> typing.Literal["nullable"] | None: ...
219
+
220
+ global___FilterField = FilterField