sift-stack-py 0.16.2__tar.gz → 0.17.0__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.
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/PKG-INFO +22 -22
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift_client/_internal/grpc_transport/_retry.py +29 -3
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift_client/_internal/grpc_transport/transport.py +8 -1
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift_client/_internal/low_level_wrappers/__init__.py +2 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift_client/_internal/low_level_wrappers/channels.py +55 -4
- sift_stack_py-0.17.0/lib/sift_client/_internal/low_level_wrappers/units.py +120 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift_client/_internal/sync_wrapper.py +16 -1
- sift_stack_py-0.17.0/lib/sift_client/_internal/util/hdf5.py +271 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift_client/client.py +5 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift_client/resources/channels.py +29 -1
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift_client/resources/data_imports.py +87 -14
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift_client/resources/sync_stubs/__init__.pyi +43 -11
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift_client/sift_types/__init__.py +2 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift_client/sift_types/_base.py +4 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift_client/sift_types/channel.py +86 -5
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift_client/sift_types/data_import.py +54 -16
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift_client/transport/grpc_transport.py +57 -6
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift_client/transport/rest_transport.py +15 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift_stack_py.egg-info/PKG-INFO +22 -22
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift_stack_py.egg-info/SOURCES.txt +1 -46
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift_stack_py.egg-info/requires.txt +33 -19
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/pyproject.toml +51 -31
- sift_stack_py-0.16.2/lib/sift_client/_internal/util/hdf5.py +0 -96
- sift_stack_py-0.16.2/lib/sift_client/_tests/__init__.py +0 -6
- sift_stack_py-0.16.2/lib/sift_client/_tests/_internal/low_level_wrappers/test_base.py +0 -165
- sift_stack_py-0.16.2/lib/sift_client/_tests/_internal/low_level_wrappers/test_ingestion.py +0 -56
- sift_stack_py-0.16.2/lib/sift_client/_tests/_internal/low_level_wrappers/test_upload.py +0 -62
- sift_stack_py-0.16.2/lib/sift_client/_tests/_internal/test_channels.py +0 -77
- sift_stack_py-0.16.2/lib/sift_client/_tests/_internal/test_gen_pyi.py +0 -74
- sift_stack_py-0.16.2/lib/sift_client/_tests/_internal/test_hdf5.py +0 -132
- sift_stack_py-0.16.2/lib/sift_client/_tests/_internal/test_stub_module/__init__.py +0 -6
- sift_stack_py-0.16.2/lib/sift_client/_tests/_internal/test_stub_module/test_py.py +0 -49
- sift_stack_py-0.16.2/lib/sift_client/_tests/_internal/test_sync_wrapper.py +0 -233
- sift_stack_py-0.16.2/lib/sift_client/_tests/_internal/test_tdms.py +0 -380
- sift_stack_py-0.16.2/lib/sift_client/_tests/_internal/test_transport.py +0 -66
- sift_stack_py-0.16.2/lib/sift_client/_tests/conftest.py +0 -87
- sift_stack_py-0.16.2/lib/sift_client/_tests/resources/test_assets.py +0 -198
- sift_stack_py-0.16.2/lib/sift_client/_tests/resources/test_calculated_channels.py +0 -557
- sift_stack_py-0.16.2/lib/sift_client/_tests/resources/test_channels.py +0 -414
- sift_stack_py-0.16.2/lib/sift_client/_tests/resources/test_data_imports.py +0 -516
- sift_stack_py-0.16.2/lib/sift_client/_tests/resources/test_exports.py +0 -340
- sift_stack_py-0.16.2/lib/sift_client/_tests/resources/test_file_attachments.py +0 -582
- sift_stack_py-0.16.2/lib/sift_client/_tests/resources/test_jobs.py +0 -625
- sift_stack_py-0.16.2/lib/sift_client/_tests/resources/test_ping.py +0 -62
- sift_stack_py-0.16.2/lib/sift_client/_tests/resources/test_reports.py +0 -414
- sift_stack_py-0.16.2/lib/sift_client/_tests/resources/test_rules.py +0 -873
- sift_stack_py-0.16.2/lib/sift_client/_tests/resources/test_runs.py +0 -571
- sift_stack_py-0.16.2/lib/sift_client/_tests/resources/test_tags.py +0 -141
- sift_stack_py-0.16.2/lib/sift_client/_tests/resources/test_test_results.py +0 -1130
- sift_stack_py-0.16.2/lib/sift_client/_tests/sift_types/test_asset.py +0 -186
- sift_stack_py-0.16.2/lib/sift_client/_tests/sift_types/test_base.py +0 -591
- sift_stack_py-0.16.2/lib/sift_client/_tests/sift_types/test_calculated_channel.py +0 -355
- sift_stack_py-0.16.2/lib/sift_client/_tests/sift_types/test_channel.py +0 -217
- sift_stack_py-0.16.2/lib/sift_client/_tests/sift_types/test_ingestion.py +0 -153
- sift_stack_py-0.16.2/lib/sift_client/_tests/sift_types/test_job.py +0 -281
- sift_stack_py-0.16.2/lib/sift_client/_tests/sift_types/test_report.py +0 -192
- sift_stack_py-0.16.2/lib/sift_client/_tests/sift_types/test_results.py +0 -497
- sift_stack_py-0.16.2/lib/sift_client/_tests/sift_types/test_rule.py +0 -222
- sift_stack_py-0.16.2/lib/sift_client/_tests/sift_types/test_run.py +0 -241
- sift_stack_py-0.16.2/lib/sift_client/_tests/sift_types/test_tag.py +0 -75
- sift_stack_py-0.16.2/lib/sift_client/_tests/test_client.py +0 -0
- sift_stack_py-0.16.2/lib/sift_client/_tests/util/conftest.py +0 -14
- sift_stack_py-0.16.2/lib/sift_client/_tests/util/test_cel_utils.py +0 -179
- sift_stack_py-0.16.2/lib/sift_client/_tests/util/test_test_results_utils.py +0 -703
- sift_stack_py-0.16.2/lib/sift_py/grpc/_interceptors/__init__.py +0 -0
- sift_stack_py-0.16.2/lib/sift_py/ingestion/config/yaml/__init__.py +0 -0
- sift_stack_py-0.16.2/lib/sift_py/report_templates/__init__.py +0 -0
- sift_stack_py-0.16.2/lib/sift_py/rule/__init__.py +0 -0
- sift_stack_py-0.16.2/lib/sift_py/yaml/__init__.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/LICENSE +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/README.md +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift/__init__.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift/annotation_logs/__init__.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift/annotation_logs/v1/__init__.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift/annotation_logs/v1/annotation_logs_pb2.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift/annotation_logs/v1/annotation_logs_pb2.pyi +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift/annotation_logs/v1/annotation_logs_pb2_grpc.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift/annotation_logs/v1/annotation_logs_pb2_grpc.pyi +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift/annotations/__init__.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift/annotations/v1/__init__.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift/annotations/v1/annotations_pb2.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift/annotations/v1/annotations_pb2.pyi +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift/annotations/v1/annotations_pb2_grpc.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift/annotations/v1/annotations_pb2_grpc.pyi +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift/api_keys/__init__.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift/api_keys/v2/__init__.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift/api_keys/v2/api_keys_pb2.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift/api_keys/v2/api_keys_pb2.pyi +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift/api_keys/v2/api_keys_pb2_grpc.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift/api_keys/v2/api_keys_pb2_grpc.pyi +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift/assets/__init__.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift/assets/v1/__init__.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift/assets/v1/assets_pb2.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift/assets/v1/assets_pb2.pyi +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift/assets/v1/assets_pb2_grpc.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift/assets/v1/assets_pb2_grpc.pyi +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift/calculated_channels/__init__.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift/calculated_channels/v1/__init__.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift/calculated_channels/v1/calculated_channels_pb2.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift/calculated_channels/v1/calculated_channels_pb2.pyi +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift/calculated_channels/v1/calculated_channels_pb2_grpc.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift/calculated_channels/v1/calculated_channels_pb2_grpc.pyi +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift/calculated_channels/v2/__init__.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift/calculated_channels/v2/calculated_channels_pb2.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift/calculated_channels/v2/calculated_channels_pb2.pyi +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift/calculated_channels/v2/calculated_channels_pb2_grpc.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift/calculated_channels/v2/calculated_channels_pb2_grpc.pyi +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift/campaigns/__init__.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift/campaigns/v1/__init__.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift/campaigns/v1/campaigns_pb2.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift/campaigns/v1/campaigns_pb2.pyi +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift/campaigns/v1/campaigns_pb2_grpc.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift/campaigns/v1/campaigns_pb2_grpc.pyi +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift/channel_schemas/__init__.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift/channel_schemas/v1/__init__.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift/channel_schemas/v1/channel_schemas_pb2.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift/channel_schemas/v1/channel_schemas_pb2.pyi +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift/channel_schemas/v1/channel_schemas_pb2_grpc.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift/channel_schemas/v1/channel_schemas_pb2_grpc.pyi +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift/channel_schemas/v2/__init__.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift/channel_schemas/v2/channel_schemas_pb2.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift/channel_schemas/v2/channel_schemas_pb2.pyi +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift/channel_schemas/v2/channel_schemas_pb2_grpc.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift/channel_schemas/v2/channel_schemas_pb2_grpc.pyi +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift/channels/__init__.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift/channels/v2/__init__.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift/channels/v2/channels_pb2.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift/channels/v2/channels_pb2.pyi +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift/channels/v2/channels_pb2_grpc.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift/channels/v2/channels_pb2_grpc.pyi +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift/channels/v3/__init__.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift/channels/v3/channels_pb2.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift/channels/v3/channels_pb2.pyi +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift/channels/v3/channels_pb2_grpc.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift/channels/v3/channels_pb2_grpc.pyi +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift/comment/__init__.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift/comment/v1/__init__.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift/comment/v1/comment_pb2.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift/comment/v1/comment_pb2.pyi +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift/comment/v1/comment_pb2_grpc.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift/comment/v1/comment_pb2_grpc.pyi +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift/common/__init__.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift/common/type/__init__.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift/common/type/v1/__init__.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift/common/type/v1/calculated_channels_pb2.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift/common/type/v1/calculated_channels_pb2.pyi +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift/common/type/v1/calculated_channels_pb2_grpc.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift/common/type/v1/calculated_channels_pb2_grpc.pyi +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift/common/type/v1/channel_bit_field_element_pb2.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift/common/type/v1/channel_bit_field_element_pb2.pyi +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift/common/type/v1/channel_bit_field_element_pb2_grpc.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift/common/type/v1/channel_bit_field_element_pb2_grpc.pyi +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift/common/type/v1/channel_config_pb2.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift/common/type/v1/channel_config_pb2.pyi +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift/common/type/v1/channel_config_pb2_grpc.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift/common/type/v1/channel_config_pb2_grpc.pyi +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift/common/type/v1/channel_data_type_pb2.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift/common/type/v1/channel_data_type_pb2.pyi +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift/common/type/v1/channel_data_type_pb2_grpc.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift/common/type/v1/channel_data_type_pb2_grpc.pyi +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift/common/type/v1/channel_enum_type_pb2.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift/common/type/v1/channel_enum_type_pb2.pyi +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift/common/type/v1/channel_enum_type_pb2_grpc.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift/common/type/v1/channel_enum_type_pb2_grpc.pyi +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift/common/type/v1/organization_pb2.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift/common/type/v1/organization_pb2.pyi +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift/common/type/v1/organization_pb2_grpc.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift/common/type/v1/organization_pb2_grpc.pyi +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift/common/type/v1/resource_identifier_pb2.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift/common/type/v1/resource_identifier_pb2.pyi +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift/common/type/v1/resource_identifier_pb2_grpc.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift/common/type/v1/resource_identifier_pb2_grpc.pyi +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift/common/type/v1/resource_ref_pb2.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift/common/type/v1/resource_ref_pb2.pyi +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift/common/type/v1/resource_ref_pb2_grpc.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift/common/type/v1/resource_ref_pb2_grpc.pyi +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift/common/type/v1/user_defined_functions_pb2.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift/common/type/v1/user_defined_functions_pb2.pyi +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift/common/type/v1/user_defined_functions_pb2_grpc.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift/common/type/v1/user_defined_functions_pb2_grpc.pyi +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift/common/type/v1/user_pb2.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift/common/type/v1/user_pb2.pyi +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift/common/type/v1/user_pb2_grpc.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift/common/type/v1/user_pb2_grpc.pyi +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift/common/v1/__init__.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift/common/v1/action_type_pb2.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift/common/v1/action_type_pb2.pyi +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift/common/v1/action_type_pb2_grpc.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift/common/v1/action_type_pb2_grpc.pyi +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift/common/v1/filter_field_pb2.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift/common/v1/filter_field_pb2.pyi +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift/common/v1/filter_field_pb2_grpc.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift/common/v1/filter_field_pb2_grpc.pyi +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift/common/v1/resource_type_pb2.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift/common/v1/resource_type_pb2.pyi +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift/common/v1/resource_type_pb2_grpc.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift/common/v1/resource_type_pb2_grpc.pyi +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift/data/__init__.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift/data/v1/__init__.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift/data/v1/data_pb2.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift/data/v1/data_pb2.pyi +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift/data/v1/data_pb2_grpc.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift/data/v1/data_pb2_grpc.pyi +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift/data/v2/__init__.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift/data/v2/data_pb2.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift/data/v2/data_pb2.pyi +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift/data/v2/data_pb2_grpc.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift/data/v2/data_pb2_grpc.pyi +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift/data_imports/__init__.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift/data_imports/v2/__init__.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift/data_imports/v2/data_imports_pb2.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift/data_imports/v2/data_imports_pb2.pyi +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift/data_imports/v2/data_imports_pb2_grpc.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift/data_imports/v2/data_imports_pb2_grpc.pyi +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift/dlq_errors/__init__.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift/dlq_errors/v2/__init__.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift/dlq_errors/v2/dlq_errors_pb2.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift/dlq_errors/v2/dlq_errors_pb2.pyi +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift/dlq_errors/v2/dlq_errors_pb2_grpc.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift/dlq_errors/v2/dlq_errors_pb2_grpc.pyi +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift/exports/__init__.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift/exports/v1/__init__.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift/exports/v1/exports_pb2.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift/exports/v1/exports_pb2.pyi +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift/exports/v1/exports_pb2_grpc.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift/exports/v1/exports_pb2_grpc.pyi +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift/external_sync/__init__.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift/external_sync/v1/__init__.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift/external_sync/v1/external_sync_pb2.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift/external_sync/v1/external_sync_pb2.pyi +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift/external_sync/v1/external_sync_pb2_grpc.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift/external_sync/v1/external_sync_pb2_grpc.pyi +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift/ingest/__init__.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift/ingest/v1/__init__.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift/ingest/v1/ingest_pb2.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift/ingest/v1/ingest_pb2.pyi +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift/ingest/v1/ingest_pb2_grpc.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift/ingest/v1/ingest_pb2_grpc.pyi +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift/ingestion_configs/__init__.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift/ingestion_configs/v1/__init__.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift/ingestion_configs/v1/ingestion_configs_pb2.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift/ingestion_configs/v1/ingestion_configs_pb2.pyi +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift/ingestion_configs/v1/ingestion_configs_pb2_grpc.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift/ingestion_configs/v1/ingestion_configs_pb2_grpc.pyi +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift/ingestion_configs/v2/__init__.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift/ingestion_configs/v2/ingestion_configs_pb2.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift/ingestion_configs/v2/ingestion_configs_pb2.pyi +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift/ingestion_configs/v2/ingestion_configs_pb2_grpc.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift/ingestion_configs/v2/ingestion_configs_pb2_grpc.pyi +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift/jobs/__init__.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift/jobs/v1/__init__.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift/jobs/v1/jobs_pb2.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift/jobs/v1/jobs_pb2.pyi +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift/jobs/v1/jobs_pb2_grpc.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift/jobs/v1/jobs_pb2_grpc.pyi +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift/me/__init__.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift/me/v2/__init__.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift/me/v2/me_pb2.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift/me/v2/me_pb2.pyi +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift/me/v2/me_pb2_grpc.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift/me/v2/me_pb2_grpc.pyi +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift/metadata/__init__.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift/metadata/v1/__init__.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift/metadata/v1/metadata_pb2.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift/metadata/v1/metadata_pb2.pyi +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift/metadata/v1/metadata_pb2_grpc.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift/metadata/v1/metadata_pb2_grpc.pyi +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift/notifications/__init__.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift/notifications/v1/__init__.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift/notifications/v1/notifications_pb2.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift/notifications/v1/notifications_pb2.pyi +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift/notifications/v1/notifications_pb2_grpc.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift/notifications/v1/notifications_pb2_grpc.pyi +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift/panel_configurations/__init__.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift/panel_configurations/v1/__init__.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift/panel_configurations/v1/panel_configuration_pb2.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift/panel_configurations/v1/panel_configuration_pb2.pyi +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift/panel_configurations/v1/panel_configuration_pb2_grpc.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift/panel_configurations/v1/panel_configuration_pb2_grpc.pyi +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift/ping/__init__.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift/ping/v1/__init__.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift/ping/v1/ping_pb2.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift/ping/v1/ping_pb2.pyi +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift/ping/v1/ping_pb2_grpc.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift/ping/v1/ping_pb2_grpc.pyi +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift/protobuf_descriptors/__init__.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift/protobuf_descriptors/v2/__init__.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift/protobuf_descriptors/v2/channel_parsing_options_pb2.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift/protobuf_descriptors/v2/channel_parsing_options_pb2.pyi +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift/protobuf_descriptors/v2/channel_parsing_options_pb2_grpc.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift/protobuf_descriptors/v2/channel_parsing_options_pb2_grpc.pyi +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift/protobuf_descriptors/v2/protobuf_descriptors_pb2.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift/protobuf_descriptors/v2/protobuf_descriptors_pb2.pyi +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift/protobuf_descriptors/v2/protobuf_descriptors_pb2_grpc.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift/protobuf_descriptors/v2/protobuf_descriptors_pb2_grpc.pyi +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift/py.typed +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift/remote_files/__init__.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift/remote_files/v1/__init__.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift/remote_files/v1/remote_files_pb2.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift/remote_files/v1/remote_files_pb2.pyi +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift/remote_files/v1/remote_files_pb2_grpc.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift/remote_files/v1/remote_files_pb2_grpc.pyi +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift/report_templates/__init__.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift/report_templates/v1/__init__.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift/report_templates/v1/report_templates_pb2.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift/report_templates/v1/report_templates_pb2.pyi +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift/report_templates/v1/report_templates_pb2_grpc.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift/report_templates/v1/report_templates_pb2_grpc.pyi +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift/reports/__init__.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift/reports/v1/__init__.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift/reports/v1/reports_pb2.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift/reports/v1/reports_pb2.pyi +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift/reports/v1/reports_pb2_grpc.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift/reports/v1/reports_pb2_grpc.pyi +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift/roles/__init__.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift/roles/v2/__init__.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift/roles/v2/roles_pb2.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift/roles/v2/roles_pb2.pyi +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift/roles/v2/roles_pb2_grpc.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift/roles/v2/roles_pb2_grpc.pyi +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift/rule_evaluation/__init__.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift/rule_evaluation/v1/__init__.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift/rule_evaluation/v1/rule_evaluation_pb2.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift/rule_evaluation/v1/rule_evaluation_pb2.pyi +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift/rule_evaluation/v1/rule_evaluation_pb2_grpc.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift/rule_evaluation/v1/rule_evaluation_pb2_grpc.pyi +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift/rules/__init__.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift/rules/v1/__init__.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift/rules/v1/rules_pb2.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift/rules/v1/rules_pb2.pyi +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift/rules/v1/rules_pb2_grpc.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift/rules/v1/rules_pb2_grpc.pyi +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift/runs/__init__.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift/runs/v2/__init__.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift/runs/v2/runs_pb2.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift/runs/v2/runs_pb2.pyi +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift/runs/v2/runs_pb2_grpc.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift/runs/v2/runs_pb2_grpc.pyi +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift/saved_searches/__init__.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift/saved_searches/v1/__init__.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift/saved_searches/v1/saved_searches_pb2.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift/saved_searches/v1/saved_searches_pb2.pyi +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift/saved_searches/v1/saved_searches_pb2_grpc.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift/saved_searches/v1/saved_searches_pb2_grpc.pyi +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift/tags/__init__.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift/tags/v1/__init__.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift/tags/v1/tags_pb2.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift/tags/v1/tags_pb2.pyi +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift/tags/v1/tags_pb2_grpc.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift/tags/v1/tags_pb2_grpc.pyi +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift/tags/v2/__init__.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift/tags/v2/tags_pb2.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift/tags/v2/tags_pb2.pyi +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift/tags/v2/tags_pb2_grpc.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift/tags/v2/tags_pb2_grpc.pyi +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift/test_reports/__init__.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift/test_reports/v1/__init__.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift/test_reports/v1/test_reports_pb2.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift/test_reports/v1/test_reports_pb2.pyi +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift/test_reports/v1/test_reports_pb2_grpc.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift/test_reports/v1/test_reports_pb2_grpc.pyi +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift/unit/__init__.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift/unit/v2/__init__.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift/unit/v2/unit_pb2.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift/unit/v2/unit_pb2.pyi +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift/unit/v2/unit_pb2_grpc.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift/unit/v2/unit_pb2_grpc.pyi +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift/user_defined_functions/__init__.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift/user_defined_functions/v1/__init__.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift/user_defined_functions/v1/user_defined_functions_pb2.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift/user_defined_functions/v1/user_defined_functions_pb2.pyi +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift/user_defined_functions/v1/user_defined_functions_pb2_grpc.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift/user_defined_functions/v1/user_defined_functions_pb2_grpc.pyi +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift/user_groups/__init__.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift/user_groups/v2/__init__.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift/user_groups/v2/user_groups_pb2.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift/user_groups/v2/user_groups_pb2.pyi +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift/user_groups/v2/user_groups_pb2_grpc.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift/user_groups/v2/user_groups_pb2_grpc.pyi +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift/users/__init__.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift/users/v2/__init__.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift/users/v2/users_pb2.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift/users/v2/users_pb2.pyi +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift/users/v2/users_pb2_grpc.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift/users/v2/users_pb2_grpc.pyi +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift/views/__init__.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift/views/v1/__init__.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift/views/v1/views_pb2.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift/views/v1/views_pb2.pyi +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift/views/v1/views_pb2_grpc.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift/views/v1/views_pb2_grpc.pyi +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift/views/v2/__init__.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift/views/v2/views_pb2.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift/views/v2/views_pb2.pyi +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift/views/v2/views_pb2_grpc.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift/views/v2/views_pb2_grpc.pyi +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift/webhooks/__init__.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift/webhooks/v1/__init__.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift/webhooks/v1/webhooks_pb2.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift/webhooks/v1/webhooks_pb2.pyi +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift/webhooks/v1/webhooks_pb2_grpc.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift/webhooks/v1/webhooks_pb2_grpc.pyi +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift_client/__init__.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift_client/_internal/__init__.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift_client/_internal/gen_pyi.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift_client/_internal/grpc_transport/__init__.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift_client/_internal/grpc_transport/_async_interceptors/__init__.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift_client/_internal/grpc_transport/_async_interceptors/base.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift_client/_internal/grpc_transport/_async_interceptors/metadata.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift_client/_internal/grpc_transport/_interceptors/__init__.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift_client/_internal/grpc_transport/_interceptors/base.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift_client/_internal/grpc_transport/_interceptors/context.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift_client/_internal/grpc_transport/_interceptors/metadata.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift_client/_internal/grpc_transport/keepalive.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift_client/_internal/grpc_transport/server_interceptors/__init__.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift_client/_internal/grpc_transport/server_interceptors/server_interceptor.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift_client/_internal/grpc_transport/transport_test.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift_client/_internal/low_level_wrappers/_test_results_log.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift_client/_internal/low_level_wrappers/assets.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift_client/_internal/low_level_wrappers/base.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift_client/_internal/low_level_wrappers/calculated_channels.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift_client/_internal/low_level_wrappers/data.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift_client/_internal/low_level_wrappers/data_imports.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift_client/_internal/low_level_wrappers/exports.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift_client/_internal/low_level_wrappers/ingestion.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift_client/_internal/low_level_wrappers/jobs.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift_client/_internal/low_level_wrappers/ping.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift_client/_internal/low_level_wrappers/remote_files.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift_client/_internal/low_level_wrappers/reports.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift_client/_internal/low_level_wrappers/rules.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift_client/_internal/low_level_wrappers/runs.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift_client/_internal/low_level_wrappers/tags.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift_client/_internal/low_level_wrappers/test_results.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift_client/_internal/low_level_wrappers/upload.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift_client/_internal/rest.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift_client/_internal/time.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift_client/_internal/util/__init__.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift_client/_internal/util/channels.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift_client/_internal/util/executor.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift_client/_internal/util/file.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift_client/_internal/util/numpy_types.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift_client/_internal/util/tdms.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift_client/_internal/util/timestamp.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift_client/_internal/util/util.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift_client/config.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift_client/errors.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift_client/py.typed +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift_client/resources/__init__.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift_client/resources/_base.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift_client/resources/assets.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift_client/resources/calculated_channels.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift_client/resources/exports.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift_client/resources/file_attachments.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift_client/resources/ingestion.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift_client/resources/jobs.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift_client/resources/ping.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift_client/resources/py.typed +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift_client/resources/reports.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift_client/resources/rules.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift_client/resources/runs.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift_client/resources/sync_stubs/__init__.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift_client/resources/sync_stubs/py.typed +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift_client/resources/tags.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift_client/resources/test_results.py +0 -0
- {sift_stack_py-0.16.2/lib/sift_client/_tests/_internal → sift_stack_py-0.17.0/lib/sift_client/scripts}/__init__.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift_client/scripts/import_test_result_log.py +0 -0
- {sift_stack_py-0.16.2/lib/sift_client/_tests/_internal/low_level_wrappers → sift_stack_py-0.17.0/lib/sift_client/sift_types/_mixins}/__init__.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift_client/sift_types/_mixins/file_attachments.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift_client/sift_types/asset.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift_client/sift_types/calculated_channel.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift_client/sift_types/export.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift_client/sift_types/file_attachment.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift_client/sift_types/ingestion.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift_client/sift_types/job.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift_client/sift_types/report.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift_client/sift_types/rule.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift_client/sift_types/run.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift_client/sift_types/tag.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift_client/sift_types/test_report.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift_client/transport/__init__.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift_client/transport/base_connection.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift_client/util/__init__.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift_client/util/cel_utils.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift_client/util/metadata.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift_client/util/test_results/__init__.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift_client/util/test_results/bounds.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift_client/util/test_results/context_manager.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift_client/util/test_results/pytest_util.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift_client/util/util.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift_py/__init__.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift_py/_internal/__init__.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift_py/_internal/cel.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift_py/_internal/channel.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift_py/_internal/convert/__init__.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift_py/_internal/convert/json.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift_py/_internal/convert/protobuf.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift_py/_internal/convert/timestamp.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift_py/_internal/metadata.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift_py/_internal/metadata_test.py +0 -0
- {sift_stack_py-0.16.2/lib/sift_client/_tests/resources → sift_stack_py-0.17.0/lib/sift_py/_internal/test_util}/__init__.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift_py/_internal/test_util/channel.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift_py/_internal/test_util/fn.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift_py/_internal/test_util/server_interceptor.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift_py/_internal/time.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift_py/_internal/user.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift_py/_rest_test.py +0 -0
- {sift_stack_py-0.16.2/lib/sift_client/_tests/sift_types → sift_stack_py-0.17.0/lib/sift_py/asset}/__init__.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift_py/asset/_config_test.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift_py/asset/_internal/shared.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift_py/asset/_service_test.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift_py/asset/config.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift_py/asset/service.py +0 -0
- {sift_stack_py-0.16.2/lib/sift_client/_tests/util → sift_stack_py-0.17.0/lib/sift_py/calculated_channels}/__init__.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift_py/calculated_channels/_service_test.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift_py/calculated_channels/config.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift_py/calculated_channels/service.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift_py/data/__init__.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift_py/data/_channel.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift_py/data/_deserialize.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift_py/data/_deserialize_test.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift_py/data/_service_test.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift_py/data/_validate.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift_py/data/error.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift_py/data/query.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift_py/data/service.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift_py/data_import/__init__.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift_py/data_import/_config.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift_py/data_import/_config_test.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift_py/data_import/_csv_test.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift_py/data_import/_hdf5_test.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift_py/data_import/_parquet_test.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift_py/data_import/_ros_channel.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift_py/data_import/_rosbag_test.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift_py/data_import/_status_test.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift_py/data_import/_tdms_test.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift_py/data_import/_utils.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift_py/data_import/_utils_test.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift_py/data_import/ch10.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift_py/data_import/config.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift_py/data_import/csv.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift_py/data_import/hdf5.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift_py/data_import/parquet.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift_py/data_import/parquet_complex_types.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift_py/data_import/rosbags.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift_py/data_import/status.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift_py/data_import/tdms.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift_py/data_import/tempfile.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift_py/data_import/time_format.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift_py/error.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift_py/file_attachment/__init__.py +0 -0
- {sift_stack_py-0.16.2/lib/sift_client/scripts → sift_stack_py-0.17.0/lib/sift_py/file_attachment/_internal}/__init__.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift_py/file_attachment/_internal/download.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift_py/file_attachment/_internal/upload.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift_py/file_attachment/_service_test.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift_py/file_attachment/entity.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift_py/file_attachment/metadata.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift_py/file_attachment/service.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift_py/grpc/__init__.py +0 -0
- {sift_stack_py-0.16.2/lib/sift_client/sift_types/_mixins → sift_stack_py-0.17.0/lib/sift_py/grpc/_async_interceptors}/__init__.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift_py/grpc/_async_interceptors/base.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift_py/grpc/_async_interceptors/metadata.py +0 -0
- {sift_stack_py-0.16.2/lib/sift_py/_internal/test_util → sift_stack_py-0.17.0/lib/sift_py/grpc/_interceptors}/__init__.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift_py/grpc/_interceptors/base.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift_py/grpc/_interceptors/context.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift_py/grpc/_interceptors/metadata.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift_py/grpc/_retry.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift_py/grpc/keepalive.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift_py/grpc/transport.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift_py/grpc/transport_test.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift_py/ingestion/__init__.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift_py/ingestion/_internal/__init__.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift_py/ingestion/_internal/channel.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift_py/ingestion/_internal/error.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift_py/ingestion/_internal/ingest.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift_py/ingestion/_internal/ingest_test.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift_py/ingestion/_internal/ingestion_config.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift_py/ingestion/_internal/run.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift_py/ingestion/_service_test.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift_py/ingestion/buffer.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift_py/ingestion/channel.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift_py/ingestion/config/__init__.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift_py/ingestion/config/_telemetry_test.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift_py/ingestion/config/telemetry.py +0 -0
- {sift_stack_py-0.16.2/lib/sift_py/asset → sift_stack_py-0.17.0/lib/sift_py/ingestion/config/yaml}/__init__.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift_py/ingestion/config/yaml/error.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift_py/ingestion/config/yaml/load.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift_py/ingestion/config/yaml/spec.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift_py/ingestion/config/yaml/test_load.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift_py/ingestion/flow.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift_py/ingestion/manager.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift_py/ingestion/rule/__init__.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift_py/ingestion/rule/config.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift_py/ingestion/service.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift_py/py.typed +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift_py/report/_report_test.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift_py/report/service.py +0 -0
- {sift_stack_py-0.16.2/lib/sift_py/calculated_channels → sift_stack_py-0.17.0/lib/sift_py/report_templates}/__init__.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift_py/report_templates/_config_test.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift_py/report_templates/_service_test.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift_py/report_templates/config.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift_py/report_templates/service.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift_py/rest.py +0 -0
- {sift_stack_py-0.16.2/lib/sift_py/file_attachment/_internal → sift_stack_py-0.17.0/lib/sift_py/rule}/__init__.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift_py/rule/_config_test.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift_py/rule/_service_test.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift_py/rule/config.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift_py/rule/service.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift_py/rule_evaluation/_service_test.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift_py/rule_evaluation/service.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift_py/tag/_internal/shared.py +0 -0
- {sift_stack_py-0.16.2/lib/sift_py/grpc/_async_interceptors → sift_stack_py-0.17.0/lib/sift_py/yaml}/__init__.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift_py/yaml/_channel_test.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift_py/yaml/_rule_test.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift_py/yaml/_utils_test.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift_py/yaml/calculated_channels.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift_py/yaml/channel.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift_py/yaml/report_templates.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift_py/yaml/rule.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift_py/yaml/utils.py +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift_stack_py.egg-info/dependency_links.txt +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift_stack_py.egg-info/entry_points.txt +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift_stack_py.egg-info/top_level.txt +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/setup.cfg +0 -0
- {sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/setup.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: sift_stack_py
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.17.0
|
|
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.
|
|
@@ -53,7 +53,7 @@ Requires-Dist: npTDMS~=1.9; extra == "all"
|
|
|
53
53
|
Requires-Dist: polars~=1.8; extra == "all"
|
|
54
54
|
Requires-Dist: pyOpenSSL<24.0.0; extra == "all"
|
|
55
55
|
Requires-Dist: pyarrow>=17.0.0; extra == "all"
|
|
56
|
-
Requires-Dist: rosbags~=0.0; extra == "all"
|
|
56
|
+
Requires-Dist: rosbags~=0.0; python_full_version >= "3.8.2" and extra == "all"
|
|
57
57
|
Requires-Dist: sift-stream-bindings==0.3.0; extra == "all"
|
|
58
58
|
Requires-Dist: types-pyOpenSSL<24.0.0; extra == "all"
|
|
59
59
|
Provides-Extra: build
|
|
@@ -89,7 +89,7 @@ Requires-Dist: pytest-benchmark==4.0.0; extra == "dev-all"
|
|
|
89
89
|
Requires-Dist: pytest-dotenv==0.5.2; extra == "dev-all"
|
|
90
90
|
Requires-Dist: pytest-mock==3.14.0; extra == "dev-all"
|
|
91
91
|
Requires-Dist: pytest==8.2.2; extra == "dev-all"
|
|
92
|
-
Requires-Dist: rosbags~=0.0; extra == "dev-all"
|
|
92
|
+
Requires-Dist: rosbags~=0.0; python_full_version >= "3.8.2" and extra == "dev-all"
|
|
93
93
|
Requires-Dist: ruff~=0.12.10; extra == "dev-all"
|
|
94
94
|
Requires-Dist: sift-stream-bindings==0.3.0; extra == "dev-all"
|
|
95
95
|
Requires-Dist: tomlkit~=0.13.3; extra == "dev-all"
|
|
@@ -106,27 +106,27 @@ Requires-Dist: pytest==8.2.2; extra == "development"
|
|
|
106
106
|
Requires-Dist: ruff~=0.12.10; extra == "development"
|
|
107
107
|
Requires-Dist: tomlkit~=0.13.3; extra == "development"
|
|
108
108
|
Provides-Extra: docs
|
|
109
|
-
Requires-Dist: griffe-pydantic==1.3.1; extra == "docs"
|
|
110
|
-
Requires-Dist: mike==2.1.3; extra == "docs"
|
|
111
|
-
Requires-Dist: mkdocs-api-autonav==0.4.0; extra == "docs"
|
|
112
|
-
Requires-Dist: mkdocs-include-markdown-plugin==7.1.6; extra == "docs"
|
|
113
|
-
Requires-Dist: mkdocs-jupyter==0.25.1; extra == "docs"
|
|
114
|
-
Requires-Dist: mkdocs-material==9.7.5; extra == "docs"
|
|
115
|
-
Requires-Dist: mkdocs==1.6.1; extra == "docs"
|
|
116
|
-
Requires-Dist: mkdocstrings[python]==1.0.3; extra == "docs"
|
|
109
|
+
Requires-Dist: griffe-pydantic==1.3.1; python_version >= "3.10" and extra == "docs"
|
|
110
|
+
Requires-Dist: mike==2.1.3; python_version >= "3.10" and extra == "docs"
|
|
111
|
+
Requires-Dist: mkdocs-api-autonav==0.4.0; python_version >= "3.10" and extra == "docs"
|
|
112
|
+
Requires-Dist: mkdocs-include-markdown-plugin==7.1.6; python_version >= "3.10" and extra == "docs"
|
|
113
|
+
Requires-Dist: mkdocs-jupyter==0.25.1; python_version >= "3.10" and extra == "docs"
|
|
114
|
+
Requires-Dist: mkdocs-material==9.7.5; python_version >= "3.10" and extra == "docs"
|
|
115
|
+
Requires-Dist: mkdocs==1.6.1; python_version >= "3.10" and extra == "docs"
|
|
116
|
+
Requires-Dist: mkdocstrings[python]==1.0.3; python_version >= "3.10" and extra == "docs"
|
|
117
117
|
Provides-Extra: docs-build
|
|
118
118
|
Requires-Dist: build==1.2.1; extra == "docs-build"
|
|
119
119
|
Requires-Dist: cffi~=1.14; extra == "docs-build"
|
|
120
|
-
Requires-Dist: griffe-pydantic==1.3.1; extra == "docs-build"
|
|
120
|
+
Requires-Dist: griffe-pydantic==1.3.1; python_version >= "3.10" and extra == "docs-build"
|
|
121
121
|
Requires-Dist: grpcio-testing~=1.13; extra == "docs-build"
|
|
122
122
|
Requires-Dist: h5py~=3.11; extra == "docs-build"
|
|
123
|
-
Requires-Dist: mike==2.1.3; extra == "docs-build"
|
|
124
|
-
Requires-Dist: mkdocs-api-autonav==0.4.0; extra == "docs-build"
|
|
125
|
-
Requires-Dist: mkdocs-include-markdown-plugin==7.1.6; extra == "docs-build"
|
|
126
|
-
Requires-Dist: mkdocs-jupyter==0.25.1; extra == "docs-build"
|
|
127
|
-
Requires-Dist: mkdocs-material==9.7.5; extra == "docs-build"
|
|
128
|
-
Requires-Dist: mkdocs==1.6.1; extra == "docs-build"
|
|
129
|
-
Requires-Dist: mkdocstrings[python]==1.0.3; extra == "docs-build"
|
|
123
|
+
Requires-Dist: mike==2.1.3; python_version >= "3.10" and extra == "docs-build"
|
|
124
|
+
Requires-Dist: mkdocs-api-autonav==0.4.0; python_version >= "3.10" and extra == "docs-build"
|
|
125
|
+
Requires-Dist: mkdocs-include-markdown-plugin==7.1.6; python_version >= "3.10" and extra == "docs-build"
|
|
126
|
+
Requires-Dist: mkdocs-jupyter==0.25.1; python_version >= "3.10" and extra == "docs-build"
|
|
127
|
+
Requires-Dist: mkdocs-material==9.7.5; python_version >= "3.10" and extra == "docs-build"
|
|
128
|
+
Requires-Dist: mkdocs==1.6.1; python_version >= "3.10" and extra == "docs-build"
|
|
129
|
+
Requires-Dist: mkdocstrings[python]==1.0.3; python_version >= "3.10" and extra == "docs-build"
|
|
130
130
|
Requires-Dist: mypy==1.10.0; extra == "docs-build"
|
|
131
131
|
Requires-Dist: npTDMS~=1.9; extra == "docs-build"
|
|
132
132
|
Requires-Dist: pdoc==14.5.0; extra == "docs-build"
|
|
@@ -139,7 +139,7 @@ Requires-Dist: pytest-benchmark==4.0.0; extra == "docs-build"
|
|
|
139
139
|
Requires-Dist: pytest-dotenv==0.5.2; extra == "docs-build"
|
|
140
140
|
Requires-Dist: pytest-mock==3.14.0; extra == "docs-build"
|
|
141
141
|
Requires-Dist: pytest==8.2.2; extra == "docs-build"
|
|
142
|
-
Requires-Dist: rosbags~=0.0; extra == "docs-build"
|
|
142
|
+
Requires-Dist: rosbags~=0.0; python_full_version >= "3.8.2" and extra == "docs-build"
|
|
143
143
|
Requires-Dist: ruff~=0.12.10; extra == "docs-build"
|
|
144
144
|
Requires-Dist: sift-stream-bindings==0.3.0; extra == "docs-build"
|
|
145
145
|
Requires-Dist: tomlkit~=0.13.3; extra == "docs-build"
|
|
@@ -148,7 +148,7 @@ Provides-Extra: file-imports
|
|
|
148
148
|
Requires-Dist: h5py~=3.11; extra == "file-imports"
|
|
149
149
|
Requires-Dist: npTDMS~=1.9; extra == "file-imports"
|
|
150
150
|
Requires-Dist: polars~=1.8; extra == "file-imports"
|
|
151
|
-
Requires-Dist: rosbags~=0.0; extra == "file-imports"
|
|
151
|
+
Requires-Dist: rosbags~=0.0; python_full_version >= "3.8.2" and extra == "file-imports"
|
|
152
152
|
Provides-Extra: hdf5
|
|
153
153
|
Requires-Dist: h5py~=3.11; extra == "hdf5"
|
|
154
154
|
Requires-Dist: polars~=1.8; extra == "hdf5"
|
|
@@ -157,7 +157,7 @@ Requires-Dist: cffi~=1.14; extra == "openssl"
|
|
|
157
157
|
Requires-Dist: pyOpenSSL<24.0.0; extra == "openssl"
|
|
158
158
|
Requires-Dist: types-pyOpenSSL<24.0.0; extra == "openssl"
|
|
159
159
|
Provides-Extra: rosbags
|
|
160
|
-
Requires-Dist: rosbags~=0.0; extra == "rosbags"
|
|
160
|
+
Requires-Dist: rosbags~=0.0; python_full_version >= "3.8.2" and extra == "rosbags"
|
|
161
161
|
Provides-Extra: sift-stream
|
|
162
162
|
Requires-Dist: sift-stream-bindings==0.3.0; extra == "sift-stream"
|
|
163
163
|
Provides-Extra: sift-stream-bindings
|
{sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift_client/_internal/grpc_transport/_retry.py
RENAMED
|
@@ -4,7 +4,13 @@ import json
|
|
|
4
4
|
from typing import ClassVar, TypedDict
|
|
5
5
|
|
|
6
6
|
from grpc import StatusCode
|
|
7
|
-
from typing_extensions import Self
|
|
7
|
+
from typing_extensions import NotRequired, Self
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
def _format_grpc_duration(seconds: float) -> str:
|
|
11
|
+
"""Format seconds as a protobuf Duration string, e.g. ``60s`` or ``0.5s``."""
|
|
12
|
+
trimmed = f"{seconds:.9f}".rstrip("0").rstrip(".")
|
|
13
|
+
return f"{trimmed}s"
|
|
8
14
|
|
|
9
15
|
|
|
10
16
|
class RetryPolicy:
|
|
@@ -50,8 +56,24 @@ class RetryPolicy:
|
|
|
50
56
|
return json.dumps(self.config)
|
|
51
57
|
|
|
52
58
|
@classmethod
|
|
53
|
-
def default(cls) -> Self:
|
|
54
|
-
|
|
59
|
+
def default(cls, timeout_seconds: float | None = None) -> Self:
|
|
60
|
+
"""Build the default policy, optionally with a per-call deadline.
|
|
61
|
+
|
|
62
|
+
When ``timeout_seconds`` is set, every method config carries a
|
|
63
|
+
``timeout`` so the C-core fails a stalled call with ``DEADLINE_EXCEEDED``
|
|
64
|
+
instead of hanging. The deadline bounds the whole call, retries included,
|
|
65
|
+
and a per-call ``timeout=`` still overrides it.
|
|
66
|
+
"""
|
|
67
|
+
if timeout_seconds is None:
|
|
68
|
+
return cls(config=cls.DEFAULT_POLICY)
|
|
69
|
+
duration = _format_grpc_duration(timeout_seconds)
|
|
70
|
+
config: RetryConfig = {
|
|
71
|
+
"methodConfig": [
|
|
72
|
+
{**method_config, "timeout": duration}
|
|
73
|
+
for method_config in cls.DEFAULT_POLICY["methodConfig"]
|
|
74
|
+
]
|
|
75
|
+
}
|
|
76
|
+
return cls(config=config)
|
|
55
77
|
|
|
56
78
|
|
|
57
79
|
class RetryConfig(TypedDict):
|
|
@@ -61,6 +83,10 @@ class RetryConfig(TypedDict):
|
|
|
61
83
|
class MethodConfigDict(TypedDict):
|
|
62
84
|
name: list[dict[str, str]]
|
|
63
85
|
retryPolicy: RetryConfigDict
|
|
86
|
+
# Applies to all methods via the wildcard `name` matcher above. If a
|
|
87
|
+
# server-streaming RPC is ever added to this channel, scope this by method
|
|
88
|
+
# name so the deadline doesn't clip a long-lived stream.
|
|
89
|
+
timeout: NotRequired[str]
|
|
64
90
|
|
|
65
91
|
|
|
66
92
|
class RetryConfigDict(TypedDict):
|
{sift_stack_py-0.16.2 → sift_stack_py-0.17.0}/lib/sift_client/_internal/grpc_transport/transport.py
RENAMED
|
@@ -31,6 +31,9 @@ from sift_client._internal.grpc_transport.keepalive import DEFAULT_KEEPALIVE_CON
|
|
|
31
31
|
SiftChannel: TypeAlias = grpc.Channel
|
|
32
32
|
SiftAsyncChannel: TypeAlias = grpc_aio.Channel
|
|
33
33
|
|
|
34
|
+
DEFAULT_REQUEST_TIMEOUT_SECONDS = 60.0
|
|
35
|
+
"""Default per-call deadline applied to unary RPCs that don't set their own."""
|
|
36
|
+
|
|
34
37
|
|
|
35
38
|
def get_ssl_credentials(cert_via_openssl: bool) -> grpc.ChannelCredentials:
|
|
36
39
|
"""
|
|
@@ -155,9 +158,10 @@ def _compute_channel_options(opts: SiftChannelConfig) -> list[tuple[str, Any]]:
|
|
|
155
158
|
Initialize all [channel options](https://github.com/grpc/grpc/blob/v1.64.x/include/grpc/impl/channel_arg_names.h) here.
|
|
156
159
|
"""
|
|
157
160
|
|
|
161
|
+
request_timeout = opts.get("request_timeout", DEFAULT_REQUEST_TIMEOUT_SECONDS)
|
|
158
162
|
options = [
|
|
159
163
|
("grpc.enable_retries", 1),
|
|
160
|
-
("grpc.service_config", RetryPolicy.default().as_json()),
|
|
164
|
+
("grpc.service_config", RetryPolicy.default(timeout_seconds=request_timeout).as_json()),
|
|
161
165
|
# Primary cannot be overriden:
|
|
162
166
|
# https://github.com/grpc/grpc/blob/0498194240f55d7f4b12633ad01339fb690621bf/src/core/ext/filters/http/client/http_client_filter.cc#L97
|
|
163
167
|
("grpc.secondary_user_agent", _compute_user_agent()),
|
|
@@ -248,6 +252,8 @@ class SiftChannelConfig(TypedDict):
|
|
|
248
252
|
Run `pip install sift-stack-py[openssl]` to install the dependencies required to use this option.
|
|
249
253
|
This works around this issue with grpc loading SSL certificates: https://github.com/grpc/grpc/issues/29682.
|
|
250
254
|
Default is False.
|
|
255
|
+
- `request_timeout`: Default deadline in seconds applied to unary RPCs that don't set their own.
|
|
256
|
+
Defaults to 60s. Set to `None` to disable the default deadline.
|
|
251
257
|
"""
|
|
252
258
|
|
|
253
259
|
uri: str
|
|
@@ -255,3 +261,4 @@ class SiftChannelConfig(TypedDict):
|
|
|
255
261
|
enable_keepalive: NotRequired[bool | KeepaliveConfig]
|
|
256
262
|
use_ssl: NotRequired[bool]
|
|
257
263
|
cert_via_openssl: NotRequired[bool]
|
|
264
|
+
request_timeout: NotRequired[float | None]
|
|
@@ -12,6 +12,7 @@ from sift_client._internal.low_level_wrappers.rules import RulesLowLevelClient
|
|
|
12
12
|
from sift_client._internal.low_level_wrappers.runs import RunsLowLevelClient
|
|
13
13
|
from sift_client._internal.low_level_wrappers.tags import TagsLowLevelClient
|
|
14
14
|
from sift_client._internal.low_level_wrappers.test_results import TestResultsLowLevelClient
|
|
15
|
+
from sift_client._internal.low_level_wrappers.units import UnitsLowLevelClient
|
|
15
16
|
from sift_client._internal.low_level_wrappers.upload import UploadLowLevelClient
|
|
16
17
|
|
|
17
18
|
__all__ = [
|
|
@@ -27,5 +28,6 @@ __all__ = [
|
|
|
27
28
|
"RunsLowLevelClient",
|
|
28
29
|
"TagsLowLevelClient",
|
|
29
30
|
"TestResultsLowLevelClient",
|
|
31
|
+
"UnitsLowLevelClient",
|
|
30
32
|
"UploadLowLevelClient",
|
|
31
33
|
]
|
|
@@ -10,12 +10,17 @@ from sift.channels.v3.channels_pb2 import (
|
|
|
10
10
|
GetChannelResponse,
|
|
11
11
|
ListChannelsRequest,
|
|
12
12
|
ListChannelsResponse,
|
|
13
|
+
UpdateChannelRequest,
|
|
14
|
+
UpdateChannelResponse,
|
|
13
15
|
)
|
|
16
|
+
from sift.channels.v3.channels_pb2 import Channel as ChannelProto
|
|
14
17
|
from sift.channels.v3.channels_pb2_grpc import ChannelServiceStub
|
|
15
18
|
|
|
16
19
|
from sift_client._internal.low_level_wrappers.base import LowLevelClientBase
|
|
17
|
-
from sift_client.
|
|
20
|
+
from sift_client._internal.low_level_wrappers.units import UnitsLowLevelClient
|
|
21
|
+
from sift_client.sift_types.channel import Channel, ChannelUpdate
|
|
18
22
|
from sift_client.transport import WithGrpcClient
|
|
23
|
+
from sift_client.util import cel_utils as cel
|
|
19
24
|
|
|
20
25
|
if TYPE_CHECKING:
|
|
21
26
|
from sift_client.transport.grpc_transport import GrpcClient
|
|
@@ -39,6 +44,38 @@ class ChannelsLowLevelClient(LowLevelClientBase, WithGrpcClient):
|
|
|
39
44
|
grpc_client: The gRPC client to use for making API calls.
|
|
40
45
|
"""
|
|
41
46
|
super().__init__(grpc_client)
|
|
47
|
+
self._units_low_level_client = UnitsLowLevelClient(grpc_client=grpc_client)
|
|
48
|
+
|
|
49
|
+
async def _build_channels(self, protos: list[ChannelProto]) -> list[Channel]:
|
|
50
|
+
"""Build Channels from protos, resolving each unit id to its name.
|
|
51
|
+
|
|
52
|
+
The proto carries the unit as an id, so the ids are looked up against the Units
|
|
53
|
+
service and the Channel is built with the abbreviated name. This keeps a Channel's
|
|
54
|
+
``unit`` field a human-readable name, never an id.
|
|
55
|
+
|
|
56
|
+
Args:
|
|
57
|
+
protos: The channel protos to build.
|
|
58
|
+
|
|
59
|
+
Returns:
|
|
60
|
+
The built Channels, with unit names resolved.
|
|
61
|
+
"""
|
|
62
|
+
unit_ids = {(proto.display_unit_id or proto.unit_id) for proto in protos}
|
|
63
|
+
unit_ids.discard("")
|
|
64
|
+
names: dict[str, str] = {}
|
|
65
|
+
if unit_ids:
|
|
66
|
+
units = await self._units_low_level_client.list_all_units(
|
|
67
|
+
query_filter=cel.in_("unit_id", list(unit_ids)),
|
|
68
|
+
)
|
|
69
|
+
names = {unit.unit_id: unit.abbreviated_name for unit in units}
|
|
70
|
+
return [
|
|
71
|
+
Channel._from_proto(proto, unit=names.get(proto.display_unit_id or proto.unit_id, ""))
|
|
72
|
+
for proto in protos
|
|
73
|
+
]
|
|
74
|
+
|
|
75
|
+
async def _build_channel(self, proto: ChannelProto) -> Channel:
|
|
76
|
+
"""Build a single Channel from a proto, resolving its unit id to a name."""
|
|
77
|
+
channels = await self._build_channels([proto])
|
|
78
|
+
return channels[0]
|
|
42
79
|
|
|
43
80
|
async def get_channel(self, channel_id: str) -> Channel:
|
|
44
81
|
"""Get a channel by channel_id.
|
|
@@ -55,8 +92,7 @@ class ChannelsLowLevelClient(LowLevelClientBase, WithGrpcClient):
|
|
|
55
92
|
request = GetChannelRequest(channel_id=channel_id)
|
|
56
93
|
response = await self._grpc_client.get_stub(ChannelServiceStub).GetChannel(request)
|
|
57
94
|
grpc_channel = cast("GetChannelResponse", response).channel
|
|
58
|
-
|
|
59
|
-
return channel
|
|
95
|
+
return await self._build_channel(grpc_channel)
|
|
60
96
|
|
|
61
97
|
async def list_channels(
|
|
62
98
|
self,
|
|
@@ -91,7 +127,7 @@ class ChannelsLowLevelClient(LowLevelClientBase, WithGrpcClient):
|
|
|
91
127
|
response = await self._grpc_client.get_stub(ChannelServiceStub).ListChannels(request)
|
|
92
128
|
response = cast("ListChannelsResponse", response)
|
|
93
129
|
|
|
94
|
-
channels =
|
|
130
|
+
channels = await self._build_channels(list(response.channels))
|
|
95
131
|
return channels, response.next_page_token
|
|
96
132
|
|
|
97
133
|
async def list_all_channels(
|
|
@@ -120,6 +156,21 @@ class ChannelsLowLevelClient(LowLevelClientBase, WithGrpcClient):
|
|
|
120
156
|
max_results=max_results,
|
|
121
157
|
)
|
|
122
158
|
|
|
159
|
+
async def update_channel(self, update: ChannelUpdate) -> Channel:
|
|
160
|
+
"""Update a channel.
|
|
161
|
+
|
|
162
|
+
Args:
|
|
163
|
+
update: The ChannelUpdate to apply.
|
|
164
|
+
|
|
165
|
+
Returns:
|
|
166
|
+
The updated Channel.
|
|
167
|
+
"""
|
|
168
|
+
grpc_channel, update_mask = update.to_proto_with_mask()
|
|
169
|
+
request = UpdateChannelRequest(channel=grpc_channel, update_mask=update_mask)
|
|
170
|
+
response = await self._grpc_client.get_stub(ChannelServiceStub).UpdateChannel(request)
|
|
171
|
+
updated_grpc_channel = cast("UpdateChannelResponse", response).channel
|
|
172
|
+
return await self._build_channel(updated_grpc_channel)
|
|
173
|
+
|
|
123
174
|
async def batch_archive_channels(self, channel_ids: list[str]) -> None:
|
|
124
175
|
"""Batch archive channels by setting active to false.
|
|
125
176
|
|
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
|
|
3
|
+
import logging
|
|
4
|
+
from typing import TYPE_CHECKING, Any, cast
|
|
5
|
+
|
|
6
|
+
from sift.unit.v2.unit_pb2 import (
|
|
7
|
+
CreateUnitRequest,
|
|
8
|
+
CreateUnitResponse,
|
|
9
|
+
ListUnitsRequest,
|
|
10
|
+
ListUnitsResponse,
|
|
11
|
+
)
|
|
12
|
+
from sift.unit.v2.unit_pb2 import Unit as UnitProto
|
|
13
|
+
from sift.unit.v2.unit_pb2_grpc import UnitServiceStub
|
|
14
|
+
|
|
15
|
+
from sift_client._internal.low_level_wrappers.base import DEFAULT_PAGE_SIZE, LowLevelClientBase
|
|
16
|
+
from sift_client.transport import WithGrpcClient
|
|
17
|
+
|
|
18
|
+
if TYPE_CHECKING:
|
|
19
|
+
from sift_client.transport.grpc_transport import GrpcClient
|
|
20
|
+
|
|
21
|
+
# Configure logging
|
|
22
|
+
logger = logging.getLogger(__name__)
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
class UnitsLowLevelClient(LowLevelClientBase, WithGrpcClient):
|
|
26
|
+
"""Low-level client for the Units service.
|
|
27
|
+
|
|
28
|
+
This class provides a thin wrapper around the autogenerated bindings for the Units service.
|
|
29
|
+
"""
|
|
30
|
+
|
|
31
|
+
def __init__(self, grpc_client: GrpcClient):
|
|
32
|
+
"""Initialize the UnitsLowLevelClient.
|
|
33
|
+
|
|
34
|
+
Args:
|
|
35
|
+
grpc_client: The gRPC client to use for making API calls.
|
|
36
|
+
"""
|
|
37
|
+
super().__init__(grpc_client)
|
|
38
|
+
|
|
39
|
+
async def create_unit(self, name: str) -> UnitProto:
|
|
40
|
+
"""Create a new unit.
|
|
41
|
+
|
|
42
|
+
If a unit with the same name already exists, it is returned instead of creating a duplicate.
|
|
43
|
+
|
|
44
|
+
Args:
|
|
45
|
+
name: The name of the unit.
|
|
46
|
+
|
|
47
|
+
Returns:
|
|
48
|
+
The created unit proto, whose unit_id is used to reference the unit.
|
|
49
|
+
|
|
50
|
+
Raises:
|
|
51
|
+
ValueError: If name is not provided.
|
|
52
|
+
"""
|
|
53
|
+
if not name:
|
|
54
|
+
raise ValueError("name must be provided")
|
|
55
|
+
|
|
56
|
+
request = CreateUnitRequest(name=name)
|
|
57
|
+
response = await self._grpc_client.get_stub(UnitServiceStub).CreateUnit(request)
|
|
58
|
+
return cast("CreateUnitResponse", response).unit
|
|
59
|
+
|
|
60
|
+
async def list_units(
|
|
61
|
+
self,
|
|
62
|
+
*,
|
|
63
|
+
page_size: int | None = DEFAULT_PAGE_SIZE,
|
|
64
|
+
page_token: str | None = None,
|
|
65
|
+
query_filter: str | None = None,
|
|
66
|
+
order_by: str | None = None,
|
|
67
|
+
) -> tuple[list[UnitProto], str]:
|
|
68
|
+
"""List units with optional filtering and pagination.
|
|
69
|
+
|
|
70
|
+
Args:
|
|
71
|
+
page_size: The maximum number of units to return.
|
|
72
|
+
page_token: A page token for pagination.
|
|
73
|
+
query_filter: A CEL filter string (e.g. filtering on unit_id or abbreviated_name).
|
|
74
|
+
order_by: How to order the retrieved units.
|
|
75
|
+
|
|
76
|
+
Returns:
|
|
77
|
+
A tuple of (unit protos, next_page_token).
|
|
78
|
+
"""
|
|
79
|
+
request_kwargs: dict[str, Any] = {}
|
|
80
|
+
if page_size is not None:
|
|
81
|
+
request_kwargs["page_size"] = page_size
|
|
82
|
+
if page_token is not None:
|
|
83
|
+
request_kwargs["page_token"] = page_token
|
|
84
|
+
if query_filter is not None:
|
|
85
|
+
request_kwargs["filter"] = query_filter
|
|
86
|
+
if order_by is not None:
|
|
87
|
+
request_kwargs["order_by"] = order_by
|
|
88
|
+
|
|
89
|
+
request = ListUnitsRequest(**request_kwargs)
|
|
90
|
+
response = await self._grpc_client.get_stub(UnitServiceStub).ListUnits(request)
|
|
91
|
+
response = cast("ListUnitsResponse", response)
|
|
92
|
+
|
|
93
|
+
return list(response.units), response.next_page_token
|
|
94
|
+
|
|
95
|
+
async def list_all_units(
|
|
96
|
+
self,
|
|
97
|
+
*,
|
|
98
|
+
query_filter: str | None = None,
|
|
99
|
+
order_by: str | None = None,
|
|
100
|
+
page_size: int | None = DEFAULT_PAGE_SIZE,
|
|
101
|
+
max_results: int | None = None,
|
|
102
|
+
) -> list[UnitProto]:
|
|
103
|
+
"""List all units with optional filtering, following pagination.
|
|
104
|
+
|
|
105
|
+
Args:
|
|
106
|
+
query_filter: A CEL filter string.
|
|
107
|
+
order_by: How to order the retrieved units.
|
|
108
|
+
page_size: The number of units to fetch per request.
|
|
109
|
+
max_results: Maximum number of results to return.
|
|
110
|
+
|
|
111
|
+
Returns:
|
|
112
|
+
A list of all matching unit protos.
|
|
113
|
+
"""
|
|
114
|
+
return await self._handle_pagination(
|
|
115
|
+
self.list_units,
|
|
116
|
+
kwargs={"query_filter": query_filter},
|
|
117
|
+
page_size=page_size,
|
|
118
|
+
order_by=order_by,
|
|
119
|
+
max_results=max_results,
|
|
120
|
+
)
|
|
@@ -53,7 +53,22 @@ def generate_sync_api(cls: type[ResourceBase], sync_name: str) -> type:
|
|
|
53
53
|
self._async_impl._is_sync = True
|
|
54
54
|
|
|
55
55
|
def _run(self, coro):
|
|
56
|
-
|
|
56
|
+
client = self._async_impl.client
|
|
57
|
+
loop = client.get_asyncio_loop()
|
|
58
|
+
|
|
59
|
+
# Fail fast if the loop has stopped (e.g. the client was closed during
|
|
60
|
+
# teardown). Scheduling onto a stopped loop would block forever because
|
|
61
|
+
# the coroutine can never run.
|
|
62
|
+
loop_running = getattr(client, "is_loop_running", None)
|
|
63
|
+
if loop_running is None:
|
|
64
|
+
loop_running = loop.is_running()
|
|
65
|
+
if not loop_running:
|
|
66
|
+
coro.close()
|
|
67
|
+
raise RuntimeError("Sift client is closed; cannot make synchronous API calls.")
|
|
68
|
+
|
|
69
|
+
# No wall-clock cap here: stalled calls are bounded at the transport layer
|
|
70
|
+
# (GrpcConfig/RestConfig request_timeout), and waiting on the whole coroutine
|
|
71
|
+
# lets methods like wait_until_complete honor their own timeout_secs.
|
|
57
72
|
return asyncio.run_coroutine_threadsafe(coro, loop).result()
|
|
58
73
|
|
|
59
74
|
namespace = {
|