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.
- {validmind-2.10.1 → validmind-2.12.1}/PKG-INFO +10 -9
- {validmind-2.10.1 → validmind-2.12.1}/pyproject.toml +10 -9
- {validmind-2.10.1 → validmind-2.12.1}/validmind/__init__.py +6 -5
- validmind-2.12.1/validmind/__version__.py +1 -0
- {validmind-2.10.1 → validmind-2.12.1}/validmind/ai/test_descriptions.py +72 -21
- {validmind-2.10.1 → validmind-2.12.1}/validmind/ai/utils.py +2 -2
- {validmind-2.10.1 → validmind-2.12.1}/validmind/api_client.py +58 -22
- {validmind-2.10.1 → validmind-2.12.1}/validmind/client.py +2 -2
- {validmind-2.10.1 → validmind-2.12.1}/validmind/client_config.py +2 -2
- validmind-2.12.1/validmind/datasets/__init__.py +7 -0
- {validmind-2.10.1 → validmind-2.12.1}/validmind/datasets/classification/__init__.py +2 -2
- {validmind-2.10.1 → validmind-2.12.1}/validmind/datasets/classification/customer_churn.py +2 -2
- {validmind-2.10.1 → validmind-2.12.1}/validmind/datasets/classification/taiwan_credit.py +2 -2
- {validmind-2.10.1 → validmind-2.12.1}/validmind/datasets/cluster/digits.py +2 -2
- {validmind-2.10.1 → validmind-2.12.1}/validmind/datasets/credit_risk/__init__.py +2 -2
- {validmind-2.10.1 → validmind-2.12.1}/validmind/datasets/credit_risk/lending_club.py +10 -12
- {validmind-2.10.1 → validmind-2.12.1}/validmind/datasets/credit_risk/lending_club_bias.py +2 -2
- {validmind-2.10.1 → validmind-2.12.1}/validmind/datasets/llm/__init__.py +2 -2
- {validmind-2.10.1 → validmind-2.12.1}/validmind/datasets/llm/agent_dataset.py +113 -134
- {validmind-2.10.1 → validmind-2.12.1}/validmind/datasets/llm/rag/__init__.py +2 -2
- {validmind-2.10.1 → validmind-2.12.1}/validmind/datasets/llm/rag/rfp.py +2 -2
- {validmind-2.10.1 → validmind-2.12.1}/validmind/datasets/nlp/__init__.py +2 -2
- {validmind-2.10.1 → validmind-2.12.1}/validmind/datasets/nlp/cnn_dailymail.py +2 -2
- {validmind-2.10.1 → validmind-2.12.1}/validmind/datasets/nlp/twitter_covid_19.py +2 -2
- {validmind-2.10.1 → validmind-2.12.1}/validmind/datasets/regression/__init__.py +2 -2
- validmind-2.12.1/validmind/datasets/regression/california_housing.py +137 -0
- validmind-2.12.1/validmind/datasets/regression/datasets/california_housing.csv +20641 -0
- {validmind-2.10.1 → validmind-2.12.1}/validmind/datasets/regression/fred.py +2 -2
- {validmind-2.10.1 → validmind-2.12.1}/validmind/datasets/regression/fred_timeseries.py +2 -2
- validmind-2.12.1/validmind/datasets/regression/generate_california_housing_csv.py +64 -0
- {validmind-2.10.1 → validmind-2.12.1}/validmind/datasets/regression/lending_club.py +2 -2
- {validmind-2.10.1 → validmind-2.12.1}/validmind/errors.py +2 -2
- {validmind-2.10.1 → validmind-2.12.1}/validmind/experimental/agents.py +2 -2
- {validmind-2.10.1 → validmind-2.12.1}/validmind/html_templates/content_blocks.py +2 -2
- {validmind-2.10.1 → validmind-2.12.1}/validmind/input_registry.py +2 -2
- {validmind-2.10.1 → validmind-2.12.1}/validmind/logging.py +3 -62
- {validmind-2.10.1 → validmind-2.12.1}/validmind/models/__init__.py +2 -2
- {validmind-2.10.1 → validmind-2.12.1}/validmind/models/foundation.py +2 -2
- {validmind-2.10.1 → validmind-2.12.1}/validmind/models/function.py +2 -2
- {validmind-2.10.1 → validmind-2.12.1}/validmind/models/huggingface.py +2 -2
- {validmind-2.10.1 → validmind-2.12.1}/validmind/models/metadata.py +2 -2
- {validmind-2.10.1 → validmind-2.12.1}/validmind/models/pipeline.py +2 -2
- {validmind-2.10.1 → validmind-2.12.1}/validmind/models/pytorch.py +2 -2
- {validmind-2.10.1 → validmind-2.12.1}/validmind/models/r_model.py +2 -2
- {validmind-2.10.1 → validmind-2.12.1}/validmind/models/sklearn.py +2 -2
- {validmind-2.10.1/validmind/scorer → validmind-2.12.1/validmind/scorers}/__init__.py +3 -3
- {validmind-2.10.1/validmind/scorer → validmind-2.12.1/validmind/scorers}/classification/AbsoluteError.py +3 -4
- {validmind-2.10.1/validmind/scorer → validmind-2.12.1/validmind/scorers}/classification/BrierScore.py +3 -4
- {validmind-2.10.1/validmind/scorer → validmind-2.12.1/validmind/scorers}/classification/CalibrationError.py +3 -4
- {validmind-2.10.1/validmind/scorer → validmind-2.12.1/validmind/scorers}/classification/ClassBalance.py +3 -4
- {validmind-2.10.1/validmind/scorer → validmind-2.12.1/validmind/scorers}/classification/Confidence.py +3 -4
- {validmind-2.10.1/validmind/scorer → validmind-2.12.1/validmind/scorers}/classification/Correctness.py +3 -4
- {validmind-2.10.1/validmind/scorer → validmind-2.12.1/validmind/scorers}/classification/LogLoss.py +3 -6
- {validmind-2.10.1/validmind/scorer → validmind-2.12.1/validmind/scorers}/classification/OutlierScore.py +3 -4
- {validmind-2.10.1/validmind/scorer → validmind-2.12.1/validmind/scorers}/classification/ProbabilityError.py +3 -4
- {validmind-2.10.1/validmind/scorer → validmind-2.12.1/validmind/scorers}/classification/Uncertainty.py +3 -4
- {validmind-2.10.1/validmind/scorer → validmind-2.12.1/validmind/scorers}/llm/deepeval/AnswerRelevancy.py +5 -5
- validmind-2.12.1/validmind/scorers/llm/deepeval/ArgumentCorrectness.py +111 -0
- validmind-2.12.1/validmind/scorers/llm/deepeval/Bias.py +103 -0
- validmind-2.12.1/validmind/scorers/llm/deepeval/ContextualPrecision.py +110 -0
- validmind-2.12.1/validmind/scorers/llm/deepeval/ContextualRecall.py +110 -0
- validmind-2.12.1/validmind/scorers/llm/deepeval/ContextualRelevancy.py +110 -0
- validmind-2.12.1/validmind/scorers/llm/deepeval/Faithfulness.py +110 -0
- validmind-2.12.1/validmind/scorers/llm/deepeval/GEval.py +145 -0
- validmind-2.12.1/validmind/scorers/llm/deepeval/Hallucination.py +110 -0
- validmind-2.12.1/validmind/scorers/llm/deepeval/PlanAdherence.py +109 -0
- validmind-2.12.1/validmind/scorers/llm/deepeval/PlanQuality.py +119 -0
- validmind-2.12.1/validmind/scorers/llm/deepeval/Summarization.py +111 -0
- validmind-2.12.1/validmind/scorers/llm/deepeval/TaskCompletion.py +103 -0
- validmind-2.12.1/validmind/scorers/llm/deepeval/ToolCorrectness.py +116 -0
- validmind-2.12.1/validmind/scorers/llm/deepeval/__init__.py +173 -0
- {validmind-2.10.1 → validmind-2.12.1}/validmind/template.py +108 -62
- {validmind-2.10.1 → validmind-2.12.1}/validmind/test_suites/__init__.py +2 -2
- {validmind-2.10.1 → validmind-2.12.1}/validmind/test_suites/classifier.py +2 -2
- {validmind-2.10.1 → validmind-2.12.1}/validmind/test_suites/cluster.py +2 -2
- {validmind-2.10.1 → validmind-2.12.1}/validmind/test_suites/embeddings.py +2 -2
- {validmind-2.10.1 → validmind-2.12.1}/validmind/test_suites/llm.py +2 -2
- {validmind-2.10.1 → validmind-2.12.1}/validmind/test_suites/nlp.py +2 -2
- {validmind-2.10.1 → validmind-2.12.1}/validmind/test_suites/parameters_optimization.py +2 -2
- {validmind-2.10.1 → validmind-2.12.1}/validmind/test_suites/regression.py +2 -2
- {validmind-2.10.1 → validmind-2.12.1}/validmind/test_suites/statsmodels_timeseries.py +2 -2
- {validmind-2.10.1 → validmind-2.12.1}/validmind/test_suites/summarization.py +2 -2
- {validmind-2.10.1 → validmind-2.12.1}/validmind/test_suites/tabular_datasets.py +2 -2
- {validmind-2.10.1 → validmind-2.12.1}/validmind/test_suites/text_data.py +2 -2
- {validmind-2.10.1 → validmind-2.12.1}/validmind/test_suites/time_series.py +2 -2
- {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/__init__.py +2 -2
- {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/__types__.py +26 -2
- {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/_store.py +2 -2
- {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/comparison.py +2 -2
- {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/data_validation/ACFandPACFPlot.py +2 -2
- {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/data_validation/ADF.py +2 -2
- {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/data_validation/AutoAR.py +2 -2
- {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/data_validation/AutoMA.py +2 -2
- {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/data_validation/AutoStationarity.py +2 -2
- {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/data_validation/BivariateScatterPlots.py +2 -2
- {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/data_validation/BoxPierce.py +2 -2
- {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/data_validation/ChiSquaredFeaturesTable.py +2 -2
- {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/data_validation/ClassImbalance.py +2 -2
- {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/data_validation/DatasetDescription.py +2 -2
- {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/data_validation/DatasetSplit.py +2 -2
- {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/data_validation/DescriptiveStatistics.py +2 -2
- {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/data_validation/DickeyFullerGLS.py +2 -2
- {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/data_validation/Duplicates.py +2 -2
- {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/data_validation/EngleGrangerCoint.py +2 -2
- {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/data_validation/FeatureTargetCorrelationPlot.py +2 -2
- {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/data_validation/HighCardinality.py +2 -2
- {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/data_validation/HighPearsonCorrelation.py +2 -2
- {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/data_validation/IQROutliersBarPlot.py +2 -2
- {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/data_validation/IQROutliersTable.py +2 -2
- {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/data_validation/IsolationForestOutliers.py +2 -2
- {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/data_validation/JarqueBera.py +2 -2
- {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/data_validation/KPSS.py +2 -2
- {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/data_validation/LJungBox.py +2 -2
- {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/data_validation/LaggedCorrelationHeatmap.py +2 -2
- {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/data_validation/MissingValues.py +19 -14
- {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/data_validation/MissingValuesBarPlot.py +2 -2
- {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/data_validation/MutualInformation.py +2 -2
- {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/data_validation/PearsonCorrelationMatrix.py +2 -2
- {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/data_validation/PhillipsPerronArch.py +2 -2
- {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/data_validation/ProtectedClassesCombination.py +2 -2
- {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/data_validation/ProtectedClassesDescription.py +2 -2
- {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/data_validation/ProtectedClassesDisparity.py +2 -2
- {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/data_validation/ProtectedClassesThresholdOptimizer.py +2 -2
- {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/data_validation/RollingStatsPlot.py +2 -2
- {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/data_validation/RunsTest.py +2 -2
- {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/data_validation/ScatterPlot.py +2 -2
- {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/data_validation/ScoreBandDefaultRates.py +2 -2
- {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/data_validation/SeasonalDecompose.py +2 -2
- {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/data_validation/ShapiroWilk.py +2 -2
- {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/data_validation/Skewness.py +2 -2
- {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/data_validation/SpreadPlot.py +2 -2
- {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/data_validation/TabularCategoricalBarPlots.py +2 -2
- {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/data_validation/TabularDateTimeHistograms.py +2 -2
- {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/data_validation/TabularDescriptionTables.py +2 -2
- {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/data_validation/TabularNumericalHistograms.py +2 -2
- {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/data_validation/TargetRateBarPlots.py +2 -2
- {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/data_validation/TimeSeriesDescription.py +2 -2
- {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/data_validation/TimeSeriesDescriptiveStatistics.py +2 -2
- {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/data_validation/TimeSeriesFrequency.py +2 -2
- {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/data_validation/TimeSeriesHistogram.py +2 -2
- {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/data_validation/TimeSeriesLinePlot.py +2 -2
- {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/data_validation/TimeSeriesMissingValues.py +2 -2
- {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/data_validation/TimeSeriesOutliers.py +2 -2
- {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/data_validation/TooManyZeroValues.py +4 -4
- {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/data_validation/UniqueRows.py +2 -2
- {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/data_validation/WOEBinPlots.py +8 -10
- {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/data_validation/WOEBinTable.py +8 -10
- {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/data_validation/ZivotAndrewsArch.py +2 -2
- {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/data_validation/nlp/CommonWords.py +2 -2
- {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/data_validation/nlp/Hashtags.py +2 -2
- {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/data_validation/nlp/LanguageDetection.py +2 -2
- {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/data_validation/nlp/Mentions.py +2 -2
- {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/data_validation/nlp/PolarityAndSubjectivity.py +2 -2
- {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/data_validation/nlp/Punctuations.py +2 -2
- {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/data_validation/nlp/Sentiment.py +2 -2
- {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/data_validation/nlp/StopWords.py +2 -2
- {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/data_validation/nlp/TextDescription.py +2 -2
- {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/data_validation/nlp/Toxicity.py +2 -2
- {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/decorator.py +14 -14
- {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/load.py +86 -44
- {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/model_validation/BertScore.py +2 -2
- {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/model_validation/BleuScore.py +2 -2
- {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/model_validation/ClusterSizeDistribution.py +2 -2
- {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/model_validation/ContextualRecall.py +2 -2
- {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/model_validation/FeaturesAUC.py +2 -2
- {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/model_validation/MeteorScore.py +2 -2
- {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/model_validation/ModelMetadata.py +2 -2
- {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/model_validation/ModelPredictionResiduals.py +2 -2
- {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/model_validation/RegardScore.py +2 -2
- {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/model_validation/RegressionResidualsPlot.py +2 -2
- {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/model_validation/RougeScore.py +2 -2
- {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/model_validation/TimeSeriesPredictionWithCI.py +2 -2
- {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/model_validation/TimeSeriesPredictionsPlot.py +2 -2
- {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/model_validation/TimeSeriesR2SquareBySegments.py +2 -2
- {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/model_validation/TokenDisparity.py +2 -2
- {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/model_validation/ToxicityScore.py +2 -2
- {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/model_validation/embeddings/ClusterDistribution.py +2 -2
- {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/model_validation/embeddings/CosineSimilarityComparison.py +2 -2
- {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/model_validation/embeddings/CosineSimilarityDistribution.py +2 -2
- {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/model_validation/embeddings/CosineSimilarityHeatmap.py +2 -2
- {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/model_validation/embeddings/DescriptiveAnalytics.py +2 -2
- {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/model_validation/embeddings/EmbeddingsVisualization2D.py +2 -2
- {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/model_validation/embeddings/EuclideanDistanceComparison.py +2 -2
- {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/model_validation/embeddings/EuclideanDistanceHeatmap.py +2 -2
- {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/model_validation/embeddings/PCAComponentsPairwisePlots.py +2 -2
- {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/model_validation/embeddings/StabilityAnalysisKeyword.py +2 -2
- {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/model_validation/embeddings/StabilityAnalysisRandomNoise.py +2 -2
- {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/model_validation/embeddings/StabilityAnalysisSynonyms.py +2 -2
- {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/model_validation/embeddings/StabilityAnalysisTranslation.py +2 -2
- {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/model_validation/embeddings/TSNEComponentsPairwisePlots.py +2 -2
- {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/model_validation/embeddings/utils.py +2 -2
- {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/model_validation/ragas/AnswerCorrectness.py +2 -2
- {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/model_validation/ragas/AspectCritic.py +2 -2
- {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/model_validation/ragas/ContextEntityRecall.py +2 -2
- {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/model_validation/ragas/ContextPrecision.py +2 -2
- {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/model_validation/ragas/ContextPrecisionWithoutReference.py +2 -2
- {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/model_validation/ragas/ContextRecall.py +2 -2
- {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/model_validation/ragas/Faithfulness.py +2 -2
- {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/model_validation/ragas/NoiseSensitivity.py +2 -2
- {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/model_validation/ragas/ResponseRelevancy.py +2 -2
- {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/model_validation/ragas/SemanticSimilarity.py +2 -2
- {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/model_validation/ragas/utils.py +2 -2
- {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/model_validation/sklearn/AdjustedMutualInformation.py +2 -2
- {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/model_validation/sklearn/AdjustedRandIndex.py +2 -2
- {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/model_validation/sklearn/CalibrationCurve.py +2 -2
- {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/model_validation/sklearn/ClassifierPerformance.py +2 -2
- {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/model_validation/sklearn/ClassifierThresholdOptimization.py +2 -2
- {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/model_validation/sklearn/ClusterCosineSimilarity.py +2 -2
- {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/model_validation/sklearn/ClusterPerformanceMetrics.py +2 -2
- {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/model_validation/sklearn/CompletenessScore.py +2 -2
- {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/model_validation/sklearn/ConfusionMatrix.py +2 -2
- {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/model_validation/sklearn/FeatureImportance.py +2 -2
- {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/model_validation/sklearn/FowlkesMallowsScore.py +2 -2
- {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/model_validation/sklearn/HomogeneityScore.py +2 -2
- {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/model_validation/sklearn/HyperParametersTuning.py +2 -2
- {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/model_validation/sklearn/KMeansClustersOptimization.py +2 -2
- {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/model_validation/sklearn/MinimumAccuracy.py +2 -2
- {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/model_validation/sklearn/MinimumF1Score.py +2 -2
- {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/model_validation/sklearn/MinimumROCAUCScore.py +2 -2
- {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/model_validation/sklearn/ModelParameters.py +2 -2
- {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/model_validation/sklearn/ModelsPerformanceComparison.py +2 -2
- {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/model_validation/sklearn/OverfitDiagnosis.py +3 -3
- {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/model_validation/sklearn/PermutationFeatureImportance.py +2 -2
- {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/model_validation/sklearn/PopulationStabilityIndex.py +4 -4
- {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/model_validation/sklearn/PrecisionRecallCurve.py +2 -2
- {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/model_validation/sklearn/ROCCurve.py +2 -2
- {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/model_validation/sklearn/RegressionErrors.py +2 -2
- {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/model_validation/sklearn/RegressionErrorsComparison.py +2 -2
- {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/model_validation/sklearn/RegressionPerformance.py +2 -2
- {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/model_validation/sklearn/RegressionR2Square.py +2 -2
- {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/model_validation/sklearn/RegressionR2SquareComparison.py +2 -2
- {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/model_validation/sklearn/RobustnessDiagnosis.py +4 -2
- {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/model_validation/sklearn/SHAPGlobalImportance.py +2 -2
- {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/model_validation/sklearn/ScoreProbabilityAlignment.py +2 -2
- {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/model_validation/sklearn/SilhouettePlot.py +2 -2
- {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/model_validation/sklearn/TrainingTestDegradation.py +7 -7
- {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/model_validation/sklearn/VMeasure.py +2 -2
- {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/model_validation/sklearn/WeakspotsDiagnosis.py +3 -3
- {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/model_validation/statsmodels/AutoARIMA.py +2 -2
- {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/model_validation/statsmodels/CumulativePredictionProbabilities.py +12 -17
- {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/model_validation/statsmodels/DurbinWatsonTest.py +2 -2
- {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/model_validation/statsmodels/GINITable.py +2 -2
- {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/model_validation/statsmodels/KolmogorovSmirnov.py +2 -2
- {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/model_validation/statsmodels/Lilliefors.py +2 -2
- {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/model_validation/statsmodels/PredictionProbabilitiesHistogram.py +2 -2
- {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/model_validation/statsmodels/RegressionCoeffs.py +2 -2
- {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/model_validation/statsmodels/RegressionFeatureSignificance.py +2 -2
- {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/model_validation/statsmodels/RegressionModelForecastPlot.py +2 -2
- {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/model_validation/statsmodels/RegressionModelForecastPlotLevels.py +2 -2
- {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/model_validation/statsmodels/RegressionModelSensitivityPlot.py +2 -2
- {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/model_validation/statsmodels/RegressionModelSummary.py +2 -2
- {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/model_validation/statsmodels/RegressionPermutationFeatureImportance.py +2 -2
- {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/model_validation/statsmodels/ScorecardHistogram.py +2 -2
- {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/model_validation/statsmodels/statsutils.py +2 -2
- {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/ongoing_monitoring/CalibrationCurveDrift.py +2 -2
- {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/ongoing_monitoring/ClassDiscriminationDrift.py +2 -2
- {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/ongoing_monitoring/ClassImbalanceDrift.py +2 -2
- {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/ongoing_monitoring/ClassificationAccuracyDrift.py +2 -2
- {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/ongoing_monitoring/ConfusionMatrixDrift.py +2 -2
- {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/ongoing_monitoring/CumulativePredictionProbabilitiesDrift.py +2 -2
- {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/ongoing_monitoring/FeatureDrift.py +2 -2
- {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/ongoing_monitoring/PredictionAcrossEachFeature.py +2 -2
- {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/ongoing_monitoring/PredictionCorrelation.py +2 -2
- {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/ongoing_monitoring/PredictionProbabilitiesHistogramDrift.py +2 -2
- {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/ongoing_monitoring/PredictionQuantilesAcrossFeatures.py +2 -2
- {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/ongoing_monitoring/ROCCurveDrift.py +2 -2
- {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/ongoing_monitoring/ScoreBandsDrift.py +2 -2
- {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/ongoing_monitoring/ScorecardHistogramDrift.py +2 -2
- {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/ongoing_monitoring/TargetPredictionDistributionPlot.py +2 -2
- {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/output.py +2 -2
- {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/plots/BoxPlot.py +25 -12
- {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/plots/CorrelationHeatmap.py +2 -2
- {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/plots/HistogramPlot.py +2 -2
- {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/plots/ViolinPlot.py +2 -2
- {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/prompt_validation/Bias.py +2 -2
- {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/prompt_validation/Clarity.py +2 -2
- {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/prompt_validation/Conciseness.py +2 -2
- {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/prompt_validation/Delimitation.py +2 -2
- {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/prompt_validation/NegativeInstruction.py +2 -2
- {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/prompt_validation/Robustness.py +2 -2
- {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/prompt_validation/Specificity.py +2 -2
- {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/prompt_validation/ai_powered_test.py +2 -2
- {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/run.py +3 -2
- {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/stats/CorrelationAnalysis.py +2 -2
- {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/stats/DescriptiveStats.py +2 -2
- {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/stats/NormalityTests.py +2 -2
- {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/stats/OutlierDetection.py +2 -2
- {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/test_providers.py +5 -5
- {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/utils.py +2 -2
- {validmind-2.10.1 → validmind-2.12.1}/validmind/unit_metrics/__init__.py +2 -2
- {validmind-2.10.1 → validmind-2.12.1}/validmind/unit_metrics/classification/Accuracy.py +2 -2
- {validmind-2.10.1 → validmind-2.12.1}/validmind/unit_metrics/classification/F1.py +2 -2
- {validmind-2.10.1 → validmind-2.12.1}/validmind/unit_metrics/classification/Precision.py +2 -2
- {validmind-2.10.1 → validmind-2.12.1}/validmind/unit_metrics/classification/ROC_AUC.py +2 -2
- {validmind-2.10.1 → validmind-2.12.1}/validmind/unit_metrics/classification/Recall.py +2 -2
- {validmind-2.10.1 → validmind-2.12.1}/validmind/unit_metrics/regression/AdjustedRSquaredScore.py +2 -2
- {validmind-2.10.1 → validmind-2.12.1}/validmind/unit_metrics/regression/GiniCoefficient.py +2 -2
- {validmind-2.10.1 → validmind-2.12.1}/validmind/unit_metrics/regression/HuberLoss.py +2 -2
- {validmind-2.10.1 → validmind-2.12.1}/validmind/unit_metrics/regression/KolmogorovSmirnovStatistic.py +2 -2
- {validmind-2.10.1 → validmind-2.12.1}/validmind/unit_metrics/regression/MeanAbsoluteError.py +2 -2
- {validmind-2.10.1 → validmind-2.12.1}/validmind/unit_metrics/regression/MeanAbsolutePercentageError.py +2 -2
- {validmind-2.10.1 → validmind-2.12.1}/validmind/unit_metrics/regression/MeanBiasDeviation.py +2 -2
- {validmind-2.10.1 → validmind-2.12.1}/validmind/unit_metrics/regression/MeanSquaredError.py +2 -2
- {validmind-2.10.1 → validmind-2.12.1}/validmind/unit_metrics/regression/QuantileLoss.py +2 -2
- {validmind-2.10.1 → validmind-2.12.1}/validmind/unit_metrics/regression/RSquaredScore.py +2 -2
- {validmind-2.10.1 → validmind-2.12.1}/validmind/unit_metrics/regression/RootMeanSquaredError.py +2 -2
- {validmind-2.10.1 → validmind-2.12.1}/validmind/utils.py +15 -7
- {validmind-2.10.1 → validmind-2.12.1}/validmind/vm_models/__init__.py +2 -2
- {validmind-2.10.1 → validmind-2.12.1}/validmind/vm_models/dataset/__init__.py +2 -2
- {validmind-2.10.1 → validmind-2.12.1}/validmind/vm_models/dataset/dataset.py +9 -9
- {validmind-2.10.1 → validmind-2.12.1}/validmind/vm_models/dataset/utils.py +2 -2
- {validmind-2.10.1 → validmind-2.12.1}/validmind/vm_models/figure.py +21 -29
- validmind-2.12.1/validmind/vm_models/html_progress.py +170 -0
- validmind-2.12.1/validmind/vm_models/html_renderer.py +450 -0
- {validmind-2.10.1 → validmind-2.12.1}/validmind/vm_models/input.py +2 -2
- {validmind-2.10.1 → validmind-2.12.1}/validmind/vm_models/model.py +2 -2
- {validmind-2.10.1 → validmind-2.12.1}/validmind/vm_models/result/__init__.py +2 -2
- {validmind-2.10.1 → validmind-2.12.1}/validmind/vm_models/result/pii_filter.py +2 -2
- {validmind-2.10.1 → validmind-2.12.1}/validmind/vm_models/result/result.py +59 -69
- validmind-2.12.1/validmind/vm_models/result/utils.py +86 -0
- validmind-2.12.1/validmind/vm_models/test_suite/__init__.py +5 -0
- {validmind-2.10.1 → validmind-2.12.1}/validmind/vm_models/test_suite/runner.py +80 -35
- validmind-2.12.1/validmind/vm_models/test_suite/summary.py +136 -0
- {validmind-2.10.1 → validmind-2.12.1}/validmind/vm_models/test_suite/test.py +2 -2
- {validmind-2.10.1 → validmind-2.12.1}/validmind/vm_models/test_suite/test_suite.py +2 -2
- validmind-2.10.1/validmind/__version__.py +0 -1
- validmind-2.10.1/validmind/datasets/__init__.py +0 -7
- validmind-2.10.1/validmind/datasets/regression/california_housing.py +0 -34
- validmind-2.10.1/validmind/scorer/llm/deepeval/__init__.py +0 -7
- validmind-2.10.1/validmind/vm_models/result/utils.py +0 -114
- validmind-2.10.1/validmind/vm_models/test_suite/__init__.py +0 -5
- validmind-2.10.1/validmind/vm_models/test_suite/summary.py +0 -187
- {validmind-2.10.1 → validmind-2.12.1}/LICENSE +0 -0
- {validmind-2.10.1 → validmind-2.12.1}/README.pypi.md +0 -0
- {validmind-2.10.1 → validmind-2.12.1}/validmind/datasets/classification/datasets/bank_customer_churn.csv +0 -0
- {validmind-2.10.1 → validmind-2.12.1}/validmind/datasets/classification/datasets/taiwan_credit.csv +0 -0
- {validmind-2.10.1 → validmind-2.12.1}/validmind/datasets/credit_risk/datasets/lending_club_biased.csv.gz +0 -0
- {validmind-2.10.1 → validmind-2.12.1}/validmind/datasets/credit_risk/datasets/lending_club_loan_data_2007_2014_clean.csv.gz +0 -0
- {validmind-2.10.1 → validmind-2.12.1}/validmind/datasets/llm/rag/datasets/rfp_existing_questions_client_1.csv +0 -0
- {validmind-2.10.1 → validmind-2.12.1}/validmind/datasets/llm/rag/datasets/rfp_existing_questions_client_2.csv +0 -0
- {validmind-2.10.1 → validmind-2.12.1}/validmind/datasets/llm/rag/datasets/rfp_existing_questions_client_3.csv +0 -0
- {validmind-2.10.1 → validmind-2.12.1}/validmind/datasets/llm/rag/datasets/rfp_existing_questions_client_4.csv +0 -0
- {validmind-2.10.1 → validmind-2.12.1}/validmind/datasets/llm/rag/datasets/rfp_existing_questions_client_5.csv +0 -0
- {validmind-2.10.1 → validmind-2.12.1}/validmind/datasets/nlp/datasets/Covid_19.csv +0 -0
- {validmind-2.10.1 → validmind-2.12.1}/validmind/datasets/nlp/datasets/cnn_dailymail_100_with_predictions.csv +0 -0
- {validmind-2.10.1 → validmind-2.12.1}/validmind/datasets/nlp/datasets/cnn_dailymail_500_with_predictions.csv +0 -0
- {validmind-2.10.1 → validmind-2.12.1}/validmind/datasets/nlp/datasets/sentiments_with_predictions.csv +0 -0
- {validmind-2.10.1 → validmind-2.12.1}/validmind/datasets/regression/datasets/fred/CPIAUCSL.csv +0 -0
- {validmind-2.10.1 → validmind-2.12.1}/validmind/datasets/regression/datasets/fred/CSUSHPISA.csv +0 -0
- {validmind-2.10.1 → validmind-2.12.1}/validmind/datasets/regression/datasets/fred/DRSFRMACBS.csv +0 -0
- {validmind-2.10.1 → validmind-2.12.1}/validmind/datasets/regression/datasets/fred/FEDFUNDS.csv +0 -0
- {validmind-2.10.1 → validmind-2.12.1}/validmind/datasets/regression/datasets/fred/GDP.csv +0 -0
- {validmind-2.10.1 → validmind-2.12.1}/validmind/datasets/regression/datasets/fred/GDPC1.csv +0 -0
- {validmind-2.10.1 → validmind-2.12.1}/validmind/datasets/regression/datasets/fred/GS10.csv +0 -0
- {validmind-2.10.1 → validmind-2.12.1}/validmind/datasets/regression/datasets/fred/GS3.csv +0 -0
- {validmind-2.10.1 → validmind-2.12.1}/validmind/datasets/regression/datasets/fred/GS5.csv +0 -0
- {validmind-2.10.1 → validmind-2.12.1}/validmind/datasets/regression/datasets/fred/MORTGAGE30US.csv +0 -0
- {validmind-2.10.1 → validmind-2.12.1}/validmind/datasets/regression/datasets/fred/UNRATE.csv +0 -0
- {validmind-2.10.1 → validmind-2.12.1}/validmind/datasets/regression/datasets/fred_loan_rates.csv +0 -0
- {validmind-2.10.1 → validmind-2.12.1}/validmind/datasets/regression/datasets/fred_loan_rates_test_1.csv +0 -0
- {validmind-2.10.1 → validmind-2.12.1}/validmind/datasets/regression/datasets/fred_loan_rates_test_2.csv +0 -0
- {validmind-2.10.1 → validmind-2.12.1}/validmind/datasets/regression/datasets/fred_loan_rates_test_3.csv +0 -0
- {validmind-2.10.1 → validmind-2.12.1}/validmind/datasets/regression/datasets/fred_loan_rates_test_4.csv +0 -0
- {validmind-2.10.1 → validmind-2.12.1}/validmind/datasets/regression/datasets/fred_loan_rates_test_5.csv +0 -0
- {validmind-2.10.1 → validmind-2.12.1}/validmind/datasets/regression/datasets/leanding_club_loan_rates.csv +0 -0
- {validmind-2.10.1 → validmind-2.12.1}/validmind/datasets/regression/models/fred_loan_rates_model_1.pkl +0 -0
- {validmind-2.10.1 → validmind-2.12.1}/validmind/datasets/regression/models/fred_loan_rates_model_2.pkl +0 -0
- {validmind-2.10.1 → validmind-2.12.1}/validmind/datasets/regression/models/fred_loan_rates_model_3.pkl +0 -0
- {validmind-2.10.1 → validmind-2.12.1}/validmind/datasets/regression/models/fred_loan_rates_model_4.pkl +0 -0
- {validmind-2.10.1 → validmind-2.12.1}/validmind/datasets/regression/models/fred_loan_rates_model_5.pkl +0 -0
- {validmind-2.10.1 → validmind-2.12.1}/validmind/experimental/__init__.py +0 -0
- {validmind-2.10.1 → validmind-2.12.1}/validmind/html_templates/__init__.py +0 -0
- {validmind-2.10.1/validmind/scorer → validmind-2.12.1/validmind/scorers}/classification/__init__.py +0 -0
- {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/data_validation/__init__.py +0 -0
- {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/data_validation/nlp/__init__.py +0 -0
- {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/model_validation/__init__.py +0 -0
- {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/model_validation/sklearn/__init__.py +0 -0
- {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/model_validation/statsmodels/__init__.py +0 -0
- {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/plots/__init__.py +0 -0
- {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/prompt_validation/__init__.py +0 -0
- {validmind-2.10.1 → validmind-2.12.1}/validmind/tests/stats/__init__.py +0 -0
- {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.
|
|
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 (
|
|
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 (>=
|
|
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 (
|
|
752
|
-
Requires-Dist: scorecardpy (
|
|
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.
|
|
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 (>=
|
|
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
|
|
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 (
|
|
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
|
|
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-
|
|
2
|
-
#
|
|
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://
|
|
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-
|
|
2
|
-
#
|
|
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
|
-
|
|
53
|
-
|
|
54
|
-
|
|
88
|
+
if _TIKTOKEN_AVAILABLE:
|
|
89
|
+
# Use tiktoken for accurate token counting
|
|
90
|
+
summary_tokens = _TIKTOKEN_ENCODING.encode(summary)
|
|
55
91
|
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
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-
|
|
2
|
-
#
|
|
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-
|
|
2
|
-
#
|
|
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,
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
442
|
-
|
|
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-
|
|
2
|
-
#
|
|
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-
|
|
2
|
-
#
|
|
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-
|
|
2
|
-
#
|
|
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-
|
|
2
|
-
#
|
|
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-
|
|
2
|
-
#
|
|
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-
|
|
2
|
-
#
|
|
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-
|
|
2
|
-
#
|
|
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-
|
|
2
|
-
#
|
|
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
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
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": {"
|
|
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": {"
|
|
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-
|
|
2
|
-
#
|
|
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-
|
|
2
|
-
#
|
|
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
|
"""
|