diff --git a/.release-please-manifest.json b/.release-please-manifest.json index 0598874..091cfb1 100644 --- a/.release-please-manifest.json +++ b/.release-please-manifest.json @@ -1,3 +1,3 @@ { - ".": "0.9.1" + ".": "0.10.0" } \ No newline at end of file diff --git a/.stats.yml b/.stats.yml index d4e5380..f925a83 100644 --- a/.stats.yml +++ b/.stats.yml @@ -1,3 +1,3 @@ -configured_endpoints: 24 -openapi_spec_hash: c97a5263afcc72ca5a47bc5a87683a78 -config_hash: f0743196c68fb84cbd06a95f134702b3 +configured_endpoints: 25 +openapi_spec_hash: 4eff18b3478c98a9b257ac27fdeb6b49 +config_hash: b415187e3925c414fb2597cdd0a11859 diff --git a/CHANGELOG.md b/CHANGELOG.md index 7ba8128..626f957 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,13 @@ # Changelog +## 0.10.0 (2026-01-09) + +Full Changelog: [v0.9.1...v0.10.0](https://github.com/openlayer-ai/openlayer-ruby/compare/v0.9.1...v0.10.0) + +### Features + +* **closes OPEN-8532:** expose 'tests/{id}/results' endpoint ([9283aa5](https://github.com/openlayer-ai/openlayer-ruby/commit/9283aa5daa8dc74f26a2e17c754824f4bdc57f97)) + ## 0.9.1 (2026-01-08) Full Changelog: [v0.9.0...v0.9.1](https://github.com/openlayer-ai/openlayer-ruby/compare/v0.9.0...v0.9.1) diff --git a/Gemfile.lock b/Gemfile.lock index b8273e9..c3fb7d7 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -11,7 +11,7 @@ GIT PATH remote: . specs: - openlayer (0.9.1) + openlayer (0.10.0) connection_pool GEM diff --git a/README.md b/README.md index 8819cbe..92e25bf 100644 --- a/README.md +++ b/README.md @@ -17,7 +17,7 @@ To use this gem, install via Bundler by adding the following to your application ```ruby -gem "openlayer", "~> 0.9.1" +gem "openlayer", "~> 0.10.0" ``` diff --git a/lib/openlayer.rb b/lib/openlayer.rb index 8dcab67..e9bbfd2 100644 --- a/lib/openlayer.rb +++ b/lib/openlayer.rb @@ -89,6 +89,8 @@ require_relative "openlayer/models/storage/presigned_url_create_response" require_relative "openlayer/models/test_evaluate_params" require_relative "openlayer/models/test_evaluate_response" +require_relative "openlayer/models/test_list_results_params" +require_relative "openlayer/models/test_list_results_response" require_relative "openlayer/models/workspace_retrieve_params" require_relative "openlayer/models/workspace_retrieve_response" require_relative "openlayer/models/workspaces/api_key_create_params" diff --git a/lib/openlayer/models.rb b/lib/openlayer/models.rb index d1f93e8..0f23c4e 100644 --- a/lib/openlayer/models.rb +++ b/lib/openlayer/models.rb @@ -61,6 +61,8 @@ module Openlayer TestEvaluateParams = Openlayer::Models::TestEvaluateParams + TestListResultsParams = Openlayer::Models::TestListResultsParams + WorkspaceRetrieveParams = Openlayer::Models::WorkspaceRetrieveParams Workspaces = Openlayer::Models::Workspaces diff --git a/lib/openlayer/models/commits/test_result_list_response.rb b/lib/openlayer/models/commits/test_result_list_response.rb index e31a931..10b6269 100644 --- a/lib/openlayer/models/commits/test_result_list_response.rb +++ b/lib/openlayer/models/commits/test_result_list_response.rb @@ -27,11 +27,33 @@ class Item < Openlayer::Internal::Type::BaseModel # @return [String, nil] required :status_message, String, api_name: :statusMessage, nil?: true + # @!attribute expected_values + # + # @return [Array, nil] + optional :expected_values, + -> { Openlayer::Internal::Type::ArrayOf[Openlayer::Models::Commits::TestResultListResponse::Item::ExpectedValue] }, + api_name: :expectedValues + # @!attribute goal # # @return [Openlayer::Models::Commits::TestResultListResponse::Item::Goal, nil] optional :goal, -> { Openlayer::Models::Commits::TestResultListResponse::Item::Goal } + # @!attribute rows + # The URL to the rows of the test result. + # + # @return [String, nil] + optional :rows, String + + # @!attribute rows_body + # The body of the rows request. + # + # @return [Openlayer::Models::Commits::TestResultListResponse::Item::RowsBody, nil] + optional :rows_body, + -> { Openlayer::Models::Commits::TestResultListResponse::Item::RowsBody }, + api_name: :rowsBody, + nil?: true + response_only do # @!attribute id # Project version (commit) id. @@ -82,7 +104,7 @@ class Item < Openlayer::Internal::Type::BaseModel optional :goal_id, String, api_name: :goalId, nil?: true end - # @!method initialize(id:, date_created:, date_data_ends:, date_data_starts:, date_updated:, inference_pipeline_id:, project_version_id:, status:, status_message:, goal: nil, goal_id: nil) + # @!method initialize(id:, date_created:, date_data_ends:, date_data_starts:, date_updated:, inference_pipeline_id:, project_version_id:, status:, status_message:, expected_values: nil, goal: nil, goal_id: nil, rows: nil, rows_body: nil) # @param id [String] Project version (commit) id. # # @param date_created [Time] The creation date. @@ -101,9 +123,15 @@ class Item < Openlayer::Internal::Type::BaseModel # # @param status_message [String, nil] The status message. # + # @param expected_values [Array] + # # @param goal [Openlayer::Models::Commits::TestResultListResponse::Item::Goal] # # @param goal_id [String, nil] The test id. + # + # @param rows [String] The URL to the rows of the test result. + # + # @param rows_body [Openlayer::Models::Commits::TestResultListResponse::Item::RowsBody, nil] The body of the rows request. # The status of the test. # @@ -121,6 +149,33 @@ module Status # @return [Array] end + class ExpectedValue < Openlayer::Internal::Type::BaseModel + # @!attribute lower_threshold + # the lower threshold for the expected value + # + # @return [Float, nil] + optional :lower_threshold, Float, api_name: :lowerThreshold, nil?: true + + # @!attribute measurement + # One of the `measurement` values in the test's thresholds + # + # @return [String, nil] + optional :measurement, String + + # @!attribute upper_threshold + # The upper threshold for the expected value + # + # @return [Float, nil] + optional :upper_threshold, Float, api_name: :upperThreshold, nil?: true + + # @!method initialize(lower_threshold: nil, measurement: nil, upper_threshold: nil) + # @param lower_threshold [Float, nil] the lower threshold for the expected value + # + # @param measurement [String] One of the `measurement` values in the test's thresholds + # + # @param upper_threshold [Float, nil] The upper threshold for the expected value + end + # @see Openlayer::Models::Commits::TestResultListResponse::Item#goal class Goal < Openlayer::Internal::Type::BaseModel # @!attribute description @@ -559,6 +614,236 @@ module Type # @return [Array] end end + + # @see Openlayer::Models::Commits::TestResultListResponse::Item#rows_body + class RowsBody < Openlayer::Internal::Type::BaseModel + # @!attribute column_filters + # + # @return [Array, nil] + optional :column_filters, + -> { Openlayer::Internal::Type::ArrayOf[union: Openlayer::Models::Commits::TestResultListResponse::Item::RowsBody::ColumnFilter] }, + api_name: :columnFilters, + nil?: true + + # @!attribute exclude_row_id_list + # + # @return [Array, nil] + optional :exclude_row_id_list, + Openlayer::Internal::Type::ArrayOf[Integer], + api_name: :excludeRowIdList, + nil?: true + + # @!attribute not_search_query_and + # + # @return [Array, nil] + optional :not_search_query_and, + Openlayer::Internal::Type::ArrayOf[String], + api_name: :notSearchQueryAnd, + nil?: true + + # @!attribute not_search_query_or + # + # @return [Array, nil] + optional :not_search_query_or, + Openlayer::Internal::Type::ArrayOf[String], + api_name: :notSearchQueryOr, + nil?: true + + # @!attribute row_id_list + # + # @return [Array, nil] + optional :row_id_list, + Openlayer::Internal::Type::ArrayOf[Integer], + api_name: :rowIdList, + nil?: true + + # @!attribute search_query_and + # + # @return [Array, nil] + optional :search_query_and, + Openlayer::Internal::Type::ArrayOf[String], + api_name: :searchQueryAnd, + nil?: true + + # @!attribute search_query_or + # + # @return [Array, nil] + optional :search_query_or, + Openlayer::Internal::Type::ArrayOf[String], + api_name: :searchQueryOr, + nil?: true + + # @!method initialize(column_filters: nil, exclude_row_id_list: nil, not_search_query_and: nil, not_search_query_or: nil, row_id_list: nil, search_query_and: nil, search_query_or: nil) + # The body of the rows request. + # + # @param column_filters [Array, nil] + # @param exclude_row_id_list [Array, nil] + # @param not_search_query_and [Array, nil] + # @param not_search_query_or [Array, nil] + # @param row_id_list [Array, nil] + # @param search_query_and [Array, nil] + # @param search_query_or [Array, nil] + + module ColumnFilter + extend Openlayer::Internal::Type::Union + + variant -> { Openlayer::Models::Commits::TestResultListResponse::Item::RowsBody::ColumnFilter::SetColumnFilter } + + variant -> { Openlayer::Models::Commits::TestResultListResponse::Item::RowsBody::ColumnFilter::NumericColumnFilter } + + variant -> { Openlayer::Models::Commits::TestResultListResponse::Item::RowsBody::ColumnFilter::StringColumnFilter } + + class SetColumnFilter < Openlayer::Internal::Type::BaseModel + # @!attribute measurement + # The name of the column. + # + # @return [String] + required :measurement, String + + # @!attribute operator + # + # @return [Symbol, Openlayer::Models::Commits::TestResultListResponse::Item::RowsBody::ColumnFilter::SetColumnFilter::Operator] + required :operator, + enum: -> { Openlayer::Models::Commits::TestResultListResponse::Item::RowsBody::ColumnFilter::SetColumnFilter::Operator } + + # @!attribute value + # + # @return [Array] + required :value, + -> do + Openlayer::Internal::Type::ArrayOf[ + union: Openlayer::Models::Commits::TestResultListResponse::Item::RowsBody::ColumnFilter::SetColumnFilter::Value + ] + end + + # @!method initialize(measurement:, operator:, value:) + # @param measurement [String] The name of the column. + # + # @param operator [Symbol, Openlayer::Models::Commits::TestResultListResponse::Item::RowsBody::ColumnFilter::SetColumnFilter::Operator] + # + # @param value [Array] + + # @see Openlayer::Models::Commits::TestResultListResponse::Item::RowsBody::ColumnFilter::SetColumnFilter#operator + module Operator + extend Openlayer::Internal::Type::Enum + + CONTAINS_NONE = :contains_none + CONTAINS_ANY = :contains_any + CONTAINS_ALL = :contains_all + ONE_OF = :one_of + NONE_OF = :none_of + + # @!method self.values + # @return [Array] + end + + module Value + extend Openlayer::Internal::Type::Union + + variant String + + variant Float + + # @!method self.variants + # @return [Array(String, Float)] + end + end + + class NumericColumnFilter < Openlayer::Internal::Type::BaseModel + # @!attribute measurement + # The name of the column. + # + # @return [String] + required :measurement, String + + # @!attribute operator + # + # @return [Symbol, Openlayer::Models::Commits::TestResultListResponse::Item::RowsBody::ColumnFilter::NumericColumnFilter::Operator] + required :operator, + enum: -> { Openlayer::Models::Commits::TestResultListResponse::Item::RowsBody::ColumnFilter::NumericColumnFilter::Operator } + + # @!attribute value + # + # @return [Float, nil] + required :value, Float, nil?: true + + # @!method initialize(measurement:, operator:, value:) + # @param measurement [String] The name of the column. + # + # @param operator [Symbol, Openlayer::Models::Commits::TestResultListResponse::Item::RowsBody::ColumnFilter::NumericColumnFilter::Operator] + # + # @param value [Float, nil] + + # @see Openlayer::Models::Commits::TestResultListResponse::Item::RowsBody::ColumnFilter::NumericColumnFilter#operator + module Operator + extend Openlayer::Internal::Type::Enum + + GREATER = :> + GREATER_OR_EQUALS = :">=" + IS = :is + LESS = :< + LESS_OR_EQUALS = :"<=" + NOT_EQUALS = :"!=" + + # @!method self.values + # @return [Array] + end + end + + class StringColumnFilter < Openlayer::Internal::Type::BaseModel + # @!attribute measurement + # The name of the column. + # + # @return [String] + required :measurement, String + + # @!attribute operator + # + # @return [Symbol, Openlayer::Models::Commits::TestResultListResponse::Item::RowsBody::ColumnFilter::StringColumnFilter::Operator] + required :operator, + enum: -> { Openlayer::Models::Commits::TestResultListResponse::Item::RowsBody::ColumnFilter::StringColumnFilter::Operator } + + # @!attribute value + # + # @return [String, Boolean] + required :value, + union: -> { Openlayer::Models::Commits::TestResultListResponse::Item::RowsBody::ColumnFilter::StringColumnFilter::Value } + + # @!method initialize(measurement:, operator:, value:) + # @param measurement [String] The name of the column. + # + # @param operator [Symbol, Openlayer::Models::Commits::TestResultListResponse::Item::RowsBody::ColumnFilter::StringColumnFilter::Operator] + # + # @param value [String, Boolean] + + # @see Openlayer::Models::Commits::TestResultListResponse::Item::RowsBody::ColumnFilter::StringColumnFilter#operator + module Operator + extend Openlayer::Internal::Type::Enum + + IS = :is + NOT_EQUALS = :"!=" + + # @!method self.values + # @return [Array] + end + + # @see Openlayer::Models::Commits::TestResultListResponse::Item::RowsBody::ColumnFilter::StringColumnFilter#value + module Value + extend Openlayer::Internal::Type::Union + + variant String + + variant Openlayer::Internal::Type::Boolean + + # @!method self.variants + # @return [Array(String, Boolean)] + end + end + + # @!method self.variants + # @return [Array(Openlayer::Models::Commits::TestResultListResponse::Item::RowsBody::ColumnFilter::SetColumnFilter, Openlayer::Models::Commits::TestResultListResponse::Item::RowsBody::ColumnFilter::NumericColumnFilter, Openlayer::Models::Commits::TestResultListResponse::Item::RowsBody::ColumnFilter::StringColumnFilter)] + end + end end end end diff --git a/lib/openlayer/models/inference_pipelines/test_result_list_response.rb b/lib/openlayer/models/inference_pipelines/test_result_list_response.rb index d32d211..fc5ead1 100644 --- a/lib/openlayer/models/inference_pipelines/test_result_list_response.rb +++ b/lib/openlayer/models/inference_pipelines/test_result_list_response.rb @@ -27,11 +27,33 @@ class Item < Openlayer::Internal::Type::BaseModel # @return [String, nil] required :status_message, String, api_name: :statusMessage, nil?: true + # @!attribute expected_values + # + # @return [Array, nil] + optional :expected_values, + -> { Openlayer::Internal::Type::ArrayOf[Openlayer::Models::InferencePipelines::TestResultListResponse::Item::ExpectedValue] }, + api_name: :expectedValues + # @!attribute goal # # @return [Openlayer::Models::InferencePipelines::TestResultListResponse::Item::Goal, nil] optional :goal, -> { Openlayer::Models::InferencePipelines::TestResultListResponse::Item::Goal } + # @!attribute rows + # The URL to the rows of the test result. + # + # @return [String, nil] + optional :rows, String + + # @!attribute rows_body + # The body of the rows request. + # + # @return [Openlayer::Models::InferencePipelines::TestResultListResponse::Item::RowsBody, nil] + optional :rows_body, + -> { Openlayer::Models::InferencePipelines::TestResultListResponse::Item::RowsBody }, + api_name: :rowsBody, + nil?: true + response_only do # @!attribute id # Project version (commit) id. @@ -82,7 +104,7 @@ class Item < Openlayer::Internal::Type::BaseModel optional :goal_id, String, api_name: :goalId, nil?: true end - # @!method initialize(id:, date_created:, date_data_ends:, date_data_starts:, date_updated:, inference_pipeline_id:, project_version_id:, status:, status_message:, goal: nil, goal_id: nil) + # @!method initialize(id:, date_created:, date_data_ends:, date_data_starts:, date_updated:, inference_pipeline_id:, project_version_id:, status:, status_message:, expected_values: nil, goal: nil, goal_id: nil, rows: nil, rows_body: nil) # @param id [String] Project version (commit) id. # # @param date_created [Time] The creation date. @@ -101,9 +123,15 @@ class Item < Openlayer::Internal::Type::BaseModel # # @param status_message [String, nil] The status message. # + # @param expected_values [Array] + # # @param goal [Openlayer::Models::InferencePipelines::TestResultListResponse::Item::Goal] # # @param goal_id [String, nil] The test id. + # + # @param rows [String] The URL to the rows of the test result. + # + # @param rows_body [Openlayer::Models::InferencePipelines::TestResultListResponse::Item::RowsBody, nil] The body of the rows request. # The status of the test. # @@ -121,6 +149,33 @@ module Status # @return [Array] end + class ExpectedValue < Openlayer::Internal::Type::BaseModel + # @!attribute lower_threshold + # the lower threshold for the expected value + # + # @return [Float, nil] + optional :lower_threshold, Float, api_name: :lowerThreshold, nil?: true + + # @!attribute measurement + # One of the `measurement` values in the test's thresholds + # + # @return [String, nil] + optional :measurement, String + + # @!attribute upper_threshold + # The upper threshold for the expected value + # + # @return [Float, nil] + optional :upper_threshold, Float, api_name: :upperThreshold, nil?: true + + # @!method initialize(lower_threshold: nil, measurement: nil, upper_threshold: nil) + # @param lower_threshold [Float, nil] the lower threshold for the expected value + # + # @param measurement [String] One of the `measurement` values in the test's thresholds + # + # @param upper_threshold [Float, nil] The upper threshold for the expected value + end + # @see Openlayer::Models::InferencePipelines::TestResultListResponse::Item#goal class Goal < Openlayer::Internal::Type::BaseModel # @!attribute description @@ -561,6 +616,236 @@ module Type # @return [Array] end end + + # @see Openlayer::Models::InferencePipelines::TestResultListResponse::Item#rows_body + class RowsBody < Openlayer::Internal::Type::BaseModel + # @!attribute column_filters + # + # @return [Array, nil] + optional :column_filters, + -> { Openlayer::Internal::Type::ArrayOf[union: Openlayer::Models::InferencePipelines::TestResultListResponse::Item::RowsBody::ColumnFilter] }, + api_name: :columnFilters, + nil?: true + + # @!attribute exclude_row_id_list + # + # @return [Array, nil] + optional :exclude_row_id_list, + Openlayer::Internal::Type::ArrayOf[Integer], + api_name: :excludeRowIdList, + nil?: true + + # @!attribute not_search_query_and + # + # @return [Array, nil] + optional :not_search_query_and, + Openlayer::Internal::Type::ArrayOf[String], + api_name: :notSearchQueryAnd, + nil?: true + + # @!attribute not_search_query_or + # + # @return [Array, nil] + optional :not_search_query_or, + Openlayer::Internal::Type::ArrayOf[String], + api_name: :notSearchQueryOr, + nil?: true + + # @!attribute row_id_list + # + # @return [Array, nil] + optional :row_id_list, + Openlayer::Internal::Type::ArrayOf[Integer], + api_name: :rowIdList, + nil?: true + + # @!attribute search_query_and + # + # @return [Array, nil] + optional :search_query_and, + Openlayer::Internal::Type::ArrayOf[String], + api_name: :searchQueryAnd, + nil?: true + + # @!attribute search_query_or + # + # @return [Array, nil] + optional :search_query_or, + Openlayer::Internal::Type::ArrayOf[String], + api_name: :searchQueryOr, + nil?: true + + # @!method initialize(column_filters: nil, exclude_row_id_list: nil, not_search_query_and: nil, not_search_query_or: nil, row_id_list: nil, search_query_and: nil, search_query_or: nil) + # The body of the rows request. + # + # @param column_filters [Array, nil] + # @param exclude_row_id_list [Array, nil] + # @param not_search_query_and [Array, nil] + # @param not_search_query_or [Array, nil] + # @param row_id_list [Array, nil] + # @param search_query_and [Array, nil] + # @param search_query_or [Array, nil] + + module ColumnFilter + extend Openlayer::Internal::Type::Union + + variant -> { Openlayer::Models::InferencePipelines::TestResultListResponse::Item::RowsBody::ColumnFilter::SetColumnFilter } + + variant -> { Openlayer::Models::InferencePipelines::TestResultListResponse::Item::RowsBody::ColumnFilter::NumericColumnFilter } + + variant -> { Openlayer::Models::InferencePipelines::TestResultListResponse::Item::RowsBody::ColumnFilter::StringColumnFilter } + + class SetColumnFilter < Openlayer::Internal::Type::BaseModel + # @!attribute measurement + # The name of the column. + # + # @return [String] + required :measurement, String + + # @!attribute operator + # + # @return [Symbol, Openlayer::Models::InferencePipelines::TestResultListResponse::Item::RowsBody::ColumnFilter::SetColumnFilter::Operator] + required :operator, + enum: -> { Openlayer::Models::InferencePipelines::TestResultListResponse::Item::RowsBody::ColumnFilter::SetColumnFilter::Operator } + + # @!attribute value + # + # @return [Array] + required :value, + -> do + Openlayer::Internal::Type::ArrayOf[ + union: Openlayer::Models::InferencePipelines::TestResultListResponse::Item::RowsBody::ColumnFilter::SetColumnFilter::Value + ] + end + + # @!method initialize(measurement:, operator:, value:) + # @param measurement [String] The name of the column. + # + # @param operator [Symbol, Openlayer::Models::InferencePipelines::TestResultListResponse::Item::RowsBody::ColumnFilter::SetColumnFilter::Operator] + # + # @param value [Array] + + # @see Openlayer::Models::InferencePipelines::TestResultListResponse::Item::RowsBody::ColumnFilter::SetColumnFilter#operator + module Operator + extend Openlayer::Internal::Type::Enum + + CONTAINS_NONE = :contains_none + CONTAINS_ANY = :contains_any + CONTAINS_ALL = :contains_all + ONE_OF = :one_of + NONE_OF = :none_of + + # @!method self.values + # @return [Array] + end + + module Value + extend Openlayer::Internal::Type::Union + + variant String + + variant Float + + # @!method self.variants + # @return [Array(String, Float)] + end + end + + class NumericColumnFilter < Openlayer::Internal::Type::BaseModel + # @!attribute measurement + # The name of the column. + # + # @return [String] + required :measurement, String + + # @!attribute operator + # + # @return [Symbol, Openlayer::Models::InferencePipelines::TestResultListResponse::Item::RowsBody::ColumnFilter::NumericColumnFilter::Operator] + required :operator, + enum: -> { Openlayer::Models::InferencePipelines::TestResultListResponse::Item::RowsBody::ColumnFilter::NumericColumnFilter::Operator } + + # @!attribute value + # + # @return [Float, nil] + required :value, Float, nil?: true + + # @!method initialize(measurement:, operator:, value:) + # @param measurement [String] The name of the column. + # + # @param operator [Symbol, Openlayer::Models::InferencePipelines::TestResultListResponse::Item::RowsBody::ColumnFilter::NumericColumnFilter::Operator] + # + # @param value [Float, nil] + + # @see Openlayer::Models::InferencePipelines::TestResultListResponse::Item::RowsBody::ColumnFilter::NumericColumnFilter#operator + module Operator + extend Openlayer::Internal::Type::Enum + + GREATER = :> + GREATER_OR_EQUALS = :">=" + IS = :is + LESS = :< + LESS_OR_EQUALS = :"<=" + NOT_EQUALS = :"!=" + + # @!method self.values + # @return [Array] + end + end + + class StringColumnFilter < Openlayer::Internal::Type::BaseModel + # @!attribute measurement + # The name of the column. + # + # @return [String] + required :measurement, String + + # @!attribute operator + # + # @return [Symbol, Openlayer::Models::InferencePipelines::TestResultListResponse::Item::RowsBody::ColumnFilter::StringColumnFilter::Operator] + required :operator, + enum: -> { Openlayer::Models::InferencePipelines::TestResultListResponse::Item::RowsBody::ColumnFilter::StringColumnFilter::Operator } + + # @!attribute value + # + # @return [String, Boolean] + required :value, + union: -> { Openlayer::Models::InferencePipelines::TestResultListResponse::Item::RowsBody::ColumnFilter::StringColumnFilter::Value } + + # @!method initialize(measurement:, operator:, value:) + # @param measurement [String] The name of the column. + # + # @param operator [Symbol, Openlayer::Models::InferencePipelines::TestResultListResponse::Item::RowsBody::ColumnFilter::StringColumnFilter::Operator] + # + # @param value [String, Boolean] + + # @see Openlayer::Models::InferencePipelines::TestResultListResponse::Item::RowsBody::ColumnFilter::StringColumnFilter#operator + module Operator + extend Openlayer::Internal::Type::Enum + + IS = :is + NOT_EQUALS = :"!=" + + # @!method self.values + # @return [Array] + end + + # @see Openlayer::Models::InferencePipelines::TestResultListResponse::Item::RowsBody::ColumnFilter::StringColumnFilter#value + module Value + extend Openlayer::Internal::Type::Union + + variant String + + variant Openlayer::Internal::Type::Boolean + + # @!method self.variants + # @return [Array(String, Boolean)] + end + end + + # @!method self.variants + # @return [Array(Openlayer::Models::InferencePipelines::TestResultListResponse::Item::RowsBody::ColumnFilter::SetColumnFilter, Openlayer::Models::InferencePipelines::TestResultListResponse::Item::RowsBody::ColumnFilter::NumericColumnFilter, Openlayer::Models::InferencePipelines::TestResultListResponse::Item::RowsBody::ColumnFilter::StringColumnFilter)] + end + end end end end diff --git a/lib/openlayer/models/test_list_results_params.rb b/lib/openlayer/models/test_list_results_params.rb new file mode 100644 index 0000000..8b80e26 --- /dev/null +++ b/lib/openlayer/models/test_list_results_params.rb @@ -0,0 +1,78 @@ +# frozen_string_literal: true + +module Openlayer + module Models + # @see Openlayer::Resources::Tests#list_results + class TestListResultsParams < Openlayer::Internal::Type::BaseModel + extend Openlayer::Internal::Type::RequestParameters::Converter + include Openlayer::Internal::Type::RequestParameters + + # @!attribute end_timestamp + # Filter for results that use data starting before the end timestamp. + # + # @return [Float, nil] + optional :end_timestamp, Float + + # @!attribute include_insights + # Include the insights linked to each test result + # + # @return [Boolean, nil] + optional :include_insights, Openlayer::Internal::Type::Boolean + + # @!attribute inference_pipeline_id + # Retrive test results for a specific inference pipeline. + # + # @return [String, nil] + optional :inference_pipeline_id, String, nil?: true + + # @!attribute page + # The page to return in a paginated query. + # + # @return [Integer, nil] + optional :page, Integer + + # @!attribute per_page + # Maximum number of items to return per page. + # + # @return [Integer, nil] + optional :per_page, Integer + + # @!attribute project_version_id + # Retrive test results for a specific project version. + # + # @return [String, nil] + optional :project_version_id, String, nil?: true + + # @!attribute start_timestamp + # Filter for results that use data ending after the start timestamp. + # + # @return [Float, nil] + optional :start_timestamp, Float + + # @!attribute status + # Filter by status(es). + # + # @return [Array, nil] + optional :status, Openlayer::Internal::Type::ArrayOf[String] + + # @!method initialize(end_timestamp: nil, include_insights: nil, inference_pipeline_id: nil, page: nil, per_page: nil, project_version_id: nil, start_timestamp: nil, status: nil, request_options: {}) + # @param end_timestamp [Float] Filter for results that use data starting before the end timestamp. + # + # @param include_insights [Boolean] Include the insights linked to each test result + # + # @param inference_pipeline_id [String, nil] Retrive test results for a specific inference pipeline. + # + # @param page [Integer] The page to return in a paginated query. + # + # @param per_page [Integer] Maximum number of items to return per page. + # + # @param project_version_id [String, nil] Retrive test results for a specific project version. + # + # @param start_timestamp [Float] Filter for results that use data ending after the start timestamp. + # + # @param status [Array] Filter by status(es). + # + # @param request_options [Openlayer::RequestOptions, Hash{Symbol=>Object}] + end + end +end diff --git a/lib/openlayer/models/test_list_results_response.rb b/lib/openlayer/models/test_list_results_response.rb new file mode 100644 index 0000000..90af2fd --- /dev/null +++ b/lib/openlayer/models/test_list_results_response.rb @@ -0,0 +1,1676 @@ +# frozen_string_literal: true + +module Openlayer + module Models + # @see Openlayer::Resources::Tests#list_results + class TestListResultsResponse < Openlayer::Internal::Type::BaseModel + # @!attribute items + # + # @return [Array] + required :items, + -> { Openlayer::Internal::Type::ArrayOf[Openlayer::Models::TestListResultsResponse::Item] } + + # @!attribute last_unskipped_result + # + # @return [Openlayer::Models::TestListResultsResponse::LastUnskippedResult, nil] + optional :last_unskipped_result, + -> { Openlayer::Models::TestListResultsResponse::LastUnskippedResult }, + api_name: :lastUnskippedResult, + nil?: true + + # @!method initialize(items:, last_unskipped_result: nil) + # @param items [Array] + # @param last_unskipped_result [Openlayer::Models::TestListResultsResponse::LastUnskippedResult, nil] + + class Item < Openlayer::Internal::Type::BaseModel + # @!attribute status + # The status of the test. + # + # @return [Symbol, Openlayer::Models::TestListResultsResponse::Item::Status] + required :status, enum: -> { Openlayer::Models::TestListResultsResponse::Item::Status } + + # @!attribute status_message + # The status message. + # + # @return [String, nil] + required :status_message, String, api_name: :statusMessage, nil?: true + + # @!attribute expected_values + # + # @return [Array, nil] + optional :expected_values, + -> { Openlayer::Internal::Type::ArrayOf[Openlayer::Models::TestListResultsResponse::Item::ExpectedValue] }, + api_name: :expectedValues + + # @!attribute goal + # + # @return [Openlayer::Models::TestListResultsResponse::Item::Goal, nil] + optional :goal, -> { Openlayer::Models::TestListResultsResponse::Item::Goal } + + # @!attribute rows + # The URL to the rows of the test result. + # + # @return [String, nil] + optional :rows, String + + # @!attribute rows_body + # The body of the rows request. + # + # @return [Openlayer::Models::TestListResultsResponse::Item::RowsBody, nil] + optional :rows_body, + -> { Openlayer::Models::TestListResultsResponse::Item::RowsBody }, + api_name: :rowsBody, + nil?: true + + response_only do + # @!attribute id + # Project version (commit) id. + # + # @return [String] + required :id, String + + # @!attribute date_created + # The creation date. + # + # @return [Time] + required :date_created, Time, api_name: :dateCreated + + # @!attribute date_data_ends + # The data end date. + # + # @return [Time, nil] + required :date_data_ends, Time, api_name: :dateDataEnds, nil?: true + + # @!attribute date_data_starts + # The data start date. + # + # @return [Time, nil] + required :date_data_starts, Time, api_name: :dateDataStarts, nil?: true + + # @!attribute date_updated + # The last updated date. + # + # @return [Time] + required :date_updated, Time, api_name: :dateUpdated + + # @!attribute inference_pipeline_id + # The inference pipeline id. + # + # @return [String, nil] + required :inference_pipeline_id, String, api_name: :inferencePipelineId, nil?: true + + # @!attribute project_version_id + # The project version (commit) id. + # + # @return [String, nil] + required :project_version_id, String, api_name: :projectVersionId, nil?: true + + # @!attribute goal_id + # The test id. + # + # @return [String, nil] + optional :goal_id, String, api_name: :goalId, nil?: true + end + + # @!method initialize(id:, date_created:, date_data_ends:, date_data_starts:, date_updated:, inference_pipeline_id:, project_version_id:, status:, status_message:, expected_values: nil, goal: nil, goal_id: nil, rows: nil, rows_body: nil) + # @param id [String] Project version (commit) id. + # + # @param date_created [Time] The creation date. + # + # @param date_data_ends [Time, nil] The data end date. + # + # @param date_data_starts [Time, nil] The data start date. + # + # @param date_updated [Time] The last updated date. + # + # @param inference_pipeline_id [String, nil] The inference pipeline id. + # + # @param project_version_id [String, nil] The project version (commit) id. + # + # @param status [Symbol, Openlayer::Models::TestListResultsResponse::Item::Status] The status of the test. + # + # @param status_message [String, nil] The status message. + # + # @param expected_values [Array] + # + # @param goal [Openlayer::Models::TestListResultsResponse::Item::Goal] + # + # @param goal_id [String, nil] The test id. + # + # @param rows [String] The URL to the rows of the test result. + # + # @param rows_body [Openlayer::Models::TestListResultsResponse::Item::RowsBody, nil] The body of the rows request. + + # The status of the test. + # + # @see Openlayer::Models::TestListResultsResponse::Item#status + module Status + extend Openlayer::Internal::Type::Enum + + RUNNING = :running + PASSING = :passing + FAILING = :failing + SKIPPED = :skipped + ERROR = :error + + # @!method self.values + # @return [Array] + end + + class ExpectedValue < Openlayer::Internal::Type::BaseModel + # @!attribute lower_threshold + # the lower threshold for the expected value + # + # @return [Float, nil] + optional :lower_threshold, Float, api_name: :lowerThreshold, nil?: true + + # @!attribute measurement + # One of the `measurement` values in the test's thresholds + # + # @return [String, nil] + optional :measurement, String + + # @!attribute upper_threshold + # The upper threshold for the expected value + # + # @return [Float, nil] + optional :upper_threshold, Float, api_name: :upperThreshold, nil?: true + + # @!method initialize(lower_threshold: nil, measurement: nil, upper_threshold: nil) + # @param lower_threshold [Float, nil] the lower threshold for the expected value + # + # @param measurement [String] One of the `measurement` values in the test's thresholds + # + # @param upper_threshold [Float, nil] The upper threshold for the expected value + end + + # @see Openlayer::Models::TestListResultsResponse::Item#goal + class Goal < Openlayer::Internal::Type::BaseModel + # @!attribute description + # The test description. + # + # @return [Object, nil] + required :description, Openlayer::Internal::Type::Unknown, nil?: true + + # @!attribute name + # The test name. + # + # @return [String] + required :name, String + + # @!attribute subtype + # The test subtype. + # + # @return [Symbol, Openlayer::Models::TestListResultsResponse::Item::Goal::Subtype] + required :subtype, enum: -> { Openlayer::Models::TestListResultsResponse::Item::Goal::Subtype } + + # @!attribute thresholds + # + # @return [Array] + required :thresholds, + -> { Openlayer::Internal::Type::ArrayOf[Openlayer::Models::TestListResultsResponse::Item::Goal::Threshold] } + + # @!attribute type + # The test type. + # + # @return [Symbol, Openlayer::Models::TestListResultsResponse::Item::Goal::Type] + required :type, enum: -> { Openlayer::Models::TestListResultsResponse::Item::Goal::Type } + + # @!attribute archived + # Whether the test is archived. + # + # @return [Boolean, nil] + optional :archived, Openlayer::Internal::Type::Boolean + + # @!attribute delay_window + # The delay window in seconds. Only applies to tests that use production data. + # + # @return [Float, nil] + optional :delay_window, Float, api_name: :delayWindow, nil?: true + + # @!attribute evaluation_window + # The evaluation window in seconds. Only applies to tests that use production + # data. + # + # @return [Float, nil] + optional :evaluation_window, Float, api_name: :evaluationWindow, nil?: true + + # @!attribute uses_ml_model + # Whether the test uses an ML model. + # + # @return [Boolean, nil] + optional :uses_ml_model, Openlayer::Internal::Type::Boolean, api_name: :usesMlModel + + # @!attribute uses_production_data + # Whether the test uses production data (monitoring mode only). + # + # @return [Boolean, nil] + optional :uses_production_data, Openlayer::Internal::Type::Boolean, api_name: :usesProductionData + + # @!attribute uses_reference_dataset + # Whether the test uses a reference dataset (monitoring mode only). + # + # @return [Boolean, nil] + optional :uses_reference_dataset, + Openlayer::Internal::Type::Boolean, + api_name: :usesReferenceDataset + + # @!attribute uses_training_dataset + # Whether the test uses a training dataset. + # + # @return [Boolean, nil] + optional :uses_training_dataset, Openlayer::Internal::Type::Boolean, api_name: :usesTrainingDataset + + # @!attribute uses_validation_dataset + # Whether the test uses a validation dataset. + # + # @return [Boolean, nil] + optional :uses_validation_dataset, + Openlayer::Internal::Type::Boolean, + api_name: :usesValidationDataset + + response_only do + # @!attribute id + # The test id. + # + # @return [String] + required :id, String + + # @!attribute comment_count + # The number of comments on the test. + # + # @return [Integer] + required :comment_count, Integer, api_name: :commentCount + + # @!attribute creator_id + # The test creator id. + # + # @return [String, nil] + required :creator_id, String, api_name: :creatorId, nil?: true + + # @!attribute date_archived + # The date the test was archived. + # + # @return [Time, nil] + required :date_archived, Time, api_name: :dateArchived, nil?: true + + # @!attribute date_created + # The creation date. + # + # @return [Time] + required :date_created, Time, api_name: :dateCreated + + # @!attribute date_updated + # The last updated date. + # + # @return [Time] + required :date_updated, Time, api_name: :dateUpdated + + # @!attribute number + # The test number. + # + # @return [Integer] + required :number, Integer + + # @!attribute origin_project_version_id + # The project version (commit) id where the test was created. + # + # @return [String, nil] + required :origin_project_version_id, String, api_name: :originProjectVersionId, nil?: true + + # @!attribute suggested + # Whether the test is suggested or user-created. + # + # @return [Boolean] + required :suggested, Openlayer::Internal::Type::Boolean + end + + # @!method initialize(id:, comment_count:, creator_id:, date_archived:, date_created:, date_updated:, description:, name:, number:, origin_project_version_id:, subtype:, suggested:, thresholds:, type:, archived: nil, delay_window: nil, evaluation_window: nil, uses_ml_model: nil, uses_production_data: nil, uses_reference_dataset: nil, uses_training_dataset: nil, uses_validation_dataset: nil) + # Some parameter documentations has been truncated, see + # {Openlayer::Models::TestListResultsResponse::Item::Goal} for more details. + # + # @param id [String] The test id. + # + # @param comment_count [Integer] The number of comments on the test. + # + # @param creator_id [String, nil] The test creator id. + # + # @param date_archived [Time, nil] The date the test was archived. + # + # @param date_created [Time] The creation date. + # + # @param date_updated [Time] The last updated date. + # + # @param description [Object, nil] The test description. + # + # @param name [String] The test name. + # + # @param number [Integer] The test number. + # + # @param origin_project_version_id [String, nil] The project version (commit) id where the test was created. + # + # @param subtype [Symbol, Openlayer::Models::TestListResultsResponse::Item::Goal::Subtype] The test subtype. + # + # @param suggested [Boolean] Whether the test is suggested or user-created. + # + # @param thresholds [Array] + # + # @param type [Symbol, Openlayer::Models::TestListResultsResponse::Item::Goal::Type] The test type. + # + # @param archived [Boolean] Whether the test is archived. + # + # @param delay_window [Float, nil] The delay window in seconds. Only applies to tests that use production data. + # + # @param evaluation_window [Float, nil] The evaluation window in seconds. Only applies to tests that use production data + # + # @param uses_ml_model [Boolean] Whether the test uses an ML model. + # + # @param uses_production_data [Boolean] Whether the test uses production data (monitoring mode only). + # + # @param uses_reference_dataset [Boolean] Whether the test uses a reference dataset (monitoring mode only). + # + # @param uses_training_dataset [Boolean] Whether the test uses a training dataset. + # + # @param uses_validation_dataset [Boolean] Whether the test uses a validation dataset. + + # The test subtype. + # + # @see Openlayer::Models::TestListResultsResponse::Item::Goal#subtype + module Subtype + extend Openlayer::Internal::Type::Enum + + ANOMALOUS_COLUMN_COUNT = :anomalousColumnCount + CHARACTER_LENGTH = :characterLength + CLASS_IMBALANCE_RATIO = :classImbalanceRatio + EXPECT_COLUMN_A_TO_BE_IN_COLUMN_B = :expectColumnAToBeInColumnB + COLUMN_AVERAGE = :columnAverage + COLUMN_DRIFT = :columnDrift + COLUMN_STATISTIC = :columnStatistic + COLUMN_VALUES_MATCH = :columnValuesMatch + CONFLICTING_LABEL_ROW_COUNT = :conflictingLabelRowCount + CONTAINS_PII = :containsPii + CONTAINS_VALID_URL = :containsValidUrl + CORRELATED_FEATURE_COUNT = :correlatedFeatureCount + CUSTOM_METRIC_THRESHOLD = :customMetricThreshold + DUPLICATE_ROW_COUNT = :duplicateRowCount + EMPTY_FEATURE = :emptyFeature + EMPTY_FEATURE_COUNT = :emptyFeatureCount + DRIFTED_FEATURE_COUNT = :driftedFeatureCount + FEATURE_MISSING_VALUES = :featureMissingValues + FEATURE_VALUE_VALIDATION = :featureValueValidation + GREAT_EXPECTATIONS = :greatExpectations + GROUP_BY_COLUMN_STATS_CHECK = :groupByColumnStatsCheck + ILL_FORMED_ROW_COUNT = :illFormedRowCount + IS_CODE = :isCode + IS_JSON = :isJson + LLM_RUBRIC_THRESHOLD_V2 = :llmRubricThresholdV2 + LABEL_DRIFT = :labelDrift + METRIC_THRESHOLD = :metricThreshold + NEW_CATEGORY_COUNT = :newCategoryCount + NEW_LABEL_COUNT = :newLabelCount + NULL_ROW_COUNT = :nullRowCount + ROW_COUNT = :rowCount + PP_SCORE_VALUE_VALIDATION = :ppScoreValueValidation + QUASI_CONSTANT_FEATURE = :quasiConstantFeature + QUASI_CONSTANT_FEATURE_COUNT = :quasiConstantFeatureCount + SQL_QUERY = :sqlQuery + DTYPE_VALIDATION = :dtypeValidation + SENTENCE_LENGTH = :sentenceLength + SIZE_RATIO = :sizeRatio + SPECIAL_CHARACTERS_RATIO = :specialCharactersRatio + STRING_VALIDATION = :stringValidation + TRAIN_VAL_LEAKAGE_ROW_COUNT = :trainValLeakageRowCount + + # @!method self.values + # @return [Array] + end + + class Threshold < Openlayer::Internal::Type::BaseModel + # @!attribute insight_name + # The insight name to be evaluated. + # + # @return [Symbol, Openlayer::Models::TestListResultsResponse::Item::Goal::Threshold::InsightName, nil] + optional :insight_name, + enum: -> { Openlayer::Models::TestListResultsResponse::Item::Goal::Threshold::InsightName }, + api_name: :insightName + + # @!attribute insight_parameters + # The insight parameters. Required only for some test subtypes. For example, for + # tests that require a column name, the insight parameters will be [{'name': + # 'column_name', 'value': 'Age'}] + # + # @return [Array, nil] + optional :insight_parameters, + -> { Openlayer::Internal::Type::ArrayOf[Openlayer::Models::TestListResultsResponse::Item::Goal::Threshold::InsightParameter] }, + api_name: :insightParameters, + nil?: true + + # @!attribute measurement + # The measurement to be evaluated. + # + # @return [String, nil] + optional :measurement, String + + # @!attribute operator + # The operator to be used for the evaluation. + # + # @return [Symbol, Openlayer::Models::TestListResultsResponse::Item::Goal::Threshold::Operator, nil] + optional :operator, + enum: -> { Openlayer::Models::TestListResultsResponse::Item::Goal::Threshold::Operator } + + # @!attribute threshold_mode + # Whether to use automatic anomaly detection or manual thresholds + # + # @return [Symbol, Openlayer::Models::TestListResultsResponse::Item::Goal::Threshold::ThresholdMode, nil] + optional :threshold_mode, + enum: -> { Openlayer::Models::TestListResultsResponse::Item::Goal::Threshold::ThresholdMode }, + api_name: :thresholdMode + + # @!attribute value + # The value to be compared. + # + # @return [Float, Boolean, String, Array, nil] + optional :value, union: -> { Openlayer::Models::TestListResultsResponse::Item::Goal::Threshold::Value } + + # @!method initialize(insight_name: nil, insight_parameters: nil, measurement: nil, operator: nil, threshold_mode: nil, value: nil) + # Some parameter documentations has been truncated, see + # {Openlayer::Models::TestListResultsResponse::Item::Goal::Threshold} for more + # details. + # + # @param insight_name [Symbol, Openlayer::Models::TestListResultsResponse::Item::Goal::Threshold::InsightName] The insight name to be evaluated. + # + # @param insight_parameters [Array, nil] The insight parameters. Required only for some test subtypes. For example, for t + # + # @param measurement [String] The measurement to be evaluated. + # + # @param operator [Symbol, Openlayer::Models::TestListResultsResponse::Item::Goal::Threshold::Operator] The operator to be used for the evaluation. + # + # @param threshold_mode [Symbol, Openlayer::Models::TestListResultsResponse::Item::Goal::Threshold::ThresholdMode] Whether to use automatic anomaly detection or manual thresholds + # + # @param value [Float, Boolean, String, Array] The value to be compared. + + # The insight name to be evaluated. + # + # @see Openlayer::Models::TestListResultsResponse::Item::Goal::Threshold#insight_name + module InsightName + extend Openlayer::Internal::Type::Enum + + CHARACTER_LENGTH = :characterLength + CLASS_IMBALANCE = :classImbalance + EXPECT_COLUMN_A_TO_BE_IN_COLUMN_B = :expectColumnAToBeInColumnB + COLUMN_AVERAGE = :columnAverage + COLUMN_DRIFT = :columnDrift + COLUMN_VALUES_MATCH = :columnValuesMatch + CONFIDENCE_DISTRIBUTION = :confidenceDistribution + CONFLICTING_LABEL_ROW_COUNT = :conflictingLabelRowCount + CONTAINS_PII = :containsPii + CONTAINS_VALID_URL = :containsValidUrl + CORRELATED_FEATURES = :correlatedFeatures + CUSTOM_METRIC = :customMetric + DUPLICATE_ROW_COUNT = :duplicateRowCount + EMPTY_FEATURES = :emptyFeatures + FEATURE_DRIFT = :featureDrift + FEATURE_PROFILE = :featureProfile + GREAT_EXPECTATIONS = :greatExpectations + GROUP_BY_COLUMN_STATS_CHECK = :groupByColumnStatsCheck + ILL_FORMED_ROW_COUNT = :illFormedRowCount + IS_CODE = :isCode + IS_JSON = :isJson + LLM_RUBRIC_V2 = :llmRubricV2 + LABEL_DRIFT = :labelDrift + METRICS = :metrics + NEW_CATEGORIES = :newCategories + NEW_LABELS = :newLabels + NULL_ROW_COUNT = :nullRowCount + PP_SCORE = :ppScore + QUASI_CONSTANT_FEATURES = :quasiConstantFeatures + SENTENCE_LENGTH = :sentenceLength + SIZE_RATIO = :sizeRatio + SPECIAL_CHARACTERS = :specialCharacters + STRING_VALIDATION = :stringValidation + TRAIN_VAL_LEAKAGE_ROW_COUNT = :trainValLeakageRowCount + + # @!method self.values + # @return [Array] + end + + class InsightParameter < Openlayer::Internal::Type::BaseModel + # @!attribute name + # The name of the insight filter. + # + # @return [String] + required :name, String + + # @!attribute value + # + # @return [Object] + required :value, Openlayer::Internal::Type::Unknown + + # @!method initialize(name:, value:) + # @param name [String] The name of the insight filter. + # + # @param value [Object] + end + + # The operator to be used for the evaluation. + # + # @see Openlayer::Models::TestListResultsResponse::Item::Goal::Threshold#operator + module Operator + extend Openlayer::Internal::Type::Enum + + IS = :is + GREATER = :> + GREATER_OR_EQUALS = :">=" + LESS = :< + LESS_OR_EQUALS = :"<=" + NOT_EQUALS = :"!=" + + # @!method self.values + # @return [Array] + end + + # Whether to use automatic anomaly detection or manual thresholds + # + # @see Openlayer::Models::TestListResultsResponse::Item::Goal::Threshold#threshold_mode + module ThresholdMode + extend Openlayer::Internal::Type::Enum + + AUTOMATIC = :automatic + MANUAL = :manual + + # @!method self.values + # @return [Array] + end + + # The value to be compared. + # + # @see Openlayer::Models::TestListResultsResponse::Item::Goal::Threshold#value + module Value + extend Openlayer::Internal::Type::Union + + variant Float + + variant Openlayer::Internal::Type::Boolean + + variant String + + variant -> { Openlayer::Models::TestListResultsResponse::Item::Goal::Threshold::Value::StringArray } + + # @!method self.variants + # @return [Array(Float, Boolean, String, Array)] + + # @type [Openlayer::Internal::Type::Converter] + StringArray = Openlayer::Internal::Type::ArrayOf[String] + end + end + + # The test type. + # + # @see Openlayer::Models::TestListResultsResponse::Item::Goal#type + module Type + extend Openlayer::Internal::Type::Enum + + INTEGRITY = :integrity + CONSISTENCY = :consistency + PERFORMANCE = :performance + + # @!method self.values + # @return [Array] + end + end + + # @see Openlayer::Models::TestListResultsResponse::Item#rows_body + class RowsBody < Openlayer::Internal::Type::BaseModel + # @!attribute column_filters + # + # @return [Array, nil] + optional :column_filters, + -> { Openlayer::Internal::Type::ArrayOf[union: Openlayer::Models::TestListResultsResponse::Item::RowsBody::ColumnFilter] }, + api_name: :columnFilters, + nil?: true + + # @!attribute exclude_row_id_list + # + # @return [Array, nil] + optional :exclude_row_id_list, + Openlayer::Internal::Type::ArrayOf[Integer], + api_name: :excludeRowIdList, + nil?: true + + # @!attribute not_search_query_and + # + # @return [Array, nil] + optional :not_search_query_and, + Openlayer::Internal::Type::ArrayOf[String], + api_name: :notSearchQueryAnd, + nil?: true + + # @!attribute not_search_query_or + # + # @return [Array, nil] + optional :not_search_query_or, + Openlayer::Internal::Type::ArrayOf[String], + api_name: :notSearchQueryOr, + nil?: true + + # @!attribute row_id_list + # + # @return [Array, nil] + optional :row_id_list, Openlayer::Internal::Type::ArrayOf[Integer], api_name: :rowIdList, nil?: true + + # @!attribute search_query_and + # + # @return [Array, nil] + optional :search_query_and, + Openlayer::Internal::Type::ArrayOf[String], + api_name: :searchQueryAnd, + nil?: true + + # @!attribute search_query_or + # + # @return [Array, nil] + optional :search_query_or, + Openlayer::Internal::Type::ArrayOf[String], + api_name: :searchQueryOr, + nil?: true + + # @!method initialize(column_filters: nil, exclude_row_id_list: nil, not_search_query_and: nil, not_search_query_or: nil, row_id_list: nil, search_query_and: nil, search_query_or: nil) + # The body of the rows request. + # + # @param column_filters [Array, nil] + # @param exclude_row_id_list [Array, nil] + # @param not_search_query_and [Array, nil] + # @param not_search_query_or [Array, nil] + # @param row_id_list [Array, nil] + # @param search_query_and [Array, nil] + # @param search_query_or [Array, nil] + + module ColumnFilter + extend Openlayer::Internal::Type::Union + + variant -> { Openlayer::Models::TestListResultsResponse::Item::RowsBody::ColumnFilter::SetColumnFilter } + + variant -> { Openlayer::Models::TestListResultsResponse::Item::RowsBody::ColumnFilter::NumericColumnFilter } + + variant -> { Openlayer::Models::TestListResultsResponse::Item::RowsBody::ColumnFilter::StringColumnFilter } + + class SetColumnFilter < Openlayer::Internal::Type::BaseModel + # @!attribute measurement + # The name of the column. + # + # @return [String] + required :measurement, String + + # @!attribute operator + # + # @return [Symbol, Openlayer::Models::TestListResultsResponse::Item::RowsBody::ColumnFilter::SetColumnFilter::Operator] + required :operator, + enum: -> { Openlayer::Models::TestListResultsResponse::Item::RowsBody::ColumnFilter::SetColumnFilter::Operator } + + # @!attribute value + # + # @return [Array] + required :value, + -> { Openlayer::Internal::Type::ArrayOf[union: Openlayer::Models::TestListResultsResponse::Item::RowsBody::ColumnFilter::SetColumnFilter::Value] } + + # @!method initialize(measurement:, operator:, value:) + # @param measurement [String] The name of the column. + # + # @param operator [Symbol, Openlayer::Models::TestListResultsResponse::Item::RowsBody::ColumnFilter::SetColumnFilter::Operator] + # + # @param value [Array] + + # @see Openlayer::Models::TestListResultsResponse::Item::RowsBody::ColumnFilter::SetColumnFilter#operator + module Operator + extend Openlayer::Internal::Type::Enum + + CONTAINS_NONE = :contains_none + CONTAINS_ANY = :contains_any + CONTAINS_ALL = :contains_all + ONE_OF = :one_of + NONE_OF = :none_of + + # @!method self.values + # @return [Array] + end + + module Value + extend Openlayer::Internal::Type::Union + + variant String + + variant Float + + # @!method self.variants + # @return [Array(String, Float)] + end + end + + class NumericColumnFilter < Openlayer::Internal::Type::BaseModel + # @!attribute measurement + # The name of the column. + # + # @return [String] + required :measurement, String + + # @!attribute operator + # + # @return [Symbol, Openlayer::Models::TestListResultsResponse::Item::RowsBody::ColumnFilter::NumericColumnFilter::Operator] + required :operator, + enum: -> { Openlayer::Models::TestListResultsResponse::Item::RowsBody::ColumnFilter::NumericColumnFilter::Operator } + + # @!attribute value + # + # @return [Float, nil] + required :value, Float, nil?: true + + # @!method initialize(measurement:, operator:, value:) + # @param measurement [String] The name of the column. + # + # @param operator [Symbol, Openlayer::Models::TestListResultsResponse::Item::RowsBody::ColumnFilter::NumericColumnFilter::Operator] + # + # @param value [Float, nil] + + # @see Openlayer::Models::TestListResultsResponse::Item::RowsBody::ColumnFilter::NumericColumnFilter#operator + module Operator + extend Openlayer::Internal::Type::Enum + + GREATER = :> + GREATER_OR_EQUALS = :">=" + IS = :is + LESS = :< + LESS_OR_EQUALS = :"<=" + NOT_EQUALS = :"!=" + + # @!method self.values + # @return [Array] + end + end + + class StringColumnFilter < Openlayer::Internal::Type::BaseModel + # @!attribute measurement + # The name of the column. + # + # @return [String] + required :measurement, String + + # @!attribute operator + # + # @return [Symbol, Openlayer::Models::TestListResultsResponse::Item::RowsBody::ColumnFilter::StringColumnFilter::Operator] + required :operator, + enum: -> { Openlayer::Models::TestListResultsResponse::Item::RowsBody::ColumnFilter::StringColumnFilter::Operator } + + # @!attribute value + # + # @return [String, Boolean] + required :value, + union: -> { Openlayer::Models::TestListResultsResponse::Item::RowsBody::ColumnFilter::StringColumnFilter::Value } + + # @!method initialize(measurement:, operator:, value:) + # @param measurement [String] The name of the column. + # + # @param operator [Symbol, Openlayer::Models::TestListResultsResponse::Item::RowsBody::ColumnFilter::StringColumnFilter::Operator] + # + # @param value [String, Boolean] + + # @see Openlayer::Models::TestListResultsResponse::Item::RowsBody::ColumnFilter::StringColumnFilter#operator + module Operator + extend Openlayer::Internal::Type::Enum + + IS = :is + NOT_EQUALS = :"!=" + + # @!method self.values + # @return [Array] + end + + # @see Openlayer::Models::TestListResultsResponse::Item::RowsBody::ColumnFilter::StringColumnFilter#value + module Value + extend Openlayer::Internal::Type::Union + + variant String + + variant Openlayer::Internal::Type::Boolean + + # @!method self.variants + # @return [Array(String, Boolean)] + end + end + + # @!method self.variants + # @return [Array(Openlayer::Models::TestListResultsResponse::Item::RowsBody::ColumnFilter::SetColumnFilter, Openlayer::Models::TestListResultsResponse::Item::RowsBody::ColumnFilter::NumericColumnFilter, Openlayer::Models::TestListResultsResponse::Item::RowsBody::ColumnFilter::StringColumnFilter)] + end + end + end + + # @see Openlayer::Models::TestListResultsResponse#last_unskipped_result + class LastUnskippedResult < Openlayer::Internal::Type::BaseModel + # @!attribute status + # The status of the test. + # + # @return [Symbol, Openlayer::Models::TestListResultsResponse::LastUnskippedResult::Status] + required :status, enum: -> { Openlayer::Models::TestListResultsResponse::LastUnskippedResult::Status } + + # @!attribute status_message + # The status message. + # + # @return [String, nil] + required :status_message, String, api_name: :statusMessage, nil?: true + + # @!attribute expected_values + # + # @return [Array, nil] + optional :expected_values, + -> { Openlayer::Internal::Type::ArrayOf[Openlayer::Models::TestListResultsResponse::LastUnskippedResult::ExpectedValue] }, + api_name: :expectedValues + + # @!attribute goal + # + # @return [Openlayer::Models::TestListResultsResponse::LastUnskippedResult::Goal, nil] + optional :goal, -> { Openlayer::Models::TestListResultsResponse::LastUnskippedResult::Goal } + + # @!attribute rows + # The URL to the rows of the test result. + # + # @return [String, nil] + optional :rows, String + + # @!attribute rows_body + # The body of the rows request. + # + # @return [Openlayer::Models::TestListResultsResponse::LastUnskippedResult::RowsBody, nil] + optional :rows_body, + -> { Openlayer::Models::TestListResultsResponse::LastUnskippedResult::RowsBody }, + api_name: :rowsBody, + nil?: true + + response_only do + # @!attribute id + # Project version (commit) id. + # + # @return [String] + required :id, String + + # @!attribute date_created + # The creation date. + # + # @return [Time] + required :date_created, Time, api_name: :dateCreated + + # @!attribute date_data_ends + # The data end date. + # + # @return [Time, nil] + required :date_data_ends, Time, api_name: :dateDataEnds, nil?: true + + # @!attribute date_data_starts + # The data start date. + # + # @return [Time, nil] + required :date_data_starts, Time, api_name: :dateDataStarts, nil?: true + + # @!attribute date_updated + # The last updated date. + # + # @return [Time] + required :date_updated, Time, api_name: :dateUpdated + + # @!attribute inference_pipeline_id + # The inference pipeline id. + # + # @return [String, nil] + required :inference_pipeline_id, String, api_name: :inferencePipelineId, nil?: true + + # @!attribute project_version_id + # The project version (commit) id. + # + # @return [String, nil] + required :project_version_id, String, api_name: :projectVersionId, nil?: true + + # @!attribute goal_id + # The test id. + # + # @return [String, nil] + optional :goal_id, String, api_name: :goalId, nil?: true + end + + # @!method initialize(id:, date_created:, date_data_ends:, date_data_starts:, date_updated:, inference_pipeline_id:, project_version_id:, status:, status_message:, expected_values: nil, goal: nil, goal_id: nil, rows: nil, rows_body: nil) + # @param id [String] Project version (commit) id. + # + # @param date_created [Time] The creation date. + # + # @param date_data_ends [Time, nil] The data end date. + # + # @param date_data_starts [Time, nil] The data start date. + # + # @param date_updated [Time] The last updated date. + # + # @param inference_pipeline_id [String, nil] The inference pipeline id. + # + # @param project_version_id [String, nil] The project version (commit) id. + # + # @param status [Symbol, Openlayer::Models::TestListResultsResponse::LastUnskippedResult::Status] The status of the test. + # + # @param status_message [String, nil] The status message. + # + # @param expected_values [Array] + # + # @param goal [Openlayer::Models::TestListResultsResponse::LastUnskippedResult::Goal] + # + # @param goal_id [String, nil] The test id. + # + # @param rows [String] The URL to the rows of the test result. + # + # @param rows_body [Openlayer::Models::TestListResultsResponse::LastUnskippedResult::RowsBody, nil] The body of the rows request. + + # The status of the test. + # + # @see Openlayer::Models::TestListResultsResponse::LastUnskippedResult#status + module Status + extend Openlayer::Internal::Type::Enum + + RUNNING = :running + PASSING = :passing + FAILING = :failing + SKIPPED = :skipped + ERROR = :error + + # @!method self.values + # @return [Array] + end + + class ExpectedValue < Openlayer::Internal::Type::BaseModel + # @!attribute lower_threshold + # the lower threshold for the expected value + # + # @return [Float, nil] + optional :lower_threshold, Float, api_name: :lowerThreshold, nil?: true + + # @!attribute measurement + # One of the `measurement` values in the test's thresholds + # + # @return [String, nil] + optional :measurement, String + + # @!attribute upper_threshold + # The upper threshold for the expected value + # + # @return [Float, nil] + optional :upper_threshold, Float, api_name: :upperThreshold, nil?: true + + # @!method initialize(lower_threshold: nil, measurement: nil, upper_threshold: nil) + # @param lower_threshold [Float, nil] the lower threshold for the expected value + # + # @param measurement [String] One of the `measurement` values in the test's thresholds + # + # @param upper_threshold [Float, nil] The upper threshold for the expected value + end + + # @see Openlayer::Models::TestListResultsResponse::LastUnskippedResult#goal + class Goal < Openlayer::Internal::Type::BaseModel + # @!attribute description + # The test description. + # + # @return [Object, nil] + required :description, Openlayer::Internal::Type::Unknown, nil?: true + + # @!attribute name + # The test name. + # + # @return [String] + required :name, String + + # @!attribute subtype + # The test subtype. + # + # @return [Symbol, Openlayer::Models::TestListResultsResponse::LastUnskippedResult::Goal::Subtype] + required :subtype, + enum: -> { Openlayer::Models::TestListResultsResponse::LastUnskippedResult::Goal::Subtype } + + # @!attribute thresholds + # + # @return [Array] + required :thresholds, + -> { Openlayer::Internal::Type::ArrayOf[Openlayer::Models::TestListResultsResponse::LastUnskippedResult::Goal::Threshold] } + + # @!attribute type + # The test type. + # + # @return [Symbol, Openlayer::Models::TestListResultsResponse::LastUnskippedResult::Goal::Type] + required :type, enum: -> { Openlayer::Models::TestListResultsResponse::LastUnskippedResult::Goal::Type } + + # @!attribute archived + # Whether the test is archived. + # + # @return [Boolean, nil] + optional :archived, Openlayer::Internal::Type::Boolean + + # @!attribute delay_window + # The delay window in seconds. Only applies to tests that use production data. + # + # @return [Float, nil] + optional :delay_window, Float, api_name: :delayWindow, nil?: true + + # @!attribute evaluation_window + # The evaluation window in seconds. Only applies to tests that use production + # data. + # + # @return [Float, nil] + optional :evaluation_window, Float, api_name: :evaluationWindow, nil?: true + + # @!attribute uses_ml_model + # Whether the test uses an ML model. + # + # @return [Boolean, nil] + optional :uses_ml_model, Openlayer::Internal::Type::Boolean, api_name: :usesMlModel + + # @!attribute uses_production_data + # Whether the test uses production data (monitoring mode only). + # + # @return [Boolean, nil] + optional :uses_production_data, Openlayer::Internal::Type::Boolean, api_name: :usesProductionData + + # @!attribute uses_reference_dataset + # Whether the test uses a reference dataset (monitoring mode only). + # + # @return [Boolean, nil] + optional :uses_reference_dataset, + Openlayer::Internal::Type::Boolean, + api_name: :usesReferenceDataset + + # @!attribute uses_training_dataset + # Whether the test uses a training dataset. + # + # @return [Boolean, nil] + optional :uses_training_dataset, Openlayer::Internal::Type::Boolean, api_name: :usesTrainingDataset + + # @!attribute uses_validation_dataset + # Whether the test uses a validation dataset. + # + # @return [Boolean, nil] + optional :uses_validation_dataset, + Openlayer::Internal::Type::Boolean, + api_name: :usesValidationDataset + + response_only do + # @!attribute id + # The test id. + # + # @return [String] + required :id, String + + # @!attribute comment_count + # The number of comments on the test. + # + # @return [Integer] + required :comment_count, Integer, api_name: :commentCount + + # @!attribute creator_id + # The test creator id. + # + # @return [String, nil] + required :creator_id, String, api_name: :creatorId, nil?: true + + # @!attribute date_archived + # The date the test was archived. + # + # @return [Time, nil] + required :date_archived, Time, api_name: :dateArchived, nil?: true + + # @!attribute date_created + # The creation date. + # + # @return [Time] + required :date_created, Time, api_name: :dateCreated + + # @!attribute date_updated + # The last updated date. + # + # @return [Time] + required :date_updated, Time, api_name: :dateUpdated + + # @!attribute number + # The test number. + # + # @return [Integer] + required :number, Integer + + # @!attribute origin_project_version_id + # The project version (commit) id where the test was created. + # + # @return [String, nil] + required :origin_project_version_id, String, api_name: :originProjectVersionId, nil?: true + + # @!attribute suggested + # Whether the test is suggested or user-created. + # + # @return [Boolean] + required :suggested, Openlayer::Internal::Type::Boolean + end + + # @!method initialize(id:, comment_count:, creator_id:, date_archived:, date_created:, date_updated:, description:, name:, number:, origin_project_version_id:, subtype:, suggested:, thresholds:, type:, archived: nil, delay_window: nil, evaluation_window: nil, uses_ml_model: nil, uses_production_data: nil, uses_reference_dataset: nil, uses_training_dataset: nil, uses_validation_dataset: nil) + # Some parameter documentations has been truncated, see + # {Openlayer::Models::TestListResultsResponse::LastUnskippedResult::Goal} for more + # details. + # + # @param id [String] The test id. + # + # @param comment_count [Integer] The number of comments on the test. + # + # @param creator_id [String, nil] The test creator id. + # + # @param date_archived [Time, nil] The date the test was archived. + # + # @param date_created [Time] The creation date. + # + # @param date_updated [Time] The last updated date. + # + # @param description [Object, nil] The test description. + # + # @param name [String] The test name. + # + # @param number [Integer] The test number. + # + # @param origin_project_version_id [String, nil] The project version (commit) id where the test was created. + # + # @param subtype [Symbol, Openlayer::Models::TestListResultsResponse::LastUnskippedResult::Goal::Subtype] The test subtype. + # + # @param suggested [Boolean] Whether the test is suggested or user-created. + # + # @param thresholds [Array] + # + # @param type [Symbol, Openlayer::Models::TestListResultsResponse::LastUnskippedResult::Goal::Type] The test type. + # + # @param archived [Boolean] Whether the test is archived. + # + # @param delay_window [Float, nil] The delay window in seconds. Only applies to tests that use production data. + # + # @param evaluation_window [Float, nil] The evaluation window in seconds. Only applies to tests that use production data + # + # @param uses_ml_model [Boolean] Whether the test uses an ML model. + # + # @param uses_production_data [Boolean] Whether the test uses production data (monitoring mode only). + # + # @param uses_reference_dataset [Boolean] Whether the test uses a reference dataset (monitoring mode only). + # + # @param uses_training_dataset [Boolean] Whether the test uses a training dataset. + # + # @param uses_validation_dataset [Boolean] Whether the test uses a validation dataset. + + # The test subtype. + # + # @see Openlayer::Models::TestListResultsResponse::LastUnskippedResult::Goal#subtype + module Subtype + extend Openlayer::Internal::Type::Enum + + ANOMALOUS_COLUMN_COUNT = :anomalousColumnCount + CHARACTER_LENGTH = :characterLength + CLASS_IMBALANCE_RATIO = :classImbalanceRatio + EXPECT_COLUMN_A_TO_BE_IN_COLUMN_B = :expectColumnAToBeInColumnB + COLUMN_AVERAGE = :columnAverage + COLUMN_DRIFT = :columnDrift + COLUMN_STATISTIC = :columnStatistic + COLUMN_VALUES_MATCH = :columnValuesMatch + CONFLICTING_LABEL_ROW_COUNT = :conflictingLabelRowCount + CONTAINS_PII = :containsPii + CONTAINS_VALID_URL = :containsValidUrl + CORRELATED_FEATURE_COUNT = :correlatedFeatureCount + CUSTOM_METRIC_THRESHOLD = :customMetricThreshold + DUPLICATE_ROW_COUNT = :duplicateRowCount + EMPTY_FEATURE = :emptyFeature + EMPTY_FEATURE_COUNT = :emptyFeatureCount + DRIFTED_FEATURE_COUNT = :driftedFeatureCount + FEATURE_MISSING_VALUES = :featureMissingValues + FEATURE_VALUE_VALIDATION = :featureValueValidation + GREAT_EXPECTATIONS = :greatExpectations + GROUP_BY_COLUMN_STATS_CHECK = :groupByColumnStatsCheck + ILL_FORMED_ROW_COUNT = :illFormedRowCount + IS_CODE = :isCode + IS_JSON = :isJson + LLM_RUBRIC_THRESHOLD_V2 = :llmRubricThresholdV2 + LABEL_DRIFT = :labelDrift + METRIC_THRESHOLD = :metricThreshold + NEW_CATEGORY_COUNT = :newCategoryCount + NEW_LABEL_COUNT = :newLabelCount + NULL_ROW_COUNT = :nullRowCount + ROW_COUNT = :rowCount + PP_SCORE_VALUE_VALIDATION = :ppScoreValueValidation + QUASI_CONSTANT_FEATURE = :quasiConstantFeature + QUASI_CONSTANT_FEATURE_COUNT = :quasiConstantFeatureCount + SQL_QUERY = :sqlQuery + DTYPE_VALIDATION = :dtypeValidation + SENTENCE_LENGTH = :sentenceLength + SIZE_RATIO = :sizeRatio + SPECIAL_CHARACTERS_RATIO = :specialCharactersRatio + STRING_VALIDATION = :stringValidation + TRAIN_VAL_LEAKAGE_ROW_COUNT = :trainValLeakageRowCount + + # @!method self.values + # @return [Array] + end + + class Threshold < Openlayer::Internal::Type::BaseModel + # @!attribute insight_name + # The insight name to be evaluated. + # + # @return [Symbol, Openlayer::Models::TestListResultsResponse::LastUnskippedResult::Goal::Threshold::InsightName, nil] + optional :insight_name, + enum: -> { Openlayer::Models::TestListResultsResponse::LastUnskippedResult::Goal::Threshold::InsightName }, + api_name: :insightName + + # @!attribute insight_parameters + # The insight parameters. Required only for some test subtypes. For example, for + # tests that require a column name, the insight parameters will be [{'name': + # 'column_name', 'value': 'Age'}] + # + # @return [Array, nil] + optional :insight_parameters, + -> { Openlayer::Internal::Type::ArrayOf[Openlayer::Models::TestListResultsResponse::LastUnskippedResult::Goal::Threshold::InsightParameter] }, + api_name: :insightParameters, + nil?: true + + # @!attribute measurement + # The measurement to be evaluated. + # + # @return [String, nil] + optional :measurement, String + + # @!attribute operator + # The operator to be used for the evaluation. + # + # @return [Symbol, Openlayer::Models::TestListResultsResponse::LastUnskippedResult::Goal::Threshold::Operator, nil] + optional :operator, + enum: -> { Openlayer::Models::TestListResultsResponse::LastUnskippedResult::Goal::Threshold::Operator } + + # @!attribute threshold_mode + # Whether to use automatic anomaly detection or manual thresholds + # + # @return [Symbol, Openlayer::Models::TestListResultsResponse::LastUnskippedResult::Goal::Threshold::ThresholdMode, nil] + optional :threshold_mode, + enum: -> { Openlayer::Models::TestListResultsResponse::LastUnskippedResult::Goal::Threshold::ThresholdMode }, + api_name: :thresholdMode + + # @!attribute value + # The value to be compared. + # + # @return [Float, Boolean, String, Array, nil] + optional :value, + union: -> { Openlayer::Models::TestListResultsResponse::LastUnskippedResult::Goal::Threshold::Value } + + # @!method initialize(insight_name: nil, insight_parameters: nil, measurement: nil, operator: nil, threshold_mode: nil, value: nil) + # Some parameter documentations has been truncated, see + # {Openlayer::Models::TestListResultsResponse::LastUnskippedResult::Goal::Threshold} + # for more details. + # + # @param insight_name [Symbol, Openlayer::Models::TestListResultsResponse::LastUnskippedResult::Goal::Threshold::InsightName] The insight name to be evaluated. + # + # @param insight_parameters [Array, nil] The insight parameters. Required only for some test subtypes. For example, for t + # + # @param measurement [String] The measurement to be evaluated. + # + # @param operator [Symbol, Openlayer::Models::TestListResultsResponse::LastUnskippedResult::Goal::Threshold::Operator] The operator to be used for the evaluation. + # + # @param threshold_mode [Symbol, Openlayer::Models::TestListResultsResponse::LastUnskippedResult::Goal::Threshold::ThresholdMode] Whether to use automatic anomaly detection or manual thresholds + # + # @param value [Float, Boolean, String, Array] The value to be compared. + + # The insight name to be evaluated. + # + # @see Openlayer::Models::TestListResultsResponse::LastUnskippedResult::Goal::Threshold#insight_name + module InsightName + extend Openlayer::Internal::Type::Enum + + CHARACTER_LENGTH = :characterLength + CLASS_IMBALANCE = :classImbalance + EXPECT_COLUMN_A_TO_BE_IN_COLUMN_B = :expectColumnAToBeInColumnB + COLUMN_AVERAGE = :columnAverage + COLUMN_DRIFT = :columnDrift + COLUMN_VALUES_MATCH = :columnValuesMatch + CONFIDENCE_DISTRIBUTION = :confidenceDistribution + CONFLICTING_LABEL_ROW_COUNT = :conflictingLabelRowCount + CONTAINS_PII = :containsPii + CONTAINS_VALID_URL = :containsValidUrl + CORRELATED_FEATURES = :correlatedFeatures + CUSTOM_METRIC = :customMetric + DUPLICATE_ROW_COUNT = :duplicateRowCount + EMPTY_FEATURES = :emptyFeatures + FEATURE_DRIFT = :featureDrift + FEATURE_PROFILE = :featureProfile + GREAT_EXPECTATIONS = :greatExpectations + GROUP_BY_COLUMN_STATS_CHECK = :groupByColumnStatsCheck + ILL_FORMED_ROW_COUNT = :illFormedRowCount + IS_CODE = :isCode + IS_JSON = :isJson + LLM_RUBRIC_V2 = :llmRubricV2 + LABEL_DRIFT = :labelDrift + METRICS = :metrics + NEW_CATEGORIES = :newCategories + NEW_LABELS = :newLabels + NULL_ROW_COUNT = :nullRowCount + PP_SCORE = :ppScore + QUASI_CONSTANT_FEATURES = :quasiConstantFeatures + SENTENCE_LENGTH = :sentenceLength + SIZE_RATIO = :sizeRatio + SPECIAL_CHARACTERS = :specialCharacters + STRING_VALIDATION = :stringValidation + TRAIN_VAL_LEAKAGE_ROW_COUNT = :trainValLeakageRowCount + + # @!method self.values + # @return [Array] + end + + class InsightParameter < Openlayer::Internal::Type::BaseModel + # @!attribute name + # The name of the insight filter. + # + # @return [String] + required :name, String + + # @!attribute value + # + # @return [Object] + required :value, Openlayer::Internal::Type::Unknown + + # @!method initialize(name:, value:) + # @param name [String] The name of the insight filter. + # + # @param value [Object] + end + + # The operator to be used for the evaluation. + # + # @see Openlayer::Models::TestListResultsResponse::LastUnskippedResult::Goal::Threshold#operator + module Operator + extend Openlayer::Internal::Type::Enum + + IS = :is + GREATER = :> + GREATER_OR_EQUALS = :">=" + LESS = :< + LESS_OR_EQUALS = :"<=" + NOT_EQUALS = :"!=" + + # @!method self.values + # @return [Array] + end + + # Whether to use automatic anomaly detection or manual thresholds + # + # @see Openlayer::Models::TestListResultsResponse::LastUnskippedResult::Goal::Threshold#threshold_mode + module ThresholdMode + extend Openlayer::Internal::Type::Enum + + AUTOMATIC = :automatic + MANUAL = :manual + + # @!method self.values + # @return [Array] + end + + # The value to be compared. + # + # @see Openlayer::Models::TestListResultsResponse::LastUnskippedResult::Goal::Threshold#value + module Value + extend Openlayer::Internal::Type::Union + + variant Float + + variant Openlayer::Internal::Type::Boolean + + variant String + + variant -> { Openlayer::Models::TestListResultsResponse::LastUnskippedResult::Goal::Threshold::Value::StringArray } + + # @!method self.variants + # @return [Array(Float, Boolean, String, Array)] + + # @type [Openlayer::Internal::Type::Converter] + StringArray = Openlayer::Internal::Type::ArrayOf[String] + end + end + + # The test type. + # + # @see Openlayer::Models::TestListResultsResponse::LastUnskippedResult::Goal#type + module Type + extend Openlayer::Internal::Type::Enum + + INTEGRITY = :integrity + CONSISTENCY = :consistency + PERFORMANCE = :performance + + # @!method self.values + # @return [Array] + end + end + + # @see Openlayer::Models::TestListResultsResponse::LastUnskippedResult#rows_body + class RowsBody < Openlayer::Internal::Type::BaseModel + # @!attribute column_filters + # + # @return [Array, nil] + optional :column_filters, + -> { Openlayer::Internal::Type::ArrayOf[union: Openlayer::Models::TestListResultsResponse::LastUnskippedResult::RowsBody::ColumnFilter] }, + api_name: :columnFilters, + nil?: true + + # @!attribute exclude_row_id_list + # + # @return [Array, nil] + optional :exclude_row_id_list, + Openlayer::Internal::Type::ArrayOf[Integer], + api_name: :excludeRowIdList, + nil?: true + + # @!attribute not_search_query_and + # + # @return [Array, nil] + optional :not_search_query_and, + Openlayer::Internal::Type::ArrayOf[String], + api_name: :notSearchQueryAnd, + nil?: true + + # @!attribute not_search_query_or + # + # @return [Array, nil] + optional :not_search_query_or, + Openlayer::Internal::Type::ArrayOf[String], + api_name: :notSearchQueryOr, + nil?: true + + # @!attribute row_id_list + # + # @return [Array, nil] + optional :row_id_list, Openlayer::Internal::Type::ArrayOf[Integer], api_name: :rowIdList, nil?: true + + # @!attribute search_query_and + # + # @return [Array, nil] + optional :search_query_and, + Openlayer::Internal::Type::ArrayOf[String], + api_name: :searchQueryAnd, + nil?: true + + # @!attribute search_query_or + # + # @return [Array, nil] + optional :search_query_or, + Openlayer::Internal::Type::ArrayOf[String], + api_name: :searchQueryOr, + nil?: true + + # @!method initialize(column_filters: nil, exclude_row_id_list: nil, not_search_query_and: nil, not_search_query_or: nil, row_id_list: nil, search_query_and: nil, search_query_or: nil) + # The body of the rows request. + # + # @param column_filters [Array, nil] + # @param exclude_row_id_list [Array, nil] + # @param not_search_query_and [Array, nil] + # @param not_search_query_or [Array, nil] + # @param row_id_list [Array, nil] + # @param search_query_and [Array, nil] + # @param search_query_or [Array, nil] + + module ColumnFilter + extend Openlayer::Internal::Type::Union + + variant -> { Openlayer::Models::TestListResultsResponse::LastUnskippedResult::RowsBody::ColumnFilter::SetColumnFilter } + + variant -> { Openlayer::Models::TestListResultsResponse::LastUnskippedResult::RowsBody::ColumnFilter::NumericColumnFilter } + + variant -> { Openlayer::Models::TestListResultsResponse::LastUnskippedResult::RowsBody::ColumnFilter::StringColumnFilter } + + class SetColumnFilter < Openlayer::Internal::Type::BaseModel + # @!attribute measurement + # The name of the column. + # + # @return [String] + required :measurement, String + + # @!attribute operator + # + # @return [Symbol, Openlayer::Models::TestListResultsResponse::LastUnskippedResult::RowsBody::ColumnFilter::SetColumnFilter::Operator] + required :operator, + enum: -> { Openlayer::Models::TestListResultsResponse::LastUnskippedResult::RowsBody::ColumnFilter::SetColumnFilter::Operator } + + # @!attribute value + # + # @return [Array] + required :value, + -> do + Openlayer::Internal::Type::ArrayOf[ + union: Openlayer::Models::TestListResultsResponse::LastUnskippedResult::RowsBody::ColumnFilter::SetColumnFilter::Value + ] + end + + # @!method initialize(measurement:, operator:, value:) + # @param measurement [String] The name of the column. + # + # @param operator [Symbol, Openlayer::Models::TestListResultsResponse::LastUnskippedResult::RowsBody::ColumnFilter::SetColumnFilter::Operator] + # + # @param value [Array] + + # @see Openlayer::Models::TestListResultsResponse::LastUnskippedResult::RowsBody::ColumnFilter::SetColumnFilter#operator + module Operator + extend Openlayer::Internal::Type::Enum + + CONTAINS_NONE = :contains_none + CONTAINS_ANY = :contains_any + CONTAINS_ALL = :contains_all + ONE_OF = :one_of + NONE_OF = :none_of + + # @!method self.values + # @return [Array] + end + + module Value + extend Openlayer::Internal::Type::Union + + variant String + + variant Float + + # @!method self.variants + # @return [Array(String, Float)] + end + end + + class NumericColumnFilter < Openlayer::Internal::Type::BaseModel + # @!attribute measurement + # The name of the column. + # + # @return [String] + required :measurement, String + + # @!attribute operator + # + # @return [Symbol, Openlayer::Models::TestListResultsResponse::LastUnskippedResult::RowsBody::ColumnFilter::NumericColumnFilter::Operator] + required :operator, + enum: -> { Openlayer::Models::TestListResultsResponse::LastUnskippedResult::RowsBody::ColumnFilter::NumericColumnFilter::Operator } + + # @!attribute value + # + # @return [Float, nil] + required :value, Float, nil?: true + + # @!method initialize(measurement:, operator:, value:) + # @param measurement [String] The name of the column. + # + # @param operator [Symbol, Openlayer::Models::TestListResultsResponse::LastUnskippedResult::RowsBody::ColumnFilter::NumericColumnFilter::Operator] + # + # @param value [Float, nil] + + # @see Openlayer::Models::TestListResultsResponse::LastUnskippedResult::RowsBody::ColumnFilter::NumericColumnFilter#operator + module Operator + extend Openlayer::Internal::Type::Enum + + GREATER = :> + GREATER_OR_EQUALS = :">=" + IS = :is + LESS = :< + LESS_OR_EQUALS = :"<=" + NOT_EQUALS = :"!=" + + # @!method self.values + # @return [Array] + end + end + + class StringColumnFilter < Openlayer::Internal::Type::BaseModel + # @!attribute measurement + # The name of the column. + # + # @return [String] + required :measurement, String + + # @!attribute operator + # + # @return [Symbol, Openlayer::Models::TestListResultsResponse::LastUnskippedResult::RowsBody::ColumnFilter::StringColumnFilter::Operator] + required :operator, + enum: -> { Openlayer::Models::TestListResultsResponse::LastUnskippedResult::RowsBody::ColumnFilter::StringColumnFilter::Operator } + + # @!attribute value + # + # @return [String, Boolean] + required :value, + union: -> { Openlayer::Models::TestListResultsResponse::LastUnskippedResult::RowsBody::ColumnFilter::StringColumnFilter::Value } + + # @!method initialize(measurement:, operator:, value:) + # @param measurement [String] The name of the column. + # + # @param operator [Symbol, Openlayer::Models::TestListResultsResponse::LastUnskippedResult::RowsBody::ColumnFilter::StringColumnFilter::Operator] + # + # @param value [String, Boolean] + + # @see Openlayer::Models::TestListResultsResponse::LastUnskippedResult::RowsBody::ColumnFilter::StringColumnFilter#operator + module Operator + extend Openlayer::Internal::Type::Enum + + IS = :is + NOT_EQUALS = :"!=" + + # @!method self.values + # @return [Array] + end + + # @see Openlayer::Models::TestListResultsResponse::LastUnskippedResult::RowsBody::ColumnFilter::StringColumnFilter#value + module Value + extend Openlayer::Internal::Type::Union + + variant String + + variant Openlayer::Internal::Type::Boolean + + # @!method self.variants + # @return [Array(String, Boolean)] + end + end + + # @!method self.variants + # @return [Array(Openlayer::Models::TestListResultsResponse::LastUnskippedResult::RowsBody::ColumnFilter::SetColumnFilter, Openlayer::Models::TestListResultsResponse::LastUnskippedResult::RowsBody::ColumnFilter::NumericColumnFilter, Openlayer::Models::TestListResultsResponse::LastUnskippedResult::RowsBody::ColumnFilter::StringColumnFilter)] + end + end + end + end + end +end diff --git a/lib/openlayer/resources/tests.rb b/lib/openlayer/resources/tests.rb index 67558a5..0969f82 100644 --- a/lib/openlayer/resources/tests.rb +++ b/lib/openlayer/resources/tests.rb @@ -39,6 +39,51 @@ def evaluate(test_id, params) ) end + # List the test results for a test. + # + # @overload list_results(test_id, end_timestamp: nil, include_insights: nil, inference_pipeline_id: nil, page: nil, per_page: nil, project_version_id: nil, start_timestamp: nil, status: nil, request_options: {}) + # + # @param test_id [String] The test id. + # + # @param end_timestamp [Float] Filter for results that use data starting before the end timestamp. + # + # @param include_insights [Boolean] Include the insights linked to each test result + # + # @param inference_pipeline_id [String, nil] Retrive test results for a specific inference pipeline. + # + # @param page [Integer] The page to return in a paginated query. + # + # @param per_page [Integer] Maximum number of items to return per page. + # + # @param project_version_id [String, nil] Retrive test results for a specific project version. + # + # @param start_timestamp [Float] Filter for results that use data ending after the start timestamp. + # + # @param status [Array] Filter by status(es). + # + # @param request_options [Openlayer::RequestOptions, Hash{Symbol=>Object}, nil] + # + # @return [Openlayer::Models::TestListResultsResponse] + # + # @see Openlayer::Models::TestListResultsParams + def list_results(test_id, params = {}) + parsed, options = Openlayer::TestListResultsParams.dump_request(params) + @client.request( + method: :get, + path: ["tests/%1$s/results", test_id], + query: parsed.transform_keys( + end_timestamp: "endTimestamp", + include_insights: "includeInsights", + inference_pipeline_id: "inferencePipelineId", + per_page: "perPage", + project_version_id: "projectVersionId", + start_timestamp: "startTimestamp" + ), + model: Openlayer::Models::TestListResultsResponse, + options: options + ) + end + # @api private # # @param client [Openlayer::Client] diff --git a/lib/openlayer/version.rb b/lib/openlayer/version.rb index 7878628..a93c460 100644 --- a/lib/openlayer/version.rb +++ b/lib/openlayer/version.rb @@ -1,5 +1,5 @@ # frozen_string_literal: true module Openlayer - VERSION = "0.9.1" + VERSION = "0.10.0" end diff --git a/rbi/openlayer/models.rbi b/rbi/openlayer/models.rbi index e9a0a5b..b25b5a4 100644 --- a/rbi/openlayer/models.rbi +++ b/rbi/openlayer/models.rbi @@ -26,6 +26,8 @@ module Openlayer TestEvaluateParams = Openlayer::Models::TestEvaluateParams + TestListResultsParams = Openlayer::Models::TestListResultsParams + WorkspaceRetrieveParams = Openlayer::Models::WorkspaceRetrieveParams Workspaces = Openlayer::Models::Workspaces diff --git a/rbi/openlayer/models/commits/test_result_list_response.rbi b/rbi/openlayer/models/commits/test_result_list_response.rbi index cb6543a..df490f0 100644 --- a/rbi/openlayer/models/commits/test_result_list_response.rbi +++ b/rbi/openlayer/models/commits/test_result_list_response.rbi @@ -64,6 +64,27 @@ module Openlayer sig { returns(T.nilable(String)) } attr_accessor :status_message + sig do + returns( + T.nilable( + T::Array[ + Openlayer::Models::Commits::TestResultListResponse::Item::ExpectedValue + ] + ) + ) + end + attr_reader :expected_values + + sig do + params( + expected_values: + T::Array[ + Openlayer::Models::Commits::TestResultListResponse::Item::ExpectedValue::OrHash + ] + ).void + end + attr_writer :expected_values + sig do returns( T.nilable( @@ -81,6 +102,33 @@ module Openlayer end attr_writer :goal + # The URL to the rows of the test result. + sig { returns(T.nilable(String)) } + attr_reader :rows + + sig { params(rows: String).void } + attr_writer :rows + + # The body of the rows request. + sig do + returns( + T.nilable( + Openlayer::Models::Commits::TestResultListResponse::Item::RowsBody + ) + ) + end + attr_reader :rows_body + + sig do + params( + rows_body: + T.nilable( + Openlayer::Models::Commits::TestResultListResponse::Item::RowsBody::OrHash + ) + ).void + end + attr_writer :rows_body + # Project version (commit) id. sig { returns(String) } attr_accessor :id @@ -125,9 +173,18 @@ module Openlayer status: Openlayer::Models::Commits::TestResultListResponse::Item::Status::OrSymbol, status_message: T.nilable(String), + expected_values: + T::Array[ + Openlayer::Models::Commits::TestResultListResponse::Item::ExpectedValue::OrHash + ], goal: Openlayer::Models::Commits::TestResultListResponse::Item::Goal::OrHash, - goal_id: T.nilable(String) + goal_id: T.nilable(String), + rows: String, + rows_body: + T.nilable( + Openlayer::Models::Commits::TestResultListResponse::Item::RowsBody::OrHash + ) ).returns(T.attached_class) end def self.new( @@ -149,9 +206,14 @@ module Openlayer status:, # The status message. status_message:, + expected_values: nil, goal: nil, # The test id. - goal_id: nil + goal_id: nil, + # The URL to the rows of the test result. + rows: nil, + # The body of the rows request. + rows_body: nil ) end @@ -168,9 +230,18 @@ module Openlayer status: Openlayer::Models::Commits::TestResultListResponse::Item::Status::TaggedSymbol, status_message: T.nilable(String), + expected_values: + T::Array[ + Openlayer::Models::Commits::TestResultListResponse::Item::ExpectedValue + ], goal: Openlayer::Models::Commits::TestResultListResponse::Item::Goal, - goal_id: T.nilable(String) + goal_id: T.nilable(String), + rows: String, + rows_body: + T.nilable( + Openlayer::Models::Commits::TestResultListResponse::Item::RowsBody + ) } ) end @@ -227,6 +298,60 @@ module Openlayer end end + class ExpectedValue < Openlayer::Internal::Type::BaseModel + OrHash = + T.type_alias do + T.any( + Openlayer::Models::Commits::TestResultListResponse::Item::ExpectedValue, + Openlayer::Internal::AnyHash + ) + end + + # the lower threshold for the expected value + sig { returns(T.nilable(Float)) } + attr_accessor :lower_threshold + + # One of the `measurement` values in the test's thresholds + sig { returns(T.nilable(String)) } + attr_reader :measurement + + sig { params(measurement: String).void } + attr_writer :measurement + + # The upper threshold for the expected value + sig { returns(T.nilable(Float)) } + attr_accessor :upper_threshold + + sig do + params( + lower_threshold: T.nilable(Float), + measurement: String, + upper_threshold: T.nilable(Float) + ).returns(T.attached_class) + end + def self.new( + # the lower threshold for the expected value + lower_threshold: nil, + # One of the `measurement` values in the test's thresholds + measurement: nil, + # The upper threshold for the expected value + upper_threshold: nil + ) + end + + sig do + override.returns( + { + lower_threshold: T.nilable(Float), + measurement: String, + upper_threshold: T.nilable(Float) + } + ) + end + def to_hash + end + end + class Goal < Openlayer::Internal::Type::BaseModel OrHash = T.type_alias do @@ -1249,6 +1374,467 @@ module Openlayer end end end + + class RowsBody < Openlayer::Internal::Type::BaseModel + OrHash = + T.type_alias do + T.any( + Openlayer::Models::Commits::TestResultListResponse::Item::RowsBody, + Openlayer::Internal::AnyHash + ) + end + + sig do + returns( + T.nilable( + T::Array[ + Openlayer::Models::Commits::TestResultListResponse::Item::RowsBody::ColumnFilter::Variants + ] + ) + ) + end + attr_accessor :column_filters + + sig { returns(T.nilable(T::Array[Integer])) } + attr_accessor :exclude_row_id_list + + sig { returns(T.nilable(T::Array[String])) } + attr_accessor :not_search_query_and + + sig { returns(T.nilable(T::Array[String])) } + attr_accessor :not_search_query_or + + sig { returns(T.nilable(T::Array[Integer])) } + attr_accessor :row_id_list + + sig { returns(T.nilable(T::Array[String])) } + attr_accessor :search_query_and + + sig { returns(T.nilable(T::Array[String])) } + attr_accessor :search_query_or + + # The body of the rows request. + sig do + params( + column_filters: + T.nilable( + T::Array[ + T.any( + Openlayer::Models::Commits::TestResultListResponse::Item::RowsBody::ColumnFilter::SetColumnFilter::OrHash, + Openlayer::Models::Commits::TestResultListResponse::Item::RowsBody::ColumnFilter::NumericColumnFilter::OrHash, + Openlayer::Models::Commits::TestResultListResponse::Item::RowsBody::ColumnFilter::StringColumnFilter::OrHash + ) + ] + ), + exclude_row_id_list: T.nilable(T::Array[Integer]), + not_search_query_and: T.nilable(T::Array[String]), + not_search_query_or: T.nilable(T::Array[String]), + row_id_list: T.nilable(T::Array[Integer]), + search_query_and: T.nilable(T::Array[String]), + search_query_or: T.nilable(T::Array[String]) + ).returns(T.attached_class) + end + def self.new( + column_filters: nil, + exclude_row_id_list: nil, + not_search_query_and: nil, + not_search_query_or: nil, + row_id_list: nil, + search_query_and: nil, + search_query_or: nil + ) + end + + sig do + override.returns( + { + column_filters: + T.nilable( + T::Array[ + Openlayer::Models::Commits::TestResultListResponse::Item::RowsBody::ColumnFilter::Variants + ] + ), + exclude_row_id_list: T.nilable(T::Array[Integer]), + not_search_query_and: T.nilable(T::Array[String]), + not_search_query_or: T.nilable(T::Array[String]), + row_id_list: T.nilable(T::Array[Integer]), + search_query_and: T.nilable(T::Array[String]), + search_query_or: T.nilable(T::Array[String]) + } + ) + end + def to_hash + end + + module ColumnFilter + extend Openlayer::Internal::Type::Union + + Variants = + T.type_alias do + T.any( + Openlayer::Models::Commits::TestResultListResponse::Item::RowsBody::ColumnFilter::SetColumnFilter, + Openlayer::Models::Commits::TestResultListResponse::Item::RowsBody::ColumnFilter::NumericColumnFilter, + Openlayer::Models::Commits::TestResultListResponse::Item::RowsBody::ColumnFilter::StringColumnFilter + ) + end + + class SetColumnFilter < Openlayer::Internal::Type::BaseModel + OrHash = + T.type_alias do + T.any( + Openlayer::Models::Commits::TestResultListResponse::Item::RowsBody::ColumnFilter::SetColumnFilter, + Openlayer::Internal::AnyHash + ) + end + + # The name of the column. + sig { returns(String) } + attr_accessor :measurement + + sig do + returns( + Openlayer::Models::Commits::TestResultListResponse::Item::RowsBody::ColumnFilter::SetColumnFilter::Operator::TaggedSymbol + ) + end + attr_accessor :operator + + sig do + returns( + T::Array[ + Openlayer::Models::Commits::TestResultListResponse::Item::RowsBody::ColumnFilter::SetColumnFilter::Value::Variants + ] + ) + end + attr_accessor :value + + sig do + params( + measurement: String, + operator: + Openlayer::Models::Commits::TestResultListResponse::Item::RowsBody::ColumnFilter::SetColumnFilter::Operator::OrSymbol, + value: + T::Array[ + Openlayer::Models::Commits::TestResultListResponse::Item::RowsBody::ColumnFilter::SetColumnFilter::Value::Variants + ] + ).returns(T.attached_class) + end + def self.new( + # The name of the column. + measurement:, + operator:, + value: + ) + end + + sig do + override.returns( + { + measurement: String, + operator: + Openlayer::Models::Commits::TestResultListResponse::Item::RowsBody::ColumnFilter::SetColumnFilter::Operator::TaggedSymbol, + value: + T::Array[ + Openlayer::Models::Commits::TestResultListResponse::Item::RowsBody::ColumnFilter::SetColumnFilter::Value::Variants + ] + } + ) + end + def to_hash + end + + module Operator + extend Openlayer::Internal::Type::Enum + + TaggedSymbol = + T.type_alias do + T.all( + Symbol, + Openlayer::Models::Commits::TestResultListResponse::Item::RowsBody::ColumnFilter::SetColumnFilter::Operator + ) + end + OrSymbol = T.type_alias { T.any(Symbol, String) } + + CONTAINS_NONE = + T.let( + :contains_none, + Openlayer::Models::Commits::TestResultListResponse::Item::RowsBody::ColumnFilter::SetColumnFilter::Operator::TaggedSymbol + ) + CONTAINS_ANY = + T.let( + :contains_any, + Openlayer::Models::Commits::TestResultListResponse::Item::RowsBody::ColumnFilter::SetColumnFilter::Operator::TaggedSymbol + ) + CONTAINS_ALL = + T.let( + :contains_all, + Openlayer::Models::Commits::TestResultListResponse::Item::RowsBody::ColumnFilter::SetColumnFilter::Operator::TaggedSymbol + ) + ONE_OF = + T.let( + :one_of, + Openlayer::Models::Commits::TestResultListResponse::Item::RowsBody::ColumnFilter::SetColumnFilter::Operator::TaggedSymbol + ) + NONE_OF = + T.let( + :none_of, + Openlayer::Models::Commits::TestResultListResponse::Item::RowsBody::ColumnFilter::SetColumnFilter::Operator::TaggedSymbol + ) + + sig do + override.returns( + T::Array[ + Openlayer::Models::Commits::TestResultListResponse::Item::RowsBody::ColumnFilter::SetColumnFilter::Operator::TaggedSymbol + ] + ) + end + def self.values + end + end + + module Value + extend Openlayer::Internal::Type::Union + + Variants = T.type_alias { T.any(String, Float) } + + sig do + override.returns( + T::Array[ + Openlayer::Models::Commits::TestResultListResponse::Item::RowsBody::ColumnFilter::SetColumnFilter::Value::Variants + ] + ) + end + def self.variants + end + end + end + + class NumericColumnFilter < Openlayer::Internal::Type::BaseModel + OrHash = + T.type_alias do + T.any( + Openlayer::Models::Commits::TestResultListResponse::Item::RowsBody::ColumnFilter::NumericColumnFilter, + Openlayer::Internal::AnyHash + ) + end + + # The name of the column. + sig { returns(String) } + attr_accessor :measurement + + sig do + returns( + Openlayer::Models::Commits::TestResultListResponse::Item::RowsBody::ColumnFilter::NumericColumnFilter::Operator::TaggedSymbol + ) + end + attr_accessor :operator + + sig { returns(T.nilable(Float)) } + attr_accessor :value + + sig do + params( + measurement: String, + operator: + Openlayer::Models::Commits::TestResultListResponse::Item::RowsBody::ColumnFilter::NumericColumnFilter::Operator::OrSymbol, + value: T.nilable(Float) + ).returns(T.attached_class) + end + def self.new( + # The name of the column. + measurement:, + operator:, + value: + ) + end + + sig do + override.returns( + { + measurement: String, + operator: + Openlayer::Models::Commits::TestResultListResponse::Item::RowsBody::ColumnFilter::NumericColumnFilter::Operator::TaggedSymbol, + value: T.nilable(Float) + } + ) + end + def to_hash + end + + module Operator + extend Openlayer::Internal::Type::Enum + + TaggedSymbol = + T.type_alias do + T.all( + Symbol, + Openlayer::Models::Commits::TestResultListResponse::Item::RowsBody::ColumnFilter::NumericColumnFilter::Operator + ) + end + OrSymbol = T.type_alias { T.any(Symbol, String) } + + GREATER = + T.let( + :">", + Openlayer::Models::Commits::TestResultListResponse::Item::RowsBody::ColumnFilter::NumericColumnFilter::Operator::TaggedSymbol + ) + GREATER_OR_EQUALS = + T.let( + :">=", + Openlayer::Models::Commits::TestResultListResponse::Item::RowsBody::ColumnFilter::NumericColumnFilter::Operator::TaggedSymbol + ) + IS = + T.let( + :is, + Openlayer::Models::Commits::TestResultListResponse::Item::RowsBody::ColumnFilter::NumericColumnFilter::Operator::TaggedSymbol + ) + LESS = + T.let( + :"<", + Openlayer::Models::Commits::TestResultListResponse::Item::RowsBody::ColumnFilter::NumericColumnFilter::Operator::TaggedSymbol + ) + LESS_OR_EQUALS = + T.let( + :"<=", + Openlayer::Models::Commits::TestResultListResponse::Item::RowsBody::ColumnFilter::NumericColumnFilter::Operator::TaggedSymbol + ) + NOT_EQUALS = + T.let( + :"!=", + Openlayer::Models::Commits::TestResultListResponse::Item::RowsBody::ColumnFilter::NumericColumnFilter::Operator::TaggedSymbol + ) + + sig do + override.returns( + T::Array[ + Openlayer::Models::Commits::TestResultListResponse::Item::RowsBody::ColumnFilter::NumericColumnFilter::Operator::TaggedSymbol + ] + ) + end + def self.values + end + end + end + + class StringColumnFilter < Openlayer::Internal::Type::BaseModel + OrHash = + T.type_alias do + T.any( + Openlayer::Models::Commits::TestResultListResponse::Item::RowsBody::ColumnFilter::StringColumnFilter, + Openlayer::Internal::AnyHash + ) + end + + # The name of the column. + sig { returns(String) } + attr_accessor :measurement + + sig do + returns( + Openlayer::Models::Commits::TestResultListResponse::Item::RowsBody::ColumnFilter::StringColumnFilter::Operator::TaggedSymbol + ) + end + attr_accessor :operator + + sig do + returns( + Openlayer::Models::Commits::TestResultListResponse::Item::RowsBody::ColumnFilter::StringColumnFilter::Value::Variants + ) + end + attr_accessor :value + + sig do + params( + measurement: String, + operator: + Openlayer::Models::Commits::TestResultListResponse::Item::RowsBody::ColumnFilter::StringColumnFilter::Operator::OrSymbol, + value: + Openlayer::Models::Commits::TestResultListResponse::Item::RowsBody::ColumnFilter::StringColumnFilter::Value::Variants + ).returns(T.attached_class) + end + def self.new( + # The name of the column. + measurement:, + operator:, + value: + ) + end + + sig do + override.returns( + { + measurement: String, + operator: + Openlayer::Models::Commits::TestResultListResponse::Item::RowsBody::ColumnFilter::StringColumnFilter::Operator::TaggedSymbol, + value: + Openlayer::Models::Commits::TestResultListResponse::Item::RowsBody::ColumnFilter::StringColumnFilter::Value::Variants + } + ) + end + def to_hash + end + + module Operator + extend Openlayer::Internal::Type::Enum + + TaggedSymbol = + T.type_alias do + T.all( + Symbol, + Openlayer::Models::Commits::TestResultListResponse::Item::RowsBody::ColumnFilter::StringColumnFilter::Operator + ) + end + OrSymbol = T.type_alias { T.any(Symbol, String) } + + IS = + T.let( + :is, + Openlayer::Models::Commits::TestResultListResponse::Item::RowsBody::ColumnFilter::StringColumnFilter::Operator::TaggedSymbol + ) + NOT_EQUALS = + T.let( + :"!=", + Openlayer::Models::Commits::TestResultListResponse::Item::RowsBody::ColumnFilter::StringColumnFilter::Operator::TaggedSymbol + ) + + sig do + override.returns( + T::Array[ + Openlayer::Models::Commits::TestResultListResponse::Item::RowsBody::ColumnFilter::StringColumnFilter::Operator::TaggedSymbol + ] + ) + end + def self.values + end + end + + module Value + extend Openlayer::Internal::Type::Union + + Variants = T.type_alias { T.any(String, T::Boolean) } + + sig do + override.returns( + T::Array[ + Openlayer::Models::Commits::TestResultListResponse::Item::RowsBody::ColumnFilter::StringColumnFilter::Value::Variants + ] + ) + end + def self.variants + end + end + end + + sig do + override.returns( + T::Array[ + Openlayer::Models::Commits::TestResultListResponse::Item::RowsBody::ColumnFilter::Variants + ] + ) + end + def self.variants + end + end + end end end end diff --git a/rbi/openlayer/models/inference_pipelines/test_result_list_response.rbi b/rbi/openlayer/models/inference_pipelines/test_result_list_response.rbi index f42d799..7acb1b8 100644 --- a/rbi/openlayer/models/inference_pipelines/test_result_list_response.rbi +++ b/rbi/openlayer/models/inference_pipelines/test_result_list_response.rbi @@ -66,6 +66,27 @@ module Openlayer sig { returns(T.nilable(String)) } attr_accessor :status_message + sig do + returns( + T.nilable( + T::Array[ + Openlayer::Models::InferencePipelines::TestResultListResponse::Item::ExpectedValue + ] + ) + ) + end + attr_reader :expected_values + + sig do + params( + expected_values: + T::Array[ + Openlayer::Models::InferencePipelines::TestResultListResponse::Item::ExpectedValue::OrHash + ] + ).void + end + attr_writer :expected_values + sig do returns( T.nilable( @@ -83,6 +104,33 @@ module Openlayer end attr_writer :goal + # The URL to the rows of the test result. + sig { returns(T.nilable(String)) } + attr_reader :rows + + sig { params(rows: String).void } + attr_writer :rows + + # The body of the rows request. + sig do + returns( + T.nilable( + Openlayer::Models::InferencePipelines::TestResultListResponse::Item::RowsBody + ) + ) + end + attr_reader :rows_body + + sig do + params( + rows_body: + T.nilable( + Openlayer::Models::InferencePipelines::TestResultListResponse::Item::RowsBody::OrHash + ) + ).void + end + attr_writer :rows_body + # Project version (commit) id. sig { returns(String) } attr_accessor :id @@ -127,9 +175,18 @@ module Openlayer status: Openlayer::Models::InferencePipelines::TestResultListResponse::Item::Status::OrSymbol, status_message: T.nilable(String), + expected_values: + T::Array[ + Openlayer::Models::InferencePipelines::TestResultListResponse::Item::ExpectedValue::OrHash + ], goal: Openlayer::Models::InferencePipelines::TestResultListResponse::Item::Goal::OrHash, - goal_id: T.nilable(String) + goal_id: T.nilable(String), + rows: String, + rows_body: + T.nilable( + Openlayer::Models::InferencePipelines::TestResultListResponse::Item::RowsBody::OrHash + ) ).returns(T.attached_class) end def self.new( @@ -151,9 +208,14 @@ module Openlayer status:, # The status message. status_message:, + expected_values: nil, goal: nil, # The test id. - goal_id: nil + goal_id: nil, + # The URL to the rows of the test result. + rows: nil, + # The body of the rows request. + rows_body: nil ) end @@ -170,9 +232,18 @@ module Openlayer status: Openlayer::Models::InferencePipelines::TestResultListResponse::Item::Status::TaggedSymbol, status_message: T.nilable(String), + expected_values: + T::Array[ + Openlayer::Models::InferencePipelines::TestResultListResponse::Item::ExpectedValue + ], goal: Openlayer::Models::InferencePipelines::TestResultListResponse::Item::Goal, - goal_id: T.nilable(String) + goal_id: T.nilable(String), + rows: String, + rows_body: + T.nilable( + Openlayer::Models::InferencePipelines::TestResultListResponse::Item::RowsBody + ) } ) end @@ -229,6 +300,60 @@ module Openlayer end end + class ExpectedValue < Openlayer::Internal::Type::BaseModel + OrHash = + T.type_alias do + T.any( + Openlayer::Models::InferencePipelines::TestResultListResponse::Item::ExpectedValue, + Openlayer::Internal::AnyHash + ) + end + + # the lower threshold for the expected value + sig { returns(T.nilable(Float)) } + attr_accessor :lower_threshold + + # One of the `measurement` values in the test's thresholds + sig { returns(T.nilable(String)) } + attr_reader :measurement + + sig { params(measurement: String).void } + attr_writer :measurement + + # The upper threshold for the expected value + sig { returns(T.nilable(Float)) } + attr_accessor :upper_threshold + + sig do + params( + lower_threshold: T.nilable(Float), + measurement: String, + upper_threshold: T.nilable(Float) + ).returns(T.attached_class) + end + def self.new( + # the lower threshold for the expected value + lower_threshold: nil, + # One of the `measurement` values in the test's thresholds + measurement: nil, + # The upper threshold for the expected value + upper_threshold: nil + ) + end + + sig do + override.returns( + { + lower_threshold: T.nilable(Float), + measurement: String, + upper_threshold: T.nilable(Float) + } + ) + end + def to_hash + end + end + class Goal < Openlayer::Internal::Type::BaseModel OrHash = T.type_alias do @@ -1251,6 +1376,467 @@ module Openlayer end end end + + class RowsBody < Openlayer::Internal::Type::BaseModel + OrHash = + T.type_alias do + T.any( + Openlayer::Models::InferencePipelines::TestResultListResponse::Item::RowsBody, + Openlayer::Internal::AnyHash + ) + end + + sig do + returns( + T.nilable( + T::Array[ + Openlayer::Models::InferencePipelines::TestResultListResponse::Item::RowsBody::ColumnFilter::Variants + ] + ) + ) + end + attr_accessor :column_filters + + sig { returns(T.nilable(T::Array[Integer])) } + attr_accessor :exclude_row_id_list + + sig { returns(T.nilable(T::Array[String])) } + attr_accessor :not_search_query_and + + sig { returns(T.nilable(T::Array[String])) } + attr_accessor :not_search_query_or + + sig { returns(T.nilable(T::Array[Integer])) } + attr_accessor :row_id_list + + sig { returns(T.nilable(T::Array[String])) } + attr_accessor :search_query_and + + sig { returns(T.nilable(T::Array[String])) } + attr_accessor :search_query_or + + # The body of the rows request. + sig do + params( + column_filters: + T.nilable( + T::Array[ + T.any( + Openlayer::Models::InferencePipelines::TestResultListResponse::Item::RowsBody::ColumnFilter::SetColumnFilter::OrHash, + Openlayer::Models::InferencePipelines::TestResultListResponse::Item::RowsBody::ColumnFilter::NumericColumnFilter::OrHash, + Openlayer::Models::InferencePipelines::TestResultListResponse::Item::RowsBody::ColumnFilter::StringColumnFilter::OrHash + ) + ] + ), + exclude_row_id_list: T.nilable(T::Array[Integer]), + not_search_query_and: T.nilable(T::Array[String]), + not_search_query_or: T.nilable(T::Array[String]), + row_id_list: T.nilable(T::Array[Integer]), + search_query_and: T.nilable(T::Array[String]), + search_query_or: T.nilable(T::Array[String]) + ).returns(T.attached_class) + end + def self.new( + column_filters: nil, + exclude_row_id_list: nil, + not_search_query_and: nil, + not_search_query_or: nil, + row_id_list: nil, + search_query_and: nil, + search_query_or: nil + ) + end + + sig do + override.returns( + { + column_filters: + T.nilable( + T::Array[ + Openlayer::Models::InferencePipelines::TestResultListResponse::Item::RowsBody::ColumnFilter::Variants + ] + ), + exclude_row_id_list: T.nilable(T::Array[Integer]), + not_search_query_and: T.nilable(T::Array[String]), + not_search_query_or: T.nilable(T::Array[String]), + row_id_list: T.nilable(T::Array[Integer]), + search_query_and: T.nilable(T::Array[String]), + search_query_or: T.nilable(T::Array[String]) + } + ) + end + def to_hash + end + + module ColumnFilter + extend Openlayer::Internal::Type::Union + + Variants = + T.type_alias do + T.any( + Openlayer::Models::InferencePipelines::TestResultListResponse::Item::RowsBody::ColumnFilter::SetColumnFilter, + Openlayer::Models::InferencePipelines::TestResultListResponse::Item::RowsBody::ColumnFilter::NumericColumnFilter, + Openlayer::Models::InferencePipelines::TestResultListResponse::Item::RowsBody::ColumnFilter::StringColumnFilter + ) + end + + class SetColumnFilter < Openlayer::Internal::Type::BaseModel + OrHash = + T.type_alias do + T.any( + Openlayer::Models::InferencePipelines::TestResultListResponse::Item::RowsBody::ColumnFilter::SetColumnFilter, + Openlayer::Internal::AnyHash + ) + end + + # The name of the column. + sig { returns(String) } + attr_accessor :measurement + + sig do + returns( + Openlayer::Models::InferencePipelines::TestResultListResponse::Item::RowsBody::ColumnFilter::SetColumnFilter::Operator::TaggedSymbol + ) + end + attr_accessor :operator + + sig do + returns( + T::Array[ + Openlayer::Models::InferencePipelines::TestResultListResponse::Item::RowsBody::ColumnFilter::SetColumnFilter::Value::Variants + ] + ) + end + attr_accessor :value + + sig do + params( + measurement: String, + operator: + Openlayer::Models::InferencePipelines::TestResultListResponse::Item::RowsBody::ColumnFilter::SetColumnFilter::Operator::OrSymbol, + value: + T::Array[ + Openlayer::Models::InferencePipelines::TestResultListResponse::Item::RowsBody::ColumnFilter::SetColumnFilter::Value::Variants + ] + ).returns(T.attached_class) + end + def self.new( + # The name of the column. + measurement:, + operator:, + value: + ) + end + + sig do + override.returns( + { + measurement: String, + operator: + Openlayer::Models::InferencePipelines::TestResultListResponse::Item::RowsBody::ColumnFilter::SetColumnFilter::Operator::TaggedSymbol, + value: + T::Array[ + Openlayer::Models::InferencePipelines::TestResultListResponse::Item::RowsBody::ColumnFilter::SetColumnFilter::Value::Variants + ] + } + ) + end + def to_hash + end + + module Operator + extend Openlayer::Internal::Type::Enum + + TaggedSymbol = + T.type_alias do + T.all( + Symbol, + Openlayer::Models::InferencePipelines::TestResultListResponse::Item::RowsBody::ColumnFilter::SetColumnFilter::Operator + ) + end + OrSymbol = T.type_alias { T.any(Symbol, String) } + + CONTAINS_NONE = + T.let( + :contains_none, + Openlayer::Models::InferencePipelines::TestResultListResponse::Item::RowsBody::ColumnFilter::SetColumnFilter::Operator::TaggedSymbol + ) + CONTAINS_ANY = + T.let( + :contains_any, + Openlayer::Models::InferencePipelines::TestResultListResponse::Item::RowsBody::ColumnFilter::SetColumnFilter::Operator::TaggedSymbol + ) + CONTAINS_ALL = + T.let( + :contains_all, + Openlayer::Models::InferencePipelines::TestResultListResponse::Item::RowsBody::ColumnFilter::SetColumnFilter::Operator::TaggedSymbol + ) + ONE_OF = + T.let( + :one_of, + Openlayer::Models::InferencePipelines::TestResultListResponse::Item::RowsBody::ColumnFilter::SetColumnFilter::Operator::TaggedSymbol + ) + NONE_OF = + T.let( + :none_of, + Openlayer::Models::InferencePipelines::TestResultListResponse::Item::RowsBody::ColumnFilter::SetColumnFilter::Operator::TaggedSymbol + ) + + sig do + override.returns( + T::Array[ + Openlayer::Models::InferencePipelines::TestResultListResponse::Item::RowsBody::ColumnFilter::SetColumnFilter::Operator::TaggedSymbol + ] + ) + end + def self.values + end + end + + module Value + extend Openlayer::Internal::Type::Union + + Variants = T.type_alias { T.any(String, Float) } + + sig do + override.returns( + T::Array[ + Openlayer::Models::InferencePipelines::TestResultListResponse::Item::RowsBody::ColumnFilter::SetColumnFilter::Value::Variants + ] + ) + end + def self.variants + end + end + end + + class NumericColumnFilter < Openlayer::Internal::Type::BaseModel + OrHash = + T.type_alias do + T.any( + Openlayer::Models::InferencePipelines::TestResultListResponse::Item::RowsBody::ColumnFilter::NumericColumnFilter, + Openlayer::Internal::AnyHash + ) + end + + # The name of the column. + sig { returns(String) } + attr_accessor :measurement + + sig do + returns( + Openlayer::Models::InferencePipelines::TestResultListResponse::Item::RowsBody::ColumnFilter::NumericColumnFilter::Operator::TaggedSymbol + ) + end + attr_accessor :operator + + sig { returns(T.nilable(Float)) } + attr_accessor :value + + sig do + params( + measurement: String, + operator: + Openlayer::Models::InferencePipelines::TestResultListResponse::Item::RowsBody::ColumnFilter::NumericColumnFilter::Operator::OrSymbol, + value: T.nilable(Float) + ).returns(T.attached_class) + end + def self.new( + # The name of the column. + measurement:, + operator:, + value: + ) + end + + sig do + override.returns( + { + measurement: String, + operator: + Openlayer::Models::InferencePipelines::TestResultListResponse::Item::RowsBody::ColumnFilter::NumericColumnFilter::Operator::TaggedSymbol, + value: T.nilable(Float) + } + ) + end + def to_hash + end + + module Operator + extend Openlayer::Internal::Type::Enum + + TaggedSymbol = + T.type_alias do + T.all( + Symbol, + Openlayer::Models::InferencePipelines::TestResultListResponse::Item::RowsBody::ColumnFilter::NumericColumnFilter::Operator + ) + end + OrSymbol = T.type_alias { T.any(Symbol, String) } + + GREATER = + T.let( + :">", + Openlayer::Models::InferencePipelines::TestResultListResponse::Item::RowsBody::ColumnFilter::NumericColumnFilter::Operator::TaggedSymbol + ) + GREATER_OR_EQUALS = + T.let( + :">=", + Openlayer::Models::InferencePipelines::TestResultListResponse::Item::RowsBody::ColumnFilter::NumericColumnFilter::Operator::TaggedSymbol + ) + IS = + T.let( + :is, + Openlayer::Models::InferencePipelines::TestResultListResponse::Item::RowsBody::ColumnFilter::NumericColumnFilter::Operator::TaggedSymbol + ) + LESS = + T.let( + :"<", + Openlayer::Models::InferencePipelines::TestResultListResponse::Item::RowsBody::ColumnFilter::NumericColumnFilter::Operator::TaggedSymbol + ) + LESS_OR_EQUALS = + T.let( + :"<=", + Openlayer::Models::InferencePipelines::TestResultListResponse::Item::RowsBody::ColumnFilter::NumericColumnFilter::Operator::TaggedSymbol + ) + NOT_EQUALS = + T.let( + :"!=", + Openlayer::Models::InferencePipelines::TestResultListResponse::Item::RowsBody::ColumnFilter::NumericColumnFilter::Operator::TaggedSymbol + ) + + sig do + override.returns( + T::Array[ + Openlayer::Models::InferencePipelines::TestResultListResponse::Item::RowsBody::ColumnFilter::NumericColumnFilter::Operator::TaggedSymbol + ] + ) + end + def self.values + end + end + end + + class StringColumnFilter < Openlayer::Internal::Type::BaseModel + OrHash = + T.type_alias do + T.any( + Openlayer::Models::InferencePipelines::TestResultListResponse::Item::RowsBody::ColumnFilter::StringColumnFilter, + Openlayer::Internal::AnyHash + ) + end + + # The name of the column. + sig { returns(String) } + attr_accessor :measurement + + sig do + returns( + Openlayer::Models::InferencePipelines::TestResultListResponse::Item::RowsBody::ColumnFilter::StringColumnFilter::Operator::TaggedSymbol + ) + end + attr_accessor :operator + + sig do + returns( + Openlayer::Models::InferencePipelines::TestResultListResponse::Item::RowsBody::ColumnFilter::StringColumnFilter::Value::Variants + ) + end + attr_accessor :value + + sig do + params( + measurement: String, + operator: + Openlayer::Models::InferencePipelines::TestResultListResponse::Item::RowsBody::ColumnFilter::StringColumnFilter::Operator::OrSymbol, + value: + Openlayer::Models::InferencePipelines::TestResultListResponse::Item::RowsBody::ColumnFilter::StringColumnFilter::Value::Variants + ).returns(T.attached_class) + end + def self.new( + # The name of the column. + measurement:, + operator:, + value: + ) + end + + sig do + override.returns( + { + measurement: String, + operator: + Openlayer::Models::InferencePipelines::TestResultListResponse::Item::RowsBody::ColumnFilter::StringColumnFilter::Operator::TaggedSymbol, + value: + Openlayer::Models::InferencePipelines::TestResultListResponse::Item::RowsBody::ColumnFilter::StringColumnFilter::Value::Variants + } + ) + end + def to_hash + end + + module Operator + extend Openlayer::Internal::Type::Enum + + TaggedSymbol = + T.type_alias do + T.all( + Symbol, + Openlayer::Models::InferencePipelines::TestResultListResponse::Item::RowsBody::ColumnFilter::StringColumnFilter::Operator + ) + end + OrSymbol = T.type_alias { T.any(Symbol, String) } + + IS = + T.let( + :is, + Openlayer::Models::InferencePipelines::TestResultListResponse::Item::RowsBody::ColumnFilter::StringColumnFilter::Operator::TaggedSymbol + ) + NOT_EQUALS = + T.let( + :"!=", + Openlayer::Models::InferencePipelines::TestResultListResponse::Item::RowsBody::ColumnFilter::StringColumnFilter::Operator::TaggedSymbol + ) + + sig do + override.returns( + T::Array[ + Openlayer::Models::InferencePipelines::TestResultListResponse::Item::RowsBody::ColumnFilter::StringColumnFilter::Operator::TaggedSymbol + ] + ) + end + def self.values + end + end + + module Value + extend Openlayer::Internal::Type::Union + + Variants = T.type_alias { T.any(String, T::Boolean) } + + sig do + override.returns( + T::Array[ + Openlayer::Models::InferencePipelines::TestResultListResponse::Item::RowsBody::ColumnFilter::StringColumnFilter::Value::Variants + ] + ) + end + def self.variants + end + end + end + + sig do + override.returns( + T::Array[ + Openlayer::Models::InferencePipelines::TestResultListResponse::Item::RowsBody::ColumnFilter::Variants + ] + ) + end + def self.variants + end + end + end end end end diff --git a/rbi/openlayer/models/test_list_results_params.rbi b/rbi/openlayer/models/test_list_results_params.rbi new file mode 100644 index 0000000..b468e73 --- /dev/null +++ b/rbi/openlayer/models/test_list_results_params.rbi @@ -0,0 +1,117 @@ +# typed: strong + +module Openlayer + module Models + class TestListResultsParams < Openlayer::Internal::Type::BaseModel + extend Openlayer::Internal::Type::RequestParameters::Converter + include Openlayer::Internal::Type::RequestParameters + + OrHash = + T.type_alias do + T.any(Openlayer::TestListResultsParams, Openlayer::Internal::AnyHash) + end + + # Filter for results that use data starting before the end timestamp. + sig { returns(T.nilable(Float)) } + attr_reader :end_timestamp + + sig { params(end_timestamp: Float).void } + attr_writer :end_timestamp + + # Include the insights linked to each test result + sig { returns(T.nilable(T::Boolean)) } + attr_reader :include_insights + + sig { params(include_insights: T::Boolean).void } + attr_writer :include_insights + + # Retrive test results for a specific inference pipeline. + sig { returns(T.nilable(String)) } + attr_accessor :inference_pipeline_id + + # The page to return in a paginated query. + sig { returns(T.nilable(Integer)) } + attr_reader :page + + sig { params(page: Integer).void } + attr_writer :page + + # Maximum number of items to return per page. + sig { returns(T.nilable(Integer)) } + attr_reader :per_page + + sig { params(per_page: Integer).void } + attr_writer :per_page + + # Retrive test results for a specific project version. + sig { returns(T.nilable(String)) } + attr_accessor :project_version_id + + # Filter for results that use data ending after the start timestamp. + sig { returns(T.nilable(Float)) } + attr_reader :start_timestamp + + sig { params(start_timestamp: Float).void } + attr_writer :start_timestamp + + # Filter by status(es). + sig { returns(T.nilable(T::Array[String])) } + attr_reader :status + + sig { params(status: T::Array[String]).void } + attr_writer :status + + sig do + params( + end_timestamp: Float, + include_insights: T::Boolean, + inference_pipeline_id: T.nilable(String), + page: Integer, + per_page: Integer, + project_version_id: T.nilable(String), + start_timestamp: Float, + status: T::Array[String], + request_options: Openlayer::RequestOptions::OrHash + ).returns(T.attached_class) + end + def self.new( + # Filter for results that use data starting before the end timestamp. + end_timestamp: nil, + # Include the insights linked to each test result + include_insights: nil, + # Retrive test results for a specific inference pipeline. + inference_pipeline_id: nil, + # The page to return in a paginated query. + page: nil, + # Maximum number of items to return per page. + per_page: nil, + # Retrive test results for a specific project version. + project_version_id: nil, + # Filter for results that use data ending after the start timestamp. + start_timestamp: nil, + # Filter by status(es). + status: nil, + request_options: {} + ) + end + + sig do + override.returns( + { + end_timestamp: Float, + include_insights: T::Boolean, + inference_pipeline_id: T.nilable(String), + page: Integer, + per_page: Integer, + project_version_id: T.nilable(String), + start_timestamp: Float, + status: T::Array[String], + request_options: Openlayer::RequestOptions + } + ) + end + def to_hash + end + end + end +end diff --git a/rbi/openlayer/models/test_list_results_response.rbi b/rbi/openlayer/models/test_list_results_response.rbi new file mode 100644 index 0000000..9d2322e --- /dev/null +++ b/rbi/openlayer/models/test_list_results_response.rbi @@ -0,0 +1,3650 @@ +# typed: strong + +module Openlayer + module Models + class TestListResultsResponse < Openlayer::Internal::Type::BaseModel + OrHash = + T.type_alias do + T.any( + Openlayer::Models::TestListResultsResponse, + Openlayer::Internal::AnyHash + ) + end + + sig do + returns(T::Array[Openlayer::Models::TestListResultsResponse::Item]) + end + attr_accessor :items + + sig do + returns( + T.nilable( + Openlayer::Models::TestListResultsResponse::LastUnskippedResult + ) + ) + end + attr_reader :last_unskipped_result + + sig do + params( + last_unskipped_result: + T.nilable( + Openlayer::Models::TestListResultsResponse::LastUnskippedResult::OrHash + ) + ).void + end + attr_writer :last_unskipped_result + + sig do + params( + items: + T::Array[Openlayer::Models::TestListResultsResponse::Item::OrHash], + last_unskipped_result: + T.nilable( + Openlayer::Models::TestListResultsResponse::LastUnskippedResult::OrHash + ) + ).returns(T.attached_class) + end + def self.new(items:, last_unskipped_result: nil) + end + + sig do + override.returns( + { + items: T::Array[Openlayer::Models::TestListResultsResponse::Item], + last_unskipped_result: + T.nilable( + Openlayer::Models::TestListResultsResponse::LastUnskippedResult + ) + } + ) + end + def to_hash + end + + class Item < Openlayer::Internal::Type::BaseModel + OrHash = + T.type_alias do + T.any( + Openlayer::Models::TestListResultsResponse::Item, + Openlayer::Internal::AnyHash + ) + end + + # The status of the test. + sig do + returns( + Openlayer::Models::TestListResultsResponse::Item::Status::TaggedSymbol + ) + end + attr_accessor :status + + # The status message. + sig { returns(T.nilable(String)) } + attr_accessor :status_message + + sig do + returns( + T.nilable( + T::Array[ + Openlayer::Models::TestListResultsResponse::Item::ExpectedValue + ] + ) + ) + end + attr_reader :expected_values + + sig do + params( + expected_values: + T::Array[ + Openlayer::Models::TestListResultsResponse::Item::ExpectedValue::OrHash + ] + ).void + end + attr_writer :expected_values + + sig do + returns( + T.nilable(Openlayer::Models::TestListResultsResponse::Item::Goal) + ) + end + attr_reader :goal + + sig do + params( + goal: Openlayer::Models::TestListResultsResponse::Item::Goal::OrHash + ).void + end + attr_writer :goal + + # The URL to the rows of the test result. + sig { returns(T.nilable(String)) } + attr_reader :rows + + sig { params(rows: String).void } + attr_writer :rows + + # The body of the rows request. + sig do + returns( + T.nilable( + Openlayer::Models::TestListResultsResponse::Item::RowsBody + ) + ) + end + attr_reader :rows_body + + sig do + params( + rows_body: + T.nilable( + Openlayer::Models::TestListResultsResponse::Item::RowsBody::OrHash + ) + ).void + end + attr_writer :rows_body + + # Project version (commit) id. + sig { returns(String) } + attr_accessor :id + + # The creation date. + sig { returns(Time) } + attr_accessor :date_created + + # The data end date. + sig { returns(T.nilable(Time)) } + attr_accessor :date_data_ends + + # The data start date. + sig { returns(T.nilable(Time)) } + attr_accessor :date_data_starts + + # The last updated date. + sig { returns(Time) } + attr_accessor :date_updated + + # The inference pipeline id. + sig { returns(T.nilable(String)) } + attr_accessor :inference_pipeline_id + + # The project version (commit) id. + sig { returns(T.nilable(String)) } + attr_accessor :project_version_id + + # The test id. + sig { returns(T.nilable(String)) } + attr_accessor :goal_id + + sig do + params( + id: String, + date_created: Time, + date_data_ends: T.nilable(Time), + date_data_starts: T.nilable(Time), + date_updated: Time, + inference_pipeline_id: T.nilable(String), + project_version_id: T.nilable(String), + status: + Openlayer::Models::TestListResultsResponse::Item::Status::OrSymbol, + status_message: T.nilable(String), + expected_values: + T::Array[ + Openlayer::Models::TestListResultsResponse::Item::ExpectedValue::OrHash + ], + goal: + Openlayer::Models::TestListResultsResponse::Item::Goal::OrHash, + goal_id: T.nilable(String), + rows: String, + rows_body: + T.nilable( + Openlayer::Models::TestListResultsResponse::Item::RowsBody::OrHash + ) + ).returns(T.attached_class) + end + def self.new( + # Project version (commit) id. + id:, + # The creation date. + date_created:, + # The data end date. + date_data_ends:, + # The data start date. + date_data_starts:, + # The last updated date. + date_updated:, + # The inference pipeline id. + inference_pipeline_id:, + # The project version (commit) id. + project_version_id:, + # The status of the test. + status:, + # The status message. + status_message:, + expected_values: nil, + goal: nil, + # The test id. + goal_id: nil, + # The URL to the rows of the test result. + rows: nil, + # The body of the rows request. + rows_body: nil + ) + end + + sig do + override.returns( + { + id: String, + date_created: Time, + date_data_ends: T.nilable(Time), + date_data_starts: T.nilable(Time), + date_updated: Time, + inference_pipeline_id: T.nilable(String), + project_version_id: T.nilable(String), + status: + Openlayer::Models::TestListResultsResponse::Item::Status::TaggedSymbol, + status_message: T.nilable(String), + expected_values: + T::Array[ + Openlayer::Models::TestListResultsResponse::Item::ExpectedValue + ], + goal: Openlayer::Models::TestListResultsResponse::Item::Goal, + goal_id: T.nilable(String), + rows: String, + rows_body: + T.nilable( + Openlayer::Models::TestListResultsResponse::Item::RowsBody + ) + } + ) + end + def to_hash + end + + # The status of the test. + module Status + extend Openlayer::Internal::Type::Enum + + TaggedSymbol = + T.type_alias do + T.all( + Symbol, + Openlayer::Models::TestListResultsResponse::Item::Status + ) + end + OrSymbol = T.type_alias { T.any(Symbol, String) } + + RUNNING = + T.let( + :running, + Openlayer::Models::TestListResultsResponse::Item::Status::TaggedSymbol + ) + PASSING = + T.let( + :passing, + Openlayer::Models::TestListResultsResponse::Item::Status::TaggedSymbol + ) + FAILING = + T.let( + :failing, + Openlayer::Models::TestListResultsResponse::Item::Status::TaggedSymbol + ) + SKIPPED = + T.let( + :skipped, + Openlayer::Models::TestListResultsResponse::Item::Status::TaggedSymbol + ) + ERROR = + T.let( + :error, + Openlayer::Models::TestListResultsResponse::Item::Status::TaggedSymbol + ) + + sig do + override.returns( + T::Array[ + Openlayer::Models::TestListResultsResponse::Item::Status::TaggedSymbol + ] + ) + end + def self.values + end + end + + class ExpectedValue < Openlayer::Internal::Type::BaseModel + OrHash = + T.type_alias do + T.any( + Openlayer::Models::TestListResultsResponse::Item::ExpectedValue, + Openlayer::Internal::AnyHash + ) + end + + # the lower threshold for the expected value + sig { returns(T.nilable(Float)) } + attr_accessor :lower_threshold + + # One of the `measurement` values in the test's thresholds + sig { returns(T.nilable(String)) } + attr_reader :measurement + + sig { params(measurement: String).void } + attr_writer :measurement + + # The upper threshold for the expected value + sig { returns(T.nilable(Float)) } + attr_accessor :upper_threshold + + sig do + params( + lower_threshold: T.nilable(Float), + measurement: String, + upper_threshold: T.nilable(Float) + ).returns(T.attached_class) + end + def self.new( + # the lower threshold for the expected value + lower_threshold: nil, + # One of the `measurement` values in the test's thresholds + measurement: nil, + # The upper threshold for the expected value + upper_threshold: nil + ) + end + + sig do + override.returns( + { + lower_threshold: T.nilable(Float), + measurement: String, + upper_threshold: T.nilable(Float) + } + ) + end + def to_hash + end + end + + class Goal < Openlayer::Internal::Type::BaseModel + OrHash = + T.type_alias do + T.any( + Openlayer::Models::TestListResultsResponse::Item::Goal, + Openlayer::Internal::AnyHash + ) + end + + # The test description. + sig { returns(T.nilable(T.anything)) } + attr_accessor :description + + # The test name. + sig { returns(String) } + attr_accessor :name + + # The test subtype. + sig do + returns( + Openlayer::Models::TestListResultsResponse::Item::Goal::Subtype::TaggedSymbol + ) + end + attr_accessor :subtype + + sig do + returns( + T::Array[ + Openlayer::Models::TestListResultsResponse::Item::Goal::Threshold + ] + ) + end + attr_accessor :thresholds + + # The test type. + sig do + returns( + Openlayer::Models::TestListResultsResponse::Item::Goal::Type::TaggedSymbol + ) + end + attr_accessor :type + + # Whether the test is archived. + sig { returns(T.nilable(T::Boolean)) } + attr_reader :archived + + sig { params(archived: T::Boolean).void } + attr_writer :archived + + # The delay window in seconds. Only applies to tests that use production data. + sig { returns(T.nilable(Float)) } + attr_accessor :delay_window + + # The evaluation window in seconds. Only applies to tests that use production + # data. + sig { returns(T.nilable(Float)) } + attr_accessor :evaluation_window + + # Whether the test uses an ML model. + sig { returns(T.nilable(T::Boolean)) } + attr_reader :uses_ml_model + + sig { params(uses_ml_model: T::Boolean).void } + attr_writer :uses_ml_model + + # Whether the test uses production data (monitoring mode only). + sig { returns(T.nilable(T::Boolean)) } + attr_reader :uses_production_data + + sig { params(uses_production_data: T::Boolean).void } + attr_writer :uses_production_data + + # Whether the test uses a reference dataset (monitoring mode only). + sig { returns(T.nilable(T::Boolean)) } + attr_reader :uses_reference_dataset + + sig { params(uses_reference_dataset: T::Boolean).void } + attr_writer :uses_reference_dataset + + # Whether the test uses a training dataset. + sig { returns(T.nilable(T::Boolean)) } + attr_reader :uses_training_dataset + + sig { params(uses_training_dataset: T::Boolean).void } + attr_writer :uses_training_dataset + + # Whether the test uses a validation dataset. + sig { returns(T.nilable(T::Boolean)) } + attr_reader :uses_validation_dataset + + sig { params(uses_validation_dataset: T::Boolean).void } + attr_writer :uses_validation_dataset + + # The test id. + sig { returns(String) } + attr_accessor :id + + # The number of comments on the test. + sig { returns(Integer) } + attr_accessor :comment_count + + # The test creator id. + sig { returns(T.nilable(String)) } + attr_accessor :creator_id + + # The date the test was archived. + sig { returns(T.nilable(Time)) } + attr_accessor :date_archived + + # The creation date. + sig { returns(Time) } + attr_accessor :date_created + + # The last updated date. + sig { returns(Time) } + attr_accessor :date_updated + + # The test number. + sig { returns(Integer) } + attr_accessor :number + + # The project version (commit) id where the test was created. + sig { returns(T.nilable(String)) } + attr_accessor :origin_project_version_id + + # Whether the test is suggested or user-created. + sig { returns(T::Boolean) } + attr_accessor :suggested + + sig do + params( + id: String, + comment_count: Integer, + creator_id: T.nilable(String), + date_archived: T.nilable(Time), + date_created: Time, + date_updated: Time, + description: T.nilable(T.anything), + name: String, + number: Integer, + origin_project_version_id: T.nilable(String), + subtype: + Openlayer::Models::TestListResultsResponse::Item::Goal::Subtype::OrSymbol, + suggested: T::Boolean, + thresholds: + T::Array[ + Openlayer::Models::TestListResultsResponse::Item::Goal::Threshold::OrHash + ], + type: + Openlayer::Models::TestListResultsResponse::Item::Goal::Type::OrSymbol, + archived: T::Boolean, + delay_window: T.nilable(Float), + evaluation_window: T.nilable(Float), + uses_ml_model: T::Boolean, + uses_production_data: T::Boolean, + uses_reference_dataset: T::Boolean, + uses_training_dataset: T::Boolean, + uses_validation_dataset: T::Boolean + ).returns(T.attached_class) + end + def self.new( + # The test id. + id:, + # The number of comments on the test. + comment_count:, + # The test creator id. + creator_id:, + # The date the test was archived. + date_archived:, + # The creation date. + date_created:, + # The last updated date. + date_updated:, + # The test description. + description:, + # The test name. + name:, + # The test number. + number:, + # The project version (commit) id where the test was created. + origin_project_version_id:, + # The test subtype. + subtype:, + # Whether the test is suggested or user-created. + suggested:, + thresholds:, + # The test type. + type:, + # Whether the test is archived. + archived: nil, + # The delay window in seconds. Only applies to tests that use production data. + delay_window: nil, + # The evaluation window in seconds. Only applies to tests that use production + # data. + evaluation_window: nil, + # Whether the test uses an ML model. + uses_ml_model: nil, + # Whether the test uses production data (monitoring mode only). + uses_production_data: nil, + # Whether the test uses a reference dataset (monitoring mode only). + uses_reference_dataset: nil, + # Whether the test uses a training dataset. + uses_training_dataset: nil, + # Whether the test uses a validation dataset. + uses_validation_dataset: nil + ) + end + + sig do + override.returns( + { + id: String, + comment_count: Integer, + creator_id: T.nilable(String), + date_archived: T.nilable(Time), + date_created: Time, + date_updated: Time, + description: T.nilable(T.anything), + name: String, + number: Integer, + origin_project_version_id: T.nilable(String), + subtype: + Openlayer::Models::TestListResultsResponse::Item::Goal::Subtype::TaggedSymbol, + suggested: T::Boolean, + thresholds: + T::Array[ + Openlayer::Models::TestListResultsResponse::Item::Goal::Threshold + ], + type: + Openlayer::Models::TestListResultsResponse::Item::Goal::Type::TaggedSymbol, + archived: T::Boolean, + delay_window: T.nilable(Float), + evaluation_window: T.nilable(Float), + uses_ml_model: T::Boolean, + uses_production_data: T::Boolean, + uses_reference_dataset: T::Boolean, + uses_training_dataset: T::Boolean, + uses_validation_dataset: T::Boolean + } + ) + end + def to_hash + end + + # The test subtype. + module Subtype + extend Openlayer::Internal::Type::Enum + + TaggedSymbol = + T.type_alias do + T.all( + Symbol, + Openlayer::Models::TestListResultsResponse::Item::Goal::Subtype + ) + end + OrSymbol = T.type_alias { T.any(Symbol, String) } + + ANOMALOUS_COLUMN_COUNT = + T.let( + :anomalousColumnCount, + Openlayer::Models::TestListResultsResponse::Item::Goal::Subtype::TaggedSymbol + ) + CHARACTER_LENGTH = + T.let( + :characterLength, + Openlayer::Models::TestListResultsResponse::Item::Goal::Subtype::TaggedSymbol + ) + CLASS_IMBALANCE_RATIO = + T.let( + :classImbalanceRatio, + Openlayer::Models::TestListResultsResponse::Item::Goal::Subtype::TaggedSymbol + ) + EXPECT_COLUMN_A_TO_BE_IN_COLUMN_B = + T.let( + :expectColumnAToBeInColumnB, + Openlayer::Models::TestListResultsResponse::Item::Goal::Subtype::TaggedSymbol + ) + COLUMN_AVERAGE = + T.let( + :columnAverage, + Openlayer::Models::TestListResultsResponse::Item::Goal::Subtype::TaggedSymbol + ) + COLUMN_DRIFT = + T.let( + :columnDrift, + Openlayer::Models::TestListResultsResponse::Item::Goal::Subtype::TaggedSymbol + ) + COLUMN_STATISTIC = + T.let( + :columnStatistic, + Openlayer::Models::TestListResultsResponse::Item::Goal::Subtype::TaggedSymbol + ) + COLUMN_VALUES_MATCH = + T.let( + :columnValuesMatch, + Openlayer::Models::TestListResultsResponse::Item::Goal::Subtype::TaggedSymbol + ) + CONFLICTING_LABEL_ROW_COUNT = + T.let( + :conflictingLabelRowCount, + Openlayer::Models::TestListResultsResponse::Item::Goal::Subtype::TaggedSymbol + ) + CONTAINS_PII = + T.let( + :containsPii, + Openlayer::Models::TestListResultsResponse::Item::Goal::Subtype::TaggedSymbol + ) + CONTAINS_VALID_URL = + T.let( + :containsValidUrl, + Openlayer::Models::TestListResultsResponse::Item::Goal::Subtype::TaggedSymbol + ) + CORRELATED_FEATURE_COUNT = + T.let( + :correlatedFeatureCount, + Openlayer::Models::TestListResultsResponse::Item::Goal::Subtype::TaggedSymbol + ) + CUSTOM_METRIC_THRESHOLD = + T.let( + :customMetricThreshold, + Openlayer::Models::TestListResultsResponse::Item::Goal::Subtype::TaggedSymbol + ) + DUPLICATE_ROW_COUNT = + T.let( + :duplicateRowCount, + Openlayer::Models::TestListResultsResponse::Item::Goal::Subtype::TaggedSymbol + ) + EMPTY_FEATURE = + T.let( + :emptyFeature, + Openlayer::Models::TestListResultsResponse::Item::Goal::Subtype::TaggedSymbol + ) + EMPTY_FEATURE_COUNT = + T.let( + :emptyFeatureCount, + Openlayer::Models::TestListResultsResponse::Item::Goal::Subtype::TaggedSymbol + ) + DRIFTED_FEATURE_COUNT = + T.let( + :driftedFeatureCount, + Openlayer::Models::TestListResultsResponse::Item::Goal::Subtype::TaggedSymbol + ) + FEATURE_MISSING_VALUES = + T.let( + :featureMissingValues, + Openlayer::Models::TestListResultsResponse::Item::Goal::Subtype::TaggedSymbol + ) + FEATURE_VALUE_VALIDATION = + T.let( + :featureValueValidation, + Openlayer::Models::TestListResultsResponse::Item::Goal::Subtype::TaggedSymbol + ) + GREAT_EXPECTATIONS = + T.let( + :greatExpectations, + Openlayer::Models::TestListResultsResponse::Item::Goal::Subtype::TaggedSymbol + ) + GROUP_BY_COLUMN_STATS_CHECK = + T.let( + :groupByColumnStatsCheck, + Openlayer::Models::TestListResultsResponse::Item::Goal::Subtype::TaggedSymbol + ) + ILL_FORMED_ROW_COUNT = + T.let( + :illFormedRowCount, + Openlayer::Models::TestListResultsResponse::Item::Goal::Subtype::TaggedSymbol + ) + IS_CODE = + T.let( + :isCode, + Openlayer::Models::TestListResultsResponse::Item::Goal::Subtype::TaggedSymbol + ) + IS_JSON = + T.let( + :isJson, + Openlayer::Models::TestListResultsResponse::Item::Goal::Subtype::TaggedSymbol + ) + LLM_RUBRIC_THRESHOLD_V2 = + T.let( + :llmRubricThresholdV2, + Openlayer::Models::TestListResultsResponse::Item::Goal::Subtype::TaggedSymbol + ) + LABEL_DRIFT = + T.let( + :labelDrift, + Openlayer::Models::TestListResultsResponse::Item::Goal::Subtype::TaggedSymbol + ) + METRIC_THRESHOLD = + T.let( + :metricThreshold, + Openlayer::Models::TestListResultsResponse::Item::Goal::Subtype::TaggedSymbol + ) + NEW_CATEGORY_COUNT = + T.let( + :newCategoryCount, + Openlayer::Models::TestListResultsResponse::Item::Goal::Subtype::TaggedSymbol + ) + NEW_LABEL_COUNT = + T.let( + :newLabelCount, + Openlayer::Models::TestListResultsResponse::Item::Goal::Subtype::TaggedSymbol + ) + NULL_ROW_COUNT = + T.let( + :nullRowCount, + Openlayer::Models::TestListResultsResponse::Item::Goal::Subtype::TaggedSymbol + ) + ROW_COUNT = + T.let( + :rowCount, + Openlayer::Models::TestListResultsResponse::Item::Goal::Subtype::TaggedSymbol + ) + PP_SCORE_VALUE_VALIDATION = + T.let( + :ppScoreValueValidation, + Openlayer::Models::TestListResultsResponse::Item::Goal::Subtype::TaggedSymbol + ) + QUASI_CONSTANT_FEATURE = + T.let( + :quasiConstantFeature, + Openlayer::Models::TestListResultsResponse::Item::Goal::Subtype::TaggedSymbol + ) + QUASI_CONSTANT_FEATURE_COUNT = + T.let( + :quasiConstantFeatureCount, + Openlayer::Models::TestListResultsResponse::Item::Goal::Subtype::TaggedSymbol + ) + SQL_QUERY = + T.let( + :sqlQuery, + Openlayer::Models::TestListResultsResponse::Item::Goal::Subtype::TaggedSymbol + ) + DTYPE_VALIDATION = + T.let( + :dtypeValidation, + Openlayer::Models::TestListResultsResponse::Item::Goal::Subtype::TaggedSymbol + ) + SENTENCE_LENGTH = + T.let( + :sentenceLength, + Openlayer::Models::TestListResultsResponse::Item::Goal::Subtype::TaggedSymbol + ) + SIZE_RATIO = + T.let( + :sizeRatio, + Openlayer::Models::TestListResultsResponse::Item::Goal::Subtype::TaggedSymbol + ) + SPECIAL_CHARACTERS_RATIO = + T.let( + :specialCharactersRatio, + Openlayer::Models::TestListResultsResponse::Item::Goal::Subtype::TaggedSymbol + ) + STRING_VALIDATION = + T.let( + :stringValidation, + Openlayer::Models::TestListResultsResponse::Item::Goal::Subtype::TaggedSymbol + ) + TRAIN_VAL_LEAKAGE_ROW_COUNT = + T.let( + :trainValLeakageRowCount, + Openlayer::Models::TestListResultsResponse::Item::Goal::Subtype::TaggedSymbol + ) + + sig do + override.returns( + T::Array[ + Openlayer::Models::TestListResultsResponse::Item::Goal::Subtype::TaggedSymbol + ] + ) + end + def self.values + end + end + + class Threshold < Openlayer::Internal::Type::BaseModel + OrHash = + T.type_alias do + T.any( + Openlayer::Models::TestListResultsResponse::Item::Goal::Threshold, + Openlayer::Internal::AnyHash + ) + end + + # The insight name to be evaluated. + sig do + returns( + T.nilable( + Openlayer::Models::TestListResultsResponse::Item::Goal::Threshold::InsightName::TaggedSymbol + ) + ) + end + attr_reader :insight_name + + sig do + params( + insight_name: + Openlayer::Models::TestListResultsResponse::Item::Goal::Threshold::InsightName::OrSymbol + ).void + end + attr_writer :insight_name + + # The insight parameters. Required only for some test subtypes. For example, for + # tests that require a column name, the insight parameters will be [{'name': + # 'column_name', 'value': 'Age'}] + sig do + returns( + T.nilable( + T::Array[ + Openlayer::Models::TestListResultsResponse::Item::Goal::Threshold::InsightParameter + ] + ) + ) + end + attr_accessor :insight_parameters + + # The measurement to be evaluated. + sig { returns(T.nilable(String)) } + attr_reader :measurement + + sig { params(measurement: String).void } + attr_writer :measurement + + # The operator to be used for the evaluation. + sig do + returns( + T.nilable( + Openlayer::Models::TestListResultsResponse::Item::Goal::Threshold::Operator::TaggedSymbol + ) + ) + end + attr_reader :operator + + sig do + params( + operator: + Openlayer::Models::TestListResultsResponse::Item::Goal::Threshold::Operator::OrSymbol + ).void + end + attr_writer :operator + + # Whether to use automatic anomaly detection or manual thresholds + sig do + returns( + T.nilable( + Openlayer::Models::TestListResultsResponse::Item::Goal::Threshold::ThresholdMode::TaggedSymbol + ) + ) + end + attr_reader :threshold_mode + + sig do + params( + threshold_mode: + Openlayer::Models::TestListResultsResponse::Item::Goal::Threshold::ThresholdMode::OrSymbol + ).void + end + attr_writer :threshold_mode + + # The value to be compared. + sig do + returns( + T.nilable( + Openlayer::Models::TestListResultsResponse::Item::Goal::Threshold::Value::Variants + ) + ) + end + attr_reader :value + + sig do + params( + value: + Openlayer::Models::TestListResultsResponse::Item::Goal::Threshold::Value::Variants + ).void + end + attr_writer :value + + sig do + params( + insight_name: + Openlayer::Models::TestListResultsResponse::Item::Goal::Threshold::InsightName::OrSymbol, + insight_parameters: + T.nilable( + T::Array[ + Openlayer::Models::TestListResultsResponse::Item::Goal::Threshold::InsightParameter::OrHash + ] + ), + measurement: String, + operator: + Openlayer::Models::TestListResultsResponse::Item::Goal::Threshold::Operator::OrSymbol, + threshold_mode: + Openlayer::Models::TestListResultsResponse::Item::Goal::Threshold::ThresholdMode::OrSymbol, + value: + Openlayer::Models::TestListResultsResponse::Item::Goal::Threshold::Value::Variants + ).returns(T.attached_class) + end + def self.new( + # The insight name to be evaluated. + insight_name: nil, + # The insight parameters. Required only for some test subtypes. For example, for + # tests that require a column name, the insight parameters will be [{'name': + # 'column_name', 'value': 'Age'}] + insight_parameters: nil, + # The measurement to be evaluated. + measurement: nil, + # The operator to be used for the evaluation. + operator: nil, + # Whether to use automatic anomaly detection or manual thresholds + threshold_mode: nil, + # The value to be compared. + value: nil + ) + end + + sig do + override.returns( + { + insight_name: + Openlayer::Models::TestListResultsResponse::Item::Goal::Threshold::InsightName::TaggedSymbol, + insight_parameters: + T.nilable( + T::Array[ + Openlayer::Models::TestListResultsResponse::Item::Goal::Threshold::InsightParameter + ] + ), + measurement: String, + operator: + Openlayer::Models::TestListResultsResponse::Item::Goal::Threshold::Operator::TaggedSymbol, + threshold_mode: + Openlayer::Models::TestListResultsResponse::Item::Goal::Threshold::ThresholdMode::TaggedSymbol, + value: + Openlayer::Models::TestListResultsResponse::Item::Goal::Threshold::Value::Variants + } + ) + end + def to_hash + end + + # The insight name to be evaluated. + module InsightName + extend Openlayer::Internal::Type::Enum + + TaggedSymbol = + T.type_alias do + T.all( + Symbol, + Openlayer::Models::TestListResultsResponse::Item::Goal::Threshold::InsightName + ) + end + OrSymbol = T.type_alias { T.any(Symbol, String) } + + CHARACTER_LENGTH = + T.let( + :characterLength, + Openlayer::Models::TestListResultsResponse::Item::Goal::Threshold::InsightName::TaggedSymbol + ) + CLASS_IMBALANCE = + T.let( + :classImbalance, + Openlayer::Models::TestListResultsResponse::Item::Goal::Threshold::InsightName::TaggedSymbol + ) + EXPECT_COLUMN_A_TO_BE_IN_COLUMN_B = + T.let( + :expectColumnAToBeInColumnB, + Openlayer::Models::TestListResultsResponse::Item::Goal::Threshold::InsightName::TaggedSymbol + ) + COLUMN_AVERAGE = + T.let( + :columnAverage, + Openlayer::Models::TestListResultsResponse::Item::Goal::Threshold::InsightName::TaggedSymbol + ) + COLUMN_DRIFT = + T.let( + :columnDrift, + Openlayer::Models::TestListResultsResponse::Item::Goal::Threshold::InsightName::TaggedSymbol + ) + COLUMN_VALUES_MATCH = + T.let( + :columnValuesMatch, + Openlayer::Models::TestListResultsResponse::Item::Goal::Threshold::InsightName::TaggedSymbol + ) + CONFIDENCE_DISTRIBUTION = + T.let( + :confidenceDistribution, + Openlayer::Models::TestListResultsResponse::Item::Goal::Threshold::InsightName::TaggedSymbol + ) + CONFLICTING_LABEL_ROW_COUNT = + T.let( + :conflictingLabelRowCount, + Openlayer::Models::TestListResultsResponse::Item::Goal::Threshold::InsightName::TaggedSymbol + ) + CONTAINS_PII = + T.let( + :containsPii, + Openlayer::Models::TestListResultsResponse::Item::Goal::Threshold::InsightName::TaggedSymbol + ) + CONTAINS_VALID_URL = + T.let( + :containsValidUrl, + Openlayer::Models::TestListResultsResponse::Item::Goal::Threshold::InsightName::TaggedSymbol + ) + CORRELATED_FEATURES = + T.let( + :correlatedFeatures, + Openlayer::Models::TestListResultsResponse::Item::Goal::Threshold::InsightName::TaggedSymbol + ) + CUSTOM_METRIC = + T.let( + :customMetric, + Openlayer::Models::TestListResultsResponse::Item::Goal::Threshold::InsightName::TaggedSymbol + ) + DUPLICATE_ROW_COUNT = + T.let( + :duplicateRowCount, + Openlayer::Models::TestListResultsResponse::Item::Goal::Threshold::InsightName::TaggedSymbol + ) + EMPTY_FEATURES = + T.let( + :emptyFeatures, + Openlayer::Models::TestListResultsResponse::Item::Goal::Threshold::InsightName::TaggedSymbol + ) + FEATURE_DRIFT = + T.let( + :featureDrift, + Openlayer::Models::TestListResultsResponse::Item::Goal::Threshold::InsightName::TaggedSymbol + ) + FEATURE_PROFILE = + T.let( + :featureProfile, + Openlayer::Models::TestListResultsResponse::Item::Goal::Threshold::InsightName::TaggedSymbol + ) + GREAT_EXPECTATIONS = + T.let( + :greatExpectations, + Openlayer::Models::TestListResultsResponse::Item::Goal::Threshold::InsightName::TaggedSymbol + ) + GROUP_BY_COLUMN_STATS_CHECK = + T.let( + :groupByColumnStatsCheck, + Openlayer::Models::TestListResultsResponse::Item::Goal::Threshold::InsightName::TaggedSymbol + ) + ILL_FORMED_ROW_COUNT = + T.let( + :illFormedRowCount, + Openlayer::Models::TestListResultsResponse::Item::Goal::Threshold::InsightName::TaggedSymbol + ) + IS_CODE = + T.let( + :isCode, + Openlayer::Models::TestListResultsResponse::Item::Goal::Threshold::InsightName::TaggedSymbol + ) + IS_JSON = + T.let( + :isJson, + Openlayer::Models::TestListResultsResponse::Item::Goal::Threshold::InsightName::TaggedSymbol + ) + LLM_RUBRIC_V2 = + T.let( + :llmRubricV2, + Openlayer::Models::TestListResultsResponse::Item::Goal::Threshold::InsightName::TaggedSymbol + ) + LABEL_DRIFT = + T.let( + :labelDrift, + Openlayer::Models::TestListResultsResponse::Item::Goal::Threshold::InsightName::TaggedSymbol + ) + METRICS = + T.let( + :metrics, + Openlayer::Models::TestListResultsResponse::Item::Goal::Threshold::InsightName::TaggedSymbol + ) + NEW_CATEGORIES = + T.let( + :newCategories, + Openlayer::Models::TestListResultsResponse::Item::Goal::Threshold::InsightName::TaggedSymbol + ) + NEW_LABELS = + T.let( + :newLabels, + Openlayer::Models::TestListResultsResponse::Item::Goal::Threshold::InsightName::TaggedSymbol + ) + NULL_ROW_COUNT = + T.let( + :nullRowCount, + Openlayer::Models::TestListResultsResponse::Item::Goal::Threshold::InsightName::TaggedSymbol + ) + PP_SCORE = + T.let( + :ppScore, + Openlayer::Models::TestListResultsResponse::Item::Goal::Threshold::InsightName::TaggedSymbol + ) + QUASI_CONSTANT_FEATURES = + T.let( + :quasiConstantFeatures, + Openlayer::Models::TestListResultsResponse::Item::Goal::Threshold::InsightName::TaggedSymbol + ) + SENTENCE_LENGTH = + T.let( + :sentenceLength, + Openlayer::Models::TestListResultsResponse::Item::Goal::Threshold::InsightName::TaggedSymbol + ) + SIZE_RATIO = + T.let( + :sizeRatio, + Openlayer::Models::TestListResultsResponse::Item::Goal::Threshold::InsightName::TaggedSymbol + ) + SPECIAL_CHARACTERS = + T.let( + :specialCharacters, + Openlayer::Models::TestListResultsResponse::Item::Goal::Threshold::InsightName::TaggedSymbol + ) + STRING_VALIDATION = + T.let( + :stringValidation, + Openlayer::Models::TestListResultsResponse::Item::Goal::Threshold::InsightName::TaggedSymbol + ) + TRAIN_VAL_LEAKAGE_ROW_COUNT = + T.let( + :trainValLeakageRowCount, + Openlayer::Models::TestListResultsResponse::Item::Goal::Threshold::InsightName::TaggedSymbol + ) + + sig do + override.returns( + T::Array[ + Openlayer::Models::TestListResultsResponse::Item::Goal::Threshold::InsightName::TaggedSymbol + ] + ) + end + def self.values + end + end + + class InsightParameter < Openlayer::Internal::Type::BaseModel + OrHash = + T.type_alias do + T.any( + Openlayer::Models::TestListResultsResponse::Item::Goal::Threshold::InsightParameter, + Openlayer::Internal::AnyHash + ) + end + + # The name of the insight filter. + sig { returns(String) } + attr_accessor :name + + sig { returns(T.anything) } + attr_accessor :value + + sig do + params(name: String, value: T.anything).returns( + T.attached_class + ) + end + def self.new( + # The name of the insight filter. + name:, + value: + ) + end + + sig { override.returns({ name: String, value: T.anything }) } + def to_hash + end + end + + # The operator to be used for the evaluation. + module Operator + extend Openlayer::Internal::Type::Enum + + TaggedSymbol = + T.type_alias do + T.all( + Symbol, + Openlayer::Models::TestListResultsResponse::Item::Goal::Threshold::Operator + ) + end + OrSymbol = T.type_alias { T.any(Symbol, String) } + + IS = + T.let( + :is, + Openlayer::Models::TestListResultsResponse::Item::Goal::Threshold::Operator::TaggedSymbol + ) + GREATER = + T.let( + :">", + Openlayer::Models::TestListResultsResponse::Item::Goal::Threshold::Operator::TaggedSymbol + ) + GREATER_OR_EQUALS = + T.let( + :">=", + Openlayer::Models::TestListResultsResponse::Item::Goal::Threshold::Operator::TaggedSymbol + ) + LESS = + T.let( + :"<", + Openlayer::Models::TestListResultsResponse::Item::Goal::Threshold::Operator::TaggedSymbol + ) + LESS_OR_EQUALS = + T.let( + :"<=", + Openlayer::Models::TestListResultsResponse::Item::Goal::Threshold::Operator::TaggedSymbol + ) + NOT_EQUALS = + T.let( + :"!=", + Openlayer::Models::TestListResultsResponse::Item::Goal::Threshold::Operator::TaggedSymbol + ) + + sig do + override.returns( + T::Array[ + Openlayer::Models::TestListResultsResponse::Item::Goal::Threshold::Operator::TaggedSymbol + ] + ) + end + def self.values + end + end + + # Whether to use automatic anomaly detection or manual thresholds + module ThresholdMode + extend Openlayer::Internal::Type::Enum + + TaggedSymbol = + T.type_alias do + T.all( + Symbol, + Openlayer::Models::TestListResultsResponse::Item::Goal::Threshold::ThresholdMode + ) + end + OrSymbol = T.type_alias { T.any(Symbol, String) } + + AUTOMATIC = + T.let( + :automatic, + Openlayer::Models::TestListResultsResponse::Item::Goal::Threshold::ThresholdMode::TaggedSymbol + ) + MANUAL = + T.let( + :manual, + Openlayer::Models::TestListResultsResponse::Item::Goal::Threshold::ThresholdMode::TaggedSymbol + ) + + sig do + override.returns( + T::Array[ + Openlayer::Models::TestListResultsResponse::Item::Goal::Threshold::ThresholdMode::TaggedSymbol + ] + ) + end + def self.values + end + end + + # The value to be compared. + module Value + extend Openlayer::Internal::Type::Union + + Variants = + T.type_alias do + T.any(Float, T::Boolean, String, T::Array[String]) + end + + sig do + override.returns( + T::Array[ + Openlayer::Models::TestListResultsResponse::Item::Goal::Threshold::Value::Variants + ] + ) + end + def self.variants + end + + StringArray = + T.let( + Openlayer::Internal::Type::ArrayOf[String], + Openlayer::Internal::Type::Converter + ) + end + end + + # The test type. + module Type + extend Openlayer::Internal::Type::Enum + + TaggedSymbol = + T.type_alias do + T.all( + Symbol, + Openlayer::Models::TestListResultsResponse::Item::Goal::Type + ) + end + OrSymbol = T.type_alias { T.any(Symbol, String) } + + INTEGRITY = + T.let( + :integrity, + Openlayer::Models::TestListResultsResponse::Item::Goal::Type::TaggedSymbol + ) + CONSISTENCY = + T.let( + :consistency, + Openlayer::Models::TestListResultsResponse::Item::Goal::Type::TaggedSymbol + ) + PERFORMANCE = + T.let( + :performance, + Openlayer::Models::TestListResultsResponse::Item::Goal::Type::TaggedSymbol + ) + + sig do + override.returns( + T::Array[ + Openlayer::Models::TestListResultsResponse::Item::Goal::Type::TaggedSymbol + ] + ) + end + def self.values + end + end + end + + class RowsBody < Openlayer::Internal::Type::BaseModel + OrHash = + T.type_alias do + T.any( + Openlayer::Models::TestListResultsResponse::Item::RowsBody, + Openlayer::Internal::AnyHash + ) + end + + sig do + returns( + T.nilable( + T::Array[ + Openlayer::Models::TestListResultsResponse::Item::RowsBody::ColumnFilter::Variants + ] + ) + ) + end + attr_accessor :column_filters + + sig { returns(T.nilable(T::Array[Integer])) } + attr_accessor :exclude_row_id_list + + sig { returns(T.nilable(T::Array[String])) } + attr_accessor :not_search_query_and + + sig { returns(T.nilable(T::Array[String])) } + attr_accessor :not_search_query_or + + sig { returns(T.nilable(T::Array[Integer])) } + attr_accessor :row_id_list + + sig { returns(T.nilable(T::Array[String])) } + attr_accessor :search_query_and + + sig { returns(T.nilable(T::Array[String])) } + attr_accessor :search_query_or + + # The body of the rows request. + sig do + params( + column_filters: + T.nilable( + T::Array[ + T.any( + Openlayer::Models::TestListResultsResponse::Item::RowsBody::ColumnFilter::SetColumnFilter::OrHash, + Openlayer::Models::TestListResultsResponse::Item::RowsBody::ColumnFilter::NumericColumnFilter::OrHash, + Openlayer::Models::TestListResultsResponse::Item::RowsBody::ColumnFilter::StringColumnFilter::OrHash + ) + ] + ), + exclude_row_id_list: T.nilable(T::Array[Integer]), + not_search_query_and: T.nilable(T::Array[String]), + not_search_query_or: T.nilable(T::Array[String]), + row_id_list: T.nilable(T::Array[Integer]), + search_query_and: T.nilable(T::Array[String]), + search_query_or: T.nilable(T::Array[String]) + ).returns(T.attached_class) + end + def self.new( + column_filters: nil, + exclude_row_id_list: nil, + not_search_query_and: nil, + not_search_query_or: nil, + row_id_list: nil, + search_query_and: nil, + search_query_or: nil + ) + end + + sig do + override.returns( + { + column_filters: + T.nilable( + T::Array[ + Openlayer::Models::TestListResultsResponse::Item::RowsBody::ColumnFilter::Variants + ] + ), + exclude_row_id_list: T.nilable(T::Array[Integer]), + not_search_query_and: T.nilable(T::Array[String]), + not_search_query_or: T.nilable(T::Array[String]), + row_id_list: T.nilable(T::Array[Integer]), + search_query_and: T.nilable(T::Array[String]), + search_query_or: T.nilable(T::Array[String]) + } + ) + end + def to_hash + end + + module ColumnFilter + extend Openlayer::Internal::Type::Union + + Variants = + T.type_alias do + T.any( + Openlayer::Models::TestListResultsResponse::Item::RowsBody::ColumnFilter::SetColumnFilter, + Openlayer::Models::TestListResultsResponse::Item::RowsBody::ColumnFilter::NumericColumnFilter, + Openlayer::Models::TestListResultsResponse::Item::RowsBody::ColumnFilter::StringColumnFilter + ) + end + + class SetColumnFilter < Openlayer::Internal::Type::BaseModel + OrHash = + T.type_alias do + T.any( + Openlayer::Models::TestListResultsResponse::Item::RowsBody::ColumnFilter::SetColumnFilter, + Openlayer::Internal::AnyHash + ) + end + + # The name of the column. + sig { returns(String) } + attr_accessor :measurement + + sig do + returns( + Openlayer::Models::TestListResultsResponse::Item::RowsBody::ColumnFilter::SetColumnFilter::Operator::TaggedSymbol + ) + end + attr_accessor :operator + + sig do + returns( + T::Array[ + Openlayer::Models::TestListResultsResponse::Item::RowsBody::ColumnFilter::SetColumnFilter::Value::Variants + ] + ) + end + attr_accessor :value + + sig do + params( + measurement: String, + operator: + Openlayer::Models::TestListResultsResponse::Item::RowsBody::ColumnFilter::SetColumnFilter::Operator::OrSymbol, + value: + T::Array[ + Openlayer::Models::TestListResultsResponse::Item::RowsBody::ColumnFilter::SetColumnFilter::Value::Variants + ] + ).returns(T.attached_class) + end + def self.new( + # The name of the column. + measurement:, + operator:, + value: + ) + end + + sig do + override.returns( + { + measurement: String, + operator: + Openlayer::Models::TestListResultsResponse::Item::RowsBody::ColumnFilter::SetColumnFilter::Operator::TaggedSymbol, + value: + T::Array[ + Openlayer::Models::TestListResultsResponse::Item::RowsBody::ColumnFilter::SetColumnFilter::Value::Variants + ] + } + ) + end + def to_hash + end + + module Operator + extend Openlayer::Internal::Type::Enum + + TaggedSymbol = + T.type_alias do + T.all( + Symbol, + Openlayer::Models::TestListResultsResponse::Item::RowsBody::ColumnFilter::SetColumnFilter::Operator + ) + end + OrSymbol = T.type_alias { T.any(Symbol, String) } + + CONTAINS_NONE = + T.let( + :contains_none, + Openlayer::Models::TestListResultsResponse::Item::RowsBody::ColumnFilter::SetColumnFilter::Operator::TaggedSymbol + ) + CONTAINS_ANY = + T.let( + :contains_any, + Openlayer::Models::TestListResultsResponse::Item::RowsBody::ColumnFilter::SetColumnFilter::Operator::TaggedSymbol + ) + CONTAINS_ALL = + T.let( + :contains_all, + Openlayer::Models::TestListResultsResponse::Item::RowsBody::ColumnFilter::SetColumnFilter::Operator::TaggedSymbol + ) + ONE_OF = + T.let( + :one_of, + Openlayer::Models::TestListResultsResponse::Item::RowsBody::ColumnFilter::SetColumnFilter::Operator::TaggedSymbol + ) + NONE_OF = + T.let( + :none_of, + Openlayer::Models::TestListResultsResponse::Item::RowsBody::ColumnFilter::SetColumnFilter::Operator::TaggedSymbol + ) + + sig do + override.returns( + T::Array[ + Openlayer::Models::TestListResultsResponse::Item::RowsBody::ColumnFilter::SetColumnFilter::Operator::TaggedSymbol + ] + ) + end + def self.values + end + end + + module Value + extend Openlayer::Internal::Type::Union + + Variants = T.type_alias { T.any(String, Float) } + + sig do + override.returns( + T::Array[ + Openlayer::Models::TestListResultsResponse::Item::RowsBody::ColumnFilter::SetColumnFilter::Value::Variants + ] + ) + end + def self.variants + end + end + end + + class NumericColumnFilter < Openlayer::Internal::Type::BaseModel + OrHash = + T.type_alias do + T.any( + Openlayer::Models::TestListResultsResponse::Item::RowsBody::ColumnFilter::NumericColumnFilter, + Openlayer::Internal::AnyHash + ) + end + + # The name of the column. + sig { returns(String) } + attr_accessor :measurement + + sig do + returns( + Openlayer::Models::TestListResultsResponse::Item::RowsBody::ColumnFilter::NumericColumnFilter::Operator::TaggedSymbol + ) + end + attr_accessor :operator + + sig { returns(T.nilable(Float)) } + attr_accessor :value + + sig do + params( + measurement: String, + operator: + Openlayer::Models::TestListResultsResponse::Item::RowsBody::ColumnFilter::NumericColumnFilter::Operator::OrSymbol, + value: T.nilable(Float) + ).returns(T.attached_class) + end + def self.new( + # The name of the column. + measurement:, + operator:, + value: + ) + end + + sig do + override.returns( + { + measurement: String, + operator: + Openlayer::Models::TestListResultsResponse::Item::RowsBody::ColumnFilter::NumericColumnFilter::Operator::TaggedSymbol, + value: T.nilable(Float) + } + ) + end + def to_hash + end + + module Operator + extend Openlayer::Internal::Type::Enum + + TaggedSymbol = + T.type_alias do + T.all( + Symbol, + Openlayer::Models::TestListResultsResponse::Item::RowsBody::ColumnFilter::NumericColumnFilter::Operator + ) + end + OrSymbol = T.type_alias { T.any(Symbol, String) } + + GREATER = + T.let( + :">", + Openlayer::Models::TestListResultsResponse::Item::RowsBody::ColumnFilter::NumericColumnFilter::Operator::TaggedSymbol + ) + GREATER_OR_EQUALS = + T.let( + :">=", + Openlayer::Models::TestListResultsResponse::Item::RowsBody::ColumnFilter::NumericColumnFilter::Operator::TaggedSymbol + ) + IS = + T.let( + :is, + Openlayer::Models::TestListResultsResponse::Item::RowsBody::ColumnFilter::NumericColumnFilter::Operator::TaggedSymbol + ) + LESS = + T.let( + :"<", + Openlayer::Models::TestListResultsResponse::Item::RowsBody::ColumnFilter::NumericColumnFilter::Operator::TaggedSymbol + ) + LESS_OR_EQUALS = + T.let( + :"<=", + Openlayer::Models::TestListResultsResponse::Item::RowsBody::ColumnFilter::NumericColumnFilter::Operator::TaggedSymbol + ) + NOT_EQUALS = + T.let( + :"!=", + Openlayer::Models::TestListResultsResponse::Item::RowsBody::ColumnFilter::NumericColumnFilter::Operator::TaggedSymbol + ) + + sig do + override.returns( + T::Array[ + Openlayer::Models::TestListResultsResponse::Item::RowsBody::ColumnFilter::NumericColumnFilter::Operator::TaggedSymbol + ] + ) + end + def self.values + end + end + end + + class StringColumnFilter < Openlayer::Internal::Type::BaseModel + OrHash = + T.type_alias do + T.any( + Openlayer::Models::TestListResultsResponse::Item::RowsBody::ColumnFilter::StringColumnFilter, + Openlayer::Internal::AnyHash + ) + end + + # The name of the column. + sig { returns(String) } + attr_accessor :measurement + + sig do + returns( + Openlayer::Models::TestListResultsResponse::Item::RowsBody::ColumnFilter::StringColumnFilter::Operator::TaggedSymbol + ) + end + attr_accessor :operator + + sig do + returns( + Openlayer::Models::TestListResultsResponse::Item::RowsBody::ColumnFilter::StringColumnFilter::Value::Variants + ) + end + attr_accessor :value + + sig do + params( + measurement: String, + operator: + Openlayer::Models::TestListResultsResponse::Item::RowsBody::ColumnFilter::StringColumnFilter::Operator::OrSymbol, + value: + Openlayer::Models::TestListResultsResponse::Item::RowsBody::ColumnFilter::StringColumnFilter::Value::Variants + ).returns(T.attached_class) + end + def self.new( + # The name of the column. + measurement:, + operator:, + value: + ) + end + + sig do + override.returns( + { + measurement: String, + operator: + Openlayer::Models::TestListResultsResponse::Item::RowsBody::ColumnFilter::StringColumnFilter::Operator::TaggedSymbol, + value: + Openlayer::Models::TestListResultsResponse::Item::RowsBody::ColumnFilter::StringColumnFilter::Value::Variants + } + ) + end + def to_hash + end + + module Operator + extend Openlayer::Internal::Type::Enum + + TaggedSymbol = + T.type_alias do + T.all( + Symbol, + Openlayer::Models::TestListResultsResponse::Item::RowsBody::ColumnFilter::StringColumnFilter::Operator + ) + end + OrSymbol = T.type_alias { T.any(Symbol, String) } + + IS = + T.let( + :is, + Openlayer::Models::TestListResultsResponse::Item::RowsBody::ColumnFilter::StringColumnFilter::Operator::TaggedSymbol + ) + NOT_EQUALS = + T.let( + :"!=", + Openlayer::Models::TestListResultsResponse::Item::RowsBody::ColumnFilter::StringColumnFilter::Operator::TaggedSymbol + ) + + sig do + override.returns( + T::Array[ + Openlayer::Models::TestListResultsResponse::Item::RowsBody::ColumnFilter::StringColumnFilter::Operator::TaggedSymbol + ] + ) + end + def self.values + end + end + + module Value + extend Openlayer::Internal::Type::Union + + Variants = T.type_alias { T.any(String, T::Boolean) } + + sig do + override.returns( + T::Array[ + Openlayer::Models::TestListResultsResponse::Item::RowsBody::ColumnFilter::StringColumnFilter::Value::Variants + ] + ) + end + def self.variants + end + end + end + + sig do + override.returns( + T::Array[ + Openlayer::Models::TestListResultsResponse::Item::RowsBody::ColumnFilter::Variants + ] + ) + end + def self.variants + end + end + end + end + + class LastUnskippedResult < Openlayer::Internal::Type::BaseModel + OrHash = + T.type_alias do + T.any( + Openlayer::Models::TestListResultsResponse::LastUnskippedResult, + Openlayer::Internal::AnyHash + ) + end + + # The status of the test. + sig do + returns( + Openlayer::Models::TestListResultsResponse::LastUnskippedResult::Status::TaggedSymbol + ) + end + attr_accessor :status + + # The status message. + sig { returns(T.nilable(String)) } + attr_accessor :status_message + + sig do + returns( + T.nilable( + T::Array[ + Openlayer::Models::TestListResultsResponse::LastUnskippedResult::ExpectedValue + ] + ) + ) + end + attr_reader :expected_values + + sig do + params( + expected_values: + T::Array[ + Openlayer::Models::TestListResultsResponse::LastUnskippedResult::ExpectedValue::OrHash + ] + ).void + end + attr_writer :expected_values + + sig do + returns( + T.nilable( + Openlayer::Models::TestListResultsResponse::LastUnskippedResult::Goal + ) + ) + end + attr_reader :goal + + sig do + params( + goal: + Openlayer::Models::TestListResultsResponse::LastUnskippedResult::Goal::OrHash + ).void + end + attr_writer :goal + + # The URL to the rows of the test result. + sig { returns(T.nilable(String)) } + attr_reader :rows + + sig { params(rows: String).void } + attr_writer :rows + + # The body of the rows request. + sig do + returns( + T.nilable( + Openlayer::Models::TestListResultsResponse::LastUnskippedResult::RowsBody + ) + ) + end + attr_reader :rows_body + + sig do + params( + rows_body: + T.nilable( + Openlayer::Models::TestListResultsResponse::LastUnskippedResult::RowsBody::OrHash + ) + ).void + end + attr_writer :rows_body + + # Project version (commit) id. + sig { returns(String) } + attr_accessor :id + + # The creation date. + sig { returns(Time) } + attr_accessor :date_created + + # The data end date. + sig { returns(T.nilable(Time)) } + attr_accessor :date_data_ends + + # The data start date. + sig { returns(T.nilable(Time)) } + attr_accessor :date_data_starts + + # The last updated date. + sig { returns(Time) } + attr_accessor :date_updated + + # The inference pipeline id. + sig { returns(T.nilable(String)) } + attr_accessor :inference_pipeline_id + + # The project version (commit) id. + sig { returns(T.nilable(String)) } + attr_accessor :project_version_id + + # The test id. + sig { returns(T.nilable(String)) } + attr_accessor :goal_id + + sig do + params( + id: String, + date_created: Time, + date_data_ends: T.nilable(Time), + date_data_starts: T.nilable(Time), + date_updated: Time, + inference_pipeline_id: T.nilable(String), + project_version_id: T.nilable(String), + status: + Openlayer::Models::TestListResultsResponse::LastUnskippedResult::Status::OrSymbol, + status_message: T.nilable(String), + expected_values: + T::Array[ + Openlayer::Models::TestListResultsResponse::LastUnskippedResult::ExpectedValue::OrHash + ], + goal: + Openlayer::Models::TestListResultsResponse::LastUnskippedResult::Goal::OrHash, + goal_id: T.nilable(String), + rows: String, + rows_body: + T.nilable( + Openlayer::Models::TestListResultsResponse::LastUnskippedResult::RowsBody::OrHash + ) + ).returns(T.attached_class) + end + def self.new( + # Project version (commit) id. + id:, + # The creation date. + date_created:, + # The data end date. + date_data_ends:, + # The data start date. + date_data_starts:, + # The last updated date. + date_updated:, + # The inference pipeline id. + inference_pipeline_id:, + # The project version (commit) id. + project_version_id:, + # The status of the test. + status:, + # The status message. + status_message:, + expected_values: nil, + goal: nil, + # The test id. + goal_id: nil, + # The URL to the rows of the test result. + rows: nil, + # The body of the rows request. + rows_body: nil + ) + end + + sig do + override.returns( + { + id: String, + date_created: Time, + date_data_ends: T.nilable(Time), + date_data_starts: T.nilable(Time), + date_updated: Time, + inference_pipeline_id: T.nilable(String), + project_version_id: T.nilable(String), + status: + Openlayer::Models::TestListResultsResponse::LastUnskippedResult::Status::TaggedSymbol, + status_message: T.nilable(String), + expected_values: + T::Array[ + Openlayer::Models::TestListResultsResponse::LastUnskippedResult::ExpectedValue + ], + goal: + Openlayer::Models::TestListResultsResponse::LastUnskippedResult::Goal, + goal_id: T.nilable(String), + rows: String, + rows_body: + T.nilable( + Openlayer::Models::TestListResultsResponse::LastUnskippedResult::RowsBody + ) + } + ) + end + def to_hash + end + + # The status of the test. + module Status + extend Openlayer::Internal::Type::Enum + + TaggedSymbol = + T.type_alias do + T.all( + Symbol, + Openlayer::Models::TestListResultsResponse::LastUnskippedResult::Status + ) + end + OrSymbol = T.type_alias { T.any(Symbol, String) } + + RUNNING = + T.let( + :running, + Openlayer::Models::TestListResultsResponse::LastUnskippedResult::Status::TaggedSymbol + ) + PASSING = + T.let( + :passing, + Openlayer::Models::TestListResultsResponse::LastUnskippedResult::Status::TaggedSymbol + ) + FAILING = + T.let( + :failing, + Openlayer::Models::TestListResultsResponse::LastUnskippedResult::Status::TaggedSymbol + ) + SKIPPED = + T.let( + :skipped, + Openlayer::Models::TestListResultsResponse::LastUnskippedResult::Status::TaggedSymbol + ) + ERROR = + T.let( + :error, + Openlayer::Models::TestListResultsResponse::LastUnskippedResult::Status::TaggedSymbol + ) + + sig do + override.returns( + T::Array[ + Openlayer::Models::TestListResultsResponse::LastUnskippedResult::Status::TaggedSymbol + ] + ) + end + def self.values + end + end + + class ExpectedValue < Openlayer::Internal::Type::BaseModel + OrHash = + T.type_alias do + T.any( + Openlayer::Models::TestListResultsResponse::LastUnskippedResult::ExpectedValue, + Openlayer::Internal::AnyHash + ) + end + + # the lower threshold for the expected value + sig { returns(T.nilable(Float)) } + attr_accessor :lower_threshold + + # One of the `measurement` values in the test's thresholds + sig { returns(T.nilable(String)) } + attr_reader :measurement + + sig { params(measurement: String).void } + attr_writer :measurement + + # The upper threshold for the expected value + sig { returns(T.nilable(Float)) } + attr_accessor :upper_threshold + + sig do + params( + lower_threshold: T.nilable(Float), + measurement: String, + upper_threshold: T.nilable(Float) + ).returns(T.attached_class) + end + def self.new( + # the lower threshold for the expected value + lower_threshold: nil, + # One of the `measurement` values in the test's thresholds + measurement: nil, + # The upper threshold for the expected value + upper_threshold: nil + ) + end + + sig do + override.returns( + { + lower_threshold: T.nilable(Float), + measurement: String, + upper_threshold: T.nilable(Float) + } + ) + end + def to_hash + end + end + + class Goal < Openlayer::Internal::Type::BaseModel + OrHash = + T.type_alias do + T.any( + Openlayer::Models::TestListResultsResponse::LastUnskippedResult::Goal, + Openlayer::Internal::AnyHash + ) + end + + # The test description. + sig { returns(T.nilable(T.anything)) } + attr_accessor :description + + # The test name. + sig { returns(String) } + attr_accessor :name + + # The test subtype. + sig do + returns( + Openlayer::Models::TestListResultsResponse::LastUnskippedResult::Goal::Subtype::TaggedSymbol + ) + end + attr_accessor :subtype + + sig do + returns( + T::Array[ + Openlayer::Models::TestListResultsResponse::LastUnskippedResult::Goal::Threshold + ] + ) + end + attr_accessor :thresholds + + # The test type. + sig do + returns( + Openlayer::Models::TestListResultsResponse::LastUnskippedResult::Goal::Type::TaggedSymbol + ) + end + attr_accessor :type + + # Whether the test is archived. + sig { returns(T.nilable(T::Boolean)) } + attr_reader :archived + + sig { params(archived: T::Boolean).void } + attr_writer :archived + + # The delay window in seconds. Only applies to tests that use production data. + sig { returns(T.nilable(Float)) } + attr_accessor :delay_window + + # The evaluation window in seconds. Only applies to tests that use production + # data. + sig { returns(T.nilable(Float)) } + attr_accessor :evaluation_window + + # Whether the test uses an ML model. + sig { returns(T.nilable(T::Boolean)) } + attr_reader :uses_ml_model + + sig { params(uses_ml_model: T::Boolean).void } + attr_writer :uses_ml_model + + # Whether the test uses production data (monitoring mode only). + sig { returns(T.nilable(T::Boolean)) } + attr_reader :uses_production_data + + sig { params(uses_production_data: T::Boolean).void } + attr_writer :uses_production_data + + # Whether the test uses a reference dataset (monitoring mode only). + sig { returns(T.nilable(T::Boolean)) } + attr_reader :uses_reference_dataset + + sig { params(uses_reference_dataset: T::Boolean).void } + attr_writer :uses_reference_dataset + + # Whether the test uses a training dataset. + sig { returns(T.nilable(T::Boolean)) } + attr_reader :uses_training_dataset + + sig { params(uses_training_dataset: T::Boolean).void } + attr_writer :uses_training_dataset + + # Whether the test uses a validation dataset. + sig { returns(T.nilable(T::Boolean)) } + attr_reader :uses_validation_dataset + + sig { params(uses_validation_dataset: T::Boolean).void } + attr_writer :uses_validation_dataset + + # The test id. + sig { returns(String) } + attr_accessor :id + + # The number of comments on the test. + sig { returns(Integer) } + attr_accessor :comment_count + + # The test creator id. + sig { returns(T.nilable(String)) } + attr_accessor :creator_id + + # The date the test was archived. + sig { returns(T.nilable(Time)) } + attr_accessor :date_archived + + # The creation date. + sig { returns(Time) } + attr_accessor :date_created + + # The last updated date. + sig { returns(Time) } + attr_accessor :date_updated + + # The test number. + sig { returns(Integer) } + attr_accessor :number + + # The project version (commit) id where the test was created. + sig { returns(T.nilable(String)) } + attr_accessor :origin_project_version_id + + # Whether the test is suggested or user-created. + sig { returns(T::Boolean) } + attr_accessor :suggested + + sig do + params( + id: String, + comment_count: Integer, + creator_id: T.nilable(String), + date_archived: T.nilable(Time), + date_created: Time, + date_updated: Time, + description: T.nilable(T.anything), + name: String, + number: Integer, + origin_project_version_id: T.nilable(String), + subtype: + Openlayer::Models::TestListResultsResponse::LastUnskippedResult::Goal::Subtype::OrSymbol, + suggested: T::Boolean, + thresholds: + T::Array[ + Openlayer::Models::TestListResultsResponse::LastUnskippedResult::Goal::Threshold::OrHash + ], + type: + Openlayer::Models::TestListResultsResponse::LastUnskippedResult::Goal::Type::OrSymbol, + archived: T::Boolean, + delay_window: T.nilable(Float), + evaluation_window: T.nilable(Float), + uses_ml_model: T::Boolean, + uses_production_data: T::Boolean, + uses_reference_dataset: T::Boolean, + uses_training_dataset: T::Boolean, + uses_validation_dataset: T::Boolean + ).returns(T.attached_class) + end + def self.new( + # The test id. + id:, + # The number of comments on the test. + comment_count:, + # The test creator id. + creator_id:, + # The date the test was archived. + date_archived:, + # The creation date. + date_created:, + # The last updated date. + date_updated:, + # The test description. + description:, + # The test name. + name:, + # The test number. + number:, + # The project version (commit) id where the test was created. + origin_project_version_id:, + # The test subtype. + subtype:, + # Whether the test is suggested or user-created. + suggested:, + thresholds:, + # The test type. + type:, + # Whether the test is archived. + archived: nil, + # The delay window in seconds. Only applies to tests that use production data. + delay_window: nil, + # The evaluation window in seconds. Only applies to tests that use production + # data. + evaluation_window: nil, + # Whether the test uses an ML model. + uses_ml_model: nil, + # Whether the test uses production data (monitoring mode only). + uses_production_data: nil, + # Whether the test uses a reference dataset (monitoring mode only). + uses_reference_dataset: nil, + # Whether the test uses a training dataset. + uses_training_dataset: nil, + # Whether the test uses a validation dataset. + uses_validation_dataset: nil + ) + end + + sig do + override.returns( + { + id: String, + comment_count: Integer, + creator_id: T.nilable(String), + date_archived: T.nilable(Time), + date_created: Time, + date_updated: Time, + description: T.nilable(T.anything), + name: String, + number: Integer, + origin_project_version_id: T.nilable(String), + subtype: + Openlayer::Models::TestListResultsResponse::LastUnskippedResult::Goal::Subtype::TaggedSymbol, + suggested: T::Boolean, + thresholds: + T::Array[ + Openlayer::Models::TestListResultsResponse::LastUnskippedResult::Goal::Threshold + ], + type: + Openlayer::Models::TestListResultsResponse::LastUnskippedResult::Goal::Type::TaggedSymbol, + archived: T::Boolean, + delay_window: T.nilable(Float), + evaluation_window: T.nilable(Float), + uses_ml_model: T::Boolean, + uses_production_data: T::Boolean, + uses_reference_dataset: T::Boolean, + uses_training_dataset: T::Boolean, + uses_validation_dataset: T::Boolean + } + ) + end + def to_hash + end + + # The test subtype. + module Subtype + extend Openlayer::Internal::Type::Enum + + TaggedSymbol = + T.type_alias do + T.all( + Symbol, + Openlayer::Models::TestListResultsResponse::LastUnskippedResult::Goal::Subtype + ) + end + OrSymbol = T.type_alias { T.any(Symbol, String) } + + ANOMALOUS_COLUMN_COUNT = + T.let( + :anomalousColumnCount, + Openlayer::Models::TestListResultsResponse::LastUnskippedResult::Goal::Subtype::TaggedSymbol + ) + CHARACTER_LENGTH = + T.let( + :characterLength, + Openlayer::Models::TestListResultsResponse::LastUnskippedResult::Goal::Subtype::TaggedSymbol + ) + CLASS_IMBALANCE_RATIO = + T.let( + :classImbalanceRatio, + Openlayer::Models::TestListResultsResponse::LastUnskippedResult::Goal::Subtype::TaggedSymbol + ) + EXPECT_COLUMN_A_TO_BE_IN_COLUMN_B = + T.let( + :expectColumnAToBeInColumnB, + Openlayer::Models::TestListResultsResponse::LastUnskippedResult::Goal::Subtype::TaggedSymbol + ) + COLUMN_AVERAGE = + T.let( + :columnAverage, + Openlayer::Models::TestListResultsResponse::LastUnskippedResult::Goal::Subtype::TaggedSymbol + ) + COLUMN_DRIFT = + T.let( + :columnDrift, + Openlayer::Models::TestListResultsResponse::LastUnskippedResult::Goal::Subtype::TaggedSymbol + ) + COLUMN_STATISTIC = + T.let( + :columnStatistic, + Openlayer::Models::TestListResultsResponse::LastUnskippedResult::Goal::Subtype::TaggedSymbol + ) + COLUMN_VALUES_MATCH = + T.let( + :columnValuesMatch, + Openlayer::Models::TestListResultsResponse::LastUnskippedResult::Goal::Subtype::TaggedSymbol + ) + CONFLICTING_LABEL_ROW_COUNT = + T.let( + :conflictingLabelRowCount, + Openlayer::Models::TestListResultsResponse::LastUnskippedResult::Goal::Subtype::TaggedSymbol + ) + CONTAINS_PII = + T.let( + :containsPii, + Openlayer::Models::TestListResultsResponse::LastUnskippedResult::Goal::Subtype::TaggedSymbol + ) + CONTAINS_VALID_URL = + T.let( + :containsValidUrl, + Openlayer::Models::TestListResultsResponse::LastUnskippedResult::Goal::Subtype::TaggedSymbol + ) + CORRELATED_FEATURE_COUNT = + T.let( + :correlatedFeatureCount, + Openlayer::Models::TestListResultsResponse::LastUnskippedResult::Goal::Subtype::TaggedSymbol + ) + CUSTOM_METRIC_THRESHOLD = + T.let( + :customMetricThreshold, + Openlayer::Models::TestListResultsResponse::LastUnskippedResult::Goal::Subtype::TaggedSymbol + ) + DUPLICATE_ROW_COUNT = + T.let( + :duplicateRowCount, + Openlayer::Models::TestListResultsResponse::LastUnskippedResult::Goal::Subtype::TaggedSymbol + ) + EMPTY_FEATURE = + T.let( + :emptyFeature, + Openlayer::Models::TestListResultsResponse::LastUnskippedResult::Goal::Subtype::TaggedSymbol + ) + EMPTY_FEATURE_COUNT = + T.let( + :emptyFeatureCount, + Openlayer::Models::TestListResultsResponse::LastUnskippedResult::Goal::Subtype::TaggedSymbol + ) + DRIFTED_FEATURE_COUNT = + T.let( + :driftedFeatureCount, + Openlayer::Models::TestListResultsResponse::LastUnskippedResult::Goal::Subtype::TaggedSymbol + ) + FEATURE_MISSING_VALUES = + T.let( + :featureMissingValues, + Openlayer::Models::TestListResultsResponse::LastUnskippedResult::Goal::Subtype::TaggedSymbol + ) + FEATURE_VALUE_VALIDATION = + T.let( + :featureValueValidation, + Openlayer::Models::TestListResultsResponse::LastUnskippedResult::Goal::Subtype::TaggedSymbol + ) + GREAT_EXPECTATIONS = + T.let( + :greatExpectations, + Openlayer::Models::TestListResultsResponse::LastUnskippedResult::Goal::Subtype::TaggedSymbol + ) + GROUP_BY_COLUMN_STATS_CHECK = + T.let( + :groupByColumnStatsCheck, + Openlayer::Models::TestListResultsResponse::LastUnskippedResult::Goal::Subtype::TaggedSymbol + ) + ILL_FORMED_ROW_COUNT = + T.let( + :illFormedRowCount, + Openlayer::Models::TestListResultsResponse::LastUnskippedResult::Goal::Subtype::TaggedSymbol + ) + IS_CODE = + T.let( + :isCode, + Openlayer::Models::TestListResultsResponse::LastUnskippedResult::Goal::Subtype::TaggedSymbol + ) + IS_JSON = + T.let( + :isJson, + Openlayer::Models::TestListResultsResponse::LastUnskippedResult::Goal::Subtype::TaggedSymbol + ) + LLM_RUBRIC_THRESHOLD_V2 = + T.let( + :llmRubricThresholdV2, + Openlayer::Models::TestListResultsResponse::LastUnskippedResult::Goal::Subtype::TaggedSymbol + ) + LABEL_DRIFT = + T.let( + :labelDrift, + Openlayer::Models::TestListResultsResponse::LastUnskippedResult::Goal::Subtype::TaggedSymbol + ) + METRIC_THRESHOLD = + T.let( + :metricThreshold, + Openlayer::Models::TestListResultsResponse::LastUnskippedResult::Goal::Subtype::TaggedSymbol + ) + NEW_CATEGORY_COUNT = + T.let( + :newCategoryCount, + Openlayer::Models::TestListResultsResponse::LastUnskippedResult::Goal::Subtype::TaggedSymbol + ) + NEW_LABEL_COUNT = + T.let( + :newLabelCount, + Openlayer::Models::TestListResultsResponse::LastUnskippedResult::Goal::Subtype::TaggedSymbol + ) + NULL_ROW_COUNT = + T.let( + :nullRowCount, + Openlayer::Models::TestListResultsResponse::LastUnskippedResult::Goal::Subtype::TaggedSymbol + ) + ROW_COUNT = + T.let( + :rowCount, + Openlayer::Models::TestListResultsResponse::LastUnskippedResult::Goal::Subtype::TaggedSymbol + ) + PP_SCORE_VALUE_VALIDATION = + T.let( + :ppScoreValueValidation, + Openlayer::Models::TestListResultsResponse::LastUnskippedResult::Goal::Subtype::TaggedSymbol + ) + QUASI_CONSTANT_FEATURE = + T.let( + :quasiConstantFeature, + Openlayer::Models::TestListResultsResponse::LastUnskippedResult::Goal::Subtype::TaggedSymbol + ) + QUASI_CONSTANT_FEATURE_COUNT = + T.let( + :quasiConstantFeatureCount, + Openlayer::Models::TestListResultsResponse::LastUnskippedResult::Goal::Subtype::TaggedSymbol + ) + SQL_QUERY = + T.let( + :sqlQuery, + Openlayer::Models::TestListResultsResponse::LastUnskippedResult::Goal::Subtype::TaggedSymbol + ) + DTYPE_VALIDATION = + T.let( + :dtypeValidation, + Openlayer::Models::TestListResultsResponse::LastUnskippedResult::Goal::Subtype::TaggedSymbol + ) + SENTENCE_LENGTH = + T.let( + :sentenceLength, + Openlayer::Models::TestListResultsResponse::LastUnskippedResult::Goal::Subtype::TaggedSymbol + ) + SIZE_RATIO = + T.let( + :sizeRatio, + Openlayer::Models::TestListResultsResponse::LastUnskippedResult::Goal::Subtype::TaggedSymbol + ) + SPECIAL_CHARACTERS_RATIO = + T.let( + :specialCharactersRatio, + Openlayer::Models::TestListResultsResponse::LastUnskippedResult::Goal::Subtype::TaggedSymbol + ) + STRING_VALIDATION = + T.let( + :stringValidation, + Openlayer::Models::TestListResultsResponse::LastUnskippedResult::Goal::Subtype::TaggedSymbol + ) + TRAIN_VAL_LEAKAGE_ROW_COUNT = + T.let( + :trainValLeakageRowCount, + Openlayer::Models::TestListResultsResponse::LastUnskippedResult::Goal::Subtype::TaggedSymbol + ) + + sig do + override.returns( + T::Array[ + Openlayer::Models::TestListResultsResponse::LastUnskippedResult::Goal::Subtype::TaggedSymbol + ] + ) + end + def self.values + end + end + + class Threshold < Openlayer::Internal::Type::BaseModel + OrHash = + T.type_alias do + T.any( + Openlayer::Models::TestListResultsResponse::LastUnskippedResult::Goal::Threshold, + Openlayer::Internal::AnyHash + ) + end + + # The insight name to be evaluated. + sig do + returns( + T.nilable( + Openlayer::Models::TestListResultsResponse::LastUnskippedResult::Goal::Threshold::InsightName::TaggedSymbol + ) + ) + end + attr_reader :insight_name + + sig do + params( + insight_name: + Openlayer::Models::TestListResultsResponse::LastUnskippedResult::Goal::Threshold::InsightName::OrSymbol + ).void + end + attr_writer :insight_name + + # The insight parameters. Required only for some test subtypes. For example, for + # tests that require a column name, the insight parameters will be [{'name': + # 'column_name', 'value': 'Age'}] + sig do + returns( + T.nilable( + T::Array[ + Openlayer::Models::TestListResultsResponse::LastUnskippedResult::Goal::Threshold::InsightParameter + ] + ) + ) + end + attr_accessor :insight_parameters + + # The measurement to be evaluated. + sig { returns(T.nilable(String)) } + attr_reader :measurement + + sig { params(measurement: String).void } + attr_writer :measurement + + # The operator to be used for the evaluation. + sig do + returns( + T.nilable( + Openlayer::Models::TestListResultsResponse::LastUnskippedResult::Goal::Threshold::Operator::TaggedSymbol + ) + ) + end + attr_reader :operator + + sig do + params( + operator: + Openlayer::Models::TestListResultsResponse::LastUnskippedResult::Goal::Threshold::Operator::OrSymbol + ).void + end + attr_writer :operator + + # Whether to use automatic anomaly detection or manual thresholds + sig do + returns( + T.nilable( + Openlayer::Models::TestListResultsResponse::LastUnskippedResult::Goal::Threshold::ThresholdMode::TaggedSymbol + ) + ) + end + attr_reader :threshold_mode + + sig do + params( + threshold_mode: + Openlayer::Models::TestListResultsResponse::LastUnskippedResult::Goal::Threshold::ThresholdMode::OrSymbol + ).void + end + attr_writer :threshold_mode + + # The value to be compared. + sig do + returns( + T.nilable( + Openlayer::Models::TestListResultsResponse::LastUnskippedResult::Goal::Threshold::Value::Variants + ) + ) + end + attr_reader :value + + sig do + params( + value: + Openlayer::Models::TestListResultsResponse::LastUnskippedResult::Goal::Threshold::Value::Variants + ).void + end + attr_writer :value + + sig do + params( + insight_name: + Openlayer::Models::TestListResultsResponse::LastUnskippedResult::Goal::Threshold::InsightName::OrSymbol, + insight_parameters: + T.nilable( + T::Array[ + Openlayer::Models::TestListResultsResponse::LastUnskippedResult::Goal::Threshold::InsightParameter::OrHash + ] + ), + measurement: String, + operator: + Openlayer::Models::TestListResultsResponse::LastUnskippedResult::Goal::Threshold::Operator::OrSymbol, + threshold_mode: + Openlayer::Models::TestListResultsResponse::LastUnskippedResult::Goal::Threshold::ThresholdMode::OrSymbol, + value: + Openlayer::Models::TestListResultsResponse::LastUnskippedResult::Goal::Threshold::Value::Variants + ).returns(T.attached_class) + end + def self.new( + # The insight name to be evaluated. + insight_name: nil, + # The insight parameters. Required only for some test subtypes. For example, for + # tests that require a column name, the insight parameters will be [{'name': + # 'column_name', 'value': 'Age'}] + insight_parameters: nil, + # The measurement to be evaluated. + measurement: nil, + # The operator to be used for the evaluation. + operator: nil, + # Whether to use automatic anomaly detection or manual thresholds + threshold_mode: nil, + # The value to be compared. + value: nil + ) + end + + sig do + override.returns( + { + insight_name: + Openlayer::Models::TestListResultsResponse::LastUnskippedResult::Goal::Threshold::InsightName::TaggedSymbol, + insight_parameters: + T.nilable( + T::Array[ + Openlayer::Models::TestListResultsResponse::LastUnskippedResult::Goal::Threshold::InsightParameter + ] + ), + measurement: String, + operator: + Openlayer::Models::TestListResultsResponse::LastUnskippedResult::Goal::Threshold::Operator::TaggedSymbol, + threshold_mode: + Openlayer::Models::TestListResultsResponse::LastUnskippedResult::Goal::Threshold::ThresholdMode::TaggedSymbol, + value: + Openlayer::Models::TestListResultsResponse::LastUnskippedResult::Goal::Threshold::Value::Variants + } + ) + end + def to_hash + end + + # The insight name to be evaluated. + module InsightName + extend Openlayer::Internal::Type::Enum + + TaggedSymbol = + T.type_alias do + T.all( + Symbol, + Openlayer::Models::TestListResultsResponse::LastUnskippedResult::Goal::Threshold::InsightName + ) + end + OrSymbol = T.type_alias { T.any(Symbol, String) } + + CHARACTER_LENGTH = + T.let( + :characterLength, + Openlayer::Models::TestListResultsResponse::LastUnskippedResult::Goal::Threshold::InsightName::TaggedSymbol + ) + CLASS_IMBALANCE = + T.let( + :classImbalance, + Openlayer::Models::TestListResultsResponse::LastUnskippedResult::Goal::Threshold::InsightName::TaggedSymbol + ) + EXPECT_COLUMN_A_TO_BE_IN_COLUMN_B = + T.let( + :expectColumnAToBeInColumnB, + Openlayer::Models::TestListResultsResponse::LastUnskippedResult::Goal::Threshold::InsightName::TaggedSymbol + ) + COLUMN_AVERAGE = + T.let( + :columnAverage, + Openlayer::Models::TestListResultsResponse::LastUnskippedResult::Goal::Threshold::InsightName::TaggedSymbol + ) + COLUMN_DRIFT = + T.let( + :columnDrift, + Openlayer::Models::TestListResultsResponse::LastUnskippedResult::Goal::Threshold::InsightName::TaggedSymbol + ) + COLUMN_VALUES_MATCH = + T.let( + :columnValuesMatch, + Openlayer::Models::TestListResultsResponse::LastUnskippedResult::Goal::Threshold::InsightName::TaggedSymbol + ) + CONFIDENCE_DISTRIBUTION = + T.let( + :confidenceDistribution, + Openlayer::Models::TestListResultsResponse::LastUnskippedResult::Goal::Threshold::InsightName::TaggedSymbol + ) + CONFLICTING_LABEL_ROW_COUNT = + T.let( + :conflictingLabelRowCount, + Openlayer::Models::TestListResultsResponse::LastUnskippedResult::Goal::Threshold::InsightName::TaggedSymbol + ) + CONTAINS_PII = + T.let( + :containsPii, + Openlayer::Models::TestListResultsResponse::LastUnskippedResult::Goal::Threshold::InsightName::TaggedSymbol + ) + CONTAINS_VALID_URL = + T.let( + :containsValidUrl, + Openlayer::Models::TestListResultsResponse::LastUnskippedResult::Goal::Threshold::InsightName::TaggedSymbol + ) + CORRELATED_FEATURES = + T.let( + :correlatedFeatures, + Openlayer::Models::TestListResultsResponse::LastUnskippedResult::Goal::Threshold::InsightName::TaggedSymbol + ) + CUSTOM_METRIC = + T.let( + :customMetric, + Openlayer::Models::TestListResultsResponse::LastUnskippedResult::Goal::Threshold::InsightName::TaggedSymbol + ) + DUPLICATE_ROW_COUNT = + T.let( + :duplicateRowCount, + Openlayer::Models::TestListResultsResponse::LastUnskippedResult::Goal::Threshold::InsightName::TaggedSymbol + ) + EMPTY_FEATURES = + T.let( + :emptyFeatures, + Openlayer::Models::TestListResultsResponse::LastUnskippedResult::Goal::Threshold::InsightName::TaggedSymbol + ) + FEATURE_DRIFT = + T.let( + :featureDrift, + Openlayer::Models::TestListResultsResponse::LastUnskippedResult::Goal::Threshold::InsightName::TaggedSymbol + ) + FEATURE_PROFILE = + T.let( + :featureProfile, + Openlayer::Models::TestListResultsResponse::LastUnskippedResult::Goal::Threshold::InsightName::TaggedSymbol + ) + GREAT_EXPECTATIONS = + T.let( + :greatExpectations, + Openlayer::Models::TestListResultsResponse::LastUnskippedResult::Goal::Threshold::InsightName::TaggedSymbol + ) + GROUP_BY_COLUMN_STATS_CHECK = + T.let( + :groupByColumnStatsCheck, + Openlayer::Models::TestListResultsResponse::LastUnskippedResult::Goal::Threshold::InsightName::TaggedSymbol + ) + ILL_FORMED_ROW_COUNT = + T.let( + :illFormedRowCount, + Openlayer::Models::TestListResultsResponse::LastUnskippedResult::Goal::Threshold::InsightName::TaggedSymbol + ) + IS_CODE = + T.let( + :isCode, + Openlayer::Models::TestListResultsResponse::LastUnskippedResult::Goal::Threshold::InsightName::TaggedSymbol + ) + IS_JSON = + T.let( + :isJson, + Openlayer::Models::TestListResultsResponse::LastUnskippedResult::Goal::Threshold::InsightName::TaggedSymbol + ) + LLM_RUBRIC_V2 = + T.let( + :llmRubricV2, + Openlayer::Models::TestListResultsResponse::LastUnskippedResult::Goal::Threshold::InsightName::TaggedSymbol + ) + LABEL_DRIFT = + T.let( + :labelDrift, + Openlayer::Models::TestListResultsResponse::LastUnskippedResult::Goal::Threshold::InsightName::TaggedSymbol + ) + METRICS = + T.let( + :metrics, + Openlayer::Models::TestListResultsResponse::LastUnskippedResult::Goal::Threshold::InsightName::TaggedSymbol + ) + NEW_CATEGORIES = + T.let( + :newCategories, + Openlayer::Models::TestListResultsResponse::LastUnskippedResult::Goal::Threshold::InsightName::TaggedSymbol + ) + NEW_LABELS = + T.let( + :newLabels, + Openlayer::Models::TestListResultsResponse::LastUnskippedResult::Goal::Threshold::InsightName::TaggedSymbol + ) + NULL_ROW_COUNT = + T.let( + :nullRowCount, + Openlayer::Models::TestListResultsResponse::LastUnskippedResult::Goal::Threshold::InsightName::TaggedSymbol + ) + PP_SCORE = + T.let( + :ppScore, + Openlayer::Models::TestListResultsResponse::LastUnskippedResult::Goal::Threshold::InsightName::TaggedSymbol + ) + QUASI_CONSTANT_FEATURES = + T.let( + :quasiConstantFeatures, + Openlayer::Models::TestListResultsResponse::LastUnskippedResult::Goal::Threshold::InsightName::TaggedSymbol + ) + SENTENCE_LENGTH = + T.let( + :sentenceLength, + Openlayer::Models::TestListResultsResponse::LastUnskippedResult::Goal::Threshold::InsightName::TaggedSymbol + ) + SIZE_RATIO = + T.let( + :sizeRatio, + Openlayer::Models::TestListResultsResponse::LastUnskippedResult::Goal::Threshold::InsightName::TaggedSymbol + ) + SPECIAL_CHARACTERS = + T.let( + :specialCharacters, + Openlayer::Models::TestListResultsResponse::LastUnskippedResult::Goal::Threshold::InsightName::TaggedSymbol + ) + STRING_VALIDATION = + T.let( + :stringValidation, + Openlayer::Models::TestListResultsResponse::LastUnskippedResult::Goal::Threshold::InsightName::TaggedSymbol + ) + TRAIN_VAL_LEAKAGE_ROW_COUNT = + T.let( + :trainValLeakageRowCount, + Openlayer::Models::TestListResultsResponse::LastUnskippedResult::Goal::Threshold::InsightName::TaggedSymbol + ) + + sig do + override.returns( + T::Array[ + Openlayer::Models::TestListResultsResponse::LastUnskippedResult::Goal::Threshold::InsightName::TaggedSymbol + ] + ) + end + def self.values + end + end + + class InsightParameter < Openlayer::Internal::Type::BaseModel + OrHash = + T.type_alias do + T.any( + Openlayer::Models::TestListResultsResponse::LastUnskippedResult::Goal::Threshold::InsightParameter, + Openlayer::Internal::AnyHash + ) + end + + # The name of the insight filter. + sig { returns(String) } + attr_accessor :name + + sig { returns(T.anything) } + attr_accessor :value + + sig do + params(name: String, value: T.anything).returns( + T.attached_class + ) + end + def self.new( + # The name of the insight filter. + name:, + value: + ) + end + + sig { override.returns({ name: String, value: T.anything }) } + def to_hash + end + end + + # The operator to be used for the evaluation. + module Operator + extend Openlayer::Internal::Type::Enum + + TaggedSymbol = + T.type_alias do + T.all( + Symbol, + Openlayer::Models::TestListResultsResponse::LastUnskippedResult::Goal::Threshold::Operator + ) + end + OrSymbol = T.type_alias { T.any(Symbol, String) } + + IS = + T.let( + :is, + Openlayer::Models::TestListResultsResponse::LastUnskippedResult::Goal::Threshold::Operator::TaggedSymbol + ) + GREATER = + T.let( + :">", + Openlayer::Models::TestListResultsResponse::LastUnskippedResult::Goal::Threshold::Operator::TaggedSymbol + ) + GREATER_OR_EQUALS = + T.let( + :">=", + Openlayer::Models::TestListResultsResponse::LastUnskippedResult::Goal::Threshold::Operator::TaggedSymbol + ) + LESS = + T.let( + :"<", + Openlayer::Models::TestListResultsResponse::LastUnskippedResult::Goal::Threshold::Operator::TaggedSymbol + ) + LESS_OR_EQUALS = + T.let( + :"<=", + Openlayer::Models::TestListResultsResponse::LastUnskippedResult::Goal::Threshold::Operator::TaggedSymbol + ) + NOT_EQUALS = + T.let( + :"!=", + Openlayer::Models::TestListResultsResponse::LastUnskippedResult::Goal::Threshold::Operator::TaggedSymbol + ) + + sig do + override.returns( + T::Array[ + Openlayer::Models::TestListResultsResponse::LastUnskippedResult::Goal::Threshold::Operator::TaggedSymbol + ] + ) + end + def self.values + end + end + + # Whether to use automatic anomaly detection or manual thresholds + module ThresholdMode + extend Openlayer::Internal::Type::Enum + + TaggedSymbol = + T.type_alias do + T.all( + Symbol, + Openlayer::Models::TestListResultsResponse::LastUnskippedResult::Goal::Threshold::ThresholdMode + ) + end + OrSymbol = T.type_alias { T.any(Symbol, String) } + + AUTOMATIC = + T.let( + :automatic, + Openlayer::Models::TestListResultsResponse::LastUnskippedResult::Goal::Threshold::ThresholdMode::TaggedSymbol + ) + MANUAL = + T.let( + :manual, + Openlayer::Models::TestListResultsResponse::LastUnskippedResult::Goal::Threshold::ThresholdMode::TaggedSymbol + ) + + sig do + override.returns( + T::Array[ + Openlayer::Models::TestListResultsResponse::LastUnskippedResult::Goal::Threshold::ThresholdMode::TaggedSymbol + ] + ) + end + def self.values + end + end + + # The value to be compared. + module Value + extend Openlayer::Internal::Type::Union + + Variants = + T.type_alias do + T.any(Float, T::Boolean, String, T::Array[String]) + end + + sig do + override.returns( + T::Array[ + Openlayer::Models::TestListResultsResponse::LastUnskippedResult::Goal::Threshold::Value::Variants + ] + ) + end + def self.variants + end + + StringArray = + T.let( + Openlayer::Internal::Type::ArrayOf[String], + Openlayer::Internal::Type::Converter + ) + end + end + + # The test type. + module Type + extend Openlayer::Internal::Type::Enum + + TaggedSymbol = + T.type_alias do + T.all( + Symbol, + Openlayer::Models::TestListResultsResponse::LastUnskippedResult::Goal::Type + ) + end + OrSymbol = T.type_alias { T.any(Symbol, String) } + + INTEGRITY = + T.let( + :integrity, + Openlayer::Models::TestListResultsResponse::LastUnskippedResult::Goal::Type::TaggedSymbol + ) + CONSISTENCY = + T.let( + :consistency, + Openlayer::Models::TestListResultsResponse::LastUnskippedResult::Goal::Type::TaggedSymbol + ) + PERFORMANCE = + T.let( + :performance, + Openlayer::Models::TestListResultsResponse::LastUnskippedResult::Goal::Type::TaggedSymbol + ) + + sig do + override.returns( + T::Array[ + Openlayer::Models::TestListResultsResponse::LastUnskippedResult::Goal::Type::TaggedSymbol + ] + ) + end + def self.values + end + end + end + + class RowsBody < Openlayer::Internal::Type::BaseModel + OrHash = + T.type_alias do + T.any( + Openlayer::Models::TestListResultsResponse::LastUnskippedResult::RowsBody, + Openlayer::Internal::AnyHash + ) + end + + sig do + returns( + T.nilable( + T::Array[ + Openlayer::Models::TestListResultsResponse::LastUnskippedResult::RowsBody::ColumnFilter::Variants + ] + ) + ) + end + attr_accessor :column_filters + + sig { returns(T.nilable(T::Array[Integer])) } + attr_accessor :exclude_row_id_list + + sig { returns(T.nilable(T::Array[String])) } + attr_accessor :not_search_query_and + + sig { returns(T.nilable(T::Array[String])) } + attr_accessor :not_search_query_or + + sig { returns(T.nilable(T::Array[Integer])) } + attr_accessor :row_id_list + + sig { returns(T.nilable(T::Array[String])) } + attr_accessor :search_query_and + + sig { returns(T.nilable(T::Array[String])) } + attr_accessor :search_query_or + + # The body of the rows request. + sig do + params( + column_filters: + T.nilable( + T::Array[ + T.any( + Openlayer::Models::TestListResultsResponse::LastUnskippedResult::RowsBody::ColumnFilter::SetColumnFilter::OrHash, + Openlayer::Models::TestListResultsResponse::LastUnskippedResult::RowsBody::ColumnFilter::NumericColumnFilter::OrHash, + Openlayer::Models::TestListResultsResponse::LastUnskippedResult::RowsBody::ColumnFilter::StringColumnFilter::OrHash + ) + ] + ), + exclude_row_id_list: T.nilable(T::Array[Integer]), + not_search_query_and: T.nilable(T::Array[String]), + not_search_query_or: T.nilable(T::Array[String]), + row_id_list: T.nilable(T::Array[Integer]), + search_query_and: T.nilable(T::Array[String]), + search_query_or: T.nilable(T::Array[String]) + ).returns(T.attached_class) + end + def self.new( + column_filters: nil, + exclude_row_id_list: nil, + not_search_query_and: nil, + not_search_query_or: nil, + row_id_list: nil, + search_query_and: nil, + search_query_or: nil + ) + end + + sig do + override.returns( + { + column_filters: + T.nilable( + T::Array[ + Openlayer::Models::TestListResultsResponse::LastUnskippedResult::RowsBody::ColumnFilter::Variants + ] + ), + exclude_row_id_list: T.nilable(T::Array[Integer]), + not_search_query_and: T.nilable(T::Array[String]), + not_search_query_or: T.nilable(T::Array[String]), + row_id_list: T.nilable(T::Array[Integer]), + search_query_and: T.nilable(T::Array[String]), + search_query_or: T.nilable(T::Array[String]) + } + ) + end + def to_hash + end + + module ColumnFilter + extend Openlayer::Internal::Type::Union + + Variants = + T.type_alias do + T.any( + Openlayer::Models::TestListResultsResponse::LastUnskippedResult::RowsBody::ColumnFilter::SetColumnFilter, + Openlayer::Models::TestListResultsResponse::LastUnskippedResult::RowsBody::ColumnFilter::NumericColumnFilter, + Openlayer::Models::TestListResultsResponse::LastUnskippedResult::RowsBody::ColumnFilter::StringColumnFilter + ) + end + + class SetColumnFilter < Openlayer::Internal::Type::BaseModel + OrHash = + T.type_alias do + T.any( + Openlayer::Models::TestListResultsResponse::LastUnskippedResult::RowsBody::ColumnFilter::SetColumnFilter, + Openlayer::Internal::AnyHash + ) + end + + # The name of the column. + sig { returns(String) } + attr_accessor :measurement + + sig do + returns( + Openlayer::Models::TestListResultsResponse::LastUnskippedResult::RowsBody::ColumnFilter::SetColumnFilter::Operator::TaggedSymbol + ) + end + attr_accessor :operator + + sig do + returns( + T::Array[ + Openlayer::Models::TestListResultsResponse::LastUnskippedResult::RowsBody::ColumnFilter::SetColumnFilter::Value::Variants + ] + ) + end + attr_accessor :value + + sig do + params( + measurement: String, + operator: + Openlayer::Models::TestListResultsResponse::LastUnskippedResult::RowsBody::ColumnFilter::SetColumnFilter::Operator::OrSymbol, + value: + T::Array[ + Openlayer::Models::TestListResultsResponse::LastUnskippedResult::RowsBody::ColumnFilter::SetColumnFilter::Value::Variants + ] + ).returns(T.attached_class) + end + def self.new( + # The name of the column. + measurement:, + operator:, + value: + ) + end + + sig do + override.returns( + { + measurement: String, + operator: + Openlayer::Models::TestListResultsResponse::LastUnskippedResult::RowsBody::ColumnFilter::SetColumnFilter::Operator::TaggedSymbol, + value: + T::Array[ + Openlayer::Models::TestListResultsResponse::LastUnskippedResult::RowsBody::ColumnFilter::SetColumnFilter::Value::Variants + ] + } + ) + end + def to_hash + end + + module Operator + extend Openlayer::Internal::Type::Enum + + TaggedSymbol = + T.type_alias do + T.all( + Symbol, + Openlayer::Models::TestListResultsResponse::LastUnskippedResult::RowsBody::ColumnFilter::SetColumnFilter::Operator + ) + end + OrSymbol = T.type_alias { T.any(Symbol, String) } + + CONTAINS_NONE = + T.let( + :contains_none, + Openlayer::Models::TestListResultsResponse::LastUnskippedResult::RowsBody::ColumnFilter::SetColumnFilter::Operator::TaggedSymbol + ) + CONTAINS_ANY = + T.let( + :contains_any, + Openlayer::Models::TestListResultsResponse::LastUnskippedResult::RowsBody::ColumnFilter::SetColumnFilter::Operator::TaggedSymbol + ) + CONTAINS_ALL = + T.let( + :contains_all, + Openlayer::Models::TestListResultsResponse::LastUnskippedResult::RowsBody::ColumnFilter::SetColumnFilter::Operator::TaggedSymbol + ) + ONE_OF = + T.let( + :one_of, + Openlayer::Models::TestListResultsResponse::LastUnskippedResult::RowsBody::ColumnFilter::SetColumnFilter::Operator::TaggedSymbol + ) + NONE_OF = + T.let( + :none_of, + Openlayer::Models::TestListResultsResponse::LastUnskippedResult::RowsBody::ColumnFilter::SetColumnFilter::Operator::TaggedSymbol + ) + + sig do + override.returns( + T::Array[ + Openlayer::Models::TestListResultsResponse::LastUnskippedResult::RowsBody::ColumnFilter::SetColumnFilter::Operator::TaggedSymbol + ] + ) + end + def self.values + end + end + + module Value + extend Openlayer::Internal::Type::Union + + Variants = T.type_alias { T.any(String, Float) } + + sig do + override.returns( + T::Array[ + Openlayer::Models::TestListResultsResponse::LastUnskippedResult::RowsBody::ColumnFilter::SetColumnFilter::Value::Variants + ] + ) + end + def self.variants + end + end + end + + class NumericColumnFilter < Openlayer::Internal::Type::BaseModel + OrHash = + T.type_alias do + T.any( + Openlayer::Models::TestListResultsResponse::LastUnskippedResult::RowsBody::ColumnFilter::NumericColumnFilter, + Openlayer::Internal::AnyHash + ) + end + + # The name of the column. + sig { returns(String) } + attr_accessor :measurement + + sig do + returns( + Openlayer::Models::TestListResultsResponse::LastUnskippedResult::RowsBody::ColumnFilter::NumericColumnFilter::Operator::TaggedSymbol + ) + end + attr_accessor :operator + + sig { returns(T.nilable(Float)) } + attr_accessor :value + + sig do + params( + measurement: String, + operator: + Openlayer::Models::TestListResultsResponse::LastUnskippedResult::RowsBody::ColumnFilter::NumericColumnFilter::Operator::OrSymbol, + value: T.nilable(Float) + ).returns(T.attached_class) + end + def self.new( + # The name of the column. + measurement:, + operator:, + value: + ) + end + + sig do + override.returns( + { + measurement: String, + operator: + Openlayer::Models::TestListResultsResponse::LastUnskippedResult::RowsBody::ColumnFilter::NumericColumnFilter::Operator::TaggedSymbol, + value: T.nilable(Float) + } + ) + end + def to_hash + end + + module Operator + extend Openlayer::Internal::Type::Enum + + TaggedSymbol = + T.type_alias do + T.all( + Symbol, + Openlayer::Models::TestListResultsResponse::LastUnskippedResult::RowsBody::ColumnFilter::NumericColumnFilter::Operator + ) + end + OrSymbol = T.type_alias { T.any(Symbol, String) } + + GREATER = + T.let( + :">", + Openlayer::Models::TestListResultsResponse::LastUnskippedResult::RowsBody::ColumnFilter::NumericColumnFilter::Operator::TaggedSymbol + ) + GREATER_OR_EQUALS = + T.let( + :">=", + Openlayer::Models::TestListResultsResponse::LastUnskippedResult::RowsBody::ColumnFilter::NumericColumnFilter::Operator::TaggedSymbol + ) + IS = + T.let( + :is, + Openlayer::Models::TestListResultsResponse::LastUnskippedResult::RowsBody::ColumnFilter::NumericColumnFilter::Operator::TaggedSymbol + ) + LESS = + T.let( + :"<", + Openlayer::Models::TestListResultsResponse::LastUnskippedResult::RowsBody::ColumnFilter::NumericColumnFilter::Operator::TaggedSymbol + ) + LESS_OR_EQUALS = + T.let( + :"<=", + Openlayer::Models::TestListResultsResponse::LastUnskippedResult::RowsBody::ColumnFilter::NumericColumnFilter::Operator::TaggedSymbol + ) + NOT_EQUALS = + T.let( + :"!=", + Openlayer::Models::TestListResultsResponse::LastUnskippedResult::RowsBody::ColumnFilter::NumericColumnFilter::Operator::TaggedSymbol + ) + + sig do + override.returns( + T::Array[ + Openlayer::Models::TestListResultsResponse::LastUnskippedResult::RowsBody::ColumnFilter::NumericColumnFilter::Operator::TaggedSymbol + ] + ) + end + def self.values + end + end + end + + class StringColumnFilter < Openlayer::Internal::Type::BaseModel + OrHash = + T.type_alias do + T.any( + Openlayer::Models::TestListResultsResponse::LastUnskippedResult::RowsBody::ColumnFilter::StringColumnFilter, + Openlayer::Internal::AnyHash + ) + end + + # The name of the column. + sig { returns(String) } + attr_accessor :measurement + + sig do + returns( + Openlayer::Models::TestListResultsResponse::LastUnskippedResult::RowsBody::ColumnFilter::StringColumnFilter::Operator::TaggedSymbol + ) + end + attr_accessor :operator + + sig do + returns( + Openlayer::Models::TestListResultsResponse::LastUnskippedResult::RowsBody::ColumnFilter::StringColumnFilter::Value::Variants + ) + end + attr_accessor :value + + sig do + params( + measurement: String, + operator: + Openlayer::Models::TestListResultsResponse::LastUnskippedResult::RowsBody::ColumnFilter::StringColumnFilter::Operator::OrSymbol, + value: + Openlayer::Models::TestListResultsResponse::LastUnskippedResult::RowsBody::ColumnFilter::StringColumnFilter::Value::Variants + ).returns(T.attached_class) + end + def self.new( + # The name of the column. + measurement:, + operator:, + value: + ) + end + + sig do + override.returns( + { + measurement: String, + operator: + Openlayer::Models::TestListResultsResponse::LastUnskippedResult::RowsBody::ColumnFilter::StringColumnFilter::Operator::TaggedSymbol, + value: + Openlayer::Models::TestListResultsResponse::LastUnskippedResult::RowsBody::ColumnFilter::StringColumnFilter::Value::Variants + } + ) + end + def to_hash + end + + module Operator + extend Openlayer::Internal::Type::Enum + + TaggedSymbol = + T.type_alias do + T.all( + Symbol, + Openlayer::Models::TestListResultsResponse::LastUnskippedResult::RowsBody::ColumnFilter::StringColumnFilter::Operator + ) + end + OrSymbol = T.type_alias { T.any(Symbol, String) } + + IS = + T.let( + :is, + Openlayer::Models::TestListResultsResponse::LastUnskippedResult::RowsBody::ColumnFilter::StringColumnFilter::Operator::TaggedSymbol + ) + NOT_EQUALS = + T.let( + :"!=", + Openlayer::Models::TestListResultsResponse::LastUnskippedResult::RowsBody::ColumnFilter::StringColumnFilter::Operator::TaggedSymbol + ) + + sig do + override.returns( + T::Array[ + Openlayer::Models::TestListResultsResponse::LastUnskippedResult::RowsBody::ColumnFilter::StringColumnFilter::Operator::TaggedSymbol + ] + ) + end + def self.values + end + end + + module Value + extend Openlayer::Internal::Type::Union + + Variants = T.type_alias { T.any(String, T::Boolean) } + + sig do + override.returns( + T::Array[ + Openlayer::Models::TestListResultsResponse::LastUnskippedResult::RowsBody::ColumnFilter::StringColumnFilter::Value::Variants + ] + ) + end + def self.variants + end + end + end + + sig do + override.returns( + T::Array[ + Openlayer::Models::TestListResultsResponse::LastUnskippedResult::RowsBody::ColumnFilter::Variants + ] + ) + end + def self.variants + end + end + end + end + end + end +end diff --git a/rbi/openlayer/resources/tests.rbi b/rbi/openlayer/resources/tests.rbi index 31f9f37..7bbb0a9 100644 --- a/rbi/openlayer/resources/tests.rbi +++ b/rbi/openlayer/resources/tests.rbi @@ -33,6 +33,44 @@ module Openlayer ) end + # List the test results for a test. + sig do + params( + test_id: String, + end_timestamp: Float, + include_insights: T::Boolean, + inference_pipeline_id: T.nilable(String), + page: Integer, + per_page: Integer, + project_version_id: T.nilable(String), + start_timestamp: Float, + status: T::Array[String], + request_options: Openlayer::RequestOptions::OrHash + ).returns(Openlayer::Models::TestListResultsResponse) + end + def list_results( + # The test id. + test_id, + # Filter for results that use data starting before the end timestamp. + end_timestamp: nil, + # Include the insights linked to each test result + include_insights: nil, + # Retrive test results for a specific inference pipeline. + inference_pipeline_id: nil, + # The page to return in a paginated query. + page: nil, + # Maximum number of items to return per page. + per_page: nil, + # Retrive test results for a specific project version. + project_version_id: nil, + # Filter for results that use data ending after the start timestamp. + start_timestamp: nil, + # Filter by status(es). + status: nil, + request_options: {} + ) + end + # @api private sig { params(client: Openlayer::Client).returns(T.attached_class) } def self.new(client:) diff --git a/sig/openlayer/models.rbs b/sig/openlayer/models.rbs index f657680..7802d1a 100644 --- a/sig/openlayer/models.rbs +++ b/sig/openlayer/models.rbs @@ -21,6 +21,8 @@ module Openlayer class TestEvaluateParams = Openlayer::Models::TestEvaluateParams + class TestListResultsParams = Openlayer::Models::TestListResultsParams + class WorkspaceRetrieveParams = Openlayer::Models::WorkspaceRetrieveParams module Workspaces = Openlayer::Models::Workspaces diff --git a/sig/openlayer/models/commits/test_result_list_response.rbs b/sig/openlayer/models/commits/test_result_list_response.rbs index 5638851..85f7d5b 100644 --- a/sig/openlayer/models/commits/test_result_list_response.rbs +++ b/sig/openlayer/models/commits/test_result_list_response.rbs @@ -28,8 +28,11 @@ module Openlayer project_version_id: String?, status: Openlayer::Models::Commits::TestResultListResponse::Item::status, status_message: String?, + expected_values: ::Array[Openlayer::Models::Commits::TestResultListResponse::Item::ExpectedValue], goal: Openlayer::Models::Commits::TestResultListResponse::Item::Goal, - goal_id: String? + goal_id: String?, + rows: String, + rows_body: Openlayer::Models::Commits::TestResultListResponse::Item::RowsBody? } class Item < Openlayer::Internal::Type::BaseModel @@ -37,12 +40,24 @@ module Openlayer attr_accessor status_message: String? + attr_reader expected_values: ::Array[Openlayer::Models::Commits::TestResultListResponse::Item::ExpectedValue]? + + def expected_values=: ( + ::Array[Openlayer::Models::Commits::TestResultListResponse::Item::ExpectedValue] + ) -> ::Array[Openlayer::Models::Commits::TestResultListResponse::Item::ExpectedValue] + attr_reader goal: Openlayer::Models::Commits::TestResultListResponse::Item::Goal? def goal=: ( Openlayer::Models::Commits::TestResultListResponse::Item::Goal ) -> Openlayer::Models::Commits::TestResultListResponse::Item::Goal + attr_reader rows: String? + + def rows=: (String) -> String + + attr_accessor rows_body: Openlayer::Models::Commits::TestResultListResponse::Item::RowsBody? + attr_accessor id: String attr_accessor date_created: Time @@ -69,8 +84,11 @@ module Openlayer project_version_id: String?, status: Openlayer::Models::Commits::TestResultListResponse::Item::status, status_message: String?, + ?expected_values: ::Array[Openlayer::Models::Commits::TestResultListResponse::Item::ExpectedValue], ?goal: Openlayer::Models::Commits::TestResultListResponse::Item::Goal, - ?goal_id: String? + ?goal_id: String?, + ?rows: String, + ?rows_body: Openlayer::Models::Commits::TestResultListResponse::Item::RowsBody? ) -> void def to_hash: -> { @@ -83,8 +101,11 @@ module Openlayer project_version_id: String?, status: Openlayer::Models::Commits::TestResultListResponse::Item::status, status_message: String?, + expected_values: ::Array[Openlayer::Models::Commits::TestResultListResponse::Item::ExpectedValue], goal: Openlayer::Models::Commits::TestResultListResponse::Item::Goal, - goal_id: String? + goal_id: String?, + rows: String, + rows_body: Openlayer::Models::Commits::TestResultListResponse::Item::RowsBody? } type status = :running | :passing | :failing | :skipped | :error @@ -101,6 +122,35 @@ module Openlayer def self?.values: -> ::Array[Openlayer::Models::Commits::TestResultListResponse::Item::status] end + type expected_value = + { + lower_threshold: Float?, + measurement: String, + upper_threshold: Float? + } + + class ExpectedValue < Openlayer::Internal::Type::BaseModel + attr_accessor lower_threshold: Float? + + attr_reader measurement: String? + + def measurement=: (String) -> String + + attr_accessor upper_threshold: Float? + + def initialize: ( + ?lower_threshold: Float?, + ?measurement: String, + ?upper_threshold: Float? + ) -> void + + def to_hash: -> { + lower_threshold: Float?, + measurement: String, + upper_threshold: Float? + } + end + type goal = { id: String, @@ -522,6 +572,206 @@ module Openlayer def self?.values: -> ::Array[Openlayer::Models::Commits::TestResultListResponse::Item::Goal::type_] end end + + type rows_body = + { + column_filters: ::Array[Openlayer::Models::Commits::TestResultListResponse::Item::RowsBody::column_filter]?, + exclude_row_id_list: ::Array[Integer]?, + not_search_query_and: ::Array[String]?, + not_search_query_or: ::Array[String]?, + row_id_list: ::Array[Integer]?, + search_query_and: ::Array[String]?, + search_query_or: ::Array[String]? + } + + class RowsBody < Openlayer::Internal::Type::BaseModel + attr_accessor column_filters: ::Array[Openlayer::Models::Commits::TestResultListResponse::Item::RowsBody::column_filter]? + + attr_accessor exclude_row_id_list: ::Array[Integer]? + + attr_accessor not_search_query_and: ::Array[String]? + + attr_accessor not_search_query_or: ::Array[String]? + + attr_accessor row_id_list: ::Array[Integer]? + + attr_accessor search_query_and: ::Array[String]? + + attr_accessor search_query_or: ::Array[String]? + + def initialize: ( + ?column_filters: ::Array[Openlayer::Models::Commits::TestResultListResponse::Item::RowsBody::column_filter]?, + ?exclude_row_id_list: ::Array[Integer]?, + ?not_search_query_and: ::Array[String]?, + ?not_search_query_or: ::Array[String]?, + ?row_id_list: ::Array[Integer]?, + ?search_query_and: ::Array[String]?, + ?search_query_or: ::Array[String]? + ) -> void + + def to_hash: -> { + column_filters: ::Array[Openlayer::Models::Commits::TestResultListResponse::Item::RowsBody::column_filter]?, + exclude_row_id_list: ::Array[Integer]?, + not_search_query_and: ::Array[String]?, + not_search_query_or: ::Array[String]?, + row_id_list: ::Array[Integer]?, + search_query_and: ::Array[String]?, + search_query_or: ::Array[String]? + } + + type column_filter = + Openlayer::Models::Commits::TestResultListResponse::Item::RowsBody::ColumnFilter::SetColumnFilter + | Openlayer::Models::Commits::TestResultListResponse::Item::RowsBody::ColumnFilter::NumericColumnFilter + | Openlayer::Models::Commits::TestResultListResponse::Item::RowsBody::ColumnFilter::StringColumnFilter + + module ColumnFilter + extend Openlayer::Internal::Type::Union + + type set_column_filter = + { + measurement: String, + operator: Openlayer::Models::Commits::TestResultListResponse::Item::RowsBody::ColumnFilter::SetColumnFilter::operator, + value: ::Array[Openlayer::Models::Commits::TestResultListResponse::Item::RowsBody::ColumnFilter::SetColumnFilter::value] + } + + class SetColumnFilter < Openlayer::Internal::Type::BaseModel + attr_accessor measurement: String + + attr_accessor operator: Openlayer::Models::Commits::TestResultListResponse::Item::RowsBody::ColumnFilter::SetColumnFilter::operator + + attr_accessor value: ::Array[Openlayer::Models::Commits::TestResultListResponse::Item::RowsBody::ColumnFilter::SetColumnFilter::value] + + def initialize: ( + measurement: String, + operator: Openlayer::Models::Commits::TestResultListResponse::Item::RowsBody::ColumnFilter::SetColumnFilter::operator, + value: ::Array[Openlayer::Models::Commits::TestResultListResponse::Item::RowsBody::ColumnFilter::SetColumnFilter::value] + ) -> void + + def to_hash: -> { + measurement: String, + operator: Openlayer::Models::Commits::TestResultListResponse::Item::RowsBody::ColumnFilter::SetColumnFilter::operator, + value: ::Array[Openlayer::Models::Commits::TestResultListResponse::Item::RowsBody::ColumnFilter::SetColumnFilter::value] + } + + type operator = + :contains_none + | :contains_any + | :contains_all + | :one_of + | :none_of + + module Operator + extend Openlayer::Internal::Type::Enum + + CONTAINS_NONE: :contains_none + CONTAINS_ANY: :contains_any + CONTAINS_ALL: :contains_all + ONE_OF: :one_of + NONE_OF: :none_of + + def self?.values: -> ::Array[Openlayer::Models::Commits::TestResultListResponse::Item::RowsBody::ColumnFilter::SetColumnFilter::operator] + end + + type value = String | Float + + module Value + extend Openlayer::Internal::Type::Union + + def self?.variants: -> ::Array[Openlayer::Models::Commits::TestResultListResponse::Item::RowsBody::ColumnFilter::SetColumnFilter::value] + end + end + + type numeric_column_filter = + { + measurement: String, + operator: Openlayer::Models::Commits::TestResultListResponse::Item::RowsBody::ColumnFilter::NumericColumnFilter::operator, + value: Float? + } + + class NumericColumnFilter < Openlayer::Internal::Type::BaseModel + attr_accessor measurement: String + + attr_accessor operator: Openlayer::Models::Commits::TestResultListResponse::Item::RowsBody::ColumnFilter::NumericColumnFilter::operator + + attr_accessor value: Float? + + def initialize: ( + measurement: String, + operator: Openlayer::Models::Commits::TestResultListResponse::Item::RowsBody::ColumnFilter::NumericColumnFilter::operator, + value: Float? + ) -> void + + def to_hash: -> { + measurement: String, + operator: Openlayer::Models::Commits::TestResultListResponse::Item::RowsBody::ColumnFilter::NumericColumnFilter::operator, + value: Float? + } + + type operator = :> | :>= | :is | :< | :<= | :!= + + module Operator + extend Openlayer::Internal::Type::Enum + + GREATER: :> + GREATER_OR_EQUALS: :>= + IS: :is + LESS: :< + LESS_OR_EQUALS: :<= + NOT_EQUALS: :!= + + def self?.values: -> ::Array[Openlayer::Models::Commits::TestResultListResponse::Item::RowsBody::ColumnFilter::NumericColumnFilter::operator] + end + end + + type string_column_filter = + { + measurement: String, + operator: Openlayer::Models::Commits::TestResultListResponse::Item::RowsBody::ColumnFilter::StringColumnFilter::operator, + value: Openlayer::Models::Commits::TestResultListResponse::Item::RowsBody::ColumnFilter::StringColumnFilter::value + } + + class StringColumnFilter < Openlayer::Internal::Type::BaseModel + attr_accessor measurement: String + + attr_accessor operator: Openlayer::Models::Commits::TestResultListResponse::Item::RowsBody::ColumnFilter::StringColumnFilter::operator + + attr_accessor value: Openlayer::Models::Commits::TestResultListResponse::Item::RowsBody::ColumnFilter::StringColumnFilter::value + + def initialize: ( + measurement: String, + operator: Openlayer::Models::Commits::TestResultListResponse::Item::RowsBody::ColumnFilter::StringColumnFilter::operator, + value: Openlayer::Models::Commits::TestResultListResponse::Item::RowsBody::ColumnFilter::StringColumnFilter::value + ) -> void + + def to_hash: -> { + measurement: String, + operator: Openlayer::Models::Commits::TestResultListResponse::Item::RowsBody::ColumnFilter::StringColumnFilter::operator, + value: Openlayer::Models::Commits::TestResultListResponse::Item::RowsBody::ColumnFilter::StringColumnFilter::value + } + + type operator = :is | :!= + + module Operator + extend Openlayer::Internal::Type::Enum + + IS: :is + NOT_EQUALS: :!= + + def self?.values: -> ::Array[Openlayer::Models::Commits::TestResultListResponse::Item::RowsBody::ColumnFilter::StringColumnFilter::operator] + end + + type value = String | bool + + module Value + extend Openlayer::Internal::Type::Union + + def self?.variants: -> ::Array[Openlayer::Models::Commits::TestResultListResponse::Item::RowsBody::ColumnFilter::StringColumnFilter::value] + end + end + + def self?.variants: -> ::Array[Openlayer::Models::Commits::TestResultListResponse::Item::RowsBody::column_filter] + end + end end end end diff --git a/sig/openlayer/models/inference_pipelines/test_result_list_response.rbs b/sig/openlayer/models/inference_pipelines/test_result_list_response.rbs index c57c3e2..a538fdc 100644 --- a/sig/openlayer/models/inference_pipelines/test_result_list_response.rbs +++ b/sig/openlayer/models/inference_pipelines/test_result_list_response.rbs @@ -28,8 +28,11 @@ module Openlayer project_version_id: String?, status: Openlayer::Models::InferencePipelines::TestResultListResponse::Item::status, status_message: String?, + expected_values: ::Array[Openlayer::Models::InferencePipelines::TestResultListResponse::Item::ExpectedValue], goal: Openlayer::Models::InferencePipelines::TestResultListResponse::Item::Goal, - goal_id: String? + goal_id: String?, + rows: String, + rows_body: Openlayer::Models::InferencePipelines::TestResultListResponse::Item::RowsBody? } class Item < Openlayer::Internal::Type::BaseModel @@ -37,12 +40,24 @@ module Openlayer attr_accessor status_message: String? + attr_reader expected_values: ::Array[Openlayer::Models::InferencePipelines::TestResultListResponse::Item::ExpectedValue]? + + def expected_values=: ( + ::Array[Openlayer::Models::InferencePipelines::TestResultListResponse::Item::ExpectedValue] + ) -> ::Array[Openlayer::Models::InferencePipelines::TestResultListResponse::Item::ExpectedValue] + attr_reader goal: Openlayer::Models::InferencePipelines::TestResultListResponse::Item::Goal? def goal=: ( Openlayer::Models::InferencePipelines::TestResultListResponse::Item::Goal ) -> Openlayer::Models::InferencePipelines::TestResultListResponse::Item::Goal + attr_reader rows: String? + + def rows=: (String) -> String + + attr_accessor rows_body: Openlayer::Models::InferencePipelines::TestResultListResponse::Item::RowsBody? + attr_accessor id: String attr_accessor date_created: Time @@ -69,8 +84,11 @@ module Openlayer project_version_id: String?, status: Openlayer::Models::InferencePipelines::TestResultListResponse::Item::status, status_message: String?, + ?expected_values: ::Array[Openlayer::Models::InferencePipelines::TestResultListResponse::Item::ExpectedValue], ?goal: Openlayer::Models::InferencePipelines::TestResultListResponse::Item::Goal, - ?goal_id: String? + ?goal_id: String?, + ?rows: String, + ?rows_body: Openlayer::Models::InferencePipelines::TestResultListResponse::Item::RowsBody? ) -> void def to_hash: -> { @@ -83,8 +101,11 @@ module Openlayer project_version_id: String?, status: Openlayer::Models::InferencePipelines::TestResultListResponse::Item::status, status_message: String?, + expected_values: ::Array[Openlayer::Models::InferencePipelines::TestResultListResponse::Item::ExpectedValue], goal: Openlayer::Models::InferencePipelines::TestResultListResponse::Item::Goal, - goal_id: String? + goal_id: String?, + rows: String, + rows_body: Openlayer::Models::InferencePipelines::TestResultListResponse::Item::RowsBody? } type status = :running | :passing | :failing | :skipped | :error @@ -101,6 +122,35 @@ module Openlayer def self?.values: -> ::Array[Openlayer::Models::InferencePipelines::TestResultListResponse::Item::status] end + type expected_value = + { + lower_threshold: Float?, + measurement: String, + upper_threshold: Float? + } + + class ExpectedValue < Openlayer::Internal::Type::BaseModel + attr_accessor lower_threshold: Float? + + attr_reader measurement: String? + + def measurement=: (String) -> String + + attr_accessor upper_threshold: Float? + + def initialize: ( + ?lower_threshold: Float?, + ?measurement: String, + ?upper_threshold: Float? + ) -> void + + def to_hash: -> { + lower_threshold: Float?, + measurement: String, + upper_threshold: Float? + } + end + type goal = { id: String, @@ -522,6 +572,206 @@ module Openlayer def self?.values: -> ::Array[Openlayer::Models::InferencePipelines::TestResultListResponse::Item::Goal::type_] end end + + type rows_body = + { + column_filters: ::Array[Openlayer::Models::InferencePipelines::TestResultListResponse::Item::RowsBody::column_filter]?, + exclude_row_id_list: ::Array[Integer]?, + not_search_query_and: ::Array[String]?, + not_search_query_or: ::Array[String]?, + row_id_list: ::Array[Integer]?, + search_query_and: ::Array[String]?, + search_query_or: ::Array[String]? + } + + class RowsBody < Openlayer::Internal::Type::BaseModel + attr_accessor column_filters: ::Array[Openlayer::Models::InferencePipelines::TestResultListResponse::Item::RowsBody::column_filter]? + + attr_accessor exclude_row_id_list: ::Array[Integer]? + + attr_accessor not_search_query_and: ::Array[String]? + + attr_accessor not_search_query_or: ::Array[String]? + + attr_accessor row_id_list: ::Array[Integer]? + + attr_accessor search_query_and: ::Array[String]? + + attr_accessor search_query_or: ::Array[String]? + + def initialize: ( + ?column_filters: ::Array[Openlayer::Models::InferencePipelines::TestResultListResponse::Item::RowsBody::column_filter]?, + ?exclude_row_id_list: ::Array[Integer]?, + ?not_search_query_and: ::Array[String]?, + ?not_search_query_or: ::Array[String]?, + ?row_id_list: ::Array[Integer]?, + ?search_query_and: ::Array[String]?, + ?search_query_or: ::Array[String]? + ) -> void + + def to_hash: -> { + column_filters: ::Array[Openlayer::Models::InferencePipelines::TestResultListResponse::Item::RowsBody::column_filter]?, + exclude_row_id_list: ::Array[Integer]?, + not_search_query_and: ::Array[String]?, + not_search_query_or: ::Array[String]?, + row_id_list: ::Array[Integer]?, + search_query_and: ::Array[String]?, + search_query_or: ::Array[String]? + } + + type column_filter = + Openlayer::Models::InferencePipelines::TestResultListResponse::Item::RowsBody::ColumnFilter::SetColumnFilter + | Openlayer::Models::InferencePipelines::TestResultListResponse::Item::RowsBody::ColumnFilter::NumericColumnFilter + | Openlayer::Models::InferencePipelines::TestResultListResponse::Item::RowsBody::ColumnFilter::StringColumnFilter + + module ColumnFilter + extend Openlayer::Internal::Type::Union + + type set_column_filter = + { + measurement: String, + operator: Openlayer::Models::InferencePipelines::TestResultListResponse::Item::RowsBody::ColumnFilter::SetColumnFilter::operator, + value: ::Array[Openlayer::Models::InferencePipelines::TestResultListResponse::Item::RowsBody::ColumnFilter::SetColumnFilter::value] + } + + class SetColumnFilter < Openlayer::Internal::Type::BaseModel + attr_accessor measurement: String + + attr_accessor operator: Openlayer::Models::InferencePipelines::TestResultListResponse::Item::RowsBody::ColumnFilter::SetColumnFilter::operator + + attr_accessor value: ::Array[Openlayer::Models::InferencePipelines::TestResultListResponse::Item::RowsBody::ColumnFilter::SetColumnFilter::value] + + def initialize: ( + measurement: String, + operator: Openlayer::Models::InferencePipelines::TestResultListResponse::Item::RowsBody::ColumnFilter::SetColumnFilter::operator, + value: ::Array[Openlayer::Models::InferencePipelines::TestResultListResponse::Item::RowsBody::ColumnFilter::SetColumnFilter::value] + ) -> void + + def to_hash: -> { + measurement: String, + operator: Openlayer::Models::InferencePipelines::TestResultListResponse::Item::RowsBody::ColumnFilter::SetColumnFilter::operator, + value: ::Array[Openlayer::Models::InferencePipelines::TestResultListResponse::Item::RowsBody::ColumnFilter::SetColumnFilter::value] + } + + type operator = + :contains_none + | :contains_any + | :contains_all + | :one_of + | :none_of + + module Operator + extend Openlayer::Internal::Type::Enum + + CONTAINS_NONE: :contains_none + CONTAINS_ANY: :contains_any + CONTAINS_ALL: :contains_all + ONE_OF: :one_of + NONE_OF: :none_of + + def self?.values: -> ::Array[Openlayer::Models::InferencePipelines::TestResultListResponse::Item::RowsBody::ColumnFilter::SetColumnFilter::operator] + end + + type value = String | Float + + module Value + extend Openlayer::Internal::Type::Union + + def self?.variants: -> ::Array[Openlayer::Models::InferencePipelines::TestResultListResponse::Item::RowsBody::ColumnFilter::SetColumnFilter::value] + end + end + + type numeric_column_filter = + { + measurement: String, + operator: Openlayer::Models::InferencePipelines::TestResultListResponse::Item::RowsBody::ColumnFilter::NumericColumnFilter::operator, + value: Float? + } + + class NumericColumnFilter < Openlayer::Internal::Type::BaseModel + attr_accessor measurement: String + + attr_accessor operator: Openlayer::Models::InferencePipelines::TestResultListResponse::Item::RowsBody::ColumnFilter::NumericColumnFilter::operator + + attr_accessor value: Float? + + def initialize: ( + measurement: String, + operator: Openlayer::Models::InferencePipelines::TestResultListResponse::Item::RowsBody::ColumnFilter::NumericColumnFilter::operator, + value: Float? + ) -> void + + def to_hash: -> { + measurement: String, + operator: Openlayer::Models::InferencePipelines::TestResultListResponse::Item::RowsBody::ColumnFilter::NumericColumnFilter::operator, + value: Float? + } + + type operator = :> | :>= | :is | :< | :<= | :!= + + module Operator + extend Openlayer::Internal::Type::Enum + + GREATER: :> + GREATER_OR_EQUALS: :>= + IS: :is + LESS: :< + LESS_OR_EQUALS: :<= + NOT_EQUALS: :!= + + def self?.values: -> ::Array[Openlayer::Models::InferencePipelines::TestResultListResponse::Item::RowsBody::ColumnFilter::NumericColumnFilter::operator] + end + end + + type string_column_filter = + { + measurement: String, + operator: Openlayer::Models::InferencePipelines::TestResultListResponse::Item::RowsBody::ColumnFilter::StringColumnFilter::operator, + value: Openlayer::Models::InferencePipelines::TestResultListResponse::Item::RowsBody::ColumnFilter::StringColumnFilter::value + } + + class StringColumnFilter < Openlayer::Internal::Type::BaseModel + attr_accessor measurement: String + + attr_accessor operator: Openlayer::Models::InferencePipelines::TestResultListResponse::Item::RowsBody::ColumnFilter::StringColumnFilter::operator + + attr_accessor value: Openlayer::Models::InferencePipelines::TestResultListResponse::Item::RowsBody::ColumnFilter::StringColumnFilter::value + + def initialize: ( + measurement: String, + operator: Openlayer::Models::InferencePipelines::TestResultListResponse::Item::RowsBody::ColumnFilter::StringColumnFilter::operator, + value: Openlayer::Models::InferencePipelines::TestResultListResponse::Item::RowsBody::ColumnFilter::StringColumnFilter::value + ) -> void + + def to_hash: -> { + measurement: String, + operator: Openlayer::Models::InferencePipelines::TestResultListResponse::Item::RowsBody::ColumnFilter::StringColumnFilter::operator, + value: Openlayer::Models::InferencePipelines::TestResultListResponse::Item::RowsBody::ColumnFilter::StringColumnFilter::value + } + + type operator = :is | :!= + + module Operator + extend Openlayer::Internal::Type::Enum + + IS: :is + NOT_EQUALS: :!= + + def self?.values: -> ::Array[Openlayer::Models::InferencePipelines::TestResultListResponse::Item::RowsBody::ColumnFilter::StringColumnFilter::operator] + end + + type value = String | bool + + module Value + extend Openlayer::Internal::Type::Union + + def self?.variants: -> ::Array[Openlayer::Models::InferencePipelines::TestResultListResponse::Item::RowsBody::ColumnFilter::StringColumnFilter::value] + end + end + + def self?.variants: -> ::Array[Openlayer::Models::InferencePipelines::TestResultListResponse::Item::RowsBody::column_filter] + end + end end end end diff --git a/sig/openlayer/models/test_list_results_params.rbs b/sig/openlayer/models/test_list_results_params.rbs new file mode 100644 index 0000000..c78c546 --- /dev/null +++ b/sig/openlayer/models/test_list_results_params.rbs @@ -0,0 +1,73 @@ +module Openlayer + module Models + type test_list_results_params = + { + end_timestamp: Float, + include_insights: bool, + inference_pipeline_id: String?, + page: Integer, + per_page: Integer, + project_version_id: String?, + start_timestamp: Float, + status: ::Array[String] + } + & Openlayer::Internal::Type::request_parameters + + class TestListResultsParams < Openlayer::Internal::Type::BaseModel + extend Openlayer::Internal::Type::RequestParameters::Converter + include Openlayer::Internal::Type::RequestParameters + + attr_reader end_timestamp: Float? + + def end_timestamp=: (Float) -> Float + + attr_reader include_insights: bool? + + def include_insights=: (bool) -> bool + + attr_accessor inference_pipeline_id: String? + + attr_reader page: Integer? + + def page=: (Integer) -> Integer + + attr_reader per_page: Integer? + + def per_page=: (Integer) -> Integer + + attr_accessor project_version_id: String? + + attr_reader start_timestamp: Float? + + def start_timestamp=: (Float) -> Float + + attr_reader status: ::Array[String]? + + def status=: (::Array[String]) -> ::Array[String] + + def initialize: ( + ?end_timestamp: Float, + ?include_insights: bool, + ?inference_pipeline_id: String?, + ?page: Integer, + ?per_page: Integer, + ?project_version_id: String?, + ?start_timestamp: Float, + ?status: ::Array[String], + ?request_options: Openlayer::request_opts + ) -> void + + def to_hash: -> { + end_timestamp: Float, + include_insights: bool, + inference_pipeline_id: String?, + page: Integer, + per_page: Integer, + project_version_id: String?, + start_timestamp: Float, + status: ::Array[String], + request_options: Openlayer::RequestOptions + } + end + end +end diff --git a/sig/openlayer/models/test_list_results_response.rbs b/sig/openlayer/models/test_list_results_response.rbs new file mode 100644 index 0000000..86fd0a5 --- /dev/null +++ b/sig/openlayer/models/test_list_results_response.rbs @@ -0,0 +1,1539 @@ +module Openlayer + module Models + type test_list_results_response = + { + items: ::Array[Openlayer::Models::TestListResultsResponse::Item], + last_unskipped_result: Openlayer::Models::TestListResultsResponse::LastUnskippedResult? + } + + class TestListResultsResponse < Openlayer::Internal::Type::BaseModel + attr_accessor items: ::Array[Openlayer::Models::TestListResultsResponse::Item] + + attr_accessor last_unskipped_result: Openlayer::Models::TestListResultsResponse::LastUnskippedResult? + + def initialize: ( + items: ::Array[Openlayer::Models::TestListResultsResponse::Item], + ?last_unskipped_result: Openlayer::Models::TestListResultsResponse::LastUnskippedResult? + ) -> void + + def to_hash: -> { + items: ::Array[Openlayer::Models::TestListResultsResponse::Item], + last_unskipped_result: Openlayer::Models::TestListResultsResponse::LastUnskippedResult? + } + + type item = + { + id: String, + date_created: Time, + date_data_ends: Time?, + date_data_starts: Time?, + date_updated: Time, + inference_pipeline_id: String?, + project_version_id: String?, + status: Openlayer::Models::TestListResultsResponse::Item::status, + status_message: String?, + expected_values: ::Array[Openlayer::Models::TestListResultsResponse::Item::ExpectedValue], + goal: Openlayer::Models::TestListResultsResponse::Item::Goal, + goal_id: String?, + rows: String, + rows_body: Openlayer::Models::TestListResultsResponse::Item::RowsBody? + } + + class Item < Openlayer::Internal::Type::BaseModel + attr_accessor status: Openlayer::Models::TestListResultsResponse::Item::status + + attr_accessor status_message: String? + + attr_reader expected_values: ::Array[Openlayer::Models::TestListResultsResponse::Item::ExpectedValue]? + + def expected_values=: ( + ::Array[Openlayer::Models::TestListResultsResponse::Item::ExpectedValue] + ) -> ::Array[Openlayer::Models::TestListResultsResponse::Item::ExpectedValue] + + attr_reader goal: Openlayer::Models::TestListResultsResponse::Item::Goal? + + def goal=: ( + Openlayer::Models::TestListResultsResponse::Item::Goal + ) -> Openlayer::Models::TestListResultsResponse::Item::Goal + + attr_reader rows: String? + + def rows=: (String) -> String + + attr_accessor rows_body: Openlayer::Models::TestListResultsResponse::Item::RowsBody? + + attr_accessor id: String + + attr_accessor date_created: Time + + attr_accessor date_data_ends: Time? + + attr_accessor date_data_starts: Time? + + attr_accessor date_updated: Time + + attr_accessor inference_pipeline_id: String? + + attr_accessor project_version_id: String? + + attr_accessor goal_id: String? + + def initialize: ( + id: String, + date_created: Time, + date_data_ends: Time?, + date_data_starts: Time?, + date_updated: Time, + inference_pipeline_id: String?, + project_version_id: String?, + status: Openlayer::Models::TestListResultsResponse::Item::status, + status_message: String?, + ?expected_values: ::Array[Openlayer::Models::TestListResultsResponse::Item::ExpectedValue], + ?goal: Openlayer::Models::TestListResultsResponse::Item::Goal, + ?goal_id: String?, + ?rows: String, + ?rows_body: Openlayer::Models::TestListResultsResponse::Item::RowsBody? + ) -> void + + def to_hash: -> { + id: String, + date_created: Time, + date_data_ends: Time?, + date_data_starts: Time?, + date_updated: Time, + inference_pipeline_id: String?, + project_version_id: String?, + status: Openlayer::Models::TestListResultsResponse::Item::status, + status_message: String?, + expected_values: ::Array[Openlayer::Models::TestListResultsResponse::Item::ExpectedValue], + goal: Openlayer::Models::TestListResultsResponse::Item::Goal, + goal_id: String?, + rows: String, + rows_body: Openlayer::Models::TestListResultsResponse::Item::RowsBody? + } + + type status = :running | :passing | :failing | :skipped | :error + + module Status + extend Openlayer::Internal::Type::Enum + + RUNNING: :running + PASSING: :passing + FAILING: :failing + SKIPPED: :skipped + ERROR: :error + + def self?.values: -> ::Array[Openlayer::Models::TestListResultsResponse::Item::status] + end + + type expected_value = + { + lower_threshold: Float?, + measurement: String, + upper_threshold: Float? + } + + class ExpectedValue < Openlayer::Internal::Type::BaseModel + attr_accessor lower_threshold: Float? + + attr_reader measurement: String? + + def measurement=: (String) -> String + + attr_accessor upper_threshold: Float? + + def initialize: ( + ?lower_threshold: Float?, + ?measurement: String, + ?upper_threshold: Float? + ) -> void + + def to_hash: -> { + lower_threshold: Float?, + measurement: String, + upper_threshold: Float? + } + end + + type goal = + { + id: String, + comment_count: Integer, + creator_id: String?, + date_archived: Time?, + date_created: Time, + date_updated: Time, + description: top?, + name: String, + number: Integer, + origin_project_version_id: String?, + subtype: Openlayer::Models::TestListResultsResponse::Item::Goal::subtype, + suggested: bool, + thresholds: ::Array[Openlayer::Models::TestListResultsResponse::Item::Goal::Threshold], + type: Openlayer::Models::TestListResultsResponse::Item::Goal::type_, + archived: bool, + delay_window: Float?, + evaluation_window: Float?, + uses_ml_model: bool, + uses_production_data: bool, + uses_reference_dataset: bool, + uses_training_dataset: bool, + uses_validation_dataset: bool + } + + class Goal < Openlayer::Internal::Type::BaseModel + attr_accessor description: top? + + attr_accessor name: String + + attr_accessor subtype: Openlayer::Models::TestListResultsResponse::Item::Goal::subtype + + attr_accessor thresholds: ::Array[Openlayer::Models::TestListResultsResponse::Item::Goal::Threshold] + + attr_accessor type: Openlayer::Models::TestListResultsResponse::Item::Goal::type_ + + attr_reader archived: bool? + + def archived=: (bool) -> bool + + attr_accessor delay_window: Float? + + attr_accessor evaluation_window: Float? + + attr_reader uses_ml_model: bool? + + def uses_ml_model=: (bool) -> bool + + attr_reader uses_production_data: bool? + + def uses_production_data=: (bool) -> bool + + attr_reader uses_reference_dataset: bool? + + def uses_reference_dataset=: (bool) -> bool + + attr_reader uses_training_dataset: bool? + + def uses_training_dataset=: (bool) -> bool + + attr_reader uses_validation_dataset: bool? + + def uses_validation_dataset=: (bool) -> bool + + attr_accessor id: String + + attr_accessor comment_count: Integer + + attr_accessor creator_id: String? + + attr_accessor date_archived: Time? + + attr_accessor date_created: Time + + attr_accessor date_updated: Time + + attr_accessor number: Integer + + attr_accessor origin_project_version_id: String? + + attr_accessor suggested: bool + + def initialize: ( + id: String, + comment_count: Integer, + creator_id: String?, + date_archived: Time?, + date_created: Time, + date_updated: Time, + description: top?, + name: String, + number: Integer, + origin_project_version_id: String?, + subtype: Openlayer::Models::TestListResultsResponse::Item::Goal::subtype, + suggested: bool, + thresholds: ::Array[Openlayer::Models::TestListResultsResponse::Item::Goal::Threshold], + type: Openlayer::Models::TestListResultsResponse::Item::Goal::type_, + ?archived: bool, + ?delay_window: Float?, + ?evaluation_window: Float?, + ?uses_ml_model: bool, + ?uses_production_data: bool, + ?uses_reference_dataset: bool, + ?uses_training_dataset: bool, + ?uses_validation_dataset: bool + ) -> void + + def to_hash: -> { + id: String, + comment_count: Integer, + creator_id: String?, + date_archived: Time?, + date_created: Time, + date_updated: Time, + description: top?, + name: String, + number: Integer, + origin_project_version_id: String?, + subtype: Openlayer::Models::TestListResultsResponse::Item::Goal::subtype, + suggested: bool, + thresholds: ::Array[Openlayer::Models::TestListResultsResponse::Item::Goal::Threshold], + type: Openlayer::Models::TestListResultsResponse::Item::Goal::type_, + archived: bool, + delay_window: Float?, + evaluation_window: Float?, + uses_ml_model: bool, + uses_production_data: bool, + uses_reference_dataset: bool, + uses_training_dataset: bool, + uses_validation_dataset: bool + } + + type subtype = + :anomalousColumnCount + | :characterLength + | :classImbalanceRatio + | :expectColumnAToBeInColumnB + | :columnAverage + | :columnDrift + | :columnStatistic + | :columnValuesMatch + | :conflictingLabelRowCount + | :containsPii + | :containsValidUrl + | :correlatedFeatureCount + | :customMetricThreshold + | :duplicateRowCount + | :emptyFeature + | :emptyFeatureCount + | :driftedFeatureCount + | :featureMissingValues + | :featureValueValidation + | :greatExpectations + | :groupByColumnStatsCheck + | :illFormedRowCount + | :isCode + | :isJson + | :llmRubricThresholdV2 + | :labelDrift + | :metricThreshold + | :newCategoryCount + | :newLabelCount + | :nullRowCount + | :rowCount + | :ppScoreValueValidation + | :quasiConstantFeature + | :quasiConstantFeatureCount + | :sqlQuery + | :dtypeValidation + | :sentenceLength + | :sizeRatio + | :specialCharactersRatio + | :stringValidation + | :trainValLeakageRowCount + + module Subtype + extend Openlayer::Internal::Type::Enum + + ANOMALOUS_COLUMN_COUNT: :anomalousColumnCount + CHARACTER_LENGTH: :characterLength + CLASS_IMBALANCE_RATIO: :classImbalanceRatio + EXPECT_COLUMN_A_TO_BE_IN_COLUMN_B: :expectColumnAToBeInColumnB + COLUMN_AVERAGE: :columnAverage + COLUMN_DRIFT: :columnDrift + COLUMN_STATISTIC: :columnStatistic + COLUMN_VALUES_MATCH: :columnValuesMatch + CONFLICTING_LABEL_ROW_COUNT: :conflictingLabelRowCount + CONTAINS_PII: :containsPii + CONTAINS_VALID_URL: :containsValidUrl + CORRELATED_FEATURE_COUNT: :correlatedFeatureCount + CUSTOM_METRIC_THRESHOLD: :customMetricThreshold + DUPLICATE_ROW_COUNT: :duplicateRowCount + EMPTY_FEATURE: :emptyFeature + EMPTY_FEATURE_COUNT: :emptyFeatureCount + DRIFTED_FEATURE_COUNT: :driftedFeatureCount + FEATURE_MISSING_VALUES: :featureMissingValues + FEATURE_VALUE_VALIDATION: :featureValueValidation + GREAT_EXPECTATIONS: :greatExpectations + GROUP_BY_COLUMN_STATS_CHECK: :groupByColumnStatsCheck + ILL_FORMED_ROW_COUNT: :illFormedRowCount + IS_CODE: :isCode + IS_JSON: :isJson + LLM_RUBRIC_THRESHOLD_V2: :llmRubricThresholdV2 + LABEL_DRIFT: :labelDrift + METRIC_THRESHOLD: :metricThreshold + NEW_CATEGORY_COUNT: :newCategoryCount + NEW_LABEL_COUNT: :newLabelCount + NULL_ROW_COUNT: :nullRowCount + ROW_COUNT: :rowCount + PP_SCORE_VALUE_VALIDATION: :ppScoreValueValidation + QUASI_CONSTANT_FEATURE: :quasiConstantFeature + QUASI_CONSTANT_FEATURE_COUNT: :quasiConstantFeatureCount + SQL_QUERY: :sqlQuery + DTYPE_VALIDATION: :dtypeValidation + SENTENCE_LENGTH: :sentenceLength + SIZE_RATIO: :sizeRatio + SPECIAL_CHARACTERS_RATIO: :specialCharactersRatio + STRING_VALIDATION: :stringValidation + TRAIN_VAL_LEAKAGE_ROW_COUNT: :trainValLeakageRowCount + + def self?.values: -> ::Array[Openlayer::Models::TestListResultsResponse::Item::Goal::subtype] + end + + type threshold = + { + insight_name: Openlayer::Models::TestListResultsResponse::Item::Goal::Threshold::insight_name, + insight_parameters: ::Array[Openlayer::Models::TestListResultsResponse::Item::Goal::Threshold::InsightParameter]?, + measurement: String, + operator: Openlayer::Models::TestListResultsResponse::Item::Goal::Threshold::operator, + threshold_mode: Openlayer::Models::TestListResultsResponse::Item::Goal::Threshold::threshold_mode, + value: Openlayer::Models::TestListResultsResponse::Item::Goal::Threshold::value + } + + class Threshold < Openlayer::Internal::Type::BaseModel + attr_reader insight_name: Openlayer::Models::TestListResultsResponse::Item::Goal::Threshold::insight_name? + + def insight_name=: ( + Openlayer::Models::TestListResultsResponse::Item::Goal::Threshold::insight_name + ) -> Openlayer::Models::TestListResultsResponse::Item::Goal::Threshold::insight_name + + attr_accessor insight_parameters: ::Array[Openlayer::Models::TestListResultsResponse::Item::Goal::Threshold::InsightParameter]? + + attr_reader measurement: String? + + def measurement=: (String) -> String + + attr_reader operator: Openlayer::Models::TestListResultsResponse::Item::Goal::Threshold::operator? + + def operator=: ( + Openlayer::Models::TestListResultsResponse::Item::Goal::Threshold::operator + ) -> Openlayer::Models::TestListResultsResponse::Item::Goal::Threshold::operator + + attr_reader threshold_mode: Openlayer::Models::TestListResultsResponse::Item::Goal::Threshold::threshold_mode? + + def threshold_mode=: ( + Openlayer::Models::TestListResultsResponse::Item::Goal::Threshold::threshold_mode + ) -> Openlayer::Models::TestListResultsResponse::Item::Goal::Threshold::threshold_mode + + attr_reader value: Openlayer::Models::TestListResultsResponse::Item::Goal::Threshold::value? + + def value=: ( + Openlayer::Models::TestListResultsResponse::Item::Goal::Threshold::value + ) -> Openlayer::Models::TestListResultsResponse::Item::Goal::Threshold::value + + def initialize: ( + ?insight_name: Openlayer::Models::TestListResultsResponse::Item::Goal::Threshold::insight_name, + ?insight_parameters: ::Array[Openlayer::Models::TestListResultsResponse::Item::Goal::Threshold::InsightParameter]?, + ?measurement: String, + ?operator: Openlayer::Models::TestListResultsResponse::Item::Goal::Threshold::operator, + ?threshold_mode: Openlayer::Models::TestListResultsResponse::Item::Goal::Threshold::threshold_mode, + ?value: Openlayer::Models::TestListResultsResponse::Item::Goal::Threshold::value + ) -> void + + def to_hash: -> { + insight_name: Openlayer::Models::TestListResultsResponse::Item::Goal::Threshold::insight_name, + insight_parameters: ::Array[Openlayer::Models::TestListResultsResponse::Item::Goal::Threshold::InsightParameter]?, + measurement: String, + operator: Openlayer::Models::TestListResultsResponse::Item::Goal::Threshold::operator, + threshold_mode: Openlayer::Models::TestListResultsResponse::Item::Goal::Threshold::threshold_mode, + value: Openlayer::Models::TestListResultsResponse::Item::Goal::Threshold::value + } + + type insight_name = + :characterLength + | :classImbalance + | :expectColumnAToBeInColumnB + | :columnAverage + | :columnDrift + | :columnValuesMatch + | :confidenceDistribution + | :conflictingLabelRowCount + | :containsPii + | :containsValidUrl + | :correlatedFeatures + | :customMetric + | :duplicateRowCount + | :emptyFeatures + | :featureDrift + | :featureProfile + | :greatExpectations + | :groupByColumnStatsCheck + | :illFormedRowCount + | :isCode + | :isJson + | :llmRubricV2 + | :labelDrift + | :metrics + | :newCategories + | :newLabels + | :nullRowCount + | :ppScore + | :quasiConstantFeatures + | :sentenceLength + | :sizeRatio + | :specialCharacters + | :stringValidation + | :trainValLeakageRowCount + + module InsightName + extend Openlayer::Internal::Type::Enum + + CHARACTER_LENGTH: :characterLength + CLASS_IMBALANCE: :classImbalance + EXPECT_COLUMN_A_TO_BE_IN_COLUMN_B: :expectColumnAToBeInColumnB + COLUMN_AVERAGE: :columnAverage + COLUMN_DRIFT: :columnDrift + COLUMN_VALUES_MATCH: :columnValuesMatch + CONFIDENCE_DISTRIBUTION: :confidenceDistribution + CONFLICTING_LABEL_ROW_COUNT: :conflictingLabelRowCount + CONTAINS_PII: :containsPii + CONTAINS_VALID_URL: :containsValidUrl + CORRELATED_FEATURES: :correlatedFeatures + CUSTOM_METRIC: :customMetric + DUPLICATE_ROW_COUNT: :duplicateRowCount + EMPTY_FEATURES: :emptyFeatures + FEATURE_DRIFT: :featureDrift + FEATURE_PROFILE: :featureProfile + GREAT_EXPECTATIONS: :greatExpectations + GROUP_BY_COLUMN_STATS_CHECK: :groupByColumnStatsCheck + ILL_FORMED_ROW_COUNT: :illFormedRowCount + IS_CODE: :isCode + IS_JSON: :isJson + LLM_RUBRIC_V2: :llmRubricV2 + LABEL_DRIFT: :labelDrift + METRICS: :metrics + NEW_CATEGORIES: :newCategories + NEW_LABELS: :newLabels + NULL_ROW_COUNT: :nullRowCount + PP_SCORE: :ppScore + QUASI_CONSTANT_FEATURES: :quasiConstantFeatures + SENTENCE_LENGTH: :sentenceLength + SIZE_RATIO: :sizeRatio + SPECIAL_CHARACTERS: :specialCharacters + STRING_VALIDATION: :stringValidation + TRAIN_VAL_LEAKAGE_ROW_COUNT: :trainValLeakageRowCount + + def self?.values: -> ::Array[Openlayer::Models::TestListResultsResponse::Item::Goal::Threshold::insight_name] + end + + type insight_parameter = { name: String, value: top } + + class InsightParameter < Openlayer::Internal::Type::BaseModel + attr_accessor name: String + + attr_accessor value: top + + def initialize: (name: String, value: top) -> void + + def to_hash: -> { name: String, value: top } + end + + type operator = :is | :> | :>= | :< | :<= | :!= + + module Operator + extend Openlayer::Internal::Type::Enum + + IS: :is + GREATER: :> + GREATER_OR_EQUALS: :>= + LESS: :< + LESS_OR_EQUALS: :<= + NOT_EQUALS: :!= + + def self?.values: -> ::Array[Openlayer::Models::TestListResultsResponse::Item::Goal::Threshold::operator] + end + + type threshold_mode = :automatic | :manual + + module ThresholdMode + extend Openlayer::Internal::Type::Enum + + AUTOMATIC: :automatic + MANUAL: :manual + + def self?.values: -> ::Array[Openlayer::Models::TestListResultsResponse::Item::Goal::Threshold::threshold_mode] + end + + type value = Float | bool | String | ::Array[String] + + module Value + extend Openlayer::Internal::Type::Union + + def self?.variants: -> ::Array[Openlayer::Models::TestListResultsResponse::Item::Goal::Threshold::value] + + StringArray: Openlayer::Internal::Type::Converter + end + end + + type type_ = :integrity | :consistency | :performance + + module Type + extend Openlayer::Internal::Type::Enum + + INTEGRITY: :integrity + CONSISTENCY: :consistency + PERFORMANCE: :performance + + def self?.values: -> ::Array[Openlayer::Models::TestListResultsResponse::Item::Goal::type_] + end + end + + type rows_body = + { + column_filters: ::Array[Openlayer::Models::TestListResultsResponse::Item::RowsBody::column_filter]?, + exclude_row_id_list: ::Array[Integer]?, + not_search_query_and: ::Array[String]?, + not_search_query_or: ::Array[String]?, + row_id_list: ::Array[Integer]?, + search_query_and: ::Array[String]?, + search_query_or: ::Array[String]? + } + + class RowsBody < Openlayer::Internal::Type::BaseModel + attr_accessor column_filters: ::Array[Openlayer::Models::TestListResultsResponse::Item::RowsBody::column_filter]? + + attr_accessor exclude_row_id_list: ::Array[Integer]? + + attr_accessor not_search_query_and: ::Array[String]? + + attr_accessor not_search_query_or: ::Array[String]? + + attr_accessor row_id_list: ::Array[Integer]? + + attr_accessor search_query_and: ::Array[String]? + + attr_accessor search_query_or: ::Array[String]? + + def initialize: ( + ?column_filters: ::Array[Openlayer::Models::TestListResultsResponse::Item::RowsBody::column_filter]?, + ?exclude_row_id_list: ::Array[Integer]?, + ?not_search_query_and: ::Array[String]?, + ?not_search_query_or: ::Array[String]?, + ?row_id_list: ::Array[Integer]?, + ?search_query_and: ::Array[String]?, + ?search_query_or: ::Array[String]? + ) -> void + + def to_hash: -> { + column_filters: ::Array[Openlayer::Models::TestListResultsResponse::Item::RowsBody::column_filter]?, + exclude_row_id_list: ::Array[Integer]?, + not_search_query_and: ::Array[String]?, + not_search_query_or: ::Array[String]?, + row_id_list: ::Array[Integer]?, + search_query_and: ::Array[String]?, + search_query_or: ::Array[String]? + } + + type column_filter = + Openlayer::Models::TestListResultsResponse::Item::RowsBody::ColumnFilter::SetColumnFilter + | Openlayer::Models::TestListResultsResponse::Item::RowsBody::ColumnFilter::NumericColumnFilter + | Openlayer::Models::TestListResultsResponse::Item::RowsBody::ColumnFilter::StringColumnFilter + + module ColumnFilter + extend Openlayer::Internal::Type::Union + + type set_column_filter = + { + measurement: String, + operator: Openlayer::Models::TestListResultsResponse::Item::RowsBody::ColumnFilter::SetColumnFilter::operator, + value: ::Array[Openlayer::Models::TestListResultsResponse::Item::RowsBody::ColumnFilter::SetColumnFilter::value] + } + + class SetColumnFilter < Openlayer::Internal::Type::BaseModel + attr_accessor measurement: String + + attr_accessor operator: Openlayer::Models::TestListResultsResponse::Item::RowsBody::ColumnFilter::SetColumnFilter::operator + + attr_accessor value: ::Array[Openlayer::Models::TestListResultsResponse::Item::RowsBody::ColumnFilter::SetColumnFilter::value] + + def initialize: ( + measurement: String, + operator: Openlayer::Models::TestListResultsResponse::Item::RowsBody::ColumnFilter::SetColumnFilter::operator, + value: ::Array[Openlayer::Models::TestListResultsResponse::Item::RowsBody::ColumnFilter::SetColumnFilter::value] + ) -> void + + def to_hash: -> { + measurement: String, + operator: Openlayer::Models::TestListResultsResponse::Item::RowsBody::ColumnFilter::SetColumnFilter::operator, + value: ::Array[Openlayer::Models::TestListResultsResponse::Item::RowsBody::ColumnFilter::SetColumnFilter::value] + } + + type operator = + :contains_none + | :contains_any + | :contains_all + | :one_of + | :none_of + + module Operator + extend Openlayer::Internal::Type::Enum + + CONTAINS_NONE: :contains_none + CONTAINS_ANY: :contains_any + CONTAINS_ALL: :contains_all + ONE_OF: :one_of + NONE_OF: :none_of + + def self?.values: -> ::Array[Openlayer::Models::TestListResultsResponse::Item::RowsBody::ColumnFilter::SetColumnFilter::operator] + end + + type value = String | Float + + module Value + extend Openlayer::Internal::Type::Union + + def self?.variants: -> ::Array[Openlayer::Models::TestListResultsResponse::Item::RowsBody::ColumnFilter::SetColumnFilter::value] + end + end + + type numeric_column_filter = + { + measurement: String, + operator: Openlayer::Models::TestListResultsResponse::Item::RowsBody::ColumnFilter::NumericColumnFilter::operator, + value: Float? + } + + class NumericColumnFilter < Openlayer::Internal::Type::BaseModel + attr_accessor measurement: String + + attr_accessor operator: Openlayer::Models::TestListResultsResponse::Item::RowsBody::ColumnFilter::NumericColumnFilter::operator + + attr_accessor value: Float? + + def initialize: ( + measurement: String, + operator: Openlayer::Models::TestListResultsResponse::Item::RowsBody::ColumnFilter::NumericColumnFilter::operator, + value: Float? + ) -> void + + def to_hash: -> { + measurement: String, + operator: Openlayer::Models::TestListResultsResponse::Item::RowsBody::ColumnFilter::NumericColumnFilter::operator, + value: Float? + } + + type operator = :> | :>= | :is | :< | :<= | :!= + + module Operator + extend Openlayer::Internal::Type::Enum + + GREATER: :> + GREATER_OR_EQUALS: :>= + IS: :is + LESS: :< + LESS_OR_EQUALS: :<= + NOT_EQUALS: :!= + + def self?.values: -> ::Array[Openlayer::Models::TestListResultsResponse::Item::RowsBody::ColumnFilter::NumericColumnFilter::operator] + end + end + + type string_column_filter = + { + measurement: String, + operator: Openlayer::Models::TestListResultsResponse::Item::RowsBody::ColumnFilter::StringColumnFilter::operator, + value: Openlayer::Models::TestListResultsResponse::Item::RowsBody::ColumnFilter::StringColumnFilter::value + } + + class StringColumnFilter < Openlayer::Internal::Type::BaseModel + attr_accessor measurement: String + + attr_accessor operator: Openlayer::Models::TestListResultsResponse::Item::RowsBody::ColumnFilter::StringColumnFilter::operator + + attr_accessor value: Openlayer::Models::TestListResultsResponse::Item::RowsBody::ColumnFilter::StringColumnFilter::value + + def initialize: ( + measurement: String, + operator: Openlayer::Models::TestListResultsResponse::Item::RowsBody::ColumnFilter::StringColumnFilter::operator, + value: Openlayer::Models::TestListResultsResponse::Item::RowsBody::ColumnFilter::StringColumnFilter::value + ) -> void + + def to_hash: -> { + measurement: String, + operator: Openlayer::Models::TestListResultsResponse::Item::RowsBody::ColumnFilter::StringColumnFilter::operator, + value: Openlayer::Models::TestListResultsResponse::Item::RowsBody::ColumnFilter::StringColumnFilter::value + } + + type operator = :is | :!= + + module Operator + extend Openlayer::Internal::Type::Enum + + IS: :is + NOT_EQUALS: :!= + + def self?.values: -> ::Array[Openlayer::Models::TestListResultsResponse::Item::RowsBody::ColumnFilter::StringColumnFilter::operator] + end + + type value = String | bool + + module Value + extend Openlayer::Internal::Type::Union + + def self?.variants: -> ::Array[Openlayer::Models::TestListResultsResponse::Item::RowsBody::ColumnFilter::StringColumnFilter::value] + end + end + + def self?.variants: -> ::Array[Openlayer::Models::TestListResultsResponse::Item::RowsBody::column_filter] + end + end + end + + type last_unskipped_result = + { + id: String, + date_created: Time, + date_data_ends: Time?, + date_data_starts: Time?, + date_updated: Time, + inference_pipeline_id: String?, + project_version_id: String?, + status: Openlayer::Models::TestListResultsResponse::LastUnskippedResult::status, + status_message: String?, + expected_values: ::Array[Openlayer::Models::TestListResultsResponse::LastUnskippedResult::ExpectedValue], + goal: Openlayer::Models::TestListResultsResponse::LastUnskippedResult::Goal, + goal_id: String?, + rows: String, + rows_body: Openlayer::Models::TestListResultsResponse::LastUnskippedResult::RowsBody? + } + + class LastUnskippedResult < Openlayer::Internal::Type::BaseModel + attr_accessor status: Openlayer::Models::TestListResultsResponse::LastUnskippedResult::status + + attr_accessor status_message: String? + + attr_reader expected_values: ::Array[Openlayer::Models::TestListResultsResponse::LastUnskippedResult::ExpectedValue]? + + def expected_values=: ( + ::Array[Openlayer::Models::TestListResultsResponse::LastUnskippedResult::ExpectedValue] + ) -> ::Array[Openlayer::Models::TestListResultsResponse::LastUnskippedResult::ExpectedValue] + + attr_reader goal: Openlayer::Models::TestListResultsResponse::LastUnskippedResult::Goal? + + def goal=: ( + Openlayer::Models::TestListResultsResponse::LastUnskippedResult::Goal + ) -> Openlayer::Models::TestListResultsResponse::LastUnskippedResult::Goal + + attr_reader rows: String? + + def rows=: (String) -> String + + attr_accessor rows_body: Openlayer::Models::TestListResultsResponse::LastUnskippedResult::RowsBody? + + attr_accessor id: String + + attr_accessor date_created: Time + + attr_accessor date_data_ends: Time? + + attr_accessor date_data_starts: Time? + + attr_accessor date_updated: Time + + attr_accessor inference_pipeline_id: String? + + attr_accessor project_version_id: String? + + attr_accessor goal_id: String? + + def initialize: ( + id: String, + date_created: Time, + date_data_ends: Time?, + date_data_starts: Time?, + date_updated: Time, + inference_pipeline_id: String?, + project_version_id: String?, + status: Openlayer::Models::TestListResultsResponse::LastUnskippedResult::status, + status_message: String?, + ?expected_values: ::Array[Openlayer::Models::TestListResultsResponse::LastUnskippedResult::ExpectedValue], + ?goal: Openlayer::Models::TestListResultsResponse::LastUnskippedResult::Goal, + ?goal_id: String?, + ?rows: String, + ?rows_body: Openlayer::Models::TestListResultsResponse::LastUnskippedResult::RowsBody? + ) -> void + + def to_hash: -> { + id: String, + date_created: Time, + date_data_ends: Time?, + date_data_starts: Time?, + date_updated: Time, + inference_pipeline_id: String?, + project_version_id: String?, + status: Openlayer::Models::TestListResultsResponse::LastUnskippedResult::status, + status_message: String?, + expected_values: ::Array[Openlayer::Models::TestListResultsResponse::LastUnskippedResult::ExpectedValue], + goal: Openlayer::Models::TestListResultsResponse::LastUnskippedResult::Goal, + goal_id: String?, + rows: String, + rows_body: Openlayer::Models::TestListResultsResponse::LastUnskippedResult::RowsBody? + } + + type status = :running | :passing | :failing | :skipped | :error + + module Status + extend Openlayer::Internal::Type::Enum + + RUNNING: :running + PASSING: :passing + FAILING: :failing + SKIPPED: :skipped + ERROR: :error + + def self?.values: -> ::Array[Openlayer::Models::TestListResultsResponse::LastUnskippedResult::status] + end + + type expected_value = + { + lower_threshold: Float?, + measurement: String, + upper_threshold: Float? + } + + class ExpectedValue < Openlayer::Internal::Type::BaseModel + attr_accessor lower_threshold: Float? + + attr_reader measurement: String? + + def measurement=: (String) -> String + + attr_accessor upper_threshold: Float? + + def initialize: ( + ?lower_threshold: Float?, + ?measurement: String, + ?upper_threshold: Float? + ) -> void + + def to_hash: -> { + lower_threshold: Float?, + measurement: String, + upper_threshold: Float? + } + end + + type goal = + { + id: String, + comment_count: Integer, + creator_id: String?, + date_archived: Time?, + date_created: Time, + date_updated: Time, + description: top?, + name: String, + number: Integer, + origin_project_version_id: String?, + subtype: Openlayer::Models::TestListResultsResponse::LastUnskippedResult::Goal::subtype, + suggested: bool, + thresholds: ::Array[Openlayer::Models::TestListResultsResponse::LastUnskippedResult::Goal::Threshold], + type: Openlayer::Models::TestListResultsResponse::LastUnskippedResult::Goal::type_, + archived: bool, + delay_window: Float?, + evaluation_window: Float?, + uses_ml_model: bool, + uses_production_data: bool, + uses_reference_dataset: bool, + uses_training_dataset: bool, + uses_validation_dataset: bool + } + + class Goal < Openlayer::Internal::Type::BaseModel + attr_accessor description: top? + + attr_accessor name: String + + attr_accessor subtype: Openlayer::Models::TestListResultsResponse::LastUnskippedResult::Goal::subtype + + attr_accessor thresholds: ::Array[Openlayer::Models::TestListResultsResponse::LastUnskippedResult::Goal::Threshold] + + attr_accessor type: Openlayer::Models::TestListResultsResponse::LastUnskippedResult::Goal::type_ + + attr_reader archived: bool? + + def archived=: (bool) -> bool + + attr_accessor delay_window: Float? + + attr_accessor evaluation_window: Float? + + attr_reader uses_ml_model: bool? + + def uses_ml_model=: (bool) -> bool + + attr_reader uses_production_data: bool? + + def uses_production_data=: (bool) -> bool + + attr_reader uses_reference_dataset: bool? + + def uses_reference_dataset=: (bool) -> bool + + attr_reader uses_training_dataset: bool? + + def uses_training_dataset=: (bool) -> bool + + attr_reader uses_validation_dataset: bool? + + def uses_validation_dataset=: (bool) -> bool + + attr_accessor id: String + + attr_accessor comment_count: Integer + + attr_accessor creator_id: String? + + attr_accessor date_archived: Time? + + attr_accessor date_created: Time + + attr_accessor date_updated: Time + + attr_accessor number: Integer + + attr_accessor origin_project_version_id: String? + + attr_accessor suggested: bool + + def initialize: ( + id: String, + comment_count: Integer, + creator_id: String?, + date_archived: Time?, + date_created: Time, + date_updated: Time, + description: top?, + name: String, + number: Integer, + origin_project_version_id: String?, + subtype: Openlayer::Models::TestListResultsResponse::LastUnskippedResult::Goal::subtype, + suggested: bool, + thresholds: ::Array[Openlayer::Models::TestListResultsResponse::LastUnskippedResult::Goal::Threshold], + type: Openlayer::Models::TestListResultsResponse::LastUnskippedResult::Goal::type_, + ?archived: bool, + ?delay_window: Float?, + ?evaluation_window: Float?, + ?uses_ml_model: bool, + ?uses_production_data: bool, + ?uses_reference_dataset: bool, + ?uses_training_dataset: bool, + ?uses_validation_dataset: bool + ) -> void + + def to_hash: -> { + id: String, + comment_count: Integer, + creator_id: String?, + date_archived: Time?, + date_created: Time, + date_updated: Time, + description: top?, + name: String, + number: Integer, + origin_project_version_id: String?, + subtype: Openlayer::Models::TestListResultsResponse::LastUnskippedResult::Goal::subtype, + suggested: bool, + thresholds: ::Array[Openlayer::Models::TestListResultsResponse::LastUnskippedResult::Goal::Threshold], + type: Openlayer::Models::TestListResultsResponse::LastUnskippedResult::Goal::type_, + archived: bool, + delay_window: Float?, + evaluation_window: Float?, + uses_ml_model: bool, + uses_production_data: bool, + uses_reference_dataset: bool, + uses_training_dataset: bool, + uses_validation_dataset: bool + } + + type subtype = + :anomalousColumnCount + | :characterLength + | :classImbalanceRatio + | :expectColumnAToBeInColumnB + | :columnAverage + | :columnDrift + | :columnStatistic + | :columnValuesMatch + | :conflictingLabelRowCount + | :containsPii + | :containsValidUrl + | :correlatedFeatureCount + | :customMetricThreshold + | :duplicateRowCount + | :emptyFeature + | :emptyFeatureCount + | :driftedFeatureCount + | :featureMissingValues + | :featureValueValidation + | :greatExpectations + | :groupByColumnStatsCheck + | :illFormedRowCount + | :isCode + | :isJson + | :llmRubricThresholdV2 + | :labelDrift + | :metricThreshold + | :newCategoryCount + | :newLabelCount + | :nullRowCount + | :rowCount + | :ppScoreValueValidation + | :quasiConstantFeature + | :quasiConstantFeatureCount + | :sqlQuery + | :dtypeValidation + | :sentenceLength + | :sizeRatio + | :specialCharactersRatio + | :stringValidation + | :trainValLeakageRowCount + + module Subtype + extend Openlayer::Internal::Type::Enum + + ANOMALOUS_COLUMN_COUNT: :anomalousColumnCount + CHARACTER_LENGTH: :characterLength + CLASS_IMBALANCE_RATIO: :classImbalanceRatio + EXPECT_COLUMN_A_TO_BE_IN_COLUMN_B: :expectColumnAToBeInColumnB + COLUMN_AVERAGE: :columnAverage + COLUMN_DRIFT: :columnDrift + COLUMN_STATISTIC: :columnStatistic + COLUMN_VALUES_MATCH: :columnValuesMatch + CONFLICTING_LABEL_ROW_COUNT: :conflictingLabelRowCount + CONTAINS_PII: :containsPii + CONTAINS_VALID_URL: :containsValidUrl + CORRELATED_FEATURE_COUNT: :correlatedFeatureCount + CUSTOM_METRIC_THRESHOLD: :customMetricThreshold + DUPLICATE_ROW_COUNT: :duplicateRowCount + EMPTY_FEATURE: :emptyFeature + EMPTY_FEATURE_COUNT: :emptyFeatureCount + DRIFTED_FEATURE_COUNT: :driftedFeatureCount + FEATURE_MISSING_VALUES: :featureMissingValues + FEATURE_VALUE_VALIDATION: :featureValueValidation + GREAT_EXPECTATIONS: :greatExpectations + GROUP_BY_COLUMN_STATS_CHECK: :groupByColumnStatsCheck + ILL_FORMED_ROW_COUNT: :illFormedRowCount + IS_CODE: :isCode + IS_JSON: :isJson + LLM_RUBRIC_THRESHOLD_V2: :llmRubricThresholdV2 + LABEL_DRIFT: :labelDrift + METRIC_THRESHOLD: :metricThreshold + NEW_CATEGORY_COUNT: :newCategoryCount + NEW_LABEL_COUNT: :newLabelCount + NULL_ROW_COUNT: :nullRowCount + ROW_COUNT: :rowCount + PP_SCORE_VALUE_VALIDATION: :ppScoreValueValidation + QUASI_CONSTANT_FEATURE: :quasiConstantFeature + QUASI_CONSTANT_FEATURE_COUNT: :quasiConstantFeatureCount + SQL_QUERY: :sqlQuery + DTYPE_VALIDATION: :dtypeValidation + SENTENCE_LENGTH: :sentenceLength + SIZE_RATIO: :sizeRatio + SPECIAL_CHARACTERS_RATIO: :specialCharactersRatio + STRING_VALIDATION: :stringValidation + TRAIN_VAL_LEAKAGE_ROW_COUNT: :trainValLeakageRowCount + + def self?.values: -> ::Array[Openlayer::Models::TestListResultsResponse::LastUnskippedResult::Goal::subtype] + end + + type threshold = + { + insight_name: Openlayer::Models::TestListResultsResponse::LastUnskippedResult::Goal::Threshold::insight_name, + insight_parameters: ::Array[Openlayer::Models::TestListResultsResponse::LastUnskippedResult::Goal::Threshold::InsightParameter]?, + measurement: String, + operator: Openlayer::Models::TestListResultsResponse::LastUnskippedResult::Goal::Threshold::operator, + threshold_mode: Openlayer::Models::TestListResultsResponse::LastUnskippedResult::Goal::Threshold::threshold_mode, + value: Openlayer::Models::TestListResultsResponse::LastUnskippedResult::Goal::Threshold::value + } + + class Threshold < Openlayer::Internal::Type::BaseModel + attr_reader insight_name: Openlayer::Models::TestListResultsResponse::LastUnskippedResult::Goal::Threshold::insight_name? + + def insight_name=: ( + Openlayer::Models::TestListResultsResponse::LastUnskippedResult::Goal::Threshold::insight_name + ) -> Openlayer::Models::TestListResultsResponse::LastUnskippedResult::Goal::Threshold::insight_name + + attr_accessor insight_parameters: ::Array[Openlayer::Models::TestListResultsResponse::LastUnskippedResult::Goal::Threshold::InsightParameter]? + + attr_reader measurement: String? + + def measurement=: (String) -> String + + attr_reader operator: Openlayer::Models::TestListResultsResponse::LastUnskippedResult::Goal::Threshold::operator? + + def operator=: ( + Openlayer::Models::TestListResultsResponse::LastUnskippedResult::Goal::Threshold::operator + ) -> Openlayer::Models::TestListResultsResponse::LastUnskippedResult::Goal::Threshold::operator + + attr_reader threshold_mode: Openlayer::Models::TestListResultsResponse::LastUnskippedResult::Goal::Threshold::threshold_mode? + + def threshold_mode=: ( + Openlayer::Models::TestListResultsResponse::LastUnskippedResult::Goal::Threshold::threshold_mode + ) -> Openlayer::Models::TestListResultsResponse::LastUnskippedResult::Goal::Threshold::threshold_mode + + attr_reader value: Openlayer::Models::TestListResultsResponse::LastUnskippedResult::Goal::Threshold::value? + + def value=: ( + Openlayer::Models::TestListResultsResponse::LastUnskippedResult::Goal::Threshold::value + ) -> Openlayer::Models::TestListResultsResponse::LastUnskippedResult::Goal::Threshold::value + + def initialize: ( + ?insight_name: Openlayer::Models::TestListResultsResponse::LastUnskippedResult::Goal::Threshold::insight_name, + ?insight_parameters: ::Array[Openlayer::Models::TestListResultsResponse::LastUnskippedResult::Goal::Threshold::InsightParameter]?, + ?measurement: String, + ?operator: Openlayer::Models::TestListResultsResponse::LastUnskippedResult::Goal::Threshold::operator, + ?threshold_mode: Openlayer::Models::TestListResultsResponse::LastUnskippedResult::Goal::Threshold::threshold_mode, + ?value: Openlayer::Models::TestListResultsResponse::LastUnskippedResult::Goal::Threshold::value + ) -> void + + def to_hash: -> { + insight_name: Openlayer::Models::TestListResultsResponse::LastUnskippedResult::Goal::Threshold::insight_name, + insight_parameters: ::Array[Openlayer::Models::TestListResultsResponse::LastUnskippedResult::Goal::Threshold::InsightParameter]?, + measurement: String, + operator: Openlayer::Models::TestListResultsResponse::LastUnskippedResult::Goal::Threshold::operator, + threshold_mode: Openlayer::Models::TestListResultsResponse::LastUnskippedResult::Goal::Threshold::threshold_mode, + value: Openlayer::Models::TestListResultsResponse::LastUnskippedResult::Goal::Threshold::value + } + + type insight_name = + :characterLength + | :classImbalance + | :expectColumnAToBeInColumnB + | :columnAverage + | :columnDrift + | :columnValuesMatch + | :confidenceDistribution + | :conflictingLabelRowCount + | :containsPii + | :containsValidUrl + | :correlatedFeatures + | :customMetric + | :duplicateRowCount + | :emptyFeatures + | :featureDrift + | :featureProfile + | :greatExpectations + | :groupByColumnStatsCheck + | :illFormedRowCount + | :isCode + | :isJson + | :llmRubricV2 + | :labelDrift + | :metrics + | :newCategories + | :newLabels + | :nullRowCount + | :ppScore + | :quasiConstantFeatures + | :sentenceLength + | :sizeRatio + | :specialCharacters + | :stringValidation + | :trainValLeakageRowCount + + module InsightName + extend Openlayer::Internal::Type::Enum + + CHARACTER_LENGTH: :characterLength + CLASS_IMBALANCE: :classImbalance + EXPECT_COLUMN_A_TO_BE_IN_COLUMN_B: :expectColumnAToBeInColumnB + COLUMN_AVERAGE: :columnAverage + COLUMN_DRIFT: :columnDrift + COLUMN_VALUES_MATCH: :columnValuesMatch + CONFIDENCE_DISTRIBUTION: :confidenceDistribution + CONFLICTING_LABEL_ROW_COUNT: :conflictingLabelRowCount + CONTAINS_PII: :containsPii + CONTAINS_VALID_URL: :containsValidUrl + CORRELATED_FEATURES: :correlatedFeatures + CUSTOM_METRIC: :customMetric + DUPLICATE_ROW_COUNT: :duplicateRowCount + EMPTY_FEATURES: :emptyFeatures + FEATURE_DRIFT: :featureDrift + FEATURE_PROFILE: :featureProfile + GREAT_EXPECTATIONS: :greatExpectations + GROUP_BY_COLUMN_STATS_CHECK: :groupByColumnStatsCheck + ILL_FORMED_ROW_COUNT: :illFormedRowCount + IS_CODE: :isCode + IS_JSON: :isJson + LLM_RUBRIC_V2: :llmRubricV2 + LABEL_DRIFT: :labelDrift + METRICS: :metrics + NEW_CATEGORIES: :newCategories + NEW_LABELS: :newLabels + NULL_ROW_COUNT: :nullRowCount + PP_SCORE: :ppScore + QUASI_CONSTANT_FEATURES: :quasiConstantFeatures + SENTENCE_LENGTH: :sentenceLength + SIZE_RATIO: :sizeRatio + SPECIAL_CHARACTERS: :specialCharacters + STRING_VALIDATION: :stringValidation + TRAIN_VAL_LEAKAGE_ROW_COUNT: :trainValLeakageRowCount + + def self?.values: -> ::Array[Openlayer::Models::TestListResultsResponse::LastUnskippedResult::Goal::Threshold::insight_name] + end + + type insight_parameter = { name: String, value: top } + + class InsightParameter < Openlayer::Internal::Type::BaseModel + attr_accessor name: String + + attr_accessor value: top + + def initialize: (name: String, value: top) -> void + + def to_hash: -> { name: String, value: top } + end + + type operator = :is | :> | :>= | :< | :<= | :!= + + module Operator + extend Openlayer::Internal::Type::Enum + + IS: :is + GREATER: :> + GREATER_OR_EQUALS: :>= + LESS: :< + LESS_OR_EQUALS: :<= + NOT_EQUALS: :!= + + def self?.values: -> ::Array[Openlayer::Models::TestListResultsResponse::LastUnskippedResult::Goal::Threshold::operator] + end + + type threshold_mode = :automatic | :manual + + module ThresholdMode + extend Openlayer::Internal::Type::Enum + + AUTOMATIC: :automatic + MANUAL: :manual + + def self?.values: -> ::Array[Openlayer::Models::TestListResultsResponse::LastUnskippedResult::Goal::Threshold::threshold_mode] + end + + type value = Float | bool | String | ::Array[String] + + module Value + extend Openlayer::Internal::Type::Union + + def self?.variants: -> ::Array[Openlayer::Models::TestListResultsResponse::LastUnskippedResult::Goal::Threshold::value] + + StringArray: Openlayer::Internal::Type::Converter + end + end + + type type_ = :integrity | :consistency | :performance + + module Type + extend Openlayer::Internal::Type::Enum + + INTEGRITY: :integrity + CONSISTENCY: :consistency + PERFORMANCE: :performance + + def self?.values: -> ::Array[Openlayer::Models::TestListResultsResponse::LastUnskippedResult::Goal::type_] + end + end + + type rows_body = + { + column_filters: ::Array[Openlayer::Models::TestListResultsResponse::LastUnskippedResult::RowsBody::column_filter]?, + exclude_row_id_list: ::Array[Integer]?, + not_search_query_and: ::Array[String]?, + not_search_query_or: ::Array[String]?, + row_id_list: ::Array[Integer]?, + search_query_and: ::Array[String]?, + search_query_or: ::Array[String]? + } + + class RowsBody < Openlayer::Internal::Type::BaseModel + attr_accessor column_filters: ::Array[Openlayer::Models::TestListResultsResponse::LastUnskippedResult::RowsBody::column_filter]? + + attr_accessor exclude_row_id_list: ::Array[Integer]? + + attr_accessor not_search_query_and: ::Array[String]? + + attr_accessor not_search_query_or: ::Array[String]? + + attr_accessor row_id_list: ::Array[Integer]? + + attr_accessor search_query_and: ::Array[String]? + + attr_accessor search_query_or: ::Array[String]? + + def initialize: ( + ?column_filters: ::Array[Openlayer::Models::TestListResultsResponse::LastUnskippedResult::RowsBody::column_filter]?, + ?exclude_row_id_list: ::Array[Integer]?, + ?not_search_query_and: ::Array[String]?, + ?not_search_query_or: ::Array[String]?, + ?row_id_list: ::Array[Integer]?, + ?search_query_and: ::Array[String]?, + ?search_query_or: ::Array[String]? + ) -> void + + def to_hash: -> { + column_filters: ::Array[Openlayer::Models::TestListResultsResponse::LastUnskippedResult::RowsBody::column_filter]?, + exclude_row_id_list: ::Array[Integer]?, + not_search_query_and: ::Array[String]?, + not_search_query_or: ::Array[String]?, + row_id_list: ::Array[Integer]?, + search_query_and: ::Array[String]?, + search_query_or: ::Array[String]? + } + + type column_filter = + Openlayer::Models::TestListResultsResponse::LastUnskippedResult::RowsBody::ColumnFilter::SetColumnFilter + | Openlayer::Models::TestListResultsResponse::LastUnskippedResult::RowsBody::ColumnFilter::NumericColumnFilter + | Openlayer::Models::TestListResultsResponse::LastUnskippedResult::RowsBody::ColumnFilter::StringColumnFilter + + module ColumnFilter + extend Openlayer::Internal::Type::Union + + type set_column_filter = + { + measurement: String, + operator: Openlayer::Models::TestListResultsResponse::LastUnskippedResult::RowsBody::ColumnFilter::SetColumnFilter::operator, + value: ::Array[Openlayer::Models::TestListResultsResponse::LastUnskippedResult::RowsBody::ColumnFilter::SetColumnFilter::value] + } + + class SetColumnFilter < Openlayer::Internal::Type::BaseModel + attr_accessor measurement: String + + attr_accessor operator: Openlayer::Models::TestListResultsResponse::LastUnskippedResult::RowsBody::ColumnFilter::SetColumnFilter::operator + + attr_accessor value: ::Array[Openlayer::Models::TestListResultsResponse::LastUnskippedResult::RowsBody::ColumnFilter::SetColumnFilter::value] + + def initialize: ( + measurement: String, + operator: Openlayer::Models::TestListResultsResponse::LastUnskippedResult::RowsBody::ColumnFilter::SetColumnFilter::operator, + value: ::Array[Openlayer::Models::TestListResultsResponse::LastUnskippedResult::RowsBody::ColumnFilter::SetColumnFilter::value] + ) -> void + + def to_hash: -> { + measurement: String, + operator: Openlayer::Models::TestListResultsResponse::LastUnskippedResult::RowsBody::ColumnFilter::SetColumnFilter::operator, + value: ::Array[Openlayer::Models::TestListResultsResponse::LastUnskippedResult::RowsBody::ColumnFilter::SetColumnFilter::value] + } + + type operator = + :contains_none + | :contains_any + | :contains_all + | :one_of + | :none_of + + module Operator + extend Openlayer::Internal::Type::Enum + + CONTAINS_NONE: :contains_none + CONTAINS_ANY: :contains_any + CONTAINS_ALL: :contains_all + ONE_OF: :one_of + NONE_OF: :none_of + + def self?.values: -> ::Array[Openlayer::Models::TestListResultsResponse::LastUnskippedResult::RowsBody::ColumnFilter::SetColumnFilter::operator] + end + + type value = String | Float + + module Value + extend Openlayer::Internal::Type::Union + + def self?.variants: -> ::Array[Openlayer::Models::TestListResultsResponse::LastUnskippedResult::RowsBody::ColumnFilter::SetColumnFilter::value] + end + end + + type numeric_column_filter = + { + measurement: String, + operator: Openlayer::Models::TestListResultsResponse::LastUnskippedResult::RowsBody::ColumnFilter::NumericColumnFilter::operator, + value: Float? + } + + class NumericColumnFilter < Openlayer::Internal::Type::BaseModel + attr_accessor measurement: String + + attr_accessor operator: Openlayer::Models::TestListResultsResponse::LastUnskippedResult::RowsBody::ColumnFilter::NumericColumnFilter::operator + + attr_accessor value: Float? + + def initialize: ( + measurement: String, + operator: Openlayer::Models::TestListResultsResponse::LastUnskippedResult::RowsBody::ColumnFilter::NumericColumnFilter::operator, + value: Float? + ) -> void + + def to_hash: -> { + measurement: String, + operator: Openlayer::Models::TestListResultsResponse::LastUnskippedResult::RowsBody::ColumnFilter::NumericColumnFilter::operator, + value: Float? + } + + type operator = :> | :>= | :is | :< | :<= | :!= + + module Operator + extend Openlayer::Internal::Type::Enum + + GREATER: :> + GREATER_OR_EQUALS: :>= + IS: :is + LESS: :< + LESS_OR_EQUALS: :<= + NOT_EQUALS: :!= + + def self?.values: -> ::Array[Openlayer::Models::TestListResultsResponse::LastUnskippedResult::RowsBody::ColumnFilter::NumericColumnFilter::operator] + end + end + + type string_column_filter = + { + measurement: String, + operator: Openlayer::Models::TestListResultsResponse::LastUnskippedResult::RowsBody::ColumnFilter::StringColumnFilter::operator, + value: Openlayer::Models::TestListResultsResponse::LastUnskippedResult::RowsBody::ColumnFilter::StringColumnFilter::value + } + + class StringColumnFilter < Openlayer::Internal::Type::BaseModel + attr_accessor measurement: String + + attr_accessor operator: Openlayer::Models::TestListResultsResponse::LastUnskippedResult::RowsBody::ColumnFilter::StringColumnFilter::operator + + attr_accessor value: Openlayer::Models::TestListResultsResponse::LastUnskippedResult::RowsBody::ColumnFilter::StringColumnFilter::value + + def initialize: ( + measurement: String, + operator: Openlayer::Models::TestListResultsResponse::LastUnskippedResult::RowsBody::ColumnFilter::StringColumnFilter::operator, + value: Openlayer::Models::TestListResultsResponse::LastUnskippedResult::RowsBody::ColumnFilter::StringColumnFilter::value + ) -> void + + def to_hash: -> { + measurement: String, + operator: Openlayer::Models::TestListResultsResponse::LastUnskippedResult::RowsBody::ColumnFilter::StringColumnFilter::operator, + value: Openlayer::Models::TestListResultsResponse::LastUnskippedResult::RowsBody::ColumnFilter::StringColumnFilter::value + } + + type operator = :is | :!= + + module Operator + extend Openlayer::Internal::Type::Enum + + IS: :is + NOT_EQUALS: :!= + + def self?.values: -> ::Array[Openlayer::Models::TestListResultsResponse::LastUnskippedResult::RowsBody::ColumnFilter::StringColumnFilter::operator] + end + + type value = String | bool + + module Value + extend Openlayer::Internal::Type::Union + + def self?.variants: -> ::Array[Openlayer::Models::TestListResultsResponse::LastUnskippedResult::RowsBody::ColumnFilter::StringColumnFilter::value] + end + end + + def self?.variants: -> ::Array[Openlayer::Models::TestListResultsResponse::LastUnskippedResult::RowsBody::column_filter] + end + end + end + end + end +end diff --git a/sig/openlayer/resources/tests.rbs b/sig/openlayer/resources/tests.rbs index a2a3b4e..d60159b 100644 --- a/sig/openlayer/resources/tests.rbs +++ b/sig/openlayer/resources/tests.rbs @@ -10,6 +10,19 @@ module Openlayer ?request_options: Openlayer::request_opts ) -> Openlayer::Models::TestEvaluateResponse + def list_results: ( + String test_id, + ?end_timestamp: Float, + ?include_insights: bool, + ?inference_pipeline_id: String?, + ?page: Integer, + ?per_page: Integer, + ?project_version_id: String?, + ?start_timestamp: Float, + ?status: ::Array[String], + ?request_options: Openlayer::request_opts + ) -> Openlayer::Models::TestListResultsResponse + def initialize: (client: Openlayer::Client) -> void end end diff --git a/test/openlayer/resources/tests_test.rb b/test/openlayer/resources/tests_test.rb index c623f27..abeae4b 100644 --- a/test/openlayer/resources/tests_test.rb +++ b/test/openlayer/resources/tests_test.rb @@ -25,4 +25,19 @@ def test_evaluate_required_params } end end + + def test_list_results + response = @openlayer.tests.list_results("182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e") + + assert_pattern do + response => Openlayer::Models::TestListResultsResponse + end + + assert_pattern do + response => { + items: ^(Openlayer::Internal::Type::ArrayOf[Openlayer::Models::TestListResultsResponse::Item]), + last_unskipped_result: Openlayer::Models::TestListResultsResponse::LastUnskippedResult | nil + } + end + end end