classifyre-cli 0.4.50__tar.gz → 0.4.51__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.
- classifyre_cli-0.4.51/.turbo/turbo-build.log +3 -0
- {classifyre_cli-0.4.50 → classifyre_cli-0.4.51}/PKG-INFO +1 -1
- {classifyre_cli-0.4.50 → classifyre_cli-0.4.51}/package.json +1 -1
- {classifyre_cli-0.4.50 → classifyre_cli-0.4.51}/pyproject.toml +9 -1
- {classifyre_cli-0.4.50 → classifyre_cli-0.4.51}/src/models/generated_input.py +332 -0
- classifyre_cli-0.4.51/src/sources/google_workspace/source.py +969 -0
- classifyre_cli-0.4.51/src/sources/microsoft_365/source.py +1060 -0
- {classifyre_cli-0.4.50 → classifyre_cli-0.4.51}/src/utils/dependency_groups.py +2 -0
- classifyre_cli-0.4.51/tests/detectors/secrets/__init__.py +0 -0
- classifyre_cli-0.4.51/tests/detectors/threat/__init__.py +0 -0
- classifyre_cli-0.4.51/tests/test_google_workspace_source.py +462 -0
- classifyre_cli-0.4.51/tests/test_microsoft_365_source.py +512 -0
- {classifyre_cli-0.4.50 → classifyre_cli-0.4.51}/uv.lock +238 -2
- classifyre_cli-0.4.50/.turbo/turbo-build.log +0 -3
- {classifyre_cli-0.4.50 → classifyre_cli-0.4.51}/.gitignore +0 -0
- {classifyre_cli-0.4.50 → classifyre_cli-0.4.51}/.python-version +0 -0
- {classifyre_cli-0.4.50 → classifyre_cli-0.4.51}/README.md +0 -0
- {classifyre_cli-0.4.50 → classifyre_cli-0.4.51}/main.py +0 -0
- {classifyre_cli-0.4.50 → classifyre_cli-0.4.51}/scripts/generate_models.py +0 -0
- {classifyre_cli-0.4.50 → classifyre_cli-0.4.51}/src/__init__.py +0 -0
- {classifyre_cli-0.4.50 → classifyre_cli-0.4.51}/src/config.py +0 -0
- {classifyre_cli-0.4.50 → classifyre_cli-0.4.51}/src/detectors/__init__.py +0 -0
- {classifyre_cli-0.4.50 → classifyre_cli-0.4.51}/src/detectors/base.py +0 -0
- {classifyre_cli-0.4.50 → classifyre_cli-0.4.51}/src/detectors/broken_links/__init__.py +0 -0
- {classifyre_cli-0.4.50 → classifyre_cli-0.4.51}/src/detectors/broken_links/detector.py +0 -0
- {classifyre_cli-0.4.50 → classifyre_cli-0.4.51}/src/detectors/config.py +0 -0
- {classifyre_cli-0.4.50 → classifyre_cli-0.4.51}/src/detectors/content/__init__.py +0 -0
- {classifyre_cli-0.4.50 → classifyre_cli-0.4.51}/src/detectors/custom/__init__.py +0 -0
- {classifyre_cli-0.4.50 → classifyre_cli-0.4.51}/src/detectors/custom/detector.py +0 -0
- {classifyre_cli-0.4.50 → classifyre_cli-0.4.51}/src/detectors/custom/extractor.py +0 -0
- {classifyre_cli-0.4.50 → classifyre_cli-0.4.51}/src/detectors/custom/runners/__init__.py +0 -0
- {classifyre_cli-0.4.50 → classifyre_cli-0.4.51}/src/detectors/custom/runners/_base.py +0 -0
- {classifyre_cli-0.4.50 → classifyre_cli-0.4.51}/src/detectors/custom/runners/_factory.py +0 -0
- {classifyre_cli-0.4.50 → classifyre_cli-0.4.51}/src/detectors/custom/runners/_feature_extraction.py +0 -0
- {classifyre_cli-0.4.50 → classifyre_cli-0.4.51}/src/detectors/custom/runners/_gliner2.py +0 -0
- {classifyre_cli-0.4.50 → classifyre_cli-0.4.51}/src/detectors/custom/runners/_image_classification.py +0 -0
- {classifyre_cli-0.4.50 → classifyre_cli-0.4.51}/src/detectors/custom/runners/_llm.py +0 -0
- {classifyre_cli-0.4.50 → classifyre_cli-0.4.51}/src/detectors/custom/runners/_object_detection.py +0 -0
- {classifyre_cli-0.4.50 → classifyre_cli-0.4.51}/src/detectors/custom/runners/_regex.py +0 -0
- {classifyre_cli-0.4.50 → classifyre_cli-0.4.51}/src/detectors/custom/runners/_text_classification.py +0 -0
- {classifyre_cli-0.4.50 → classifyre_cli-0.4.51}/src/detectors/custom/trainer.py +0 -0
- {classifyre_cli-0.4.50 → classifyre_cli-0.4.51}/src/detectors/dependencies.py +0 -0
- {classifyre_cli-0.4.50 → classifyre_cli-0.4.51}/src/detectors/pii/__init__.py +0 -0
- {classifyre_cli-0.4.50 → classifyre_cli-0.4.51}/src/detectors/pii/detector.py +0 -0
- {classifyre_cli-0.4.50 → classifyre_cli-0.4.51}/src/detectors/secrets/__init__.py +0 -0
- {classifyre_cli-0.4.50 → classifyre_cli-0.4.51}/src/detectors/secrets/detector.py +0 -0
- {classifyre_cli-0.4.50 → classifyre_cli-0.4.51}/src/detectors/threat/__init__.py +0 -0
- {classifyre_cli-0.4.50 → classifyre_cli-0.4.51}/src/detectors/threat/code_security_detector.py +0 -0
- {classifyre_cli-0.4.50 → classifyre_cli-0.4.51}/src/detectors/threat/yara_detector.py +0 -0
- {classifyre_cli-0.4.50 → classifyre_cli-0.4.51}/src/main.py +0 -0
- {classifyre_cli-0.4.50 → classifyre_cli-0.4.51}/src/models/generated_detectors.py +0 -0
- {classifyre_cli-0.4.50 → classifyre_cli-0.4.51}/src/models/generated_single_asset_scan_results.py +0 -0
- {classifyre_cli-0.4.50 → classifyre_cli-0.4.51}/src/outputs/__init__.py +0 -0
- {classifyre_cli-0.4.50 → classifyre_cli-0.4.51}/src/outputs/base.py +0 -0
- {classifyre_cli-0.4.50 → classifyre_cli-0.4.51}/src/outputs/console.py +0 -0
- {classifyre_cli-0.4.50 → classifyre_cli-0.4.51}/src/outputs/factory.py +0 -0
- {classifyre_cli-0.4.50 → classifyre_cli-0.4.51}/src/outputs/file.py +0 -0
- {classifyre_cli-0.4.50 → classifyre_cli-0.4.51}/src/outputs/rest.py +0 -0
- {classifyre_cli-0.4.50 → classifyre_cli-0.4.51}/src/pipeline/__init__.py +0 -0
- {classifyre_cli-0.4.50 → classifyre_cli-0.4.51}/src/pipeline/content_provider.py +0 -0
- {classifyre_cli-0.4.50 → classifyre_cli-0.4.51}/src/pipeline/detector_pipeline.py +0 -0
- {classifyre_cli-0.4.50 → classifyre_cli-0.4.51}/src/pipeline/parsed_content_provider.py +0 -0
- {classifyre_cli-0.4.50 → classifyre_cli-0.4.51}/src/pipeline/worker_pool.py +0 -0
- {classifyre_cli-0.4.50 → classifyre_cli-0.4.51}/src/sandbox/__init__.py +0 -0
- {classifyre_cli-0.4.50 → classifyre_cli-0.4.51}/src/sandbox/runner.py +0 -0
- {classifyre_cli-0.4.50 → classifyre_cli-0.4.51}/src/sources/__init__.py +0 -0
- {classifyre_cli-0.4.50 → classifyre_cli-0.4.51}/src/sources/asset_metadata.py +0 -0
- {classifyre_cli-0.4.50 → classifyre_cli-0.4.51}/src/sources/atlassian_common.py +0 -0
- {classifyre_cli-0.4.50 → classifyre_cli-0.4.51}/src/sources/azure_blob_storage/__init__.py +0 -0
- {classifyre_cli-0.4.50 → classifyre_cli-0.4.51}/src/sources/azure_blob_storage/source.py +0 -0
- {classifyre_cli-0.4.50 → classifyre_cli-0.4.51}/src/sources/base.py +0 -0
- {classifyre_cli-0.4.50 → classifyre_cli-0.4.51}/src/sources/confluence/__init__.py +0 -0
- {classifyre_cli-0.4.50 → classifyre_cli-0.4.51}/src/sources/confluence/source.py +0 -0
- {classifyre_cli-0.4.50 → classifyre_cli-0.4.51}/src/sources/databricks/__init__.py +0 -0
- {classifyre_cli-0.4.50 → classifyre_cli-0.4.51}/src/sources/databricks/source.py +0 -0
- {classifyre_cli-0.4.50 → classifyre_cli-0.4.51}/src/sources/delta_lake/__init__.py +0 -0
- {classifyre_cli-0.4.50 → classifyre_cli-0.4.51}/src/sources/delta_lake/source.py +0 -0
- {classifyre_cli-0.4.50 → classifyre_cli-0.4.51}/src/sources/dependencies.py +0 -0
- {classifyre_cli-0.4.50 → classifyre_cli-0.4.51}/src/sources/elasticsearch/__init__.py +0 -0
- {classifyre_cli-0.4.50 → classifyre_cli-0.4.51}/src/sources/elasticsearch/source.py +0 -0
- {classifyre_cli-0.4.50 → classifyre_cli-0.4.51}/src/sources/email/__init__.py +0 -0
- {classifyre_cli-0.4.50 → classifyre_cli-0.4.51}/src/sources/email/source.py +0 -0
- {classifyre_cli-0.4.50 → classifyre_cli-0.4.51}/src/sources/google_cloud_storage/__init__.py +0 -0
- {classifyre_cli-0.4.50 → classifyre_cli-0.4.51}/src/sources/google_cloud_storage/source.py +0 -0
- {classifyre_cli-0.4.50/src/sources/neo4j → classifyre_cli-0.4.51/src/sources/google_workspace}/__init__.py +0 -0
- {classifyre_cli-0.4.50 → classifyre_cli-0.4.51}/src/sources/hive/__init__.py +0 -0
- {classifyre_cli-0.4.50 → classifyre_cli-0.4.51}/src/sources/hive/source.py +0 -0
- {classifyre_cli-0.4.50 → classifyre_cli-0.4.51}/src/sources/iceberg/__init__.py +0 -0
- {classifyre_cli-0.4.50 → classifyre_cli-0.4.51}/src/sources/iceberg/source.py +0 -0
- {classifyre_cli-0.4.50 → classifyre_cli-0.4.51}/src/sources/jira/__init__.py +0 -0
- {classifyre_cli-0.4.50 → classifyre_cli-0.4.51}/src/sources/jira/source.py +0 -0
- {classifyre_cli-0.4.50 → classifyre_cli-0.4.51}/src/sources/kafka/__init__.py +0 -0
- {classifyre_cli-0.4.50 → classifyre_cli-0.4.51}/src/sources/kafka/source.py +0 -0
- {classifyre_cli-0.4.50 → classifyre_cli-0.4.51}/src/sources/lakehouse_base.py +0 -0
- {classifyre_cli-0.4.50 → classifyre_cli-0.4.51}/src/sources/local_folder/__init__.py +0 -0
- {classifyre_cli-0.4.50 → classifyre_cli-0.4.51}/src/sources/local_folder/source.py +0 -0
- {classifyre_cli-0.4.50 → classifyre_cli-0.4.51}/src/sources/meilisearch/__init__.py +0 -0
- {classifyre_cli-0.4.50 → classifyre_cli-0.4.51}/src/sources/meilisearch/source.py +0 -0
- {classifyre_cli-0.4.50/src/sources/sqlite → classifyre_cli-0.4.51/src/sources/microsoft_365}/__init__.py +0 -0
- {classifyre_cli-0.4.50 → classifyre_cli-0.4.51}/src/sources/mongodb/__init__.py +0 -0
- {classifyre_cli-0.4.50 → classifyre_cli-0.4.51}/src/sources/mongodb/source.py +0 -0
- {classifyre_cli-0.4.50 → classifyre_cli-0.4.51}/src/sources/mssql/__init__.py +0 -0
- {classifyre_cli-0.4.50 → classifyre_cli-0.4.51}/src/sources/mssql/source.py +0 -0
- {classifyre_cli-0.4.50 → classifyre_cli-0.4.51}/src/sources/mysql/__init__.py +0 -0
- {classifyre_cli-0.4.50 → classifyre_cli-0.4.51}/src/sources/mysql/source.py +0 -0
- {classifyre_cli-0.4.50/tests → classifyre_cli-0.4.51/src/sources/neo4j}/__init__.py +0 -0
- {classifyre_cli-0.4.50 → classifyre_cli-0.4.51}/src/sources/neo4j/source.py +0 -0
- {classifyre_cli-0.4.50 → classifyre_cli-0.4.51}/src/sources/notion/__init__.py +0 -0
- {classifyre_cli-0.4.50 → classifyre_cli-0.4.51}/src/sources/notion/client.py +0 -0
- {classifyre_cli-0.4.50 → classifyre_cli-0.4.51}/src/sources/notion/source.py +0 -0
- {classifyre_cli-0.4.50 → classifyre_cli-0.4.51}/src/sources/object_storage/base.py +0 -0
- {classifyre_cli-0.4.50 → classifyre_cli-0.4.51}/src/sources/opensearch/__init__.py +0 -0
- {classifyre_cli-0.4.50 → classifyre_cli-0.4.51}/src/sources/opensearch/source.py +0 -0
- {classifyre_cli-0.4.50 → classifyre_cli-0.4.51}/src/sources/oracle/__init__.py +0 -0
- {classifyre_cli-0.4.50 → classifyre_cli-0.4.51}/src/sources/oracle/source.py +0 -0
- {classifyre_cli-0.4.50 → classifyre_cli-0.4.51}/src/sources/postgresql/__init__.py +0 -0
- {classifyre_cli-0.4.50 → classifyre_cli-0.4.51}/src/sources/postgresql/source.py +0 -0
- {classifyre_cli-0.4.50 → classifyre_cli-0.4.51}/src/sources/powerbi/__init__.py +0 -0
- {classifyre_cli-0.4.50 → classifyre_cli-0.4.51}/src/sources/powerbi/source.py +0 -0
- {classifyre_cli-0.4.50 → classifyre_cli-0.4.51}/src/sources/recipe_normalizer.py +0 -0
- {classifyre_cli-0.4.50 → classifyre_cli-0.4.51}/src/sources/s3_client.py +0 -0
- {classifyre_cli-0.4.50 → classifyre_cli-0.4.51}/src/sources/s3_compatible_storage/README.md +0 -0
- {classifyre_cli-0.4.50 → classifyre_cli-0.4.51}/src/sources/s3_compatible_storage/__init__.py +0 -0
- {classifyre_cli-0.4.50 → classifyre_cli-0.4.51}/src/sources/s3_compatible_storage/source.py +0 -0
- {classifyre_cli-0.4.50 → classifyre_cli-0.4.51}/src/sources/search_engine_base.py +0 -0
- {classifyre_cli-0.4.50 → classifyre_cli-0.4.51}/src/sources/servicedesk/__init__.py +0 -0
- {classifyre_cli-0.4.50 → classifyre_cli-0.4.51}/src/sources/servicedesk/source.py +0 -0
- {classifyre_cli-0.4.50 → classifyre_cli-0.4.51}/src/sources/slack/__init__.py +0 -0
- {classifyre_cli-0.4.50 → classifyre_cli-0.4.51}/src/sources/slack/source.py +0 -0
- {classifyre_cli-0.4.50 → classifyre_cli-0.4.51}/src/sources/snowflake/__init__.py +0 -0
- {classifyre_cli-0.4.50 → classifyre_cli-0.4.51}/src/sources/snowflake/source.py +0 -0
- {classifyre_cli-0.4.50/tests/detectors → classifyre_cli-0.4.51/src/sources/sqlite}/__init__.py +0 -0
- {classifyre_cli-0.4.50 → classifyre_cli-0.4.51}/src/sources/sqlite/source.py +0 -0
- {classifyre_cli-0.4.50 → classifyre_cli-0.4.51}/src/sources/tableau/__init__.py +0 -0
- {classifyre_cli-0.4.50 → classifyre_cli-0.4.51}/src/sources/tableau/source.py +0 -0
- {classifyre_cli-0.4.50 → classifyre_cli-0.4.51}/src/sources/tabular_base.py +0 -0
- {classifyre_cli-0.4.50 → classifyre_cli-0.4.51}/src/sources/tabular_utils.py +0 -0
- {classifyre_cli-0.4.50 → classifyre_cli-0.4.51}/src/sources/wordpress/__init__.py +0 -0
- {classifyre_cli-0.4.50 → classifyre_cli-0.4.51}/src/sources/wordpress/source.py +0 -0
- {classifyre_cli-0.4.50 → classifyre_cli-0.4.51}/src/sources/youtube/__init__.py +0 -0
- {classifyre_cli-0.4.50 → classifyre_cli-0.4.51}/src/sources/youtube/source.py +0 -0
- {classifyre_cli-0.4.50 → classifyre_cli-0.4.51}/src/telemetry.py +0 -0
- {classifyre_cli-0.4.50 → classifyre_cli-0.4.51}/src/utils/__init__.py +0 -0
- {classifyre_cli-0.4.50 → classifyre_cli-0.4.51}/src/utils/content_extraction.py +0 -0
- {classifyre_cli-0.4.50 → classifyre_cli-0.4.51}/src/utils/embedded_images.py +0 -0
- {classifyre_cli-0.4.50 → classifyre_cli-0.4.51}/src/utils/file_metadata.py +0 -0
- {classifyre_cli-0.4.50 → classifyre_cli-0.4.51}/src/utils/file_parser.py +0 -0
- {classifyre_cli-0.4.50 → classifyre_cli-0.4.51}/src/utils/file_to_images.py +0 -0
- {classifyre_cli-0.4.50 → classifyre_cli-0.4.51}/src/utils/hashing.py +0 -0
- {classifyre_cli-0.4.50 → classifyre_cli-0.4.51}/src/utils/resources.py +0 -0
- {classifyre_cli-0.4.50 → classifyre_cli-0.4.51}/src/utils/transcription.py +0 -0
- {classifyre_cli-0.4.50 → classifyre_cli-0.4.51}/src/utils/uv_sync.py +0 -0
- {classifyre_cli-0.4.50 → classifyre_cli-0.4.51}/src/utils/validation.py +0 -0
- {classifyre_cli-0.4.50/tests/detectors/content → classifyre_cli-0.4.51/tests}/__init__.py +0 -0
- {classifyre_cli-0.4.50 → classifyre_cli-0.4.51}/tests/_lakehouse_fakes.py +0 -0
- {classifyre_cli-0.4.50 → classifyre_cli-0.4.51}/tests/conftest.py +0 -0
- {classifyre_cli-0.4.50/tests/detectors/custom → classifyre_cli-0.4.51/tests/detectors}/__init__.py +0 -0
- {classifyre_cli-0.4.50 → classifyre_cli-0.4.51}/tests/detectors/broken_links/test_broken_links_detector.py +0 -0
- {classifyre_cli-0.4.50 → classifyre_cli-0.4.51}/tests/detectors/conftest.py +0 -0
- {classifyre_cli-0.4.50/tests/detectors/pii → classifyre_cli-0.4.51/tests/detectors/content}/__init__.py +0 -0
- {classifyre_cli-0.4.50/tests/detectors/secrets → classifyre_cli-0.4.51/tests/detectors/custom}/__init__.py +0 -0
- {classifyre_cli-0.4.50 → classifyre_cli-0.4.51}/tests/detectors/custom/conftest.py +0 -0
- {classifyre_cli-0.4.50 → classifyre_cli-0.4.51}/tests/detectors/custom/test_invoice_extraction.py +0 -0
- {classifyre_cli-0.4.50 → classifyre_cli-0.4.51}/tests/detectors/custom/test_llm_runner.py +0 -0
- {classifyre_cli-0.4.50 → classifyre_cli-0.4.51}/tests/detectors/custom/test_pipeline_integration.py +0 -0
- {classifyre_cli-0.4.50 → classifyre_cli-0.4.51}/tests/detectors/custom/test_regex_runner.py +0 -0
- {classifyre_cli-0.4.50 → classifyre_cli-0.4.51}/tests/detectors/custom/test_runner_hardening.py +0 -0
- {classifyre_cli-0.4.50 → classifyre_cli-0.4.51}/tests/detectors/custom/test_transformer_runners.py +0 -0
- {classifyre_cli-0.4.50/tests/detectors/threat → classifyre_cli-0.4.51/tests/detectors/pii}/__init__.py +0 -0
- {classifyre_cli-0.4.50 → classifyre_cli-0.4.51}/tests/detectors/pii/conftest.py +0 -0
- {classifyre_cli-0.4.50 → classifyre_cli-0.4.51}/tests/detectors/pii/sample_invoice.pdf +0 -0
- {classifyre_cli-0.4.50 → classifyre_cli-0.4.51}/tests/detectors/pii/test_pii_detector.py +0 -0
- {classifyre_cli-0.4.50 → classifyre_cli-0.4.51}/tests/detectors/pii/test_pii_detector_extended.py +0 -0
- {classifyre_cli-0.4.50 → classifyre_cli-0.4.51}/tests/detectors/secrets/test_secrets_detector.py +0 -0
- {classifyre_cli-0.4.50 → classifyre_cli-0.4.51}/tests/detectors/secrets/test_secrets_detector_extended.py +0 -0
- {classifyre_cli-0.4.50 → classifyre_cli-0.4.51}/tests/detectors/test_base_detector.py +0 -0
- {classifyre_cli-0.4.50 → classifyre_cli-0.4.51}/tests/detectors/test_custom_detector_examples_runtime.py +0 -0
- {classifyre_cli-0.4.50 → classifyre_cli-0.4.51}/tests/detectors/test_detector_catalog_commercial.py +0 -0
- {classifyre_cli-0.4.50 → classifyre_cli-0.4.51}/tests/detectors/test_detector_pipeline_types.py +0 -0
- {classifyre_cli-0.4.50 → classifyre_cli-0.4.51}/tests/detectors/test_detector_schema_examples.py +0 -0
- {classifyre_cli-0.4.50 → classifyre_cli-0.4.51}/tests/detectors/test_detector_types.py +0 -0
- {classifyre_cli-0.4.50 → classifyre_cli-0.4.51}/tests/detectors/test_phase2_detectors.py +0 -0
- {classifyre_cli-0.4.50 → classifyre_cli-0.4.51}/tests/detectors/test_registry.py +0 -0
- {classifyre_cli-0.4.50 → classifyre_cli-0.4.51}/tests/detectors/threat/test_code_security_detector.py +0 -0
- {classifyre_cli-0.4.50 → classifyre_cli-0.4.51}/tests/detectors/threat/test_yara_detector.py +0 -0
- {classifyre_cli-0.4.50 → classifyre_cli-0.4.51}/tests/integration/test_wordpress_broken_links_detector.py +0 -0
- {classifyre_cli-0.4.50 → classifyre_cli-0.4.51}/tests/integration/test_wordpress_links_assets.py +0 -0
- {classifyre_cli-0.4.50 → classifyre_cli-0.4.51}/tests/pipeline/test_detector_pipeline.py +0 -0
- {classifyre_cli-0.4.50 → classifyre_cli-0.4.51}/tests/pipeline/test_worker_pool.py +0 -0
- {classifyre_cli-0.4.50 → classifyre_cli-0.4.51}/tests/test_assets_metadata_catalog.py +0 -0
- {classifyre_cli-0.4.50 → classifyre_cli-0.4.51}/tests/test_azure_blob_storage_source.py +0 -0
- {classifyre_cli-0.4.50 → classifyre_cli-0.4.51}/tests/test_base_source_attachment.py +0 -0
- {classifyre_cli-0.4.50 → classifyre_cli-0.4.51}/tests/test_base_source_sampling.py +0 -0
- {classifyre_cli-0.4.50 → classifyre_cli-0.4.51}/tests/test_config.py +0 -0
- {classifyre_cli-0.4.50 → classifyre_cli-0.4.51}/tests/test_confluence_source.py +0 -0
- {classifyre_cli-0.4.50 → classifyre_cli-0.4.51}/tests/test_custom_extractor.py +0 -0
- {classifyre_cli-0.4.50 → classifyre_cli-0.4.51}/tests/test_databricks_source.py +0 -0
- {classifyre_cli-0.4.50 → classifyre_cli-0.4.51}/tests/test_delta_lake_source.py +0 -0
- {classifyre_cli-0.4.50 → classifyre_cli-0.4.51}/tests/test_dependency_groups.py +0 -0
- {classifyre_cli-0.4.50 → classifyre_cli-0.4.51}/tests/test_elasticsearch_source.py +0 -0
- {classifyre_cli-0.4.50 → classifyre_cli-0.4.51}/tests/test_email_source.py +0 -0
- {classifyre_cli-0.4.50 → classifyre_cli-0.4.51}/tests/test_google_cloud_storage_source.py +0 -0
- {classifyre_cli-0.4.50 → classifyre_cli-0.4.51}/tests/test_hashing.py +0 -0
- {classifyre_cli-0.4.50 → classifyre_cli-0.4.51}/tests/test_hive_source.py +0 -0
- {classifyre_cli-0.4.50 → classifyre_cli-0.4.51}/tests/test_iceberg_source.py +0 -0
- {classifyre_cli-0.4.50 → classifyre_cli-0.4.51}/tests/test_jira_source.py +0 -0
- {classifyre_cli-0.4.50 → classifyre_cli-0.4.51}/tests/test_kafka_source.py +0 -0
- {classifyre_cli-0.4.50 → classifyre_cli-0.4.51}/tests/test_local_folder_source.py +0 -0
- {classifyre_cli-0.4.50 → classifyre_cli-0.4.51}/tests/test_meilisearch_source.py +0 -0
- {classifyre_cli-0.4.50 → classifyre_cli-0.4.51}/tests/test_mongodb_source.py +0 -0
- {classifyre_cli-0.4.50 → classifyre_cli-0.4.51}/tests/test_mssql_source.py +0 -0
- {classifyre_cli-0.4.50 → classifyre_cli-0.4.51}/tests/test_mysql_source.py +0 -0
- {classifyre_cli-0.4.50 → classifyre_cli-0.4.51}/tests/test_neo4j_source.py +0 -0
- {classifyre_cli-0.4.50 → classifyre_cli-0.4.51}/tests/test_notion_source.py +0 -0
- {classifyre_cli-0.4.50 → classifyre_cli-0.4.51}/tests/test_opensearch_source.py +0 -0
- {classifyre_cli-0.4.50 → classifyre_cli-0.4.51}/tests/test_oracle_source.py +0 -0
- {classifyre_cli-0.4.50 → classifyre_cli-0.4.51}/tests/test_outputs.py +0 -0
- {classifyre_cli-0.4.50 → classifyre_cli-0.4.51}/tests/test_postgresql_source.py +0 -0
- {classifyre_cli-0.4.50 → classifyre_cli-0.4.51}/tests/test_powerbi_source.py +0 -0
- {classifyre_cli-0.4.50 → classifyre_cli-0.4.51}/tests/test_recipe_normalizer.py +0 -0
- {classifyre_cli-0.4.50 → classifyre_cli-0.4.51}/tests/test_s3_compatible_storage_source.py +0 -0
- {classifyre_cli-0.4.50 → classifyre_cli-0.4.51}/tests/test_sampling_automatic.py +0 -0
- {classifyre_cli-0.4.50 → classifyre_cli-0.4.51}/tests/test_sandbox_runner.py +0 -0
- {classifyre_cli-0.4.50 → classifyre_cli-0.4.51}/tests/test_servicedesk_source.py +0 -0
- {classifyre_cli-0.4.50 → classifyre_cli-0.4.51}/tests/test_slack_source.py +0 -0
- {classifyre_cli-0.4.50 → classifyre_cli-0.4.51}/tests/test_snowflake_source.py +0 -0
- {classifyre_cli-0.4.50 → classifyre_cli-0.4.51}/tests/test_source_dependency_groups.py +0 -0
- {classifyre_cli-0.4.50 → classifyre_cli-0.4.51}/tests/test_source_strategy_conformance.py +0 -0
- {classifyre_cli-0.4.50 → classifyre_cli-0.4.51}/tests/test_sqlite_source.py +0 -0
- {classifyre_cli-0.4.50 → classifyre_cli-0.4.51}/tests/test_tableau_source.py +0 -0
- {classifyre_cli-0.4.50 → classifyre_cli-0.4.51}/tests/test_tabular_automatic_sampling.py +0 -0
- {classifyre_cli-0.4.50 → classifyre_cli-0.4.51}/tests/test_tabular_utils.py +0 -0
- {classifyre_cli-0.4.50 → classifyre_cli-0.4.51}/tests/test_uv_sync.py +0 -0
- {classifyre_cli-0.4.50 → classifyre_cli-0.4.51}/tests/test_wordpress_source.py +0 -0
- {classifyre_cli-0.4.50 → classifyre_cli-0.4.51}/tests/test_youtube_source.py +0 -0
- {classifyre_cli-0.4.50 → classifyre_cli-0.4.51}/tests/test_youtube_source_integration.py +0 -0
- {classifyre_cli-0.4.50 → classifyre_cli-0.4.51}/tests/utils/test_content_extraction.py +0 -0
- {classifyre_cli-0.4.50 → classifyre_cli-0.4.51}/tests/utils/test_embedded_images.py +0 -0
- {classifyre_cli-0.4.50 → classifyre_cli-0.4.51}/tests/utils/test_file_metadata.py +0 -0
- {classifyre_cli-0.4.50 → classifyre_cli-0.4.51}/tests/utils/test_file_parser.py +0 -0
- {classifyre_cli-0.4.50 → classifyre_cli-0.4.51}/tests/utils/test_file_to_images.py +0 -0
- {classifyre_cli-0.4.50 → classifyre_cli-0.4.51}/tests/utils/test_transcription.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[project]
|
|
2
2
|
name = "classifyre-cli"
|
|
3
|
-
version = "0.4.
|
|
3
|
+
version = "0.4.51"
|
|
4
4
|
description = "Classifyre CLI — scan and classify unstructured data sources"
|
|
5
5
|
readme = "README.md"
|
|
6
6
|
requires-python = ">=3.12"
|
|
@@ -197,6 +197,14 @@ azure-blob-storage = [
|
|
|
197
197
|
"azure-storage-blob>=12.29.0,<13.0.0",
|
|
198
198
|
"azure-identity>=1.25.3,<2.0.0",
|
|
199
199
|
]
|
|
200
|
+
microsoft-graph = [
|
|
201
|
+
"msgraph-sdk>=1.0.0,<2.0.0",
|
|
202
|
+
"azure-identity>=1.25.3,<2.0.0",
|
|
203
|
+
]
|
|
204
|
+
google-workspace = [
|
|
205
|
+
"google-api-python-client>=2.150,<3.0",
|
|
206
|
+
"google-auth>=2.40,<3.0",
|
|
207
|
+
]
|
|
200
208
|
google-cloud-storage = [
|
|
201
209
|
"google-cloud-storage>=3.10.1,<4.0.0",
|
|
202
210
|
]
|
|
@@ -52,6 +52,8 @@ class AssetType(StrEnum):
|
|
|
52
52
|
OPENSEARCH = 'OPENSEARCH'
|
|
53
53
|
MEILISEARCH = 'MEILISEARCH'
|
|
54
54
|
LOCAL_FOLDER = 'LOCAL_FOLDER'
|
|
55
|
+
MICROSOFT_365 = 'MICROSOFT_365'
|
|
56
|
+
GOOGLE_WORKSPACE = 'GOOGLE_WORKSPACE'
|
|
55
57
|
|
|
56
58
|
|
|
57
59
|
class DetectorType(StrEnum):
|
|
@@ -357,6 +359,8 @@ class Type(StrEnum):
|
|
|
357
359
|
OPENSEARCH = 'OPENSEARCH'
|
|
358
360
|
MEILISEARCH = 'MEILISEARCH'
|
|
359
361
|
LOCAL_FOLDER = 'LOCAL_FOLDER'
|
|
362
|
+
MICROSOFT_365 = 'MICROSOFT_365'
|
|
363
|
+
GOOGLE_WORKSPACE = 'GOOGLE_WORKSPACE'
|
|
360
364
|
|
|
361
365
|
|
|
362
366
|
class YouTubeRequired(BaseModel):
|
|
@@ -2947,6 +2951,8 @@ class Type20(StrEnum):
|
|
|
2947
2951
|
OPENSEARCH = 'OPENSEARCH'
|
|
2948
2952
|
MEILISEARCH = 'MEILISEARCH'
|
|
2949
2953
|
LOCAL_FOLDER = 'LOCAL_FOLDER'
|
|
2954
|
+
MICROSOFT_365 = 'MICROSOFT_365'
|
|
2955
|
+
GOOGLE_WORKSPACE = 'GOOGLE_WORKSPACE'
|
|
2950
2956
|
|
|
2951
2957
|
|
|
2952
2958
|
class ConfluenceInput(CoreInput):
|
|
@@ -3687,6 +3693,328 @@ class IcebergOptionalScope(BaseModel):
|
|
|
3687
3693
|
)
|
|
3688
3694
|
|
|
3689
3695
|
|
|
3696
|
+
class Microsoft365Ecosystem(StrEnum):
|
|
3697
|
+
"""
|
|
3698
|
+
Microsoft 365 ecosystem to scan
|
|
3699
|
+
"""
|
|
3700
|
+
|
|
3701
|
+
sharepoint_sites = 'sharepoint_sites'
|
|
3702
|
+
onedrive = 'onedrive'
|
|
3703
|
+
teams_files = 'teams_files'
|
|
3704
|
+
|
|
3705
|
+
|
|
3706
|
+
class Microsoft365RequiredClientSecret(BaseModel):
|
|
3707
|
+
model_config = ConfigDict(
|
|
3708
|
+
extra='forbid',
|
|
3709
|
+
)
|
|
3710
|
+
auth_mode: Literal['CLIENT_SECRET']
|
|
3711
|
+
tenant_id: str = Field(..., description='Azure AD tenant ID (directory ID)')
|
|
3712
|
+
client_id: str = Field(..., description='Azure AD application (client) ID')
|
|
3713
|
+
|
|
3714
|
+
|
|
3715
|
+
class Microsoft365RequiredCertificate(BaseModel):
|
|
3716
|
+
model_config = ConfigDict(
|
|
3717
|
+
extra='forbid',
|
|
3718
|
+
)
|
|
3719
|
+
auth_mode: Literal['CERTIFICATE']
|
|
3720
|
+
tenant_id: str = Field(..., description='Azure AD tenant ID (directory ID)')
|
|
3721
|
+
client_id: str = Field(..., description='Azure AD application (client) ID')
|
|
3722
|
+
|
|
3723
|
+
|
|
3724
|
+
class Microsoft365RequiredManagedIdentity(BaseModel):
|
|
3725
|
+
model_config = ConfigDict(
|
|
3726
|
+
extra='forbid',
|
|
3727
|
+
)
|
|
3728
|
+
auth_mode: Literal['MANAGED_IDENTITY']
|
|
3729
|
+
client_id: str | None = Field(
|
|
3730
|
+
None,
|
|
3731
|
+
description='User-assigned managed identity client ID (omit for system-assigned)',
|
|
3732
|
+
)
|
|
3733
|
+
|
|
3734
|
+
|
|
3735
|
+
class Microsoft365MaskedClientSecret(BaseModel):
|
|
3736
|
+
model_config = ConfigDict(
|
|
3737
|
+
extra='forbid',
|
|
3738
|
+
)
|
|
3739
|
+
client_secret: str = Field(..., description='Azure AD application client secret')
|
|
3740
|
+
|
|
3741
|
+
|
|
3742
|
+
class Microsoft365MaskedCertificate(BaseModel):
|
|
3743
|
+
model_config = ConfigDict(
|
|
3744
|
+
extra='forbid',
|
|
3745
|
+
)
|
|
3746
|
+
certificate_pem: str = Field(
|
|
3747
|
+
..., description='PEM-encoded certificate (private key + cert chain)'
|
|
3748
|
+
)
|
|
3749
|
+
certificate_password: str | None = Field(
|
|
3750
|
+
None, description='Passphrase for encrypted PEM private key (optional)'
|
|
3751
|
+
)
|
|
3752
|
+
|
|
3753
|
+
|
|
3754
|
+
class Microsoft365MaskedManagedIdentity(BaseModel):
|
|
3755
|
+
model_config = ConfigDict(
|
|
3756
|
+
extra='forbid',
|
|
3757
|
+
)
|
|
3758
|
+
|
|
3759
|
+
|
|
3760
|
+
class Microsoft365OptionalScope(BaseModel):
|
|
3761
|
+
"""
|
|
3762
|
+
Ecosystem selection and content filtering.
|
|
3763
|
+
"""
|
|
3764
|
+
|
|
3765
|
+
model_config = ConfigDict(
|
|
3766
|
+
extra='forbid',
|
|
3767
|
+
)
|
|
3768
|
+
ecosystems: list[Microsoft365Ecosystem] | None = Field(
|
|
3769
|
+
['sharepoint_sites'],
|
|
3770
|
+
description='Microsoft 365 ecosystems to scan (select one or more)',
|
|
3771
|
+
)
|
|
3772
|
+
site_filter: list[str] | None = Field(
|
|
3773
|
+
None,
|
|
3774
|
+
description='SharePoint site hostnames or paths to include (empty = all accessible)',
|
|
3775
|
+
)
|
|
3776
|
+
drive_filter: list[str] | None = Field(
|
|
3777
|
+
None, description='Drive names or IDs to include (empty = all)'
|
|
3778
|
+
)
|
|
3779
|
+
path_prefix: str | None = Field(
|
|
3780
|
+
None,
|
|
3781
|
+
description='Only scan items under this folder path (e.g. /Documents/Legal)',
|
|
3782
|
+
)
|
|
3783
|
+
include_extensions: list[str] | None = Field(
|
|
3784
|
+
None, description='Only include files with these extensions (e.g. .pdf, .docx)'
|
|
3785
|
+
)
|
|
3786
|
+
exclude_extensions: list[str] | None = Field(
|
|
3787
|
+
None, description='Skip files with these extensions'
|
|
3788
|
+
)
|
|
3789
|
+
max_object_bytes: int | None = Field(
|
|
3790
|
+
104857600,
|
|
3791
|
+
description='Skip files larger than this many bytes (default 100 MB)',
|
|
3792
|
+
ge=0,
|
|
3793
|
+
)
|
|
3794
|
+
|
|
3795
|
+
|
|
3796
|
+
class Microsoft365OptionalConnection(BaseModel):
|
|
3797
|
+
"""
|
|
3798
|
+
Network and throttle controls for Graph API requests.
|
|
3799
|
+
"""
|
|
3800
|
+
|
|
3801
|
+
model_config = ConfigDict(
|
|
3802
|
+
extra='forbid',
|
|
3803
|
+
)
|
|
3804
|
+
request_timeout_seconds: int | None = Field(
|
|
3805
|
+
30, description='Socket timeout for Graph API operations', ge=5, le=300
|
|
3806
|
+
)
|
|
3807
|
+
max_retries: int | None = Field(
|
|
3808
|
+
3,
|
|
3809
|
+
description='Maximum retries on transient errors and 429 throttling',
|
|
3810
|
+
ge=0,
|
|
3811
|
+
le=10,
|
|
3812
|
+
)
|
|
3813
|
+
rate_limit_delay_seconds: float | None = Field(
|
|
3814
|
+
1.0,
|
|
3815
|
+
description='Base delay between requests when throttled (exponential backoff applied)',
|
|
3816
|
+
ge=0.0,
|
|
3817
|
+
)
|
|
3818
|
+
page_size: int | None = Field(
|
|
3819
|
+
200, description='Items per page for Graph API list requests', ge=1, le=999
|
|
3820
|
+
)
|
|
3821
|
+
|
|
3822
|
+
|
|
3823
|
+
class Microsoft365OptionalExtraction(BaseModel):
|
|
3824
|
+
"""
|
|
3825
|
+
Controls which structural assets to emit beyond files.
|
|
3826
|
+
"""
|
|
3827
|
+
|
|
3828
|
+
model_config = ConfigDict(
|
|
3829
|
+
extra='forbid',
|
|
3830
|
+
)
|
|
3831
|
+
include_permissions: bool | None = Field(
|
|
3832
|
+
False,
|
|
3833
|
+
description='Include file/site permission metadata (requires Sites.FullControl.All)',
|
|
3834
|
+
)
|
|
3835
|
+
include_site_metadata: bool | None = Field(
|
|
3836
|
+
True, description='Emit site-level assets with metadata'
|
|
3837
|
+
)
|
|
3838
|
+
include_drive_metadata: bool | None = Field(
|
|
3839
|
+
True, description='Emit drive-level assets with metadata'
|
|
3840
|
+
)
|
|
3841
|
+
|
|
3842
|
+
|
|
3843
|
+
class Microsoft365Optional(BaseModel):
|
|
3844
|
+
model_config = ConfigDict(
|
|
3845
|
+
extra='forbid',
|
|
3846
|
+
)
|
|
3847
|
+
scope: Microsoft365OptionalScope | None = None
|
|
3848
|
+
connection: Microsoft365OptionalConnection | None = None
|
|
3849
|
+
extraction: Microsoft365OptionalExtraction | None = None
|
|
3850
|
+
|
|
3851
|
+
|
|
3852
|
+
class Microsoft365Input(CoreInput):
|
|
3853
|
+
type: Literal['MICROSOFT_365'] | None = Field(
|
|
3854
|
+
None, description='Type of the asset or source'
|
|
3855
|
+
)
|
|
3856
|
+
required: (
|
|
3857
|
+
Microsoft365RequiredClientSecret
|
|
3858
|
+
| Microsoft365RequiredCertificate
|
|
3859
|
+
| Microsoft365RequiredManagedIdentity
|
|
3860
|
+
) = Field(..., title='Microsoft365Required')
|
|
3861
|
+
masked: (
|
|
3862
|
+
Microsoft365MaskedClientSecret
|
|
3863
|
+
| Microsoft365MaskedCertificate
|
|
3864
|
+
| Microsoft365MaskedManagedIdentity
|
|
3865
|
+
) = Field(..., title='Microsoft365Masked')
|
|
3866
|
+
optional: Microsoft365Optional | None = None
|
|
3867
|
+
detectors: list[Detector] | None = Field(
|
|
3868
|
+
None, description='Detectors to run on ingested content'
|
|
3869
|
+
)
|
|
3870
|
+
custom_detectors: list[CustomDetectorSelection] | None = Field(
|
|
3871
|
+
None,
|
|
3872
|
+
description='Reusable custom detector IDs selected from the custom detector catalog.',
|
|
3873
|
+
)
|
|
3874
|
+
sampling: SamplingConfig
|
|
3875
|
+
resources: ResourceOverrides | None = None
|
|
3876
|
+
|
|
3877
|
+
|
|
3878
|
+
class GoogleWorkspaceRequiredServiceAccount(BaseModel):
|
|
3879
|
+
model_config = ConfigDict(
|
|
3880
|
+
extra='forbid',
|
|
3881
|
+
)
|
|
3882
|
+
auth_method: Literal['service_account']
|
|
3883
|
+
delegated_subject: str | None = Field(
|
|
3884
|
+
None,
|
|
3885
|
+
description='User email to impersonate via domain-wide delegation (optional)',
|
|
3886
|
+
)
|
|
3887
|
+
|
|
3888
|
+
|
|
3889
|
+
class GoogleWorkspaceRequiredOAuth(BaseModel):
|
|
3890
|
+
model_config = ConfigDict(
|
|
3891
|
+
extra='forbid',
|
|
3892
|
+
)
|
|
3893
|
+
auth_method: Literal['oauth']
|
|
3894
|
+
client_id: str = Field(..., description='OAuth 2.0 client ID')
|
|
3895
|
+
|
|
3896
|
+
|
|
3897
|
+
class GoogleWorkspaceMaskedServiceAccount(BaseModel):
|
|
3898
|
+
model_config = ConfigDict(
|
|
3899
|
+
extra='forbid',
|
|
3900
|
+
)
|
|
3901
|
+
service_account_json: str = Field(
|
|
3902
|
+
..., description='Full JSON key for the Google service account'
|
|
3903
|
+
)
|
|
3904
|
+
|
|
3905
|
+
|
|
3906
|
+
class GoogleWorkspaceMaskedOAuth(BaseModel):
|
|
3907
|
+
model_config = ConfigDict(
|
|
3908
|
+
extra='forbid',
|
|
3909
|
+
)
|
|
3910
|
+
client_secret: str = Field(..., description='OAuth 2.0 client secret')
|
|
3911
|
+
refresh_token: str = Field(..., description='OAuth 2.0 refresh token')
|
|
3912
|
+
|
|
3913
|
+
|
|
3914
|
+
class GoogleWorkspaceOptionalScope(BaseModel):
|
|
3915
|
+
"""
|
|
3916
|
+
Drive/folder selection and content filtering.
|
|
3917
|
+
"""
|
|
3918
|
+
|
|
3919
|
+
model_config = ConfigDict(
|
|
3920
|
+
extra='forbid',
|
|
3921
|
+
)
|
|
3922
|
+
drive_ids: list[str] | None = Field(
|
|
3923
|
+
None,
|
|
3924
|
+
description='Shared drive IDs to scan (empty = all accessible shared drives)',
|
|
3925
|
+
)
|
|
3926
|
+
folder_ids: list[str] | None = Field(
|
|
3927
|
+
None, description='Only scan these folder IDs recursively (empty = full drives)'
|
|
3928
|
+
)
|
|
3929
|
+
include_my_drive: bool | None = Field(
|
|
3930
|
+
True, description="Include the authenticated/delegated user's My Drive"
|
|
3931
|
+
)
|
|
3932
|
+
include_shared_drives: bool | None = Field(
|
|
3933
|
+
True, description='Include shared drives'
|
|
3934
|
+
)
|
|
3935
|
+
include_file_extensions: list[str] | None = Field(
|
|
3936
|
+
None, description='Only include files with these extensions (e.g. .pdf, .docx)'
|
|
3937
|
+
)
|
|
3938
|
+
exclude_file_extensions: list[str] | None = Field(
|
|
3939
|
+
None, description='Skip files with these extensions'
|
|
3940
|
+
)
|
|
3941
|
+
include_permissions: bool | None = Field(
|
|
3942
|
+
False, description='Include file sharing permission metadata'
|
|
3943
|
+
)
|
|
3944
|
+
|
|
3945
|
+
|
|
3946
|
+
class GoogleWorkspaceOptionalConnection(BaseModel):
|
|
3947
|
+
"""
|
|
3948
|
+
Network and pagination controls for Drive API requests.
|
|
3949
|
+
"""
|
|
3950
|
+
|
|
3951
|
+
model_config = ConfigDict(
|
|
3952
|
+
extra='forbid',
|
|
3953
|
+
)
|
|
3954
|
+
page_size: int | None = Field(
|
|
3955
|
+
1000, description='Items per page for Drive API list requests', ge=1, le=1000
|
|
3956
|
+
)
|
|
3957
|
+
max_object_bytes: int | None = Field(
|
|
3958
|
+
104857600,
|
|
3959
|
+
description='Skip files larger than this many bytes (default 100 MB)',
|
|
3960
|
+
ge=0,
|
|
3961
|
+
)
|
|
3962
|
+
max_retries: int | None = Field(
|
|
3963
|
+
5, description='Maximum retries on transient errors', ge=0, le=10
|
|
3964
|
+
)
|
|
3965
|
+
timeout_seconds: int | None = Field(
|
|
3966
|
+
30, description='Socket timeout for Drive API operations', ge=5, le=300
|
|
3967
|
+
)
|
|
3968
|
+
|
|
3969
|
+
|
|
3970
|
+
class GoogleWorkspaceOptionalExtraction(BaseModel):
|
|
3971
|
+
"""
|
|
3972
|
+
Controls which structural assets to emit and how Google-native files are handled.
|
|
3973
|
+
"""
|
|
3974
|
+
|
|
3975
|
+
model_config = ConfigDict(
|
|
3976
|
+
extra='forbid',
|
|
3977
|
+
)
|
|
3978
|
+
include_drive_metadata: bool | None = Field(
|
|
3979
|
+
True, description='Emit drive-level assets with metadata'
|
|
3980
|
+
)
|
|
3981
|
+
export_google_formats: bool | None = Field(
|
|
3982
|
+
True,
|
|
3983
|
+
description='Export Google-native files (Docs/Sheets/Slides) to Office formats for content extraction',
|
|
3984
|
+
)
|
|
3985
|
+
|
|
3986
|
+
|
|
3987
|
+
class GoogleWorkspaceOptional(BaseModel):
|
|
3988
|
+
model_config = ConfigDict(
|
|
3989
|
+
extra='forbid',
|
|
3990
|
+
)
|
|
3991
|
+
scope: GoogleWorkspaceOptionalScope | None = None
|
|
3992
|
+
connection: GoogleWorkspaceOptionalConnection | None = None
|
|
3993
|
+
extraction: GoogleWorkspaceOptionalExtraction | None = None
|
|
3994
|
+
|
|
3995
|
+
|
|
3996
|
+
class GoogleWorkspaceInput(CoreInput):
|
|
3997
|
+
type: Literal['GOOGLE_WORKSPACE'] | None = Field(
|
|
3998
|
+
None, description='Type of the asset or source'
|
|
3999
|
+
)
|
|
4000
|
+
required: GoogleWorkspaceRequiredServiceAccount | GoogleWorkspaceRequiredOAuth = (
|
|
4001
|
+
Field(..., title='GoogleWorkspaceRequired')
|
|
4002
|
+
)
|
|
4003
|
+
masked: GoogleWorkspaceMaskedServiceAccount | GoogleWorkspaceMaskedOAuth = Field(
|
|
4004
|
+
..., title='GoogleWorkspaceMasked'
|
|
4005
|
+
)
|
|
4006
|
+
optional: GoogleWorkspaceOptional | None = None
|
|
4007
|
+
detectors: list[Detector] | None = Field(
|
|
4008
|
+
None, description='Detectors to run on ingested content'
|
|
4009
|
+
)
|
|
4010
|
+
custom_detectors: list[CustomDetectorSelection] | None = Field(
|
|
4011
|
+
None,
|
|
4012
|
+
description='Reusable custom detector IDs selected from the custom detector catalog.',
|
|
4013
|
+
)
|
|
4014
|
+
sampling: SamplingConfig
|
|
4015
|
+
resources: ResourceOverrides | None = None
|
|
4016
|
+
|
|
4017
|
+
|
|
3690
4018
|
class YouTubeInput(CoreInput):
|
|
3691
4019
|
type: Literal['YOUTUBE'] | None = Field(
|
|
3692
4020
|
None, description='Type of the asset or source'
|
|
@@ -3789,6 +4117,8 @@ class SourceInput(
|
|
|
3789
4117
|
| ElasticsearchInput
|
|
3790
4118
|
| OpenSearchInput
|
|
3791
4119
|
| MeilisearchInput
|
|
4120
|
+
| Microsoft365Input
|
|
4121
|
+
| GoogleWorkspaceInput
|
|
3792
4122
|
]
|
|
3793
4123
|
):
|
|
3794
4124
|
root: (
|
|
@@ -3822,6 +4152,8 @@ class SourceInput(
|
|
|
3822
4152
|
| ElasticsearchInput
|
|
3823
4153
|
| OpenSearchInput
|
|
3824
4154
|
| MeilisearchInput
|
|
4155
|
+
| Microsoft365Input
|
|
4156
|
+
| GoogleWorkspaceInput
|
|
3825
4157
|
) = Field(
|
|
3826
4158
|
...,
|
|
3827
4159
|
description='Merged configuration schema with all source types and common definitions',
|