validmind 2.11.0__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 (381) hide show
  1. {validmind-2.11.0 → validmind-2.12.1}/PKG-INFO +8 -8
  2. {validmind-2.11.0 → validmind-2.12.1}/pyproject.toml +8 -8
  3. {validmind-2.11.0 → validmind-2.12.1}/validmind/__init__.py +5 -4
  4. validmind-2.12.1/validmind/__version__.py +1 -0
  5. {validmind-2.11.0 → validmind-2.12.1}/validmind/ai/test_descriptions.py +2 -2
  6. {validmind-2.11.0 → validmind-2.12.1}/validmind/ai/utils.py +2 -2
  7. {validmind-2.11.0 → validmind-2.12.1}/validmind/api_client.py +49 -5
  8. {validmind-2.11.0 → validmind-2.12.1}/validmind/client.py +2 -2
  9. {validmind-2.11.0 → validmind-2.12.1}/validmind/client_config.py +2 -2
  10. validmind-2.12.1/validmind/datasets/__init__.py +7 -0
  11. {validmind-2.11.0 → validmind-2.12.1}/validmind/datasets/classification/__init__.py +2 -2
  12. {validmind-2.11.0 → validmind-2.12.1}/validmind/datasets/classification/customer_churn.py +2 -2
  13. {validmind-2.11.0 → validmind-2.12.1}/validmind/datasets/classification/taiwan_credit.py +2 -2
  14. {validmind-2.11.0 → validmind-2.12.1}/validmind/datasets/cluster/digits.py +2 -2
  15. {validmind-2.11.0 → validmind-2.12.1}/validmind/datasets/credit_risk/__init__.py +2 -2
  16. {validmind-2.11.0 → validmind-2.12.1}/validmind/datasets/credit_risk/lending_club.py +10 -12
  17. {validmind-2.11.0 → validmind-2.12.1}/validmind/datasets/credit_risk/lending_club_bias.py +2 -2
  18. {validmind-2.11.0 → validmind-2.12.1}/validmind/datasets/llm/__init__.py +2 -2
  19. {validmind-2.11.0 → validmind-2.12.1}/validmind/datasets/llm/agent_dataset.py +15 -9
  20. {validmind-2.11.0 → validmind-2.12.1}/validmind/datasets/llm/rag/__init__.py +2 -2
  21. {validmind-2.11.0 → validmind-2.12.1}/validmind/datasets/llm/rag/rfp.py +2 -2
  22. {validmind-2.11.0 → validmind-2.12.1}/validmind/datasets/nlp/__init__.py +2 -2
  23. {validmind-2.11.0 → validmind-2.12.1}/validmind/datasets/nlp/cnn_dailymail.py +2 -2
  24. {validmind-2.11.0 → validmind-2.12.1}/validmind/datasets/nlp/twitter_covid_19.py +2 -2
  25. {validmind-2.11.0 → 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.11.0 → validmind-2.12.1}/validmind/datasets/regression/fred.py +2 -2
  29. {validmind-2.11.0 → 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.11.0 → validmind-2.12.1}/validmind/datasets/regression/lending_club.py +2 -2
  32. {validmind-2.11.0 → validmind-2.12.1}/validmind/errors.py +2 -2
  33. {validmind-2.11.0 → validmind-2.12.1}/validmind/experimental/agents.py +2 -2
  34. {validmind-2.11.0 → validmind-2.12.1}/validmind/html_templates/content_blocks.py +2 -2
  35. {validmind-2.11.0 → validmind-2.12.1}/validmind/input_registry.py +2 -2
  36. {validmind-2.11.0 → validmind-2.12.1}/validmind/logging.py +2 -2
  37. {validmind-2.11.0 → validmind-2.12.1}/validmind/models/__init__.py +2 -2
  38. {validmind-2.11.0 → validmind-2.12.1}/validmind/models/foundation.py +2 -2
  39. {validmind-2.11.0 → validmind-2.12.1}/validmind/models/function.py +2 -2
  40. {validmind-2.11.0 → validmind-2.12.1}/validmind/models/huggingface.py +2 -2
  41. {validmind-2.11.0 → validmind-2.12.1}/validmind/models/metadata.py +2 -2
  42. {validmind-2.11.0 → validmind-2.12.1}/validmind/models/pipeline.py +2 -2
  43. {validmind-2.11.0 → validmind-2.12.1}/validmind/models/pytorch.py +2 -2
  44. {validmind-2.11.0 → validmind-2.12.1}/validmind/models/r_model.py +2 -2
  45. {validmind-2.11.0 → validmind-2.12.1}/validmind/models/sklearn.py +2 -2
  46. {validmind-2.11.0/validmind/scorer → validmind-2.12.1/validmind/scorers}/__init__.py +3 -3
  47. {validmind-2.11.0/validmind/scorer → validmind-2.12.1/validmind/scorers}/classification/AbsoluteError.py +2 -2
  48. {validmind-2.11.0/validmind/scorer → validmind-2.12.1/validmind/scorers}/classification/BrierScore.py +2 -2
  49. {validmind-2.11.0/validmind/scorer → validmind-2.12.1/validmind/scorers}/classification/CalibrationError.py +2 -2
  50. {validmind-2.11.0/validmind/scorer → validmind-2.12.1/validmind/scorers}/classification/ClassBalance.py +2 -2
  51. {validmind-2.11.0/validmind/scorer → validmind-2.12.1/validmind/scorers}/classification/Confidence.py +2 -2
  52. {validmind-2.11.0/validmind/scorer → validmind-2.12.1/validmind/scorers}/classification/Correctness.py +2 -2
  53. {validmind-2.11.0/validmind/scorer → validmind-2.12.1/validmind/scorers}/classification/LogLoss.py +2 -2
  54. {validmind-2.11.0/validmind/scorer → validmind-2.12.1/validmind/scorers}/classification/OutlierScore.py +2 -2
  55. {validmind-2.11.0/validmind/scorer → validmind-2.12.1/validmind/scorers}/classification/ProbabilityError.py +2 -2
  56. {validmind-2.11.0/validmind/scorer → validmind-2.12.1/validmind/scorers}/classification/Uncertainty.py +2 -2
  57. {validmind-2.11.0/validmind/scorer → validmind-2.12.1/validmind/scorers}/llm/deepeval/AnswerRelevancy.py +3 -3
  58. validmind-2.12.1/validmind/scorers/llm/deepeval/ArgumentCorrectness.py +111 -0
  59. {validmind-2.11.0/validmind/scorer → validmind-2.12.1/validmind/scorers}/llm/deepeval/Bias.py +3 -3
  60. {validmind-2.11.0/validmind/scorer → validmind-2.12.1/validmind/scorers}/llm/deepeval/ContextualPrecision.py +3 -3
  61. {validmind-2.11.0/validmind/scorer → validmind-2.12.1/validmind/scorers}/llm/deepeval/ContextualRecall.py +3 -3
  62. {validmind-2.11.0/validmind/scorer → validmind-2.12.1/validmind/scorers}/llm/deepeval/ContextualRelevancy.py +3 -3
  63. {validmind-2.11.0/validmind/scorer → validmind-2.12.1/validmind/scorers}/llm/deepeval/Faithfulness.py +3 -3
  64. {validmind-2.11.0/validmind/scorer → validmind-2.12.1/validmind/scorers}/llm/deepeval/GEval.py +2 -2
  65. {validmind-2.11.0/validmind/scorer → validmind-2.12.1/validmind/scorers}/llm/deepeval/Hallucination.py +2 -2
  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.11.0/validmind/scorer → validmind-2.12.1/validmind/scorers}/llm/deepeval/Summarization.py +2 -2
  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.11.0 → validmind-2.12.1}/validmind/template.py +2 -2
  73. {validmind-2.11.0 → validmind-2.12.1}/validmind/test_suites/__init__.py +2 -2
  74. {validmind-2.11.0 → validmind-2.12.1}/validmind/test_suites/classifier.py +2 -2
  75. {validmind-2.11.0 → validmind-2.12.1}/validmind/test_suites/cluster.py +2 -2
  76. {validmind-2.11.0 → validmind-2.12.1}/validmind/test_suites/embeddings.py +2 -2
  77. {validmind-2.11.0 → validmind-2.12.1}/validmind/test_suites/llm.py +2 -2
  78. {validmind-2.11.0 → validmind-2.12.1}/validmind/test_suites/nlp.py +2 -2
  79. {validmind-2.11.0 → validmind-2.12.1}/validmind/test_suites/parameters_optimization.py +2 -2
  80. {validmind-2.11.0 → validmind-2.12.1}/validmind/test_suites/regression.py +2 -2
  81. {validmind-2.11.0 → validmind-2.12.1}/validmind/test_suites/statsmodels_timeseries.py +2 -2
  82. {validmind-2.11.0 → validmind-2.12.1}/validmind/test_suites/summarization.py +2 -2
  83. {validmind-2.11.0 → validmind-2.12.1}/validmind/test_suites/tabular_datasets.py +2 -2
  84. {validmind-2.11.0 → validmind-2.12.1}/validmind/test_suites/text_data.py +2 -2
  85. {validmind-2.11.0 → validmind-2.12.1}/validmind/test_suites/time_series.py +2 -2
  86. {validmind-2.11.0 → validmind-2.12.1}/validmind/tests/__init__.py +2 -2
  87. {validmind-2.11.0 → validmind-2.12.1}/validmind/tests/__types__.py +26 -2
  88. {validmind-2.11.0 → validmind-2.12.1}/validmind/tests/_store.py +2 -2
  89. {validmind-2.11.0 → validmind-2.12.1}/validmind/tests/comparison.py +2 -2
  90. {validmind-2.11.0 → validmind-2.12.1}/validmind/tests/data_validation/ACFandPACFPlot.py +2 -2
  91. {validmind-2.11.0 → validmind-2.12.1}/validmind/tests/data_validation/ADF.py +2 -2
  92. {validmind-2.11.0 → validmind-2.12.1}/validmind/tests/data_validation/AutoAR.py +2 -2
  93. {validmind-2.11.0 → validmind-2.12.1}/validmind/tests/data_validation/AutoMA.py +2 -2
  94. {validmind-2.11.0 → validmind-2.12.1}/validmind/tests/data_validation/AutoStationarity.py +2 -2
  95. {validmind-2.11.0 → validmind-2.12.1}/validmind/tests/data_validation/BivariateScatterPlots.py +2 -2
  96. {validmind-2.11.0 → validmind-2.12.1}/validmind/tests/data_validation/BoxPierce.py +2 -2
  97. {validmind-2.11.0 → validmind-2.12.1}/validmind/tests/data_validation/ChiSquaredFeaturesTable.py +2 -2
  98. {validmind-2.11.0 → validmind-2.12.1}/validmind/tests/data_validation/ClassImbalance.py +2 -2
  99. {validmind-2.11.0 → validmind-2.12.1}/validmind/tests/data_validation/DatasetDescription.py +2 -2
  100. {validmind-2.11.0 → validmind-2.12.1}/validmind/tests/data_validation/DatasetSplit.py +2 -2
  101. {validmind-2.11.0 → validmind-2.12.1}/validmind/tests/data_validation/DescriptiveStatistics.py +2 -2
  102. {validmind-2.11.0 → validmind-2.12.1}/validmind/tests/data_validation/DickeyFullerGLS.py +2 -2
  103. {validmind-2.11.0 → validmind-2.12.1}/validmind/tests/data_validation/Duplicates.py +2 -2
  104. {validmind-2.11.0 → validmind-2.12.1}/validmind/tests/data_validation/EngleGrangerCoint.py +2 -2
  105. {validmind-2.11.0 → validmind-2.12.1}/validmind/tests/data_validation/FeatureTargetCorrelationPlot.py +2 -2
  106. {validmind-2.11.0 → validmind-2.12.1}/validmind/tests/data_validation/HighCardinality.py +2 -2
  107. {validmind-2.11.0 → validmind-2.12.1}/validmind/tests/data_validation/HighPearsonCorrelation.py +2 -2
  108. {validmind-2.11.0 → validmind-2.12.1}/validmind/tests/data_validation/IQROutliersBarPlot.py +2 -2
  109. {validmind-2.11.0 → validmind-2.12.1}/validmind/tests/data_validation/IQROutliersTable.py +2 -2
  110. {validmind-2.11.0 → validmind-2.12.1}/validmind/tests/data_validation/IsolationForestOutliers.py +2 -2
  111. {validmind-2.11.0 → validmind-2.12.1}/validmind/tests/data_validation/JarqueBera.py +2 -2
  112. {validmind-2.11.0 → validmind-2.12.1}/validmind/tests/data_validation/KPSS.py +2 -2
  113. {validmind-2.11.0 → validmind-2.12.1}/validmind/tests/data_validation/LJungBox.py +2 -2
  114. {validmind-2.11.0 → validmind-2.12.1}/validmind/tests/data_validation/LaggedCorrelationHeatmap.py +2 -2
  115. {validmind-2.11.0 → validmind-2.12.1}/validmind/tests/data_validation/MissingValues.py +19 -14
  116. {validmind-2.11.0 → validmind-2.12.1}/validmind/tests/data_validation/MissingValuesBarPlot.py +2 -2
  117. {validmind-2.11.0 → validmind-2.12.1}/validmind/tests/data_validation/MutualInformation.py +2 -2
  118. {validmind-2.11.0 → validmind-2.12.1}/validmind/tests/data_validation/PearsonCorrelationMatrix.py +2 -2
  119. {validmind-2.11.0 → validmind-2.12.1}/validmind/tests/data_validation/PhillipsPerronArch.py +2 -2
  120. {validmind-2.11.0 → validmind-2.12.1}/validmind/tests/data_validation/ProtectedClassesCombination.py +2 -2
  121. {validmind-2.11.0 → validmind-2.12.1}/validmind/tests/data_validation/ProtectedClassesDescription.py +2 -2
  122. {validmind-2.11.0 → validmind-2.12.1}/validmind/tests/data_validation/ProtectedClassesDisparity.py +2 -2
  123. {validmind-2.11.0 → validmind-2.12.1}/validmind/tests/data_validation/ProtectedClassesThresholdOptimizer.py +2 -2
  124. {validmind-2.11.0 → validmind-2.12.1}/validmind/tests/data_validation/RollingStatsPlot.py +2 -2
  125. {validmind-2.11.0 → validmind-2.12.1}/validmind/tests/data_validation/RunsTest.py +2 -2
  126. {validmind-2.11.0 → validmind-2.12.1}/validmind/tests/data_validation/ScatterPlot.py +2 -2
  127. {validmind-2.11.0 → validmind-2.12.1}/validmind/tests/data_validation/ScoreBandDefaultRates.py +2 -2
  128. {validmind-2.11.0 → validmind-2.12.1}/validmind/tests/data_validation/SeasonalDecompose.py +2 -2
  129. {validmind-2.11.0 → validmind-2.12.1}/validmind/tests/data_validation/ShapiroWilk.py +2 -2
  130. {validmind-2.11.0 → validmind-2.12.1}/validmind/tests/data_validation/Skewness.py +2 -2
  131. {validmind-2.11.0 → validmind-2.12.1}/validmind/tests/data_validation/SpreadPlot.py +2 -2
  132. {validmind-2.11.0 → validmind-2.12.1}/validmind/tests/data_validation/TabularCategoricalBarPlots.py +2 -2
  133. {validmind-2.11.0 → validmind-2.12.1}/validmind/tests/data_validation/TabularDateTimeHistograms.py +2 -2
  134. {validmind-2.11.0 → validmind-2.12.1}/validmind/tests/data_validation/TabularDescriptionTables.py +2 -2
  135. {validmind-2.11.0 → validmind-2.12.1}/validmind/tests/data_validation/TabularNumericalHistograms.py +2 -2
  136. {validmind-2.11.0 → validmind-2.12.1}/validmind/tests/data_validation/TargetRateBarPlots.py +2 -2
  137. {validmind-2.11.0 → validmind-2.12.1}/validmind/tests/data_validation/TimeSeriesDescription.py +2 -2
  138. {validmind-2.11.0 → validmind-2.12.1}/validmind/tests/data_validation/TimeSeriesDescriptiveStatistics.py +2 -2
  139. {validmind-2.11.0 → validmind-2.12.1}/validmind/tests/data_validation/TimeSeriesFrequency.py +2 -2
  140. {validmind-2.11.0 → validmind-2.12.1}/validmind/tests/data_validation/TimeSeriesHistogram.py +2 -2
  141. {validmind-2.11.0 → validmind-2.12.1}/validmind/tests/data_validation/TimeSeriesLinePlot.py +2 -2
  142. {validmind-2.11.0 → validmind-2.12.1}/validmind/tests/data_validation/TimeSeriesMissingValues.py +2 -2
  143. {validmind-2.11.0 → validmind-2.12.1}/validmind/tests/data_validation/TimeSeriesOutliers.py +2 -2
  144. {validmind-2.11.0 → validmind-2.12.1}/validmind/tests/data_validation/TooManyZeroValues.py +2 -2
  145. {validmind-2.11.0 → validmind-2.12.1}/validmind/tests/data_validation/UniqueRows.py +2 -2
  146. {validmind-2.11.0 → validmind-2.12.1}/validmind/tests/data_validation/WOEBinPlots.py +8 -10
  147. {validmind-2.11.0 → validmind-2.12.1}/validmind/tests/data_validation/WOEBinTable.py +8 -10
  148. {validmind-2.11.0 → validmind-2.12.1}/validmind/tests/data_validation/ZivotAndrewsArch.py +2 -2
  149. {validmind-2.11.0 → validmind-2.12.1}/validmind/tests/data_validation/nlp/CommonWords.py +2 -2
  150. {validmind-2.11.0 → validmind-2.12.1}/validmind/tests/data_validation/nlp/Hashtags.py +2 -2
  151. {validmind-2.11.0 → validmind-2.12.1}/validmind/tests/data_validation/nlp/LanguageDetection.py +2 -2
  152. {validmind-2.11.0 → validmind-2.12.1}/validmind/tests/data_validation/nlp/Mentions.py +2 -2
  153. {validmind-2.11.0 → validmind-2.12.1}/validmind/tests/data_validation/nlp/PolarityAndSubjectivity.py +2 -2
  154. {validmind-2.11.0 → validmind-2.12.1}/validmind/tests/data_validation/nlp/Punctuations.py +2 -2
  155. {validmind-2.11.0 → validmind-2.12.1}/validmind/tests/data_validation/nlp/Sentiment.py +2 -2
  156. {validmind-2.11.0 → validmind-2.12.1}/validmind/tests/data_validation/nlp/StopWords.py +2 -2
  157. {validmind-2.11.0 → validmind-2.12.1}/validmind/tests/data_validation/nlp/TextDescription.py +2 -2
  158. {validmind-2.11.0 → validmind-2.12.1}/validmind/tests/data_validation/nlp/Toxicity.py +2 -2
  159. {validmind-2.11.0 → validmind-2.12.1}/validmind/tests/decorator.py +14 -14
  160. {validmind-2.11.0 → validmind-2.12.1}/validmind/tests/load.py +79 -37
  161. {validmind-2.11.0 → validmind-2.12.1}/validmind/tests/model_validation/BertScore.py +2 -2
  162. {validmind-2.11.0 → validmind-2.12.1}/validmind/tests/model_validation/BleuScore.py +2 -2
  163. {validmind-2.11.0 → validmind-2.12.1}/validmind/tests/model_validation/ClusterSizeDistribution.py +2 -2
  164. {validmind-2.11.0 → validmind-2.12.1}/validmind/tests/model_validation/ContextualRecall.py +2 -2
  165. {validmind-2.11.0 → validmind-2.12.1}/validmind/tests/model_validation/FeaturesAUC.py +2 -2
  166. {validmind-2.11.0 → validmind-2.12.1}/validmind/tests/model_validation/MeteorScore.py +2 -2
  167. {validmind-2.11.0 → validmind-2.12.1}/validmind/tests/model_validation/ModelMetadata.py +2 -2
  168. {validmind-2.11.0 → validmind-2.12.1}/validmind/tests/model_validation/ModelPredictionResiduals.py +2 -2
  169. {validmind-2.11.0 → validmind-2.12.1}/validmind/tests/model_validation/RegardScore.py +2 -2
  170. {validmind-2.11.0 → validmind-2.12.1}/validmind/tests/model_validation/RegressionResidualsPlot.py +2 -2
  171. {validmind-2.11.0 → validmind-2.12.1}/validmind/tests/model_validation/RougeScore.py +2 -2
  172. {validmind-2.11.0 → validmind-2.12.1}/validmind/tests/model_validation/TimeSeriesPredictionWithCI.py +2 -2
  173. {validmind-2.11.0 → validmind-2.12.1}/validmind/tests/model_validation/TimeSeriesPredictionsPlot.py +2 -2
  174. {validmind-2.11.0 → validmind-2.12.1}/validmind/tests/model_validation/TimeSeriesR2SquareBySegments.py +2 -2
  175. {validmind-2.11.0 → validmind-2.12.1}/validmind/tests/model_validation/TokenDisparity.py +2 -2
  176. {validmind-2.11.0 → validmind-2.12.1}/validmind/tests/model_validation/ToxicityScore.py +2 -2
  177. {validmind-2.11.0 → validmind-2.12.1}/validmind/tests/model_validation/embeddings/ClusterDistribution.py +2 -2
  178. {validmind-2.11.0 → validmind-2.12.1}/validmind/tests/model_validation/embeddings/CosineSimilarityComparison.py +2 -2
  179. {validmind-2.11.0 → validmind-2.12.1}/validmind/tests/model_validation/embeddings/CosineSimilarityDistribution.py +2 -2
  180. {validmind-2.11.0 → validmind-2.12.1}/validmind/tests/model_validation/embeddings/CosineSimilarityHeatmap.py +2 -2
  181. {validmind-2.11.0 → validmind-2.12.1}/validmind/tests/model_validation/embeddings/DescriptiveAnalytics.py +2 -2
  182. {validmind-2.11.0 → validmind-2.12.1}/validmind/tests/model_validation/embeddings/EmbeddingsVisualization2D.py +2 -2
  183. {validmind-2.11.0 → validmind-2.12.1}/validmind/tests/model_validation/embeddings/EuclideanDistanceComparison.py +2 -2
  184. {validmind-2.11.0 → validmind-2.12.1}/validmind/tests/model_validation/embeddings/EuclideanDistanceHeatmap.py +2 -2
  185. {validmind-2.11.0 → validmind-2.12.1}/validmind/tests/model_validation/embeddings/PCAComponentsPairwisePlots.py +2 -2
  186. {validmind-2.11.0 → validmind-2.12.1}/validmind/tests/model_validation/embeddings/StabilityAnalysisKeyword.py +2 -2
  187. {validmind-2.11.0 → validmind-2.12.1}/validmind/tests/model_validation/embeddings/StabilityAnalysisRandomNoise.py +2 -2
  188. {validmind-2.11.0 → validmind-2.12.1}/validmind/tests/model_validation/embeddings/StabilityAnalysisSynonyms.py +2 -2
  189. {validmind-2.11.0 → validmind-2.12.1}/validmind/tests/model_validation/embeddings/StabilityAnalysisTranslation.py +2 -2
  190. {validmind-2.11.0 → validmind-2.12.1}/validmind/tests/model_validation/embeddings/TSNEComponentsPairwisePlots.py +2 -2
  191. {validmind-2.11.0 → validmind-2.12.1}/validmind/tests/model_validation/embeddings/utils.py +2 -2
  192. {validmind-2.11.0 → validmind-2.12.1}/validmind/tests/model_validation/ragas/AnswerCorrectness.py +2 -2
  193. {validmind-2.11.0 → validmind-2.12.1}/validmind/tests/model_validation/ragas/AspectCritic.py +2 -2
  194. {validmind-2.11.0 → validmind-2.12.1}/validmind/tests/model_validation/ragas/ContextEntityRecall.py +2 -2
  195. {validmind-2.11.0 → validmind-2.12.1}/validmind/tests/model_validation/ragas/ContextPrecision.py +2 -2
  196. {validmind-2.11.0 → validmind-2.12.1}/validmind/tests/model_validation/ragas/ContextPrecisionWithoutReference.py +2 -2
  197. {validmind-2.11.0 → validmind-2.12.1}/validmind/tests/model_validation/ragas/ContextRecall.py +2 -2
  198. {validmind-2.11.0 → validmind-2.12.1}/validmind/tests/model_validation/ragas/Faithfulness.py +2 -2
  199. {validmind-2.11.0 → validmind-2.12.1}/validmind/tests/model_validation/ragas/NoiseSensitivity.py +2 -2
  200. {validmind-2.11.0 → validmind-2.12.1}/validmind/tests/model_validation/ragas/ResponseRelevancy.py +2 -2
  201. {validmind-2.11.0 → validmind-2.12.1}/validmind/tests/model_validation/ragas/SemanticSimilarity.py +2 -2
  202. {validmind-2.11.0 → validmind-2.12.1}/validmind/tests/model_validation/ragas/utils.py +2 -2
  203. {validmind-2.11.0 → validmind-2.12.1}/validmind/tests/model_validation/sklearn/AdjustedMutualInformation.py +2 -2
  204. {validmind-2.11.0 → validmind-2.12.1}/validmind/tests/model_validation/sklearn/AdjustedRandIndex.py +2 -2
  205. {validmind-2.11.0 → validmind-2.12.1}/validmind/tests/model_validation/sklearn/CalibrationCurve.py +2 -2
  206. {validmind-2.11.0 → validmind-2.12.1}/validmind/tests/model_validation/sklearn/ClassifierPerformance.py +2 -2
  207. {validmind-2.11.0 → validmind-2.12.1}/validmind/tests/model_validation/sklearn/ClassifierThresholdOptimization.py +2 -2
  208. {validmind-2.11.0 → validmind-2.12.1}/validmind/tests/model_validation/sklearn/ClusterCosineSimilarity.py +2 -2
  209. {validmind-2.11.0 → validmind-2.12.1}/validmind/tests/model_validation/sklearn/ClusterPerformanceMetrics.py +2 -2
  210. {validmind-2.11.0 → validmind-2.12.1}/validmind/tests/model_validation/sklearn/CompletenessScore.py +2 -2
  211. {validmind-2.11.0 → validmind-2.12.1}/validmind/tests/model_validation/sklearn/ConfusionMatrix.py +2 -2
  212. {validmind-2.11.0 → validmind-2.12.1}/validmind/tests/model_validation/sklearn/FeatureImportance.py +2 -2
  213. {validmind-2.11.0 → validmind-2.12.1}/validmind/tests/model_validation/sklearn/FowlkesMallowsScore.py +2 -2
  214. {validmind-2.11.0 → validmind-2.12.1}/validmind/tests/model_validation/sklearn/HomogeneityScore.py +2 -2
  215. {validmind-2.11.0 → validmind-2.12.1}/validmind/tests/model_validation/sklearn/HyperParametersTuning.py +2 -2
  216. {validmind-2.11.0 → validmind-2.12.1}/validmind/tests/model_validation/sklearn/KMeansClustersOptimization.py +2 -2
  217. {validmind-2.11.0 → validmind-2.12.1}/validmind/tests/model_validation/sklearn/MinimumAccuracy.py +2 -2
  218. {validmind-2.11.0 → validmind-2.12.1}/validmind/tests/model_validation/sklearn/MinimumF1Score.py +2 -2
  219. {validmind-2.11.0 → validmind-2.12.1}/validmind/tests/model_validation/sklearn/MinimumROCAUCScore.py +2 -2
  220. {validmind-2.11.0 → validmind-2.12.1}/validmind/tests/model_validation/sklearn/ModelParameters.py +2 -2
  221. {validmind-2.11.0 → validmind-2.12.1}/validmind/tests/model_validation/sklearn/ModelsPerformanceComparison.py +2 -2
  222. {validmind-2.11.0 → validmind-2.12.1}/validmind/tests/model_validation/sklearn/OverfitDiagnosis.py +2 -2
  223. {validmind-2.11.0 → validmind-2.12.1}/validmind/tests/model_validation/sklearn/PermutationFeatureImportance.py +2 -2
  224. {validmind-2.11.0 → validmind-2.12.1}/validmind/tests/model_validation/sklearn/PopulationStabilityIndex.py +2 -2
  225. {validmind-2.11.0 → validmind-2.12.1}/validmind/tests/model_validation/sklearn/PrecisionRecallCurve.py +2 -2
  226. {validmind-2.11.0 → validmind-2.12.1}/validmind/tests/model_validation/sklearn/ROCCurve.py +2 -2
  227. {validmind-2.11.0 → validmind-2.12.1}/validmind/tests/model_validation/sklearn/RegressionErrors.py +2 -2
  228. {validmind-2.11.0 → validmind-2.12.1}/validmind/tests/model_validation/sklearn/RegressionErrorsComparison.py +2 -2
  229. {validmind-2.11.0 → validmind-2.12.1}/validmind/tests/model_validation/sklearn/RegressionPerformance.py +2 -2
  230. {validmind-2.11.0 → validmind-2.12.1}/validmind/tests/model_validation/sklearn/RegressionR2Square.py +2 -2
  231. {validmind-2.11.0 → validmind-2.12.1}/validmind/tests/model_validation/sklearn/RegressionR2SquareComparison.py +2 -2
  232. {validmind-2.11.0 → validmind-2.12.1}/validmind/tests/model_validation/sklearn/RobustnessDiagnosis.py +2 -2
  233. {validmind-2.11.0 → validmind-2.12.1}/validmind/tests/model_validation/sklearn/SHAPGlobalImportance.py +2 -2
  234. {validmind-2.11.0 → validmind-2.12.1}/validmind/tests/model_validation/sklearn/ScoreProbabilityAlignment.py +2 -2
  235. {validmind-2.11.0 → validmind-2.12.1}/validmind/tests/model_validation/sklearn/SilhouettePlot.py +2 -2
  236. {validmind-2.11.0 → validmind-2.12.1}/validmind/tests/model_validation/sklearn/TrainingTestDegradation.py +2 -2
  237. {validmind-2.11.0 → validmind-2.12.1}/validmind/tests/model_validation/sklearn/VMeasure.py +2 -2
  238. {validmind-2.11.0 → validmind-2.12.1}/validmind/tests/model_validation/sklearn/WeakspotsDiagnosis.py +2 -2
  239. {validmind-2.11.0 → validmind-2.12.1}/validmind/tests/model_validation/statsmodels/AutoARIMA.py +2 -2
  240. {validmind-2.11.0 → validmind-2.12.1}/validmind/tests/model_validation/statsmodels/CumulativePredictionProbabilities.py +2 -2
  241. {validmind-2.11.0 → validmind-2.12.1}/validmind/tests/model_validation/statsmodels/DurbinWatsonTest.py +2 -2
  242. {validmind-2.11.0 → validmind-2.12.1}/validmind/tests/model_validation/statsmodels/GINITable.py +2 -2
  243. {validmind-2.11.0 → validmind-2.12.1}/validmind/tests/model_validation/statsmodels/KolmogorovSmirnov.py +2 -2
  244. {validmind-2.11.0 → validmind-2.12.1}/validmind/tests/model_validation/statsmodels/Lilliefors.py +2 -2
  245. {validmind-2.11.0 → validmind-2.12.1}/validmind/tests/model_validation/statsmodels/PredictionProbabilitiesHistogram.py +2 -2
  246. {validmind-2.11.0 → validmind-2.12.1}/validmind/tests/model_validation/statsmodels/RegressionCoeffs.py +2 -2
  247. {validmind-2.11.0 → validmind-2.12.1}/validmind/tests/model_validation/statsmodels/RegressionFeatureSignificance.py +2 -2
  248. {validmind-2.11.0 → validmind-2.12.1}/validmind/tests/model_validation/statsmodels/RegressionModelForecastPlot.py +2 -2
  249. {validmind-2.11.0 → validmind-2.12.1}/validmind/tests/model_validation/statsmodels/RegressionModelForecastPlotLevels.py +2 -2
  250. {validmind-2.11.0 → validmind-2.12.1}/validmind/tests/model_validation/statsmodels/RegressionModelSensitivityPlot.py +2 -2
  251. {validmind-2.11.0 → validmind-2.12.1}/validmind/tests/model_validation/statsmodels/RegressionModelSummary.py +2 -2
  252. {validmind-2.11.0 → validmind-2.12.1}/validmind/tests/model_validation/statsmodels/RegressionPermutationFeatureImportance.py +2 -2
  253. {validmind-2.11.0 → validmind-2.12.1}/validmind/tests/model_validation/statsmodels/ScorecardHistogram.py +2 -2
  254. {validmind-2.11.0 → validmind-2.12.1}/validmind/tests/model_validation/statsmodels/statsutils.py +2 -2
  255. {validmind-2.11.0 → validmind-2.12.1}/validmind/tests/ongoing_monitoring/CalibrationCurveDrift.py +2 -2
  256. {validmind-2.11.0 → validmind-2.12.1}/validmind/tests/ongoing_monitoring/ClassDiscriminationDrift.py +2 -2
  257. {validmind-2.11.0 → validmind-2.12.1}/validmind/tests/ongoing_monitoring/ClassImbalanceDrift.py +2 -2
  258. {validmind-2.11.0 → validmind-2.12.1}/validmind/tests/ongoing_monitoring/ClassificationAccuracyDrift.py +2 -2
  259. {validmind-2.11.0 → validmind-2.12.1}/validmind/tests/ongoing_monitoring/ConfusionMatrixDrift.py +2 -2
  260. {validmind-2.11.0 → validmind-2.12.1}/validmind/tests/ongoing_monitoring/CumulativePredictionProbabilitiesDrift.py +2 -2
  261. {validmind-2.11.0 → validmind-2.12.1}/validmind/tests/ongoing_monitoring/FeatureDrift.py +2 -2
  262. {validmind-2.11.0 → validmind-2.12.1}/validmind/tests/ongoing_monitoring/PredictionAcrossEachFeature.py +2 -2
  263. {validmind-2.11.0 → validmind-2.12.1}/validmind/tests/ongoing_monitoring/PredictionCorrelation.py +2 -2
  264. {validmind-2.11.0 → validmind-2.12.1}/validmind/tests/ongoing_monitoring/PredictionProbabilitiesHistogramDrift.py +2 -2
  265. {validmind-2.11.0 → validmind-2.12.1}/validmind/tests/ongoing_monitoring/PredictionQuantilesAcrossFeatures.py +2 -2
  266. {validmind-2.11.0 → validmind-2.12.1}/validmind/tests/ongoing_monitoring/ROCCurveDrift.py +2 -2
  267. {validmind-2.11.0 → validmind-2.12.1}/validmind/tests/ongoing_monitoring/ScoreBandsDrift.py +2 -2
  268. {validmind-2.11.0 → validmind-2.12.1}/validmind/tests/ongoing_monitoring/ScorecardHistogramDrift.py +2 -2
  269. {validmind-2.11.0 → validmind-2.12.1}/validmind/tests/ongoing_monitoring/TargetPredictionDistributionPlot.py +2 -2
  270. {validmind-2.11.0 → validmind-2.12.1}/validmind/tests/output.py +2 -2
  271. {validmind-2.11.0 → validmind-2.12.1}/validmind/tests/plots/BoxPlot.py +2 -2
  272. {validmind-2.11.0 → validmind-2.12.1}/validmind/tests/plots/CorrelationHeatmap.py +2 -2
  273. {validmind-2.11.0 → validmind-2.12.1}/validmind/tests/plots/HistogramPlot.py +2 -2
  274. {validmind-2.11.0 → validmind-2.12.1}/validmind/tests/plots/ViolinPlot.py +2 -2
  275. {validmind-2.11.0 → validmind-2.12.1}/validmind/tests/prompt_validation/Bias.py +2 -2
  276. {validmind-2.11.0 → validmind-2.12.1}/validmind/tests/prompt_validation/Clarity.py +2 -2
  277. {validmind-2.11.0 → validmind-2.12.1}/validmind/tests/prompt_validation/Conciseness.py +2 -2
  278. {validmind-2.11.0 → validmind-2.12.1}/validmind/tests/prompt_validation/Delimitation.py +2 -2
  279. {validmind-2.11.0 → validmind-2.12.1}/validmind/tests/prompt_validation/NegativeInstruction.py +2 -2
  280. {validmind-2.11.0 → validmind-2.12.1}/validmind/tests/prompt_validation/Robustness.py +2 -2
  281. {validmind-2.11.0 → validmind-2.12.1}/validmind/tests/prompt_validation/Specificity.py +2 -2
  282. {validmind-2.11.0 → validmind-2.12.1}/validmind/tests/prompt_validation/ai_powered_test.py +2 -2
  283. {validmind-2.11.0 → validmind-2.12.1}/validmind/tests/run.py +2 -2
  284. {validmind-2.11.0 → validmind-2.12.1}/validmind/tests/stats/CorrelationAnalysis.py +2 -2
  285. {validmind-2.11.0 → validmind-2.12.1}/validmind/tests/stats/DescriptiveStats.py +2 -2
  286. {validmind-2.11.0 → validmind-2.12.1}/validmind/tests/stats/NormalityTests.py +2 -2
  287. {validmind-2.11.0 → validmind-2.12.1}/validmind/tests/stats/OutlierDetection.py +2 -2
  288. {validmind-2.11.0 → validmind-2.12.1}/validmind/tests/test_providers.py +5 -5
  289. {validmind-2.11.0 → validmind-2.12.1}/validmind/tests/utils.py +2 -2
  290. {validmind-2.11.0 → validmind-2.12.1}/validmind/unit_metrics/__init__.py +2 -2
  291. {validmind-2.11.0 → validmind-2.12.1}/validmind/unit_metrics/classification/Accuracy.py +2 -2
  292. {validmind-2.11.0 → validmind-2.12.1}/validmind/unit_metrics/classification/F1.py +2 -2
  293. {validmind-2.11.0 → validmind-2.12.1}/validmind/unit_metrics/classification/Precision.py +2 -2
  294. {validmind-2.11.0 → validmind-2.12.1}/validmind/unit_metrics/classification/ROC_AUC.py +2 -2
  295. {validmind-2.11.0 → validmind-2.12.1}/validmind/unit_metrics/classification/Recall.py +2 -2
  296. {validmind-2.11.0 → validmind-2.12.1}/validmind/unit_metrics/regression/AdjustedRSquaredScore.py +2 -2
  297. {validmind-2.11.0 → validmind-2.12.1}/validmind/unit_metrics/regression/GiniCoefficient.py +2 -2
  298. {validmind-2.11.0 → validmind-2.12.1}/validmind/unit_metrics/regression/HuberLoss.py +2 -2
  299. {validmind-2.11.0 → validmind-2.12.1}/validmind/unit_metrics/regression/KolmogorovSmirnovStatistic.py +2 -2
  300. {validmind-2.11.0 → validmind-2.12.1}/validmind/unit_metrics/regression/MeanAbsoluteError.py +2 -2
  301. {validmind-2.11.0 → validmind-2.12.1}/validmind/unit_metrics/regression/MeanAbsolutePercentageError.py +2 -2
  302. {validmind-2.11.0 → validmind-2.12.1}/validmind/unit_metrics/regression/MeanBiasDeviation.py +2 -2
  303. {validmind-2.11.0 → validmind-2.12.1}/validmind/unit_metrics/regression/MeanSquaredError.py +2 -2
  304. {validmind-2.11.0 → validmind-2.12.1}/validmind/unit_metrics/regression/QuantileLoss.py +2 -2
  305. {validmind-2.11.0 → validmind-2.12.1}/validmind/unit_metrics/regression/RSquaredScore.py +2 -2
  306. {validmind-2.11.0 → validmind-2.12.1}/validmind/unit_metrics/regression/RootMeanSquaredError.py +2 -2
  307. {validmind-2.11.0 → validmind-2.12.1}/validmind/utils.py +2 -2
  308. {validmind-2.11.0 → validmind-2.12.1}/validmind/vm_models/__init__.py +2 -2
  309. {validmind-2.11.0 → validmind-2.12.1}/validmind/vm_models/dataset/__init__.py +2 -2
  310. {validmind-2.11.0 → validmind-2.12.1}/validmind/vm_models/dataset/dataset.py +9 -9
  311. {validmind-2.11.0 → validmind-2.12.1}/validmind/vm_models/dataset/utils.py +2 -2
  312. {validmind-2.11.0 → validmind-2.12.1}/validmind/vm_models/figure.py +2 -2
  313. {validmind-2.11.0 → validmind-2.12.1}/validmind/vm_models/html_progress.py +2 -2
  314. {validmind-2.11.0 → validmind-2.12.1}/validmind/vm_models/html_renderer.py +2 -2
  315. {validmind-2.11.0 → validmind-2.12.1}/validmind/vm_models/input.py +2 -2
  316. {validmind-2.11.0 → validmind-2.12.1}/validmind/vm_models/model.py +2 -2
  317. {validmind-2.11.0 → validmind-2.12.1}/validmind/vm_models/result/__init__.py +2 -2
  318. {validmind-2.11.0 → validmind-2.12.1}/validmind/vm_models/result/pii_filter.py +2 -2
  319. {validmind-2.11.0 → validmind-2.12.1}/validmind/vm_models/result/result.py +2 -2
  320. {validmind-2.11.0 → validmind-2.12.1}/validmind/vm_models/result/utils.py +2 -2
  321. validmind-2.12.1/validmind/vm_models/test_suite/__init__.py +5 -0
  322. {validmind-2.11.0 → validmind-2.12.1}/validmind/vm_models/test_suite/runner.py +2 -2
  323. {validmind-2.11.0 → validmind-2.12.1}/validmind/vm_models/test_suite/summary.py +2 -2
  324. {validmind-2.11.0 → validmind-2.12.1}/validmind/vm_models/test_suite/test.py +2 -2
  325. {validmind-2.11.0 → validmind-2.12.1}/validmind/vm_models/test_suite/test_suite.py +2 -2
  326. validmind-2.11.0/validmind/__version__.py +0 -1
  327. validmind-2.11.0/validmind/datasets/__init__.py +0 -7
  328. validmind-2.11.0/validmind/datasets/regression/california_housing.py +0 -34
  329. validmind-2.11.0/validmind/scorer/llm/deepeval/TaskCompletion.py +0 -208
  330. validmind-2.11.0/validmind/scorer/llm/deepeval/__init__.py +0 -7
  331. validmind-2.11.0/validmind/vm_models/test_suite/__init__.py +0 -5
  332. {validmind-2.11.0 → validmind-2.12.1}/LICENSE +0 -0
  333. {validmind-2.11.0 → validmind-2.12.1}/README.pypi.md +0 -0
  334. {validmind-2.11.0 → validmind-2.12.1}/validmind/datasets/classification/datasets/bank_customer_churn.csv +0 -0
  335. {validmind-2.11.0 → validmind-2.12.1}/validmind/datasets/classification/datasets/taiwan_credit.csv +0 -0
  336. {validmind-2.11.0 → validmind-2.12.1}/validmind/datasets/credit_risk/datasets/lending_club_biased.csv.gz +0 -0
  337. {validmind-2.11.0 → validmind-2.12.1}/validmind/datasets/credit_risk/datasets/lending_club_loan_data_2007_2014_clean.csv.gz +0 -0
  338. {validmind-2.11.0 → validmind-2.12.1}/validmind/datasets/llm/rag/datasets/rfp_existing_questions_client_1.csv +0 -0
  339. {validmind-2.11.0 → validmind-2.12.1}/validmind/datasets/llm/rag/datasets/rfp_existing_questions_client_2.csv +0 -0
  340. {validmind-2.11.0 → validmind-2.12.1}/validmind/datasets/llm/rag/datasets/rfp_existing_questions_client_3.csv +0 -0
  341. {validmind-2.11.0 → validmind-2.12.1}/validmind/datasets/llm/rag/datasets/rfp_existing_questions_client_4.csv +0 -0
  342. {validmind-2.11.0 → validmind-2.12.1}/validmind/datasets/llm/rag/datasets/rfp_existing_questions_client_5.csv +0 -0
  343. {validmind-2.11.0 → validmind-2.12.1}/validmind/datasets/nlp/datasets/Covid_19.csv +0 -0
  344. {validmind-2.11.0 → validmind-2.12.1}/validmind/datasets/nlp/datasets/cnn_dailymail_100_with_predictions.csv +0 -0
  345. {validmind-2.11.0 → validmind-2.12.1}/validmind/datasets/nlp/datasets/cnn_dailymail_500_with_predictions.csv +0 -0
  346. {validmind-2.11.0 → validmind-2.12.1}/validmind/datasets/nlp/datasets/sentiments_with_predictions.csv +0 -0
  347. {validmind-2.11.0 → validmind-2.12.1}/validmind/datasets/regression/datasets/fred/CPIAUCSL.csv +0 -0
  348. {validmind-2.11.0 → validmind-2.12.1}/validmind/datasets/regression/datasets/fred/CSUSHPISA.csv +0 -0
  349. {validmind-2.11.0 → validmind-2.12.1}/validmind/datasets/regression/datasets/fred/DRSFRMACBS.csv +0 -0
  350. {validmind-2.11.0 → validmind-2.12.1}/validmind/datasets/regression/datasets/fred/FEDFUNDS.csv +0 -0
  351. {validmind-2.11.0 → validmind-2.12.1}/validmind/datasets/regression/datasets/fred/GDP.csv +0 -0
  352. {validmind-2.11.0 → validmind-2.12.1}/validmind/datasets/regression/datasets/fred/GDPC1.csv +0 -0
  353. {validmind-2.11.0 → validmind-2.12.1}/validmind/datasets/regression/datasets/fred/GS10.csv +0 -0
  354. {validmind-2.11.0 → validmind-2.12.1}/validmind/datasets/regression/datasets/fred/GS3.csv +0 -0
  355. {validmind-2.11.0 → validmind-2.12.1}/validmind/datasets/regression/datasets/fred/GS5.csv +0 -0
  356. {validmind-2.11.0 → validmind-2.12.1}/validmind/datasets/regression/datasets/fred/MORTGAGE30US.csv +0 -0
  357. {validmind-2.11.0 → validmind-2.12.1}/validmind/datasets/regression/datasets/fred/UNRATE.csv +0 -0
  358. {validmind-2.11.0 → validmind-2.12.1}/validmind/datasets/regression/datasets/fred_loan_rates.csv +0 -0
  359. {validmind-2.11.0 → validmind-2.12.1}/validmind/datasets/regression/datasets/fred_loan_rates_test_1.csv +0 -0
  360. {validmind-2.11.0 → validmind-2.12.1}/validmind/datasets/regression/datasets/fred_loan_rates_test_2.csv +0 -0
  361. {validmind-2.11.0 → validmind-2.12.1}/validmind/datasets/regression/datasets/fred_loan_rates_test_3.csv +0 -0
  362. {validmind-2.11.0 → validmind-2.12.1}/validmind/datasets/regression/datasets/fred_loan_rates_test_4.csv +0 -0
  363. {validmind-2.11.0 → validmind-2.12.1}/validmind/datasets/regression/datasets/fred_loan_rates_test_5.csv +0 -0
  364. {validmind-2.11.0 → validmind-2.12.1}/validmind/datasets/regression/datasets/leanding_club_loan_rates.csv +0 -0
  365. {validmind-2.11.0 → validmind-2.12.1}/validmind/datasets/regression/models/fred_loan_rates_model_1.pkl +0 -0
  366. {validmind-2.11.0 → validmind-2.12.1}/validmind/datasets/regression/models/fred_loan_rates_model_2.pkl +0 -0
  367. {validmind-2.11.0 → validmind-2.12.1}/validmind/datasets/regression/models/fred_loan_rates_model_3.pkl +0 -0
  368. {validmind-2.11.0 → validmind-2.12.1}/validmind/datasets/regression/models/fred_loan_rates_model_4.pkl +0 -0
  369. {validmind-2.11.0 → validmind-2.12.1}/validmind/datasets/regression/models/fred_loan_rates_model_5.pkl +0 -0
  370. {validmind-2.11.0 → validmind-2.12.1}/validmind/experimental/__init__.py +0 -0
  371. {validmind-2.11.0 → validmind-2.12.1}/validmind/html_templates/__init__.py +0 -0
  372. {validmind-2.11.0/validmind/scorer → validmind-2.12.1/validmind/scorers}/classification/__init__.py +0 -0
  373. {validmind-2.11.0 → validmind-2.12.1}/validmind/tests/data_validation/__init__.py +0 -0
  374. {validmind-2.11.0 → validmind-2.12.1}/validmind/tests/data_validation/nlp/__init__.py +0 -0
  375. {validmind-2.11.0 → validmind-2.12.1}/validmind/tests/model_validation/__init__.py +0 -0
  376. {validmind-2.11.0 → validmind-2.12.1}/validmind/tests/model_validation/sklearn/__init__.py +0 -0
  377. {validmind-2.11.0 → validmind-2.12.1}/validmind/tests/model_validation/statsmodels/__init__.py +0 -0
  378. {validmind-2.11.0 → validmind-2.12.1}/validmind/tests/plots/__init__.py +0 -0
  379. {validmind-2.11.0 → validmind-2.12.1}/validmind/tests/prompt_validation/__init__.py +0 -0
  380. {validmind-2.11.0 → validmind-2.12.1}/validmind/tests/stats/__init__.py +0 -0
  381. {validmind-2.11.0 → 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.11.0
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
@@ -735,7 +735,7 @@ Requires-Dist: nltk (>=3.8.1,<4.0.0) ; extra == "nlp"
735
735
  Requires-Dist: numpy (>=1.23,<2.0.0)
736
736
  Requires-Dist: openai (>=1)
737
737
  Requires-Dist: pandas (>=2.0.3,<3.0.0)
738
- Requires-Dist: plotly (>=5.0.0,<6.0.0)
738
+ Requires-Dist: plotly (>=6.0.0)
739
739
  Requires-Dist: polars
740
740
  Requires-Dist: presidio-analyzer ; extra == "pii-detection"
741
741
  Requires-Dist: presidio-structured ; extra == "pii-detection"
@@ -750,16 +750,16 @@ Requires-Dist: rouge (>=1) ; extra == "nlp"
750
750
  Requires-Dist: scikit-learn
751
751
  Requires-Dist: scipy ; extra == "all"
752
752
  Requires-Dist: scipy ; extra == "stats"
753
- Requires-Dist: scorecardpy (>=0.1.9.6,<0.2.0) ; extra == "all"
754
- 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"
755
755
  Requires-Dist: seaborn
756
756
  Requires-Dist: sentencepiece (>=0.2.0,<0.3.0) ; extra == "all"
757
757
  Requires-Dist: sentencepiece (>=0.2.0,<0.3.0) ; extra == "huggingface"
758
758
  Requires-Dist: sentencepiece (>=0.2.0,<0.3.0) ; extra == "llm"
759
759
  Requires-Dist: shap (>=0.46.0) ; extra == "all"
760
760
  Requires-Dist: shap (>=0.46.0) ; extra == "explainability"
761
- Requires-Dist: statsmodels ; extra == "all"
762
- 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"
763
763
  Requires-Dist: tabulate (>=0.9.0,<0.10.0)
764
764
  Requires-Dist: textblob (>=0.18.0.post0,<0.19.0) ; extra == "all"
765
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.11.0"
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,7 +13,7 @@ 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",
@@ -22,7 +22,7 @@ dependencies = [
22
22
  "numpy (>=1.23,<2.0.0)",
23
23
  "openai (>=1)",
24
24
  "pandas (>=2.0.3,<3.0.0)",
25
- "plotly (>=5.0.0,<6.0.0)",
25
+ "plotly (>=6.0.0)",
26
26
  "polars",
27
27
  "python-dotenv",
28
28
  "scikit-learn",
@@ -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",
@@ -78,10 +78,10 @@ nlp = [
78
78
  "pyarrow (<16)",
79
79
  ]
80
80
  pytorch = ["torch (>=2.0.0)"]
81
- stats = ["scipy", "statsmodels", "arch"]
81
+ stats = ["scipy", "statsmodels (>=0.14.2,<0.15.0)", "arch"]
82
82
  xgboost = ["xgboost (>=1.5.2,<3)"]
83
83
  explainability = ["shap (>=0.46.0)"]
84
- credit_risk = ["scorecardpy (>=0.1.9.6,<0.2.0)"]
84
+ credit_risk = ["scorecardpy==0.1.9.6"]
85
85
  datasets = ["datasets (>=2.10.0,<3.0.0)"]
86
86
  pii-detection = ["presidio-analyzer", "presidio-structured"]
87
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
  """
@@ -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,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 json
@@ -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
@@ -19,6 +19,7 @@ import aiohttp
19
19
  import requests
20
20
  from aiohttp import FormData
21
21
 
22
+ from .__version__ import __version__
22
23
  from .client_config import client_config
23
24
  from .errors import MissingAPICredentialsError, MissingModelIdError, raise_api_error
24
25
  from .logging import get_logger, log_api_operation
@@ -31,6 +32,7 @@ _api_key = os.getenv("VM_API_KEY")
31
32
  _api_secret = os.getenv("VM_API_SECRET")
32
33
  _api_host = os.getenv("VM_API_HOST")
33
34
  _model_cuid = os.getenv("VM_API_MODEL")
35
+ _document = None
34
36
  _monitoring = False
35
37
 
36
38
  __api_session: Optional[aiohttp.ClientSession] = None
@@ -67,12 +69,16 @@ def get_api_model() -> Optional[str]:
67
69
 
68
70
 
69
71
  def _get_api_headers() -> Dict[str, str]:
70
- return {
72
+ headers = {
71
73
  "X-API-KEY": _api_key,
72
74
  "X-API-SECRET": _api_secret,
73
75
  "X-MODEL-CUID": _model_cuid,
74
76
  "X-MONITORING": str(_monitoring),
77
+ "X-LIBRARY-VERSION": __version__,
75
78
  }
79
+ if _document:
80
+ headers["X-DOCUMENT-TYPE"] = _document
81
+ return headers
76
82
 
77
83
 
78
84
  def _get_session() -> aiohttp.ClientSession:
@@ -194,6 +200,7 @@ def init(
194
200
  model: Optional[str] = None,
195
201
  monitoring: bool = False,
196
202
  generate_descriptions: Optional[bool] = None,
203
+ document: Optional[str] = None,
197
204
  ):
198
205
  """
199
206
  Initializes the API client instances and calls the /ping endpoint to ensure
@@ -209,11 +216,12 @@ def init(
209
216
  api_secret (str, optional): The API secret. Defaults to None.
210
217
  api_host (str, optional): The API host. Defaults to None.
211
218
  monitoring (bool): The ongoing monitoring flag. Defaults to False.
212
- 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.
213
221
  Raises:
214
222
  ValueError: If the API key and secret are not provided
215
223
  """
216
- global _api_key, _api_secret, _api_host, _model_cuid, _monitoring
224
+ global _api_key, _api_secret, _api_host, _model_cuid, _monitoring, _document
217
225
 
218
226
  if api_key == "...":
219
227
  # special case to detect when running a notebook placeholder (...)
@@ -238,6 +246,13 @@ def init(
238
246
  if generate_descriptions is not None:
239
247
  os.environ["VALIDMIND_LLM_DESCRIPTIONS_ENABLED"] = str(generate_descriptions)
240
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
241
256
  reload()
242
257
 
243
258
 
@@ -365,6 +380,35 @@ async def alog_test_result(
365
380
  raise e
366
381
 
367
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
+
368
412
  async def alog_input(
369
413
  input_id: str, type: str, metadata: Dict[str, Any]
370
414
  ) -> Dict[str, Any]:
@@ -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
  """
@@ -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
  """
@@ -103,6 +103,18 @@ class LLMAgentDataset(VMDataset):
103
103
  # Convert to pandas DataFrame for VMDataset compatibility
104
104
  df = self._convert_to_dataframe()
105
105
 
106
+ # Build extra_columns only for columns that exist in the DataFrame
107
+ possible_extra_columns = [
108
+ "actual_output",
109
+ "context",
110
+ "retrieval_context",
111
+ "tools_called",
112
+ "expected_tools",
113
+ ]
114
+ extra_columns = {
115
+ col: col for col in possible_extra_columns if col in df.columns
116
+ }
117
+
106
118
  # Initialize VMDataset with the converted data
107
119
  super().__init__(
108
120
  raw_dataset=df.values,
@@ -110,13 +122,7 @@ class LLMAgentDataset(VMDataset):
110
122
  columns=df.columns.tolist(),
111
123
  text_column="input", # The input text for LLM
112
124
  target_column="expected_output", # Expected response
113
- extra_columns={
114
- "actual_output": "actual_output",
115
- "context": "context",
116
- "retrieval_context": "retrieval_context",
117
- "tools_called": "tools_called",
118
- "expected_tools": "expected_tools",
119
- },
125
+ extra_columns=extra_columns if extra_columns else None,
120
126
  **kwargs,
121
127
  )
122
128
 
@@ -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
  """
@@ -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
  """
@@ -0,0 +1,137 @@
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
+ import os
6
+ from urllib.error import HTTPError, URLError
7
+
8
+ import pandas as pd
9
+ from sklearn.datasets import fetch_california_housing
10
+ from sklearn.model_selection import train_test_split
11
+
12
+ current_path = os.path.dirname(os.path.abspath(__file__))
13
+ dataset_path = os.path.join(current_path, "datasets")
14
+
15
+ feature_columns = ["HouseAge", "AveRooms", "AveBedrms", "Population", "AveOccup"]
16
+ target_column = "MedHouseVal"
17
+
18
+ # Path to bundled dataset file
19
+ bundled_data_file = os.path.join(dataset_path, "california_housing.csv")
20
+
21
+
22
+ def load_data(full_dataset=False, source: str = "bundled"):
23
+ """
24
+ Load the California housing dataset.
25
+
26
+ This function first attempts to load from a bundled dataset file in the repository.
27
+ If the bundled file is not available, it falls back to sklearn's fetch function
28
+ (which uses cache or attempts download).
29
+
30
+ Args:
31
+ full_dataset: Not currently used, kept for API compatibility.
32
+ source: 'bundled' to load from repository file (default), 'sklearn' to use sklearn's fetch.
33
+
34
+ Returns:
35
+ pd.DataFrame: DataFrame containing the California housing data.
36
+
37
+ Raises:
38
+ RuntimeError: If the dataset cannot be loaded from bundled file or downloaded.
39
+ FileNotFoundError: If bundled file is requested but not found.
40
+ """
41
+ if source == "bundled":
42
+ # Try to load from bundled dataset file
43
+ if os.path.exists(bundled_data_file):
44
+ df = pd.read_csv(bundled_data_file)
45
+ # Ensure we have the correct columns
46
+ required_cols = feature_columns + [target_column]
47
+ if all(col in df.columns for col in required_cols):
48
+ return df[required_cols]
49
+ else:
50
+ # If columns don't match, fall back to sklearn
51
+ return _load_from_sklearn()
52
+ else:
53
+ # Bundled file not found, fall back to sklearn
54
+ return _load_from_sklearn()
55
+ elif source == "sklearn":
56
+ return _load_from_sklearn()
57
+ else:
58
+ raise ValueError("Invalid source specified. Choose 'bundled' or 'sklearn'.")
59
+
60
+
61
+ def _load_from_sklearn():
62
+ """
63
+ Load the California housing dataset from sklearn.
64
+
65
+ This function first attempts to load from sklearn's cache. If the dataset
66
+ is not cached, it attempts to download it. If download fails (e.g., 403 Forbidden),
67
+ it provides helpful error messages.
68
+
69
+ Returns:
70
+ pd.DataFrame: DataFrame containing the California housing data.
71
+
72
+ Raises:
73
+ RuntimeError: If the dataset cannot be downloaded due to network issues (e.g., 403 Forbidden).
74
+ URLError: If there's a URL-related error when fetching the dataset.
75
+ OSError: If the dataset is not cached and cannot be downloaded.
76
+ """
77
+ # First, try to load from cache (won't attempt download)
78
+ try:
79
+ california_housing = fetch_california_housing(
80
+ as_frame=True, download_if_missing=False
81
+ )
82
+ except OSError:
83
+ # Dataset not in cache, try to download it
84
+ try:
85
+ california_housing = fetch_california_housing(as_frame=True)
86
+ except HTTPError as e:
87
+ if (
88
+ "403" in str(e)
89
+ or "Forbidden" in str(e)
90
+ or (hasattr(e, "code") and e.code == 403)
91
+ ):
92
+ error_msg = (
93
+ "HTTP 403 Forbidden error when downloading California housing dataset.\n\n"
94
+ "This is a known issue with sklearn's dataset repository access restrictions.\n\n"
95
+ "The dataset should be available as a bundled file in the repository.\n"
96
+ "If you're seeing this error, please ensure the bundled dataset file exists\n"
97
+ "at: {}\n\n".format(bundled_data_file)
98
+ + "Alternatively, you can manually download the dataset from:\n"
99
+ "https://www.dcc.fc.up.pt/~ltorgo/Regression/cal_housing.tgz\n"
100
+ "and extract it to ~/scikit_learn_data/cal_housing/"
101
+ )
102
+ raise RuntimeError(error_msg) from e
103
+ else:
104
+ error_msg = (
105
+ f"Failed to download California housing dataset: {str(e)}\n\n"
106
+ "This error typically occurs when:\n"
107
+ " 1. There's no internet connection\n"
108
+ " 2. The sklearn dataset repository is temporarily unavailable\n"
109
+ " 3. There's a network firewall blocking the download\n\n"
110
+ "The dataset should be automatically cached after the first successful download.\n"
111
+ "Please check your network connection and try again."
112
+ )
113
+ raise RuntimeError(error_msg) from e
114
+ except URLError as e:
115
+ error_msg = (
116
+ f"URL error when downloading California housing dataset: {str(e)}\n\n"
117
+ "This typically indicates a network connectivity issue.\n"
118
+ "Please check your internet connection and try again."
119
+ )
120
+ raise URLError(error_msg) from e
121
+
122
+ df = california_housing.data[feature_columns]
123
+ df = df.copy()
124
+ df[target_column] = california_housing.target.values
125
+
126
+ return df
127
+
128
+
129
+ def preprocess(df):
130
+ df = df.copy()
131
+
132
+ train_val_df, test_df = train_test_split(df, test_size=0.20)
133
+
134
+ # This guarantees a 60/20/20 split
135
+ train_df, validation_df = train_test_split(train_val_df, test_size=0.25)
136
+
137
+ return train_df, validation_df, test_df