arize 8.0.0a22__tar.gz → 8.0.0a23__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (208) hide show
  1. arize-8.0.0a23/LICENSE +176 -0
  2. arize-8.0.0a23/NOTICE +13 -0
  3. {arize-8.0.0a22 → arize-8.0.0a23}/PKG-INFO +4 -3
  4. {arize-8.0.0a22 → arize-8.0.0a23}/pyproject.toml +41 -29
  5. {arize-8.0.0a22 → arize-8.0.0a23}/src/arize/__init__.py +17 -9
  6. {arize-8.0.0a22 → arize-8.0.0a23}/src/arize/_exporter/client.py +55 -36
  7. {arize-8.0.0a22 → arize-8.0.0a23}/src/arize/_exporter/parsers/tracing_data_parser.py +41 -30
  8. {arize-8.0.0a22 → arize-8.0.0a23}/src/arize/_exporter/validation.py +3 -3
  9. {arize-8.0.0a22 → arize-8.0.0a23}/src/arize/_flight/client.py +207 -76
  10. {arize-8.0.0a22 → arize-8.0.0a23}/src/arize/_generated/api_client/__init__.py +30 -6
  11. {arize-8.0.0a22 → arize-8.0.0a23}/src/arize/_generated/api_client/api/__init__.py +1 -0
  12. arize-8.0.0a23/src/arize/_generated/api_client/api/datasets_api.py +2170 -0
  13. {arize-8.0.0a22 → arize-8.0.0a23}/src/arize/_generated/api_client/api/experiments_api.py +167 -131
  14. arize-8.0.0a22/src/arize/_generated/api_client/api/datasets_api.py → arize-8.0.0a23/src/arize/_generated/api_client/api/projects_api.py +216 -515
  15. {arize-8.0.0a22 → arize-8.0.0a23}/src/arize/_generated/api_client/api_client.py +2 -2
  16. {arize-8.0.0a22 → arize-8.0.0a23}/src/arize/_generated/api_client/configuration.py +42 -34
  17. {arize-8.0.0a22 → arize-8.0.0a23}/src/arize/_generated/api_client/exceptions.py +2 -2
  18. arize-8.0.0a23/src/arize/_generated/api_client/models/__init__.py +37 -0
  19. {arize-8.0.0a22 → arize-8.0.0a23}/src/arize/_generated/api_client/models/dataset.py +10 -10
  20. arize-8.0.0a23/src/arize/_generated/api_client/models/dataset_example.py +111 -0
  21. arize-8.0.0a23/src/arize/_generated/api_client/models/dataset_example_update.py +100 -0
  22. {arize-8.0.0a22 → arize-8.0.0a23}/src/arize/_generated/api_client/models/dataset_version.py +13 -13
  23. arize-8.0.0a23/src/arize/_generated/api_client/models/datasets_create_request.py +104 -0
  24. arize-8.0.0a22/src/arize/_generated/api_client/models/datasets_list_examples200_response.py → arize-8.0.0a23/src/arize/_generated/api_client/models/datasets_examples_insert_request.py +17 -9
  25. arize-8.0.0a23/src/arize/_generated/api_client/models/datasets_examples_list200_response.py +106 -0
  26. arize-8.0.0a23/src/arize/_generated/api_client/models/datasets_examples_update_request.py +102 -0
  27. {arize-8.0.0a22 → arize-8.0.0a23}/src/arize/_generated/api_client/models/datasets_list200_response.py +10 -4
  28. {arize-8.0.0a22 → arize-8.0.0a23}/src/arize/_generated/api_client/models/experiment.py +14 -16
  29. arize-8.0.0a23/src/arize/_generated/api_client/models/experiment_run.py +108 -0
  30. arize-8.0.0a23/src/arize/_generated/api_client/models/experiment_run_create.py +102 -0
  31. {arize-8.0.0a22 → arize-8.0.0a23}/src/arize/_generated/api_client/models/experiments_create_request.py +16 -10
  32. {arize-8.0.0a22 → arize-8.0.0a23}/src/arize/_generated/api_client/models/experiments_list200_response.py +10 -4
  33. {arize-8.0.0a22 → arize-8.0.0a23}/src/arize/_generated/api_client/models/experiments_runs_list200_response.py +19 -5
  34. arize-8.0.0a22/src/arize/_generated/api_client/models/error.py → arize-8.0.0a23/src/arize/_generated/api_client/models/pagination_metadata.py +13 -11
  35. arize-8.0.0a23/src/arize/_generated/api_client/models/primitive_value.py +172 -0
  36. arize-8.0.0a23/src/arize/_generated/api_client/models/problem.py +100 -0
  37. arize-8.0.0a23/src/arize/_generated/api_client/models/project.py +99 -0
  38. arize-8.0.0a22/src/arize/_generated/api_client/models/datasets_create_request.py → arize-8.0.0a23/src/arize/_generated/api_client/models/projects_create_request.py +11 -13
  39. arize-8.0.0a23/src/arize/_generated/api_client/models/projects_list200_response.py +106 -0
  40. {arize-8.0.0a22 → arize-8.0.0a23}/src/arize/_generated/api_client/rest.py +2 -2
  41. {arize-8.0.0a22 → arize-8.0.0a23}/src/arize/_generated/api_client/test/test_dataset.py +4 -2
  42. arize-8.0.0a23/src/arize/_generated/api_client/test/test_dataset_example.py +56 -0
  43. arize-8.0.0a23/src/arize/_generated/api_client/test/test_dataset_example_update.py +52 -0
  44. {arize-8.0.0a22 → arize-8.0.0a23}/src/arize/_generated/api_client/test/test_dataset_version.py +7 -2
  45. {arize-8.0.0a22 → arize-8.0.0a23}/src/arize/_generated/api_client/test/test_datasets_api.py +27 -13
  46. {arize-8.0.0a22 → arize-8.0.0a23}/src/arize/_generated/api_client/test/test_datasets_create_request.py +8 -4
  47. arize-8.0.0a22/src/arize/_generated/api_client/test/test_datasets_list_examples200_response.py → arize-8.0.0a23/src/arize/_generated/api_client/test/test_datasets_examples_insert_request.py +19 -15
  48. arize-8.0.0a23/src/arize/_generated/api_client/test/test_datasets_examples_list200_response.py +66 -0
  49. arize-8.0.0a23/src/arize/_generated/api_client/test/test_datasets_examples_update_request.py +61 -0
  50. {arize-8.0.0a22 → arize-8.0.0a23}/src/arize/_generated/api_client/test/test_datasets_list200_response.py +9 -3
  51. {arize-8.0.0a22 → arize-8.0.0a23}/src/arize/_generated/api_client/test/test_experiment.py +2 -4
  52. arize-8.0.0a23/src/arize/_generated/api_client/test/test_experiment_run.py +56 -0
  53. arize-8.0.0a23/src/arize/_generated/api_client/test/test_experiment_run_create.py +54 -0
  54. {arize-8.0.0a22 → arize-8.0.0a23}/src/arize/_generated/api_client/test/test_experiments_api.py +6 -6
  55. {arize-8.0.0a22 → arize-8.0.0a23}/src/arize/_generated/api_client/test/test_experiments_create_request.py +9 -6
  56. {arize-8.0.0a22 → arize-8.0.0a23}/src/arize/_generated/api_client/test/test_experiments_list200_response.py +9 -5
  57. {arize-8.0.0a22 → arize-8.0.0a23}/src/arize/_generated/api_client/test/test_experiments_runs_list200_response.py +15 -5
  58. arize-8.0.0a23/src/arize/_generated/api_client/test/test_pagination_metadata.py +53 -0
  59. arize-8.0.0a22/src/arize/_generated/api_client/test/test_error.py → arize-8.0.0a23/src/arize/_generated/api_client/test/test_primitive_value.py +13 -14
  60. arize-8.0.0a23/src/arize/_generated/api_client/test/test_problem.py +57 -0
  61. arize-8.0.0a23/src/arize/_generated/api_client/test/test_project.py +58 -0
  62. arize-8.0.0a23/src/arize/_generated/api_client/test/test_projects_api.py +59 -0
  63. arize-8.0.0a23/src/arize/_generated/api_client/test/test_projects_create_request.py +54 -0
  64. arize-8.0.0a23/src/arize/_generated/api_client/test/test_projects_list200_response.py +70 -0
  65. {arize-8.0.0a22 → arize-8.0.0a23}/src/arize/_generated/api_client_README.md +43 -29
  66. arize-8.0.0a23/src/arize/_generated/protocol/flight/flight_pb2.py +400 -0
  67. {arize-8.0.0a22 → arize-8.0.0a23}/src/arize/_lazy.py +27 -19
  68. arize-8.0.0a23/src/arize/client.py +432 -0
  69. arize-8.0.0a23/src/arize/config.py +512 -0
  70. arize-8.0.0a23/src/arize/constants/__init__.py +1 -0
  71. {arize-8.0.0a22 → arize-8.0.0a23}/src/arize/constants/config.py +11 -4
  72. {arize-8.0.0a22 → arize-8.0.0a23}/src/arize/constants/ml.py +6 -4
  73. {arize-8.0.0a22 → arize-8.0.0a23}/src/arize/constants/openinference.py +2 -0
  74. arize-8.0.0a23/src/arize/constants/pyarrow.py +3 -0
  75. {arize-8.0.0a22 → arize-8.0.0a23}/src/arize/constants/spans.py +3 -1
  76. arize-8.0.0a23/src/arize/datasets/__init__.py +1 -0
  77. arize-8.0.0a23/src/arize/datasets/client.py +467 -0
  78. {arize-8.0.0a22 → arize-8.0.0a23}/src/arize/datasets/errors.py +32 -2
  79. {arize-8.0.0a22 → arize-8.0.0a23}/src/arize/datasets/validation.py +18 -8
  80. {arize-8.0.0a22 → arize-8.0.0a23}/src/arize/embeddings/__init__.py +2 -0
  81. {arize-8.0.0a22 → arize-8.0.0a23}/src/arize/embeddings/auto_generator.py +23 -19
  82. {arize-8.0.0a22 → arize-8.0.0a23}/src/arize/embeddings/base_generators.py +89 -36
  83. {arize-8.0.0a22 → arize-8.0.0a23}/src/arize/embeddings/constants.py +2 -0
  84. arize-8.0.0a23/src/arize/embeddings/cv_generators.py +50 -0
  85. {arize-8.0.0a22 → arize-8.0.0a23}/src/arize/embeddings/errors.py +27 -5
  86. {arize-8.0.0a22 → arize-8.0.0a23}/src/arize/embeddings/nlp_generators.py +31 -12
  87. {arize-8.0.0a22 → arize-8.0.0a23}/src/arize/embeddings/tabular_generators.py +32 -20
  88. arize-8.0.0a23/src/arize/embeddings/usecases.py +36 -0
  89. arize-8.0.0a23/src/arize/exceptions/__init__.py +1 -0
  90. arize-8.0.0a23/src/arize/exceptions/auth.py +23 -0
  91. {arize-8.0.0a22 → arize-8.0.0a23}/src/arize/exceptions/base.py +29 -4
  92. arize-8.0.0a23/src/arize/exceptions/models.py +41 -0
  93. {arize-8.0.0a22 → arize-8.0.0a23}/src/arize/exceptions/parameters.py +31 -0
  94. arize-8.0.0a23/src/arize/exceptions/spaces.py +21 -0
  95. {arize-8.0.0a22 → arize-8.0.0a23}/src/arize/exceptions/types.py +86 -7
  96. {arize-8.0.0a22 → arize-8.0.0a23}/src/arize/exceptions/values.py +220 -20
  97. arize-8.0.0a23/src/arize/experiments/__init__.py +1 -0
  98. {arize-8.0.0a22 → arize-8.0.0a23}/src/arize/experiments/client.py +389 -285
  99. arize-8.0.0a23/src/arize/experiments/evaluators/__init__.py +1 -0
  100. {arize-8.0.0a22 → arize-8.0.0a23}/src/arize/experiments/evaluators/base.py +74 -41
  101. arize-8.0.0a23/src/arize/experiments/evaluators/exceptions.py +13 -0
  102. {arize-8.0.0a22 → arize-8.0.0a23}/src/arize/experiments/evaluators/executors.py +121 -73
  103. {arize-8.0.0a22 → arize-8.0.0a23}/src/arize/experiments/evaluators/rate_limiters.py +106 -57
  104. {arize-8.0.0a22 → arize-8.0.0a23}/src/arize/experiments/evaluators/types.py +34 -7
  105. {arize-8.0.0a22 → arize-8.0.0a23}/src/arize/experiments/evaluators/utils.py +65 -27
  106. {arize-8.0.0a22 → arize-8.0.0a23}/src/arize/experiments/functions.py +103 -101
  107. {arize-8.0.0a22 → arize-8.0.0a23}/src/arize/experiments/tracing.py +52 -44
  108. {arize-8.0.0a22 → arize-8.0.0a23}/src/arize/experiments/types.py +56 -31
  109. {arize-8.0.0a22 → arize-8.0.0a23}/src/arize/logging.py +54 -22
  110. arize-8.0.0a23/src/arize/models/__init__.py +1 -0
  111. arize-8.0.0a23/src/arize/models/batch_validation/__init__.py +1 -0
  112. {arize-8.0.0a22 → arize-8.0.0a23}/src/arize/models/batch_validation/errors.py +543 -65
  113. {arize-8.0.0a22 → arize-8.0.0a23}/src/arize/models/batch_validation/validator.py +339 -300
  114. arize-8.0.0a23/src/arize/models/bounded_executor.py +47 -0
  115. {arize-8.0.0a22 → arize-8.0.0a23}/src/arize/models/casting.py +75 -29
  116. {arize-8.0.0a22 → arize-8.0.0a23}/src/arize/models/client.py +326 -107
  117. {arize-8.0.0a22 → arize-8.0.0a23}/src/arize/models/proto.py +95 -40
  118. {arize-8.0.0a22 → arize-8.0.0a23}/src/arize/models/stream_validation.py +42 -14
  119. arize-8.0.0a23/src/arize/models/surrogate_explainer/__init__.py +1 -0
  120. {arize-8.0.0a22 → arize-8.0.0a23}/src/arize/models/surrogate_explainer/mimic.py +24 -13
  121. arize-8.0.0a23/src/arize/pre_releases.py +43 -0
  122. arize-8.0.0a23/src/arize/projects/__init__.py +1 -0
  123. arize-8.0.0a23/src/arize/projects/client.py +129 -0
  124. arize-8.0.0a23/src/arize/regions.py +40 -0
  125. arize-8.0.0a23/src/arize/spans/__init__.py +1 -0
  126. {arize-8.0.0a22 → arize-8.0.0a23}/src/arize/spans/client.py +130 -106
  127. {arize-8.0.0a22 → arize-8.0.0a23}/src/arize/spans/columns.py +13 -0
  128. {arize-8.0.0a22 → arize-8.0.0a23}/src/arize/spans/conversion.py +54 -38
  129. arize-8.0.0a23/src/arize/spans/validation/__init__.py +1 -0
  130. arize-8.0.0a23/src/arize/spans/validation/annotations/__init__.py +1 -0
  131. {arize-8.0.0a22 → arize-8.0.0a23}/src/arize/spans/validation/annotations/annotations_validation.py +6 -4
  132. {arize-8.0.0a22 → arize-8.0.0a23}/src/arize/spans/validation/annotations/dataframe_form_validation.py +13 -11
  133. {arize-8.0.0a22 → arize-8.0.0a23}/src/arize/spans/validation/annotations/value_validation.py +35 -11
  134. arize-8.0.0a23/src/arize/spans/validation/common/__init__.py +1 -0
  135. {arize-8.0.0a22 → arize-8.0.0a23}/src/arize/spans/validation/common/argument_validation.py +33 -8
  136. arize-8.0.0a23/src/arize/spans/validation/common/dataframe_form_validation.py +71 -0
  137. {arize-8.0.0a22 → arize-8.0.0a23}/src/arize/spans/validation/common/errors.py +211 -11
  138. {arize-8.0.0a22 → arize-8.0.0a23}/src/arize/spans/validation/common/value_validation.py +80 -13
  139. arize-8.0.0a23/src/arize/spans/validation/evals/__init__.py +1 -0
  140. {arize-8.0.0a22 → arize-8.0.0a23}/src/arize/spans/validation/evals/dataframe_form_validation.py +28 -8
  141. {arize-8.0.0a22 → arize-8.0.0a23}/src/arize/spans/validation/evals/evals_validation.py +34 -4
  142. {arize-8.0.0a22 → arize-8.0.0a23}/src/arize/spans/validation/evals/value_validation.py +26 -3
  143. arize-8.0.0a23/src/arize/spans/validation/metadata/__init__.py +1 -0
  144. {arize-8.0.0a22 → arize-8.0.0a23}/src/arize/spans/validation/metadata/argument_validation.py +14 -5
  145. {arize-8.0.0a22 → arize-8.0.0a23}/src/arize/spans/validation/metadata/dataframe_form_validation.py +26 -10
  146. {arize-8.0.0a22 → arize-8.0.0a23}/src/arize/spans/validation/metadata/value_validation.py +24 -10
  147. arize-8.0.0a23/src/arize/spans/validation/spans/__init__.py +1 -0
  148. {arize-8.0.0a22 → arize-8.0.0a23}/src/arize/spans/validation/spans/dataframe_form_validation.py +34 -13
  149. {arize-8.0.0a22 → arize-8.0.0a23}/src/arize/spans/validation/spans/spans_validation.py +35 -4
  150. {arize-8.0.0a22 → arize-8.0.0a23}/src/arize/spans/validation/spans/value_validation.py +76 -7
  151. {arize-8.0.0a22 → arize-8.0.0a23}/src/arize/types.py +293 -157
  152. arize-8.0.0a23/src/arize/utils/__init__.py +1 -0
  153. {arize-8.0.0a22 → arize-8.0.0a23}/src/arize/utils/arrow.py +31 -15
  154. {arize-8.0.0a22 → arize-8.0.0a23}/src/arize/utils/cache.py +34 -6
  155. {arize-8.0.0a22 → arize-8.0.0a23}/src/arize/utils/dataframe.py +19 -2
  156. {arize-8.0.0a22 → arize-8.0.0a23}/src/arize/utils/online_tasks/__init__.py +2 -0
  157. {arize-8.0.0a22 → arize-8.0.0a23}/src/arize/utils/online_tasks/dataframe_preprocessor.py +53 -41
  158. {arize-8.0.0a22 → arize-8.0.0a23}/src/arize/utils/openinference_conversion.py +44 -5
  159. {arize-8.0.0a22 → arize-8.0.0a23}/src/arize/utils/proto.py +10 -0
  160. {arize-8.0.0a22 → arize-8.0.0a23}/src/arize/utils/size.py +5 -3
  161. arize-8.0.0a23/src/arize/version.py +3 -0
  162. arize-8.0.0a22/LICENSE.md +0 -12
  163. arize-8.0.0a22/src/arize/_generated/api_client/models/__init__.py +0 -26
  164. arize-8.0.0a22/src/arize/_generated/protocol/flight/export_pb2.py +0 -61
  165. arize-8.0.0a22/src/arize/_generated/protocol/flight/ingest_pb2.py +0 -365
  166. arize-8.0.0a22/src/arize/client.py +0 -219
  167. arize-8.0.0a22/src/arize/config.py +0 -263
  168. arize-8.0.0a22/src/arize/constants/__init__.py +0 -0
  169. arize-8.0.0a22/src/arize/constants/pyarrow.py +0 -1
  170. arize-8.0.0a22/src/arize/datasets/__init__.py +0 -0
  171. arize-8.0.0a22/src/arize/datasets/client.py +0 -252
  172. arize-8.0.0a22/src/arize/embeddings/cv_generators.py +0 -28
  173. arize-8.0.0a22/src/arize/embeddings/usecases.py +0 -26
  174. arize-8.0.0a22/src/arize/exceptions/__init__.py +0 -0
  175. arize-8.0.0a22/src/arize/exceptions/auth.py +0 -13
  176. arize-8.0.0a22/src/arize/exceptions/models.py +0 -22
  177. arize-8.0.0a22/src/arize/exceptions/spaces.py +0 -10
  178. arize-8.0.0a22/src/arize/experiments/__init__.py +0 -0
  179. arize-8.0.0a22/src/arize/experiments/evaluators/__init__.py +0 -0
  180. arize-8.0.0a22/src/arize/experiments/evaluators/exceptions.py +0 -10
  181. arize-8.0.0a22/src/arize/models/__init__.py +0 -0
  182. arize-8.0.0a22/src/arize/models/batch_validation/__init__.py +0 -0
  183. arize-8.0.0a22/src/arize/models/bounded_executor.py +0 -34
  184. arize-8.0.0a22/src/arize/models/surrogate_explainer/__init__.py +0 -0
  185. arize-8.0.0a22/src/arize/spans/__init__.py +0 -0
  186. arize-8.0.0a22/src/arize/spans/validation/__init__.py +0 -0
  187. arize-8.0.0a22/src/arize/spans/validation/annotations/__init__.py +0 -0
  188. arize-8.0.0a22/src/arize/spans/validation/common/__init__.py +0 -0
  189. arize-8.0.0a22/src/arize/spans/validation/common/dataframe_form_validation.py +0 -45
  190. arize-8.0.0a22/src/arize/spans/validation/evals/__init__.py +0 -0
  191. arize-8.0.0a22/src/arize/spans/validation/metadata/__init__.py +0 -1
  192. arize-8.0.0a22/src/arize/spans/validation/spans/__init__.py +0 -0
  193. arize-8.0.0a22/src/arize/utils/__init__.py +0 -0
  194. arize-8.0.0a22/src/arize/version.py +0 -1
  195. {arize-8.0.0a22 → arize-8.0.0a23}/.gitignore +0 -0
  196. {arize-8.0.0a22 → arize-8.0.0a23}/README.md +0 -0
  197. {arize-8.0.0a22 → arize-8.0.0a23}/src/arize/_exporter/__init__.py +0 -0
  198. {arize-8.0.0a22 → arize-8.0.0a23}/src/arize/_exporter/parsers/__init__.py +0 -0
  199. {arize-8.0.0a22 → arize-8.0.0a23}/src/arize/_flight/__init__.py +0 -0
  200. {arize-8.0.0a22 → arize-8.0.0a23}/src/arize/_flight/types.py +0 -0
  201. {arize-8.0.0a22 → arize-8.0.0a23}/src/arize/_generated/__init__.py +0 -0
  202. {arize-8.0.0a22 → arize-8.0.0a23}/src/arize/_generated/api_client/api_response.py +0 -0
  203. {arize-8.0.0a22 → arize-8.0.0a23}/src/arize/_generated/api_client/test/__init__.py +0 -0
  204. {arize-8.0.0a22 → arize-8.0.0a23}/src/arize/_generated/protocol/__init__.py +0 -0
  205. {arize-8.0.0a22 → arize-8.0.0a23}/src/arize/_generated/protocol/flight/__init__.py +0 -0
  206. {arize-8.0.0a22 → arize-8.0.0a23}/src/arize/_generated/protocol/rec/__init__.py +0 -0
  207. {arize-8.0.0a22 → arize-8.0.0a23}/src/arize/_generated/protocol/rec/public_pb2.py +0 -0
  208. {arize-8.0.0a22 → arize-8.0.0a23}/src/arize/constants/model_mapping.json +0 -0
arize-8.0.0a23/LICENSE ADDED
@@ -0,0 +1,176 @@
1
+ Apache License
2
+ Version 2.0, January 2004
3
+ http://www.apache.org/licenses/
4
+
5
+ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
6
+
7
+ 1. Definitions.
8
+
9
+ "License" shall mean the terms and conditions for use, reproduction,
10
+ and distribution as defined by Sections 1 through 9 of this document.
11
+
12
+ "Licensor" shall mean the copyright owner or entity authorized by
13
+ the copyright owner that is granting the License.
14
+
15
+ "Legal Entity" shall mean the union of the acting entity and all
16
+ other entities that control, are controlled by, or are under common
17
+ control with that entity. For the purposes of this definition,
18
+ "control" means (i) the power, direct or indirect, to cause the
19
+ direction or management of such entity, whether by contract or
20
+ otherwise, or (ii) ownership of fifty percent (50%) or more of the
21
+ outstanding shares, or (iii) beneficial ownership of such entity.
22
+
23
+ "You" (or "Your") shall mean an individual or Legal Entity
24
+ exercising permissions granted by this License.
25
+
26
+ "Source" form shall mean the preferred form for making modifications,
27
+ including but not limited to software source code, documentation
28
+ source, and configuration files.
29
+
30
+ "Object" form shall mean any form resulting from mechanical
31
+ transformation or translation of a Source form, including but
32
+ not limited to compiled object code, generated documentation,
33
+ and conversions to other media types.
34
+
35
+ "Work" shall mean the work of authorship, whether in Source or
36
+ Object form, made available under the License, as indicated by a
37
+ copyright notice that is included in or attached to the work
38
+ (an example is provided in the Appendix below).
39
+
40
+ "Derivative Works" shall mean any work, whether in Source or Object
41
+ form, that is based on (or derived from) the Work and for which the
42
+ editorial revisions, annotations, elaborations, or other modifications
43
+ represent, as a whole, an original work of authorship. For the purposes
44
+ of this License, Derivative Works shall not include works that remain
45
+ separable from, or merely link (or bind by name) to the interfaces of,
46
+ the Work and Derivative Works thereof.
47
+
48
+ "Contribution" shall mean any work of authorship, including
49
+ the original version of the Work and any modifications or additions
50
+ to that Work or Derivative Works thereof, that is intentionally
51
+ submitted to Licensor for inclusion in the Work by the copyright owner
52
+ or by an individual or Legal Entity authorized to submit on behalf of
53
+ the copyright owner. For the purposes of this definition, "submitted"
54
+ means any form of electronic, verbal, or written communication sent
55
+ to the Licensor or its representatives, including but not limited to
56
+ communication on electronic mailing lists, source code control systems,
57
+ and issue tracking systems that are managed by, or on behalf of, the
58
+ Licensor for the purpose of discussing and improving the Work, but
59
+ excluding communication that is conspicuously marked or otherwise
60
+ designated in writing by the copyright owner as "Not a Contribution."
61
+
62
+ "Contributor" shall mean Licensor and any individual or Legal Entity
63
+ on behalf of whom a Contribution has been received by Licensor and
64
+ subsequently incorporated within the Work.
65
+
66
+ 2. Grant of Copyright License. Subject to the terms and conditions of
67
+ this License, each Contributor hereby grants to You a perpetual,
68
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
69
+ copyright license to reproduce, prepare Derivative Works of,
70
+ publicly display, publicly perform, sublicense, and distribute the
71
+ Work and such Derivative Works in Source or Object form.
72
+
73
+ 3. Grant of Patent License. Subject to the terms and conditions of
74
+ this License, each Contributor hereby grants to You a perpetual,
75
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
76
+ (except as stated in this section) patent license to make, have made,
77
+ use, offer to sell, sell, import, and otherwise transfer the Work,
78
+ where such license applies only to those patent claims licensable
79
+ by such Contributor that are necessarily infringed by their
80
+ Contribution(s) alone or by combination of their Contribution(s)
81
+ with the Work to which such Contribution(s) was submitted. If You
82
+ institute patent litigation against any entity (including a
83
+ cross-claim or counterclaim in a lawsuit) alleging that the Work
84
+ or a Contribution incorporated within the Work constitutes direct
85
+ or contributory patent infringement, then any patent licenses
86
+ granted to You under this License for that Work shall terminate
87
+ as of the date such litigation is filed.
88
+
89
+ 4. Redistribution. You may reproduce and distribute copies of the
90
+ Work or Derivative Works thereof in any medium, with or without
91
+ modifications, and in Source or Object form, provided that You
92
+ meet the following conditions:
93
+
94
+ (a) You must give any other recipients of the Work or
95
+ Derivative Works a copy of this License; and
96
+
97
+ (b) You must cause any modified files to carry prominent notices
98
+ stating that You changed the files; and
99
+
100
+ (c) You must retain, in the Source form of any Derivative Works
101
+ that You distribute, all copyright, patent, trademark, and
102
+ attribution notices from the Source form of the Work,
103
+ excluding those notices that do not pertain to any part of
104
+ the Derivative Works; and
105
+
106
+ (d) If the Work includes a "NOTICE" text file as part of its
107
+ distribution, then any Derivative Works that You distribute must
108
+ include a readable copy of the attribution notices contained
109
+ within such NOTICE file, excluding those notices that do not
110
+ pertain to any part of the Derivative Works, in at least one
111
+ of the following places: within a NOTICE text file distributed
112
+ as part of the Derivative Works; within the Source form or
113
+ documentation, if provided along with the Derivative Works; or,
114
+ within a display generated by the Derivative Works, if and
115
+ wherever such third-party notices normally appear. The contents
116
+ of the NOTICE file are for informational purposes only and
117
+ do not modify the License. You may add Your own attribution
118
+ notices within Derivative Works that You distribute, alongside
119
+ or as an addendum to the NOTICE text from the Work, provided
120
+ that such additional attribution notices cannot be construed
121
+ as modifying the License.
122
+
123
+ You may add Your own copyright statement to Your modifications and
124
+ may provide additional or different license terms and conditions
125
+ for use, reproduction, or distribution of Your modifications, or
126
+ for any such Derivative Works as a whole, provided Your use,
127
+ reproduction, and distribution of the Work otherwise complies with
128
+ the conditions stated in this License.
129
+
130
+ 5. Submission of Contributions. Unless You explicitly state otherwise,
131
+ any Contribution intentionally submitted for inclusion in the Work
132
+ by You to the Licensor shall be under the terms and conditions of
133
+ this License, without any additional terms or conditions.
134
+ Notwithstanding the above, nothing herein shall supersede or modify
135
+ the terms of any separate license agreement you may have executed
136
+ with Licensor regarding such Contributions.
137
+
138
+ 6. Trademarks. This License does not grant permission to use the trade
139
+ names, trademarks, service marks, or product names of the Licensor,
140
+ except as required for reasonable and customary use in describing the
141
+ origin of the Work and reproducing the content of the NOTICE file.
142
+
143
+ 7. Disclaimer of Warranty. Unless required by applicable law or
144
+ agreed to in writing, Licensor provides the Work (and each
145
+ Contributor provides its Contributions) on an "AS IS" BASIS,
146
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
147
+ implied, including, without limitation, any warranties or conditions
148
+ of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
149
+ PARTICULAR PURPOSE. You are solely responsible for determining the
150
+ appropriateness of using or redistributing the Work and assume any
151
+ risks associated with Your exercise of permissions under this License.
152
+
153
+ 8. Limitation of Liability. In no event and under no legal theory,
154
+ whether in tort (including negligence), contract, or otherwise,
155
+ unless required by applicable law (such as deliberate and grossly
156
+ negligent acts) or agreed to in writing, shall any Contributor be
157
+ liable to You for damages, including any direct, indirect, special,
158
+ incidental, or consequential damages of any character arising as a
159
+ result of this License or out of the use or inability to use the
160
+ Work (including but not limited to damages for loss of goodwill,
161
+ work stoppage, computer failure or malfunction, or any and all
162
+ other commercial damages or losses), even if such Contributor
163
+ has been advised of the possibility of such damages.
164
+
165
+ 9. Accepting Warranty or Additional Liability. While redistributing
166
+ the Work or Derivative Works thereof, You may choose to offer,
167
+ and charge a fee for, acceptance of support, warranty, indemnity,
168
+ or other liability obligations and/or rights consistent with this
169
+ License. However, in accepting such obligations, You may act only
170
+ on Your own behalf and on Your sole responsibility, not on behalf
171
+ of any other Contributor, and only if You agree to indemnify,
172
+ defend, and hold each Contributor harmless for any liability
173
+ incurred by, or claims asserted against, such Contributor by reason
174
+ of your accepting any such warranty or additional liability.
175
+
176
+ END OF TERMS AND CONDITIONS
arize-8.0.0a23/NOTICE ADDED
@@ -0,0 +1,13 @@
1
+ Copyright 2020, Arize AI
2
+
3
+ Licensed under the Apache License, Version 2.0 (the "License");
4
+ you may not use this file except in compliance with the License.
5
+ You may obtain a copy of the License at
6
+
7
+ http://www.apache.org/licenses/LICENSE-2.0
8
+
9
+ Unless required by applicable law or agreed to in writing, software
10
+ distributed under the License is distributed on an "AS IS" BASIS,
11
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
+ See the License for the specific language governing permissions and
13
+ limitations under the License.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: arize
3
- Version: 8.0.0a22
3
+ Version: 8.0.0a23
4
4
  Summary: A helper library to interact with Arize AI APIs
5
5
  Project-URL: Homepage, https://arize.com
6
6
  Project-URL: Documentation, https://docs.arize.com/arize
@@ -9,8 +9,9 @@ Project-URL: Source, https://github.com/Arize-ai/client_python
9
9
  Project-URL: Changelog, https://github.com/Arize-ai/client_python/blob/main/CHANGELOG.md
10
10
  Author-email: Arize AI <support@arize.com>
11
11
  Maintainer-email: Arize AI <support@arize.com>
12
- License: BSD
13
- License-File: LICENSE.md
12
+ License: Apache-2.0
13
+ License-File: LICENSE
14
+ License-File: NOTICE
14
15
  Keywords: Arize,Evaluations,Explainability,LLM,Monitoring,Observability,Tracing
15
16
  Classifier: Development Status :: 3 - Alpha
16
17
  Classifier: Intended Audience :: Developers
@@ -3,7 +3,8 @@ name = "arize"
3
3
  description = "A helper library to interact with Arize AI APIs"
4
4
  readme = "README.md"
5
5
  requires-python = ">=3.10"
6
- license = { text = "BSD" }
6
+ license = { text = "Apache-2.0" }
7
+ license-files = ["LICENSE", "NOTICE"]
7
8
  keywords = [
8
9
  "Arize",
9
10
  "Observability",
@@ -14,10 +15,10 @@ keywords = [
14
15
  "Evaluations",
15
16
  ]
16
17
  authors = [
17
- { name = "Arize AI", email = "support@arize.com" },
18
+ { name = "Arize AI", email = "support@arize.com" }
18
19
  ]
19
20
  maintainers = [
20
- { name = "Arize AI", email = "support@arize.com" },
21
+ { name = "Arize AI", email = "support@arize.com" }
21
22
  ]
22
23
  classifiers = [
23
24
  "Development Status :: 3 - Alpha",
@@ -48,7 +49,7 @@ dynamic = ["version"]
48
49
  [project.optional-dependencies]
49
50
  dev = [
50
51
  "pytest==8.4.2",
51
- "ruff==0.13.2",
52
+ "ruff==0.13.2"
52
53
  ]
53
54
  spans = [
54
55
  "openinference-semantic-conventions>=0.1.21, <1",
@@ -61,7 +62,7 @@ spans = [
61
62
  ]
62
63
  ml-stream = [
63
64
  "requests_futures>=1.0.0, <2",
64
- "protobuf>=4.21.0,<6",
65
+ "protobuf>=4.21.0,<6"
65
66
  ]
66
67
  ml-batch = [
67
68
  "pandas>=1.0.0,<3",
@@ -83,7 +84,7 @@ datasets-experiments = [
83
84
  # "opentelemetry-proto>=1.38.0",
84
85
  ]
85
86
  mimic-explainer = [
86
- "interpret-community[mimic]>=0.22.0,<1",
87
+ "interpret-community[mimic]>=0.22.0,<1"
87
88
  ]
88
89
  auto-embeddings = [
89
90
  "Pillow>=8.4.0, <11",
@@ -118,7 +119,7 @@ packages = ["src/arize"]
118
119
  [tool.hatch.build.targets.sdist]
119
120
  exclude = [
120
121
  "tests",
121
- "docs",
122
+ "docs"
122
123
  ]
123
124
 
124
125
 
@@ -126,12 +127,15 @@ exclude = [
126
127
  include = '\.pyi?$'
127
128
  exclude = '(_pb2\.py$|docs/source/.*\.py)'
128
129
 
130
+ # TODO(Kiko): Revisit ruff ignores
129
131
  [tool.ruff]
130
- target-version = "py37"
132
+ target-version = "py310"
131
133
  line-length = 80
132
134
  exclude = [
133
135
  "dist/",
136
+ "testing_notebooks/",
134
137
  "__pycache__",
138
+ "src/arize/_generated/**/*.py",
135
139
  "*_pb2.py*",
136
140
  "*_pb2_grpc.py*",
137
141
  "*.pyi",
@@ -143,27 +147,35 @@ line-ending = "native"
143
147
 
144
148
  [tool.ruff.lint]
145
149
  select = [
146
- # pycodestyle Error
147
- "E",
148
- # pycodestyle Warning
149
- "W",
150
- # Pyflakes
151
- "F",
152
- # pyupgrade
153
- "UP",
154
- # flake8-bugbear
155
- "B",
156
- # flake8-simplify
157
- "SIM",
158
- # isort
159
- "I",
160
- # TODO: Enable pydocstyle when ready for API docs
161
- # # pydocstyle
162
- # "D",
163
- ]
164
- ignore= [
165
- "D203", # Do not use a blank line to separate the docstring from the class definition,
166
- "D212", # The summary line should be located on the second physical line of the docstring
150
+ # Core correctness & style
151
+ # ------------------------
152
+ "E", # pycodestyle errors (syntax, indentation, whitespace)
153
+ "W", # pycodestyle warnings (less severe style issues)
154
+ "F", # Pyflakes (unused imports, undefined names, etc.)
155
+ "UP", # pyupgrade (modernize syntax for your Python version)
156
+ "B", # flake8-bugbear (likely bugs and design problems)
157
+ "SIM", # flake8-simplify (simpler / clearer code patterns)
158
+ "I", # isort (import ordering)
159
+
160
+ # Typing & documentation
161
+ # ------------------------
162
+ "ANN", # flake8-annotations (enforce type annotations)
163
+ "D", # pydocstyle (docstring conventions for public APIs)
164
+ "TCH", # flake8-type-checking (TYPE_CHECKING import hygiene)
165
+
166
+ # Recommended for SDKs
167
+ # ------------------------
168
+ "RUF", # Ruff-native rules (high-signal correctness & footguns)
169
+ "C4", # flake8-comprehensions (cleaner comprehensions)
170
+ "PIE", # flake8-pie (small correctness & readability improvements)
171
+ "PERF", # perflint (common performance pitfalls)
172
+ "DTZ", # flake8-datetimez (timezone-aware datetime usage)
173
+ "TRY", # tryceratops (better exception handling patterns)
174
+ "RET", # flake8-return (return consistency)
175
+ "S", # flake8-bandit (basic security issues; tune via ignores)
176
+ ]
177
+ ignore = [
178
+ "TRY003", # Put long / detailed messages inside the exception class
167
179
  ]
168
180
 
169
181
  [tool.ruff.lint.isort]
@@ -1,9 +1,12 @@
1
+ """Arize SDK for model observability and LLM tracing."""
2
+
1
3
  import logging
2
4
  from collections.abc import Mapping
3
5
 
4
6
  from arize._generated.api_client import models
5
7
  from arize.client import ArizeClient
6
8
  from arize.config import SDKConfiguration
9
+ from arize.regions import Region
7
10
 
8
11
  # Attach a NullHandler by default in the top-level package
9
12
  # so that if no configuration is installed, nothing explodes.
@@ -14,23 +17,27 @@ try:
14
17
  from .logging import auto_configure_from_env
15
18
 
16
19
  auto_configure_from_env()
17
- except Exception:
18
- # Never let logging config crash imports
20
+ except Exception: # noqa: S110
21
+ # Intentionally silent: logging configuration is optional and should never
22
+ # prevent SDK initialization. Users can configure logging explicitly if needed.
19
23
  pass
20
24
 
21
- __all__ = ["ArizeClient", "SDKConfiguration"]
25
+ __all__ = [
26
+ "ArizeClient",
27
+ "Region",
28
+ "SDKConfiguration",
29
+ ]
22
30
 
23
31
 
24
- def make_to_df(field_name: str):
32
+ def make_to_df(field_name: str) -> object:
25
33
  def to_df(
26
- self,
34
+ self: object,
27
35
  by_alias: bool = False,
28
36
  exclude_none: str | bool = False,
29
37
  json_normalize: bool = False,
30
38
  convert_dtypes: bool = True,
31
- ):
32
- """
33
- Convert a list of objects to a pandas DataFrame.
39
+ ) -> object:
40
+ """Convert a list of objects to a pandas DataFrame.
34
41
 
35
42
  Behavior:
36
43
  - If an item is a Pydantic v2 model, use `.model_dump(by_alias=...)`.
@@ -85,6 +92,7 @@ def make_to_df(field_name: str):
85
92
 
86
93
 
87
94
  models.DatasetsList200Response.to_df = make_to_df("datasets") # type: ignore[attr-defined]
88
- models.DatasetsListExamples200Response.to_df = make_to_df("examples") # type: ignore[attr-defined]
95
+ models.DatasetsExamplesList200Response.to_df = make_to_df("examples") # type: ignore[attr-defined]
89
96
  models.ExperimentsList200Response.to_df = make_to_df("experiments") # type: ignore[attr-defined]
90
97
  models.ExperimentsRunsList200Response.to_df = make_to_df("experiment_runs") # type: ignore[attr-defined]
98
+ models.ProjectsList200Response.to_df = make_to_df("projects") # type: ignore[attr-defined]
@@ -2,7 +2,6 @@
2
2
  import logging
3
3
  from dataclasses import dataclass
4
4
  from datetime import datetime
5
- from typing import List, Tuple
6
5
 
7
6
  import pandas as pd
8
7
  import pyarrow.parquet as pq
@@ -16,7 +15,7 @@ from arize._exporter.validation import (
16
15
  validate_input_type,
17
16
  validate_start_end_time,
18
17
  )
19
- from arize._generated.protocol.flight import export_pb2
18
+ from arize._generated.protocol.flight import flight_pb2
20
19
  from arize.logging import CtxAdapter
21
20
  from arize.types import Environments, SimilaritySearchParams
22
21
  from arize.utils.dataframe import reset_dataframe_index
@@ -33,19 +32,20 @@ class ArizeExportClient:
33
32
  space_id: str,
34
33
  model_id: str,
35
34
  environment: Environments,
36
- start_time: str | datetime,
37
- end_time: str | datetime,
35
+ start_time: datetime,
36
+ end_time: datetime,
38
37
  where: str = "",
39
- columns: List | None = None,
38
+ columns: list | None = None,
40
39
  similarity_search_params: SimilaritySearchParams | None = None,
41
40
  model_version: str = "",
42
41
  batch_id: str = "",
43
42
  include_actuals: bool = False,
44
43
  stream_chunk_size: int | None = None,
45
- ):
46
- """
47
- Exports data of a specific model in the Arize platform to a pandas dataframe for a defined
48
- time interval and model environment, optionally by model version and/or batch id.
44
+ ) -> object:
45
+ """Exports data of a specific model in the Arize platform to a pandas dataframe.
46
+
47
+ The export covers a defined time interval and model environment, and can
48
+ optionally be filtered by model version and/or batch id.
49
49
 
50
50
  Args:
51
51
  space_id (str): The id for the space where to export models from, can be retrieved from
@@ -104,14 +104,14 @@ class ArizeExportClient:
104
104
  return pd.DataFrame()
105
105
  progress_bar = self._get_progress_bar(num_recs)
106
106
  list_of_df = []
107
- while True:
108
- try:
107
+ try:
108
+ while True:
109
109
  flight_batch = stream_reader.read_chunk()
110
110
  batch_df = flight_batch.data.to_pandas()
111
111
  list_of_df.append(batch_df)
112
112
  progress_bar.update(batch_df.shape[0])
113
- except StopIteration:
114
- break
113
+ except StopIteration:
114
+ pass
115
115
  progress_bar.close()
116
116
  df = pd.concat(list_of_df)
117
117
  null_columns = df.columns[df.isnull().all()]
@@ -139,16 +139,17 @@ class ArizeExportClient:
139
139
  start_time: datetime,
140
140
  end_time: datetime,
141
141
  where: str = "",
142
- columns: List | None = None,
142
+ columns: list | None = None,
143
143
  similarity_search_params: SimilaritySearchParams | None = None,
144
144
  model_version: str = "",
145
145
  batch_id: str = "",
146
146
  include_actuals: bool = False,
147
147
  stream_chunk_size: int | None = None,
148
148
  ) -> None:
149
- """
150
- Exports data of a specific model in the Arize platform to a parquet file for a defined time
151
- interval and model environment, optionally by model version and/or batch id.
149
+ """Exports data of a specific model in the Arize platform to a parquet file.
150
+
151
+ The export covers a defined time interval and model environment, and can
152
+ optionally be filtered by model version and/or batch id.
152
153
 
153
154
  Args:
154
155
  path (str): path to the file to store exported data. File must be in parquet format and
@@ -208,17 +209,17 @@ class ArizeExportClient:
208
209
  stream_chunk_size=stream_chunk_size,
209
210
  )
210
211
  if stream_reader is None:
211
- return None
212
+ return
212
213
  progress_bar = self._get_progress_bar(num_recs)
213
214
  with pq.ParquetWriter(path, schema=stream_reader.schema) as writer:
214
- while True:
215
- try:
215
+ try:
216
+ while True:
216
217
  flight_batch = stream_reader.read_chunk()
217
218
  record_batch = flight_batch.data
218
219
  writer.write_batch(record_batch)
219
220
  progress_bar.update(record_batch.num_rows)
220
- except StopIteration:
221
- break
221
+ except StopIteration:
222
+ pass
222
223
  progress_bar.close()
223
224
 
224
225
  def _get_stream_reader(
@@ -233,9 +234,9 @@ class ArizeExportClient:
233
234
  batch_id: str = "",
234
235
  where: str = "",
235
236
  similarity_search_params: SimilaritySearchParams | None = None,
236
- columns: List | None = None,
237
+ columns: list | None = None,
237
238
  stream_chunk_size: int | None = None,
238
- ) -> Tuple[flight.FlightStreamReader, int]:
239
+ ) -> tuple[flight.FlightStreamReader | None, int]:
239
240
  # Bind common context for this operation
240
241
  log = CtxAdapter(
241
242
  logger,
@@ -273,7 +274,7 @@ class ArizeExportClient:
273
274
  validate_start_end_time(start_time, end_time)
274
275
 
275
276
  # Create query descriptor
276
- query_descriptor = export_pb2.RecordQueryDescriptor(
277
+ query_descriptor = flight_pb2.RecordQueryDescriptor(
277
278
  space_id=space_id,
278
279
  model_id=model_id,
279
280
  environment=environment.name,
@@ -289,9 +290,11 @@ class ArizeExportClient:
289
290
  else None
290
291
  ),
291
292
  projected_columns=columns if columns else [],
292
- stream_chunk_size=Int64Value(value=stream_chunk_size)
293
- if stream_chunk_size is not None
294
- else None,
293
+ stream_chunk_size=(
294
+ Int64Value(value=stream_chunk_size)
295
+ if stream_chunk_size is not None
296
+ else None
297
+ ),
295
298
  )
296
299
 
297
300
  try:
@@ -306,17 +309,24 @@ class ArizeExportClient:
306
309
  logger.warning("Query returns no data")
307
310
  return None, 0
308
311
  logger.debug("Ticket: %s", flight_info.endpoints[0].ticket)
309
-
310
- # Retrieve the result set as flight stream reader
311
- reader = self.flight_client.do_get(flight_info.endpoints[0].ticket)
312
- return reader, flight_info.total_records
313
312
  except Exception as e:
314
313
  msg = f"Error getting flight info or do_get: {e}"
315
- logger.error(msg)
314
+ logger.exception(msg)
316
315
  raise RuntimeError(msg) from e
316
+ # Retrieve the result set as flight stream reader
317
+ reader = self.flight_client.do_get(flight_info.endpoints[0].ticket)
318
+ return reader, flight_info.total_records
317
319
 
318
320
  @staticmethod
319
- def _get_progress_bar(num_recs):
321
+ def _get_progress_bar(num_recs: int) -> tqdm:
322
+ """Create a progress bar for export operations.
323
+
324
+ Args:
325
+ num_recs: Total number of records to export.
326
+
327
+ Returns:
328
+ A tqdm progress bar configured for data export display.
329
+ """
320
330
  return tqdm(
321
331
  total=num_recs,
322
332
  desc=f" exporting {num_recs} rows",
@@ -329,8 +339,17 @@ class ArizeExportClient:
329
339
 
330
340
  def _get_pb_similarity_search_params(
331
341
  similarity_params: SimilaritySearchParams,
332
- ) -> export_pb2.SimilaritySearchParams:
333
- proto_params = export_pb2.SimilaritySearchParams()
342
+ ) -> flight_pb2.SimilaritySearchParams:
343
+ """Convert SimilaritySearchParams to protocol buffer format.
344
+
345
+ Args:
346
+ similarity_params: Similarity search parameters containing search column name,
347
+ threshold, and reference examples.
348
+
349
+ Returns:
350
+ A protocol buffer SimilaritySearchParams object for Flight requests.
351
+ """
352
+ proto_params = flight_pb2.SimilaritySearchParams()
334
353
  proto_params.search_column_name = similarity_params.search_column_name
335
354
  proto_params.threshold = similarity_params.threshold
336
355
  for ref in similarity_params.references: