validmind 2.10.1__tar.gz → 2.12.1__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 (382) hide show
  1. {validmind-2.10.1 → validmind-2.12.1}/PKG-INFO +10 -9
  2. {validmind-2.10.1 → validmind-2.12.1}/pyproject.toml +10 -9
  3. {validmind-2.10.1 → validmind-2.12.1}/validmind/__init__.py +6 -5
  4. validmind-2.12.1/validmind/__version__.py +1 -0
  5. {validmind-2.10.1 → validmind-2.12.1}/validmind/ai/test_descriptions.py +72 -21
  6. {validmind-2.10.1 → validmind-2.12.1}/validmind/ai/utils.py +2 -2
  7. {validmind-2.10.1 → validmind-2.12.1}/validmind/api_client.py +58 -22
  8. {validmind-2.10.1 → validmind-2.12.1}/validmind/client.py +2 -2
  9. {validmind-2.10.1 → validmind-2.12.1}/validmind/client_config.py +2 -2
  10. validmind-2.12.1/validmind/datasets/__init__.py +7 -0
  11. {validmind-2.10.1 → validmind-2.12.1}/validmind/datasets/classification/__init__.py +2 -2
  12. {validmind-2.10.1 → validmind-2.12.1}/validmind/datasets/classification/customer_churn.py +2 -2
  13. {validmind-2.10.1 → validmind-2.12.1}/validmind/datasets/classification/taiwan_credit.py +2 -2
  14. {validmind-2.10.1 → validmind-2.12.1}/validmind/datasets/cluster/digits.py +2 -2
  15. {validmind-2.10.1 → validmind-2.12.1}/validmind/datasets/credit_risk/__init__.py +2 -2
  16. {validmind-2.10.1 → validmind-2.12.1}/validmind/datasets/credit_risk/lending_club.py +10 -12
  17. {validmind-2.10.1 → validmind-2.12.1}/validmind/datasets/credit_risk/lending_club_bias.py +2 -2
  18. {validmind-2.10.1 → validmind-2.12.1}/validmind/datasets/llm/__init__.py +2 -2
  19. {validmind-2.10.1 → validmind-2.12.1}/validmind/datasets/llm/agent_dataset.py +113 -134
  20. {validmind-2.10.1 → validmind-2.12.1}/validmind/datasets/llm/rag/__init__.py +2 -2
  21. {validmind-2.10.1 → validmind-2.12.1}/validmind/datasets/llm/rag/rfp.py +2 -2
  22. {validmind-2.10.1 → validmind-2.12.1}/validmind/datasets/nlp/__init__.py +2 -2
  23. {validmind-2.10.1 → validmind-2.12.1}/validmind/datasets/nlp/cnn_dailymail.py +2 -2
  24. {validmind-2.10.1 → validmind-2.12.1}/validmind/datasets/nlp/twitter_covid_19.py +2 -2
  25. {validmind-2.10.1 → validmind-2.12.1}/validmind/datasets/regression/__init__.py +2 -2
  26. validmind-2.12.1/validmind/datasets/regression/california_housing.py +137 -0
  27. validmind-2.12.1/validmind/datasets/regression/datasets/california_housing.csv +20641 -0
  28. {validmind-2.10.1 → validmind-2.12.1}/validmind/datasets/regression/fred.py +2 -2
  29. {validmind-2.10.1 → validmind-2.12.1}/validmind/datasets/regression/fred_timeseries.py +2 -2
  30. validmind-2.12.1/validmind/datasets/regression/generate_california_housing_csv.py +64 -0
  31. {validmind-2.10.1 → validmind-2.12.1}/validmind/datasets/regression/lending_club.py +2 -2
  32. {validmind-2.10.1 → validmind-2.12.1}/validmind/errors.py +2 -2
  33. {validmind-2.10.1 → validmind-2.12.1}/validmind/experimental/agents.py +2 -2
  34. {validmind-2.10.1 → validmind-2.12.1}/validmind/html_templates/content_blocks.py +2 -2
  35. {validmind-2.10.1 → validmind-2.12.1}/validmind/input_registry.py +2 -2
  36. {validmind-2.10.1 → validmind-2.12.1}/validmind/logging.py +3 -62
  37. {validmind-2.10.1 → validmind-2.12.1}/validmind/models/__init__.py +2 -2
  38. {validmind-2.10.1 → validmind-2.12.1}/validmind/models/foundation.py +2 -2
  39. {validmind-2.10.1 → validmind-2.12.1}/validmind/models/function.py +2 -2
  40. {validmind-2.10.1 → validmind-2.12.1}/validmind/models/huggingface.py +2 -2
  41. {validmind-2.10.1 → validmind-2.12.1}/validmind/models/metadata.py +2 -2
  42. {validmind-2.10.1 → validmind-2.12.1}/validmind/models/pipeline.py +2 -2
  43. {validmind-2.10.1 → validmind-2.12.1}/validmind/models/pytorch.py +2 -2
  44. {validmind-2.10.1 → validmind-2.12.1}/validmind/models/r_model.py +2 -2
  45. {validmind-2.10.1 → validmind-2.12.1}/validmind/models/sklearn.py +2 -2
  46. {validmind-2.10.1/validmind/scorer → validmind-2.12.1/validmind/scorers}/__init__.py +3 -3
  47. {validmind-2.10.1/validmind/scorer → validmind-2.12.1/validmind/scorers}/classification/AbsoluteError.py +3 -4
  48. {validmind-2.10.1/validmind/scorer → validmind-2.12.1/validmind/scorers}/classification/BrierScore.py +3 -4
  49. {validmind-2.10.1/validmind/scorer → validmind-2.12.1/validmind/scorers}/classification/CalibrationError.py +3 -4
  50. {validmind-2.10.1/validmind/scorer → validmind-2.12.1/validmind/scorers}/classification/ClassBalance.py +3 -4
  51. {validmind-2.10.1/validmind/scorer → validmind-2.12.1/validmind/scorers}/classification/Confidence.py +3 -4
  52. {validmind-2.10.1/validmind/scorer → validmind-2.12.1/validmind/scorers}/classification/Correctness.py +3 -4
  53. {validmind-2.10.1/validmind/scorer → validmind-2.12.1/validmind/scorers}/classification/LogLoss.py +3 -6
  54. {validmind-2.10.1/validmind/scorer → validmind-2.12.1/validmind/scorers}/classification/OutlierScore.py +3 -4
  55. {validmind-2.10.1/validmind/scorer → validmind-2.12.1/validmind/scorers}/classification/ProbabilityError.py +3 -4
  56. {validmind-2.10.1/validmind/scorer → validmind-2.12.1/validmind/scorers}/classification/Uncertainty.py +3 -4
  57. {validmind-2.10.1/validmind/scorer → validmind-2.12.1/validmind/scorers}/llm/deepeval/AnswerRelevancy.py +5 -5
  58. validmind-2.12.1/validmind/scorers/llm/deepeval/ArgumentCorrectness.py +111 -0
  59. validmind-2.12.1/validmind/scorers/llm/deepeval/Bias.py +103 -0
  60. validmind-2.12.1/validmind/scorers/llm/deepeval/ContextualPrecision.py +110 -0
  61. validmind-2.12.1/validmind/scorers/llm/deepeval/ContextualRecall.py +110 -0
  62. validmind-2.12.1/validmind/scorers/llm/deepeval/ContextualRelevancy.py +110 -0
  63. validmind-2.12.1/validmind/scorers/llm/deepeval/Faithfulness.py +110 -0
  64. validmind-2.12.1/validmind/scorers/llm/deepeval/GEval.py +145 -0
  65. validmind-2.12.1/validmind/scorers/llm/deepeval/Hallucination.py +110 -0
  66. validmind-2.12.1/validmind/scorers/llm/deepeval/PlanAdherence.py +109 -0
  67. validmind-2.12.1/validmind/scorers/llm/deepeval/PlanQuality.py +119 -0
  68. validmind-2.12.1/validmind/scorers/llm/deepeval/Summarization.py +111 -0
  69. validmind-2.12.1/validmind/scorers/llm/deepeval/TaskCompletion.py +103 -0
  70. validmind-2.12.1/validmind/scorers/llm/deepeval/ToolCorrectness.py +116 -0
  71. validmind-2.12.1/validmind/scorers/llm/deepeval/__init__.py +173 -0
  72. {validmind-2.10.1 → validmind-2.12.1}/validmind/template.py +108 -62
  73. {validmind-2.10.1 → validmind-2.12.1}/validmind/test_suites/__init__.py +2 -2
  74. {validmind-2.10.1 → validmind-2.12.1}/validmind/test_suites/classifier.py +2 -2
  75. {validmind-2.10.1 → validmind-2.12.1}/validmind/test_suites/cluster.py +2 -2
  76. {validmind-2.10.1 → validmind-2.12.1}/validmind/test_suites/embeddings.py +2 -2
  77. {validmind-2.10.1 → validmind-2.12.1}/validmind/test_suites/llm.py +2 -2
  78. {validmind-2.10.1 → validmind-2.12.1}/validmind/test_suites/nlp.py +2 -2
  79. {validmind-2.10.1 → validmind-2.12.1}/validmind/test_suites/parameters_optimization.py +2 -2
  80. {validmind-2.10.1 → validmind-2.12.1}/validmind/test_suites/regression.py +2 -2
  81. {validmind-2.10.1 → validmind-2.12.1}/validmind/test_suites/statsmodels_timeseries.py +2 -2
  82. {validmind-2.10.1 → validmind-2.12.1}/validmind/test_suites/summarization.py +2 -2
  83. {validmind-2.10.1 → validmind-2.12.1}/validmind/test_suites/tabular_datasets.py +2 -2
  84. {validmind-2.10.1 → validmind-2.12.1}/validmind/test_suites/text_data.py +2 -2
  85. {validmind-2.10.1 → validmind-2.12.1}/validmind/test_suites/time_series.py +2 -2
  86. {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/__init__.py +2 -2
  87. {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/__types__.py +26 -2
  88. {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/_store.py +2 -2
  89. {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/comparison.py +2 -2
  90. {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/data_validation/ACFandPACFPlot.py +2 -2
  91. {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/data_validation/ADF.py +2 -2
  92. {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/data_validation/AutoAR.py +2 -2
  93. {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/data_validation/AutoMA.py +2 -2
  94. {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/data_validation/AutoStationarity.py +2 -2
  95. {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/data_validation/BivariateScatterPlots.py +2 -2
  96. {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/data_validation/BoxPierce.py +2 -2
  97. {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/data_validation/ChiSquaredFeaturesTable.py +2 -2
  98. {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/data_validation/ClassImbalance.py +2 -2
  99. {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/data_validation/DatasetDescription.py +2 -2
  100. {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/data_validation/DatasetSplit.py +2 -2
  101. {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/data_validation/DescriptiveStatistics.py +2 -2
  102. {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/data_validation/DickeyFullerGLS.py +2 -2
  103. {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/data_validation/Duplicates.py +2 -2
  104. {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/data_validation/EngleGrangerCoint.py +2 -2
  105. {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/data_validation/FeatureTargetCorrelationPlot.py +2 -2
  106. {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/data_validation/HighCardinality.py +2 -2
  107. {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/data_validation/HighPearsonCorrelation.py +2 -2
  108. {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/data_validation/IQROutliersBarPlot.py +2 -2
  109. {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/data_validation/IQROutliersTable.py +2 -2
  110. {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/data_validation/IsolationForestOutliers.py +2 -2
  111. {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/data_validation/JarqueBera.py +2 -2
  112. {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/data_validation/KPSS.py +2 -2
  113. {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/data_validation/LJungBox.py +2 -2
  114. {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/data_validation/LaggedCorrelationHeatmap.py +2 -2
  115. {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/data_validation/MissingValues.py +19 -14
  116. {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/data_validation/MissingValuesBarPlot.py +2 -2
  117. {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/data_validation/MutualInformation.py +2 -2
  118. {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/data_validation/PearsonCorrelationMatrix.py +2 -2
  119. {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/data_validation/PhillipsPerronArch.py +2 -2
  120. {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/data_validation/ProtectedClassesCombination.py +2 -2
  121. {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/data_validation/ProtectedClassesDescription.py +2 -2
  122. {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/data_validation/ProtectedClassesDisparity.py +2 -2
  123. {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/data_validation/ProtectedClassesThresholdOptimizer.py +2 -2
  124. {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/data_validation/RollingStatsPlot.py +2 -2
  125. {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/data_validation/RunsTest.py +2 -2
  126. {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/data_validation/ScatterPlot.py +2 -2
  127. {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/data_validation/ScoreBandDefaultRates.py +2 -2
  128. {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/data_validation/SeasonalDecompose.py +2 -2
  129. {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/data_validation/ShapiroWilk.py +2 -2
  130. {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/data_validation/Skewness.py +2 -2
  131. {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/data_validation/SpreadPlot.py +2 -2
  132. {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/data_validation/TabularCategoricalBarPlots.py +2 -2
  133. {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/data_validation/TabularDateTimeHistograms.py +2 -2
  134. {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/data_validation/TabularDescriptionTables.py +2 -2
  135. {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/data_validation/TabularNumericalHistograms.py +2 -2
  136. {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/data_validation/TargetRateBarPlots.py +2 -2
  137. {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/data_validation/TimeSeriesDescription.py +2 -2
  138. {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/data_validation/TimeSeriesDescriptiveStatistics.py +2 -2
  139. {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/data_validation/TimeSeriesFrequency.py +2 -2
  140. {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/data_validation/TimeSeriesHistogram.py +2 -2
  141. {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/data_validation/TimeSeriesLinePlot.py +2 -2
  142. {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/data_validation/TimeSeriesMissingValues.py +2 -2
  143. {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/data_validation/TimeSeriesOutliers.py +2 -2
  144. {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/data_validation/TooManyZeroValues.py +4 -4
  145. {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/data_validation/UniqueRows.py +2 -2
  146. {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/data_validation/WOEBinPlots.py +8 -10
  147. {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/data_validation/WOEBinTable.py +8 -10
  148. {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/data_validation/ZivotAndrewsArch.py +2 -2
  149. {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/data_validation/nlp/CommonWords.py +2 -2
  150. {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/data_validation/nlp/Hashtags.py +2 -2
  151. {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/data_validation/nlp/LanguageDetection.py +2 -2
  152. {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/data_validation/nlp/Mentions.py +2 -2
  153. {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/data_validation/nlp/PolarityAndSubjectivity.py +2 -2
  154. {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/data_validation/nlp/Punctuations.py +2 -2
  155. {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/data_validation/nlp/Sentiment.py +2 -2
  156. {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/data_validation/nlp/StopWords.py +2 -2
  157. {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/data_validation/nlp/TextDescription.py +2 -2
  158. {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/data_validation/nlp/Toxicity.py +2 -2
  159. {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/decorator.py +14 -14
  160. {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/load.py +86 -44
  161. {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/model_validation/BertScore.py +2 -2
  162. {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/model_validation/BleuScore.py +2 -2
  163. {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/model_validation/ClusterSizeDistribution.py +2 -2
  164. {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/model_validation/ContextualRecall.py +2 -2
  165. {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/model_validation/FeaturesAUC.py +2 -2
  166. {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/model_validation/MeteorScore.py +2 -2
  167. {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/model_validation/ModelMetadata.py +2 -2
  168. {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/model_validation/ModelPredictionResiduals.py +2 -2
  169. {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/model_validation/RegardScore.py +2 -2
  170. {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/model_validation/RegressionResidualsPlot.py +2 -2
  171. {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/model_validation/RougeScore.py +2 -2
  172. {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/model_validation/TimeSeriesPredictionWithCI.py +2 -2
  173. {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/model_validation/TimeSeriesPredictionsPlot.py +2 -2
  174. {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/model_validation/TimeSeriesR2SquareBySegments.py +2 -2
  175. {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/model_validation/TokenDisparity.py +2 -2
  176. {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/model_validation/ToxicityScore.py +2 -2
  177. {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/model_validation/embeddings/ClusterDistribution.py +2 -2
  178. {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/model_validation/embeddings/CosineSimilarityComparison.py +2 -2
  179. {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/model_validation/embeddings/CosineSimilarityDistribution.py +2 -2
  180. {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/model_validation/embeddings/CosineSimilarityHeatmap.py +2 -2
  181. {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/model_validation/embeddings/DescriptiveAnalytics.py +2 -2
  182. {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/model_validation/embeddings/EmbeddingsVisualization2D.py +2 -2
  183. {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/model_validation/embeddings/EuclideanDistanceComparison.py +2 -2
  184. {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/model_validation/embeddings/EuclideanDistanceHeatmap.py +2 -2
  185. {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/model_validation/embeddings/PCAComponentsPairwisePlots.py +2 -2
  186. {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/model_validation/embeddings/StabilityAnalysisKeyword.py +2 -2
  187. {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/model_validation/embeddings/StabilityAnalysisRandomNoise.py +2 -2
  188. {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/model_validation/embeddings/StabilityAnalysisSynonyms.py +2 -2
  189. {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/model_validation/embeddings/StabilityAnalysisTranslation.py +2 -2
  190. {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/model_validation/embeddings/TSNEComponentsPairwisePlots.py +2 -2
  191. {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/model_validation/embeddings/utils.py +2 -2
  192. {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/model_validation/ragas/AnswerCorrectness.py +2 -2
  193. {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/model_validation/ragas/AspectCritic.py +2 -2
  194. {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/model_validation/ragas/ContextEntityRecall.py +2 -2
  195. {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/model_validation/ragas/ContextPrecision.py +2 -2
  196. {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/model_validation/ragas/ContextPrecisionWithoutReference.py +2 -2
  197. {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/model_validation/ragas/ContextRecall.py +2 -2
  198. {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/model_validation/ragas/Faithfulness.py +2 -2
  199. {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/model_validation/ragas/NoiseSensitivity.py +2 -2
  200. {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/model_validation/ragas/ResponseRelevancy.py +2 -2
  201. {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/model_validation/ragas/SemanticSimilarity.py +2 -2
  202. {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/model_validation/ragas/utils.py +2 -2
  203. {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/model_validation/sklearn/AdjustedMutualInformation.py +2 -2
  204. {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/model_validation/sklearn/AdjustedRandIndex.py +2 -2
  205. {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/model_validation/sklearn/CalibrationCurve.py +2 -2
  206. {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/model_validation/sklearn/ClassifierPerformance.py +2 -2
  207. {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/model_validation/sklearn/ClassifierThresholdOptimization.py +2 -2
  208. {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/model_validation/sklearn/ClusterCosineSimilarity.py +2 -2
  209. {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/model_validation/sklearn/ClusterPerformanceMetrics.py +2 -2
  210. {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/model_validation/sklearn/CompletenessScore.py +2 -2
  211. {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/model_validation/sklearn/ConfusionMatrix.py +2 -2
  212. {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/model_validation/sklearn/FeatureImportance.py +2 -2
  213. {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/model_validation/sklearn/FowlkesMallowsScore.py +2 -2
  214. {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/model_validation/sklearn/HomogeneityScore.py +2 -2
  215. {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/model_validation/sklearn/HyperParametersTuning.py +2 -2
  216. {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/model_validation/sklearn/KMeansClustersOptimization.py +2 -2
  217. {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/model_validation/sklearn/MinimumAccuracy.py +2 -2
  218. {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/model_validation/sklearn/MinimumF1Score.py +2 -2
  219. {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/model_validation/sklearn/MinimumROCAUCScore.py +2 -2
  220. {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/model_validation/sklearn/ModelParameters.py +2 -2
  221. {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/model_validation/sklearn/ModelsPerformanceComparison.py +2 -2
  222. {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/model_validation/sklearn/OverfitDiagnosis.py +3 -3
  223. {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/model_validation/sklearn/PermutationFeatureImportance.py +2 -2
  224. {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/model_validation/sklearn/PopulationStabilityIndex.py +4 -4
  225. {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/model_validation/sklearn/PrecisionRecallCurve.py +2 -2
  226. {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/model_validation/sklearn/ROCCurve.py +2 -2
  227. {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/model_validation/sklearn/RegressionErrors.py +2 -2
  228. {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/model_validation/sklearn/RegressionErrorsComparison.py +2 -2
  229. {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/model_validation/sklearn/RegressionPerformance.py +2 -2
  230. {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/model_validation/sklearn/RegressionR2Square.py +2 -2
  231. {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/model_validation/sklearn/RegressionR2SquareComparison.py +2 -2
  232. {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/model_validation/sklearn/RobustnessDiagnosis.py +4 -2
  233. {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/model_validation/sklearn/SHAPGlobalImportance.py +2 -2
  234. {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/model_validation/sklearn/ScoreProbabilityAlignment.py +2 -2
  235. {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/model_validation/sklearn/SilhouettePlot.py +2 -2
  236. {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/model_validation/sklearn/TrainingTestDegradation.py +7 -7
  237. {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/model_validation/sklearn/VMeasure.py +2 -2
  238. {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/model_validation/sklearn/WeakspotsDiagnosis.py +3 -3
  239. {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/model_validation/statsmodels/AutoARIMA.py +2 -2
  240. {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/model_validation/statsmodels/CumulativePredictionProbabilities.py +12 -17
  241. {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/model_validation/statsmodels/DurbinWatsonTest.py +2 -2
  242. {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/model_validation/statsmodels/GINITable.py +2 -2
  243. {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/model_validation/statsmodels/KolmogorovSmirnov.py +2 -2
  244. {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/model_validation/statsmodels/Lilliefors.py +2 -2
  245. {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/model_validation/statsmodels/PredictionProbabilitiesHistogram.py +2 -2
  246. {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/model_validation/statsmodels/RegressionCoeffs.py +2 -2
  247. {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/model_validation/statsmodels/RegressionFeatureSignificance.py +2 -2
  248. {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/model_validation/statsmodels/RegressionModelForecastPlot.py +2 -2
  249. {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/model_validation/statsmodels/RegressionModelForecastPlotLevels.py +2 -2
  250. {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/model_validation/statsmodels/RegressionModelSensitivityPlot.py +2 -2
  251. {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/model_validation/statsmodels/RegressionModelSummary.py +2 -2
  252. {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/model_validation/statsmodels/RegressionPermutationFeatureImportance.py +2 -2
  253. {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/model_validation/statsmodels/ScorecardHistogram.py +2 -2
  254. {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/model_validation/statsmodels/statsutils.py +2 -2
  255. {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/ongoing_monitoring/CalibrationCurveDrift.py +2 -2
  256. {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/ongoing_monitoring/ClassDiscriminationDrift.py +2 -2
  257. {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/ongoing_monitoring/ClassImbalanceDrift.py +2 -2
  258. {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/ongoing_monitoring/ClassificationAccuracyDrift.py +2 -2
  259. {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/ongoing_monitoring/ConfusionMatrixDrift.py +2 -2
  260. {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/ongoing_monitoring/CumulativePredictionProbabilitiesDrift.py +2 -2
  261. {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/ongoing_monitoring/FeatureDrift.py +2 -2
  262. {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/ongoing_monitoring/PredictionAcrossEachFeature.py +2 -2
  263. {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/ongoing_monitoring/PredictionCorrelation.py +2 -2
  264. {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/ongoing_monitoring/PredictionProbabilitiesHistogramDrift.py +2 -2
  265. {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/ongoing_monitoring/PredictionQuantilesAcrossFeatures.py +2 -2
  266. {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/ongoing_monitoring/ROCCurveDrift.py +2 -2
  267. {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/ongoing_monitoring/ScoreBandsDrift.py +2 -2
  268. {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/ongoing_monitoring/ScorecardHistogramDrift.py +2 -2
  269. {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/ongoing_monitoring/TargetPredictionDistributionPlot.py +2 -2
  270. {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/output.py +2 -2
  271. {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/plots/BoxPlot.py +25 -12
  272. {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/plots/CorrelationHeatmap.py +2 -2
  273. {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/plots/HistogramPlot.py +2 -2
  274. {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/plots/ViolinPlot.py +2 -2
  275. {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/prompt_validation/Bias.py +2 -2
  276. {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/prompt_validation/Clarity.py +2 -2
  277. {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/prompt_validation/Conciseness.py +2 -2
  278. {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/prompt_validation/Delimitation.py +2 -2
  279. {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/prompt_validation/NegativeInstruction.py +2 -2
  280. {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/prompt_validation/Robustness.py +2 -2
  281. {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/prompt_validation/Specificity.py +2 -2
  282. {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/prompt_validation/ai_powered_test.py +2 -2
  283. {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/run.py +3 -2
  284. {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/stats/CorrelationAnalysis.py +2 -2
  285. {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/stats/DescriptiveStats.py +2 -2
  286. {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/stats/NormalityTests.py +2 -2
  287. {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/stats/OutlierDetection.py +2 -2
  288. {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/test_providers.py +5 -5
  289. {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/utils.py +2 -2
  290. {validmind-2.10.1 → validmind-2.12.1}/validmind/unit_metrics/__init__.py +2 -2
  291. {validmind-2.10.1 → validmind-2.12.1}/validmind/unit_metrics/classification/Accuracy.py +2 -2
  292. {validmind-2.10.1 → validmind-2.12.1}/validmind/unit_metrics/classification/F1.py +2 -2
  293. {validmind-2.10.1 → validmind-2.12.1}/validmind/unit_metrics/classification/Precision.py +2 -2
  294. {validmind-2.10.1 → validmind-2.12.1}/validmind/unit_metrics/classification/ROC_AUC.py +2 -2
  295. {validmind-2.10.1 → validmind-2.12.1}/validmind/unit_metrics/classification/Recall.py +2 -2
  296. {validmind-2.10.1 → validmind-2.12.1}/validmind/unit_metrics/regression/AdjustedRSquaredScore.py +2 -2
  297. {validmind-2.10.1 → validmind-2.12.1}/validmind/unit_metrics/regression/GiniCoefficient.py +2 -2
  298. {validmind-2.10.1 → validmind-2.12.1}/validmind/unit_metrics/regression/HuberLoss.py +2 -2
  299. {validmind-2.10.1 → validmind-2.12.1}/validmind/unit_metrics/regression/KolmogorovSmirnovStatistic.py +2 -2
  300. {validmind-2.10.1 → validmind-2.12.1}/validmind/unit_metrics/regression/MeanAbsoluteError.py +2 -2
  301. {validmind-2.10.1 → validmind-2.12.1}/validmind/unit_metrics/regression/MeanAbsolutePercentageError.py +2 -2
  302. {validmind-2.10.1 → validmind-2.12.1}/validmind/unit_metrics/regression/MeanBiasDeviation.py +2 -2
  303. {validmind-2.10.1 → validmind-2.12.1}/validmind/unit_metrics/regression/MeanSquaredError.py +2 -2
  304. {validmind-2.10.1 → validmind-2.12.1}/validmind/unit_metrics/regression/QuantileLoss.py +2 -2
  305. {validmind-2.10.1 → validmind-2.12.1}/validmind/unit_metrics/regression/RSquaredScore.py +2 -2
  306. {validmind-2.10.1 → validmind-2.12.1}/validmind/unit_metrics/regression/RootMeanSquaredError.py +2 -2
  307. {validmind-2.10.1 → validmind-2.12.1}/validmind/utils.py +15 -7
  308. {validmind-2.10.1 → validmind-2.12.1}/validmind/vm_models/__init__.py +2 -2
  309. {validmind-2.10.1 → validmind-2.12.1}/validmind/vm_models/dataset/__init__.py +2 -2
  310. {validmind-2.10.1 → validmind-2.12.1}/validmind/vm_models/dataset/dataset.py +9 -9
  311. {validmind-2.10.1 → validmind-2.12.1}/validmind/vm_models/dataset/utils.py +2 -2
  312. {validmind-2.10.1 → validmind-2.12.1}/validmind/vm_models/figure.py +21 -29
  313. validmind-2.12.1/validmind/vm_models/html_progress.py +170 -0
  314. validmind-2.12.1/validmind/vm_models/html_renderer.py +450 -0
  315. {validmind-2.10.1 → validmind-2.12.1}/validmind/vm_models/input.py +2 -2
  316. {validmind-2.10.1 → validmind-2.12.1}/validmind/vm_models/model.py +2 -2
  317. {validmind-2.10.1 → validmind-2.12.1}/validmind/vm_models/result/__init__.py +2 -2
  318. {validmind-2.10.1 → validmind-2.12.1}/validmind/vm_models/result/pii_filter.py +2 -2
  319. {validmind-2.10.1 → validmind-2.12.1}/validmind/vm_models/result/result.py +59 -69
  320. validmind-2.12.1/validmind/vm_models/result/utils.py +86 -0
  321. validmind-2.12.1/validmind/vm_models/test_suite/__init__.py +5 -0
  322. {validmind-2.10.1 → validmind-2.12.1}/validmind/vm_models/test_suite/runner.py +80 -35
  323. validmind-2.12.1/validmind/vm_models/test_suite/summary.py +136 -0
  324. {validmind-2.10.1 → validmind-2.12.1}/validmind/vm_models/test_suite/test.py +2 -2
  325. {validmind-2.10.1 → validmind-2.12.1}/validmind/vm_models/test_suite/test_suite.py +2 -2
  326. validmind-2.10.1/validmind/__version__.py +0 -1
  327. validmind-2.10.1/validmind/datasets/__init__.py +0 -7
  328. validmind-2.10.1/validmind/datasets/regression/california_housing.py +0 -34
  329. validmind-2.10.1/validmind/scorer/llm/deepeval/__init__.py +0 -7
  330. validmind-2.10.1/validmind/vm_models/result/utils.py +0 -114
  331. validmind-2.10.1/validmind/vm_models/test_suite/__init__.py +0 -5
  332. validmind-2.10.1/validmind/vm_models/test_suite/summary.py +0 -187
  333. {validmind-2.10.1 → validmind-2.12.1}/LICENSE +0 -0
  334. {validmind-2.10.1 → validmind-2.12.1}/README.pypi.md +0 -0
  335. {validmind-2.10.1 → validmind-2.12.1}/validmind/datasets/classification/datasets/bank_customer_churn.csv +0 -0
  336. {validmind-2.10.1 → validmind-2.12.1}/validmind/datasets/classification/datasets/taiwan_credit.csv +0 -0
  337. {validmind-2.10.1 → validmind-2.12.1}/validmind/datasets/credit_risk/datasets/lending_club_biased.csv.gz +0 -0
  338. {validmind-2.10.1 → validmind-2.12.1}/validmind/datasets/credit_risk/datasets/lending_club_loan_data_2007_2014_clean.csv.gz +0 -0
  339. {validmind-2.10.1 → validmind-2.12.1}/validmind/datasets/llm/rag/datasets/rfp_existing_questions_client_1.csv +0 -0
  340. {validmind-2.10.1 → validmind-2.12.1}/validmind/datasets/llm/rag/datasets/rfp_existing_questions_client_2.csv +0 -0
  341. {validmind-2.10.1 → validmind-2.12.1}/validmind/datasets/llm/rag/datasets/rfp_existing_questions_client_3.csv +0 -0
  342. {validmind-2.10.1 → validmind-2.12.1}/validmind/datasets/llm/rag/datasets/rfp_existing_questions_client_4.csv +0 -0
  343. {validmind-2.10.1 → validmind-2.12.1}/validmind/datasets/llm/rag/datasets/rfp_existing_questions_client_5.csv +0 -0
  344. {validmind-2.10.1 → validmind-2.12.1}/validmind/datasets/nlp/datasets/Covid_19.csv +0 -0
  345. {validmind-2.10.1 → validmind-2.12.1}/validmind/datasets/nlp/datasets/cnn_dailymail_100_with_predictions.csv +0 -0
  346. {validmind-2.10.1 → validmind-2.12.1}/validmind/datasets/nlp/datasets/cnn_dailymail_500_with_predictions.csv +0 -0
  347. {validmind-2.10.1 → validmind-2.12.1}/validmind/datasets/nlp/datasets/sentiments_with_predictions.csv +0 -0
  348. {validmind-2.10.1 → validmind-2.12.1}/validmind/datasets/regression/datasets/fred/CPIAUCSL.csv +0 -0
  349. {validmind-2.10.1 → validmind-2.12.1}/validmind/datasets/regression/datasets/fred/CSUSHPISA.csv +0 -0
  350. {validmind-2.10.1 → validmind-2.12.1}/validmind/datasets/regression/datasets/fred/DRSFRMACBS.csv +0 -0
  351. {validmind-2.10.1 → validmind-2.12.1}/validmind/datasets/regression/datasets/fred/FEDFUNDS.csv +0 -0
  352. {validmind-2.10.1 → validmind-2.12.1}/validmind/datasets/regression/datasets/fred/GDP.csv +0 -0
  353. {validmind-2.10.1 → validmind-2.12.1}/validmind/datasets/regression/datasets/fred/GDPC1.csv +0 -0
  354. {validmind-2.10.1 → validmind-2.12.1}/validmind/datasets/regression/datasets/fred/GS10.csv +0 -0
  355. {validmind-2.10.1 → validmind-2.12.1}/validmind/datasets/regression/datasets/fred/GS3.csv +0 -0
  356. {validmind-2.10.1 → validmind-2.12.1}/validmind/datasets/regression/datasets/fred/GS5.csv +0 -0
  357. {validmind-2.10.1 → validmind-2.12.1}/validmind/datasets/regression/datasets/fred/MORTGAGE30US.csv +0 -0
  358. {validmind-2.10.1 → validmind-2.12.1}/validmind/datasets/regression/datasets/fred/UNRATE.csv +0 -0
  359. {validmind-2.10.1 → validmind-2.12.1}/validmind/datasets/regression/datasets/fred_loan_rates.csv +0 -0
  360. {validmind-2.10.1 → validmind-2.12.1}/validmind/datasets/regression/datasets/fred_loan_rates_test_1.csv +0 -0
  361. {validmind-2.10.1 → validmind-2.12.1}/validmind/datasets/regression/datasets/fred_loan_rates_test_2.csv +0 -0
  362. {validmind-2.10.1 → validmind-2.12.1}/validmind/datasets/regression/datasets/fred_loan_rates_test_3.csv +0 -0
  363. {validmind-2.10.1 → validmind-2.12.1}/validmind/datasets/regression/datasets/fred_loan_rates_test_4.csv +0 -0
  364. {validmind-2.10.1 → validmind-2.12.1}/validmind/datasets/regression/datasets/fred_loan_rates_test_5.csv +0 -0
  365. {validmind-2.10.1 → validmind-2.12.1}/validmind/datasets/regression/datasets/leanding_club_loan_rates.csv +0 -0
  366. {validmind-2.10.1 → validmind-2.12.1}/validmind/datasets/regression/models/fred_loan_rates_model_1.pkl +0 -0
  367. {validmind-2.10.1 → validmind-2.12.1}/validmind/datasets/regression/models/fred_loan_rates_model_2.pkl +0 -0
  368. {validmind-2.10.1 → validmind-2.12.1}/validmind/datasets/regression/models/fred_loan_rates_model_3.pkl +0 -0
  369. {validmind-2.10.1 → validmind-2.12.1}/validmind/datasets/regression/models/fred_loan_rates_model_4.pkl +0 -0
  370. {validmind-2.10.1 → validmind-2.12.1}/validmind/datasets/regression/models/fred_loan_rates_model_5.pkl +0 -0
  371. {validmind-2.10.1 → validmind-2.12.1}/validmind/experimental/__init__.py +0 -0
  372. {validmind-2.10.1 → validmind-2.12.1}/validmind/html_templates/__init__.py +0 -0
  373. {validmind-2.10.1/validmind/scorer → validmind-2.12.1/validmind/scorers}/classification/__init__.py +0 -0
  374. {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/data_validation/__init__.py +0 -0
  375. {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/data_validation/nlp/__init__.py +0 -0
  376. {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/model_validation/__init__.py +0 -0
  377. {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/model_validation/sklearn/__init__.py +0 -0
  378. {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/model_validation/statsmodels/__init__.py +0 -0
  379. {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/plots/__init__.py +0 -0
  380. {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/prompt_validation/__init__.py +0 -0
  381. {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/stats/__init__.py +0 -0
  382. {validmind-2.10.1 → validmind-2.12.1}/validmind/vm_models/result/result.jinja +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: validmind
3
- Version: 2.10.1
3
+ Version: 2.12.1
4
4
  Summary: ValidMind Library
5
5
  License: DUAL LICENSE NOTICE
6
6
 
@@ -710,7 +710,7 @@ Provides-Extra: pii-detection
710
710
  Provides-Extra: pytorch
711
711
  Provides-Extra: stats
712
712
  Provides-Extra: xgboost
713
- Requires-Dist: aiohttp[speedups]
713
+ Requires-Dist: aiohttp[speedups] (<3.13.1)
714
714
  Requires-Dist: anywidget
715
715
  Requires-Dist: arch ; extra == "all"
716
716
  Requires-Dist: arch ; extra == "stats"
@@ -718,7 +718,7 @@ Requires-Dist: beautifulsoup4
718
718
  Requires-Dist: bert-score (>=0.3.13) ; extra == "all"
719
719
  Requires-Dist: bert-score (>=0.3.13) ; extra == "nlp"
720
720
  Requires-Dist: datasets (>=2.10.0,<3.0.0) ; extra == "datasets"
721
- Requires-Dist: deepeval (>3.3.9) ; extra == "llm"
721
+ Requires-Dist: deepeval (>=3.7.0) ; extra == "llm"
722
722
  Requires-Dist: evaluate ; extra == "all"
723
723
  Requires-Dist: evaluate ; extra == "nlp"
724
724
  Requires-Dist: ipywidgets
@@ -732,12 +732,14 @@ Requires-Dist: mistune (>=3.0.2,<4.0.0)
732
732
  Requires-Dist: nest-asyncio (>=1.6.0,<2.0.0)
733
733
  Requires-Dist: nltk (>=3.8.1,<4.0.0) ; extra == "all"
734
734
  Requires-Dist: nltk (>=3.8.1,<4.0.0) ; extra == "nlp"
735
+ Requires-Dist: numpy (>=1.23,<2.0.0)
735
736
  Requires-Dist: openai (>=1)
736
737
  Requires-Dist: pandas (>=2.0.3,<3.0.0)
737
- Requires-Dist: plotly (>=5.0.0)
738
+ Requires-Dist: plotly (>=6.0.0)
738
739
  Requires-Dist: polars
739
740
  Requires-Dist: presidio-analyzer ; extra == "pii-detection"
740
741
  Requires-Dist: presidio-structured ; extra == "pii-detection"
742
+ Requires-Dist: pyarrow (<16) ; extra == "nlp"
741
743
  Requires-Dist: pycocoevalcap ; extra == "all"
742
744
  Requires-Dist: pycocoevalcap ; extra == "llm"
743
745
  Requires-Dist: python-dotenv
@@ -748,17 +750,16 @@ Requires-Dist: rouge (>=1) ; extra == "nlp"
748
750
  Requires-Dist: scikit-learn
749
751
  Requires-Dist: scipy ; extra == "all"
750
752
  Requires-Dist: scipy ; extra == "stats"
751
- Requires-Dist: scorecardpy (>=0.1.9.6,<0.2.0) ; extra == "all"
752
- Requires-Dist: scorecardpy (>=0.1.9.6,<0.2.0) ; extra == "credit-risk"
753
+ Requires-Dist: scorecardpy (==0.1.9.6) ; extra == "all"
754
+ Requires-Dist: scorecardpy (==0.1.9.6) ; extra == "credit-risk"
753
755
  Requires-Dist: seaborn
754
756
  Requires-Dist: sentencepiece (>=0.2.0,<0.3.0) ; extra == "all"
755
757
  Requires-Dist: sentencepiece (>=0.2.0,<0.3.0) ; extra == "huggingface"
756
758
  Requires-Dist: sentencepiece (>=0.2.0,<0.3.0) ; extra == "llm"
757
- Requires-Dist: sentry-sdk (>=1.24.0,<2.0.0)
758
759
  Requires-Dist: shap (>=0.46.0) ; extra == "all"
759
760
  Requires-Dist: shap (>=0.46.0) ; extra == "explainability"
760
- Requires-Dist: statsmodels ; extra == "all"
761
- Requires-Dist: statsmodels ; extra == "stats"
761
+ Requires-Dist: statsmodels (>=0.14.2,<0.15.0) ; extra == "all"
762
+ Requires-Dist: statsmodels (>=0.14.2,<0.15.0) ; extra == "stats"
762
763
  Requires-Dist: tabulate (>=0.9.0,<0.10.0)
763
764
  Requires-Dist: textblob (>=0.18.0.post0,<0.19.0) ; extra == "all"
764
765
  Requires-Dist: textblob (>=0.18.0.post0,<0.19.0) ; extra == "nlp"
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "validmind"
3
- version = "2.10.1"
3
+ version = "2.12.1"
4
4
  description = "ValidMind Library"
5
5
  readme = "README.pypi.md"
6
6
  requires-python = ">=3.9,<3.13"
@@ -13,20 +13,20 @@ authors = [
13
13
  { name = "John Walz", email = "john@validmind.ai" },
14
14
  ]
15
15
  dependencies = [
16
- "aiohttp[speedups]",
16
+ "aiohttp[speedups] (<3.13.1)",
17
17
  "ipywidgets",
18
18
  "kaleido (>=0.2.1,!=0.2.1.post1,<1.0.0)",
19
19
  "matplotlib",
20
20
  "mistune (>=3.0.2,<4.0.0)",
21
21
  "nest-asyncio (>=1.6.0,<2.0.0)",
22
+ "numpy (>=1.23,<2.0.0)",
22
23
  "openai (>=1)",
23
24
  "pandas (>=2.0.3,<3.0.0)",
24
- "plotly (>=5.0.0)",
25
+ "plotly (>=6.0.0)",
25
26
  "polars",
26
27
  "python-dotenv",
27
28
  "scikit-learn",
28
29
  "seaborn",
29
- "sentry-sdk (>=1.24.0,<2.0.0)",
30
30
  "tabulate (>=0.9.0,<0.10.0)",
31
31
  "tiktoken",
32
32
  "tqdm",
@@ -44,7 +44,7 @@ all = [
44
44
  "sentencepiece (>=0.2.0,<0.3.0)",
45
45
  "langchain-openai (>=0.1.8)",
46
46
  "scipy",
47
- "statsmodels",
47
+ "statsmodels (>=0.14.2,<0.15.0)",
48
48
  "langdetect",
49
49
  "nltk (>=3.8.1,<4.0.0)",
50
50
  "textblob (>=0.18.0.post0,<0.19.0)",
@@ -53,7 +53,7 @@ all = [
53
53
  "bert-score (>=0.3.13)",
54
54
  "arch",
55
55
  "shap (>=0.46.0)",
56
- "scorecardpy (>=0.1.9.6,<0.2.0)",
56
+ "scorecardpy==0.1.9.6",
57
57
  ]
58
58
  huggingface = [
59
59
  "transformers (>=4.32.0,<5.0.0)",
@@ -66,7 +66,7 @@ llm = [
66
66
  "ragas (>=0.2.3,<=0.2.7)",
67
67
  "sentencepiece (>=0.2.0,<0.3.0)",
68
68
  "langchain-openai (>=0.1.8)",
69
- "deepeval (>3.3.9)",
69
+ "deepeval (>=3.7.0)",
70
70
  ]
71
71
  nlp = [
72
72
  "langdetect",
@@ -75,12 +75,13 @@ nlp = [
75
75
  "evaluate",
76
76
  "rouge (>=1)",
77
77
  "bert-score (>=0.3.13)",
78
+ "pyarrow (<16)",
78
79
  ]
79
80
  pytorch = ["torch (>=2.0.0)"]
80
- stats = ["scipy", "statsmodels", "arch"]
81
+ stats = ["scipy", "statsmodels (>=0.14.2,<0.15.0)", "arch"]
81
82
  xgboost = ["xgboost (>=1.5.2,<3)"]
82
83
  explainability = ["shap (>=0.46.0)"]
83
- credit_risk = ["scorecardpy (>=0.1.9.6,<0.2.0)"]
84
+ credit_risk = ["scorecardpy==0.1.9.6"]
84
85
  datasets = ["datasets (>=2.10.0,<3.0.0)"]
85
86
  pii-detection = ["presidio-analyzer", "presidio-structured"]
86
87
 
@@ -1,5 +1,5 @@
1
- # Copyright © 2023-2024 ValidMind Inc. All rights reserved.
2
- # See the LICENSE file in the root of this repository for details.
1
+ # Copyright © 2023-2026 ValidMind Inc. All rights reserved.
2
+ # Refer to the LICENSE file in the root of this repository for details.
3
3
  # SPDX-License-Identifier: AGPL-3.0 AND ValidMind Commercial
4
4
 
5
5
  """
@@ -21,7 +21,7 @@ To initialize the ValidMind Library, paste the code snippet with the model ident
21
21
  import validmind as vm
22
22
 
23
23
  vm.init(
24
- api_host = "https://api.dev.vm.validmind.ai/api/v1/tracking/tracking",
24
+ api_host = "https://app.prod.validmind.ai/api/v1/tracking/tracking",
25
25
  api_key = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
26
26
  api_secret = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
27
27
  project = "<project-identifier>"
@@ -48,9 +48,9 @@ try:
48
48
  except ImportError:
49
49
  ...
50
50
 
51
- from . import scorer
51
+ from . import scorers as scorer
52
52
  from .__version__ import __version__ # noqa: E402
53
- from .api_client import init, log_metric, log_text, reload
53
+ from .api_client import init, log_metric, log_test_result, log_text, reload
54
54
  from .client import ( # noqa: E402
55
55
  get_test_suite,
56
56
  init_dataset,
@@ -143,6 +143,7 @@ __all__ = [ # noqa
143
143
  "unit_metrics",
144
144
  "test_suites",
145
145
  "log_text",
146
+ "log_test_result",
146
147
  # experimental features
147
148
  "experimental_agent",
148
149
  ]
@@ -0,0 +1 @@
1
+ __version__ = "2.12.1"
@@ -1,13 +1,11 @@
1
- # Copyright © 2023-2024 ValidMind Inc. All rights reserved.
2
- # See the LICENSE file in the root of this repository for details.
1
+ # Copyright © 2023-2026 ValidMind Inc. All rights reserved.
2
+ # Refer to the LICENSE file in the root of this repository for details.
3
3
  # SPDX-License-Identifier: AGPL-3.0 AND ValidMind Commercial
4
4
 
5
5
  import json
6
6
  import os
7
7
  from concurrent.futures import ThreadPoolExecutor
8
- from typing import List, Optional, Union
9
-
10
- import tiktoken
8
+ from typing import Any, Dict, List, Optional, Union
11
9
 
12
10
  from ..client_config import client_config
13
11
  from ..logging import get_logger
@@ -25,6 +23,21 @@ __executor = ThreadPoolExecutor()
25
23
 
26
24
  logger = get_logger(__name__)
27
25
 
26
+ # Try to import tiktoken once at module load
27
+ # Cache the result to avoid repeated import attempts
28
+ _TIKTOKEN_AVAILABLE = False
29
+ _TIKTOKEN_ENCODING = None
30
+
31
+ try:
32
+ import tiktoken
33
+
34
+ _TIKTOKEN_ENCODING = tiktoken.encoding_for_model("gpt-4o")
35
+ _TIKTOKEN_AVAILABLE = True
36
+ except (ImportError, Exception) as e:
37
+ logger.debug(
38
+ f"tiktoken unavailable, will use character-based token estimation: {e}"
39
+ )
40
+
28
41
 
29
42
  def _get_llm_global_context():
30
43
  # Get the context from the environment variable
@@ -42,6 +55,29 @@ def _get_llm_global_context():
42
55
  return context if context_enabled and context else None
43
56
 
44
57
 
58
+ def _estimate_tokens_simple(text: str) -> int:
59
+ """Estimate token count using character-based heuristic.
60
+
61
+ Uses ~4 characters per token for English/JSON text.
62
+ This is a fallback when tiktoken is unavailable.
63
+ """
64
+ return len(text) // 4
65
+
66
+
67
+ def _truncate_text_simple(text: str, max_tokens: int) -> str:
68
+ """Truncate text using character-based estimation."""
69
+ estimated_chars = max_tokens * 4
70
+ if len(text) <= estimated_chars:
71
+ return text
72
+
73
+ # Keep first portion and last 100 tokens worth (~400 chars)
74
+ # But ensure we don't take more than 25% for the tail
75
+ last_chars = min(400, estimated_chars // 4)
76
+ first_chars = estimated_chars - last_chars
77
+
78
+ return text[:first_chars] + "...[truncated]" + text[-last_chars:]
79
+
80
+
45
81
  def _truncate_summary(
46
82
  summary: Union[str, None], test_id: str, max_tokens: int = 100_000
47
83
  ):
@@ -49,20 +85,30 @@ def _truncate_summary(
49
85
  # since string itself is less than max_tokens, definitely small enough
50
86
  return summary
51
87
 
52
- # TODO: better context length handling
53
- encoding = tiktoken.encoding_for_model("gpt-4o")
54
- summary_tokens = encoding.encode(summary)
88
+ if _TIKTOKEN_AVAILABLE:
89
+ # Use tiktoken for accurate token counting
90
+ summary_tokens = _TIKTOKEN_ENCODING.encode(summary)
55
91
 
56
- if len(summary_tokens) > max_tokens:
57
- logger.warning(
58
- f"Truncating {test_id} due to context length restrictions..."
59
- " Generated description may be innacurate"
60
- )
61
- summary = (
62
- encoding.decode(summary_tokens[:max_tokens])
63
- + "...[truncated]"
64
- + encoding.decode(summary_tokens[-100:])
65
- )
92
+ if len(summary_tokens) > max_tokens:
93
+ logger.warning(
94
+ f"Truncating {test_id} due to context length restrictions..."
95
+ " Generated description may be inaccurate"
96
+ )
97
+ summary = (
98
+ _TIKTOKEN_ENCODING.decode(summary_tokens[:max_tokens])
99
+ + "...[truncated]"
100
+ + _TIKTOKEN_ENCODING.decode(summary_tokens[-100:])
101
+ )
102
+ else:
103
+ # Fallback to character-based estimation
104
+ estimated_tokens = _estimate_tokens_simple(summary)
105
+
106
+ if estimated_tokens > max_tokens:
107
+ logger.warning(
108
+ f"Truncating {test_id} (estimated) due to context length restrictions..."
109
+ " Generated description may be inaccurate"
110
+ )
111
+ summary = _truncate_text_simple(summary, max_tokens)
66
112
 
67
113
  return summary
68
114
 
@@ -76,6 +122,7 @@ def generate_description(
76
122
  title: Optional[str] = None,
77
123
  instructions: Optional[str] = None,
78
124
  additional_context: Optional[str] = None,
125
+ params: Optional[Dict[str, Any]] = None,
79
126
  ):
80
127
  """Generate the description for the test results."""
81
128
  from validmind.api_client import generate_test_result_description
@@ -121,11 +168,10 @@ def generate_description(
121
168
  "test_description": test_description,
122
169
  "title": title,
123
170
  "summary": _truncate_summary(summary, test_id),
124
- "figures": [
125
- figure._get_b64_url() for figure in ([] if tables else figures)
126
- ],
171
+ "figures": [figure._get_b64_url() for figure in figures or []],
127
172
  "additional_context": additional_context,
128
173
  "instructions": instructions,
174
+ "params": params,
129
175
  }
130
176
  )["content"]
131
177
 
@@ -139,6 +185,7 @@ def background_generate_description(
139
185
  title: Optional[str] = None,
140
186
  instructions: Optional[str] = None,
141
187
  additional_context: Optional[str] = None,
188
+ params: Optional[Dict[str, Any]] = None,
142
189
  ):
143
190
  def wrapped():
144
191
  try:
@@ -152,6 +199,7 @@ def background_generate_description(
152
199
  title=title,
153
200
  instructions=instructions,
154
201
  additional_context=additional_context,
202
+ params=params,
155
203
  ),
156
204
  True,
157
205
  )
@@ -183,6 +231,7 @@ def get_result_description(
183
231
  title: Optional[str] = None,
184
232
  instructions: Optional[str] = None,
185
233
  additional_context: Optional[str] = None,
234
+ params: Optional[Dict[str, Any]] = None,
186
235
  ):
187
236
  """Get the metadata dictionary for a test or metric result.
188
237
 
@@ -206,6 +255,7 @@ def get_result_description(
206
255
  should_generate (bool): Whether to generate the description or not. Defaults to True.
207
256
  instructions (Optional[str]): Instructions for the LLM to generate the description.
208
257
  additional_context (Optional[str]): Additional context for the LLM to generate the description.
258
+ params (Optional[Dict[str, Any]]): Test parameters used to customize test behavior.
209
259
 
210
260
  Returns:
211
261
  str: The description to be logged with the test results.
@@ -234,6 +284,7 @@ def get_result_description(
234
284
  title=title,
235
285
  instructions=_instructions,
236
286
  additional_context=additional_context,
287
+ params=params,
237
288
  )
238
289
 
239
290
  else:
@@ -1,5 +1,5 @@
1
- # Copyright © 2023-2024 ValidMind Inc. All rights reserved.
2
- # See the LICENSE file in the root of this repository for details.
1
+ # Copyright © 2023-2026 ValidMind Inc. All rights reserved.
2
+ # Refer to the LICENSE file in the root of this repository for details.
3
3
  # SPDX-License-Identifier: AGPL-3.0 AND ValidMind Commercial
4
4
 
5
5
  import os
@@ -1,5 +1,5 @@
1
- # Copyright © 2023-2024 ValidMind Inc. All rights reserved.
2
- # See the LICENSE file in the root of this repository for details.
1
+ # Copyright © 2023-2026 ValidMind Inc. All rights reserved.
2
+ # Refer to the LICENSE file in the root of this repository for details.
3
3
  # SPDX-License-Identifier: AGPL-3.0 AND ValidMind Commercial
4
4
 
5
5
  """ValidMind API client
@@ -18,11 +18,11 @@ from urllib.parse import urlencode, urljoin
18
18
  import aiohttp
19
19
  import requests
20
20
  from aiohttp import FormData
21
- from ipywidgets import HTML, Accordion
22
21
 
22
+ from .__version__ import __version__
23
23
  from .client_config import client_config
24
24
  from .errors import MissingAPICredentialsError, MissingModelIdError, raise_api_error
25
- from .logging import get_logger, init_sentry, log_api_operation, send_single_error
25
+ from .logging import get_logger, log_api_operation
26
26
  from .utils import NumpyEncoder, is_html, md_to_html, run_async
27
27
  from .vm_models.figure import Figure
28
28
 
@@ -32,6 +32,7 @@ _api_key = os.getenv("VM_API_KEY")
32
32
  _api_secret = os.getenv("VM_API_SECRET")
33
33
  _api_host = os.getenv("VM_API_HOST")
34
34
  _model_cuid = os.getenv("VM_API_MODEL")
35
+ _document = None
35
36
  _monitoring = False
36
37
 
37
38
  __api_session: Optional[aiohttp.ClientSession] = None
@@ -68,12 +69,16 @@ def get_api_model() -> Optional[str]:
68
69
 
69
70
 
70
71
  def _get_api_headers() -> Dict[str, str]:
71
- return {
72
+ headers = {
72
73
  "X-API-KEY": _api_key,
73
74
  "X-API-SECRET": _api_secret,
74
75
  "X-MODEL-CUID": _model_cuid,
75
76
  "X-MONITORING": str(_monitoring),
77
+ "X-LIBRARY-VERSION": __version__,
76
78
  }
79
+ if _document:
80
+ headers["X-DOCUMENT-TYPE"] = _document
81
+ return headers
77
82
 
78
83
 
79
84
  def _get_session() -> aiohttp.ClientSession:
@@ -166,7 +171,7 @@ def _ping() -> Dict[str, Any]:
166
171
 
167
172
  client_info = r.json()
168
173
 
169
- init_sentry(client_info.get("sentry_config", {}))
174
+ # Sentry removed: no telemetry initialization
170
175
 
171
176
  # Only show this confirmation the first time we connect to the API
172
177
  ack_connected = not client_config.model
@@ -195,6 +200,7 @@ def init(
195
200
  model: Optional[str] = None,
196
201
  monitoring: bool = False,
197
202
  generate_descriptions: Optional[bool] = None,
203
+ document: Optional[str] = None,
198
204
  ):
199
205
  """
200
206
  Initializes the API client instances and calls the /ping endpoint to ensure
@@ -210,11 +216,12 @@ def init(
210
216
  api_secret (str, optional): The API secret. Defaults to None.
211
217
  api_host (str, optional): The API host. Defaults to None.
212
218
  monitoring (bool): The ongoing monitoring flag. Defaults to False.
213
- generate_descriptions (bool): Whether to use GenAI to generate test result descriptions. Defaults to True.
219
+ generate_descriptions (bool, optional): Whether to use GenAI to generate test result descriptions. Defaults to True.
220
+ document (str, optional): The name of the document. Omitting this argument is deprecated.
214
221
  Raises:
215
222
  ValueError: If the API key and secret are not provided
216
223
  """
217
- global _api_key, _api_secret, _api_host, _model_cuid, _monitoring
224
+ global _api_key, _api_secret, _api_host, _model_cuid, _monitoring, _document
218
225
 
219
226
  if api_key == "...":
220
227
  # special case to detect when running a notebook placeholder (...)
@@ -239,19 +246,19 @@ def init(
239
246
  if generate_descriptions is not None:
240
247
  os.environ["VALIDMIND_LLM_DESCRIPTIONS_ENABLED"] = str(generate_descriptions)
241
248
 
249
+ if document is None:
250
+ logger.error(
251
+ "Future releases will require `document` as one of the options you must provide to `vm.init()`. "
252
+ "To learn more, refer to https://docs.validmind.ai/developer/validmind-library.html"
253
+ )
254
+
255
+ _document = document
242
256
  reload()
243
257
 
244
258
 
245
259
  def reload():
246
260
  """Reconnect to the ValidMind API and reload the project configuration."""
247
-
248
- try:
249
- _ping()
250
- except Exception as e:
251
- # if the api host is https, assume we're not in dev mode and send to sentry
252
- if _api_host.startswith("https://"):
253
- send_single_error(e)
254
- raise e
261
+ _ping()
255
262
 
256
263
 
257
264
  async def aget_metadata(content_id: str) -> Dict[str, Any]:
@@ -373,6 +380,35 @@ async def alog_test_result(
373
380
  raise e
374
381
 
375
382
 
383
+ def log_test_result(
384
+ result: Dict[str, Any],
385
+ section_id: str = None,
386
+ position: int = None,
387
+ unsafe: bool = False,
388
+ config: Dict[str, bool] = None,
389
+ ) -> Dict[str, Any]:
390
+ """Logs test results information.
391
+
392
+ Args:
393
+ result (dict): A dictionary representing the test result.
394
+ section_id (str, optional): The section ID add a test driven block to the documentation.
395
+ position (int): The position in the section to add the test driven block.
396
+ unsafe (bool): If True, log the result even if it contains sensitive data.
397
+ config (Dict[str, bool]): Configuration options for displaying the test result.
398
+
399
+ Returns:
400
+ dict: The response from the API.
401
+ """
402
+ return run_async(
403
+ alog_test_result,
404
+ result=result,
405
+ section_id=section_id,
406
+ position=position,
407
+ unsafe=unsafe,
408
+ config=config,
409
+ )
410
+
411
+
376
412
  async def alog_input(
377
413
  input_id: str, type: str, metadata: Dict[str, Any]
378
414
  ) -> Dict[str, Any]:
@@ -411,9 +447,7 @@ def log_input(input_id: str, type: str, metadata: Dict[str, Any]) -> Dict[str, A
411
447
  return run_async(alog_input, input_id, type, metadata)
412
448
 
413
449
 
414
- def log_text(
415
- content_id: str, text: str, _json: Optional[Dict[str, Any]] = None
416
- ) -> Dict[str, Any]:
450
+ def log_text(content_id: str, text: str, _json: Optional[Dict[str, Any]] = None) -> str:
417
451
  """Logs free-form text to ValidMind API.
418
452
 
419
453
  Args:
@@ -426,7 +460,7 @@ def log_text(
426
460
  Exception: If the API call fails.
427
461
 
428
462
  Returns:
429
- ipywidgets.Accordion: An accordion widget containing the logged text as HTML.
463
+ str: HTML string containing the logged text in an accordion format.
430
464
  """
431
465
  if not content_id or not isinstance(content_id, str):
432
466
  raise ValueError("`content_id` must be a non-empty string")
@@ -438,8 +472,10 @@ def log_text(
438
472
 
439
473
  log_text = run_async(alog_metadata, content_id, text, _json)
440
474
 
441
- return Accordion(
442
- children=[HTML(log_text["text"])],
475
+ from .vm_models.html_renderer import StatefulHTMLRenderer
476
+
477
+ return StatefulHTMLRenderer.render_accordion(
478
+ items=[log_text["text"]],
443
479
  titles=[f"Text Block: '{log_text['content_id']}'"],
444
480
  )
445
481
 
@@ -1,5 +1,5 @@
1
- # Copyright © 2023-2024 ValidMind Inc. All rights reserved.
2
- # See the LICENSE file in the root of this repository for details.
1
+ # Copyright © 2023-2026 ValidMind Inc. All rights reserved.
2
+ # Refer to the LICENSE file in the root of this repository for details.
3
3
  # SPDX-License-Identifier: AGPL-3.0 AND ValidMind Commercial
4
4
 
5
5
  """
@@ -1,5 +1,5 @@
1
- # Copyright © 2023-2024 ValidMind Inc. All rights reserved.
2
- # See the LICENSE file in the root of this repository for details.
1
+ # Copyright © 2023-2026 ValidMind Inc. All rights reserved.
2
+ # Refer to the LICENSE file in the root of this repository for details.
3
3
  # SPDX-License-Identifier: AGPL-3.0 AND ValidMind Commercial
4
4
 
5
5
  """
@@ -0,0 +1,7 @@
1
+ # Copyright © 2023-2026 ValidMind Inc. All rights reserved.
2
+ # Refer to the LICENSE file in the root of this repository for details.
3
+ # SPDX-License-Identifier: AGPL-3.0 AND ValidMind Commercial
4
+
5
+ """
6
+ Example datasets that can be used with the ValidMind Library.
7
+ """
@@ -1,5 +1,5 @@
1
- # Copyright © 2023-2024 ValidMind Inc. All rights reserved.
2
- # See the LICENSE file in the root of this repository for details.
1
+ # Copyright © 2023-2026 ValidMind Inc. All rights reserved.
2
+ # Refer to the LICENSE file in the root of this repository for details.
3
3
  # SPDX-License-Identifier: AGPL-3.0 AND ValidMind Commercial
4
4
 
5
5
  """
@@ -1,5 +1,5 @@
1
- # Copyright © 2023-2024 ValidMind Inc. All rights reserved.
2
- # See the LICENSE file in the root of this repository for details.
1
+ # Copyright © 2023-2026 ValidMind Inc. All rights reserved.
2
+ # Refer to the LICENSE file in the root of this repository for details.
3
3
  # SPDX-License-Identifier: AGPL-3.0 AND ValidMind Commercial
4
4
 
5
5
  import os
@@ -1,5 +1,5 @@
1
- # Copyright © 2023-2024 ValidMind Inc. All rights reserved.
2
- # See the LICENSE file in the root of this repository for details.
1
+ # Copyright © 2023-2026 ValidMind Inc. All rights reserved.
2
+ # Refer to the LICENSE file in the root of this repository for details.
3
3
  # SPDX-License-Identifier: AGPL-3.0 AND ValidMind Commercial
4
4
 
5
5
  import os
@@ -1,5 +1,5 @@
1
- # Copyright © 2023-2024 ValidMind Inc. All rights reserved.
2
- # See the LICENSE file in the root of this repository for details.
1
+ # Copyright © 2023-2026 ValidMind Inc. All rights reserved.
2
+ # Refer to the LICENSE file in the root of this repository for details.
3
3
  # SPDX-License-Identifier: AGPL-3.0 AND ValidMind Commercial
4
4
 
5
5
  import os
@@ -1,5 +1,5 @@
1
- # Copyright © 2023-2024 ValidMind Inc. All rights reserved.
2
- # See the LICENSE file in the root of this repository for details.
1
+ # Copyright © 2023-2026 ValidMind Inc. All rights reserved.
2
+ # Refer to the LICENSE file in the root of this repository for details.
3
3
  # SPDX-License-Identifier: AGPL-3.0 AND ValidMind Commercial
4
4
 
5
5
  """
@@ -1,5 +1,5 @@
1
- # Copyright © 2023-2024 ValidMind Inc. All rights reserved.
2
- # See the LICENSE file in the root of this repository for details.
1
+ # Copyright © 2023-2026 ValidMind Inc. All rights reserved.
2
+ # Refer to the LICENSE file in the root of this repository for details.
3
3
  # SPDX-License-Identifier: AGPL-3.0 AND ValidMind Commercial
4
4
 
5
5
  import logging
@@ -20,14 +20,12 @@ from validmind.errors import MissingDependencyError
20
20
  try:
21
21
  import scorecardpy as sc
22
22
  except ImportError as e:
23
- if "scorecardpy" in str(e):
24
- raise MissingDependencyError(
25
- "Missing required package `scorecardpy` for credit risk demos. "
26
- "Please run `pip install validmind[credit_risk]` or `pip install scorecardpy`.",
27
- required_dependencies=["scorecardpy"],
28
- extra="credit_risk",
29
- ) from e
30
- raise e
23
+ raise MissingDependencyError(
24
+ "Missing required package `scorecardpy` for credit risk demos. "
25
+ "Please run `pip install validmind[credit_risk]` or `pip install scorecardpy`.",
26
+ required_dependencies=["scorecardpy"],
27
+ extra="credit_risk",
28
+ ) from e
31
29
 
32
30
  current_path = os.path.dirname(os.path.abspath(__file__))
33
31
  dataset_path = os.path.join(current_path, "datasets")
@@ -516,7 +514,7 @@ def get_demo_test_config(
516
514
  "inputs": {
517
515
  "dataset": "raw_dataset",
518
516
  },
519
- "params": {"min_threshold": 1},
517
+ "params": {"min_percentage_threshold": 1},
520
518
  }
521
519
  default_config["validmind.data_validation.ClassImbalance:raw_data"] = {
522
520
  "inputs": {
@@ -584,7 +582,7 @@ def get_demo_test_config(
584
582
  "inputs": {
585
583
  "dataset": "preprocess_dataset",
586
584
  },
587
- "params": {"min_threshold": 1},
585
+ "params": {"min_percentage_threshold": 1},
588
586
  }
589
587
  default_config[
590
588
  "validmind.data_validation.TabularNumericalHistograms:preprocessed_data"
@@ -1,5 +1,5 @@
1
- # Copyright © 2023-2024 ValidMind Inc. All rights reserved.
2
- # See the LICENSE file in the root of this repository for details.
1
+ # Copyright © 2023-2026 ValidMind Inc. All rights reserved.
2
+ # Refer to the LICENSE file in the root of this repository for details.
3
3
  # SPDX-License-Identifier: AGPL-3.0 AND ValidMind Commercial
4
4
 
5
5
  import os
@@ -1,5 +1,5 @@
1
- # Copyright © 2023-2024 ValidMind Inc. All rights reserved.
2
- # See the LICENSE file in the root of this repository for details.
1
+ # Copyright © 2023-2026 ValidMind Inc. All rights reserved.
2
+ # Refer to the LICENSE file in the root of this repository for details.
3
3
  # SPDX-License-Identifier: AGPL-3.0 AND ValidMind Commercial
4
4
 
5
5
  """