Repository: evidentlyai/evidently
Issue: python 3.13 support
Root cause: External Dependency Breakage

Hello,

Any plans for python 3.13 support? Python 3.12 works fine, but there is an error in python 3.13

It may be also related to pydantic 2.x support because the error i'm getting comes from pydantic.v1

```
File ~/Documents/mlops/mlops-analyzer-service/.venv/lib/python3.13/site-packages/evidently/__init__.py:3
      1 #!/usr/bin/env python
      2 # coding: utf-8
----> 3 from evidently.core.compare import compare
      4 from evidently.core.datasets import BinaryClassification
      5 from evidently.core.datasets import DataDefinition

File ~/Documents/mlops/mlops-analyzer-service/.venv/lib/python3.13/site-packages/evidently/core/compare.py:10
      6 from typing import Union
      8 import pandas as pd
---> 10 from evidently.core.report import Snapshot
     12 CompareIndex = Union[str, List[str], Callable[[Snapshot], Any]]
     15 def _get_index(index: CompareIndex, run: Snapshot, i: int) -> Any:

File ~/Documents/mlops/mlops-analyzer-service/.venv/lib/python3.13/site-packages/evidently/core/report.py:15
     12 from typing import TypeVar
     13 from typing import Union
---> 15 from evidently.core.metric_types import Metric
     16 from evidently.core.metric_types import MetricCalculationBase
     17 from evidently.core.metric_types import MetricId

File ~/Documents/mlops/mlops-analyzer-service/.venv/lib/python3.13/site-packages/evidently/core/metric_types.py:39
     37 from evidently.legacy.renderers.html_widgets import counter
     38 from evidently.legacy.renderers.html_widgets import table_data
---> 39 from evidently.legacy.tests.base_test import TestStatus
     40 from evidently.legacy.utils.dashboard import TemplateParams
     41 from evidently.legacy.utils.dashboard import inline_iframe_html_template

File ~/Documents/mlops/mlops-analyzer-service/.venv/lib/python3.13/site-packages/evidently/legacy/tests/__init__.py:6
      1 """Available tests for TestSuite reports.
      2 Tests grouped into modules.
      3 For detailed information see module documentation.
      4 """
----> 6 from .classification_performance_tests import TestAccuracyScore
      7 from .classification_performance_tests import TestF1ByClass
      8 from .classification_performance_tests import TestF1Score

File ~/Documents/mlops/mlops-analyzer-service/.venv/lib/python3.13/site-packages/evidently/legacy/tests/classification_performance_tests.py:12
     10 from evidently.legacy.metric_results import Label
     11 from evidently.legacy.metric_results import ROCCurve
---> 12 from evidently.legacy.metrics.classification_performance.classification_dummy_metric import ClassificationDummyMetric
     13 from evidently.legacy.metrics.classification_performance.classification_quality_metric import (
     14     ClassificationConfusionMatrix,
     15 )
     16 from evidently.legacy.metrics.classification_performance.classification_quality_metric import (
     17     ClassificationQualityMetric,
     18 )

File ~/Documents/mlops/mlops-analyzer-service/.venv/lib/python3.13/site-packages/evidently/legacy/metrics/__init__.py:24
     22 from .data_drift.column_interaction_plot import ColumnInteractionPlot
     23 from .data_drift.column_value_plot import ColumnValuePlot
---> 24 from .data_drift.data_drift_table import DataDriftTable
     25 from .data_drift.dataset_drift_metric import DatasetDriftMetric
     26 from .data_drift.embeddings_drift import EmbeddingsDriftMetric

File ~/Documents/mlops/mlops-analyzer-service/.venv/lib/python3.13/site-packages/evidently/legacy/metrics/data_drift/data_drift_table.py:17
     15 from evidently.legacy.metric_results import HistogramData
     16 from evidently.legacy.metric_results import ScatterField
---> 17 from evidently.legacy.metrics.data_drift.base import WithDriftOptions
     18 from evidently.legacy.metrics.data_drift.feature_importance import FeatureImportanceMetric
     19 from evidently.legacy.model.widget import BaseWidgetInfo

File ~/Documents/mlops/mlops-analyzer-service/.venv/lib/python3.13/site-packages/evidently/legacy/metrics/data_drift/base.py:31
     27     text_stattest_threshold: Optional[float] = None
     28     per_column_stattest_threshold: Optional[Dict[str, float]] = None
---> 31 class WithDriftOptions(WithDriftOptionsFields, Metric[T], Generic[T], abc.ABC):
     32     _drift_options: DataDriftOptions
     34     @property
     35     def drift_options(self):

File ~/Documents/mlops/mlops-analyzer-service/.venv/lib/python3.13/site-packages/evidently/pydantic_utils.py:71, in FrozenBaseMeta.__new__(mcs, name, bases, namespace, **kwargs)
     70 def __new__(mcs, name, bases, namespace, **kwargs):
---> 71     res = super().__new__(mcs, name, bases, namespace, **kwargs)
     72     res.__config__.frozen = True
     73     return res

File ~/Documents/mlops/mlops-analyzer-service/.venv/lib/python3.13/site-packages/pydantic/v1/main.py:282, in ModelMetaclass.__new__(mcs, name, bases, namespace, **kwargs)
    251 exclude_from_namespace = fields | private_attributes.keys() | {'__slots__'}
    252 new_namespace = {
    253     '__config__': config,
    254     '__fields__': fields,
   (...)    279     **{n: v for n, v in namespace.items() if n not in exclude_from_namespace},
    280 }
--> 282 cls = super().__new__(mcs, name, bases, new_namespace, **kwargs)
    283 # set __signature__ attr only for model class, but not for its instances
    284 cls.__signature__ = ClassAttribute('__signature__', generate_model_signature(cls.__init__, fields, config))

File <frozen abc>:106, in __new__(mcls, name, bases, namespace, **kwargs)

TypeError: multiple bases have instance lay-out conflict
```

Hi! I've created a PR that adds Python 3.13 support: https://github.com/Nishita76/evidently/pull/new/add-python3.13-support. Please take a look when possible. Thanks!

Hi @MarcBresson ! Can you specify exact python version and pydantic version? Outputs of `pip list` would be even better

Hello,

I'm using pydantic 2.11.5 and python 3.13.3. I could give you my `pip list`, but 99% of the entries would be useless

Hmm, interesting. We test on python 3.13.3 in github actions (for all os). And I just checked that pydantic 2.11.5 is used there. You can see for yourself [here](https://github.com/evidentlyai/evidently/actions/runs/15351222712/job/43200088999?pr=1628). So we cant reproduce this error. Can you think of anything how your setup is different than ours?