validmind 2.4.4__tar.gz → 2.4.6__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (314) hide show
  1. {validmind-2.4.4 → validmind-2.4.6}/PKG-INFO +2 -2
  2. {validmind-2.4.4 → validmind-2.4.6}/pyproject.toml +3 -5
  3. validmind-2.4.6/validmind/__version__.py +1 -0
  4. {validmind-2.4.4 → validmind-2.4.6}/validmind/tests/data_validation/IQROutliersBarPlot.py +16 -9
  5. {validmind-2.4.4 → validmind-2.4.6}/validmind/tests/data_validation/IQROutliersTable.py +13 -6
  6. {validmind-2.4.4 → validmind-2.4.6}/validmind/tests/run.py +37 -13
  7. validmind-2.4.4/validmind/__version__.py +0 -1
  8. {validmind-2.4.4 → validmind-2.4.6}/LICENSE +0 -0
  9. {validmind-2.4.4 → validmind-2.4.6}/README.pypi.md +0 -0
  10. {validmind-2.4.4 → validmind-2.4.6}/validmind/__init__.py +0 -0
  11. {validmind-2.4.4 → validmind-2.4.6}/validmind/ai/test_descriptions.py +0 -0
  12. {validmind-2.4.4 → validmind-2.4.6}/validmind/ai/utils.py +0 -0
  13. {validmind-2.4.4 → validmind-2.4.6}/validmind/api_client.py +0 -0
  14. {validmind-2.4.4 → validmind-2.4.6}/validmind/client.py +0 -0
  15. {validmind-2.4.4 → validmind-2.4.6}/validmind/client_config.py +0 -0
  16. {validmind-2.4.4 → validmind-2.4.6}/validmind/datasets/__init__.py +0 -0
  17. {validmind-2.4.4 → validmind-2.4.6}/validmind/datasets/classification/__init__.py +0 -0
  18. {validmind-2.4.4 → validmind-2.4.6}/validmind/datasets/classification/customer_churn.py +0 -0
  19. {validmind-2.4.4 → validmind-2.4.6}/validmind/datasets/classification/datasets/bank_customer_churn.csv +0 -0
  20. {validmind-2.4.4 → validmind-2.4.6}/validmind/datasets/classification/datasets/taiwan_credit.csv +0 -0
  21. {validmind-2.4.4 → validmind-2.4.6}/validmind/datasets/classification/taiwan_credit.py +0 -0
  22. {validmind-2.4.4 → validmind-2.4.6}/validmind/datasets/cluster/digits.py +0 -0
  23. {validmind-2.4.4 → validmind-2.4.6}/validmind/datasets/credit_risk/__init__.py +0 -0
  24. {validmind-2.4.4 → validmind-2.4.6}/validmind/datasets/credit_risk/datasets/lending_club_loan_data_2007_2014_clean.csv.gz +0 -0
  25. {validmind-2.4.4 → validmind-2.4.6}/validmind/datasets/credit_risk/lending_club.py +0 -0
  26. {validmind-2.4.4 → validmind-2.4.6}/validmind/datasets/llm/rag/__init__.py +0 -0
  27. {validmind-2.4.4 → validmind-2.4.6}/validmind/datasets/llm/rag/datasets/rfp_existing_questions_client_1.csv +0 -0
  28. {validmind-2.4.4 → validmind-2.4.6}/validmind/datasets/llm/rag/datasets/rfp_existing_questions_client_2.csv +0 -0
  29. {validmind-2.4.4 → validmind-2.4.6}/validmind/datasets/llm/rag/datasets/rfp_existing_questions_client_3.csv +0 -0
  30. {validmind-2.4.4 → validmind-2.4.6}/validmind/datasets/llm/rag/datasets/rfp_existing_questions_client_4.csv +0 -0
  31. {validmind-2.4.4 → validmind-2.4.6}/validmind/datasets/llm/rag/datasets/rfp_existing_questions_client_5.csv +0 -0
  32. {validmind-2.4.4 → validmind-2.4.6}/validmind/datasets/llm/rag/rfp.py +0 -0
  33. {validmind-2.4.4 → validmind-2.4.6}/validmind/datasets/nlp/__init__.py +0 -0
  34. {validmind-2.4.4 → validmind-2.4.6}/validmind/datasets/nlp/cnn_dailymail.py +0 -0
  35. {validmind-2.4.4 → validmind-2.4.6}/validmind/datasets/nlp/datasets/Covid_19.csv +0 -0
  36. {validmind-2.4.4 → validmind-2.4.6}/validmind/datasets/nlp/datasets/cnn_dailymail_100_with_predictions.csv +0 -0
  37. {validmind-2.4.4 → validmind-2.4.6}/validmind/datasets/nlp/datasets/cnn_dailymail_500_with_predictions.csv +0 -0
  38. {validmind-2.4.4 → validmind-2.4.6}/validmind/datasets/nlp/datasets/sentiments_with_predictions.csv +0 -0
  39. {validmind-2.4.4 → validmind-2.4.6}/validmind/datasets/nlp/twitter_covid_19.py +0 -0
  40. {validmind-2.4.4 → validmind-2.4.6}/validmind/datasets/regression/__init__.py +0 -0
  41. {validmind-2.4.4 → validmind-2.4.6}/validmind/datasets/regression/california_housing.py +0 -0
  42. {validmind-2.4.4 → validmind-2.4.6}/validmind/datasets/regression/datasets/fred/CPIAUCSL.csv +0 -0
  43. {validmind-2.4.4 → validmind-2.4.6}/validmind/datasets/regression/datasets/fred/CSUSHPISA.csv +0 -0
  44. {validmind-2.4.4 → validmind-2.4.6}/validmind/datasets/regression/datasets/fred/DRSFRMACBS.csv +0 -0
  45. {validmind-2.4.4 → validmind-2.4.6}/validmind/datasets/regression/datasets/fred/FEDFUNDS.csv +0 -0
  46. {validmind-2.4.4 → validmind-2.4.6}/validmind/datasets/regression/datasets/fred/GDP.csv +0 -0
  47. {validmind-2.4.4 → validmind-2.4.6}/validmind/datasets/regression/datasets/fred/GDPC1.csv +0 -0
  48. {validmind-2.4.4 → validmind-2.4.6}/validmind/datasets/regression/datasets/fred/GS10.csv +0 -0
  49. {validmind-2.4.4 → validmind-2.4.6}/validmind/datasets/regression/datasets/fred/GS3.csv +0 -0
  50. {validmind-2.4.4 → validmind-2.4.6}/validmind/datasets/regression/datasets/fred/GS5.csv +0 -0
  51. {validmind-2.4.4 → validmind-2.4.6}/validmind/datasets/regression/datasets/fred/MORTGAGE30US.csv +0 -0
  52. {validmind-2.4.4 → validmind-2.4.6}/validmind/datasets/regression/datasets/fred/UNRATE.csv +0 -0
  53. {validmind-2.4.4 → validmind-2.4.6}/validmind/datasets/regression/datasets/fred_loan_rates.csv +0 -0
  54. {validmind-2.4.4 → validmind-2.4.6}/validmind/datasets/regression/datasets/fred_loan_rates_test_1.csv +0 -0
  55. {validmind-2.4.4 → validmind-2.4.6}/validmind/datasets/regression/datasets/fred_loan_rates_test_2.csv +0 -0
  56. {validmind-2.4.4 → validmind-2.4.6}/validmind/datasets/regression/datasets/fred_loan_rates_test_3.csv +0 -0
  57. {validmind-2.4.4 → validmind-2.4.6}/validmind/datasets/regression/datasets/fred_loan_rates_test_4.csv +0 -0
  58. {validmind-2.4.4 → validmind-2.4.6}/validmind/datasets/regression/datasets/fred_loan_rates_test_5.csv +0 -0
  59. {validmind-2.4.4 → validmind-2.4.6}/validmind/datasets/regression/datasets/leanding_club_loan_rates.csv +0 -0
  60. {validmind-2.4.4 → validmind-2.4.6}/validmind/datasets/regression/fred.py +0 -0
  61. {validmind-2.4.4 → validmind-2.4.6}/validmind/datasets/regression/fred_timeseries.py +0 -0
  62. {validmind-2.4.4 → validmind-2.4.6}/validmind/datasets/regression/lending_club.py +0 -0
  63. {validmind-2.4.4 → validmind-2.4.6}/validmind/datasets/regression/models/fred_loan_rates_model_1.pkl +0 -0
  64. {validmind-2.4.4 → validmind-2.4.6}/validmind/datasets/regression/models/fred_loan_rates_model_2.pkl +0 -0
  65. {validmind-2.4.4 → validmind-2.4.6}/validmind/datasets/regression/models/fred_loan_rates_model_3.pkl +0 -0
  66. {validmind-2.4.4 → validmind-2.4.6}/validmind/datasets/regression/models/fred_loan_rates_model_4.pkl +0 -0
  67. {validmind-2.4.4 → validmind-2.4.6}/validmind/datasets/regression/models/fred_loan_rates_model_5.pkl +0 -0
  68. {validmind-2.4.4 → validmind-2.4.6}/validmind/errors.py +0 -0
  69. {validmind-2.4.4 → validmind-2.4.6}/validmind/html_templates/__init__.py +0 -0
  70. {validmind-2.4.4 → validmind-2.4.6}/validmind/html_templates/content_blocks.py +0 -0
  71. {validmind-2.4.4 → validmind-2.4.6}/validmind/input_registry.py +0 -0
  72. {validmind-2.4.4 → validmind-2.4.6}/validmind/logging.py +0 -0
  73. {validmind-2.4.4 → validmind-2.4.6}/validmind/models/__init__.py +0 -0
  74. {validmind-2.4.4 → validmind-2.4.6}/validmind/models/foundation.py +0 -0
  75. {validmind-2.4.4 → validmind-2.4.6}/validmind/models/function.py +0 -0
  76. {validmind-2.4.4 → validmind-2.4.6}/validmind/models/huggingface.py +0 -0
  77. {validmind-2.4.4 → validmind-2.4.6}/validmind/models/metadata.py +0 -0
  78. {validmind-2.4.4 → validmind-2.4.6}/validmind/models/pipeline.py +0 -0
  79. {validmind-2.4.4 → validmind-2.4.6}/validmind/models/pytorch.py +0 -0
  80. {validmind-2.4.4 → validmind-2.4.6}/validmind/models/r_model.py +0 -0
  81. {validmind-2.4.4 → validmind-2.4.6}/validmind/models/sklearn.py +0 -0
  82. {validmind-2.4.4 → validmind-2.4.6}/validmind/template.py +0 -0
  83. {validmind-2.4.4 → validmind-2.4.6}/validmind/test_suites/__init__.py +0 -0
  84. {validmind-2.4.4 → validmind-2.4.6}/validmind/test_suites/classifier.py +0 -0
  85. {validmind-2.4.4 → validmind-2.4.6}/validmind/test_suites/cluster.py +0 -0
  86. {validmind-2.4.4 → validmind-2.4.6}/validmind/test_suites/embeddings.py +0 -0
  87. {validmind-2.4.4 → validmind-2.4.6}/validmind/test_suites/llm.py +0 -0
  88. {validmind-2.4.4 → validmind-2.4.6}/validmind/test_suites/nlp.py +0 -0
  89. {validmind-2.4.4 → validmind-2.4.6}/validmind/test_suites/parameters_optimization.py +0 -0
  90. {validmind-2.4.4 → validmind-2.4.6}/validmind/test_suites/regression.py +0 -0
  91. {validmind-2.4.4 → validmind-2.4.6}/validmind/test_suites/statsmodels_timeseries.py +0 -0
  92. {validmind-2.4.4 → validmind-2.4.6}/validmind/test_suites/summarization.py +0 -0
  93. {validmind-2.4.4 → validmind-2.4.6}/validmind/test_suites/tabular_datasets.py +0 -0
  94. {validmind-2.4.4 → validmind-2.4.6}/validmind/test_suites/text_data.py +0 -0
  95. {validmind-2.4.4 → validmind-2.4.6}/validmind/test_suites/time_series.py +0 -0
  96. {validmind-2.4.4 → validmind-2.4.6}/validmind/tests/__init__.py +0 -0
  97. {validmind-2.4.4 → validmind-2.4.6}/validmind/tests/__types__.py +0 -0
  98. {validmind-2.4.4 → validmind-2.4.6}/validmind/tests/_store.py +0 -0
  99. {validmind-2.4.4 → validmind-2.4.6}/validmind/tests/data_validation/ACFandPACFPlot.py +0 -0
  100. {validmind-2.4.4 → validmind-2.4.6}/validmind/tests/data_validation/ADF.py +0 -0
  101. {validmind-2.4.4 → validmind-2.4.6}/validmind/tests/data_validation/ANOVAOneWayTable.py +0 -0
  102. {validmind-2.4.4 → validmind-2.4.6}/validmind/tests/data_validation/AutoAR.py +0 -0
  103. {validmind-2.4.4 → validmind-2.4.6}/validmind/tests/data_validation/AutoMA.py +0 -0
  104. {validmind-2.4.4 → validmind-2.4.6}/validmind/tests/data_validation/AutoSeasonality.py +0 -0
  105. {validmind-2.4.4 → validmind-2.4.6}/validmind/tests/data_validation/AutoStationarity.py +0 -0
  106. {validmind-2.4.4 → validmind-2.4.6}/validmind/tests/data_validation/BivariateFeaturesBarPlots.py +0 -0
  107. {validmind-2.4.4 → validmind-2.4.6}/validmind/tests/data_validation/BivariateHistograms.py +0 -0
  108. {validmind-2.4.4 → validmind-2.4.6}/validmind/tests/data_validation/BivariateScatterPlots.py +0 -0
  109. {validmind-2.4.4 → validmind-2.4.6}/validmind/tests/data_validation/ChiSquaredFeaturesTable.py +0 -0
  110. {validmind-2.4.4 → validmind-2.4.6}/validmind/tests/data_validation/ClassImbalance.py +0 -0
  111. {validmind-2.4.4 → validmind-2.4.6}/validmind/tests/data_validation/DFGLSArch.py +0 -0
  112. {validmind-2.4.4 → validmind-2.4.6}/validmind/tests/data_validation/DatasetDescription.py +0 -0
  113. {validmind-2.4.4 → validmind-2.4.6}/validmind/tests/data_validation/DatasetSplit.py +0 -0
  114. {validmind-2.4.4 → validmind-2.4.6}/validmind/tests/data_validation/DescriptiveStatistics.py +0 -0
  115. {validmind-2.4.4 → validmind-2.4.6}/validmind/tests/data_validation/Duplicates.py +0 -0
  116. {validmind-2.4.4 → validmind-2.4.6}/validmind/tests/data_validation/EngleGrangerCoint.py +0 -0
  117. {validmind-2.4.4 → validmind-2.4.6}/validmind/tests/data_validation/FeatureTargetCorrelationPlot.py +0 -0
  118. {validmind-2.4.4 → validmind-2.4.6}/validmind/tests/data_validation/HeatmapFeatureCorrelations.py +0 -0
  119. {validmind-2.4.4 → validmind-2.4.6}/validmind/tests/data_validation/HighCardinality.py +0 -0
  120. {validmind-2.4.4 → validmind-2.4.6}/validmind/tests/data_validation/HighPearsonCorrelation.py +0 -0
  121. {validmind-2.4.4 → validmind-2.4.6}/validmind/tests/data_validation/IsolationForestOutliers.py +0 -0
  122. {validmind-2.4.4 → validmind-2.4.6}/validmind/tests/data_validation/KPSS.py +0 -0
  123. {validmind-2.4.4 → validmind-2.4.6}/validmind/tests/data_validation/LaggedCorrelationHeatmap.py +0 -0
  124. {validmind-2.4.4 → validmind-2.4.6}/validmind/tests/data_validation/MissingValues.py +0 -0
  125. {validmind-2.4.4 → validmind-2.4.6}/validmind/tests/data_validation/MissingValuesBarPlot.py +0 -0
  126. {validmind-2.4.4 → validmind-2.4.6}/validmind/tests/data_validation/MissingValuesRisk.py +0 -0
  127. {validmind-2.4.4 → validmind-2.4.6}/validmind/tests/data_validation/PearsonCorrelationMatrix.py +0 -0
  128. {validmind-2.4.4 → validmind-2.4.6}/validmind/tests/data_validation/PhillipsPerronArch.py +0 -0
  129. {validmind-2.4.4 → validmind-2.4.6}/validmind/tests/data_validation/RollingStatsPlot.py +0 -0
  130. {validmind-2.4.4 → validmind-2.4.6}/validmind/tests/data_validation/ScatterPlot.py +0 -0
  131. {validmind-2.4.4 → validmind-2.4.6}/validmind/tests/data_validation/SeasonalDecompose.py +0 -0
  132. {validmind-2.4.4 → validmind-2.4.6}/validmind/tests/data_validation/Skewness.py +0 -0
  133. {validmind-2.4.4 → validmind-2.4.6}/validmind/tests/data_validation/SpreadPlot.py +0 -0
  134. {validmind-2.4.4 → validmind-2.4.6}/validmind/tests/data_validation/TabularCategoricalBarPlots.py +0 -0
  135. {validmind-2.4.4 → validmind-2.4.6}/validmind/tests/data_validation/TabularDateTimeHistograms.py +0 -0
  136. {validmind-2.4.4 → validmind-2.4.6}/validmind/tests/data_validation/TabularDescriptionTables.py +0 -0
  137. {validmind-2.4.4 → validmind-2.4.6}/validmind/tests/data_validation/TabularNumericalHistograms.py +0 -0
  138. {validmind-2.4.4 → validmind-2.4.6}/validmind/tests/data_validation/TargetRateBarPlots.py +0 -0
  139. {validmind-2.4.4 → validmind-2.4.6}/validmind/tests/data_validation/TimeSeriesDescription.py +0 -0
  140. {validmind-2.4.4 → validmind-2.4.6}/validmind/tests/data_validation/TimeSeriesDescriptiveStatistics.py +0 -0
  141. {validmind-2.4.4 → validmind-2.4.6}/validmind/tests/data_validation/TimeSeriesFrequency.py +0 -0
  142. {validmind-2.4.4 → validmind-2.4.6}/validmind/tests/data_validation/TimeSeriesHistogram.py +0 -0
  143. {validmind-2.4.4 → validmind-2.4.6}/validmind/tests/data_validation/TimeSeriesLinePlot.py +0 -0
  144. {validmind-2.4.4 → validmind-2.4.6}/validmind/tests/data_validation/TimeSeriesMissingValues.py +0 -0
  145. {validmind-2.4.4 → validmind-2.4.6}/validmind/tests/data_validation/TimeSeriesOutliers.py +0 -0
  146. {validmind-2.4.4 → validmind-2.4.6}/validmind/tests/data_validation/TooManyZeroValues.py +0 -0
  147. {validmind-2.4.4 → validmind-2.4.6}/validmind/tests/data_validation/UniqueRows.py +0 -0
  148. {validmind-2.4.4 → validmind-2.4.6}/validmind/tests/data_validation/WOEBinPlots.py +0 -0
  149. {validmind-2.4.4 → validmind-2.4.6}/validmind/tests/data_validation/WOEBinTable.py +0 -0
  150. {validmind-2.4.4 → validmind-2.4.6}/validmind/tests/data_validation/ZivotAndrewsArch.py +0 -0
  151. {validmind-2.4.4 → validmind-2.4.6}/validmind/tests/data_validation/__init__.py +0 -0
  152. {validmind-2.4.4 → validmind-2.4.6}/validmind/tests/data_validation/nlp/CommonWords.py +0 -0
  153. {validmind-2.4.4 → validmind-2.4.6}/validmind/tests/data_validation/nlp/Hashtags.py +0 -0
  154. {validmind-2.4.4 → validmind-2.4.6}/validmind/tests/data_validation/nlp/LanguageDetection.py +0 -0
  155. {validmind-2.4.4 → validmind-2.4.6}/validmind/tests/data_validation/nlp/Mentions.py +0 -0
  156. {validmind-2.4.4 → validmind-2.4.6}/validmind/tests/data_validation/nlp/PolarityAndSubjectivity.py +0 -0
  157. {validmind-2.4.4 → validmind-2.4.6}/validmind/tests/data_validation/nlp/Punctuations.py +0 -0
  158. {validmind-2.4.4 → validmind-2.4.6}/validmind/tests/data_validation/nlp/Sentiment.py +0 -0
  159. {validmind-2.4.4 → validmind-2.4.6}/validmind/tests/data_validation/nlp/StopWords.py +0 -0
  160. {validmind-2.4.4 → validmind-2.4.6}/validmind/tests/data_validation/nlp/TextDescription.py +0 -0
  161. {validmind-2.4.4 → validmind-2.4.6}/validmind/tests/data_validation/nlp/Toxicity.py +0 -0
  162. {validmind-2.4.4 → validmind-2.4.6}/validmind/tests/data_validation/nlp/__init__.py +0 -0
  163. {validmind-2.4.4 → validmind-2.4.6}/validmind/tests/decorator.py +0 -0
  164. {validmind-2.4.4 → validmind-2.4.6}/validmind/tests/load.py +0 -0
  165. {validmind-2.4.4 → validmind-2.4.6}/validmind/tests/metadata.py +0 -0
  166. {validmind-2.4.4 → validmind-2.4.6}/validmind/tests/model_validation/BertScore.py +0 -0
  167. {validmind-2.4.4 → validmind-2.4.6}/validmind/tests/model_validation/BleuScore.py +0 -0
  168. {validmind-2.4.4 → validmind-2.4.6}/validmind/tests/model_validation/ClusterSizeDistribution.py +0 -0
  169. {validmind-2.4.4 → validmind-2.4.6}/validmind/tests/model_validation/ContextualRecall.py +0 -0
  170. {validmind-2.4.4 → validmind-2.4.6}/validmind/tests/model_validation/FeaturesAUC.py +0 -0
  171. {validmind-2.4.4 → validmind-2.4.6}/validmind/tests/model_validation/MeteorScore.py +0 -0
  172. {validmind-2.4.4 → validmind-2.4.6}/validmind/tests/model_validation/ModelMetadata.py +0 -0
  173. {validmind-2.4.4 → validmind-2.4.6}/validmind/tests/model_validation/ModelMetadataComparison.py +0 -0
  174. {validmind-2.4.4 → validmind-2.4.6}/validmind/tests/model_validation/ModelPredictionResiduals.py +0 -0
  175. {validmind-2.4.4 → validmind-2.4.6}/validmind/tests/model_validation/RegardScore.py +0 -0
  176. {validmind-2.4.4 → validmind-2.4.6}/validmind/tests/model_validation/RegressionResidualsPlot.py +0 -0
  177. {validmind-2.4.4 → validmind-2.4.6}/validmind/tests/model_validation/RougeScore.py +0 -0
  178. {validmind-2.4.4 → validmind-2.4.6}/validmind/tests/model_validation/TimeSeriesPredictionWithCI.py +0 -0
  179. {validmind-2.4.4 → validmind-2.4.6}/validmind/tests/model_validation/TimeSeriesPredictionsPlot.py +0 -0
  180. {validmind-2.4.4 → validmind-2.4.6}/validmind/tests/model_validation/TimeSeriesR2SquareBySegments.py +0 -0
  181. {validmind-2.4.4 → validmind-2.4.6}/validmind/tests/model_validation/TokenDisparity.py +0 -0
  182. {validmind-2.4.4 → validmind-2.4.6}/validmind/tests/model_validation/ToxicityScore.py +0 -0
  183. {validmind-2.4.4 → validmind-2.4.6}/validmind/tests/model_validation/__init__.py +0 -0
  184. {validmind-2.4.4 → validmind-2.4.6}/validmind/tests/model_validation/embeddings/ClusterDistribution.py +0 -0
  185. {validmind-2.4.4 → validmind-2.4.6}/validmind/tests/model_validation/embeddings/CosineSimilarityComparison.py +0 -0
  186. {validmind-2.4.4 → validmind-2.4.6}/validmind/tests/model_validation/embeddings/CosineSimilarityDistribution.py +0 -0
  187. {validmind-2.4.4 → validmind-2.4.6}/validmind/tests/model_validation/embeddings/CosineSimilarityHeatmap.py +0 -0
  188. {validmind-2.4.4 → validmind-2.4.6}/validmind/tests/model_validation/embeddings/DescriptiveAnalytics.py +0 -0
  189. {validmind-2.4.4 → validmind-2.4.6}/validmind/tests/model_validation/embeddings/EmbeddingsVisualization2D.py +0 -0
  190. {validmind-2.4.4 → validmind-2.4.6}/validmind/tests/model_validation/embeddings/EuclideanDistanceComparison.py +0 -0
  191. {validmind-2.4.4 → validmind-2.4.6}/validmind/tests/model_validation/embeddings/EuclideanDistanceHeatmap.py +0 -0
  192. {validmind-2.4.4 → validmind-2.4.6}/validmind/tests/model_validation/embeddings/PCAComponentsPairwisePlots.py +0 -0
  193. {validmind-2.4.4 → validmind-2.4.6}/validmind/tests/model_validation/embeddings/StabilityAnalysis.py +0 -0
  194. {validmind-2.4.4 → validmind-2.4.6}/validmind/tests/model_validation/embeddings/StabilityAnalysisKeyword.py +0 -0
  195. {validmind-2.4.4 → validmind-2.4.6}/validmind/tests/model_validation/embeddings/StabilityAnalysisRandomNoise.py +0 -0
  196. {validmind-2.4.4 → validmind-2.4.6}/validmind/tests/model_validation/embeddings/StabilityAnalysisSynonyms.py +0 -0
  197. {validmind-2.4.4 → validmind-2.4.6}/validmind/tests/model_validation/embeddings/StabilityAnalysisTranslation.py +0 -0
  198. {validmind-2.4.4 → validmind-2.4.6}/validmind/tests/model_validation/embeddings/TSNEComponentsPairwisePlots.py +0 -0
  199. {validmind-2.4.4 → validmind-2.4.6}/validmind/tests/model_validation/ragas/AnswerCorrectness.py +0 -0
  200. {validmind-2.4.4 → validmind-2.4.6}/validmind/tests/model_validation/ragas/AnswerRelevance.py +0 -0
  201. {validmind-2.4.4 → validmind-2.4.6}/validmind/tests/model_validation/ragas/AnswerSimilarity.py +0 -0
  202. {validmind-2.4.4 → validmind-2.4.6}/validmind/tests/model_validation/ragas/AspectCritique.py +0 -0
  203. {validmind-2.4.4 → validmind-2.4.6}/validmind/tests/model_validation/ragas/ContextEntityRecall.py +0 -0
  204. {validmind-2.4.4 → validmind-2.4.6}/validmind/tests/model_validation/ragas/ContextPrecision.py +0 -0
  205. {validmind-2.4.4 → validmind-2.4.6}/validmind/tests/model_validation/ragas/ContextRecall.py +0 -0
  206. {validmind-2.4.4 → validmind-2.4.6}/validmind/tests/model_validation/ragas/ContextRelevancy.py +0 -0
  207. {validmind-2.4.4 → validmind-2.4.6}/validmind/tests/model_validation/ragas/Faithfulness.py +0 -0
  208. {validmind-2.4.4 → validmind-2.4.6}/validmind/tests/model_validation/ragas/utils.py +0 -0
  209. {validmind-2.4.4 → validmind-2.4.6}/validmind/tests/model_validation/sklearn/AdjustedMutualInformation.py +0 -0
  210. {validmind-2.4.4 → validmind-2.4.6}/validmind/tests/model_validation/sklearn/AdjustedRandIndex.py +0 -0
  211. {validmind-2.4.4 → validmind-2.4.6}/validmind/tests/model_validation/sklearn/ClassifierPerformance.py +0 -0
  212. {validmind-2.4.4 → validmind-2.4.6}/validmind/tests/model_validation/sklearn/ClusterCosineSimilarity.py +0 -0
  213. {validmind-2.4.4 → validmind-2.4.6}/validmind/tests/model_validation/sklearn/ClusterPerformance.py +0 -0
  214. {validmind-2.4.4 → validmind-2.4.6}/validmind/tests/model_validation/sklearn/ClusterPerformanceMetrics.py +0 -0
  215. {validmind-2.4.4 → validmind-2.4.6}/validmind/tests/model_validation/sklearn/CompletenessScore.py +0 -0
  216. {validmind-2.4.4 → validmind-2.4.6}/validmind/tests/model_validation/sklearn/ConfusionMatrix.py +0 -0
  217. {validmind-2.4.4 → validmind-2.4.6}/validmind/tests/model_validation/sklearn/FeatureImportanceComparison.py +0 -0
  218. {validmind-2.4.4 → validmind-2.4.6}/validmind/tests/model_validation/sklearn/FowlkesMallowsScore.py +0 -0
  219. {validmind-2.4.4 → validmind-2.4.6}/validmind/tests/model_validation/sklearn/HomogeneityScore.py +0 -0
  220. {validmind-2.4.4 → validmind-2.4.6}/validmind/tests/model_validation/sklearn/HyperParametersTuning.py +0 -0
  221. {validmind-2.4.4 → validmind-2.4.6}/validmind/tests/model_validation/sklearn/KMeansClustersOptimization.py +0 -0
  222. {validmind-2.4.4 → validmind-2.4.6}/validmind/tests/model_validation/sklearn/MinimumAccuracy.py +0 -0
  223. {validmind-2.4.4 → validmind-2.4.6}/validmind/tests/model_validation/sklearn/MinimumF1Score.py +0 -0
  224. {validmind-2.4.4 → validmind-2.4.6}/validmind/tests/model_validation/sklearn/MinimumROCAUCScore.py +0 -0
  225. {validmind-2.4.4 → validmind-2.4.6}/validmind/tests/model_validation/sklearn/ModelsPerformanceComparison.py +0 -0
  226. {validmind-2.4.4 → validmind-2.4.6}/validmind/tests/model_validation/sklearn/OverfitDiagnosis.py +0 -0
  227. {validmind-2.4.4 → validmind-2.4.6}/validmind/tests/model_validation/sklearn/PermutationFeatureImportance.py +0 -0
  228. {validmind-2.4.4 → validmind-2.4.6}/validmind/tests/model_validation/sklearn/PopulationStabilityIndex.py +0 -0
  229. {validmind-2.4.4 → validmind-2.4.6}/validmind/tests/model_validation/sklearn/PrecisionRecallCurve.py +0 -0
  230. {validmind-2.4.4 → validmind-2.4.6}/validmind/tests/model_validation/sklearn/ROCCurve.py +0 -0
  231. {validmind-2.4.4 → validmind-2.4.6}/validmind/tests/model_validation/sklearn/RegressionErrors.py +0 -0
  232. {validmind-2.4.4 → validmind-2.4.6}/validmind/tests/model_validation/sklearn/RegressionErrorsComparison.py +0 -0
  233. {validmind-2.4.4 → validmind-2.4.6}/validmind/tests/model_validation/sklearn/RegressionModelsPerformanceComparison.py +0 -0
  234. {validmind-2.4.4 → validmind-2.4.6}/validmind/tests/model_validation/sklearn/RegressionR2Square.py +0 -0
  235. {validmind-2.4.4 → validmind-2.4.6}/validmind/tests/model_validation/sklearn/RegressionR2SquareComparison.py +0 -0
  236. {validmind-2.4.4 → validmind-2.4.6}/validmind/tests/model_validation/sklearn/RobustnessDiagnosis.py +0 -0
  237. {validmind-2.4.4 → validmind-2.4.6}/validmind/tests/model_validation/sklearn/SHAPGlobalImportance.py +0 -0
  238. {validmind-2.4.4 → validmind-2.4.6}/validmind/tests/model_validation/sklearn/SilhouettePlot.py +0 -0
  239. {validmind-2.4.4 → validmind-2.4.6}/validmind/tests/model_validation/sklearn/TrainingTestDegradation.py +0 -0
  240. {validmind-2.4.4 → validmind-2.4.6}/validmind/tests/model_validation/sklearn/VMeasure.py +0 -0
  241. {validmind-2.4.4 → validmind-2.4.6}/validmind/tests/model_validation/sklearn/WeakspotsDiagnosis.py +0 -0
  242. {validmind-2.4.4 → validmind-2.4.6}/validmind/tests/model_validation/sklearn/__init__.py +0 -0
  243. {validmind-2.4.4 → validmind-2.4.6}/validmind/tests/model_validation/statsmodels/AutoARIMA.py +0 -0
  244. {validmind-2.4.4 → validmind-2.4.6}/validmind/tests/model_validation/statsmodels/BoxPierce.py +0 -0
  245. {validmind-2.4.4 → validmind-2.4.6}/validmind/tests/model_validation/statsmodels/CumulativePredictionProbabilities.py +0 -0
  246. {validmind-2.4.4 → validmind-2.4.6}/validmind/tests/model_validation/statsmodels/DurbinWatsonTest.py +0 -0
  247. {validmind-2.4.4 → validmind-2.4.6}/validmind/tests/model_validation/statsmodels/GINITable.py +0 -0
  248. {validmind-2.4.4 → validmind-2.4.6}/validmind/tests/model_validation/statsmodels/JarqueBera.py +0 -0
  249. {validmind-2.4.4 → validmind-2.4.6}/validmind/tests/model_validation/statsmodels/KolmogorovSmirnov.py +0 -0
  250. {validmind-2.4.4 → validmind-2.4.6}/validmind/tests/model_validation/statsmodels/LJungBox.py +0 -0
  251. {validmind-2.4.4 → validmind-2.4.6}/validmind/tests/model_validation/statsmodels/Lilliefors.py +0 -0
  252. {validmind-2.4.4 → validmind-2.4.6}/validmind/tests/model_validation/statsmodels/PredictionProbabilitiesHistogram.py +0 -0
  253. {validmind-2.4.4 → validmind-2.4.6}/validmind/tests/model_validation/statsmodels/RegressionCoeffsPlot.py +0 -0
  254. {validmind-2.4.4 → validmind-2.4.6}/validmind/tests/model_validation/statsmodels/RegressionFeatureSignificance.py +0 -0
  255. {validmind-2.4.4 → validmind-2.4.6}/validmind/tests/model_validation/statsmodels/RegressionModelForecastPlot.py +0 -0
  256. {validmind-2.4.4 → validmind-2.4.6}/validmind/tests/model_validation/statsmodels/RegressionModelForecastPlotLevels.py +0 -0
  257. {validmind-2.4.4 → validmind-2.4.6}/validmind/tests/model_validation/statsmodels/RegressionModelSensitivityPlot.py +0 -0
  258. {validmind-2.4.4 → validmind-2.4.6}/validmind/tests/model_validation/statsmodels/RegressionModelSummary.py +0 -0
  259. {validmind-2.4.4 → validmind-2.4.6}/validmind/tests/model_validation/statsmodels/RegressionModelsCoeffs.py +0 -0
  260. {validmind-2.4.4 → validmind-2.4.6}/validmind/tests/model_validation/statsmodels/RegressionPermutationFeatureImportance.py +0 -0
  261. {validmind-2.4.4 → validmind-2.4.6}/validmind/tests/model_validation/statsmodels/RunsTest.py +0 -0
  262. {validmind-2.4.4 → validmind-2.4.6}/validmind/tests/model_validation/statsmodels/ScorecardHistogram.py +0 -0
  263. {validmind-2.4.4 → validmind-2.4.6}/validmind/tests/model_validation/statsmodels/ShapiroWilk.py +0 -0
  264. {validmind-2.4.4 → validmind-2.4.6}/validmind/tests/model_validation/statsmodels/__init__.py +0 -0
  265. {validmind-2.4.4 → validmind-2.4.6}/validmind/tests/model_validation/statsmodels/statsutils.py +0 -0
  266. {validmind-2.4.4 → validmind-2.4.6}/validmind/tests/prompt_validation/Bias.py +0 -0
  267. {validmind-2.4.4 → validmind-2.4.6}/validmind/tests/prompt_validation/Clarity.py +0 -0
  268. {validmind-2.4.4 → validmind-2.4.6}/validmind/tests/prompt_validation/Conciseness.py +0 -0
  269. {validmind-2.4.4 → validmind-2.4.6}/validmind/tests/prompt_validation/Delimitation.py +0 -0
  270. {validmind-2.4.4 → validmind-2.4.6}/validmind/tests/prompt_validation/NegativeInstruction.py +0 -0
  271. {validmind-2.4.4 → validmind-2.4.6}/validmind/tests/prompt_validation/Robustness.py +0 -0
  272. {validmind-2.4.4 → validmind-2.4.6}/validmind/tests/prompt_validation/Specificity.py +0 -0
  273. {validmind-2.4.4 → validmind-2.4.6}/validmind/tests/prompt_validation/__init__.py +0 -0
  274. {validmind-2.4.4 → validmind-2.4.6}/validmind/tests/prompt_validation/ai_powered_test.py +0 -0
  275. {validmind-2.4.4 → validmind-2.4.6}/validmind/tests/test_providers.py +0 -0
  276. {validmind-2.4.4 → validmind-2.4.6}/validmind/tests/utils.py +0 -0
  277. {validmind-2.4.4 → validmind-2.4.6}/validmind/unit_metrics/__init__.py +0 -0
  278. {validmind-2.4.4 → validmind-2.4.6}/validmind/unit_metrics/classification/sklearn/Accuracy.py +0 -0
  279. {validmind-2.4.4 → validmind-2.4.6}/validmind/unit_metrics/classification/sklearn/F1.py +0 -0
  280. {validmind-2.4.4 → validmind-2.4.6}/validmind/unit_metrics/classification/sklearn/Precision.py +0 -0
  281. {validmind-2.4.4 → validmind-2.4.6}/validmind/unit_metrics/classification/sklearn/ROC_AUC.py +0 -0
  282. {validmind-2.4.4 → validmind-2.4.6}/validmind/unit_metrics/classification/sklearn/Recall.py +0 -0
  283. {validmind-2.4.4 → validmind-2.4.6}/validmind/unit_metrics/composite.py +0 -0
  284. {validmind-2.4.4 → validmind-2.4.6}/validmind/unit_metrics/regression/GiniCoefficient.py +0 -0
  285. {validmind-2.4.4 → validmind-2.4.6}/validmind/unit_metrics/regression/HuberLoss.py +0 -0
  286. {validmind-2.4.4 → validmind-2.4.6}/validmind/unit_metrics/regression/KolmogorovSmirnovStatistic.py +0 -0
  287. {validmind-2.4.4 → validmind-2.4.6}/validmind/unit_metrics/regression/MeanAbsolutePercentageError.py +0 -0
  288. {validmind-2.4.4 → validmind-2.4.6}/validmind/unit_metrics/regression/MeanBiasDeviation.py +0 -0
  289. {validmind-2.4.4 → validmind-2.4.6}/validmind/unit_metrics/regression/QuantileLoss.py +0 -0
  290. {validmind-2.4.4 → validmind-2.4.6}/validmind/unit_metrics/regression/sklearn/AdjustedRSquaredScore.py +0 -0
  291. {validmind-2.4.4 → validmind-2.4.6}/validmind/unit_metrics/regression/sklearn/MeanAbsoluteError.py +0 -0
  292. {validmind-2.4.4 → validmind-2.4.6}/validmind/unit_metrics/regression/sklearn/MeanSquaredError.py +0 -0
  293. {validmind-2.4.4 → validmind-2.4.6}/validmind/unit_metrics/regression/sklearn/RSquaredScore.py +0 -0
  294. {validmind-2.4.4 → validmind-2.4.6}/validmind/unit_metrics/regression/sklearn/RootMeanSquaredError.py +0 -0
  295. {validmind-2.4.4 → validmind-2.4.6}/validmind/utils.py +0 -0
  296. {validmind-2.4.4 → validmind-2.4.6}/validmind/vm_models/__init__.py +0 -0
  297. {validmind-2.4.4 → validmind-2.4.6}/validmind/vm_models/dataset/__init__.py +0 -0
  298. {validmind-2.4.4 → validmind-2.4.6}/validmind/vm_models/dataset/dataset.py +0 -0
  299. {validmind-2.4.4 → validmind-2.4.6}/validmind/vm_models/dataset/utils.py +0 -0
  300. {validmind-2.4.4 → validmind-2.4.6}/validmind/vm_models/figure.py +0 -0
  301. {validmind-2.4.4 → validmind-2.4.6}/validmind/vm_models/model.py +0 -0
  302. {validmind-2.4.4 → validmind-2.4.6}/validmind/vm_models/test/metric.py +0 -0
  303. {validmind-2.4.4 → validmind-2.4.6}/validmind/vm_models/test/metric_result.py +0 -0
  304. {validmind-2.4.4 → validmind-2.4.6}/validmind/vm_models/test/output_template.py +0 -0
  305. {validmind-2.4.4 → validmind-2.4.6}/validmind/vm_models/test/result_summary.py +0 -0
  306. {validmind-2.4.4 → validmind-2.4.6}/validmind/vm_models/test/result_wrapper.py +0 -0
  307. {validmind-2.4.4 → validmind-2.4.6}/validmind/vm_models/test/test.py +0 -0
  308. {validmind-2.4.4 → validmind-2.4.6}/validmind/vm_models/test/threshold_test.py +0 -0
  309. {validmind-2.4.4 → validmind-2.4.6}/validmind/vm_models/test/threshold_test_result.py +0 -0
  310. {validmind-2.4.4 → validmind-2.4.6}/validmind/vm_models/test_context.py +0 -0
  311. {validmind-2.4.4 → validmind-2.4.6}/validmind/vm_models/test_suite/runner.py +0 -0
  312. {validmind-2.4.4 → validmind-2.4.6}/validmind/vm_models/test_suite/summary.py +0 -0
  313. {validmind-2.4.4 → validmind-2.4.6}/validmind/vm_models/test_suite/test.py +0 -0
  314. {validmind-2.4.4 → validmind-2.4.6}/validmind/vm_models/test_suite/test_suite.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: validmind
3
- Version: 2.4.4
3
+ Version: 2.4.6
4
4
  Summary: ValidMind Developer Framework
5
5
  License: Commercial License
6
6
  Author: Andres Rodriguez
@@ -32,7 +32,7 @@ Requires-Dist: mistune (>=3.0.2,<4.0.0)
32
32
  Requires-Dist: nltk (>=3.8.1,<4.0.0)
33
33
  Requires-Dist: numba (<0.59.0)
34
34
  Requires-Dist: numpy
35
- Requires-Dist: openai (>=1) ; extra == "all" or extra == "llm"
35
+ Requires-Dist: openai (>=1) ; extra == "all"
36
36
  Requires-Dist: pandas (>=1.1,<2)
37
37
  Requires-Dist: plotly
38
38
  Requires-Dist: plotly-express
@@ -10,7 +10,7 @@ description = "ValidMind Developer Framework"
10
10
  license = "Commercial License"
11
11
  name = "validmind"
12
12
  readme = "README.pypi.md"
13
- version = "2.4.4"
13
+ version = "2.4.6"
14
14
 
15
15
  [tool.poetry.dependencies]
16
16
  aiohttp = {extras = ["speedups"], version = "*"}
@@ -29,8 +29,8 @@ mistune = "^3.0.2"
29
29
  nltk = "^3.8.1"
30
30
  numba = "<0.59.0" # TODO: https://github.com/validmind/developer-framework/pull/28
31
31
  numpy = "*"
32
- openai = {version = ">=1", optional = true}
33
- pandas = ">=1.1,<2" # TODO small issues blocking 2.0 but it would speed things up to use arrow backend
32
+ openai = ">=1"
33
+ pandas = ">=1.1,<2" # TODO: small issues blocking 2.0 but it would speed things up to use arrow backend
34
34
  plotly = "*"
35
35
  plotly-express = "*"
36
36
  polars = "*"
@@ -64,7 +64,6 @@ flake8 = "^4.0.1"
64
64
  ipykernel = "^6.22.0"
65
65
  isort = "^5.12.0"
66
66
  jupyter = "^1.0.0"
67
- openai = "^1.3.7"
68
67
  papermill = "^2.4.0"
69
68
  pdoc = "^14.4.0"
70
69
  pre-commit = "^3.3.3"
@@ -88,7 +87,6 @@ huggingface = ["transformers", "sentencepiece"]
88
87
  llm = [
89
88
  "torch",
90
89
  "transformers",
91
- "openai",
92
90
  "pycocoevalcap",
93
91
  "ragas",
94
92
  "sentencepiece",
@@ -0,0 +1 @@
1
+ __version__ = "2.4.6"
@@ -4,7 +4,6 @@
4
4
 
5
5
  from dataclasses import dataclass
6
6
 
7
- import numpy as np
8
7
  import plotly.graph_objects as go
9
8
 
10
9
  from validmind.vm_models import Figure, Metric
@@ -62,22 +61,27 @@ class IQROutliersBarPlot(Metric):
62
61
 
63
62
  name = "iqr_outliers_bar_plot"
64
63
  required_inputs = ["dataset"]
65
- default_params = {"threshold": 1.5, "num_features": None, "fig_width": 800}
64
+ default_params = {"threshold": 1.5, "fig_width": 800}
66
65
  tasks = ["classification", "regression"]
67
66
  tags = ["tabular_data", "visualization", "numerical_data"]
68
67
 
69
68
  def run(self):
70
69
  df = self.inputs.dataset.df
71
- num_features = self.params["num_features"]
70
+
71
+ # Select numerical features
72
+ features = self.inputs.dataset.feature_columns_numeric
73
+
74
+ # Select non-binary features
75
+ features = [
76
+ feature
77
+ for feature in features
78
+ if len(self.inputs.dataset.df[feature].unique()) > 2
79
+ ]
80
+
72
81
  threshold = self.params["threshold"]
73
82
  fig_width = self.params["fig_width"]
74
83
 
75
- # If num_features is None, use all numeric columns.
76
- # Otherwise, only use the columns provided in num_features.
77
- if num_features is None:
78
- df = df.select_dtypes(include=[np.number])
79
- else:
80
- df = df[num_features]
84
+ df = df[features]
81
85
 
82
86
  return self.detect_and_visualize_outliers(df, threshold, fig_width)
83
87
 
@@ -98,6 +102,9 @@ class IQROutliersBarPlot(Metric):
98
102
  # Compute outliers
99
103
  outliers = self.compute_outliers(df[col], threshold)
100
104
 
105
+ if outliers.empty:
106
+ continue # Skip plotting if there are no outliers
107
+
101
108
  Q1_count = outliers[
102
109
  (outliers >= 0) & (outliers < outliers.quantile(0.25))
103
110
  ].count()
@@ -4,7 +4,6 @@
4
4
 
5
5
  from dataclasses import dataclass
6
6
 
7
- import numpy as np
8
7
  import pandas as pd
9
8
 
10
9
  from validmind.vm_models import Metric, ResultSummary, ResultTable, ResultTableMetadata
@@ -53,12 +52,22 @@ class IQROutliersTable(Metric):
53
52
 
54
53
  name = "iqr_outliers_table"
55
54
  required_inputs = ["dataset"]
56
- default_params = {"features": None, "threshold": 1.5}
55
+ default_params = {"threshold": 1.5}
57
56
  tasks = ["classification", "regression"]
58
57
  tags = ["tabular_data", "numerical_data"]
59
58
 
60
59
  def run(self):
61
- features = self.params["features"]
60
+
61
+ # Select numerical features
62
+ features = self.inputs.dataset.feature_columns_numeric
63
+
64
+ # Select non-binary features
65
+ features = [
66
+ feature
67
+ for feature in features
68
+ if len(self.inputs.dataset.df[feature].unique()) > 2
69
+ ]
70
+
62
71
  threshold = self.params["threshold"]
63
72
 
64
73
  df = self.inputs.dataset.df
@@ -80,9 +89,7 @@ class IQROutliersTable(Metric):
80
89
  upper_bound = Q3 + threshold * IQR
81
90
  return series[(series < lower_bound) | (series > upper_bound)]
82
91
 
83
- def detect_and_analyze_outliers(self, df, features=None, threshold=1.5):
84
- if features is None:
85
- features = df.select_dtypes(include=[np.number]).columns.tolist()
92
+ def detect_and_analyze_outliers(self, df, features, threshold=1.5):
86
93
 
87
94
  outliers_summary = []
88
95
  for feature in features:
@@ -89,22 +89,24 @@ def _update_plotly_titles(figures, input_groups, title_template):
89
89
  for i, figure in enumerate(figures):
90
90
  figure.figure.layout.title.text = title_template.format(
91
91
  current_title=f"{current_title} " if current_title else "",
92
- input_description=", ".join(
93
- f"{k}={v if isinstance(v, str) else v.input_id}"
92
+ input_description=" and ".join(
93
+ f"{k}: {v if isinstance(v, str) else ', '.join(item.input_id for item in v) if isinstance(v, list) and all(hasattr(item, 'input_id') for item in v) else v.input_id}"
94
94
  for k, v in input_groups[i].items()
95
95
  ),
96
96
  )
97
97
 
98
98
 
99
99
  def _update_matplotlib_titles(figures, input_groups, title_template):
100
- current_title = figures[0].figure.get_title()
100
+ current_title = (
101
+ figures[0].figure._suptitle.get_text() if figures[0].figure._suptitle else ""
102
+ )
101
103
 
102
104
  for i, figure in enumerate(figures):
103
105
  figure.figure.suptitle(
104
106
  title_template.format(
105
107
  current_title=f"{current_title} " if current_title else "",
106
108
  input_description=" and ".join(
107
- f"{k}: {v if isinstance(v, str) else v.input_id}"
109
+ f"{k}: {v if isinstance(v, str) else ', '.join(item.input_id for item in v) if isinstance(v, list) and all(hasattr(item, 'input_id') for item in v) else v.input_id}"
108
110
  for k, v in input_groups[i].items()
109
111
  ),
110
112
  )
@@ -139,10 +141,20 @@ def metric_comparison(
139
141
  """Build a comparison result for multiple metric results"""
140
142
  ref_id = str(uuid4())
141
143
 
142
- input_group_strings = [
143
- {k: v if isinstance(v, str) else v.input_id for k, v in group.items()}
144
- for group in input_groups
145
- ]
144
+ input_group_strings = []
145
+
146
+ for group in input_groups:
147
+ new_group = {}
148
+ for k, v in group.items():
149
+ if isinstance(v, str):
150
+ new_group[k] = v
151
+ elif hasattr(v, "input_id"):
152
+ new_group[k] = v.input_id
153
+ elif isinstance(v, list) and all(hasattr(item, "input_id") for item in v):
154
+ new_group[k] = ", ".join([item.input_id for item in v])
155
+ else:
156
+ raise ValueError(f"Unsupported type for value: {v}")
157
+ input_group_strings.append(new_group)
146
158
 
147
159
  merged_summary = _combine_summaries(
148
160
  [
@@ -173,9 +185,11 @@ def metric_comparison(
173
185
  ),
174
186
  ],
175
187
  inputs=[
176
- input if isinstance(input, str) else input.input_id
188
+ item.input_id if hasattr(item, "input_id") else item
177
189
  for group in input_groups
178
190
  for input in group.values()
191
+ for item in (input if isinstance(input, list) else [input])
192
+ if hasattr(item, "input_id") or isinstance(item, str)
179
193
  ],
180
194
  output_template=output_template,
181
195
  metric=MetricResult(
@@ -198,10 +212,20 @@ def threshold_test_comparison(
198
212
  """Build a comparison result for multiple threshold test results"""
199
213
  ref_id = str(uuid4())
200
214
 
201
- input_group_strings = [
202
- {k: v if isinstance(v, str) else v.input_id for k, v in group.items()}
203
- for group in input_groups
204
- ]
215
+ input_group_strings = []
216
+
217
+ for group in input_groups:
218
+ new_group = {}
219
+ for k, v in group.items():
220
+ if isinstance(v, str):
221
+ new_group[k] = v
222
+ elif hasattr(v, "input_id"):
223
+ new_group[k] = v.input_id
224
+ elif isinstance(v, list) and all(hasattr(item, "input_id") for item in v):
225
+ new_group[k] = ", ".join([item.input_id for item in v])
226
+ else:
227
+ raise ValueError(f"Unsupported type for value: {v}")
228
+ input_group_strings.append(new_group)
205
229
 
206
230
  merged_summary = _combine_summaries(
207
231
  [
@@ -1 +0,0 @@
1
- __version__ = "2.4.4"
File without changes
File without changes
File without changes
File without changes