validmind 2.10.1__tar.gz → 2.11.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.10.1 → validmind-2.11.0}/PKG-INFO +4 -3
- {validmind-2.10.1 → validmind-2.11.0}/pyproject.toml +4 -3
- {validmind-2.10.1 → validmind-2.11.0}/validmind/__init__.py +1 -1
- validmind-2.11.0/validmind/__version__.py +1 -0
- {validmind-2.10.1 → validmind-2.11.0}/validmind/ai/test_descriptions.py +70 -19
- {validmind-2.10.1 → validmind-2.11.0}/validmind/api_client.py +9 -17
- {validmind-2.10.1 → validmind-2.11.0}/validmind/datasets/llm/agent_dataset.py +98 -125
- {validmind-2.10.1 → validmind-2.11.0}/validmind/logging.py +1 -60
- {validmind-2.10.1 → validmind-2.11.0}/validmind/scorer/classification/AbsoluteError.py +1 -2
- {validmind-2.10.1 → validmind-2.11.0}/validmind/scorer/classification/BrierScore.py +1 -2
- {validmind-2.10.1 → validmind-2.11.0}/validmind/scorer/classification/CalibrationError.py +1 -2
- {validmind-2.10.1 → validmind-2.11.0}/validmind/scorer/classification/ClassBalance.py +1 -2
- {validmind-2.10.1 → validmind-2.11.0}/validmind/scorer/classification/Confidence.py +1 -2
- {validmind-2.10.1 → validmind-2.11.0}/validmind/scorer/classification/Correctness.py +1 -2
- {validmind-2.10.1 → validmind-2.11.0}/validmind/scorer/classification/LogLoss.py +1 -4
- {validmind-2.10.1 → validmind-2.11.0}/validmind/scorer/classification/OutlierScore.py +1 -2
- {validmind-2.10.1 → validmind-2.11.0}/validmind/scorer/classification/ProbabilityError.py +1 -2
- {validmind-2.10.1 → validmind-2.11.0}/validmind/scorer/classification/Uncertainty.py +1 -2
- {validmind-2.10.1 → validmind-2.11.0}/validmind/scorer/llm/deepeval/AnswerRelevancy.py +2 -2
- validmind-2.11.0/validmind/scorer/llm/deepeval/Bias.py +103 -0
- validmind-2.11.0/validmind/scorer/llm/deepeval/ContextualPrecision.py +110 -0
- validmind-2.11.0/validmind/scorer/llm/deepeval/ContextualRecall.py +110 -0
- validmind-2.11.0/validmind/scorer/llm/deepeval/ContextualRelevancy.py +110 -0
- validmind-2.11.0/validmind/scorer/llm/deepeval/Faithfulness.py +110 -0
- validmind-2.11.0/validmind/scorer/llm/deepeval/GEval.py +145 -0
- validmind-2.11.0/validmind/scorer/llm/deepeval/Hallucination.py +110 -0
- validmind-2.11.0/validmind/scorer/llm/deepeval/Summarization.py +111 -0
- validmind-2.11.0/validmind/scorer/llm/deepeval/TaskCompletion.py +208 -0
- {validmind-2.10.1 → validmind-2.11.0}/validmind/template.py +106 -60
- {validmind-2.10.1 → validmind-2.11.0}/validmind/tests/data_validation/TooManyZeroValues.py +2 -2
- {validmind-2.10.1 → validmind-2.11.0}/validmind/tests/load.py +7 -7
- {validmind-2.10.1 → validmind-2.11.0}/validmind/tests/model_validation/sklearn/OverfitDiagnosis.py +1 -1
- {validmind-2.10.1 → validmind-2.11.0}/validmind/tests/model_validation/sklearn/PopulationStabilityIndex.py +2 -2
- {validmind-2.10.1 → validmind-2.11.0}/validmind/tests/model_validation/sklearn/RobustnessDiagnosis.py +2 -0
- {validmind-2.10.1 → validmind-2.11.0}/validmind/tests/model_validation/sklearn/TrainingTestDegradation.py +5 -5
- {validmind-2.10.1 → validmind-2.11.0}/validmind/tests/model_validation/sklearn/WeakspotsDiagnosis.py +1 -1
- {validmind-2.10.1 → validmind-2.11.0}/validmind/tests/model_validation/statsmodels/CumulativePredictionProbabilities.py +10 -15
- {validmind-2.10.1 → validmind-2.11.0}/validmind/tests/plots/BoxPlot.py +23 -10
- {validmind-2.10.1 → validmind-2.11.0}/validmind/tests/run.py +1 -0
- {validmind-2.10.1 → validmind-2.11.0}/validmind/utils.py +13 -5
- {validmind-2.10.1 → validmind-2.11.0}/validmind/vm_models/figure.py +19 -27
- validmind-2.11.0/validmind/vm_models/html_progress.py +170 -0
- validmind-2.11.0/validmind/vm_models/html_renderer.py +450 -0
- {validmind-2.10.1 → validmind-2.11.0}/validmind/vm_models/result/result.py +57 -67
- validmind-2.11.0/validmind/vm_models/result/utils.py +86 -0
- {validmind-2.10.1 → validmind-2.11.0}/validmind/vm_models/test_suite/runner.py +78 -33
- validmind-2.11.0/validmind/vm_models/test_suite/summary.py +136 -0
- validmind-2.10.1/validmind/__version__.py +0 -1
- validmind-2.10.1/validmind/vm_models/result/utils.py +0 -114
- validmind-2.10.1/validmind/vm_models/test_suite/summary.py +0 -187
- {validmind-2.10.1 → validmind-2.11.0}/LICENSE +0 -0
- {validmind-2.10.1 → validmind-2.11.0}/README.pypi.md +0 -0
- {validmind-2.10.1 → validmind-2.11.0}/validmind/ai/utils.py +0 -0
- {validmind-2.10.1 → validmind-2.11.0}/validmind/client.py +0 -0
- {validmind-2.10.1 → validmind-2.11.0}/validmind/client_config.py +0 -0
- {validmind-2.10.1 → validmind-2.11.0}/validmind/datasets/__init__.py +0 -0
- {validmind-2.10.1 → validmind-2.11.0}/validmind/datasets/classification/__init__.py +0 -0
- {validmind-2.10.1 → validmind-2.11.0}/validmind/datasets/classification/customer_churn.py +0 -0
- {validmind-2.10.1 → validmind-2.11.0}/validmind/datasets/classification/datasets/bank_customer_churn.csv +0 -0
- {validmind-2.10.1 → validmind-2.11.0}/validmind/datasets/classification/datasets/taiwan_credit.csv +0 -0
- {validmind-2.10.1 → validmind-2.11.0}/validmind/datasets/classification/taiwan_credit.py +0 -0
- {validmind-2.10.1 → validmind-2.11.0}/validmind/datasets/cluster/digits.py +0 -0
- {validmind-2.10.1 → validmind-2.11.0}/validmind/datasets/credit_risk/__init__.py +0 -0
- {validmind-2.10.1 → validmind-2.11.0}/validmind/datasets/credit_risk/datasets/lending_club_biased.csv.gz +0 -0
- {validmind-2.10.1 → validmind-2.11.0}/validmind/datasets/credit_risk/datasets/lending_club_loan_data_2007_2014_clean.csv.gz +0 -0
- {validmind-2.10.1 → validmind-2.11.0}/validmind/datasets/credit_risk/lending_club.py +0 -0
- {validmind-2.10.1 → validmind-2.11.0}/validmind/datasets/credit_risk/lending_club_bias.py +0 -0
- {validmind-2.10.1 → validmind-2.11.0}/validmind/datasets/llm/__init__.py +0 -0
- {validmind-2.10.1 → validmind-2.11.0}/validmind/datasets/llm/rag/__init__.py +0 -0
- {validmind-2.10.1 → validmind-2.11.0}/validmind/datasets/llm/rag/datasets/rfp_existing_questions_client_1.csv +0 -0
- {validmind-2.10.1 → validmind-2.11.0}/validmind/datasets/llm/rag/datasets/rfp_existing_questions_client_2.csv +0 -0
- {validmind-2.10.1 → validmind-2.11.0}/validmind/datasets/llm/rag/datasets/rfp_existing_questions_client_3.csv +0 -0
- {validmind-2.10.1 → validmind-2.11.0}/validmind/datasets/llm/rag/datasets/rfp_existing_questions_client_4.csv +0 -0
- {validmind-2.10.1 → validmind-2.11.0}/validmind/datasets/llm/rag/datasets/rfp_existing_questions_client_5.csv +0 -0
- {validmind-2.10.1 → validmind-2.11.0}/validmind/datasets/llm/rag/rfp.py +0 -0
- {validmind-2.10.1 → validmind-2.11.0}/validmind/datasets/nlp/__init__.py +0 -0
- {validmind-2.10.1 → validmind-2.11.0}/validmind/datasets/nlp/cnn_dailymail.py +0 -0
- {validmind-2.10.1 → validmind-2.11.0}/validmind/datasets/nlp/datasets/Covid_19.csv +0 -0
- {validmind-2.10.1 → validmind-2.11.0}/validmind/datasets/nlp/datasets/cnn_dailymail_100_with_predictions.csv +0 -0
- {validmind-2.10.1 → validmind-2.11.0}/validmind/datasets/nlp/datasets/cnn_dailymail_500_with_predictions.csv +0 -0
- {validmind-2.10.1 → validmind-2.11.0}/validmind/datasets/nlp/datasets/sentiments_with_predictions.csv +0 -0
- {validmind-2.10.1 → validmind-2.11.0}/validmind/datasets/nlp/twitter_covid_19.py +0 -0
- {validmind-2.10.1 → validmind-2.11.0}/validmind/datasets/regression/__init__.py +0 -0
- {validmind-2.10.1 → validmind-2.11.0}/validmind/datasets/regression/california_housing.py +0 -0
- {validmind-2.10.1 → validmind-2.11.0}/validmind/datasets/regression/datasets/fred/CPIAUCSL.csv +0 -0
- {validmind-2.10.1 → validmind-2.11.0}/validmind/datasets/regression/datasets/fred/CSUSHPISA.csv +0 -0
- {validmind-2.10.1 → validmind-2.11.0}/validmind/datasets/regression/datasets/fred/DRSFRMACBS.csv +0 -0
- {validmind-2.10.1 → validmind-2.11.0}/validmind/datasets/regression/datasets/fred/FEDFUNDS.csv +0 -0
- {validmind-2.10.1 → validmind-2.11.0}/validmind/datasets/regression/datasets/fred/GDP.csv +0 -0
- {validmind-2.10.1 → validmind-2.11.0}/validmind/datasets/regression/datasets/fred/GDPC1.csv +0 -0
- {validmind-2.10.1 → validmind-2.11.0}/validmind/datasets/regression/datasets/fred/GS10.csv +0 -0
- {validmind-2.10.1 → validmind-2.11.0}/validmind/datasets/regression/datasets/fred/GS3.csv +0 -0
- {validmind-2.10.1 → validmind-2.11.0}/validmind/datasets/regression/datasets/fred/GS5.csv +0 -0
- {validmind-2.10.1 → validmind-2.11.0}/validmind/datasets/regression/datasets/fred/MORTGAGE30US.csv +0 -0
- {validmind-2.10.1 → validmind-2.11.0}/validmind/datasets/regression/datasets/fred/UNRATE.csv +0 -0
- {validmind-2.10.1 → validmind-2.11.0}/validmind/datasets/regression/datasets/fred_loan_rates.csv +0 -0
- {validmind-2.10.1 → validmind-2.11.0}/validmind/datasets/regression/datasets/fred_loan_rates_test_1.csv +0 -0
- {validmind-2.10.1 → validmind-2.11.0}/validmind/datasets/regression/datasets/fred_loan_rates_test_2.csv +0 -0
- {validmind-2.10.1 → validmind-2.11.0}/validmind/datasets/regression/datasets/fred_loan_rates_test_3.csv +0 -0
- {validmind-2.10.1 → validmind-2.11.0}/validmind/datasets/regression/datasets/fred_loan_rates_test_4.csv +0 -0
- {validmind-2.10.1 → validmind-2.11.0}/validmind/datasets/regression/datasets/fred_loan_rates_test_5.csv +0 -0
- {validmind-2.10.1 → validmind-2.11.0}/validmind/datasets/regression/datasets/leanding_club_loan_rates.csv +0 -0
- {validmind-2.10.1 → validmind-2.11.0}/validmind/datasets/regression/fred.py +0 -0
- {validmind-2.10.1 → validmind-2.11.0}/validmind/datasets/regression/fred_timeseries.py +0 -0
- {validmind-2.10.1 → validmind-2.11.0}/validmind/datasets/regression/lending_club.py +0 -0
- {validmind-2.10.1 → validmind-2.11.0}/validmind/datasets/regression/models/fred_loan_rates_model_1.pkl +0 -0
- {validmind-2.10.1 → validmind-2.11.0}/validmind/datasets/regression/models/fred_loan_rates_model_2.pkl +0 -0
- {validmind-2.10.1 → validmind-2.11.0}/validmind/datasets/regression/models/fred_loan_rates_model_3.pkl +0 -0
- {validmind-2.10.1 → validmind-2.11.0}/validmind/datasets/regression/models/fred_loan_rates_model_4.pkl +0 -0
- {validmind-2.10.1 → validmind-2.11.0}/validmind/datasets/regression/models/fred_loan_rates_model_5.pkl +0 -0
- {validmind-2.10.1 → validmind-2.11.0}/validmind/errors.py +0 -0
- {validmind-2.10.1 → validmind-2.11.0}/validmind/experimental/__init__.py +0 -0
- {validmind-2.10.1 → validmind-2.11.0}/validmind/experimental/agents.py +0 -0
- {validmind-2.10.1 → validmind-2.11.0}/validmind/html_templates/__init__.py +0 -0
- {validmind-2.10.1 → validmind-2.11.0}/validmind/html_templates/content_blocks.py +0 -0
- {validmind-2.10.1 → validmind-2.11.0}/validmind/input_registry.py +0 -0
- {validmind-2.10.1 → validmind-2.11.0}/validmind/models/__init__.py +0 -0
- {validmind-2.10.1 → validmind-2.11.0}/validmind/models/foundation.py +0 -0
- {validmind-2.10.1 → validmind-2.11.0}/validmind/models/function.py +0 -0
- {validmind-2.10.1 → validmind-2.11.0}/validmind/models/huggingface.py +0 -0
- {validmind-2.10.1 → validmind-2.11.0}/validmind/models/metadata.py +0 -0
- {validmind-2.10.1 → validmind-2.11.0}/validmind/models/pipeline.py +0 -0
- {validmind-2.10.1 → validmind-2.11.0}/validmind/models/pytorch.py +0 -0
- {validmind-2.10.1 → validmind-2.11.0}/validmind/models/r_model.py +0 -0
- {validmind-2.10.1 → validmind-2.11.0}/validmind/models/sklearn.py +0 -0
- {validmind-2.10.1 → validmind-2.11.0}/validmind/scorer/__init__.py +0 -0
- {validmind-2.10.1 → validmind-2.11.0}/validmind/scorer/classification/__init__.py +0 -0
- {validmind-2.10.1 → validmind-2.11.0}/validmind/scorer/llm/deepeval/__init__.py +0 -0
- {validmind-2.10.1 → validmind-2.11.0}/validmind/test_suites/__init__.py +0 -0
- {validmind-2.10.1 → validmind-2.11.0}/validmind/test_suites/classifier.py +0 -0
- {validmind-2.10.1 → validmind-2.11.0}/validmind/test_suites/cluster.py +0 -0
- {validmind-2.10.1 → validmind-2.11.0}/validmind/test_suites/embeddings.py +0 -0
- {validmind-2.10.1 → validmind-2.11.0}/validmind/test_suites/llm.py +0 -0
- {validmind-2.10.1 → validmind-2.11.0}/validmind/test_suites/nlp.py +0 -0
- {validmind-2.10.1 → validmind-2.11.0}/validmind/test_suites/parameters_optimization.py +0 -0
- {validmind-2.10.1 → validmind-2.11.0}/validmind/test_suites/regression.py +0 -0
- {validmind-2.10.1 → validmind-2.11.0}/validmind/test_suites/statsmodels_timeseries.py +0 -0
- {validmind-2.10.1 → validmind-2.11.0}/validmind/test_suites/summarization.py +0 -0
- {validmind-2.10.1 → validmind-2.11.0}/validmind/test_suites/tabular_datasets.py +0 -0
- {validmind-2.10.1 → validmind-2.11.0}/validmind/test_suites/text_data.py +0 -0
- {validmind-2.10.1 → validmind-2.11.0}/validmind/test_suites/time_series.py +0 -0
- {validmind-2.10.1 → validmind-2.11.0}/validmind/tests/__init__.py +0 -0
- {validmind-2.10.1 → validmind-2.11.0}/validmind/tests/__types__.py +0 -0
- {validmind-2.10.1 → validmind-2.11.0}/validmind/tests/_store.py +0 -0
- {validmind-2.10.1 → validmind-2.11.0}/validmind/tests/comparison.py +0 -0
- {validmind-2.10.1 → validmind-2.11.0}/validmind/tests/data_validation/ACFandPACFPlot.py +0 -0
- {validmind-2.10.1 → validmind-2.11.0}/validmind/tests/data_validation/ADF.py +0 -0
- {validmind-2.10.1 → validmind-2.11.0}/validmind/tests/data_validation/AutoAR.py +0 -0
- {validmind-2.10.1 → validmind-2.11.0}/validmind/tests/data_validation/AutoMA.py +0 -0
- {validmind-2.10.1 → validmind-2.11.0}/validmind/tests/data_validation/AutoStationarity.py +0 -0
- {validmind-2.10.1 → validmind-2.11.0}/validmind/tests/data_validation/BivariateScatterPlots.py +0 -0
- {validmind-2.10.1 → validmind-2.11.0}/validmind/tests/data_validation/BoxPierce.py +0 -0
- {validmind-2.10.1 → validmind-2.11.0}/validmind/tests/data_validation/ChiSquaredFeaturesTable.py +0 -0
- {validmind-2.10.1 → validmind-2.11.0}/validmind/tests/data_validation/ClassImbalance.py +0 -0
- {validmind-2.10.1 → validmind-2.11.0}/validmind/tests/data_validation/DatasetDescription.py +0 -0
- {validmind-2.10.1 → validmind-2.11.0}/validmind/tests/data_validation/DatasetSplit.py +0 -0
- {validmind-2.10.1 → validmind-2.11.0}/validmind/tests/data_validation/DescriptiveStatistics.py +0 -0
- {validmind-2.10.1 → validmind-2.11.0}/validmind/tests/data_validation/DickeyFullerGLS.py +0 -0
- {validmind-2.10.1 → validmind-2.11.0}/validmind/tests/data_validation/Duplicates.py +0 -0
- {validmind-2.10.1 → validmind-2.11.0}/validmind/tests/data_validation/EngleGrangerCoint.py +0 -0
- {validmind-2.10.1 → validmind-2.11.0}/validmind/tests/data_validation/FeatureTargetCorrelationPlot.py +0 -0
- {validmind-2.10.1 → validmind-2.11.0}/validmind/tests/data_validation/HighCardinality.py +0 -0
- {validmind-2.10.1 → validmind-2.11.0}/validmind/tests/data_validation/HighPearsonCorrelation.py +0 -0
- {validmind-2.10.1 → validmind-2.11.0}/validmind/tests/data_validation/IQROutliersBarPlot.py +0 -0
- {validmind-2.10.1 → validmind-2.11.0}/validmind/tests/data_validation/IQROutliersTable.py +0 -0
- {validmind-2.10.1 → validmind-2.11.0}/validmind/tests/data_validation/IsolationForestOutliers.py +0 -0
- {validmind-2.10.1 → validmind-2.11.0}/validmind/tests/data_validation/JarqueBera.py +0 -0
- {validmind-2.10.1 → validmind-2.11.0}/validmind/tests/data_validation/KPSS.py +0 -0
- {validmind-2.10.1 → validmind-2.11.0}/validmind/tests/data_validation/LJungBox.py +0 -0
- {validmind-2.10.1 → validmind-2.11.0}/validmind/tests/data_validation/LaggedCorrelationHeatmap.py +0 -0
- {validmind-2.10.1 → validmind-2.11.0}/validmind/tests/data_validation/MissingValues.py +0 -0
- {validmind-2.10.1 → validmind-2.11.0}/validmind/tests/data_validation/MissingValuesBarPlot.py +0 -0
- {validmind-2.10.1 → validmind-2.11.0}/validmind/tests/data_validation/MutualInformation.py +0 -0
- {validmind-2.10.1 → validmind-2.11.0}/validmind/tests/data_validation/PearsonCorrelationMatrix.py +0 -0
- {validmind-2.10.1 → validmind-2.11.0}/validmind/tests/data_validation/PhillipsPerronArch.py +0 -0
- {validmind-2.10.1 → validmind-2.11.0}/validmind/tests/data_validation/ProtectedClassesCombination.py +0 -0
- {validmind-2.10.1 → validmind-2.11.0}/validmind/tests/data_validation/ProtectedClassesDescription.py +0 -0
- {validmind-2.10.1 → validmind-2.11.0}/validmind/tests/data_validation/ProtectedClassesDisparity.py +0 -0
- {validmind-2.10.1 → validmind-2.11.0}/validmind/tests/data_validation/ProtectedClassesThresholdOptimizer.py +0 -0
- {validmind-2.10.1 → validmind-2.11.0}/validmind/tests/data_validation/RollingStatsPlot.py +0 -0
- {validmind-2.10.1 → validmind-2.11.0}/validmind/tests/data_validation/RunsTest.py +0 -0
- {validmind-2.10.1 → validmind-2.11.0}/validmind/tests/data_validation/ScatterPlot.py +0 -0
- {validmind-2.10.1 → validmind-2.11.0}/validmind/tests/data_validation/ScoreBandDefaultRates.py +0 -0
- {validmind-2.10.1 → validmind-2.11.0}/validmind/tests/data_validation/SeasonalDecompose.py +0 -0
- {validmind-2.10.1 → validmind-2.11.0}/validmind/tests/data_validation/ShapiroWilk.py +0 -0
- {validmind-2.10.1 → validmind-2.11.0}/validmind/tests/data_validation/Skewness.py +0 -0
- {validmind-2.10.1 → validmind-2.11.0}/validmind/tests/data_validation/SpreadPlot.py +0 -0
- {validmind-2.10.1 → validmind-2.11.0}/validmind/tests/data_validation/TabularCategoricalBarPlots.py +0 -0
- {validmind-2.10.1 → validmind-2.11.0}/validmind/tests/data_validation/TabularDateTimeHistograms.py +0 -0
- {validmind-2.10.1 → validmind-2.11.0}/validmind/tests/data_validation/TabularDescriptionTables.py +0 -0
- {validmind-2.10.1 → validmind-2.11.0}/validmind/tests/data_validation/TabularNumericalHistograms.py +0 -0
- {validmind-2.10.1 → validmind-2.11.0}/validmind/tests/data_validation/TargetRateBarPlots.py +0 -0
- {validmind-2.10.1 → validmind-2.11.0}/validmind/tests/data_validation/TimeSeriesDescription.py +0 -0
- {validmind-2.10.1 → validmind-2.11.0}/validmind/tests/data_validation/TimeSeriesDescriptiveStatistics.py +0 -0
- {validmind-2.10.1 → validmind-2.11.0}/validmind/tests/data_validation/TimeSeriesFrequency.py +0 -0
- {validmind-2.10.1 → validmind-2.11.0}/validmind/tests/data_validation/TimeSeriesHistogram.py +0 -0
- {validmind-2.10.1 → validmind-2.11.0}/validmind/tests/data_validation/TimeSeriesLinePlot.py +0 -0
- {validmind-2.10.1 → validmind-2.11.0}/validmind/tests/data_validation/TimeSeriesMissingValues.py +0 -0
- {validmind-2.10.1 → validmind-2.11.0}/validmind/tests/data_validation/TimeSeriesOutliers.py +0 -0
- {validmind-2.10.1 → validmind-2.11.0}/validmind/tests/data_validation/UniqueRows.py +0 -0
- {validmind-2.10.1 → validmind-2.11.0}/validmind/tests/data_validation/WOEBinPlots.py +0 -0
- {validmind-2.10.1 → validmind-2.11.0}/validmind/tests/data_validation/WOEBinTable.py +0 -0
- {validmind-2.10.1 → validmind-2.11.0}/validmind/tests/data_validation/ZivotAndrewsArch.py +0 -0
- {validmind-2.10.1 → validmind-2.11.0}/validmind/tests/data_validation/__init__.py +0 -0
- {validmind-2.10.1 → validmind-2.11.0}/validmind/tests/data_validation/nlp/CommonWords.py +0 -0
- {validmind-2.10.1 → validmind-2.11.0}/validmind/tests/data_validation/nlp/Hashtags.py +0 -0
- {validmind-2.10.1 → validmind-2.11.0}/validmind/tests/data_validation/nlp/LanguageDetection.py +0 -0
- {validmind-2.10.1 → validmind-2.11.0}/validmind/tests/data_validation/nlp/Mentions.py +0 -0
- {validmind-2.10.1 → validmind-2.11.0}/validmind/tests/data_validation/nlp/PolarityAndSubjectivity.py +0 -0
- {validmind-2.10.1 → validmind-2.11.0}/validmind/tests/data_validation/nlp/Punctuations.py +0 -0
- {validmind-2.10.1 → validmind-2.11.0}/validmind/tests/data_validation/nlp/Sentiment.py +0 -0
- {validmind-2.10.1 → validmind-2.11.0}/validmind/tests/data_validation/nlp/StopWords.py +0 -0
- {validmind-2.10.1 → validmind-2.11.0}/validmind/tests/data_validation/nlp/TextDescription.py +0 -0
- {validmind-2.10.1 → validmind-2.11.0}/validmind/tests/data_validation/nlp/Toxicity.py +0 -0
- {validmind-2.10.1 → validmind-2.11.0}/validmind/tests/data_validation/nlp/__init__.py +0 -0
- {validmind-2.10.1 → validmind-2.11.0}/validmind/tests/decorator.py +0 -0
- {validmind-2.10.1 → validmind-2.11.0}/validmind/tests/model_validation/BertScore.py +0 -0
- {validmind-2.10.1 → validmind-2.11.0}/validmind/tests/model_validation/BleuScore.py +0 -0
- {validmind-2.10.1 → validmind-2.11.0}/validmind/tests/model_validation/ClusterSizeDistribution.py +0 -0
- {validmind-2.10.1 → validmind-2.11.0}/validmind/tests/model_validation/ContextualRecall.py +0 -0
- {validmind-2.10.1 → validmind-2.11.0}/validmind/tests/model_validation/FeaturesAUC.py +0 -0
- {validmind-2.10.1 → validmind-2.11.0}/validmind/tests/model_validation/MeteorScore.py +0 -0
- {validmind-2.10.1 → validmind-2.11.0}/validmind/tests/model_validation/ModelMetadata.py +0 -0
- {validmind-2.10.1 → validmind-2.11.0}/validmind/tests/model_validation/ModelPredictionResiduals.py +0 -0
- {validmind-2.10.1 → validmind-2.11.0}/validmind/tests/model_validation/RegardScore.py +0 -0
- {validmind-2.10.1 → validmind-2.11.0}/validmind/tests/model_validation/RegressionResidualsPlot.py +0 -0
- {validmind-2.10.1 → validmind-2.11.0}/validmind/tests/model_validation/RougeScore.py +0 -0
- {validmind-2.10.1 → validmind-2.11.0}/validmind/tests/model_validation/TimeSeriesPredictionWithCI.py +0 -0
- {validmind-2.10.1 → validmind-2.11.0}/validmind/tests/model_validation/TimeSeriesPredictionsPlot.py +0 -0
- {validmind-2.10.1 → validmind-2.11.0}/validmind/tests/model_validation/TimeSeriesR2SquareBySegments.py +0 -0
- {validmind-2.10.1 → validmind-2.11.0}/validmind/tests/model_validation/TokenDisparity.py +0 -0
- {validmind-2.10.1 → validmind-2.11.0}/validmind/tests/model_validation/ToxicityScore.py +0 -0
- {validmind-2.10.1 → validmind-2.11.0}/validmind/tests/model_validation/__init__.py +0 -0
- {validmind-2.10.1 → validmind-2.11.0}/validmind/tests/model_validation/embeddings/ClusterDistribution.py +0 -0
- {validmind-2.10.1 → validmind-2.11.0}/validmind/tests/model_validation/embeddings/CosineSimilarityComparison.py +0 -0
- {validmind-2.10.1 → validmind-2.11.0}/validmind/tests/model_validation/embeddings/CosineSimilarityDistribution.py +0 -0
- {validmind-2.10.1 → validmind-2.11.0}/validmind/tests/model_validation/embeddings/CosineSimilarityHeatmap.py +0 -0
- {validmind-2.10.1 → validmind-2.11.0}/validmind/tests/model_validation/embeddings/DescriptiveAnalytics.py +0 -0
- {validmind-2.10.1 → validmind-2.11.0}/validmind/tests/model_validation/embeddings/EmbeddingsVisualization2D.py +0 -0
- {validmind-2.10.1 → validmind-2.11.0}/validmind/tests/model_validation/embeddings/EuclideanDistanceComparison.py +0 -0
- {validmind-2.10.1 → validmind-2.11.0}/validmind/tests/model_validation/embeddings/EuclideanDistanceHeatmap.py +0 -0
- {validmind-2.10.1 → validmind-2.11.0}/validmind/tests/model_validation/embeddings/PCAComponentsPairwisePlots.py +0 -0
- {validmind-2.10.1 → validmind-2.11.0}/validmind/tests/model_validation/embeddings/StabilityAnalysisKeyword.py +0 -0
- {validmind-2.10.1 → validmind-2.11.0}/validmind/tests/model_validation/embeddings/StabilityAnalysisRandomNoise.py +0 -0
- {validmind-2.10.1 → validmind-2.11.0}/validmind/tests/model_validation/embeddings/StabilityAnalysisSynonyms.py +0 -0
- {validmind-2.10.1 → validmind-2.11.0}/validmind/tests/model_validation/embeddings/StabilityAnalysisTranslation.py +0 -0
- {validmind-2.10.1 → validmind-2.11.0}/validmind/tests/model_validation/embeddings/TSNEComponentsPairwisePlots.py +0 -0
- {validmind-2.10.1 → validmind-2.11.0}/validmind/tests/model_validation/embeddings/utils.py +0 -0
- {validmind-2.10.1 → validmind-2.11.0}/validmind/tests/model_validation/ragas/AnswerCorrectness.py +0 -0
- {validmind-2.10.1 → validmind-2.11.0}/validmind/tests/model_validation/ragas/AspectCritic.py +0 -0
- {validmind-2.10.1 → validmind-2.11.0}/validmind/tests/model_validation/ragas/ContextEntityRecall.py +0 -0
- {validmind-2.10.1 → validmind-2.11.0}/validmind/tests/model_validation/ragas/ContextPrecision.py +0 -0
- {validmind-2.10.1 → validmind-2.11.0}/validmind/tests/model_validation/ragas/ContextPrecisionWithoutReference.py +0 -0
- {validmind-2.10.1 → validmind-2.11.0}/validmind/tests/model_validation/ragas/ContextRecall.py +0 -0
- {validmind-2.10.1 → validmind-2.11.0}/validmind/tests/model_validation/ragas/Faithfulness.py +0 -0
- {validmind-2.10.1 → validmind-2.11.0}/validmind/tests/model_validation/ragas/NoiseSensitivity.py +0 -0
- {validmind-2.10.1 → validmind-2.11.0}/validmind/tests/model_validation/ragas/ResponseRelevancy.py +0 -0
- {validmind-2.10.1 → validmind-2.11.0}/validmind/tests/model_validation/ragas/SemanticSimilarity.py +0 -0
- {validmind-2.10.1 → validmind-2.11.0}/validmind/tests/model_validation/ragas/utils.py +0 -0
- {validmind-2.10.1 → validmind-2.11.0}/validmind/tests/model_validation/sklearn/AdjustedMutualInformation.py +0 -0
- {validmind-2.10.1 → validmind-2.11.0}/validmind/tests/model_validation/sklearn/AdjustedRandIndex.py +0 -0
- {validmind-2.10.1 → validmind-2.11.0}/validmind/tests/model_validation/sklearn/CalibrationCurve.py +0 -0
- {validmind-2.10.1 → validmind-2.11.0}/validmind/tests/model_validation/sklearn/ClassifierPerformance.py +0 -0
- {validmind-2.10.1 → validmind-2.11.0}/validmind/tests/model_validation/sklearn/ClassifierThresholdOptimization.py +0 -0
- {validmind-2.10.1 → validmind-2.11.0}/validmind/tests/model_validation/sklearn/ClusterCosineSimilarity.py +0 -0
- {validmind-2.10.1 → validmind-2.11.0}/validmind/tests/model_validation/sklearn/ClusterPerformanceMetrics.py +0 -0
- {validmind-2.10.1 → validmind-2.11.0}/validmind/tests/model_validation/sklearn/CompletenessScore.py +0 -0
- {validmind-2.10.1 → validmind-2.11.0}/validmind/tests/model_validation/sklearn/ConfusionMatrix.py +0 -0
- {validmind-2.10.1 → validmind-2.11.0}/validmind/tests/model_validation/sklearn/FeatureImportance.py +0 -0
- {validmind-2.10.1 → validmind-2.11.0}/validmind/tests/model_validation/sklearn/FowlkesMallowsScore.py +0 -0
- {validmind-2.10.1 → validmind-2.11.0}/validmind/tests/model_validation/sklearn/HomogeneityScore.py +0 -0
- {validmind-2.10.1 → validmind-2.11.0}/validmind/tests/model_validation/sklearn/HyperParametersTuning.py +0 -0
- {validmind-2.10.1 → validmind-2.11.0}/validmind/tests/model_validation/sklearn/KMeansClustersOptimization.py +0 -0
- {validmind-2.10.1 → validmind-2.11.0}/validmind/tests/model_validation/sklearn/MinimumAccuracy.py +0 -0
- {validmind-2.10.1 → validmind-2.11.0}/validmind/tests/model_validation/sklearn/MinimumF1Score.py +0 -0
- {validmind-2.10.1 → validmind-2.11.0}/validmind/tests/model_validation/sklearn/MinimumROCAUCScore.py +0 -0
- {validmind-2.10.1 → validmind-2.11.0}/validmind/tests/model_validation/sklearn/ModelParameters.py +0 -0
- {validmind-2.10.1 → validmind-2.11.0}/validmind/tests/model_validation/sklearn/ModelsPerformanceComparison.py +0 -0
- {validmind-2.10.1 → validmind-2.11.0}/validmind/tests/model_validation/sklearn/PermutationFeatureImportance.py +0 -0
- {validmind-2.10.1 → validmind-2.11.0}/validmind/tests/model_validation/sklearn/PrecisionRecallCurve.py +0 -0
- {validmind-2.10.1 → validmind-2.11.0}/validmind/tests/model_validation/sklearn/ROCCurve.py +0 -0
- {validmind-2.10.1 → validmind-2.11.0}/validmind/tests/model_validation/sklearn/RegressionErrors.py +0 -0
- {validmind-2.10.1 → validmind-2.11.0}/validmind/tests/model_validation/sklearn/RegressionErrorsComparison.py +0 -0
- {validmind-2.10.1 → validmind-2.11.0}/validmind/tests/model_validation/sklearn/RegressionPerformance.py +0 -0
- {validmind-2.10.1 → validmind-2.11.0}/validmind/tests/model_validation/sklearn/RegressionR2Square.py +0 -0
- {validmind-2.10.1 → validmind-2.11.0}/validmind/tests/model_validation/sklearn/RegressionR2SquareComparison.py +0 -0
- {validmind-2.10.1 → validmind-2.11.0}/validmind/tests/model_validation/sklearn/SHAPGlobalImportance.py +0 -0
- {validmind-2.10.1 → validmind-2.11.0}/validmind/tests/model_validation/sklearn/ScoreProbabilityAlignment.py +0 -0
- {validmind-2.10.1 → validmind-2.11.0}/validmind/tests/model_validation/sklearn/SilhouettePlot.py +0 -0
- {validmind-2.10.1 → validmind-2.11.0}/validmind/tests/model_validation/sklearn/VMeasure.py +0 -0
- {validmind-2.10.1 → validmind-2.11.0}/validmind/tests/model_validation/sklearn/__init__.py +0 -0
- {validmind-2.10.1 → validmind-2.11.0}/validmind/tests/model_validation/statsmodels/AutoARIMA.py +0 -0
- {validmind-2.10.1 → validmind-2.11.0}/validmind/tests/model_validation/statsmodels/DurbinWatsonTest.py +0 -0
- {validmind-2.10.1 → validmind-2.11.0}/validmind/tests/model_validation/statsmodels/GINITable.py +0 -0
- {validmind-2.10.1 → validmind-2.11.0}/validmind/tests/model_validation/statsmodels/KolmogorovSmirnov.py +0 -0
- {validmind-2.10.1 → validmind-2.11.0}/validmind/tests/model_validation/statsmodels/Lilliefors.py +0 -0
- {validmind-2.10.1 → validmind-2.11.0}/validmind/tests/model_validation/statsmodels/PredictionProbabilitiesHistogram.py +0 -0
- {validmind-2.10.1 → validmind-2.11.0}/validmind/tests/model_validation/statsmodels/RegressionCoeffs.py +0 -0
- {validmind-2.10.1 → validmind-2.11.0}/validmind/tests/model_validation/statsmodels/RegressionFeatureSignificance.py +0 -0
- {validmind-2.10.1 → validmind-2.11.0}/validmind/tests/model_validation/statsmodels/RegressionModelForecastPlot.py +0 -0
- {validmind-2.10.1 → validmind-2.11.0}/validmind/tests/model_validation/statsmodels/RegressionModelForecastPlotLevels.py +0 -0
- {validmind-2.10.1 → validmind-2.11.0}/validmind/tests/model_validation/statsmodels/RegressionModelSensitivityPlot.py +0 -0
- {validmind-2.10.1 → validmind-2.11.0}/validmind/tests/model_validation/statsmodels/RegressionModelSummary.py +0 -0
- {validmind-2.10.1 → validmind-2.11.0}/validmind/tests/model_validation/statsmodels/RegressionPermutationFeatureImportance.py +0 -0
- {validmind-2.10.1 → validmind-2.11.0}/validmind/tests/model_validation/statsmodels/ScorecardHistogram.py +0 -0
- {validmind-2.10.1 → validmind-2.11.0}/validmind/tests/model_validation/statsmodels/__init__.py +0 -0
- {validmind-2.10.1 → validmind-2.11.0}/validmind/tests/model_validation/statsmodels/statsutils.py +0 -0
- {validmind-2.10.1 → validmind-2.11.0}/validmind/tests/ongoing_monitoring/CalibrationCurveDrift.py +0 -0
- {validmind-2.10.1 → validmind-2.11.0}/validmind/tests/ongoing_monitoring/ClassDiscriminationDrift.py +0 -0
- {validmind-2.10.1 → validmind-2.11.0}/validmind/tests/ongoing_monitoring/ClassImbalanceDrift.py +0 -0
- {validmind-2.10.1 → validmind-2.11.0}/validmind/tests/ongoing_monitoring/ClassificationAccuracyDrift.py +0 -0
- {validmind-2.10.1 → validmind-2.11.0}/validmind/tests/ongoing_monitoring/ConfusionMatrixDrift.py +0 -0
- {validmind-2.10.1 → validmind-2.11.0}/validmind/tests/ongoing_monitoring/CumulativePredictionProbabilitiesDrift.py +0 -0
- {validmind-2.10.1 → validmind-2.11.0}/validmind/tests/ongoing_monitoring/FeatureDrift.py +0 -0
- {validmind-2.10.1 → validmind-2.11.0}/validmind/tests/ongoing_monitoring/PredictionAcrossEachFeature.py +0 -0
- {validmind-2.10.1 → validmind-2.11.0}/validmind/tests/ongoing_monitoring/PredictionCorrelation.py +0 -0
- {validmind-2.10.1 → validmind-2.11.0}/validmind/tests/ongoing_monitoring/PredictionProbabilitiesHistogramDrift.py +0 -0
- {validmind-2.10.1 → validmind-2.11.0}/validmind/tests/ongoing_monitoring/PredictionQuantilesAcrossFeatures.py +0 -0
- {validmind-2.10.1 → validmind-2.11.0}/validmind/tests/ongoing_monitoring/ROCCurveDrift.py +0 -0
- {validmind-2.10.1 → validmind-2.11.0}/validmind/tests/ongoing_monitoring/ScoreBandsDrift.py +0 -0
- {validmind-2.10.1 → validmind-2.11.0}/validmind/tests/ongoing_monitoring/ScorecardHistogramDrift.py +0 -0
- {validmind-2.10.1 → validmind-2.11.0}/validmind/tests/ongoing_monitoring/TargetPredictionDistributionPlot.py +0 -0
- {validmind-2.10.1 → validmind-2.11.0}/validmind/tests/output.py +0 -0
- {validmind-2.10.1 → validmind-2.11.0}/validmind/tests/plots/CorrelationHeatmap.py +0 -0
- {validmind-2.10.1 → validmind-2.11.0}/validmind/tests/plots/HistogramPlot.py +0 -0
- {validmind-2.10.1 → validmind-2.11.0}/validmind/tests/plots/ViolinPlot.py +0 -0
- {validmind-2.10.1 → validmind-2.11.0}/validmind/tests/plots/__init__.py +0 -0
- {validmind-2.10.1 → validmind-2.11.0}/validmind/tests/prompt_validation/Bias.py +0 -0
- {validmind-2.10.1 → validmind-2.11.0}/validmind/tests/prompt_validation/Clarity.py +0 -0
- {validmind-2.10.1 → validmind-2.11.0}/validmind/tests/prompt_validation/Conciseness.py +0 -0
- {validmind-2.10.1 → validmind-2.11.0}/validmind/tests/prompt_validation/Delimitation.py +0 -0
- {validmind-2.10.1 → validmind-2.11.0}/validmind/tests/prompt_validation/NegativeInstruction.py +0 -0
- {validmind-2.10.1 → validmind-2.11.0}/validmind/tests/prompt_validation/Robustness.py +0 -0
- {validmind-2.10.1 → validmind-2.11.0}/validmind/tests/prompt_validation/Specificity.py +0 -0
- {validmind-2.10.1 → validmind-2.11.0}/validmind/tests/prompt_validation/__init__.py +0 -0
- {validmind-2.10.1 → validmind-2.11.0}/validmind/tests/prompt_validation/ai_powered_test.py +0 -0
- {validmind-2.10.1 → validmind-2.11.0}/validmind/tests/stats/CorrelationAnalysis.py +0 -0
- {validmind-2.10.1 → validmind-2.11.0}/validmind/tests/stats/DescriptiveStats.py +0 -0
- {validmind-2.10.1 → validmind-2.11.0}/validmind/tests/stats/NormalityTests.py +0 -0
- {validmind-2.10.1 → validmind-2.11.0}/validmind/tests/stats/OutlierDetection.py +0 -0
- {validmind-2.10.1 → validmind-2.11.0}/validmind/tests/stats/__init__.py +0 -0
- {validmind-2.10.1 → validmind-2.11.0}/validmind/tests/test_providers.py +0 -0
- {validmind-2.10.1 → validmind-2.11.0}/validmind/tests/utils.py +0 -0
- {validmind-2.10.1 → validmind-2.11.0}/validmind/unit_metrics/__init__.py +0 -0
- {validmind-2.10.1 → validmind-2.11.0}/validmind/unit_metrics/classification/Accuracy.py +0 -0
- {validmind-2.10.1 → validmind-2.11.0}/validmind/unit_metrics/classification/F1.py +0 -0
- {validmind-2.10.1 → validmind-2.11.0}/validmind/unit_metrics/classification/Precision.py +0 -0
- {validmind-2.10.1 → validmind-2.11.0}/validmind/unit_metrics/classification/ROC_AUC.py +0 -0
- {validmind-2.10.1 → validmind-2.11.0}/validmind/unit_metrics/classification/Recall.py +0 -0
- {validmind-2.10.1 → validmind-2.11.0}/validmind/unit_metrics/regression/AdjustedRSquaredScore.py +0 -0
- {validmind-2.10.1 → validmind-2.11.0}/validmind/unit_metrics/regression/GiniCoefficient.py +0 -0
- {validmind-2.10.1 → validmind-2.11.0}/validmind/unit_metrics/regression/HuberLoss.py +0 -0
- {validmind-2.10.1 → validmind-2.11.0}/validmind/unit_metrics/regression/KolmogorovSmirnovStatistic.py +0 -0
- {validmind-2.10.1 → validmind-2.11.0}/validmind/unit_metrics/regression/MeanAbsoluteError.py +0 -0
- {validmind-2.10.1 → validmind-2.11.0}/validmind/unit_metrics/regression/MeanAbsolutePercentageError.py +0 -0
- {validmind-2.10.1 → validmind-2.11.0}/validmind/unit_metrics/regression/MeanBiasDeviation.py +0 -0
- {validmind-2.10.1 → validmind-2.11.0}/validmind/unit_metrics/regression/MeanSquaredError.py +0 -0
- {validmind-2.10.1 → validmind-2.11.0}/validmind/unit_metrics/regression/QuantileLoss.py +0 -0
- {validmind-2.10.1 → validmind-2.11.0}/validmind/unit_metrics/regression/RSquaredScore.py +0 -0
- {validmind-2.10.1 → validmind-2.11.0}/validmind/unit_metrics/regression/RootMeanSquaredError.py +0 -0
- {validmind-2.10.1 → validmind-2.11.0}/validmind/vm_models/__init__.py +0 -0
- {validmind-2.10.1 → validmind-2.11.0}/validmind/vm_models/dataset/__init__.py +0 -0
- {validmind-2.10.1 → validmind-2.11.0}/validmind/vm_models/dataset/dataset.py +0 -0
- {validmind-2.10.1 → validmind-2.11.0}/validmind/vm_models/dataset/utils.py +0 -0
- {validmind-2.10.1 → validmind-2.11.0}/validmind/vm_models/input.py +0 -0
- {validmind-2.10.1 → validmind-2.11.0}/validmind/vm_models/model.py +0 -0
- {validmind-2.10.1 → validmind-2.11.0}/validmind/vm_models/result/__init__.py +0 -0
- {validmind-2.10.1 → validmind-2.11.0}/validmind/vm_models/result/pii_filter.py +0 -0
- {validmind-2.10.1 → validmind-2.11.0}/validmind/vm_models/result/result.jinja +0 -0
- {validmind-2.10.1 → validmind-2.11.0}/validmind/vm_models/test_suite/__init__.py +0 -0
- {validmind-2.10.1 → validmind-2.11.0}/validmind/vm_models/test_suite/test.py +0 -0
- {validmind-2.10.1 → validmind-2.11.0}/validmind/vm_models/test_suite/test_suite.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: validmind
|
|
3
|
-
Version: 2.
|
|
3
|
+
Version: 2.11.0
|
|
4
4
|
Summary: ValidMind Library
|
|
5
5
|
License: DUAL LICENSE NOTICE
|
|
6
6
|
|
|
@@ -732,12 +732,14 @@ Requires-Dist: mistune (>=3.0.2,<4.0.0)
|
|
|
732
732
|
Requires-Dist: nest-asyncio (>=1.6.0,<2.0.0)
|
|
733
733
|
Requires-Dist: nltk (>=3.8.1,<4.0.0) ; extra == "all"
|
|
734
734
|
Requires-Dist: nltk (>=3.8.1,<4.0.0) ; extra == "nlp"
|
|
735
|
+
Requires-Dist: numpy (>=1.23,<2.0.0)
|
|
735
736
|
Requires-Dist: openai (>=1)
|
|
736
737
|
Requires-Dist: pandas (>=2.0.3,<3.0.0)
|
|
737
|
-
Requires-Dist: plotly (>=5.0.0)
|
|
738
|
+
Requires-Dist: plotly (>=5.0.0,<6.0.0)
|
|
738
739
|
Requires-Dist: polars
|
|
739
740
|
Requires-Dist: presidio-analyzer ; extra == "pii-detection"
|
|
740
741
|
Requires-Dist: presidio-structured ; extra == "pii-detection"
|
|
742
|
+
Requires-Dist: pyarrow (<16) ; extra == "nlp"
|
|
741
743
|
Requires-Dist: pycocoevalcap ; extra == "all"
|
|
742
744
|
Requires-Dist: pycocoevalcap ; extra == "llm"
|
|
743
745
|
Requires-Dist: python-dotenv
|
|
@@ -754,7 +756,6 @@ Requires-Dist: seaborn
|
|
|
754
756
|
Requires-Dist: sentencepiece (>=0.2.0,<0.3.0) ; extra == "all"
|
|
755
757
|
Requires-Dist: sentencepiece (>=0.2.0,<0.3.0) ; extra == "huggingface"
|
|
756
758
|
Requires-Dist: sentencepiece (>=0.2.0,<0.3.0) ; extra == "llm"
|
|
757
|
-
Requires-Dist: sentry-sdk (>=1.24.0,<2.0.0)
|
|
758
759
|
Requires-Dist: shap (>=0.46.0) ; extra == "all"
|
|
759
760
|
Requires-Dist: shap (>=0.46.0) ; extra == "explainability"
|
|
760
761
|
Requires-Dist: statsmodels ; extra == "all"
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[project]
|
|
2
2
|
name = "validmind"
|
|
3
|
-
version = "2.
|
|
3
|
+
version = "2.11.0"
|
|
4
4
|
description = "ValidMind Library"
|
|
5
5
|
readme = "README.pypi.md"
|
|
6
6
|
requires-python = ">=3.9,<3.13"
|
|
@@ -19,14 +19,14 @@ dependencies = [
|
|
|
19
19
|
"matplotlib",
|
|
20
20
|
"mistune (>=3.0.2,<4.0.0)",
|
|
21
21
|
"nest-asyncio (>=1.6.0,<2.0.0)",
|
|
22
|
+
"numpy (>=1.23,<2.0.0)",
|
|
22
23
|
"openai (>=1)",
|
|
23
24
|
"pandas (>=2.0.3,<3.0.0)",
|
|
24
|
-
"plotly (>=5.0.0)",
|
|
25
|
+
"plotly (>=5.0.0,<6.0.0)",
|
|
25
26
|
"polars",
|
|
26
27
|
"python-dotenv",
|
|
27
28
|
"scikit-learn",
|
|
28
29
|
"seaborn",
|
|
29
|
-
"sentry-sdk (>=1.24.0,<2.0.0)",
|
|
30
30
|
"tabulate (>=0.9.0,<0.10.0)",
|
|
31
31
|
"tiktoken",
|
|
32
32
|
"tqdm",
|
|
@@ -75,6 +75,7 @@ nlp = [
|
|
|
75
75
|
"evaluate",
|
|
76
76
|
"rouge (>=1)",
|
|
77
77
|
"bert-score (>=0.3.13)",
|
|
78
|
+
"pyarrow (<16)",
|
|
78
79
|
]
|
|
79
80
|
pytorch = ["torch (>=2.0.0)"]
|
|
80
81
|
stats = ["scipy", "statsmodels", "arch"]
|
|
@@ -21,7 +21,7 @@ To initialize the ValidMind Library, paste the code snippet with the model ident
|
|
|
21
21
|
import validmind as vm
|
|
22
22
|
|
|
23
23
|
vm.init(
|
|
24
|
-
api_host = "https://
|
|
24
|
+
api_host = "https://app.prod.validmind.ai/api/v1/tracking/tracking",
|
|
25
25
|
api_key = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
|
|
26
26
|
api_secret = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
|
|
27
27
|
project = "<project-identifier>"
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
__version__ = "2.11.0"
|
|
@@ -5,9 +5,7 @@
|
|
|
5
5
|
import json
|
|
6
6
|
import os
|
|
7
7
|
from concurrent.futures import ThreadPoolExecutor
|
|
8
|
-
from typing import List, Optional, Union
|
|
9
|
-
|
|
10
|
-
import tiktoken
|
|
8
|
+
from typing import Any, Dict, List, Optional, Union
|
|
11
9
|
|
|
12
10
|
from ..client_config import client_config
|
|
13
11
|
from ..logging import get_logger
|
|
@@ -25,6 +23,21 @@ __executor = ThreadPoolExecutor()
|
|
|
25
23
|
|
|
26
24
|
logger = get_logger(__name__)
|
|
27
25
|
|
|
26
|
+
# Try to import tiktoken once at module load
|
|
27
|
+
# Cache the result to avoid repeated import attempts
|
|
28
|
+
_TIKTOKEN_AVAILABLE = False
|
|
29
|
+
_TIKTOKEN_ENCODING = None
|
|
30
|
+
|
|
31
|
+
try:
|
|
32
|
+
import tiktoken
|
|
33
|
+
|
|
34
|
+
_TIKTOKEN_ENCODING = tiktoken.encoding_for_model("gpt-4o")
|
|
35
|
+
_TIKTOKEN_AVAILABLE = True
|
|
36
|
+
except (ImportError, Exception) as e:
|
|
37
|
+
logger.debug(
|
|
38
|
+
f"tiktoken unavailable, will use character-based token estimation: {e}"
|
|
39
|
+
)
|
|
40
|
+
|
|
28
41
|
|
|
29
42
|
def _get_llm_global_context():
|
|
30
43
|
# Get the context from the environment variable
|
|
@@ -42,6 +55,29 @@ def _get_llm_global_context():
|
|
|
42
55
|
return context if context_enabled and context else None
|
|
43
56
|
|
|
44
57
|
|
|
58
|
+
def _estimate_tokens_simple(text: str) -> int:
|
|
59
|
+
"""Estimate token count using character-based heuristic.
|
|
60
|
+
|
|
61
|
+
Uses ~4 characters per token for English/JSON text.
|
|
62
|
+
This is a fallback when tiktoken is unavailable.
|
|
63
|
+
"""
|
|
64
|
+
return len(text) // 4
|
|
65
|
+
|
|
66
|
+
|
|
67
|
+
def _truncate_text_simple(text: str, max_tokens: int) -> str:
|
|
68
|
+
"""Truncate text using character-based estimation."""
|
|
69
|
+
estimated_chars = max_tokens * 4
|
|
70
|
+
if len(text) <= estimated_chars:
|
|
71
|
+
return text
|
|
72
|
+
|
|
73
|
+
# Keep first portion and last 100 tokens worth (~400 chars)
|
|
74
|
+
# But ensure we don't take more than 25% for the tail
|
|
75
|
+
last_chars = min(400, estimated_chars // 4)
|
|
76
|
+
first_chars = estimated_chars - last_chars
|
|
77
|
+
|
|
78
|
+
return text[:first_chars] + "...[truncated]" + text[-last_chars:]
|
|
79
|
+
|
|
80
|
+
|
|
45
81
|
def _truncate_summary(
|
|
46
82
|
summary: Union[str, None], test_id: str, max_tokens: int = 100_000
|
|
47
83
|
):
|
|
@@ -49,20 +85,30 @@ def _truncate_summary(
|
|
|
49
85
|
# since string itself is less than max_tokens, definitely small enough
|
|
50
86
|
return summary
|
|
51
87
|
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
88
|
+
if _TIKTOKEN_AVAILABLE:
|
|
89
|
+
# Use tiktoken for accurate token counting
|
|
90
|
+
summary_tokens = _TIKTOKEN_ENCODING.encode(summary)
|
|
55
91
|
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
92
|
+
if len(summary_tokens) > max_tokens:
|
|
93
|
+
logger.warning(
|
|
94
|
+
f"Truncating {test_id} due to context length restrictions..."
|
|
95
|
+
" Generated description may be inaccurate"
|
|
96
|
+
)
|
|
97
|
+
summary = (
|
|
98
|
+
_TIKTOKEN_ENCODING.decode(summary_tokens[:max_tokens])
|
|
99
|
+
+ "...[truncated]"
|
|
100
|
+
+ _TIKTOKEN_ENCODING.decode(summary_tokens[-100:])
|
|
101
|
+
)
|
|
102
|
+
else:
|
|
103
|
+
# Fallback to character-based estimation
|
|
104
|
+
estimated_tokens = _estimate_tokens_simple(summary)
|
|
105
|
+
|
|
106
|
+
if estimated_tokens > max_tokens:
|
|
107
|
+
logger.warning(
|
|
108
|
+
f"Truncating {test_id} (estimated) due to context length restrictions..."
|
|
109
|
+
" Generated description may be inaccurate"
|
|
110
|
+
)
|
|
111
|
+
summary = _truncate_text_simple(summary, max_tokens)
|
|
66
112
|
|
|
67
113
|
return summary
|
|
68
114
|
|
|
@@ -76,6 +122,7 @@ def generate_description(
|
|
|
76
122
|
title: Optional[str] = None,
|
|
77
123
|
instructions: Optional[str] = None,
|
|
78
124
|
additional_context: Optional[str] = None,
|
|
125
|
+
params: Optional[Dict[str, Any]] = None,
|
|
79
126
|
):
|
|
80
127
|
"""Generate the description for the test results."""
|
|
81
128
|
from validmind.api_client import generate_test_result_description
|
|
@@ -121,11 +168,10 @@ def generate_description(
|
|
|
121
168
|
"test_description": test_description,
|
|
122
169
|
"title": title,
|
|
123
170
|
"summary": _truncate_summary(summary, test_id),
|
|
124
|
-
"figures": [
|
|
125
|
-
figure._get_b64_url() for figure in ([] if tables else figures)
|
|
126
|
-
],
|
|
171
|
+
"figures": [figure._get_b64_url() for figure in figures or []],
|
|
127
172
|
"additional_context": additional_context,
|
|
128
173
|
"instructions": instructions,
|
|
174
|
+
"params": params,
|
|
129
175
|
}
|
|
130
176
|
)["content"]
|
|
131
177
|
|
|
@@ -139,6 +185,7 @@ def background_generate_description(
|
|
|
139
185
|
title: Optional[str] = None,
|
|
140
186
|
instructions: Optional[str] = None,
|
|
141
187
|
additional_context: Optional[str] = None,
|
|
188
|
+
params: Optional[Dict[str, Any]] = None,
|
|
142
189
|
):
|
|
143
190
|
def wrapped():
|
|
144
191
|
try:
|
|
@@ -152,6 +199,7 @@ def background_generate_description(
|
|
|
152
199
|
title=title,
|
|
153
200
|
instructions=instructions,
|
|
154
201
|
additional_context=additional_context,
|
|
202
|
+
params=params,
|
|
155
203
|
),
|
|
156
204
|
True,
|
|
157
205
|
)
|
|
@@ -183,6 +231,7 @@ def get_result_description(
|
|
|
183
231
|
title: Optional[str] = None,
|
|
184
232
|
instructions: Optional[str] = None,
|
|
185
233
|
additional_context: Optional[str] = None,
|
|
234
|
+
params: Optional[Dict[str, Any]] = None,
|
|
186
235
|
):
|
|
187
236
|
"""Get the metadata dictionary for a test or metric result.
|
|
188
237
|
|
|
@@ -206,6 +255,7 @@ def get_result_description(
|
|
|
206
255
|
should_generate (bool): Whether to generate the description or not. Defaults to True.
|
|
207
256
|
instructions (Optional[str]): Instructions for the LLM to generate the description.
|
|
208
257
|
additional_context (Optional[str]): Additional context for the LLM to generate the description.
|
|
258
|
+
params (Optional[Dict[str, Any]]): Test parameters used to customize test behavior.
|
|
209
259
|
|
|
210
260
|
Returns:
|
|
211
261
|
str: The description to be logged with the test results.
|
|
@@ -234,6 +284,7 @@ def get_result_description(
|
|
|
234
284
|
title=title,
|
|
235
285
|
instructions=_instructions,
|
|
236
286
|
additional_context=additional_context,
|
|
287
|
+
params=params,
|
|
237
288
|
)
|
|
238
289
|
|
|
239
290
|
else:
|
|
@@ -18,11 +18,10 @@ from urllib.parse import urlencode, urljoin
|
|
|
18
18
|
import aiohttp
|
|
19
19
|
import requests
|
|
20
20
|
from aiohttp import FormData
|
|
21
|
-
from ipywidgets import HTML, Accordion
|
|
22
21
|
|
|
23
22
|
from .client_config import client_config
|
|
24
23
|
from .errors import MissingAPICredentialsError, MissingModelIdError, raise_api_error
|
|
25
|
-
from .logging import get_logger,
|
|
24
|
+
from .logging import get_logger, log_api_operation
|
|
26
25
|
from .utils import NumpyEncoder, is_html, md_to_html, run_async
|
|
27
26
|
from .vm_models.figure import Figure
|
|
28
27
|
|
|
@@ -166,7 +165,7 @@ def _ping() -> Dict[str, Any]:
|
|
|
166
165
|
|
|
167
166
|
client_info = r.json()
|
|
168
167
|
|
|
169
|
-
|
|
168
|
+
# Sentry removed: no telemetry initialization
|
|
170
169
|
|
|
171
170
|
# Only show this confirmation the first time we connect to the API
|
|
172
171
|
ack_connected = not client_config.model
|
|
@@ -244,14 +243,7 @@ def init(
|
|
|
244
243
|
|
|
245
244
|
def reload():
|
|
246
245
|
"""Reconnect to the ValidMind API and reload the project configuration."""
|
|
247
|
-
|
|
248
|
-
try:
|
|
249
|
-
_ping()
|
|
250
|
-
except Exception as e:
|
|
251
|
-
# if the api host is https, assume we're not in dev mode and send to sentry
|
|
252
|
-
if _api_host.startswith("https://"):
|
|
253
|
-
send_single_error(e)
|
|
254
|
-
raise e
|
|
246
|
+
_ping()
|
|
255
247
|
|
|
256
248
|
|
|
257
249
|
async def aget_metadata(content_id: str) -> Dict[str, Any]:
|
|
@@ -411,9 +403,7 @@ def log_input(input_id: str, type: str, metadata: Dict[str, Any]) -> Dict[str, A
|
|
|
411
403
|
return run_async(alog_input, input_id, type, metadata)
|
|
412
404
|
|
|
413
405
|
|
|
414
|
-
def log_text(
|
|
415
|
-
content_id: str, text: str, _json: Optional[Dict[str, Any]] = None
|
|
416
|
-
) -> Dict[str, Any]:
|
|
406
|
+
def log_text(content_id: str, text: str, _json: Optional[Dict[str, Any]] = None) -> str:
|
|
417
407
|
"""Logs free-form text to ValidMind API.
|
|
418
408
|
|
|
419
409
|
Args:
|
|
@@ -426,7 +416,7 @@ def log_text(
|
|
|
426
416
|
Exception: If the API call fails.
|
|
427
417
|
|
|
428
418
|
Returns:
|
|
429
|
-
|
|
419
|
+
str: HTML string containing the logged text in an accordion format.
|
|
430
420
|
"""
|
|
431
421
|
if not content_id or not isinstance(content_id, str):
|
|
432
422
|
raise ValueError("`content_id` must be a non-empty string")
|
|
@@ -438,8 +428,10 @@ def log_text(
|
|
|
438
428
|
|
|
439
429
|
log_text = run_async(alog_metadata, content_id, text, _json)
|
|
440
430
|
|
|
441
|
-
|
|
442
|
-
|
|
431
|
+
from .vm_models.html_renderer import StatefulHTMLRenderer
|
|
432
|
+
|
|
433
|
+
return StatefulHTMLRenderer.render_accordion(
|
|
434
|
+
items=[log_text["text"]],
|
|
443
435
|
titles=[f"Text Block: '{log_text['content_id']}'"],
|
|
444
436
|
)
|
|
445
437
|
|