validmind 2.13.14__tar.gz → 2.14.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (378) hide show
  1. {validmind-2.13.14 → validmind-2.14.0}/PKG-INFO +1 -1
  2. {validmind-2.13.14 → validmind-2.14.0}/pyproject.toml +4 -1
  3. validmind-2.14.0/validmind/__version__.py +1 -0
  4. {validmind-2.13.14 → validmind-2.14.0}/validmind/api_client.py +41 -0
  5. {validmind-2.13.14 → validmind-2.14.0}/validmind/tests/decorator.py +6 -2
  6. {validmind-2.13.14 → validmind-2.14.0}/validmind/tests/load.py +3 -2
  7. {validmind-2.13.14 → validmind-2.14.0}/validmind/tests/output.py +52 -2
  8. {validmind-2.13.14 → validmind-2.14.0}/validmind/utils.py +8 -6
  9. {validmind-2.13.14 → validmind-2.14.0}/validmind/vm_models/html_renderer.py +48 -3
  10. {validmind-2.13.14 → validmind-2.14.0}/validmind/vm_models/result/pii_filter.py +1 -1
  11. {validmind-2.13.14 → validmind-2.14.0}/validmind/vm_models/result/result.py +16 -0
  12. validmind-2.13.14/validmind/__version__.py +0 -1
  13. {validmind-2.13.14 → validmind-2.14.0}/.gitignore +0 -0
  14. {validmind-2.13.14 → validmind-2.14.0}/LICENSE +0 -0
  15. {validmind-2.13.14 → validmind-2.14.0}/README.pypi.md +0 -0
  16. {validmind-2.13.14 → validmind-2.14.0}/validmind/__init__.py +0 -0
  17. {validmind-2.13.14 → validmind-2.14.0}/validmind/ai/test_descriptions.py +0 -0
  18. {validmind-2.13.14 → validmind-2.14.0}/validmind/ai/utils.py +0 -0
  19. {validmind-2.13.14 → validmind-2.14.0}/validmind/client.py +0 -0
  20. {validmind-2.13.14 → validmind-2.14.0}/validmind/client_config.py +0 -0
  21. {validmind-2.13.14 → validmind-2.14.0}/validmind/credentials_store.py +0 -0
  22. {validmind-2.13.14 → validmind-2.14.0}/validmind/datasets/__init__.py +0 -0
  23. {validmind-2.13.14 → validmind-2.14.0}/validmind/datasets/classification/__init__.py +0 -0
  24. {validmind-2.13.14 → validmind-2.14.0}/validmind/datasets/classification/config.json +0 -0
  25. {validmind-2.13.14 → validmind-2.14.0}/validmind/datasets/classification/customer_churn.py +0 -0
  26. {validmind-2.13.14 → validmind-2.14.0}/validmind/datasets/classification/datasets/bank_customer_churn.csv +0 -0
  27. {validmind-2.13.14 → validmind-2.14.0}/validmind/datasets/classification/datasets/taiwan_credit.csv +0 -0
  28. {validmind-2.13.14 → validmind-2.14.0}/validmind/datasets/classification/taiwan_credit.py +0 -0
  29. {validmind-2.13.14 → validmind-2.14.0}/validmind/datasets/cluster/digits.py +0 -0
  30. {validmind-2.13.14 → validmind-2.14.0}/validmind/datasets/credit_risk/__init__.py +0 -0
  31. {validmind-2.13.14 → validmind-2.14.0}/validmind/datasets/credit_risk/datasets/lending_club_biased.csv.gz +0 -0
  32. {validmind-2.13.14 → validmind-2.14.0}/validmind/datasets/credit_risk/datasets/lending_club_loan_data_2007_2014_clean.csv.gz +0 -0
  33. {validmind-2.13.14 → validmind-2.14.0}/validmind/datasets/credit_risk/lending_club.py +0 -0
  34. {validmind-2.13.14 → validmind-2.14.0}/validmind/datasets/credit_risk/lending_club_bias.py +0 -0
  35. {validmind-2.13.14 → validmind-2.14.0}/validmind/datasets/llm/__init__.py +0 -0
  36. {validmind-2.13.14 → validmind-2.14.0}/validmind/datasets/llm/agent_dataset.py +0 -0
  37. {validmind-2.13.14 → validmind-2.14.0}/validmind/datasets/llm/rag/__init__.py +0 -0
  38. {validmind-2.13.14 → validmind-2.14.0}/validmind/datasets/llm/rag/datasets/rfp_existing_questions_client_1.csv +0 -0
  39. {validmind-2.13.14 → validmind-2.14.0}/validmind/datasets/llm/rag/datasets/rfp_existing_questions_client_2.csv +0 -0
  40. {validmind-2.13.14 → validmind-2.14.0}/validmind/datasets/llm/rag/datasets/rfp_existing_questions_client_3.csv +0 -0
  41. {validmind-2.13.14 → validmind-2.14.0}/validmind/datasets/llm/rag/datasets/rfp_existing_questions_client_4.csv +0 -0
  42. {validmind-2.13.14 → validmind-2.14.0}/validmind/datasets/llm/rag/datasets/rfp_existing_questions_client_5.csv +0 -0
  43. {validmind-2.13.14 → validmind-2.14.0}/validmind/datasets/llm/rag/rfp.py +0 -0
  44. {validmind-2.13.14 → validmind-2.14.0}/validmind/datasets/nlp/__init__.py +0 -0
  45. {validmind-2.13.14 → validmind-2.14.0}/validmind/datasets/nlp/cnn_dailymail.py +0 -0
  46. {validmind-2.13.14 → validmind-2.14.0}/validmind/datasets/nlp/datasets/Covid_19.csv +0 -0
  47. {validmind-2.13.14 → validmind-2.14.0}/validmind/datasets/nlp/datasets/cnn_dailymail_100_with_predictions.csv +0 -0
  48. {validmind-2.13.14 → validmind-2.14.0}/validmind/datasets/nlp/datasets/cnn_dailymail_500_with_predictions.csv +0 -0
  49. {validmind-2.13.14 → validmind-2.14.0}/validmind/datasets/nlp/datasets/sentiments_with_predictions.csv +0 -0
  50. {validmind-2.13.14 → validmind-2.14.0}/validmind/datasets/nlp/twitter_covid_19.py +0 -0
  51. {validmind-2.13.14 → validmind-2.14.0}/validmind/datasets/regression/__init__.py +0 -0
  52. {validmind-2.13.14 → validmind-2.14.0}/validmind/datasets/regression/california_housing.py +0 -0
  53. {validmind-2.13.14 → validmind-2.14.0}/validmind/datasets/regression/datasets/california_housing.csv +0 -0
  54. {validmind-2.13.14 → validmind-2.14.0}/validmind/datasets/regression/datasets/fred/CPIAUCSL.csv +0 -0
  55. {validmind-2.13.14 → validmind-2.14.0}/validmind/datasets/regression/datasets/fred/CSUSHPISA.csv +0 -0
  56. {validmind-2.13.14 → validmind-2.14.0}/validmind/datasets/regression/datasets/fred/DRSFRMACBS.csv +0 -0
  57. {validmind-2.13.14 → validmind-2.14.0}/validmind/datasets/regression/datasets/fred/FEDFUNDS.csv +0 -0
  58. {validmind-2.13.14 → validmind-2.14.0}/validmind/datasets/regression/datasets/fred/GDP.csv +0 -0
  59. {validmind-2.13.14 → validmind-2.14.0}/validmind/datasets/regression/datasets/fred/GDPC1.csv +0 -0
  60. {validmind-2.13.14 → validmind-2.14.0}/validmind/datasets/regression/datasets/fred/GS10.csv +0 -0
  61. {validmind-2.13.14 → validmind-2.14.0}/validmind/datasets/regression/datasets/fred/GS3.csv +0 -0
  62. {validmind-2.13.14 → validmind-2.14.0}/validmind/datasets/regression/datasets/fred/GS5.csv +0 -0
  63. {validmind-2.13.14 → validmind-2.14.0}/validmind/datasets/regression/datasets/fred/MORTGAGE30US.csv +0 -0
  64. {validmind-2.13.14 → validmind-2.14.0}/validmind/datasets/regression/datasets/fred/UNRATE.csv +0 -0
  65. {validmind-2.13.14 → validmind-2.14.0}/validmind/datasets/regression/datasets/fred_loan_rates.csv +0 -0
  66. {validmind-2.13.14 → validmind-2.14.0}/validmind/datasets/regression/datasets/fred_loan_rates_test_1.csv +0 -0
  67. {validmind-2.13.14 → validmind-2.14.0}/validmind/datasets/regression/datasets/fred_loan_rates_test_2.csv +0 -0
  68. {validmind-2.13.14 → validmind-2.14.0}/validmind/datasets/regression/datasets/fred_loan_rates_test_3.csv +0 -0
  69. {validmind-2.13.14 → validmind-2.14.0}/validmind/datasets/regression/datasets/fred_loan_rates_test_4.csv +0 -0
  70. {validmind-2.13.14 → validmind-2.14.0}/validmind/datasets/regression/datasets/fred_loan_rates_test_5.csv +0 -0
  71. {validmind-2.13.14 → validmind-2.14.0}/validmind/datasets/regression/datasets/leanding_club_loan_rates.csv +0 -0
  72. {validmind-2.13.14 → validmind-2.14.0}/validmind/datasets/regression/fred.py +0 -0
  73. {validmind-2.13.14 → validmind-2.14.0}/validmind/datasets/regression/fred_timeseries.py +0 -0
  74. {validmind-2.13.14 → validmind-2.14.0}/validmind/datasets/regression/generate_california_housing_csv.py +0 -0
  75. {validmind-2.13.14 → validmind-2.14.0}/validmind/datasets/regression/lending_club.py +0 -0
  76. {validmind-2.13.14 → validmind-2.14.0}/validmind/errors.py +0 -0
  77. {validmind-2.13.14 → validmind-2.14.0}/validmind/experimental/__init__.py +0 -0
  78. {validmind-2.13.14 → validmind-2.14.0}/validmind/experimental/agents.py +0 -0
  79. {validmind-2.13.14 → validmind-2.14.0}/validmind/html_templates/__init__.py +0 -0
  80. {validmind-2.13.14 → validmind-2.14.0}/validmind/html_templates/content_blocks.py +0 -0
  81. {validmind-2.13.14 → validmind-2.14.0}/validmind/input_registry.py +0 -0
  82. {validmind-2.13.14 → validmind-2.14.0}/validmind/logging.py +0 -0
  83. {validmind-2.13.14 → validmind-2.14.0}/validmind/models/__init__.py +0 -0
  84. {validmind-2.13.14 → validmind-2.14.0}/validmind/models/foundation.py +0 -0
  85. {validmind-2.13.14 → validmind-2.14.0}/validmind/models/function.py +0 -0
  86. {validmind-2.13.14 → validmind-2.14.0}/validmind/models/huggingface.py +0 -0
  87. {validmind-2.13.14 → validmind-2.14.0}/validmind/models/metadata.py +0 -0
  88. {validmind-2.13.14 → validmind-2.14.0}/validmind/models/pipeline.py +0 -0
  89. {validmind-2.13.14 → validmind-2.14.0}/validmind/models/pytorch.py +0 -0
  90. {validmind-2.13.14 → validmind-2.14.0}/validmind/models/r_model.py +0 -0
  91. {validmind-2.13.14 → validmind-2.14.0}/validmind/models/sklearn.py +0 -0
  92. {validmind-2.13.14 → validmind-2.14.0}/validmind/oidc_device.py +0 -0
  93. {validmind-2.13.14 → validmind-2.14.0}/validmind/scorers/__init__.py +0 -0
  94. {validmind-2.13.14 → validmind-2.14.0}/validmind/scorers/classification/AbsoluteError.py +0 -0
  95. {validmind-2.13.14 → validmind-2.14.0}/validmind/scorers/classification/BrierScore.py +0 -0
  96. {validmind-2.13.14 → validmind-2.14.0}/validmind/scorers/classification/CalibrationError.py +0 -0
  97. {validmind-2.13.14 → validmind-2.14.0}/validmind/scorers/classification/ClassBalance.py +0 -0
  98. {validmind-2.13.14 → validmind-2.14.0}/validmind/scorers/classification/Confidence.py +0 -0
  99. {validmind-2.13.14 → validmind-2.14.0}/validmind/scorers/classification/Correctness.py +0 -0
  100. {validmind-2.13.14 → validmind-2.14.0}/validmind/scorers/classification/LogLoss.py +0 -0
  101. {validmind-2.13.14 → validmind-2.14.0}/validmind/scorers/classification/OutlierScore.py +0 -0
  102. {validmind-2.13.14 → validmind-2.14.0}/validmind/scorers/classification/ProbabilityError.py +0 -0
  103. {validmind-2.13.14 → validmind-2.14.0}/validmind/scorers/classification/Uncertainty.py +0 -0
  104. {validmind-2.13.14 → validmind-2.14.0}/validmind/scorers/classification/__init__.py +0 -0
  105. {validmind-2.13.14 → validmind-2.14.0}/validmind/scorers/llm/deepeval/AnswerRelevancy.py +0 -0
  106. {validmind-2.13.14 → validmind-2.14.0}/validmind/scorers/llm/deepeval/ArgumentCorrectness.py +0 -0
  107. {validmind-2.13.14 → validmind-2.14.0}/validmind/scorers/llm/deepeval/Bias.py +0 -0
  108. {validmind-2.13.14 → validmind-2.14.0}/validmind/scorers/llm/deepeval/ContextualPrecision.py +0 -0
  109. {validmind-2.13.14 → validmind-2.14.0}/validmind/scorers/llm/deepeval/ContextualRecall.py +0 -0
  110. {validmind-2.13.14 → validmind-2.14.0}/validmind/scorers/llm/deepeval/ContextualRelevancy.py +0 -0
  111. {validmind-2.13.14 → validmind-2.14.0}/validmind/scorers/llm/deepeval/Faithfulness.py +0 -0
  112. {validmind-2.13.14 → validmind-2.14.0}/validmind/scorers/llm/deepeval/GEval.py +0 -0
  113. {validmind-2.13.14 → validmind-2.14.0}/validmind/scorers/llm/deepeval/Hallucination.py +0 -0
  114. {validmind-2.13.14 → validmind-2.14.0}/validmind/scorers/llm/deepeval/PlanAdherence.py +0 -0
  115. {validmind-2.13.14 → validmind-2.14.0}/validmind/scorers/llm/deepeval/PlanQuality.py +0 -0
  116. {validmind-2.13.14 → validmind-2.14.0}/validmind/scorers/llm/deepeval/Summarization.py +0 -0
  117. {validmind-2.13.14 → validmind-2.14.0}/validmind/scorers/llm/deepeval/TaskCompletion.py +0 -0
  118. {validmind-2.13.14 → validmind-2.14.0}/validmind/scorers/llm/deepeval/ToolCorrectness.py +0 -0
  119. {validmind-2.13.14 → validmind-2.14.0}/validmind/scorers/llm/deepeval/__init__.py +0 -0
  120. {validmind-2.13.14 → validmind-2.14.0}/validmind/template.py +0 -0
  121. {validmind-2.13.14 → validmind-2.14.0}/validmind/test_suites/__init__.py +0 -0
  122. {validmind-2.13.14 → validmind-2.14.0}/validmind/test_suites/classifier.py +0 -0
  123. {validmind-2.13.14 → validmind-2.14.0}/validmind/test_suites/cluster.py +0 -0
  124. {validmind-2.13.14 → validmind-2.14.0}/validmind/test_suites/embeddings.py +0 -0
  125. {validmind-2.13.14 → validmind-2.14.0}/validmind/test_suites/llm.py +0 -0
  126. {validmind-2.13.14 → validmind-2.14.0}/validmind/test_suites/nlp.py +0 -0
  127. {validmind-2.13.14 → validmind-2.14.0}/validmind/test_suites/parameters_optimization.py +0 -0
  128. {validmind-2.13.14 → validmind-2.14.0}/validmind/test_suites/regression.py +0 -0
  129. {validmind-2.13.14 → validmind-2.14.0}/validmind/test_suites/statsmodels_timeseries.py +0 -0
  130. {validmind-2.13.14 → validmind-2.14.0}/validmind/test_suites/summarization.py +0 -0
  131. {validmind-2.13.14 → validmind-2.14.0}/validmind/test_suites/tabular_datasets.py +0 -0
  132. {validmind-2.13.14 → validmind-2.14.0}/validmind/test_suites/text_data.py +0 -0
  133. {validmind-2.13.14 → validmind-2.14.0}/validmind/test_suites/time_series.py +0 -0
  134. {validmind-2.13.14 → validmind-2.14.0}/validmind/tests/__init__.py +0 -0
  135. {validmind-2.13.14 → validmind-2.14.0}/validmind/tests/__types__.py +0 -0
  136. {validmind-2.13.14 → validmind-2.14.0}/validmind/tests/_store.py +0 -0
  137. {validmind-2.13.14 → validmind-2.14.0}/validmind/tests/comparison.py +0 -0
  138. {validmind-2.13.14 → validmind-2.14.0}/validmind/tests/data_validation/ACFandPACFPlot.py +0 -0
  139. {validmind-2.13.14 → validmind-2.14.0}/validmind/tests/data_validation/ADF.py +0 -0
  140. {validmind-2.13.14 → validmind-2.14.0}/validmind/tests/data_validation/AutoAR.py +0 -0
  141. {validmind-2.13.14 → validmind-2.14.0}/validmind/tests/data_validation/AutoMA.py +0 -0
  142. {validmind-2.13.14 → validmind-2.14.0}/validmind/tests/data_validation/AutoStationarity.py +0 -0
  143. {validmind-2.13.14 → validmind-2.14.0}/validmind/tests/data_validation/BivariateScatterPlots.py +0 -0
  144. {validmind-2.13.14 → validmind-2.14.0}/validmind/tests/data_validation/BoxPierce.py +0 -0
  145. {validmind-2.13.14 → validmind-2.14.0}/validmind/tests/data_validation/ChiSquaredFeaturesTable.py +0 -0
  146. {validmind-2.13.14 → validmind-2.14.0}/validmind/tests/data_validation/ClassImbalance.py +0 -0
  147. {validmind-2.13.14 → validmind-2.14.0}/validmind/tests/data_validation/DatasetDescription.py +0 -0
  148. {validmind-2.13.14 → validmind-2.14.0}/validmind/tests/data_validation/DatasetSplit.py +0 -0
  149. {validmind-2.13.14 → validmind-2.14.0}/validmind/tests/data_validation/DescriptiveStatistics.py +0 -0
  150. {validmind-2.13.14 → validmind-2.14.0}/validmind/tests/data_validation/DickeyFullerGLS.py +0 -0
  151. {validmind-2.13.14 → validmind-2.14.0}/validmind/tests/data_validation/Duplicates.py +0 -0
  152. {validmind-2.13.14 → validmind-2.14.0}/validmind/tests/data_validation/EngleGrangerCoint.py +0 -0
  153. {validmind-2.13.14 → validmind-2.14.0}/validmind/tests/data_validation/FeatureTargetCorrelationPlot.py +0 -0
  154. {validmind-2.13.14 → validmind-2.14.0}/validmind/tests/data_validation/HighCardinality.py +0 -0
  155. {validmind-2.13.14 → validmind-2.14.0}/validmind/tests/data_validation/HighPearsonCorrelation.py +0 -0
  156. {validmind-2.13.14 → validmind-2.14.0}/validmind/tests/data_validation/IQROutliersBarPlot.py +0 -0
  157. {validmind-2.13.14 → validmind-2.14.0}/validmind/tests/data_validation/IQROutliersTable.py +0 -0
  158. {validmind-2.13.14 → validmind-2.14.0}/validmind/tests/data_validation/IsolationForestOutliers.py +0 -0
  159. {validmind-2.13.14 → validmind-2.14.0}/validmind/tests/data_validation/JarqueBera.py +0 -0
  160. {validmind-2.13.14 → validmind-2.14.0}/validmind/tests/data_validation/KPSS.py +0 -0
  161. {validmind-2.13.14 → validmind-2.14.0}/validmind/tests/data_validation/LJungBox.py +0 -0
  162. {validmind-2.13.14 → validmind-2.14.0}/validmind/tests/data_validation/LaggedCorrelationHeatmap.py +0 -0
  163. {validmind-2.13.14 → validmind-2.14.0}/validmind/tests/data_validation/MissingValues.py +0 -0
  164. {validmind-2.13.14 → validmind-2.14.0}/validmind/tests/data_validation/MissingValuesBarPlot.py +0 -0
  165. {validmind-2.13.14 → validmind-2.14.0}/validmind/tests/data_validation/MutualInformation.py +0 -0
  166. {validmind-2.13.14 → validmind-2.14.0}/validmind/tests/data_validation/PearsonCorrelationMatrix.py +0 -0
  167. {validmind-2.13.14 → validmind-2.14.0}/validmind/tests/data_validation/PhillipsPerronArch.py +0 -0
  168. {validmind-2.13.14 → validmind-2.14.0}/validmind/tests/data_validation/ProtectedClassesCombination.py +0 -0
  169. {validmind-2.13.14 → validmind-2.14.0}/validmind/tests/data_validation/ProtectedClassesDescription.py +0 -0
  170. {validmind-2.13.14 → validmind-2.14.0}/validmind/tests/data_validation/ProtectedClassesDisparity.py +0 -0
  171. {validmind-2.13.14 → validmind-2.14.0}/validmind/tests/data_validation/ProtectedClassesThresholdOptimizer.py +0 -0
  172. {validmind-2.13.14 → validmind-2.14.0}/validmind/tests/data_validation/RollingStatsPlot.py +0 -0
  173. {validmind-2.13.14 → validmind-2.14.0}/validmind/tests/data_validation/RunsTest.py +0 -0
  174. {validmind-2.13.14 → validmind-2.14.0}/validmind/tests/data_validation/ScatterPlot.py +0 -0
  175. {validmind-2.13.14 → validmind-2.14.0}/validmind/tests/data_validation/ScoreBandDefaultRates.py +0 -0
  176. {validmind-2.13.14 → validmind-2.14.0}/validmind/tests/data_validation/SeasonalDecompose.py +0 -0
  177. {validmind-2.13.14 → validmind-2.14.0}/validmind/tests/data_validation/ShapiroWilk.py +0 -0
  178. {validmind-2.13.14 → validmind-2.14.0}/validmind/tests/data_validation/Skewness.py +0 -0
  179. {validmind-2.13.14 → validmind-2.14.0}/validmind/tests/data_validation/SpreadPlot.py +0 -0
  180. {validmind-2.13.14 → validmind-2.14.0}/validmind/tests/data_validation/TabularCategoricalBarPlots.py +0 -0
  181. {validmind-2.13.14 → validmind-2.14.0}/validmind/tests/data_validation/TabularDateTimeHistograms.py +0 -0
  182. {validmind-2.13.14 → validmind-2.14.0}/validmind/tests/data_validation/TabularDescriptionTables.py +0 -0
  183. {validmind-2.13.14 → validmind-2.14.0}/validmind/tests/data_validation/TabularNumericalHistograms.py +0 -0
  184. {validmind-2.13.14 → validmind-2.14.0}/validmind/tests/data_validation/TargetRateBarPlots.py +0 -0
  185. {validmind-2.13.14 → validmind-2.14.0}/validmind/tests/data_validation/TimeSeriesDescription.py +0 -0
  186. {validmind-2.13.14 → validmind-2.14.0}/validmind/tests/data_validation/TimeSeriesDescriptiveStatistics.py +0 -0
  187. {validmind-2.13.14 → validmind-2.14.0}/validmind/tests/data_validation/TimeSeriesFrequency.py +0 -0
  188. {validmind-2.13.14 → validmind-2.14.0}/validmind/tests/data_validation/TimeSeriesHistogram.py +0 -0
  189. {validmind-2.13.14 → validmind-2.14.0}/validmind/tests/data_validation/TimeSeriesLinePlot.py +0 -0
  190. {validmind-2.13.14 → validmind-2.14.0}/validmind/tests/data_validation/TimeSeriesMissingValues.py +0 -0
  191. {validmind-2.13.14 → validmind-2.14.0}/validmind/tests/data_validation/TimeSeriesOutliers.py +0 -0
  192. {validmind-2.13.14 → validmind-2.14.0}/validmind/tests/data_validation/TooManyZeroValues.py +0 -0
  193. {validmind-2.13.14 → validmind-2.14.0}/validmind/tests/data_validation/UniqueRows.py +0 -0
  194. {validmind-2.13.14 → validmind-2.14.0}/validmind/tests/data_validation/WOEBinPlots.py +0 -0
  195. {validmind-2.13.14 → validmind-2.14.0}/validmind/tests/data_validation/WOEBinTable.py +0 -0
  196. {validmind-2.13.14 → validmind-2.14.0}/validmind/tests/data_validation/ZivotAndrewsArch.py +0 -0
  197. {validmind-2.13.14 → validmind-2.14.0}/validmind/tests/data_validation/__init__.py +0 -0
  198. {validmind-2.13.14 → validmind-2.14.0}/validmind/tests/data_validation/nlp/CommonWords.py +0 -0
  199. {validmind-2.13.14 → validmind-2.14.0}/validmind/tests/data_validation/nlp/Hashtags.py +0 -0
  200. {validmind-2.13.14 → validmind-2.14.0}/validmind/tests/data_validation/nlp/LanguageDetection.py +0 -0
  201. {validmind-2.13.14 → validmind-2.14.0}/validmind/tests/data_validation/nlp/Mentions.py +0 -0
  202. {validmind-2.13.14 → validmind-2.14.0}/validmind/tests/data_validation/nlp/PolarityAndSubjectivity.py +0 -0
  203. {validmind-2.13.14 → validmind-2.14.0}/validmind/tests/data_validation/nlp/Punctuations.py +0 -0
  204. {validmind-2.13.14 → validmind-2.14.0}/validmind/tests/data_validation/nlp/Sentiment.py +0 -0
  205. {validmind-2.13.14 → validmind-2.14.0}/validmind/tests/data_validation/nlp/StopWords.py +0 -0
  206. {validmind-2.13.14 → validmind-2.14.0}/validmind/tests/data_validation/nlp/TextDescription.py +0 -0
  207. {validmind-2.13.14 → validmind-2.14.0}/validmind/tests/data_validation/nlp/Toxicity.py +0 -0
  208. {validmind-2.13.14 → validmind-2.14.0}/validmind/tests/data_validation/nlp/__init__.py +0 -0
  209. {validmind-2.13.14 → validmind-2.14.0}/validmind/tests/model_validation/BertScore.py +0 -0
  210. {validmind-2.13.14 → validmind-2.14.0}/validmind/tests/model_validation/BleuScore.py +0 -0
  211. {validmind-2.13.14 → validmind-2.14.0}/validmind/tests/model_validation/ClusterSizeDistribution.py +0 -0
  212. {validmind-2.13.14 → validmind-2.14.0}/validmind/tests/model_validation/ContextualRecall.py +0 -0
  213. {validmind-2.13.14 → validmind-2.14.0}/validmind/tests/model_validation/FeaturesAUC.py +0 -0
  214. {validmind-2.13.14 → validmind-2.14.0}/validmind/tests/model_validation/MeteorScore.py +0 -0
  215. {validmind-2.13.14 → validmind-2.14.0}/validmind/tests/model_validation/ModelMetadata.py +0 -0
  216. {validmind-2.13.14 → validmind-2.14.0}/validmind/tests/model_validation/ModelPredictionResiduals.py +0 -0
  217. {validmind-2.13.14 → validmind-2.14.0}/validmind/tests/model_validation/RegardScore.py +0 -0
  218. {validmind-2.13.14 → validmind-2.14.0}/validmind/tests/model_validation/RegressionResidualsPlot.py +0 -0
  219. {validmind-2.13.14 → validmind-2.14.0}/validmind/tests/model_validation/RougeScore.py +0 -0
  220. {validmind-2.13.14 → validmind-2.14.0}/validmind/tests/model_validation/TimeSeriesPredictionWithCI.py +0 -0
  221. {validmind-2.13.14 → validmind-2.14.0}/validmind/tests/model_validation/TimeSeriesPredictionsPlot.py +0 -0
  222. {validmind-2.13.14 → validmind-2.14.0}/validmind/tests/model_validation/TimeSeriesR2SquareBySegments.py +0 -0
  223. {validmind-2.13.14 → validmind-2.14.0}/validmind/tests/model_validation/TokenDisparity.py +0 -0
  224. {validmind-2.13.14 → validmind-2.14.0}/validmind/tests/model_validation/ToxicityScore.py +0 -0
  225. {validmind-2.13.14 → validmind-2.14.0}/validmind/tests/model_validation/__init__.py +0 -0
  226. {validmind-2.13.14 → validmind-2.14.0}/validmind/tests/model_validation/embeddings/ClusterDistribution.py +0 -0
  227. {validmind-2.13.14 → validmind-2.14.0}/validmind/tests/model_validation/embeddings/CosineSimilarityComparison.py +0 -0
  228. {validmind-2.13.14 → validmind-2.14.0}/validmind/tests/model_validation/embeddings/CosineSimilarityDistribution.py +0 -0
  229. {validmind-2.13.14 → validmind-2.14.0}/validmind/tests/model_validation/embeddings/CosineSimilarityHeatmap.py +0 -0
  230. {validmind-2.13.14 → validmind-2.14.0}/validmind/tests/model_validation/embeddings/DescriptiveAnalytics.py +0 -0
  231. {validmind-2.13.14 → validmind-2.14.0}/validmind/tests/model_validation/embeddings/EmbeddingsVisualization2D.py +0 -0
  232. {validmind-2.13.14 → validmind-2.14.0}/validmind/tests/model_validation/embeddings/EuclideanDistanceComparison.py +0 -0
  233. {validmind-2.13.14 → validmind-2.14.0}/validmind/tests/model_validation/embeddings/EuclideanDistanceHeatmap.py +0 -0
  234. {validmind-2.13.14 → validmind-2.14.0}/validmind/tests/model_validation/embeddings/PCAComponentsPairwisePlots.py +0 -0
  235. {validmind-2.13.14 → validmind-2.14.0}/validmind/tests/model_validation/embeddings/StabilityAnalysisKeyword.py +0 -0
  236. {validmind-2.13.14 → validmind-2.14.0}/validmind/tests/model_validation/embeddings/StabilityAnalysisRandomNoise.py +0 -0
  237. {validmind-2.13.14 → validmind-2.14.0}/validmind/tests/model_validation/embeddings/StabilityAnalysisSynonyms.py +0 -0
  238. {validmind-2.13.14 → validmind-2.14.0}/validmind/tests/model_validation/embeddings/StabilityAnalysisTranslation.py +0 -0
  239. {validmind-2.13.14 → validmind-2.14.0}/validmind/tests/model_validation/embeddings/TSNEComponentsPairwisePlots.py +0 -0
  240. {validmind-2.13.14 → validmind-2.14.0}/validmind/tests/model_validation/embeddings/utils.py +0 -0
  241. {validmind-2.13.14 → validmind-2.14.0}/validmind/tests/model_validation/ragas/AnswerCorrectness.py +0 -0
  242. {validmind-2.13.14 → validmind-2.14.0}/validmind/tests/model_validation/ragas/AspectCritic.py +0 -0
  243. {validmind-2.13.14 → validmind-2.14.0}/validmind/tests/model_validation/ragas/ContextEntityRecall.py +0 -0
  244. {validmind-2.13.14 → validmind-2.14.0}/validmind/tests/model_validation/ragas/ContextPrecision.py +0 -0
  245. {validmind-2.13.14 → validmind-2.14.0}/validmind/tests/model_validation/ragas/ContextPrecisionWithoutReference.py +0 -0
  246. {validmind-2.13.14 → validmind-2.14.0}/validmind/tests/model_validation/ragas/ContextRecall.py +0 -0
  247. {validmind-2.13.14 → validmind-2.14.0}/validmind/tests/model_validation/ragas/Faithfulness.py +0 -0
  248. {validmind-2.13.14 → validmind-2.14.0}/validmind/tests/model_validation/ragas/NoiseSensitivity.py +0 -0
  249. {validmind-2.13.14 → validmind-2.14.0}/validmind/tests/model_validation/ragas/ResponseRelevancy.py +0 -0
  250. {validmind-2.13.14 → validmind-2.14.0}/validmind/tests/model_validation/ragas/SemanticSimilarity.py +0 -0
  251. {validmind-2.13.14 → validmind-2.14.0}/validmind/tests/model_validation/ragas/utils.py +0 -0
  252. {validmind-2.13.14 → validmind-2.14.0}/validmind/tests/model_validation/sklearn/AdjustedMutualInformation.py +0 -0
  253. {validmind-2.13.14 → validmind-2.14.0}/validmind/tests/model_validation/sklearn/AdjustedRandIndex.py +0 -0
  254. {validmind-2.13.14 → validmind-2.14.0}/validmind/tests/model_validation/sklearn/CalibrationCurve.py +0 -0
  255. {validmind-2.13.14 → validmind-2.14.0}/validmind/tests/model_validation/sklearn/ClassifierPerformance.py +0 -0
  256. {validmind-2.13.14 → validmind-2.14.0}/validmind/tests/model_validation/sklearn/ClassifierThresholdOptimization.py +0 -0
  257. {validmind-2.13.14 → validmind-2.14.0}/validmind/tests/model_validation/sklearn/ClusterCosineSimilarity.py +0 -0
  258. {validmind-2.13.14 → validmind-2.14.0}/validmind/tests/model_validation/sklearn/ClusterPerformanceMetrics.py +0 -0
  259. {validmind-2.13.14 → validmind-2.14.0}/validmind/tests/model_validation/sklearn/CompletenessScore.py +0 -0
  260. {validmind-2.13.14 → validmind-2.14.0}/validmind/tests/model_validation/sklearn/ConfusionMatrix.py +0 -0
  261. {validmind-2.13.14 → validmind-2.14.0}/validmind/tests/model_validation/sklearn/FeatureImportance.py +0 -0
  262. {validmind-2.13.14 → validmind-2.14.0}/validmind/tests/model_validation/sklearn/FowlkesMallowsScore.py +0 -0
  263. {validmind-2.13.14 → validmind-2.14.0}/validmind/tests/model_validation/sklearn/HomogeneityScore.py +0 -0
  264. {validmind-2.13.14 → validmind-2.14.0}/validmind/tests/model_validation/sklearn/HyperParametersTuning.py +0 -0
  265. {validmind-2.13.14 → validmind-2.14.0}/validmind/tests/model_validation/sklearn/KMeansClustersOptimization.py +0 -0
  266. {validmind-2.13.14 → validmind-2.14.0}/validmind/tests/model_validation/sklearn/MinimumAccuracy.py +0 -0
  267. {validmind-2.13.14 → validmind-2.14.0}/validmind/tests/model_validation/sklearn/MinimumF1Score.py +0 -0
  268. {validmind-2.13.14 → validmind-2.14.0}/validmind/tests/model_validation/sklearn/MinimumROCAUCScore.py +0 -0
  269. {validmind-2.13.14 → validmind-2.14.0}/validmind/tests/model_validation/sklearn/ModelParameters.py +0 -0
  270. {validmind-2.13.14 → validmind-2.14.0}/validmind/tests/model_validation/sklearn/ModelsPerformanceComparison.py +0 -0
  271. {validmind-2.13.14 → validmind-2.14.0}/validmind/tests/model_validation/sklearn/OverfitDiagnosis.py +0 -0
  272. {validmind-2.13.14 → validmind-2.14.0}/validmind/tests/model_validation/sklearn/PermutationFeatureImportance.py +0 -0
  273. {validmind-2.13.14 → validmind-2.14.0}/validmind/tests/model_validation/sklearn/PopulationStabilityIndex.py +0 -0
  274. {validmind-2.13.14 → validmind-2.14.0}/validmind/tests/model_validation/sklearn/PrecisionRecallCurve.py +0 -0
  275. {validmind-2.13.14 → validmind-2.14.0}/validmind/tests/model_validation/sklearn/ROCCurve.py +0 -0
  276. {validmind-2.13.14 → validmind-2.14.0}/validmind/tests/model_validation/sklearn/RegressionErrors.py +0 -0
  277. {validmind-2.13.14 → validmind-2.14.0}/validmind/tests/model_validation/sklearn/RegressionErrorsComparison.py +0 -0
  278. {validmind-2.13.14 → validmind-2.14.0}/validmind/tests/model_validation/sklearn/RegressionPerformance.py +0 -0
  279. {validmind-2.13.14 → validmind-2.14.0}/validmind/tests/model_validation/sklearn/RegressionR2Square.py +0 -0
  280. {validmind-2.13.14 → validmind-2.14.0}/validmind/tests/model_validation/sklearn/RegressionR2SquareComparison.py +0 -0
  281. {validmind-2.13.14 → validmind-2.14.0}/validmind/tests/model_validation/sklearn/RobustnessDiagnosis.py +0 -0
  282. {validmind-2.13.14 → validmind-2.14.0}/validmind/tests/model_validation/sklearn/SHAPGlobalImportance.py +0 -0
  283. {validmind-2.13.14 → validmind-2.14.0}/validmind/tests/model_validation/sklearn/ScoreProbabilityAlignment.py +0 -0
  284. {validmind-2.13.14 → validmind-2.14.0}/validmind/tests/model_validation/sklearn/SilhouettePlot.py +0 -0
  285. {validmind-2.13.14 → validmind-2.14.0}/validmind/tests/model_validation/sklearn/TrainingTestDegradation.py +0 -0
  286. {validmind-2.13.14 → validmind-2.14.0}/validmind/tests/model_validation/sklearn/VMeasure.py +0 -0
  287. {validmind-2.13.14 → validmind-2.14.0}/validmind/tests/model_validation/sklearn/WeakspotsDiagnosis.py +0 -0
  288. {validmind-2.13.14 → validmind-2.14.0}/validmind/tests/model_validation/sklearn/__init__.py +0 -0
  289. {validmind-2.13.14 → validmind-2.14.0}/validmind/tests/model_validation/sklearn/_diagnosis_metrics.py +0 -0
  290. {validmind-2.13.14 → validmind-2.14.0}/validmind/tests/model_validation/sklearn/_multiclass_proba.py +0 -0
  291. {validmind-2.13.14 → validmind-2.14.0}/validmind/tests/model_validation/statsmodels/AutoARIMA.py +0 -0
  292. {validmind-2.13.14 → validmind-2.14.0}/validmind/tests/model_validation/statsmodels/CumulativePredictionProbabilities.py +0 -0
  293. {validmind-2.13.14 → validmind-2.14.0}/validmind/tests/model_validation/statsmodels/DurbinWatsonTest.py +0 -0
  294. {validmind-2.13.14 → validmind-2.14.0}/validmind/tests/model_validation/statsmodels/GINITable.py +0 -0
  295. {validmind-2.13.14 → validmind-2.14.0}/validmind/tests/model_validation/statsmodels/KolmogorovSmirnov.py +0 -0
  296. {validmind-2.13.14 → validmind-2.14.0}/validmind/tests/model_validation/statsmodels/Lilliefors.py +0 -0
  297. {validmind-2.13.14 → validmind-2.14.0}/validmind/tests/model_validation/statsmodels/PredictionProbabilitiesHistogram.py +0 -0
  298. {validmind-2.13.14 → validmind-2.14.0}/validmind/tests/model_validation/statsmodels/RegressionCoeffs.py +0 -0
  299. {validmind-2.13.14 → validmind-2.14.0}/validmind/tests/model_validation/statsmodels/RegressionFeatureSignificance.py +0 -0
  300. {validmind-2.13.14 → validmind-2.14.0}/validmind/tests/model_validation/statsmodels/RegressionModelForecastPlot.py +0 -0
  301. {validmind-2.13.14 → validmind-2.14.0}/validmind/tests/model_validation/statsmodels/RegressionModelForecastPlotLevels.py +0 -0
  302. {validmind-2.13.14 → validmind-2.14.0}/validmind/tests/model_validation/statsmodels/RegressionModelSensitivityPlot.py +0 -0
  303. {validmind-2.13.14 → validmind-2.14.0}/validmind/tests/model_validation/statsmodels/RegressionModelSummary.py +0 -0
  304. {validmind-2.13.14 → validmind-2.14.0}/validmind/tests/model_validation/statsmodels/RegressionPermutationFeatureImportance.py +0 -0
  305. {validmind-2.13.14 → validmind-2.14.0}/validmind/tests/model_validation/statsmodels/ScorecardHistogram.py +0 -0
  306. {validmind-2.13.14 → validmind-2.14.0}/validmind/tests/model_validation/statsmodels/__init__.py +0 -0
  307. {validmind-2.13.14 → validmind-2.14.0}/validmind/tests/model_validation/statsmodels/statsutils.py +0 -0
  308. {validmind-2.13.14 → validmind-2.14.0}/validmind/tests/ongoing_monitoring/CalibrationCurveDrift.py +0 -0
  309. {validmind-2.13.14 → validmind-2.14.0}/validmind/tests/ongoing_monitoring/ClassDiscriminationDrift.py +0 -0
  310. {validmind-2.13.14 → validmind-2.14.0}/validmind/tests/ongoing_monitoring/ClassImbalanceDrift.py +0 -0
  311. {validmind-2.13.14 → validmind-2.14.0}/validmind/tests/ongoing_monitoring/ClassificationAccuracyDrift.py +0 -0
  312. {validmind-2.13.14 → validmind-2.14.0}/validmind/tests/ongoing_monitoring/ConfusionMatrixDrift.py +0 -0
  313. {validmind-2.13.14 → validmind-2.14.0}/validmind/tests/ongoing_monitoring/CumulativePredictionProbabilitiesDrift.py +0 -0
  314. {validmind-2.13.14 → validmind-2.14.0}/validmind/tests/ongoing_monitoring/FeatureDrift.py +0 -0
  315. {validmind-2.13.14 → validmind-2.14.0}/validmind/tests/ongoing_monitoring/PredictionAcrossEachFeature.py +0 -0
  316. {validmind-2.13.14 → validmind-2.14.0}/validmind/tests/ongoing_monitoring/PredictionCorrelation.py +0 -0
  317. {validmind-2.13.14 → validmind-2.14.0}/validmind/tests/ongoing_monitoring/PredictionProbabilitiesHistogramDrift.py +0 -0
  318. {validmind-2.13.14 → validmind-2.14.0}/validmind/tests/ongoing_monitoring/PredictionQuantilesAcrossFeatures.py +0 -0
  319. {validmind-2.13.14 → validmind-2.14.0}/validmind/tests/ongoing_monitoring/ROCCurveDrift.py +0 -0
  320. {validmind-2.13.14 → validmind-2.14.0}/validmind/tests/ongoing_monitoring/ScoreBandsDrift.py +0 -0
  321. {validmind-2.13.14 → validmind-2.14.0}/validmind/tests/ongoing_monitoring/ScorecardHistogramDrift.py +0 -0
  322. {validmind-2.13.14 → validmind-2.14.0}/validmind/tests/ongoing_monitoring/TargetPredictionDistributionPlot.py +0 -0
  323. {validmind-2.13.14 → validmind-2.14.0}/validmind/tests/plots/BoxPlot.py +0 -0
  324. {validmind-2.13.14 → validmind-2.14.0}/validmind/tests/plots/CorrelationHeatmap.py +0 -0
  325. {validmind-2.13.14 → validmind-2.14.0}/validmind/tests/plots/HistogramPlot.py +0 -0
  326. {validmind-2.13.14 → validmind-2.14.0}/validmind/tests/plots/ViolinPlot.py +0 -0
  327. {validmind-2.13.14 → validmind-2.14.0}/validmind/tests/plots/__init__.py +0 -0
  328. {validmind-2.13.14 → validmind-2.14.0}/validmind/tests/prompt_validation/Bias.py +0 -0
  329. {validmind-2.13.14 → validmind-2.14.0}/validmind/tests/prompt_validation/Clarity.py +0 -0
  330. {validmind-2.13.14 → validmind-2.14.0}/validmind/tests/prompt_validation/Conciseness.py +0 -0
  331. {validmind-2.13.14 → validmind-2.14.0}/validmind/tests/prompt_validation/Delimitation.py +0 -0
  332. {validmind-2.13.14 → validmind-2.14.0}/validmind/tests/prompt_validation/NegativeInstruction.py +0 -0
  333. {validmind-2.13.14 → validmind-2.14.0}/validmind/tests/prompt_validation/Robustness.py +0 -0
  334. {validmind-2.13.14 → validmind-2.14.0}/validmind/tests/prompt_validation/Specificity.py +0 -0
  335. {validmind-2.13.14 → validmind-2.14.0}/validmind/tests/prompt_validation/__init__.py +0 -0
  336. {validmind-2.13.14 → validmind-2.14.0}/validmind/tests/prompt_validation/ai_powered_test.py +0 -0
  337. {validmind-2.13.14 → validmind-2.14.0}/validmind/tests/run.py +0 -0
  338. {validmind-2.13.14 → validmind-2.14.0}/validmind/tests/stats/CorrelationAnalysis.py +0 -0
  339. {validmind-2.13.14 → validmind-2.14.0}/validmind/tests/stats/DescriptiveStats.py +0 -0
  340. {validmind-2.13.14 → validmind-2.14.0}/validmind/tests/stats/NormalityTests.py +0 -0
  341. {validmind-2.13.14 → validmind-2.14.0}/validmind/tests/stats/OutlierDetection.py +0 -0
  342. {validmind-2.13.14 → validmind-2.14.0}/validmind/tests/stats/__init__.py +0 -0
  343. {validmind-2.13.14 → validmind-2.14.0}/validmind/tests/test_providers.py +0 -0
  344. {validmind-2.13.14 → validmind-2.14.0}/validmind/tests/utils.py +0 -0
  345. {validmind-2.13.14 → validmind-2.14.0}/validmind/unit_metrics/__init__.py +0 -0
  346. {validmind-2.13.14 → validmind-2.14.0}/validmind/unit_metrics/classification/Accuracy.py +0 -0
  347. {validmind-2.13.14 → validmind-2.14.0}/validmind/unit_metrics/classification/F1.py +0 -0
  348. {validmind-2.13.14 → validmind-2.14.0}/validmind/unit_metrics/classification/Precision.py +0 -0
  349. {validmind-2.13.14 → validmind-2.14.0}/validmind/unit_metrics/classification/ROC_AUC.py +0 -0
  350. {validmind-2.13.14 → validmind-2.14.0}/validmind/unit_metrics/classification/Recall.py +0 -0
  351. {validmind-2.13.14 → validmind-2.14.0}/validmind/unit_metrics/regression/AdjustedRSquaredScore.py +0 -0
  352. {validmind-2.13.14 → validmind-2.14.0}/validmind/unit_metrics/regression/GiniCoefficient.py +0 -0
  353. {validmind-2.13.14 → validmind-2.14.0}/validmind/unit_metrics/regression/HuberLoss.py +0 -0
  354. {validmind-2.13.14 → validmind-2.14.0}/validmind/unit_metrics/regression/KolmogorovSmirnovStatistic.py +0 -0
  355. {validmind-2.13.14 → validmind-2.14.0}/validmind/unit_metrics/regression/MeanAbsoluteError.py +0 -0
  356. {validmind-2.13.14 → validmind-2.14.0}/validmind/unit_metrics/regression/MeanAbsolutePercentageError.py +0 -0
  357. {validmind-2.13.14 → validmind-2.14.0}/validmind/unit_metrics/regression/MeanBiasDeviation.py +0 -0
  358. {validmind-2.13.14 → validmind-2.14.0}/validmind/unit_metrics/regression/MeanSquaredError.py +0 -0
  359. {validmind-2.13.14 → validmind-2.14.0}/validmind/unit_metrics/regression/QuantileLoss.py +0 -0
  360. {validmind-2.13.14 → validmind-2.14.0}/validmind/unit_metrics/regression/RSquaredScore.py +0 -0
  361. {validmind-2.13.14 → validmind-2.14.0}/validmind/unit_metrics/regression/RootMeanSquaredError.py +0 -0
  362. {validmind-2.13.14 → validmind-2.14.0}/validmind/vm_models/__init__.py +0 -0
  363. {validmind-2.13.14 → validmind-2.14.0}/validmind/vm_models/dataset/__init__.py +0 -0
  364. {validmind-2.13.14 → validmind-2.14.0}/validmind/vm_models/dataset/dataset.py +0 -0
  365. {validmind-2.13.14 → validmind-2.14.0}/validmind/vm_models/dataset/utils.py +0 -0
  366. {validmind-2.13.14 → validmind-2.14.0}/validmind/vm_models/figure.py +0 -0
  367. {validmind-2.13.14 → validmind-2.14.0}/validmind/vm_models/html_progress.py +0 -0
  368. {validmind-2.13.14 → validmind-2.14.0}/validmind/vm_models/input.py +0 -0
  369. {validmind-2.13.14 → validmind-2.14.0}/validmind/vm_models/model.py +0 -0
  370. {validmind-2.13.14 → validmind-2.14.0}/validmind/vm_models/result/__init__.py +0 -0
  371. {validmind-2.13.14 → validmind-2.14.0}/validmind/vm_models/result/result.jinja +0 -0
  372. {validmind-2.13.14 → validmind-2.14.0}/validmind/vm_models/result/utils.py +0 -0
  373. {validmind-2.13.14 → validmind-2.14.0}/validmind/vm_models/test_suite/__init__.py +0 -0
  374. {validmind-2.13.14 → validmind-2.14.0}/validmind/vm_models/test_suite/runner.py +0 -0
  375. {validmind-2.13.14 → validmind-2.14.0}/validmind/vm_models/test_suite/summary.py +0 -0
  376. {validmind-2.13.14 → validmind-2.14.0}/validmind/vm_models/test_suite/test.py +0 -0
  377. {validmind-2.13.14 → validmind-2.14.0}/validmind/vm_models/test_suite/test_suite.py +0 -0
  378. {validmind-2.13.14 → validmind-2.14.0}/validmind/vm_models/text_generation_summary.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: validmind
3
- Version: 2.13.14
3
+ Version: 2.14.0
4
4
  Summary: ValidMind Library
5
5
  Author-email: Andres Rodriguez <andres@validmind.ai>, Juan Martinez <juan@validmind.ai>, Anil Sorathiya <anil@validmind.ai>, Luis Pallares <luis@validmind.ai>, John Walz <john@validmind.ai>
6
6
  License: DUAL LICENSE NOTICE
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "validmind"
3
- version = "2.13.14"
3
+ version = "2.14.0"
4
4
  description = "ValidMind Library"
5
5
  readme = "README.pypi.md"
6
6
  requires-python = ">=3.9,<3.15"
@@ -195,3 +195,6 @@ profile = "black"
195
195
 
196
196
  [tool.uv]
197
197
  exclude-newer = "7 days"
198
+ exclude-newer-package = { certifi = "2026-10-21" }
199
+ # Security floor: certifi>=2026.10.19 distrusts compromised eMudhra intermediates (Mozilla bug 2083449)
200
+ constraint-dependencies = ["certifi>=2026.10.19"]
@@ -0,0 +1 @@
1
+ __version__ = "2.14.0"
@@ -19,6 +19,7 @@ from urllib.parse import urlencode, urljoin
19
19
  import aiohttp
20
20
  import requests
21
21
  from aiohttp import FormData
22
+ from packaging.version import Version
22
23
 
23
24
  from .__version__ import __version__
24
25
  from .client_config import client_config
@@ -247,6 +248,46 @@ def _ping() -> Dict[str, Any]:
247
248
  f"📁 Document Type: {client_config.document_type}"
248
249
  )
249
250
 
251
+ # Every successful ping, not only the first: reconnecting or switching
252
+ # models must still warn.
253
+ _log_ping_messages(client_info.get("messages"))
254
+
255
+
256
+ def _ping_message_applies(message: Dict[str, Any]) -> bool:
257
+ """Whether a /ping message targets this library version.
258
+
259
+ ``if_client_version_lte`` missing or null means every version. Uses
260
+ ``packaging.version`` rather than ``utils.parse_version``, which drops
261
+ pre- and post-release parts.
262
+ """
263
+ cutoff = message.get("if_client_version_lte")
264
+ if cutoff is None:
265
+ return True
266
+ return Version(__version__) <= Version(str(cutoff))
267
+
268
+
269
+ def _log_ping_messages(messages: Any) -> None:
270
+ """Log the platform messages returned by /ping as warnings, one line each.
271
+
272
+ Parsed defensively: a missing or malformed ``messages`` value, a bad entry
273
+ or an unparseable version cutoff is skipped quietly and never fails
274
+ ``vm.init()``. ``type``, ``severity`` and ``action`` aren't interpreted.
275
+ """
276
+ if not isinstance(messages, list):
277
+ return
278
+
279
+ for message in messages:
280
+ try:
281
+ text = message.get("message") if isinstance(message, dict) else None
282
+ if not isinstance(text, str) or not text.strip():
283
+ logger.debug(f"Ignoring malformed /ping message: {message!r}")
284
+ continue
285
+ if not _ping_message_applies(message):
286
+ continue
287
+ logger.warning(" ".join(text.split()))
288
+ except Exception:
289
+ logger.debug(f"Ignoring malformed /ping message: {message!r}")
290
+
250
291
 
251
292
  def _refresh_oidc_from_cache(
252
293
  issuer: str,
@@ -103,7 +103,9 @@ def test(func_or_id: Union[Callable[..., Any], str, None]) -> Callable[[F], F]:
103
103
 
104
104
  The function should return one of the following types:
105
105
 
106
- - Table: Either a list of dictionaries or a pandas DataFrame
106
+ - Table: A list of dictionaries, a pandas DataFrame, or a pandas Styler
107
+ (see `validmind.vm_models.result.ResultTable` for how cell styles are
108
+ preserved)
107
109
  - Plot: Either a matplotlib figure or a plotly figure
108
110
  - Scalar: A single number (int or float)
109
111
  - Boolean: A single boolean value indicating whether the test passed or failed
@@ -206,7 +208,9 @@ def scorer(func_or_id: Union[Callable[..., Any], str, None] = None) -> Callable[
206
208
 
207
209
  The function should return one of the following types:
208
210
 
209
- - Table: Either a list of dictionaries or a pandas DataFrame
211
+ - Table: A list of dictionaries, a pandas DataFrame, or a pandas Styler
212
+ (see `validmind.vm_models.result.ResultTable` for how cell styles are
213
+ preserved)
210
214
  - Plot: Either a matplotlib figure or a plotly figure
211
215
  - Scalar: A single number (int or float)
212
216
  - Boolean: A single boolean value indicating whether the test passed or failed
@@ -21,6 +21,7 @@ from typing import (
21
21
  from uuid import uuid4
22
22
 
23
23
  import pandas as pd
24
+ from pandas.io.formats.style import Styler
24
25
 
25
26
  from ..errors import LoadTestError, MissingDependencyError
26
27
  from ..html_templates.content_blocks import test_content_block_html
@@ -49,7 +50,7 @@ except ImportError:
49
50
  FIGURE_TYPES = tuple(
50
51
  item for item in (Figure, MatplotlibFigure, PlotlyFigure) if inspect.isclass(item)
51
52
  )
52
- TABLE_TYPES = (pd.DataFrame, ResultTable)
53
+ TABLE_TYPES = (pd.DataFrame, Styler, ResultTable)
53
54
  GENERIC_TABLE_TYPES = (list, dict)
54
55
 
55
56
 
@@ -450,7 +451,7 @@ def describe_test(
450
451
  html = test_content_block_html.format(
451
452
  test_id=test_id,
452
453
  uuid=str(uuid4()),
453
- title=f'{details["Name"]}',
454
+ title=f"{details['Name']}",
454
455
  description=md_to_html(details["Description"].strip()),
455
456
  required_inputs=", ".join(details["Required Inputs"] or ["None"]),
456
457
  params_table="\n".join(
@@ -8,6 +8,7 @@ from uuid import uuid4
8
8
 
9
9
  import numpy as np
10
10
  import pandas as pd
11
+ from pandas.io.formats.style import Styler
11
12
 
12
13
  from validmind.utils import is_html, md_to_html
13
14
  from validmind.vm_models.figure import (
@@ -102,7 +103,48 @@ class FigureOutputHandler(OutputHandler):
102
103
 
103
104
  class TableOutputHandler(OutputHandler):
104
105
  def can_handle(self, item: Any) -> bool:
105
- return isinstance(item, (list, pd.DataFrame, dict, ResultTable, tuple))
106
+ return isinstance(item, (list, pd.DataFrame, Styler, dict, ResultTable, tuple))
107
+
108
+ def _convert_styler(self, styler: Styler) -> pd.DataFrame:
109
+ """Convert a pandas Styler to a DataFrame with portable cell styles."""
110
+ styler._compute()
111
+
112
+ # Round while still numeric: ResultTable's .round(4) is a no-op on the
113
+ # object dtype we need below, so it would otherwise silently skip the
114
+ # whole table. Formatters still see the original, unrounded value.
115
+ source = styler.data
116
+ df = source.round(4).astype(object)
117
+ display_funcs = getattr(styler, "_display_funcs", {})
118
+
119
+ style_key_map = {
120
+ "background": "bgcolor",
121
+ "background-color": "bgcolor",
122
+ "color": "color",
123
+ "font-weight": "fontWeight",
124
+ "text-align": "textAlign",
125
+ }
126
+
127
+ for (row_idx, col_idx), styles in styler.ctx.items():
128
+ cell_styles = {}
129
+
130
+ for css_property, css_value in styles:
131
+ style_key = style_key_map.get(css_property.lower())
132
+ if style_key and css_value:
133
+ cell_styles[style_key] = css_value
134
+
135
+ if not cell_styles:
136
+ continue
137
+
138
+ formatter = display_funcs.get((row_idx, col_idx))
139
+ value = (
140
+ formatter(source.iat[row_idx, col_idx])
141
+ if formatter
142
+ else df.iat[row_idx, col_idx]
143
+ )
144
+
145
+ df.iat[row_idx, col_idx] = {"value": value, **cell_styles}
146
+
147
+ return df
106
148
 
107
149
  def _convert_simple_type(self, data: Any) -> pd.DataFrame:
108
150
  """Convert a simple data type to a DataFrame."""
@@ -135,6 +177,8 @@ class TableOutputHandler(OutputHandler):
135
177
  # Handle special cases by type
136
178
  if isinstance(table_data, pd.DataFrame):
137
179
  return table_data
180
+ elif isinstance(table_data, Styler):
181
+ return self._convert_styler(table_data)
138
182
  elif isinstance(table_data, (dict, str, type(None))):
139
183
  return self._convert_simple_type(table_data)
140
184
  elif isinstance(table_data, tuple):
@@ -150,7 +194,13 @@ class TableOutputHandler(OutputHandler):
150
194
  def process(
151
195
  self,
152
196
  item: Union[
153
- List[Dict[str, Any]], pd.DataFrame, Dict[str, Any], ResultTable, str, tuple
197
+ List[Dict[str, Any]],
198
+ pd.DataFrame,
199
+ Styler,
200
+ Dict[str, Any],
201
+ ResultTable,
202
+ str,
203
+ tuple,
154
204
  ],
155
205
  result: TestResult,
156
206
  ) -> None:
@@ -259,17 +259,19 @@ def format_records(df: pd.DataFrame) -> List[Dict[str, Any]]:
259
259
 
260
260
  We do this for display purposes before sending data to ValidMind. Rules:
261
261
 
262
- - Check if we are rendering "big" numbers greater than 10 or just numbers between 0 and 1
263
- - If the column's smallest number has more decimals 6, use that number's precision
264
- so we can avoid rendering a 0 instead
265
- - If the column's smallest number has less decimals than 6, use 6 decimal places
262
+ - Non-numeric columns (text in any dtype, datetimes, categoricals) are left unchanged
263
+ - Rounding is decided by the column's smallest non-zero number
264
+ - If it is 10 or greater, round to 2 decimal places
265
+ - If it has more than 4 decimals, round to 4 decimal places
266
+ - Otherwise round to that number's own decimal places
267
+ - If that number is missing or infinite, round to 4 decimal places
266
268
  """
267
269
  for col in df.columns:
268
- if df[col].dtype == "object":
270
+ if not pd.api.types.is_numeric_dtype(df[col]):
269
271
  continue
270
272
  not_zero = df[col][df[col] != 0]
271
273
  min_number = not_zero.min()
272
- if math.isnan(min_number) or math.isinf(min_number):
274
+ if pd.isna(min_number) or math.isinf(min_number):
273
275
  df[col] = df[col].round(DEFAULT_SMALL_NUMBER_DECIMALS)
274
276
  continue
275
277
 
@@ -6,6 +6,7 @@
6
6
  HTML renderer for ValidMind components that preserves state in saved notebooks.
7
7
  """
8
8
 
9
+ import html
9
10
  import json
10
11
  import uuid
11
12
  from typing import Any, Dict, List, Optional, Union
@@ -19,6 +20,41 @@ class StatefulHTMLRenderer:
19
20
  # Plotly.js CDN URL - using a stable version
20
21
  PLOTLY_CDN_URL = "https://cdn.plot.ly/plotly-2.27.0.min.js"
21
22
 
23
+ @staticmethod
24
+ def _render_table_cell(value: Any) -> Any:
25
+ """Render structured table cells as HTML for notebook display."""
26
+ if not isinstance(value, dict) or "value" not in value:
27
+ # pandas requires formatters to return strings. A column that holds
28
+ # a styled cell is object dtype, so there is no column-wide float
29
+ # padding to match; plain cells here render with str() on purpose.
30
+ return str(value)
31
+
32
+ css_properties = {
33
+ "bgcolor": "background-color",
34
+ "backgroundColor": "background-color",
35
+ "color": "color",
36
+ "fontWeight": "font-weight",
37
+ "textAlign": "text-align",
38
+ }
39
+ styles = []
40
+
41
+ for key, css_property in css_properties.items():
42
+ css_value = value.get(key)
43
+ if css_value is not None:
44
+ styles.append(f"{css_property}: {html.escape(str(css_value))}")
45
+
46
+ styles.extend(
47
+ [
48
+ "display: block",
49
+ "margin: -8px",
50
+ "padding: 8px",
51
+ "min-height: 22px",
52
+ ]
53
+ )
54
+
55
+ cell_value = html.escape(str(value["value"]))
56
+ return f'<div style="{"; ".join(styles)}">{cell_value}</div>'
57
+
22
58
  @staticmethod
23
59
  def _get_progress_css() -> str:
24
60
  """Get the CSS styles required for progress bars."""
@@ -150,11 +186,20 @@ class StatefulHTMLRenderer:
150
186
 
151
187
  title_html = f"<h4>{title}</h4>" if title else ""
152
188
 
189
+ # Only columns holding a styled cell get the formatter, so plain
190
+ # columns keep pandas' default rendering exactly as before.
191
+ formatters = {
192
+ column: StatefulHTMLRenderer._render_table_cell
193
+ for position, column in enumerate(data.columns)
194
+ if any(isinstance(cell, dict) for cell in data.iloc[:, position])
195
+ }
196
+
153
197
  # Convert DataFrame to HTML with styling
154
198
  table_html = data.to_html(
155
199
  classes="vm-table table table-striped table-hover",
156
200
  table_id=table_id,
157
201
  escape=False,
202
+ formatters=formatters,
158
203
  index=False,
159
204
  )
160
205
 
@@ -206,7 +251,7 @@ class StatefulHTMLRenderer:
206
251
 
207
252
  return f"""
208
253
  <div class="vm-accordion" id="{accordion_id}">
209
- {''.join(accordion_items)}
254
+ {"".join(accordion_items)}
210
255
  </div>
211
256
 
212
257
  <script>
@@ -293,7 +338,7 @@ class StatefulHTMLRenderer:
293
338
 
294
339
  <script>
295
340
  // Create global update functions for this progress bar
296
- window.updateProgress_{bar_id.replace('-', '_')} = function(value, description) {{
341
+ window.updateProgress_{bar_id.replace("-", "_")} = function(value, description) {{
297
342
  var maxValue = {max_value};
298
343
  var percentage = (value / maxValue * 100);
299
344
 
@@ -306,7 +351,7 @@ class StatefulHTMLRenderer:
306
351
  if (descElement && description) descElement.innerHTML = description;
307
352
  }};
308
353
 
309
- window.completeProgress_{bar_id.replace('-', '_')} = function() {{
354
+ window.completeProgress_{bar_id.replace("-", "_")} = function() {{
310
355
  var descElement = document.getElementById('{bar_id}-description');
311
356
  if (descElement) descElement.innerHTML = 'Test suite complete!';
312
357
  }};
@@ -168,7 +168,7 @@ def scan_df(df: pd.DataFrame) -> bool:
168
168
  return True
169
169
 
170
170
  # Scan all string/object columns
171
- columns = [col for col in df.columns if df[col].dtype == "object"]
171
+ columns = [col for col in df.columns if pd.api.types.is_string_dtype(df[col].dtype)]
172
172
 
173
173
  if not columns:
174
174
  return True
@@ -113,6 +113,22 @@ class ResultTable:
113
113
  title: Optional caption/title for the table. When set, it is sent to
114
114
  the platform as ``metadata.caption`` and rendered by the document
115
115
  media registry as ``Table N. <title>``.
116
+
117
+ Styled cells
118
+ ------------
119
+ A cell is normally a plain scalar. Tests that return a ``pandas.Styler``
120
+ produce *styled* cells for the subset of cells that have supported CSS
121
+ applied; those cells are dicts of the form::
122
+
123
+ {"value": <display value>, "bgcolor": ..., "color": ...,
124
+ "fontWeight": ..., "textAlign": ...}
125
+
126
+ Only the keys that were actually styled are present, so a single column may
127
+ mix scalars and dicts. ``value`` is the Styler's formatted display value
128
+ when a formatter is registered, and the original value otherwise. The CSS
129
+ values are passed through verbatim from the test author. This schema is
130
+ shared with the platform, which renders it in the documentation UI and in
131
+ HTML/DOCX exports. See ``validmind.tests.output.TableOutputHandler``.
116
132
  """
117
133
 
118
134
  data: Union[List[Any], pd.DataFrame]
@@ -1 +0,0 @@
1
- __version__ = "2.13.14"
File without changes
File without changes
File without changes