validmind 2.5.25__tar.gz → 2.6.7__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.6.7/PKG-INFO +137 -0
- validmind-2.6.7/README.pypi.md +72 -0
- {validmind-2.5.25 → validmind-2.6.7}/pyproject.toml +4 -3
- {validmind-2.5.25 → validmind-2.6.7}/validmind/__init__.py +8 -17
- validmind-2.6.7/validmind/__version__.py +1 -0
- {validmind-2.5.25 → validmind-2.6.7}/validmind/ai/test_descriptions.py +66 -85
- {validmind-2.5.25 → validmind-2.6.7}/validmind/ai/test_result_description/context.py +2 -2
- {validmind-2.5.25 → validmind-2.6.7}/validmind/ai/utils.py +26 -1
- {validmind-2.5.25 → validmind-2.6.7}/validmind/api_client.py +43 -79
- {validmind-2.5.25 → validmind-2.6.7}/validmind/client.py +5 -7
- {validmind-2.5.25 → validmind-2.6.7}/validmind/client_config.py +1 -1
- {validmind-2.5.25 → validmind-2.6.7}/validmind/datasets/__init__.py +1 -1
- {validmind-2.5.25 → validmind-2.6.7}/validmind/datasets/classification/customer_churn.py +7 -5
- {validmind-2.5.25 → validmind-2.6.7}/validmind/datasets/nlp/__init__.py +2 -2
- {validmind-2.5.25 → validmind-2.6.7}/validmind/errors.py +6 -10
- {validmind-2.5.25 → validmind-2.6.7}/validmind/html_templates/content_blocks.py +18 -16
- {validmind-2.5.25 → validmind-2.6.7}/validmind/logging.py +21 -16
- validmind-2.6.7/validmind/tests/__init__.py +62 -0
- validmind-2.6.7/validmind/tests/__types__.py +198 -0
- {validmind-2.5.25 → validmind-2.6.7}/validmind/tests/_store.py +7 -21
- validmind-2.6.7/validmind/tests/comparison.py +362 -0
- {validmind-2.5.25 → validmind-2.6.7}/validmind/tests/data_validation/ACFandPACFPlot.py +44 -73
- validmind-2.6.7/validmind/tests/data_validation/ADF.py +100 -0
- validmind-2.6.7/validmind/tests/data_validation/AutoAR.py +116 -0
- validmind-2.6.7/validmind/tests/data_validation/AutoMA.py +119 -0
- validmind-2.6.7/validmind/tests/data_validation/AutoStationarity.py +137 -0
- validmind-2.6.7/validmind/tests/data_validation/ClassImbalance.py +107 -0
- validmind-2.6.7/validmind/tests/data_validation/DatasetDescription.py +236 -0
- {validmind-2.5.25 → validmind-2.6.7}/validmind/tests/data_validation/DatasetSplit.py +50 -75
- validmind-2.6.7/validmind/tests/data_validation/DescriptiveStatistics.py +114 -0
- validmind-2.5.25/validmind/tests/data_validation/DFGLSArch.py → validmind-2.6.7/validmind/tests/data_validation/DickeyFullerGLS.py +44 -76
- validmind-2.6.7/validmind/tests/data_validation/Duplicates.py +71 -0
- validmind-2.6.7/validmind/tests/data_validation/EngleGrangerCoint.py +105 -0
- validmind-2.6.7/validmind/tests/data_validation/HighCardinality.py +79 -0
- validmind-2.6.7/validmind/tests/data_validation/HighPearsonCorrelation.py +74 -0
- validmind-2.6.7/validmind/tests/data_validation/IQROutliersBarPlot.py +121 -0
- validmind-2.6.7/validmind/tests/data_validation/IQROutliersTable.py +92 -0
- {validmind-2.5.25 → validmind-2.6.7}/validmind/tests/data_validation/IsolationForestOutliers.py +41 -63
- validmind-2.6.7/validmind/tests/data_validation/KPSS.py +85 -0
- validmind-2.6.7/validmind/tests/data_validation/LaggedCorrelationHeatmap.py +104 -0
- {validmind-2.5.25 → validmind-2.6.7}/validmind/tests/data_validation/MissingValues.py +17 -58
- {validmind-2.5.25 → validmind-2.6.7}/validmind/tests/data_validation/MissingValuesBarPlot.py +61 -87
- validmind-2.6.7/validmind/tests/data_validation/PhillipsPerronArch.py +111 -0
- {validmind-2.5.25 → validmind-2.6.7}/validmind/tests/data_validation/RollingStatsPlot.py +50 -81
- validmind-2.6.7/validmind/tests/data_validation/SeasonalDecompose.py +159 -0
- {validmind-2.5.25 → validmind-2.6.7}/validmind/tests/data_validation/Skewness.py +27 -64
- {validmind-2.5.25 → validmind-2.6.7}/validmind/tests/data_validation/SpreadPlot.py +34 -57
- {validmind-2.5.25 → validmind-2.6.7}/validmind/tests/data_validation/TabularCategoricalBarPlots.py +46 -65
- {validmind-2.5.25 → validmind-2.6.7}/validmind/tests/data_validation/TabularDateTimeHistograms.py +23 -45
- {validmind-2.5.25 → validmind-2.6.7}/validmind/tests/data_validation/TabularNumericalHistograms.py +27 -46
- validmind-2.6.7/validmind/tests/data_validation/TargetRateBarPlots.py +110 -0
- validmind-2.6.7/validmind/tests/data_validation/TimeSeriesFrequency.py +106 -0
- {validmind-2.5.25 → validmind-2.6.7}/validmind/tests/data_validation/TimeSeriesHistogram.py +24 -3
- {validmind-2.5.25 → validmind-2.6.7}/validmind/tests/data_validation/TimeSeriesLinePlot.py +29 -47
- validmind-2.6.7/validmind/tests/data_validation/TimeSeriesMissingValues.py +113 -0
- validmind-2.6.7/validmind/tests/data_validation/TimeSeriesOutliers.py +118 -0
- {validmind-2.5.25 → validmind-2.6.7}/validmind/tests/data_validation/TooManyZeroValues.py +21 -70
- {validmind-2.5.25 → validmind-2.6.7}/validmind/tests/data_validation/UniqueRows.py +23 -62
- validmind-2.6.7/validmind/tests/data_validation/WOEBinPlots.py +143 -0
- validmind-2.6.7/validmind/tests/data_validation/WOEBinTable.py +72 -0
- validmind-2.6.7/validmind/tests/data_validation/ZivotAndrewsArch.py +86 -0
- {validmind-2.5.25 → validmind-2.6.7}/validmind/tests/data_validation/nlp/CommonWords.py +49 -57
- {validmind-2.5.25 → validmind-2.6.7}/validmind/tests/data_validation/nlp/Hashtags.py +27 -49
- {validmind-2.5.25 → validmind-2.6.7}/validmind/tests/data_validation/nlp/LanguageDetection.py +7 -13
- {validmind-2.5.25 → validmind-2.6.7}/validmind/tests/data_validation/nlp/Mentions.py +32 -63
- validmind-2.6.7/validmind/tests/data_validation/nlp/PolarityAndSubjectivity.py +147 -0
- validmind-2.6.7/validmind/tests/data_validation/nlp/Punctuations.py +113 -0
- {validmind-2.5.25 → validmind-2.6.7}/validmind/tests/data_validation/nlp/Sentiment.py +4 -0
- {validmind-2.5.25 → validmind-2.6.7}/validmind/tests/data_validation/nlp/StopWords.py +62 -91
- validmind-2.6.7/validmind/tests/data_validation/nlp/TextDescription.py +176 -0
- {validmind-2.5.25 → validmind-2.6.7}/validmind/tests/data_validation/nlp/Toxicity.py +12 -4
- validmind-2.6.7/validmind/tests/decorator.py +162 -0
- validmind-2.6.7/validmind/tests/load.py +343 -0
- {validmind-2.5.25 → validmind-2.6.7}/validmind/tests/model_validation/BertScore.py +13 -7
- {validmind-2.5.25 → validmind-2.6.7}/validmind/tests/model_validation/BleuScore.py +4 -0
- {validmind-2.5.25 → validmind-2.6.7}/validmind/tests/model_validation/ClusterSizeDistribution.py +24 -47
- {validmind-2.5.25 → validmind-2.6.7}/validmind/tests/model_validation/ContextualRecall.py +3 -0
- {validmind-2.5.25 → validmind-2.6.7}/validmind/tests/model_validation/FeaturesAUC.py +43 -74
- {validmind-2.5.25 → validmind-2.6.7}/validmind/tests/model_validation/MeteorScore.py +3 -0
- {validmind-2.5.25 → validmind-2.6.7}/validmind/tests/model_validation/RegardScore.py +5 -1
- {validmind-2.5.25 → validmind-2.6.7}/validmind/tests/model_validation/RegressionResidualsPlot.py +54 -75
- {validmind-2.5.25 → validmind-2.6.7}/validmind/tests/model_validation/embeddings/ClusterDistribution.py +10 -33
- {validmind-2.5.25 → validmind-2.6.7}/validmind/tests/model_validation/embeddings/CosineSimilarityDistribution.py +11 -29
- {validmind-2.5.25 → validmind-2.6.7}/validmind/tests/model_validation/embeddings/DescriptiveAnalytics.py +19 -31
- {validmind-2.5.25 → validmind-2.6.7}/validmind/tests/model_validation/embeddings/EmbeddingsVisualization2D.py +40 -49
- {validmind-2.5.25 → validmind-2.6.7}/validmind/tests/model_validation/embeddings/StabilityAnalysisKeyword.py +29 -15
- {validmind-2.5.25 → validmind-2.6.7}/validmind/tests/model_validation/embeddings/StabilityAnalysisRandomNoise.py +25 -11
- {validmind-2.5.25 → validmind-2.6.7}/validmind/tests/model_validation/embeddings/StabilityAnalysisSynonyms.py +28 -13
- {validmind-2.5.25 → validmind-2.6.7}/validmind/tests/model_validation/embeddings/StabilityAnalysisTranslation.py +67 -38
- validmind-2.6.7/validmind/tests/model_validation/embeddings/utils.py +53 -0
- {validmind-2.5.25 → validmind-2.6.7}/validmind/tests/model_validation/ragas/AnswerCorrectness.py +37 -32
- validmind-2.5.25/validmind/tests/model_validation/ragas/AspectCritique.py → validmind-2.6.7/validmind/tests/model_validation/ragas/AspectCritic.py +33 -27
- {validmind-2.5.25 → validmind-2.6.7}/validmind/tests/model_validation/ragas/ContextEntityRecall.py +44 -41
- {validmind-2.5.25 → validmind-2.6.7}/validmind/tests/model_validation/ragas/ContextPrecision.py +40 -35
- validmind-2.6.7/validmind/tests/model_validation/ragas/ContextPrecisionWithoutReference.py +133 -0
- {validmind-2.5.25 → validmind-2.6.7}/validmind/tests/model_validation/ragas/ContextRecall.py +40 -35
- {validmind-2.5.25 → validmind-2.6.7}/validmind/tests/model_validation/ragas/Faithfulness.py +42 -30
- {validmind-2.5.25 → validmind-2.6.7}/validmind/tests/model_validation/ragas/NoiseSensitivity.py +59 -35
- validmind-2.5.25/validmind/tests/model_validation/ragas/AnswerRelevance.py → validmind-2.6.7/validmind/tests/model_validation/ragas/ResponseRelevancy.py +52 -41
- validmind-2.5.25/validmind/tests/model_validation/ragas/AnswerSimilarity.py → validmind-2.6.7/validmind/tests/model_validation/ragas/SemanticSimilarity.py +39 -34
- {validmind-2.5.25 → validmind-2.6.7}/validmind/tests/model_validation/sklearn/AdjustedMutualInformation.py +13 -16
- {validmind-2.5.25 → validmind-2.6.7}/validmind/tests/model_validation/sklearn/AdjustedRandIndex.py +13 -16
- validmind-2.6.7/validmind/tests/model_validation/sklearn/ClassifierPerformance.py +110 -0
- {validmind-2.5.25 → validmind-2.6.7}/validmind/tests/model_validation/sklearn/ClusterCosineSimilarity.py +31 -61
- validmind-2.6.7/validmind/tests/model_validation/sklearn/ClusterPerformanceMetrics.py +167 -0
- {validmind-2.5.25 → validmind-2.6.7}/validmind/tests/model_validation/sklearn/CompletenessScore.py +13 -16
- {validmind-2.5.25 → validmind-2.6.7}/validmind/tests/model_validation/sklearn/ConfusionMatrix.py +62 -94
- {validmind-2.5.25 → validmind-2.6.7}/validmind/tests/model_validation/sklearn/FeatureImportance.py +7 -8
- {validmind-2.5.25 → validmind-2.6.7}/validmind/tests/model_validation/sklearn/FowlkesMallowsScore.py +12 -15
- {validmind-2.5.25 → validmind-2.6.7}/validmind/tests/model_validation/sklearn/HomogeneityScore.py +12 -15
- {validmind-2.5.25 → validmind-2.6.7}/validmind/tests/model_validation/sklearn/HyperParametersTuning.py +23 -53
- {validmind-2.5.25 → validmind-2.6.7}/validmind/tests/model_validation/sklearn/KMeansClustersOptimization.py +60 -74
- validmind-2.6.7/validmind/tests/model_validation/sklearn/MinimumAccuracy.py +59 -0
- {validmind-2.5.25 → validmind-2.6.7}/validmind/tests/model_validation/sklearn/MinimumF1Score.py +22 -72
- validmind-2.6.7/validmind/tests/model_validation/sklearn/MinimumROCAUCScore.py +80 -0
- validmind-2.6.7/validmind/tests/model_validation/sklearn/ModelsPerformanceComparison.py +110 -0
- {validmind-2.5.25 → validmind-2.6.7}/validmind/tests/model_validation/sklearn/OverfitDiagnosis.py +51 -145
- {validmind-2.5.25 → validmind-2.6.7}/validmind/tests/model_validation/sklearn/PermutationFeatureImportance.py +60 -78
- validmind-2.6.7/validmind/tests/model_validation/sklearn/PopulationStabilityIndex.py +209 -0
- {validmind-2.5.25 → validmind-2.6.7}/validmind/tests/model_validation/sklearn/PrecisionRecallCurve.py +26 -55
- {validmind-2.5.25 → validmind-2.6.7}/validmind/tests/model_validation/sklearn/ROCCurve.py +43 -77
- validmind-2.6.7/validmind/tests/model_validation/sklearn/RegressionPerformance.py +83 -0
- {validmind-2.5.25 → validmind-2.6.7}/validmind/tests/model_validation/sklearn/RobustnessDiagnosis.py +47 -136
- validmind-2.6.7/validmind/tests/model_validation/sklearn/SHAPGlobalImportance.py +232 -0
- {validmind-2.5.25 → validmind-2.6.7}/validmind/tests/model_validation/sklearn/SilhouettePlot.py +54 -99
- validmind-2.6.7/validmind/tests/model_validation/sklearn/TrainingTestDegradation.py +101 -0
- {validmind-2.5.25 → validmind-2.6.7}/validmind/tests/model_validation/sklearn/VMeasure.py +12 -15
- validmind-2.6.7/validmind/tests/model_validation/sklearn/WeakspotsDiagnosis.py +297 -0
- {validmind-2.5.25 → validmind-2.6.7}/validmind/tests/model_validation/statsmodels/AutoARIMA.py +40 -45
- {validmind-2.5.25 → validmind-2.6.7}/validmind/tests/model_validation/statsmodels/KolmogorovSmirnov.py +22 -47
- {validmind-2.5.25 → validmind-2.6.7}/validmind/tests/model_validation/statsmodels/Lilliefors.py +17 -28
- validmind-2.6.7/validmind/tests/model_validation/statsmodels/RegressionFeatureSignificance.py +93 -0
- validmind-2.6.7/validmind/tests/model_validation/statsmodels/RegressionModelForecastPlot.py +90 -0
- validmind-2.6.7/validmind/tests/model_validation/statsmodels/RegressionModelForecastPlotLevels.py +94 -0
- validmind-2.6.7/validmind/tests/model_validation/statsmodels/RegressionModelSensitivityPlot.py +114 -0
- validmind-2.6.7/validmind/tests/model_validation/statsmodels/RegressionModelSummary.py +61 -0
- validmind-2.6.7/validmind/tests/model_validation/statsmodels/RegressionPermutationFeatureImportance.py +100 -0
- {validmind-2.5.25 → validmind-2.6.7}/validmind/tests/ongoing_monitoring/PredictionCorrelation.py +2 -0
- {validmind-2.5.25 → validmind-2.6.7}/validmind/tests/ongoing_monitoring/TargetPredictionDistributionPlot.py +4 -2
- validmind-2.6.7/validmind/tests/output.py +120 -0
- {validmind-2.5.25 → validmind-2.6.7}/validmind/tests/prompt_validation/Bias.py +55 -98
- {validmind-2.5.25 → validmind-2.6.7}/validmind/tests/prompt_validation/Clarity.py +56 -99
- {validmind-2.5.25 → validmind-2.6.7}/validmind/tests/prompt_validation/Conciseness.py +63 -101
- {validmind-2.5.25 → validmind-2.6.7}/validmind/tests/prompt_validation/Delimitation.py +48 -89
- {validmind-2.5.25 → validmind-2.6.7}/validmind/tests/prompt_validation/NegativeInstruction.py +62 -96
- validmind-2.6.7/validmind/tests/prompt_validation/Robustness.py +130 -0
- validmind-2.6.7/validmind/tests/prompt_validation/Specificity.py +113 -0
- {validmind-2.5.25 → validmind-2.6.7}/validmind/tests/prompt_validation/ai_powered_test.py +2 -2
- validmind-2.6.7/validmind/tests/run.py +400 -0
- validmind-2.6.7/validmind/tests/test_providers.py +189 -0
- validmind-2.6.7/validmind/tests/utils.py +107 -0
- validmind-2.6.7/validmind/unit_metrics/__init__.py +32 -0
- {validmind-2.5.25 → validmind-2.6.7}/validmind/unit_metrics/classification/F1.py +1 -0
- {validmind-2.5.25 → validmind-2.6.7}/validmind/unit_metrics/classification/Precision.py +1 -0
- {validmind-2.5.25 → validmind-2.6.7}/validmind/unit_metrics/classification/ROC_AUC.py +1 -0
- {validmind-2.5.25 → validmind-2.6.7}/validmind/unit_metrics/classification/Recall.py +1 -0
- {validmind-2.5.25 → validmind-2.6.7}/validmind/unit_metrics/regression/AdjustedRSquaredScore.py +1 -0
- {validmind-2.5.25 → validmind-2.6.7}/validmind/unit_metrics/regression/GiniCoefficient.py +1 -0
- {validmind-2.5.25 → validmind-2.6.7}/validmind/unit_metrics/regression/HuberLoss.py +1 -0
- {validmind-2.5.25 → validmind-2.6.7}/validmind/unit_metrics/regression/KolmogorovSmirnovStatistic.py +1 -0
- {validmind-2.5.25 → validmind-2.6.7}/validmind/unit_metrics/regression/MeanAbsoluteError.py +1 -0
- {validmind-2.5.25 → validmind-2.6.7}/validmind/unit_metrics/regression/MeanAbsolutePercentageError.py +1 -0
- {validmind-2.5.25 → validmind-2.6.7}/validmind/unit_metrics/regression/MeanBiasDeviation.py +1 -0
- {validmind-2.5.25 → validmind-2.6.7}/validmind/unit_metrics/regression/MeanSquaredError.py +1 -0
- {validmind-2.5.25 → validmind-2.6.7}/validmind/unit_metrics/regression/QuantileLoss.py +1 -0
- {validmind-2.5.25 → validmind-2.6.7}/validmind/unit_metrics/regression/RSquaredScore.py +2 -1
- {validmind-2.5.25 → validmind-2.6.7}/validmind/unit_metrics/regression/RootMeanSquaredError.py +1 -0
- {validmind-2.5.25 → validmind-2.6.7}/validmind/utils.py +66 -17
- {validmind-2.5.25 → validmind-2.6.7}/validmind/vm_models/__init__.py +2 -17
- {validmind-2.5.25 → validmind-2.6.7}/validmind/vm_models/dataset/dataset.py +31 -4
- {validmind-2.5.25 → validmind-2.6.7}/validmind/vm_models/figure.py +7 -37
- {validmind-2.5.25 → validmind-2.6.7}/validmind/vm_models/model.py +3 -0
- validmind-2.6.7/validmind/vm_models/result/__init__.py +7 -0
- validmind-2.6.7/validmind/vm_models/result/result.jinja +21 -0
- validmind-2.6.7/validmind/vm_models/result/result.py +337 -0
- validmind-2.6.7/validmind/vm_models/result/utils.py +160 -0
- {validmind-2.5.25 → validmind-2.6.7}/validmind/vm_models/test_suite/runner.py +16 -54
- {validmind-2.5.25 → validmind-2.6.7}/validmind/vm_models/test_suite/summary.py +3 -3
- validmind-2.6.7/validmind/vm_models/test_suite/test.py +118 -0
- {validmind-2.5.25 → validmind-2.6.7}/validmind/vm_models/test_suite/test_suite.py +8 -40
- validmind-2.5.25/PKG-INFO +0 -118
- validmind-2.5.25/README.pypi.md +0 -54
- validmind-2.5.25/validmind/__version__.py +0 -1
- validmind-2.5.25/validmind/tests/__init__.py +0 -39
- validmind-2.5.25/validmind/tests/__types__.py +0 -182
- validmind-2.5.25/validmind/tests/data_validation/ADF.py +0 -134
- validmind-2.5.25/validmind/tests/data_validation/AutoAR.py +0 -153
- validmind-2.5.25/validmind/tests/data_validation/AutoMA.py +0 -156
- validmind-2.5.25/validmind/tests/data_validation/AutoSeasonality.py +0 -190
- validmind-2.5.25/validmind/tests/data_validation/AutoStationarity.py +0 -185
- validmind-2.5.25/validmind/tests/data_validation/ClassImbalance.py +0 -176
- validmind-2.5.25/validmind/tests/data_validation/DatasetDescription.py +0 -265
- validmind-2.5.25/validmind/tests/data_validation/DescriptiveStatistics.py +0 -140
- validmind-2.5.25/validmind/tests/data_validation/Duplicates.py +0 -140
- validmind-2.5.25/validmind/tests/data_validation/EngleGrangerCoint.py +0 -127
- validmind-2.5.25/validmind/tests/data_validation/HighCardinality.py +0 -127
- validmind-2.5.25/validmind/tests/data_validation/HighPearsonCorrelation.py +0 -142
- validmind-2.5.25/validmind/tests/data_validation/IQROutliersBarPlot.py +0 -152
- validmind-2.5.25/validmind/tests/data_validation/IQROutliersTable.py +0 -132
- validmind-2.5.25/validmind/tests/data_validation/KPSS.py +0 -133
- validmind-2.5.25/validmind/tests/data_validation/LaggedCorrelationHeatmap.py +0 -152
- validmind-2.5.25/validmind/tests/data_validation/PhillipsPerronArch.py +0 -134
- validmind-2.5.25/validmind/tests/data_validation/SeasonalDecompose.py +0 -241
- validmind-2.5.25/validmind/tests/data_validation/TargetRateBarPlots.py +0 -149
- validmind-2.5.25/validmind/tests/data_validation/TimeSeriesFrequency.py +0 -191
- validmind-2.5.25/validmind/tests/data_validation/TimeSeriesMissingValues.py +0 -189
- validmind-2.5.25/validmind/tests/data_validation/TimeSeriesOutliers.py +0 -235
- validmind-2.5.25/validmind/tests/data_validation/WOEBinPlots.py +0 -169
- validmind-2.5.25/validmind/tests/data_validation/WOEBinTable.py +0 -113
- validmind-2.5.25/validmind/tests/data_validation/ZivotAndrewsArch.py +0 -128
- validmind-2.5.25/validmind/tests/data_validation/nlp/PolarityAndSubjectivity.py +0 -72
- validmind-2.5.25/validmind/tests/data_validation/nlp/Punctuations.py +0 -97
- validmind-2.5.25/validmind/tests/data_validation/nlp/TextDescription.py +0 -219
- validmind-2.5.25/validmind/tests/decorator.py +0 -371
- validmind-2.5.25/validmind/tests/load.py +0 -284
- validmind-2.5.25/validmind/tests/metadata.py +0 -59
- validmind-2.5.25/validmind/tests/model_validation/embeddings/StabilityAnalysis.py +0 -176
- validmind-2.5.25/validmind/tests/model_validation/ragas/ContextUtilization.py +0 -161
- validmind-2.5.25/validmind/tests/model_validation/sklearn/ClassifierPerformance.py +0 -148
- validmind-2.5.25/validmind/tests/model_validation/sklearn/ClusterPerformance.py +0 -80
- validmind-2.5.25/validmind/tests/model_validation/sklearn/ClusterPerformanceMetrics.py +0 -132
- validmind-2.5.25/validmind/tests/model_validation/sklearn/MinimumAccuracy.py +0 -127
- validmind-2.5.25/validmind/tests/model_validation/sklearn/MinimumROCAUCScore.py +0 -129
- validmind-2.5.25/validmind/tests/model_validation/sklearn/ModelsPerformanceComparison.py +0 -140
- validmind-2.5.25/validmind/tests/model_validation/sklearn/PopulationStabilityIndex.py +0 -251
- validmind-2.5.25/validmind/tests/model_validation/sklearn/RegressionPerformance.py +0 -136
- validmind-2.5.25/validmind/tests/model_validation/sklearn/SHAPGlobalImportance.py +0 -276
- validmind-2.5.25/validmind/tests/model_validation/sklearn/TrainingTestDegradation.py +0 -175
- validmind-2.5.25/validmind/tests/model_validation/sklearn/WeakspotsDiagnosis.py +0 -353
- validmind-2.5.25/validmind/tests/model_validation/statsmodels/RegressionFeatureSignificance.py +0 -137
- validmind-2.5.25/validmind/tests/model_validation/statsmodels/RegressionModelForecastPlot.py +0 -158
- validmind-2.5.25/validmind/tests/model_validation/statsmodels/RegressionModelForecastPlotLevels.py +0 -198
- validmind-2.5.25/validmind/tests/model_validation/statsmodels/RegressionModelSensitivityPlot.py +0 -176
- validmind-2.5.25/validmind/tests/model_validation/statsmodels/RegressionModelSummary.py +0 -98
- validmind-2.5.25/validmind/tests/model_validation/statsmodels/RegressionPermutationFeatureImportance.py +0 -133
- validmind-2.5.25/validmind/tests/prompt_validation/Robustness.py +0 -171
- validmind-2.5.25/validmind/tests/prompt_validation/Specificity.py +0 -147
- validmind-2.5.25/validmind/tests/run.py +0 -582
- validmind-2.5.25/validmind/tests/test_providers.py +0 -159
- validmind-2.5.25/validmind/tests/utils.py +0 -16
- validmind-2.5.25/validmind/unit_metrics/__init__.py +0 -171
- validmind-2.5.25/validmind/unit_metrics/composite.py +0 -238
- validmind-2.5.25/validmind/vm_models/test/metric.py +0 -98
- validmind-2.5.25/validmind/vm_models/test/metric_result.py +0 -61
- validmind-2.5.25/validmind/vm_models/test/output_template.py +0 -55
- validmind-2.5.25/validmind/vm_models/test/result_summary.py +0 -76
- validmind-2.5.25/validmind/vm_models/test/result_wrapper.py +0 -488
- validmind-2.5.25/validmind/vm_models/test/test.py +0 -103
- validmind-2.5.25/validmind/vm_models/test/threshold_test.py +0 -106
- validmind-2.5.25/validmind/vm_models/test/threshold_test_result.py +0 -75
- validmind-2.5.25/validmind/vm_models/test_context.py +0 -259
- validmind-2.5.25/validmind/vm_models/test_suite/test.py +0 -152
- {validmind-2.5.25 → validmind-2.6.7}/LICENSE +0 -0
- {validmind-2.5.25 → validmind-2.6.7}/validmind/ai/test_result_description/config.yaml +0 -0
- {validmind-2.5.25 → validmind-2.6.7}/validmind/ai/test_result_description/image_processing.py +0 -0
- {validmind-2.5.25 → validmind-2.6.7}/validmind/ai/test_result_description/system.jinja +0 -0
- {validmind-2.5.25 → validmind-2.6.7}/validmind/ai/test_result_description/user.jinja +0 -0
- {validmind-2.5.25 → validmind-2.6.7}/validmind/datasets/classification/__init__.py +0 -0
- {validmind-2.5.25 → validmind-2.6.7}/validmind/datasets/classification/datasets/bank_customer_churn.csv +0 -0
- {validmind-2.5.25 → validmind-2.6.7}/validmind/datasets/classification/datasets/taiwan_credit.csv +0 -0
- {validmind-2.5.25 → validmind-2.6.7}/validmind/datasets/classification/taiwan_credit.py +0 -0
- {validmind-2.5.25 → validmind-2.6.7}/validmind/datasets/cluster/digits.py +0 -0
- {validmind-2.5.25 → validmind-2.6.7}/validmind/datasets/credit_risk/__init__.py +0 -0
- {validmind-2.5.25 → validmind-2.6.7}/validmind/datasets/credit_risk/datasets/lending_club_biased.csv.gz +0 -0
- {validmind-2.5.25 → validmind-2.6.7}/validmind/datasets/credit_risk/datasets/lending_club_loan_data_2007_2014_clean.csv.gz +0 -0
- {validmind-2.5.25 → validmind-2.6.7}/validmind/datasets/credit_risk/lending_club.py +0 -0
- {validmind-2.5.25 → validmind-2.6.7}/validmind/datasets/credit_risk/lending_club_bias.py +0 -0
- {validmind-2.5.25 → validmind-2.6.7}/validmind/datasets/llm/rag/__init__.py +0 -0
- {validmind-2.5.25 → validmind-2.6.7}/validmind/datasets/llm/rag/datasets/rfp_existing_questions_client_1.csv +0 -0
- {validmind-2.5.25 → validmind-2.6.7}/validmind/datasets/llm/rag/datasets/rfp_existing_questions_client_2.csv +0 -0
- {validmind-2.5.25 → validmind-2.6.7}/validmind/datasets/llm/rag/datasets/rfp_existing_questions_client_3.csv +0 -0
- {validmind-2.5.25 → validmind-2.6.7}/validmind/datasets/llm/rag/datasets/rfp_existing_questions_client_4.csv +0 -0
- {validmind-2.5.25 → validmind-2.6.7}/validmind/datasets/llm/rag/datasets/rfp_existing_questions_client_5.csv +0 -0
- {validmind-2.5.25 → validmind-2.6.7}/validmind/datasets/llm/rag/rfp.py +0 -0
- {validmind-2.5.25 → validmind-2.6.7}/validmind/datasets/nlp/cnn_dailymail.py +0 -0
- {validmind-2.5.25 → validmind-2.6.7}/validmind/datasets/nlp/datasets/Covid_19.csv +0 -0
- {validmind-2.5.25 → validmind-2.6.7}/validmind/datasets/nlp/datasets/cnn_dailymail_100_with_predictions.csv +0 -0
- {validmind-2.5.25 → validmind-2.6.7}/validmind/datasets/nlp/datasets/cnn_dailymail_500_with_predictions.csv +0 -0
- {validmind-2.5.25 → validmind-2.6.7}/validmind/datasets/nlp/datasets/sentiments_with_predictions.csv +0 -0
- {validmind-2.5.25 → validmind-2.6.7}/validmind/datasets/nlp/twitter_covid_19.py +0 -0
- {validmind-2.5.25 → validmind-2.6.7}/validmind/datasets/regression/__init__.py +0 -0
- {validmind-2.5.25 → validmind-2.6.7}/validmind/datasets/regression/california_housing.py +0 -0
- {validmind-2.5.25 → validmind-2.6.7}/validmind/datasets/regression/datasets/fred/CPIAUCSL.csv +0 -0
- {validmind-2.5.25 → validmind-2.6.7}/validmind/datasets/regression/datasets/fred/CSUSHPISA.csv +0 -0
- {validmind-2.5.25 → validmind-2.6.7}/validmind/datasets/regression/datasets/fred/DRSFRMACBS.csv +0 -0
- {validmind-2.5.25 → validmind-2.6.7}/validmind/datasets/regression/datasets/fred/FEDFUNDS.csv +0 -0
- {validmind-2.5.25 → validmind-2.6.7}/validmind/datasets/regression/datasets/fred/GDP.csv +0 -0
- {validmind-2.5.25 → validmind-2.6.7}/validmind/datasets/regression/datasets/fred/GDPC1.csv +0 -0
- {validmind-2.5.25 → validmind-2.6.7}/validmind/datasets/regression/datasets/fred/GS10.csv +0 -0
- {validmind-2.5.25 → validmind-2.6.7}/validmind/datasets/regression/datasets/fred/GS3.csv +0 -0
- {validmind-2.5.25 → validmind-2.6.7}/validmind/datasets/regression/datasets/fred/GS5.csv +0 -0
- {validmind-2.5.25 → validmind-2.6.7}/validmind/datasets/regression/datasets/fred/MORTGAGE30US.csv +0 -0
- {validmind-2.5.25 → validmind-2.6.7}/validmind/datasets/regression/datasets/fred/UNRATE.csv +0 -0
- {validmind-2.5.25 → validmind-2.6.7}/validmind/datasets/regression/datasets/fred_loan_rates.csv +0 -0
- {validmind-2.5.25 → validmind-2.6.7}/validmind/datasets/regression/datasets/fred_loan_rates_test_1.csv +0 -0
- {validmind-2.5.25 → validmind-2.6.7}/validmind/datasets/regression/datasets/fred_loan_rates_test_2.csv +0 -0
- {validmind-2.5.25 → validmind-2.6.7}/validmind/datasets/regression/datasets/fred_loan_rates_test_3.csv +0 -0
- {validmind-2.5.25 → validmind-2.6.7}/validmind/datasets/regression/datasets/fred_loan_rates_test_4.csv +0 -0
- {validmind-2.5.25 → validmind-2.6.7}/validmind/datasets/regression/datasets/fred_loan_rates_test_5.csv +0 -0
- {validmind-2.5.25 → validmind-2.6.7}/validmind/datasets/regression/datasets/leanding_club_loan_rates.csv +0 -0
- {validmind-2.5.25 → validmind-2.6.7}/validmind/datasets/regression/fred.py +0 -0
- {validmind-2.5.25 → validmind-2.6.7}/validmind/datasets/regression/fred_timeseries.py +0 -0
- {validmind-2.5.25 → validmind-2.6.7}/validmind/datasets/regression/lending_club.py +0 -0
- {validmind-2.5.25 → validmind-2.6.7}/validmind/datasets/regression/models/fred_loan_rates_model_1.pkl +0 -0
- {validmind-2.5.25 → validmind-2.6.7}/validmind/datasets/regression/models/fred_loan_rates_model_2.pkl +0 -0
- {validmind-2.5.25 → validmind-2.6.7}/validmind/datasets/regression/models/fred_loan_rates_model_3.pkl +0 -0
- {validmind-2.5.25 → validmind-2.6.7}/validmind/datasets/regression/models/fred_loan_rates_model_4.pkl +0 -0
- {validmind-2.5.25 → validmind-2.6.7}/validmind/datasets/regression/models/fred_loan_rates_model_5.pkl +0 -0
- {validmind-2.5.25 → validmind-2.6.7}/validmind/html_templates/__init__.py +0 -0
- {validmind-2.5.25 → validmind-2.6.7}/validmind/input_registry.py +0 -0
- {validmind-2.5.25 → validmind-2.6.7}/validmind/models/__init__.py +0 -0
- {validmind-2.5.25 → validmind-2.6.7}/validmind/models/foundation.py +0 -0
- {validmind-2.5.25 → validmind-2.6.7}/validmind/models/function.py +0 -0
- {validmind-2.5.25 → validmind-2.6.7}/validmind/models/huggingface.py +0 -0
- {validmind-2.5.25 → validmind-2.6.7}/validmind/models/metadata.py +0 -0
- {validmind-2.5.25 → validmind-2.6.7}/validmind/models/pipeline.py +0 -0
- {validmind-2.5.25 → validmind-2.6.7}/validmind/models/pytorch.py +0 -0
- {validmind-2.5.25 → validmind-2.6.7}/validmind/models/r_model.py +0 -0
- {validmind-2.5.25 → validmind-2.6.7}/validmind/models/sklearn.py +0 -0
- {validmind-2.5.25 → validmind-2.6.7}/validmind/template.py +0 -0
- {validmind-2.5.25 → validmind-2.6.7}/validmind/test_suites/__init__.py +0 -0
- {validmind-2.5.25 → validmind-2.6.7}/validmind/test_suites/classifier.py +0 -0
- {validmind-2.5.25 → validmind-2.6.7}/validmind/test_suites/cluster.py +0 -0
- {validmind-2.5.25 → validmind-2.6.7}/validmind/test_suites/embeddings.py +0 -0
- {validmind-2.5.25 → validmind-2.6.7}/validmind/test_suites/llm.py +0 -0
- {validmind-2.5.25 → validmind-2.6.7}/validmind/test_suites/nlp.py +0 -0
- {validmind-2.5.25 → validmind-2.6.7}/validmind/test_suites/parameters_optimization.py +0 -0
- {validmind-2.5.25 → validmind-2.6.7}/validmind/test_suites/regression.py +0 -0
- {validmind-2.5.25 → validmind-2.6.7}/validmind/test_suites/statsmodels_timeseries.py +0 -0
- {validmind-2.5.25 → validmind-2.6.7}/validmind/test_suites/summarization.py +0 -0
- {validmind-2.5.25 → validmind-2.6.7}/validmind/test_suites/tabular_datasets.py +0 -0
- {validmind-2.5.25 → validmind-2.6.7}/validmind/test_suites/text_data.py +0 -0
- {validmind-2.5.25 → validmind-2.6.7}/validmind/test_suites/time_series.py +0 -0
- {validmind-2.5.25 → validmind-2.6.7}/validmind/tests/data_validation/BivariateScatterPlots.py +0 -0
- {validmind-2.5.25 → validmind-2.6.7}/validmind/tests/data_validation/BoxPierce.py +0 -0
- {validmind-2.5.25 → validmind-2.6.7}/validmind/tests/data_validation/ChiSquaredFeaturesTable.py +0 -0
- {validmind-2.5.25 → validmind-2.6.7}/validmind/tests/data_validation/FeatureTargetCorrelationPlot.py +0 -0
- {validmind-2.5.25 → validmind-2.6.7}/validmind/tests/data_validation/JarqueBera.py +0 -0
- {validmind-2.5.25 → validmind-2.6.7}/validmind/tests/data_validation/LJungBox.py +0 -0
- {validmind-2.5.25 → validmind-2.6.7}/validmind/tests/data_validation/PearsonCorrelationMatrix.py +0 -0
- {validmind-2.5.25 → validmind-2.6.7}/validmind/tests/data_validation/ProtectedClassesCombination.py +0 -0
- {validmind-2.5.25 → validmind-2.6.7}/validmind/tests/data_validation/ProtectedClassesDescription.py +0 -0
- {validmind-2.5.25 → validmind-2.6.7}/validmind/tests/data_validation/ProtectedClassesDisparity.py +0 -0
- {validmind-2.5.25 → validmind-2.6.7}/validmind/tests/data_validation/ProtectedClassesThresholdOptimizer.py +0 -0
- {validmind-2.5.25 → validmind-2.6.7}/validmind/tests/data_validation/RunsTest.py +0 -0
- {validmind-2.5.25 → validmind-2.6.7}/validmind/tests/data_validation/ScatterPlot.py +0 -0
- {validmind-2.5.25 → validmind-2.6.7}/validmind/tests/data_validation/ShapiroWilk.py +0 -0
- {validmind-2.5.25 → validmind-2.6.7}/validmind/tests/data_validation/TabularDescriptionTables.py +0 -0
- {validmind-2.5.25 → validmind-2.6.7}/validmind/tests/data_validation/TimeSeriesDescription.py +0 -0
- {validmind-2.5.25 → validmind-2.6.7}/validmind/tests/data_validation/TimeSeriesDescriptiveStatistics.py +0 -0
- {validmind-2.5.25 → validmind-2.6.7}/validmind/tests/data_validation/__init__.py +0 -0
- {validmind-2.5.25 → validmind-2.6.7}/validmind/tests/data_validation/nlp/__init__.py +0 -0
- {validmind-2.5.25 → validmind-2.6.7}/validmind/tests/model_validation/ModelMetadata.py +0 -0
- {validmind-2.5.25 → validmind-2.6.7}/validmind/tests/model_validation/ModelPredictionResiduals.py +0 -0
- {validmind-2.5.25 → validmind-2.6.7}/validmind/tests/model_validation/RougeScore.py +0 -0
- {validmind-2.5.25 → validmind-2.6.7}/validmind/tests/model_validation/TimeSeriesPredictionWithCI.py +0 -0
- {validmind-2.5.25 → validmind-2.6.7}/validmind/tests/model_validation/TimeSeriesPredictionsPlot.py +0 -0
- {validmind-2.5.25 → validmind-2.6.7}/validmind/tests/model_validation/TimeSeriesR2SquareBySegments.py +0 -0
- {validmind-2.5.25 → validmind-2.6.7}/validmind/tests/model_validation/TokenDisparity.py +0 -0
- {validmind-2.5.25 → validmind-2.6.7}/validmind/tests/model_validation/ToxicityScore.py +0 -0
- {validmind-2.5.25 → validmind-2.6.7}/validmind/tests/model_validation/__init__.py +0 -0
- {validmind-2.5.25 → validmind-2.6.7}/validmind/tests/model_validation/embeddings/CosineSimilarityComparison.py +0 -0
- {validmind-2.5.25 → validmind-2.6.7}/validmind/tests/model_validation/embeddings/CosineSimilarityHeatmap.py +0 -0
- {validmind-2.5.25 → validmind-2.6.7}/validmind/tests/model_validation/embeddings/EuclideanDistanceComparison.py +0 -0
- {validmind-2.5.25 → validmind-2.6.7}/validmind/tests/model_validation/embeddings/EuclideanDistanceHeatmap.py +0 -0
- {validmind-2.5.25 → validmind-2.6.7}/validmind/tests/model_validation/embeddings/PCAComponentsPairwisePlots.py +0 -0
- {validmind-2.5.25 → validmind-2.6.7}/validmind/tests/model_validation/embeddings/TSNEComponentsPairwisePlots.py +0 -0
- {validmind-2.5.25 → validmind-2.6.7}/validmind/tests/model_validation/ragas/utils.py +0 -0
- {validmind-2.5.25 → validmind-2.6.7}/validmind/tests/model_validation/sklearn/RegressionErrors.py +0 -0
- {validmind-2.5.25 → validmind-2.6.7}/validmind/tests/model_validation/sklearn/RegressionErrorsComparison.py +0 -0
- {validmind-2.5.25 → validmind-2.6.7}/validmind/tests/model_validation/sklearn/RegressionR2Square.py +0 -0
- {validmind-2.5.25 → validmind-2.6.7}/validmind/tests/model_validation/sklearn/RegressionR2SquareComparison.py +0 -0
- {validmind-2.5.25 → validmind-2.6.7}/validmind/tests/model_validation/sklearn/__init__.py +0 -0
- {validmind-2.5.25 → validmind-2.6.7}/validmind/tests/model_validation/statsmodels/CumulativePredictionProbabilities.py +0 -0
- {validmind-2.5.25 → validmind-2.6.7}/validmind/tests/model_validation/statsmodels/DurbinWatsonTest.py +0 -0
- {validmind-2.5.25 → validmind-2.6.7}/validmind/tests/model_validation/statsmodels/GINITable.py +0 -0
- {validmind-2.5.25 → validmind-2.6.7}/validmind/tests/model_validation/statsmodels/PredictionProbabilitiesHistogram.py +0 -0
- {validmind-2.5.25 → validmind-2.6.7}/validmind/tests/model_validation/statsmodels/RegressionCoeffs.py +0 -0
- {validmind-2.5.25 → validmind-2.6.7}/validmind/tests/model_validation/statsmodels/ScorecardHistogram.py +0 -0
- {validmind-2.5.25 → validmind-2.6.7}/validmind/tests/model_validation/statsmodels/__init__.py +0 -0
- {validmind-2.5.25 → validmind-2.6.7}/validmind/tests/model_validation/statsmodels/statsutils.py +0 -0
- {validmind-2.5.25 → validmind-2.6.7}/validmind/tests/ongoing_monitoring/FeatureDrift.py +0 -0
- {validmind-2.5.25 → validmind-2.6.7}/validmind/tests/ongoing_monitoring/PredictionAcrossEachFeature.py +0 -0
- {validmind-2.5.25 → validmind-2.6.7}/validmind/tests/prompt_validation/__init__.py +0 -0
- {validmind-2.5.25 → validmind-2.6.7}/validmind/unit_metrics/classification/Accuracy.py +0 -0
- {validmind-2.5.25 → validmind-2.6.7}/validmind/vm_models/dataset/__init__.py +0 -0
- {validmind-2.5.25 → validmind-2.6.7}/validmind/vm_models/dataset/utils.py +0 -0
- {validmind-2.5.25 → validmind-2.6.7}/validmind/vm_models/input.py +0 -0
validmind-2.6.7/PKG-INFO
ADDED
@@ -0,0 +1,137 @@
|
|
1
|
+
Metadata-Version: 2.1
|
2
|
+
Name: validmind
|
3
|
+
Version: 2.6.7
|
4
|
+
Summary: ValidMind Library
|
5
|
+
License: Commercial License
|
6
|
+
Author: Andres Rodriguez
|
7
|
+
Author-email: andres@validmind.ai
|
8
|
+
Requires-Python: >=3.8.1,<3.12
|
9
|
+
Classifier: License :: Other/Proprietary License
|
10
|
+
Classifier: Programming Language :: Python :: 3
|
11
|
+
Classifier: Programming Language :: Python :: 3.9
|
12
|
+
Classifier: Programming Language :: Python :: 3.10
|
13
|
+
Classifier: Programming Language :: Python :: 3.11
|
14
|
+
Provides-Extra: all
|
15
|
+
Provides-Extra: huggingface
|
16
|
+
Provides-Extra: llm
|
17
|
+
Provides-Extra: pytorch
|
18
|
+
Provides-Extra: r-support
|
19
|
+
Requires-Dist: aiohttp[speedups]
|
20
|
+
Requires-Dist: arch
|
21
|
+
Requires-Dist: bert-score (>=0.3.13)
|
22
|
+
Requires-Dist: catboost
|
23
|
+
Requires-Dist: datasets (>=2.10.0,<3.0.0)
|
24
|
+
Requires-Dist: evaluate
|
25
|
+
Requires-Dist: ipywidgets
|
26
|
+
Requires-Dist: kaleido (>=0.2.1,!=0.2.1.post1)
|
27
|
+
Requires-Dist: langchain-openai (>=0.1.8) ; extra == "all" or extra == "llm"
|
28
|
+
Requires-Dist: langdetect
|
29
|
+
Requires-Dist: latex2mathml (>=3.77.0)
|
30
|
+
Requires-Dist: llvmlite ; python_version >= "3.8" and python_full_version <= "3.11.0"
|
31
|
+
Requires-Dist: matplotlib
|
32
|
+
Requires-Dist: mistune (>=3.0.2,<4.0.0)
|
33
|
+
Requires-Dist: nest-asyncio (>=1.6.0,<2.0.0)
|
34
|
+
Requires-Dist: nltk (>=3.8.1,<4.0.0)
|
35
|
+
Requires-Dist: numba (<0.59.0)
|
36
|
+
Requires-Dist: numpy
|
37
|
+
Requires-Dist: openai (>=1)
|
38
|
+
Requires-Dist: pandas (>=1.1,<=2.0.3)
|
39
|
+
Requires-Dist: plotly
|
40
|
+
Requires-Dist: plotly-express
|
41
|
+
Requires-Dist: polars
|
42
|
+
Requires-Dist: pycocoevalcap (>=1.2,<2.0) ; extra == "all" or extra == "llm"
|
43
|
+
Requires-Dist: python-dotenv
|
44
|
+
Requires-Dist: ragas (>=0.2.3) ; extra == "all" or extra == "llm"
|
45
|
+
Requires-Dist: rouge (>=1)
|
46
|
+
Requires-Dist: rpy2 (>=3.5.10,<4.0.0) ; extra == "all" or extra == "r-support"
|
47
|
+
Requires-Dist: scikit-learn
|
48
|
+
Requires-Dist: scipy
|
49
|
+
Requires-Dist: scorecardpy (>=0.1.9.6,<0.2.0.0)
|
50
|
+
Requires-Dist: seaborn
|
51
|
+
Requires-Dist: sentencepiece (>=0.2.0,<0.3.0) ; extra == "all" or extra == "huggingface" or extra == "llm"
|
52
|
+
Requires-Dist: sentry-sdk (>=1.24.0,<2.0.0)
|
53
|
+
Requires-Dist: shap (==0.44.1)
|
54
|
+
Requires-Dist: statsmodels
|
55
|
+
Requires-Dist: tabulate (>=0.8.9,<0.9.0)
|
56
|
+
Requires-Dist: textblob (>=0.18.0.post0,<0.19.0)
|
57
|
+
Requires-Dist: torch (>=1.10.0) ; extra == "all" or extra == "llm" or extra == "pytorch"
|
58
|
+
Requires-Dist: tqdm
|
59
|
+
Requires-Dist: transformers (>=4.32.0,<5.0.0) ; extra == "all" or extra == "huggingface" or extra == "llm"
|
60
|
+
Requires-Dist: xgboost (>=1.5.2,<3)
|
61
|
+
Requires-Dist: ydata-profiling
|
62
|
+
Requires-Dist: yfinance (>=0.2.48,<0.3.0)
|
63
|
+
Description-Content-Type: text/markdown
|
64
|
+
|
65
|
+
# ValidMind Library
|
66
|
+
|
67
|
+
The ValidMind Library is a suite of developer tools and methods designed to automate the documentation and validation of your models.
|
68
|
+
|
69
|
+
Designed to be model agnostic, the ValidMind Library provides all the standard functionality without requiring you to rewrite any functions as long as your model is built in Python.
|
70
|
+
|
71
|
+
With a rich array of documentation tools and test suites, from documenting descriptions of your datasets to testing your models for weak spots and overfit areas, the ValidMind Library helps you automate model documentation by feeding the ValidMind Platform with documentation artifacts and test results.
|
72
|
+
|
73
|
+
## What is ValidMind?
|
74
|
+
|
75
|
+
ValidMind helps developers, data scientists and risk and compliance stakeholders identify potential risks in their AI and large language models, and generate robust, high-quality model documentation that meets regulatory requirements.
|
76
|
+
|
77
|
+
[The ValidMind AI risk platform](https://docs.validmind.ai/about/overview.html) consists of two intertwined product offerings:
|
78
|
+
|
79
|
+
- **The ValidMind Library** — Designed to be incorporated into your existing model development environment, you use the ValidMind Library to run tests and log documentation to the ValidMind Platform. Driven by the power of open-source, the ValidMind Library welcomes contributions to our code and developer samples: [`validmind-library` @ GitHub](https://github.com/validmind/validmind-library)
|
80
|
+
- **The ValidMind Platform** — A cloud-hosted user interface allowing you to comprehensively track your model inventory throughout the entire model lifecycle according to the unique requirements of your organization. You use the ValidMind Platform to oversee your model risk management process via the customizable model inventory.
|
81
|
+
|
82
|
+
### What do I need to get started with ValidMind?
|
83
|
+
|
84
|
+
> **All you need to get started with ValidMind is an account with us.**
|
85
|
+
>
|
86
|
+
> Signing up is FREE — **[Register with ValidMind](https://docs.validmind.ai/guide/configuration/register-with-validmind.html)**
|
87
|
+
|
88
|
+
That's right — you can run tests and log documentation even if you don't have a model available, so go ahead and [**Get started with the ValidMind Library**](https://docs.validmind.ai/developer/get-started-validmind-library.html)!
|
89
|
+
|
90
|
+
### How do I do more with the ValidMind Library?
|
91
|
+
|
92
|
+
**[Explore our code samples!](https://docs.validmind.ai/developer/samples-jupyter-notebooks.html)**
|
93
|
+
|
94
|
+
Our selection of Jupyter Notebooks showcase the capabilities and features of the ValidMind Library, while also providing you with useful examples that you can build on and adapt for your own use cases.
|
95
|
+
|
96
|
+
## Installation
|
97
|
+
|
98
|
+
To install the ValidMind Library and all optional dependencies, run:
|
99
|
+
|
100
|
+
```bash
|
101
|
+
pip install validmind[all]
|
102
|
+
```
|
103
|
+
|
104
|
+
To install the ValidMind Library without optional dependencies (core functionality only), run:
|
105
|
+
|
106
|
+
```bash
|
107
|
+
pip install validmind
|
108
|
+
```
|
109
|
+
|
110
|
+
### Extra dependencies
|
111
|
+
|
112
|
+
The ValidMind Library has optional dependencies that can be installed separately to support additional model types and tests.
|
113
|
+
|
114
|
+
- **LLM Support**: To be able to run tests for Large Language Models (LLMs), install the `llm` extra:
|
115
|
+
|
116
|
+
```bash
|
117
|
+
pip install validmind[llm]
|
118
|
+
```
|
119
|
+
|
120
|
+
- **PyTorch Models**: To use pytorch models with the ValidMind Library, install the `torch` extra:
|
121
|
+
|
122
|
+
```bash
|
123
|
+
pip install validmind[torch]
|
124
|
+
```
|
125
|
+
|
126
|
+
- **Hugging Face Transformers**: To use Hugging Face Transformers models with the ValidMind Library, install the `transformers` extra:
|
127
|
+
|
128
|
+
```bash
|
129
|
+
pip install validmind[transformers]
|
130
|
+
```
|
131
|
+
|
132
|
+
- **R Models**: To use R models with the ValidMind Library, install the `r` extra:
|
133
|
+
|
134
|
+
```bash
|
135
|
+
pip install validmind[r-support]
|
136
|
+
```
|
137
|
+
|
@@ -0,0 +1,72 @@
|
|
1
|
+
# ValidMind Library
|
2
|
+
|
3
|
+
The ValidMind Library is a suite of developer tools and methods designed to automate the documentation and validation of your models.
|
4
|
+
|
5
|
+
Designed to be model agnostic, the ValidMind Library provides all the standard functionality without requiring you to rewrite any functions as long as your model is built in Python.
|
6
|
+
|
7
|
+
With a rich array of documentation tools and test suites, from documenting descriptions of your datasets to testing your models for weak spots and overfit areas, the ValidMind Library helps you automate model documentation by feeding the ValidMind Platform with documentation artifacts and test results.
|
8
|
+
|
9
|
+
## What is ValidMind?
|
10
|
+
|
11
|
+
ValidMind helps developers, data scientists and risk and compliance stakeholders identify potential risks in their AI and large language models, and generate robust, high-quality model documentation that meets regulatory requirements.
|
12
|
+
|
13
|
+
[The ValidMind AI risk platform](https://docs.validmind.ai/about/overview.html) consists of two intertwined product offerings:
|
14
|
+
|
15
|
+
- **The ValidMind Library** — Designed to be incorporated into your existing model development environment, you use the ValidMind Library to run tests and log documentation to the ValidMind Platform. Driven by the power of open-source, the ValidMind Library welcomes contributions to our code and developer samples: [`validmind-library` @ GitHub](https://github.com/validmind/validmind-library)
|
16
|
+
- **The ValidMind Platform** — A cloud-hosted user interface allowing you to comprehensively track your model inventory throughout the entire model lifecycle according to the unique requirements of your organization. You use the ValidMind Platform to oversee your model risk management process via the customizable model inventory.
|
17
|
+
|
18
|
+
### What do I need to get started with ValidMind?
|
19
|
+
|
20
|
+
> **All you need to get started with ValidMind is an account with us.**
|
21
|
+
>
|
22
|
+
> Signing up is FREE — **[Register with ValidMind](https://docs.validmind.ai/guide/configuration/register-with-validmind.html)**
|
23
|
+
|
24
|
+
That's right — you can run tests and log documentation even if you don't have a model available, so go ahead and [**Get started with the ValidMind Library**](https://docs.validmind.ai/developer/get-started-validmind-library.html)!
|
25
|
+
|
26
|
+
### How do I do more with the ValidMind Library?
|
27
|
+
|
28
|
+
**[Explore our code samples!](https://docs.validmind.ai/developer/samples-jupyter-notebooks.html)**
|
29
|
+
|
30
|
+
Our selection of Jupyter Notebooks showcase the capabilities and features of the ValidMind Library, while also providing you with useful examples that you can build on and adapt for your own use cases.
|
31
|
+
|
32
|
+
## Installation
|
33
|
+
|
34
|
+
To install the ValidMind Library and all optional dependencies, run:
|
35
|
+
|
36
|
+
```bash
|
37
|
+
pip install validmind[all]
|
38
|
+
```
|
39
|
+
|
40
|
+
To install the ValidMind Library without optional dependencies (core functionality only), run:
|
41
|
+
|
42
|
+
```bash
|
43
|
+
pip install validmind
|
44
|
+
```
|
45
|
+
|
46
|
+
### Extra dependencies
|
47
|
+
|
48
|
+
The ValidMind Library has optional dependencies that can be installed separately to support additional model types and tests.
|
49
|
+
|
50
|
+
- **LLM Support**: To be able to run tests for Large Language Models (LLMs), install the `llm` extra:
|
51
|
+
|
52
|
+
```bash
|
53
|
+
pip install validmind[llm]
|
54
|
+
```
|
55
|
+
|
56
|
+
- **PyTorch Models**: To use pytorch models with the ValidMind Library, install the `torch` extra:
|
57
|
+
|
58
|
+
```bash
|
59
|
+
pip install validmind[torch]
|
60
|
+
```
|
61
|
+
|
62
|
+
- **Hugging Face Transformers**: To use Hugging Face Transformers models with the ValidMind Library, install the `transformers` extra:
|
63
|
+
|
64
|
+
```bash
|
65
|
+
pip install validmind[transformers]
|
66
|
+
```
|
67
|
+
|
68
|
+
- **R Models**: To use R models with the ValidMind Library, install the `r` extra:
|
69
|
+
|
70
|
+
```bash
|
71
|
+
pip install validmind[r-support]
|
72
|
+
```
|
@@ -10,7 +10,7 @@ description = "ValidMind Library"
|
|
10
10
|
license = "Commercial License"
|
11
11
|
name = "validmind"
|
12
12
|
readme = "README.pypi.md"
|
13
|
-
version = "2.
|
13
|
+
version = "2.6.7"
|
14
14
|
|
15
15
|
[tool.poetry.dependencies]
|
16
16
|
aiohttp = {extras = ["speedups"], version = "*"}
|
@@ -29,7 +29,7 @@ matplotlib = "*"
|
|
29
29
|
mistune = "^3.0.2"
|
30
30
|
nest-asyncio = "^1.6.0"
|
31
31
|
nltk = "^3.8.1"
|
32
|
-
numba = "<0.59.0" # TODO: https://github.com/validmind/
|
32
|
+
numba = "<0.59.0" # TODO: https://github.com/validmind/validmind-library/pull/28
|
33
33
|
numpy = "*"
|
34
34
|
openai = ">=1"
|
35
35
|
pandas = ">=1.1,<=2.0.3"
|
@@ -39,7 +39,7 @@ polars = "*"
|
|
39
39
|
pycocoevalcap = {version = "^1.2", optional = true}
|
40
40
|
python = ">=3.8.1,<3.12"
|
41
41
|
python-dotenv = "*"
|
42
|
-
ragas = {version = ">=0.
|
42
|
+
ragas = {version = ">=0.2.3", optional = true}
|
43
43
|
rouge = ">=1"
|
44
44
|
rpy2 = {version = "^3.5.10", optional = true}
|
45
45
|
scikit-learn = "*"
|
@@ -57,6 +57,7 @@ tqdm = "*"
|
|
57
57
|
transformers = {version = "^4.32.0", optional = true}
|
58
58
|
xgboost = ">=1.5.2,<3"
|
59
59
|
ydata-profiling = "*"
|
60
|
+
yfinance = "^0.2.48"
|
60
61
|
|
61
62
|
[tool.poetry.group.dev.dependencies]
|
62
63
|
black = "^22.1.0"
|
@@ -3,25 +3,19 @@
|
|
3
3
|
# SPDX-License-Identifier: AGPL-3.0 AND ValidMind Commercial
|
4
4
|
|
5
5
|
"""
|
6
|
-
ValidMind
|
7
|
-
the documentation and validation of your models.
|
6
|
+
The ValidMind Library is a suite of developer tools and methods designed to automate the documentation and validation of your models.
|
8
7
|
|
9
|
-
|
10
|
-
Python library will provide all the standard functionality without requiring your developers to rewrite any functions.
|
8
|
+
Designed to be model agnostic, the ValidMind Library provides all the standard functionality without requiring you to rewrite any functions as long as your model is built in Python.
|
11
9
|
|
12
|
-
|
13
|
-
descriptions of your dataset to testing your models for weak spots and overfit areas. The Library
|
14
|
-
helps you automate the generation of model documentation by feeding the ValidMind platform with documentation
|
15
|
-
artifacts and test results to the ValidMind platform.
|
10
|
+
With a rich array of documentation tools and test suites, from documenting descriptions of your datasets to testing your models for weak spots and overfit areas, the ValidMind Library helps you automate model documentation by feeding the ValidMind Platform with documentation artifacts and test results.
|
16
11
|
|
17
|
-
To install the
|
12
|
+
To install the ValidMind Library:
|
18
13
|
|
19
14
|
```bash
|
20
15
|
pip install validmind
|
21
16
|
```
|
22
17
|
|
23
|
-
To initialize the
|
24
|
-
development source code, replacing this example with your own:
|
18
|
+
To initialize the ValidMind Library, paste the code snippet with the model identifier credentials directly into your development source code, replacing this example with your own:
|
25
19
|
|
26
20
|
```python
|
27
21
|
import validmind as vm
|
@@ -34,9 +28,7 @@ vm.init(
|
|
34
28
|
)
|
35
29
|
```
|
36
30
|
|
37
|
-
After you have pasted the code snippet into your development source code and executed the code, the Python
|
38
|
-
library will register with ValidMind. You can now use the Library to document and test your models,
|
39
|
-
and to upload to the ValidMind Platform.
|
31
|
+
After you have pasted the code snippet into your development source code and executed the code, the Python Library API will register with ValidMind. You can now use the ValidMind Library to document and test your models, and to upload to the ValidMind Platform.
|
40
32
|
"""
|
41
33
|
import warnings
|
42
34
|
|
@@ -57,11 +49,11 @@ from .client import ( # noqa: E402
|
|
57
49
|
run_documentation_tests,
|
58
50
|
run_test_suite,
|
59
51
|
)
|
60
|
-
from .tests.decorator import
|
52
|
+
from .tests.decorator import tags, tasks, test
|
61
53
|
|
62
54
|
__all__ = [ # noqa
|
63
55
|
"__version__",
|
64
|
-
#
|
56
|
+
# Python Library API
|
65
57
|
"datasets",
|
66
58
|
"errors",
|
67
59
|
"get_test_suite",
|
@@ -69,7 +61,6 @@ __all__ = [ # noqa
|
|
69
61
|
"init_dataset",
|
70
62
|
"init_model",
|
71
63
|
"init_r_model",
|
72
|
-
"metric",
|
73
64
|
"preview_template",
|
74
65
|
"reload",
|
75
66
|
"run_documentation_tests",
|
@@ -0,0 +1 @@
|
|
1
|
+
__version__ = "2.6.7"
|
@@ -2,17 +2,20 @@
|
|
2
2
|
# See 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
|
+
import json
|
5
6
|
import os
|
6
7
|
import re
|
7
8
|
from concurrent.futures import ThreadPoolExecutor
|
8
|
-
from typing import Union
|
9
|
+
from typing import List, Optional, Union
|
9
10
|
|
10
11
|
from jinja2 import Template
|
11
12
|
|
12
|
-
from validmind.utils import md_to_html
|
13
|
-
|
14
13
|
from ..client_config import client_config
|
15
14
|
from ..logging import get_logger
|
15
|
+
from ..utils import NumpyEncoder, md_to_html, test_id_to_name
|
16
|
+
from ..vm_models.figure import Figure
|
17
|
+
from ..vm_models.result import ResultTable
|
18
|
+
from .utils import DescriptionFuture, get_client_and_model
|
16
19
|
|
17
20
|
__executor = ThreadPoolExecutor()
|
18
21
|
__prompt = None
|
@@ -20,10 +23,6 @@ __prompt = None
|
|
20
23
|
logger = get_logger(__name__)
|
21
24
|
|
22
25
|
|
23
|
-
AI_REVISION_NAME = "Generated by ValidMind AI"
|
24
|
-
DEFAULT_REVISION_NAME = "Default Description"
|
25
|
-
|
26
|
-
|
27
26
|
def _load_prompt():
|
28
27
|
global __prompt
|
29
28
|
|
@@ -55,7 +54,6 @@ def prompt_to_message(role, prompt):
|
|
55
54
|
if start > last_index:
|
56
55
|
content.append({"type": "text", "text": prompt[last_index:start]})
|
57
56
|
|
58
|
-
# Image
|
59
57
|
content.append({"type": "image_url", "image_url": {"url": match.group(1)}})
|
60
58
|
|
61
59
|
last_index = end
|
@@ -67,79 +65,66 @@ def prompt_to_message(role, prompt):
|
|
67
65
|
return {"role": role, "content": content}
|
68
66
|
|
69
67
|
|
70
|
-
class DescriptionFuture:
|
71
|
-
"""This will be immediately returned from generate_description so that
|
72
|
-
the tests can continue to be run in parallel while the description is
|
73
|
-
retrieved asynchronously.
|
74
|
-
|
75
|
-
The value will be retrieved later and if its not ready yet, it should
|
76
|
-
block until it is.
|
77
|
-
"""
|
78
|
-
|
79
|
-
def __init__(self, future):
|
80
|
-
self._future = future
|
81
|
-
|
82
|
-
def get_description(self):
|
83
|
-
if isinstance(self._future, str):
|
84
|
-
description = self._future
|
85
|
-
else:
|
86
|
-
# This will block until the future is completed
|
87
|
-
description = self._future.result()
|
88
|
-
|
89
|
-
return md_to_html(description, mathml=True)
|
90
|
-
|
91
|
-
|
92
68
|
def generate_description(
|
93
69
|
test_id: str,
|
94
70
|
test_description: str,
|
95
|
-
|
71
|
+
tables: List[ResultTable] = None,
|
96
72
|
metric: Union[float, int] = None,
|
97
|
-
figures:
|
73
|
+
figures: List[Figure] = None,
|
74
|
+
title: Optional[str] = None,
|
98
75
|
):
|
99
76
|
"""Generate the description for the test results"""
|
100
|
-
if not
|
77
|
+
if not tables and not figures and not metric:
|
101
78
|
raise ValueError(
|
102
|
-
"No
|
79
|
+
"No tables, unit metric or figures provided - cannot generate description"
|
103
80
|
)
|
104
81
|
|
105
|
-
# TODO: fix circular import
|
106
|
-
from validmind.ai.utils import get_client_and_model
|
82
|
+
# # TODO: fix circular import
|
83
|
+
# from validmind.ai.utils import get_client_and_model
|
107
84
|
|
108
85
|
client, model = get_client_and_model()
|
109
86
|
|
110
87
|
# get last part of test id
|
111
|
-
test_name = test_id.split(".")[-1]
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
if
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
|
120
|
-
|
121
|
-
|
122
|
-
|
123
|
-
else:
|
124
|
-
test_summary = metric_summary
|
88
|
+
test_name = title or test_id.split(".")[-1]
|
89
|
+
|
90
|
+
# TODO: fully support metrics
|
91
|
+
if metric is not None:
|
92
|
+
tables = [] if not tables else tables
|
93
|
+
tables.append(
|
94
|
+
ResultTable(
|
95
|
+
data=[
|
96
|
+
{"Metric": test_id_to_name(test_id), "Value": metric},
|
97
|
+
],
|
98
|
+
)
|
99
|
+
)
|
125
100
|
|
126
|
-
|
101
|
+
if tables:
|
102
|
+
summary = "\n---\n".join(
|
103
|
+
[
|
104
|
+
json.dumps(table.serialize(), cls=NumpyEncoder, separators=(",", ":"))
|
105
|
+
for table in tables
|
106
|
+
]
|
107
|
+
)
|
108
|
+
else:
|
109
|
+
summary = None
|
127
110
|
|
128
111
|
input_data = {
|
129
112
|
"test_name": test_name,
|
130
113
|
"test_description": test_description,
|
131
|
-
"
|
132
|
-
"
|
114
|
+
"title": title,
|
115
|
+
"summary": summary,
|
116
|
+
"figures": [figure._get_b64_url() for figure in ([] if tables else figures)],
|
133
117
|
}
|
134
118
|
system, user = _load_prompt()
|
135
119
|
|
120
|
+
messages = [
|
121
|
+
prompt_to_message("system", system.render(input_data)),
|
122
|
+
prompt_to_message("user", user.render(input_data)),
|
123
|
+
]
|
136
124
|
response = client.chat.completions.create(
|
137
125
|
model=model,
|
138
126
|
temperature=0.0,
|
139
|
-
messages=
|
140
|
-
prompt_to_message("system", system.render(input_data)),
|
141
|
-
prompt_to_message("user", user.render(input_data)),
|
142
|
-
],
|
127
|
+
messages=messages,
|
143
128
|
)
|
144
129
|
|
145
130
|
return response.choices[0].message.content
|
@@ -148,18 +133,20 @@ def generate_description(
|
|
148
133
|
def background_generate_description(
|
149
134
|
test_id: str,
|
150
135
|
test_description: str,
|
151
|
-
|
152
|
-
figures:
|
136
|
+
tables: List[ResultTable] = None,
|
137
|
+
figures: List[Figure] = None,
|
153
138
|
metric: Union[int, float] = None,
|
139
|
+
title: Optional[str] = None,
|
154
140
|
):
|
155
141
|
def wrapped():
|
156
142
|
try:
|
157
143
|
return generate_description(
|
158
144
|
test_id=test_id,
|
159
145
|
test_description=test_description,
|
160
|
-
|
146
|
+
tables=tables,
|
161
147
|
figures=figures,
|
162
148
|
metric=metric,
|
149
|
+
title=title,
|
163
150
|
)
|
164
151
|
except Exception as e:
|
165
152
|
logger.error(f"Failed to generate description: {e}")
|
@@ -169,14 +156,14 @@ def background_generate_description(
|
|
169
156
|
return DescriptionFuture(__executor.submit(wrapped))
|
170
157
|
|
171
158
|
|
172
|
-
def
|
173
|
-
test_id,
|
174
|
-
|
175
|
-
|
176
|
-
figures=None,
|
177
|
-
metric=None,
|
178
|
-
|
179
|
-
|
159
|
+
def get_result_description(
|
160
|
+
test_id: str,
|
161
|
+
test_description: str,
|
162
|
+
tables: List[ResultTable] = None,
|
163
|
+
figures: List[Figure] = None,
|
164
|
+
metric: Union[int, float] = None,
|
165
|
+
should_generate: bool = True,
|
166
|
+
title: Optional[str] = None,
|
180
167
|
):
|
181
168
|
"""Get Metadata Dictionary for a Test or Metric Result
|
182
169
|
|
@@ -184,24 +171,23 @@ def get_description_metadata(
|
|
184
171
|
description and returns a metadata object that can be logged with the test results.
|
185
172
|
|
186
173
|
By default, the description is generated by an LLM that will interpret the test
|
187
|
-
results and provide a human-readable description. If the
|
174
|
+
results and provide a human-readable description. If the tables or figures are
|
188
175
|
not provided, or the `VALIDMIND_LLM_DESCRIPTIONS_ENABLED` environment variable is
|
189
176
|
set to `0` or `false` or no LLM has been configured, the default description will
|
190
177
|
be used as the test result description.
|
191
178
|
|
192
|
-
Note: Either the
|
179
|
+
Note: Either the tables or figures must be provided to generate the description.
|
193
180
|
|
194
181
|
Args:
|
195
182
|
test_id (str): The test ID
|
196
|
-
|
197
|
-
|
183
|
+
test_description (str): The default description for the test
|
184
|
+
tables (Any): The test tables or results to interpret
|
198
185
|
figures (List[Figure]): The figures to attach to the test suite result
|
199
186
|
metric (Union[int, float]): Unit metrics attached to the test result
|
200
|
-
prefix (str): The prefix to use for the content ID (Default: "metric_description")
|
201
187
|
should_generate (bool): Whether to generate the description or not (Default: True)
|
202
188
|
|
203
189
|
Returns:
|
204
|
-
|
190
|
+
str: The description to be logged with the test results
|
205
191
|
"""
|
206
192
|
# Check the feature flag first, then the environment variable
|
207
193
|
llm_descriptions_enabled = (
|
@@ -214,27 +200,22 @@ def get_description_metadata(
|
|
214
200
|
|
215
201
|
if (
|
216
202
|
should_generate
|
217
|
-
and (
|
203
|
+
and (tables or figures)
|
218
204
|
and llm_descriptions_enabled
|
219
205
|
and is_configured()
|
220
206
|
):
|
221
|
-
revision_name = AI_REVISION_NAME
|
222
|
-
|
223
207
|
# get description future and set it as the description in the metadata
|
224
208
|
# this will lazily retrieved so it can run in the background in parallel
|
225
209
|
description = background_generate_description(
|
226
210
|
test_id=test_id,
|
227
|
-
test_description=
|
228
|
-
|
211
|
+
test_description=test_description,
|
212
|
+
tables=tables,
|
229
213
|
figures=figures,
|
230
214
|
metric=metric,
|
215
|
+
title=title,
|
231
216
|
)
|
232
217
|
|
233
218
|
else:
|
234
|
-
|
235
|
-
description = md_to_html(default_description, mathml=True)
|
219
|
+
description = md_to_html(test_description, mathml=True)
|
236
220
|
|
237
|
-
return
|
238
|
-
"content_id": f"{prefix}:{test_id}::{revision_name}",
|
239
|
-
"text": description,
|
240
|
-
}
|
221
|
+
return description
|
@@ -37,11 +37,11 @@ class Context:
|
|
37
37
|
pass
|
38
38
|
|
39
39
|
def load(self, input_data):
|
40
|
-
# this task can accept a dict or a test result object from the
|
40
|
+
# this task can accept a dict or a test result object from the ValidMind Library
|
41
41
|
if isinstance(input_data, dict):
|
42
42
|
return input_data
|
43
43
|
|
44
|
-
# we are likely running outside of the
|
44
|
+
# we are likely running outside of the ValidMind Library and need to convert
|
45
45
|
# the test result object to a dictionary
|
46
46
|
test_result = input_data
|
47
47
|
|
@@ -7,8 +7,8 @@ from urllib.parse import urljoin
|
|
7
7
|
|
8
8
|
from openai import AzureOpenAI, Client, OpenAI
|
9
9
|
|
10
|
-
from ..api_client import get_ai_key, get_api_host
|
11
10
|
from ..logging import get_logger
|
11
|
+
from ..utils import md_to_html
|
12
12
|
|
13
13
|
logger = get_logger(__name__)
|
14
14
|
|
@@ -19,6 +19,28 @@ __model = None
|
|
19
19
|
__ack = None
|
20
20
|
|
21
21
|
|
22
|
+
class DescriptionFuture:
|
23
|
+
"""This will be immediately returned from generate_description so that
|
24
|
+
the tests can continue to be run in parallel while the description is
|
25
|
+
retrieved asynchronously.
|
26
|
+
|
27
|
+
The value will be retrieved later and if its not ready yet, it should
|
28
|
+
block until it is.
|
29
|
+
"""
|
30
|
+
|
31
|
+
def __init__(self, future):
|
32
|
+
self._future = future
|
33
|
+
|
34
|
+
def get_description(self):
|
35
|
+
if isinstance(self._future, str):
|
36
|
+
description = self._future
|
37
|
+
else:
|
38
|
+
# This will block until the future is completed
|
39
|
+
description = self._future.result()
|
40
|
+
|
41
|
+
return md_to_html(description, mathml=True)
|
42
|
+
|
43
|
+
|
22
44
|
def get_client_and_model():
|
23
45
|
"""Get model and client to use for generating interpretations
|
24
46
|
|
@@ -58,6 +80,9 @@ def get_client_and_model():
|
|
58
80
|
|
59
81
|
else:
|
60
82
|
try:
|
83
|
+
# TODO: fix circular import
|
84
|
+
from ..api_client import get_ai_key, get_api_host
|
85
|
+
|
61
86
|
response = get_ai_key()
|
62
87
|
__client = Client(
|
63
88
|
base_url=(
|