Repository navigation
SK-3075: add Detect V2 to flowvault and skyvault SDKs - #286
saileshwar-skyflow merged 20 commits into
Conversation
Implement Detect V2 (deidentify_string, deidentify_file, get_run, reidentify_string, reidentify_file, check_guardrails) in the shared `common` package and re-export it from both flowvault and skyvault. common: - detect models, controller, request/response mappers, run polling, file-output writer, and validations under common/vault/detect - V2 detect enums under common/utils/enums/detect.py; V2 detect messages in common SkyflowMessages - behaviour ported from the Java flowvault SDK @ flowvault-release/26.10.1 (exponential poll backoff 1..32, submit-only status None, minimal client-side validation, auto-write of processed files) flowvault: - wire DetectController via make_skyflow_class(detect_cls=...) - build the common detect REST client on VaultClient and expose get_strings_v2_api / get_files_v2_api / get_guardrails_v2_api - re-export skyflow.vault.detect and the V2 enums - detect_api samples, README section, and unit tests skyvault: - replace the removed V1 detect API with V2 (same method/class names) - migrate the hand-written layer to the regenerated client (drop V1 prefix, Skyflow -> SkyflowAuth) and update tests Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
…lines - common/skyvault generated rest version.py: guard metadata.version() with try/except PackageNotFoundError (matches flowvault), so importing the package never fails when the distribution metadata is absent. - Refresh flowvault/skyvault public-API contract baselines for the Detect V2 surface (flowvault adds the V2 enums; skyvault replaces V1 detect with V2). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Public API contract change (
|
Public API contract change (
|
The common package CI runs tests with `python -m unittest` (no pytest installed), so rewrite common/tests/vault/detect/test_detect.py as a unittest.TestCase (self.assertRaises, tempfile instead of the pytest tmp_path fixture). Runs green under both unittest and pytest. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Promptless documentation updates
|
…e and ReidentifySourceType
Mirror the Java Detect V2 contract change: the single DataSourceType enum is split
into DeidentifySourceType (deidentify_file data_source and the output_type of
DeidentifyFileResponse / GetRunResponse) and ReidentifySourceType (reidentify_file
data_source and ReidentifyFileResponse output_type).
Like Java, the two source enums are defined per SDK rather than in common:
- skyvault DeidentifySourceType: BASE64, SKYFLOW_ID, PRESIGNED_URL
- flowvault DeidentifySourceType: BASE64, PRESIGNED_URL (no skyflow id)
- ReidentifySourceType: BASE64, PRESIGNED_URL in both (re-identification never
accepts a skyflow id)
common stays SDK-agnostic: the controller/mappers resolve the response output_type
through the per-SDK VaultClient (get_deidentify_source_type / get_reidentify_source_type),
and the file-output writer compares the output type by value. Updates both SDK enum
re-exports, the reidentify_file sample, and the unit/re-export tests.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
"# DetectController — Detect V2" produced an awkward anchor (#detectcontroller--detect-v2) and didn't match the cross-SDK convention; the Go flowvault README uses "Detect". Renamed to "# Detect" (anchor #detect); the section intro already states it is Detect V2 and how to get the controller. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
* SK-3076 add v1-deprecation warning * SK-3076 fix ci-check
The 865a4f5 regeneration renamed generated REST client methods but the consuming code was not fully updated, breaking bearer-token auth (every e2e failed with "Failed to generate bearer token") and the skyvault data-plane: - common/service_account/_utils.py: call get_bearer_token() (renamed from authentication_service_get_auth_token). - common/utils/_skyflow_messages.py: resolve the host SDK version via an importlib.metadata fallback so messages/metrics report the real version instead of 0.0.0. - skyvault/skyflow/service_account/__init__.py: re-export from common.service_account (skyvault's generated authentication client was removed by the regen), matching flowvault. - skyvault/skyflow/vault/controller/_vault.py: rewire record/token/query calls to the new generated method names; move file upload to the files client (upload_file_v2). - skyvault/skyflow/vault/client/client.py: add get_files_api(). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
…entifySourceType split The detect DataSourceType enum was split into per-SDK DeidentifySourceType and ReidentifySourceType, but the committed griffe baselines were not regenerated, so Contract Tests failed on public API drift. Regenerate both skyvault and flowvault baselines to record the intended enum change. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
…d-detect-v2-skyvault-flowvault
…d common auth Mirror the controller/auth migration in the unit tests so they exercise the methods the code now calls: - test__vault.py: rename the mocked generated methods to the new names (batch_operation/insert_records/update_record/delete_records/get_records/ execute_query/detokenize/tokenize), point file-upload at the files client (get_files_api + upload_file_v2), and drop byot from the batch_operation expectation (batch_operation no longer takes it; BYOT rides on per-record tokens). - service_account/test__utils.py and utils/test__utils.py: the public skyflow.service_account now routes through common, so patch common.service_account._utils.* and assert get_bearer_token on the mocked auth client instead of the removed authentication_service_get_auth_token. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Mirror skyflow-java's SK-3175 change. RedactionLevel was one common class carrying all four wire fields for every vault type. Replace it with an abstract RedactionRule base in common (exposing the four wire accessors) and a per-SDK RedactionLevel: - skyvault RedactionLevel carries entity_name + redaction_type - flowvault RedactionLevel carries token_group_name + redaction_pattern The reidentify mapper reads the wire fields through the rule's accessors, so each vault type only sends the fields its API supports. Refreshed the skyvault API contract baseline for the new class. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
common.vault.detect no longer exports a concrete RedactionLevel (it exports the RedactionRule base), so the reidentify mapping test uses a small concrete RedactionRule double instead of importing RedactionLevel. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
The skyvault sdist omitted common/, so rebuilding a wheel from it (the release smoke test) failed looking for a sibling common/ that only exists in the repo checkout. Mirror flowvault: vendor common/ into the sdist via a CustomSdist command plus graft common, and fall back to the vendored copy when the sibling checkout is absent, so sdist-to-wheel builds and installs cleanly. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
UploadFileRequestV2.file now carries format:binary in the spec, so the
regenerated upload_file_v2 sends file as a multipart part
(files={"file": file}) instead of a string form field, fixing the 500
"Expected primitive type, got <class 'list'>" from data-plane file upload.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
The files-client regen also rewrote generated/rest/version.py to look up
metadata.version("skyflow.generated.rest"), a distribution that is never
installed (the module ships inside the "skyflow" dist), so it raised
PackageNotFoundError. unittest discover enumerates the package __all__
(which includes __version__), tripping the lazy import and failing
test/run-tests. Restore the metadata.version("skyflow") lookup with the
0.0.0 fallback. Durable fix belongs in the fern generator config.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
No code change (empty commit). The previous push updated the PR head and the release branch to the same SHA in one step, so GitHub created only the push-triggered release run and never fired the pull_request PR CI. This empty commit fires pull_request:synchronize so test/run-tests re-runs on the restored version.py. The published 2.1.3.dev0+deaa724 wheel is built from the identical code and stays valid. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Mirrors the Java migration doc as a repo reference: method and class mapping, request field mapping, per-method V1/V2 examples, file behaviour differences, and a migration checklist. Confirmed against the V2 detect implementation and the V1 API on main. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
…ples Rewrite the skyvault README Detect section from the removed V1 API to V2 (method table, configuration contract, Detect configuration reference, file run status and output handling) and replace the V1 detect samples with V2 equivalents. Mirror the same V2 Detect structure into the flowvault README with flowvault semantics (token-group destination, token_group_name / redaction_pattern) and enhance the flowvault samples to cover inline configuration, submit-only / poll / presigned, and the failure branches. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
…ult API contract Cross-SDK parity review flagged four Detect V2 gaps in the Python flowvault path versus the Java reference. All fixes live in shared common/ code and so apply to both vaults. - deidentify_file source rule now counts exactly one of file_path, file, value; a missing source and multiple sources raise distinct errors (adds the missing-source message). - Shared deidentify/reidentify-file validation messages are vault-neutral and no longer name SKYFLOW_ID, which flowvault does not offer. - With neither configuration_id nor configuration set, a configuration carrying only the vault id is sent, matching the Java behaviour. - processed_file_extension resolves case-insensitively. Also add skyflow.vault.detect to the flowvault public API contract and regenerate both api-report baselines; skyvault is unchanged, flowvault gains the detect surface. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
…ustomType The generated wire types already carry these fields; surface them on the public Detect config so callers can control VAULT_TOKEN tokenization, matching the Java design doc. - Add the IncludePrefix enum (YES / NO) and re-export it from both vaults' skyflow.utils.enums. - Entity gains include_prefix and prefix_override. - CustomType gains deidentification_type, destination, include_prefix and prefix_override. - The request mapper sends all of them when set; omitted fields fall through to the server defaults. - Regenerate both api-report baselines (the new public surface is the IncludePrefix enum; Entity / CustomType are re-export aliases). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
There was a problem hiding this comment.
🟡 Changes recommended
The polling timeout counts only sleep durations, ignoring fetch latency and retries, so slow requests can trigger further polling beyond the configured deadline.
1 open issue
What changed in this PR
Adds shared Detect V2 support to flowvault and skyvault, enabling six detection operations and replacing skyvault’s legacy Detect API.
Changes:
- Adds shared Detect models, polling, validation, and local-file output handling.
- Integrates both SDKs with updated exports, enums, authentication, and generated REST clients.
- Updates samples, tests, documentation, packaging, API-contract checks, and CI runners.
This pull request requires changes. The unresolved moderate issue in common/vault/detect/_polling.py:50 (3 votes) allows polling to exceed wait_time because the budget excludes fetch latency and retries. Use a monotonic clock and check the remaining budget after each fetch and sleep to prevent further polling beyond the deadline.
| File | Description |
|---|---|
skyvault/tests/vault/detect/test_reexports.py |
Tests Detect exports and accessor availability. |
skyvault/tests/service_account/test__utils.py |
Updates shared-function mock targets. |
skyvault/skyflow/vault/detect/_transformations.py |
Removes legacy transformation wrapper. |
skyvault/skyflow/vault/detect/_token_format.py |
Removes legacy token-format model. |
skyvault/skyflow/vault/detect/_text_index.py |
Removes legacy text-index model. |
skyvault/skyflow/vault/detect/_reidentify_text_response.py |
Removes legacy text response. |
skyvault/skyflow/vault/detect/_reidentify_text_request.py |
Removes legacy text request. |
skyvault/skyflow/vault/detect/_redaction_level.py |
Adds entity-based redaction rules. |
skyvault/skyflow/vault/detect/_get_detect_run_request.py |
Removes legacy run request. |
skyvault/skyflow/vault/detect/_file.py |
Removes legacy file wrapper. |
skyvault/skyflow/vault/detect/_file_input.py |
Removes legacy file-input wrapper. |
skyvault/skyflow/vault/detect/_entity_info.py |
Removes legacy entity model. |
skyvault/skyflow/vault/detect/_deidentify_text_response.py |
Removes legacy text response. |
skyvault/skyflow/vault/detect/_deidentify_text_request.py |
Removes legacy text request. |
skyvault/skyflow/vault/detect/_deidentify_file_response.py |
Removes legacy file response. |
skyvault/skyflow/vault/detect/_deidentify_file_request.py |
Removes legacy file request. |
skyvault/skyflow/vault/detect/_date_transformation.py |
Removes legacy date transformation. |
skyvault/skyflow/vault/detect/_audio_bleep.py |
Removes legacy audio configuration. |
skyvault/skyflow/vault/detect/__init__.py |
Re-exports shared Detect V2 models. |
skyvault/skyflow/vault/controller/__init__.py |
Removes legacy Detect controller export. |
skyvault/skyflow/vault/client/client.py |
Initializes shared Detect REST resources. |
skyvault/skyflow/utils/validations/__init__.py |
Removes legacy Detect validation exports. |
skyvault/skyflow/utils/enums/_reidentify_source_type.py |
Adds reidentification source enum. |
skyvault/skyflow/utils/enums/_deidentify_source_type.py |
Adds deidentification source enum. |
skyvault/skyflow/utils/enums/__init__.py |
Exposes Detect V2 enums. |
skyvault/skyflow/utils/__init__.py |
Removes legacy Detect parser exports. |
skyvault/skyflow/service_account/client/auth_client.py |
Uses renamed generated authentication client. |
skyvault/skyflow/service_account/__init__.py |
Re-exports shared authentication helpers. |
skyvault/skyflow/generated/rest/version.py |
Handles missing distribution metadata. |
skyvault/skyflow/generated/rest/types/word_character_count.py |
Removes legacy count model. |
skyvault/skyflow/generated/rest/types/v_1_vault_schema_config.py |
Removes legacy vault-schema type. |
skyvault/skyflow/generated/rest/types/v_1_vault_field_mapping.py |
Removes legacy field-mapping type. |
skyvault/skyflow/generated/rest/types/v_1_tokenize_record_request.py |
Removes prefixed tokenization request. |
skyvault/skyflow/generated/rest/types/v_1_member_type.py |
Removes legacy member enum. |
skyvault/skyflow/generated/rest/types/v_1_insert_record_response.py |
Removes prefixed insert response. |
skyvault/skyflow/generated/rest/types/v_1_get_file_scan_status_response.py |
Removes legacy scan response. |
skyvault/skyflow/generated/rest/types/v_1_file_av_scan_status.py |
Removes legacy scan-status enum. |
skyvault/skyflow/generated/rest/types/v_1_delete_file_response.py |
Removes legacy file-deletion response. |
skyvault/skyflow/generated/rest/types/v_1_card.py |
Removes legacy card model. |
skyvault/skyflow/generated/rest/types/v_1_byot.py |
Removes legacy BYOT enum. |
skyvault/skyflow/generated/rest/types/v_1_bin_list_response.py |
Removes legacy BIN response. |
skyvault/skyflow/generated/rest/types/v_1_audit_response.py |
Removes legacy audit response. |
skyvault/skyflow/generated/rest/types/v_1_audit_response_event.py |
Removes legacy audit-event model. |
skyvault/skyflow/generated/rest/types/v_1_audit_event_response.py |
Removes legacy audit response details. |
skyvault/skyflow/generated/rest/types/v_1_audit_after_options.py |
Removes legacy audit pagination model. |
skyvault/skyflow/generated/rest/types/upload_file_response_v2.py |
Adds upload response with file metadata. |
skyvault/skyflow/generated/rest/types/update_record_response.py |
Renames update response. |
skyvault/skyflow/generated/rest/types/tokenize_response.py |
Renames response; requires records. |
skyvault/skyflow/generated/rest/types/tokenize_record_response.py |
Renames response; requires token. |
skyvault/skyflow/generated/rest/types/tokenize_record_request.py |
Adds table/column tokenization fields. |
skyvault/skyflow/generated/rest/types/token_type_mapping.py |
Removes legacy token mapping. |
skyvault/skyflow/generated/rest/types/token_type_mapping_vault_token_item.py |
Removes legacy vault-token entity enum. |
skyvault/skyflow/generated/rest/types/token_type_mapping_entity_unq_counter_item.py |
Removes legacy counter-token entity enum. |
skyvault/skyflow/generated/rest/types/token_type_mapping_entity_only_item.py |
Removes legacy entity-token enum. |
skyvault/skyflow/generated/rest/types/token_type_mapping_default.py |
Removes legacy default token enum. |
skyvault/skyflow/generated/rest/types/shift_dates.py |
Removes legacy date-shifting model. |
skyvault/skyflow/generated/rest/types/shift_dates_entity_types_item.py |
Removes legacy date-entity enum. |
skyvault/skyflow/generated/rest/types/request_action_type.py |
Removes legacy action enum. |
skyvault/skyflow/generated/rest/types/reidentify_file_response.py |
Removes legacy file response. |
skyvault/skyflow/generated/rest/types/reidentify_file_response_status.py |
Removes legacy status enum. |
skyvault/skyflow/generated/rest/types/reidentify_file_response_output_type.py |
Removes legacy output enum. |
skyvault/skyflow/generated/rest/types/reidentified_file_output.py |
Removes legacy output model. |
skyvault/skyflow/generated/rest/types/redaction_enum_redaction.py |
Removes legacy redaction enum. |
skyvault/skyflow/generated/rest/types/record_meta_properties.py |
Renames record metadata type. |
skyvault/skyflow/generated/rest/types/protobuf_any.py |
Removes legacy protobuf wrapper. |
skyvault/skyflow/generated/rest/types/locations.py |
Removes legacy entity-location model. |
skyvault/skyflow/generated/rest/types/insert_record_response.py |
Defines regenerated insert response. |
skyvault/skyflow/generated/rest/types/http_code.py |
Documents HTTP status alias. |
skyvault/skyflow/generated/rest/types/googlerpc_status.py |
Removes legacy RPC-status model. |
skyvault/skyflow/generated/rest/types/get_query_response.py |
Updates query-response type references. |
skyvault/skyflow/generated/rest/types/get_field_records.py |
Adds retrieved-record file metadata. |
skyvault/skyflow/generated/rest/types/format.py |
Removes legacy formatting model. |
skyvault/skyflow/generated/rest/types/format_redacted_item.py |
Removes legacy redacted-entity enum. |
skyvault/skyflow/generated/rest/types/format_plaintext_item.py |
Removes legacy plaintext-entity enum. |
skyvault/skyflow/generated/rest/types/format_masked_item.py |
Removes legacy masked-entity enum. |
skyvault/skyflow/generated/rest/types/file_metadata.py |
Adds generated file metadata. |
skyvault/skyflow/generated/rest/types/file_data.py |
Removes legacy file-data model. |
skyvault/skyflow/generated/rest/types/file_data_reidentify_file.py |
Removes legacy reidentification input. |
skyvault/skyflow/generated/rest/types/file_data_reidentify_file_data_format.py |
Removes legacy reidentification formats. |
skyvault/skyflow/generated/rest/types/file_data_deidentify_text.py |
Removes legacy text-file input. |
skyvault/skyflow/generated/rest/types/file_data_deidentify_structured_text.py |
Removes legacy structured-text input. |
skyvault/skyflow/generated/rest/types/file_data_deidentify_structured_text_data_format.py |
Removes legacy structured-text formats. |
skyvault/skyflow/generated/rest/types/file_data_deidentify_spreadsheet.py |
Removes legacy spreadsheet input. |
skyvault/skyflow/generated/rest/types/file_data_deidentify_spreadsheet_data_format.py |
Removes legacy spreadsheet formats. |
skyvault/skyflow/generated/rest/types/file_data_deidentify_presentation.py |
Removes legacy presentation input. |
skyvault/skyflow/generated/rest/types/file_data_deidentify_presentation_data_format.py |
Removes legacy presentation formats. |
skyvault/skyflow/generated/rest/types/file_data_deidentify_image.py |
Removes legacy image input. |
skyvault/skyflow/generated/rest/types/file_data_deidentify_image_data_format.py |
Removes legacy image formats. |
skyvault/skyflow/generated/rest/types/file_data_deidentify_document.py |
Removes legacy document input. |
skyvault/skyflow/generated/rest/types/file_data_deidentify_document_data_format.py |
Removes legacy document formats. |
skyvault/skyflow/generated/rest/types/file_data_deidentify_audio.py |
Removes legacy audio input. |
skyvault/skyflow/generated/rest/types/file_data_deidentify_audio_data_format.py |
Removes legacy audio formats. |
skyvault/skyflow/generated/rest/types/field_records.py |
Renames field-record type. |
skyvault/skyflow/generated/rest/types/error_response_error.py |
Simplifies error-details annotation. |
skyvault/skyflow/generated/rest/types/detokenize_response.py |
Renames detokenization response. |
skyvault/skyflow/generated/rest/types/detokenize_record_response.py |
Renames model and updates aliases. |
skyvault/skyflow/generated/rest/types/detokenize_record_response_value_type.py |
Updates value-type literals. |
skyvault/skyflow/generated/rest/types/detokenize_record_request.py |
Renames request; requires token. |
skyvault/skyflow/generated/rest/types/detokenize_record_request_redaction.py |
Renames redaction type. |
skyvault/skyflow/generated/rest/types/detect_runs_response_status.py |
Removes legacy run-status enum. |
skyvault/skyflow/generated/rest/types/detect_runs_response_output_type.py |
Removes legacy run-output enum. |
skyvault/skyflow/generated/rest/types/detect_guardrails_response_validation.py |
Removes legacy guardrails enum. |
skyvault/skyflow/generated/rest/types/delete_record_response.py |
Renames deletion response. |
skyvault/skyflow/generated/rest/types/deidentify_string_response.py |
Removes legacy string response. |
skyvault/skyflow/generated/rest/types/deidentified_file_output.py |
Removes legacy processed-file model. |
skyvault/skyflow/generated/rest/types/deidentified_file_output_processed_file_type.py |
Removes legacy output-type literals. |
skyvault/skyflow/generated/rest/types/deidentified_file_output_processed_file_extension.py |
Removes legacy output extensions. |
skyvault/skyflow/generated/rest/types/context_auth_mode.py |
Removes legacy authentication-mode enum. |
skyvault/skyflow/generated/rest/types/context_access_type.py |
Removes legacy access-type enum. |
skyvault/skyflow/generated/rest/types/bulk_get_record_response.py |
Uses regenerated retrieved-record type. |
skyvault/skyflow/generated/rest/types/bulk_delete_record_response.py |
Renames model and updates alias. |
skyvault/skyflow/generated/rest/types/batch_record_redaction.py |
Adds batch redaction type. |
skyvault/skyflow/generated/rest/types/batch_record_method.py |
Updates batch-method literals. |
skyvault/skyflow/generated/rest/types/batch_operation_response.py |
Renames model and updates alias. |
skyvault/skyflow/generated/rest/types/audit_event_audit_resource_type.py |
Removes legacy audit-resource enum. |
skyvault/skyflow/generated/rest/strings/types/deidentify_string_request_entity_types_item.py |
Removes legacy string entity enum. |
skyvault/skyflow/generated/rest/strings/types/__init__.py |
Removes legacy string-type exports. |
skyvault/skyflow/generated/rest/strings/__init__.py |
Removes legacy string exports. |
skyvault/skyflow/generated/rest/records/types/update_record_request_byot.py |
Adds update-specific BYOT type. |
skyvault/skyflow/generated/rest/records/types/record_service_bulk_get_record_request_redaction.py |
Removes legacy bulk redaction type. |
skyvault/skyflow/generated/rest/records/types/record_service_bulk_get_record_request_order_by.py |
Removes legacy bulk ordering type. |
skyvault/skyflow/generated/rest/records/types/insert_record_request_byot.py |
Adds insert-specific BYOT type. |
skyvault/skyflow/generated/rest/records/types/get_records_request_redaction.py |
Adds regenerated bulk redaction type. |
skyvault/skyflow/generated/rest/records/types/get_records_request_order_by.py |
Adds regenerated bulk ordering type. |
skyvault/skyflow/generated/rest/records/types/get_record_by_id_request_redaction.py |
Adds single-record redaction type. |
skyvault/skyflow/generated/rest/files/types/deidentify_file_request_entity_types_item.py |
Removes legacy file entity enum. |
skyvault/skyflow/generated/rest/files/types/deidentify_file_request_deidentify_text_entity_types_item.py |
Removes legacy text entity enum. |
skyvault/skyflow/generated/rest/files/types/deidentify_file_request_deidentify_structured_text_entity_types_item.py |
Removes legacy structured-text entity enum. |
skyvault/skyflow/generated/rest/files/types/deidentify_file_request_deidentify_spreadsheet_entity_types_item.py |
Removes legacy spreadsheet entity enum. |
skyvault/skyflow/generated/rest/files/types/deidentify_file_request_deidentify_presentation_entity_types_item.py |
Removes legacy presentation entity enum. |
skyvault/skyflow/generated/rest/files/types/deidentify_file_request_deidentify_document_entity_types_item.py |
Removes legacy document entity enum. |
skyvault/skyflow/generated/rest/files/types/deidentify_file_image_request_deidentify_image_masking_method.py |
Removes legacy image masking enum. |
skyvault/skyflow/generated/rest/files/types/deidentify_file_image_request_deidentify_image_entity_types_item.py |
Removes legacy image entity enum. |
skyvault/skyflow/generated/rest/files/types/deidentify_file_audio_request_deidentify_audio_output_transcription.py |
Removes legacy transcription enum. |
skyvault/skyflow/generated/rest/files/types/deidentify_file_audio_request_deidentify_audio_entity_types_item.py |
Removes legacy audio entity enum. |
skyvault/skyflow/generated/rest/files/types/__init__.py |
Removes legacy file-type exports. |
skyvault/skyflow/generated/rest/files/__init__.py |
Removes legacy Detect file exports. |
skyvault/skyflow/generated/rest/errors/unauthorized_error.py |
Uses typed error response body. |
skyvault/skyflow/generated/rest/errors/not_found_error.py |
Uses typed error response body. |
skyvault/skyflow/generated/rest/errors/bad_request_error.py |
Uses typed error response body. |
skyvault/skyflow/generated/rest/errors/__init__.py |
Adds lazy error imports. |
skyvault/skyflow/generated/rest/environment.py |
Updates environment naming and templates. |
skyvault/skyflow/generated/rest/core/request_options.py |
Adds timeout and stream options. |
skyvault/skyflow/generated/rest/core/parse_error.py |
Adds response-parsing exception. |
skyvault/skyflow/generated/rest/core/http_sse/_models.py |
Adds server-sent event model. |
skyvault/skyflow/generated/rest/core/http_sse/_exceptions.py |
Adds SSE transport exception. |
skyvault/skyflow/generated/rest/core/http_sse/__init__.py |
Adds lazy SSE exports. |
skyvault/skyflow/generated/rest/core/http_response.py |
Exposes status and raw response. |
skyvault/skyflow/generated/rest/core/force_multipart.py |
Adds multipart helper annotations. |
skyvault/skyflow/generated/rest/core/datetime_utils.py |
Adds RFC 2822 datetime parsing. |
skyvault/skyflow/generated/rest/audit/types/audit_service_list_audit_events_request_sort_ops_order_by.py |
Removes legacy audit ordering enum. |
skyvault/skyflow/generated/rest/audit/types/audit_service_list_audit_events_request_filter_ops_resource_type.py |
Removes legacy audit resource filter. |
skyvault/skyflow/generated/rest/audit/types/audit_service_list_audit_events_request_filter_ops_context_auth_mode.py |
Removes legacy audit authentication filter. |
skyvault/skyflow/generated/rest/audit/types/audit_service_list_audit_events_request_filter_ops_context_actor_type.py |
Removes legacy audit actor filter. |
skyvault/skyflow/generated/rest/audit/types/audit_service_list_audit_events_request_filter_ops_context_access_type.py |
Removes legacy audit access filter. |
skyvault/skyflow/generated/rest/audit/types/audit_service_list_audit_events_request_filter_ops_action_type.py |
Removes legacy audit action filter. |
skyvault/skyflow/generated/rest/audit/types/__init__.py |
Removes legacy audit-type exports. |
skyvault/skyflow/generated/rest/audit/__init__.py |
Removes legacy audit exports. |
skyvault/skyflow/generated/rest/_default_clients.py |
Adds generated async client defaults. |
skyvault/skyflow/client/skyflow.py |
Activates shared Detect controller. |
skyvault/samples/README.md |
Lists Detect V2 samples. |
skyvault/samples/detect_api/reidentify_string.py |
Demonstrates string reidentification. |
skyvault/samples/detect_api/reidentify_file.py |
Demonstrates file reidentification. |
skyvault/samples/detect_api/get_run.py |
Demonstrates run-status retrieval. |
skyvault/samples/detect_api/get_detect_run.py |
Removes legacy run sample. |
skyvault/samples/detect_api/check_guardrails.py |
Demonstrates guardrails checks. |
skyvault/MANIFEST.in |
Includes bundled common sources. |
README.md |
Updates v1 end-of-life guidance. |
flowvault/tests/vault/detect/test_reexports.py |
Tests Detect V2 exports. |
flowvault/tests/vault/detect/__init__.py |
Adds Detect test package marker. |
flowvault/tests/client/test_skyflow.py |
Tests enabled Detect accessor. |
flowvault/skyflow/vault/detect/_redaction_level.py |
Adds token-group redaction rules. |
flowvault/skyflow/vault/detect/__init__.py |
Re-exports shared Detect V2 models. |
flowvault/skyflow/utils/enums/_reidentify_source_type.py |
Adds reidentification source enum. |
flowvault/skyflow/utils/enums/_deidentify_source_type.py |
Adds deidentification source enum. |
flowvault/skyflow/utils/enums/__init__.py |
Exposes Detect V2 enums. |
flowvault/skyflow/client/skyflow.py |
Enables shared Detect controller. |
flowvault/samples/README.md |
Documents Detect V2 samples. |
flowvault/samples/detect_api/reidentify_file.py |
Demonstrates token-group file reidentification. |
flowvault/samples/detect_api/get_run.py |
Demonstrates run-status retrieval. |
flowvault/samples/detect_api/check_guardrails.py |
Demonstrates guardrails checks. |
common/vault/detect/_polling.py |
Implements exponential-backoff run polling. |
common/vault/detect/_file_flow.py |
Coordinates polling and output writing. |
common/vault/detect/_constants.py |
Defines Detect limits and constants. |
common/vault/detect/__init__.py |
Exposes shared Detect API. |
common/tests/vault/detect/__init__.py |
Adds Detect test package marker. |
common/service_account/_utils.py |
Uses regenerated bearer-token method. |
common/generated/rest/version.py |
Handles missing common distribution metadata. |
common/generated/rest/types/v_1_get_auth_token_response.py |
Removes prefixed authentication response. |
common/generated/rest/types/transformation_shift_dates.py |
Adds date-shifting configuration. |
common/generated/rest/types/reidentify_string_response_v2.py |
Defines V2 string response. |
common/generated/rest/types/reidentify_file_response_v2status.py |
Adds V2 reidentification statuses. |
common/generated/rest/types/reidentify_file_response_v2output_type.py |
Adds V2 output-source type. |
common/generated/rest/types/reidentify_file_response_v2.py |
Adds V2 file response. |
common/generated/rest/types/redaction_level_redaction_type.py |
Adds V2 redaction literals. |
common/generated/rest/types/protobuf_any.py |
Removes legacy protobuf wrapper. |
common/generated/rest/types/metrics.py |
Adds shared processing metrics. |
common/generated/rest/types/media.py |
Adds media configuration container. |
common/generated/rest/types/image_v2masking_method.py |
Adds V2 image masking literals. |
common/generated/rest/types/http_code.py |
Adds HTTP status alias. |
common/generated/rest/types/googlerpc_status.py |
Removes legacy RPC-status model. |
common/generated/rest/types/get_sts_token_response.py |
Adds token-exchange response. |
common/generated/rest/types/get_auth_token_response.py |
Renames authentication response and updates aliases. |
common/generated/rest/types/file_output.py |
Adds shared processed-file model. |
common/generated/rest/types/file_output_processed_file_type.py |
Adds processed-file type literals. |
common/generated/rest/types/file_output_processed_file_extension.py |
Defines processed-file extensions. |
common/generated/rest/types/error_response.py |
Defines typed error envelope. |
common/generated/rest/types/error_response_error.py |
Defines typed error details. |
common/generated/rest/types/entity_transformation.py |
Adds entity transformation container. |
common/generated/rest/types/document_v2pdf_processing_mode.py |
Adds PDF processing-mode literals. |
common/generated/rest/types/document_v2.py |
Defines document configuration container. |
common/generated/rest/types/detect_runs_response_v2status.py |
Adds V2 run statuses. |
common/generated/rest/types/detect_runs_response_v2output_type.py |
Adds V2 run-output sources. |
common/generated/rest/types/detect_return_entities.py |
Adds entity-return policy literals. |
common/generated/rest/types/detect_object_entity.py |
Adds object-detection configuration. |
common/generated/rest/types/detect_object_entity_entity_type.py |
Adds object-entity literals. |
common/generated/rest/types/detect_object_entity_deidentification_type.py |
Adds object-redaction literals. |
common/generated/rest/types/detect_guardrails_response_v2validation.py |
Adds V2 validation literals. |
common/generated/rest/types/detect_guardrails_response_v2.py |
Defines V2 guardrails response. |
common/generated/rest/types/detect_entity_include_prefix.py |
Adds entity-prefix options. |
common/generated/rest/types/detect_entity_deidentification_type.py |
Adds entity deidentification options. |
common/generated/rest/types/detect_custom_types_include_prefix.py |
Adds custom-type prefix options. |
common/generated/rest/types/detect_custom_types_deidentification_type.py |
Adds custom-type deidentification options. |
common/generated/rest/types/detect_config_v2vault_type.py |
Adds Detect vault-type literals. |
common/generated/rest/types/deidentify_string_response_v2detected_entity.py |
Defines V2 detected-entity metadata. |
common/generated/rest/types/deidentify_string_response_v2.py |
Adds V2 string response. |
common/generated/rest/types/deidentify_file_response_v2.py |
Defines asynchronous submission response. |
common/generated/rest/types/audio_v2output_transcription.py |
Adds V2 transcription options. |
common/generated/rest/types/audio_v2bleep.py |
Adds V2 audio-bleep configuration. |
common/generated/rest/token_exchange/__init__.py |
Initializes generated token-exchange package. |
common/generated/rest/strings_v2/__init__.py |
Initializes generated V2 strings package. |
common/generated/rest/guardrails_v2/__init__.py |
Initializes generated V2 guardrails package. |
common/generated/rest/files_v2/types/reidentify_file_request_v2data_source.py |
Adds reidentification source literals. |
common/generated/rest/files_v2/types/reidentify_file_request_v2data_format.py |
Adds reidentification format literals. |
common/generated/rest/files_v2/types/deidentify_file_request_v2data_source.py |
Adds deidentification source literals. |
common/generated/rest/files_v2/types/deidentify_file_request_v2data_format.py |
Defines V2 deidentification formats. |
common/generated/rest/files_v2/types/__init__.py |
Lazily exports file request types. |
common/generated/rest/files_v2/__init__.py |
Lazily exports V2 file types. |
common/generated/rest/errors/unauthorized_error.py |
Uses typed error response body. |
common/generated/rest/errors/not_found_error.py |
Uses typed error response body. |
common/generated/rest/errors/internal_server_error.py |
Adds typed server-error exception. |
common/generated/rest/errors/bad_request_error.py |
Uses typed error response body. |
common/generated/rest/errors/__init__.py |
Adds lazy error imports. |
common/generated/rest/environment.py |
Updates generated environment URLs. |
common/generated/rest/core/request_options.py |
Adds timeout and stream options. |
common/generated/rest/core/parse_error.py |
Adds response-parsing exception. |
common/generated/rest/core/http_sse/_models.py |
Adds server-sent event model. |
common/generated/rest/core/http_sse/_exceptions.py |
Adds SSE transport exception. |
common/generated/rest/core/http_sse/__init__.py |
Adds lazy SSE exports. |
common/generated/rest/core/http_response.py |
Exposes status and raw response. |
common/generated/rest/core/force_multipart.py |
Adds multipart helper annotations. |
common/generated/rest/core/datetime_utils.py |
Adds RFC 2822 datetime parsing. |
common/generated/rest/_default_clients.py |
Adds generated async client defaults. |
ci-scripts/contract/griffe_contract.py |
Includes flowvault Detect API surface. |
.gitignore |
Excludes local Detect sample runs. |
.github/workflows/shared-tests.yml |
Pins Ubuntu runner image. |
.github/workflows/pr-flowvault.yml |
Pins build, test, and smoke runners. |
.github/workflows/gitleaks-auto-redact.yml |
Pins secret-redaction runner. |
Review effort: Balanced
e52cd43
into
flowvault-release/26.10.0

Summary
Adds Detect V2 (
deidentify_string,deidentify_file,get_run,reidentify_string,reidentify_file,check_guardrails) to the Python SDKs. The implementation lives in the sharedcommonpackage and is re-exported from both flowvault and skyvault, with behaviour ported from the Java flowvault SDK (flowvault-release/26.10.1).Jira: SK-3075
What's included
common (
common/vault/detect,common/utils/enums/detect.py)SkyflowMessages.status=None, minimal client-side validation (server enforces the rest), auto-write of processed files for local-file inputs.flowvault
make_skyflow_class(detect_cls=DetectController)activatesclient.detect().VaultClientbuilds the common detect REST client and exposesget_strings_v2_api/get_files_v2_api/get_guardrails_v2_api.skyflow.vault.detectand the V2 enums; addssamples/detect_api/, a README section, and unit tests.skyvault
V1prefix,Skyflow→SkyflowAuth) and updates tests.Testing
common102 ✓,flowvault344 ✓,skyvault520 ✓;ruffclean.🤖 Generated with Claude Code