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