Repository: evidentlyai/evidently
Issue: TypeError: analyzers() missing 1 required positional argument: 'self'
Root cause: Interface Contract Mismatch

```
from evidently.dashboard import Dashboard
from evidently.tabs import DataDriftTab, CatTargetDriftTab, NumTargetDriftTab

report = Dashboard(tabs=[DataDriftTab, CatTargetDriftTab])
```


yields already


`Traceback (most recent call last):
  File "/home/dbange/Software/miniconda3/envs/astro_env/lib/python3.8/site-packages/IPython/core/interactiveshell.py", line 3457, in run_code
    exec(code_obj, self.user_global_ns, self.user_ns)
  File "<ipython-input-7-5d95cda23633>", line 1, in <module>
    Dashboard(tabs=[DataDriftTab, CatTargetDriftTab])
  File "/home/dbange/Software/miniconda3/envs/astro_env/lib/python3.8/site-packages/evidently/dashboard/dashboard.py", line 140, in __init__
    super().__init__(tabs, options if options is not None else [])
  File "/home/dbange/Software/miniconda3/envs/astro_env/lib/python3.8/site-packages/evidently/pipeline/pipeline.py", line 22, in __init__
    self._analyzers = list(itertools.chain.from_iterable([stage.analyzers() for stage in stages]))
  File "/home/dbange/Software/miniconda3/envs/astro_env/lib/python3.8/site-packages/evidently/pipeline/pipeline.py", line 22, in <listcomp>
    self._analyzers = list(itertools.chain.from_iterable([stage.analyzers() for stage in stages]))
TypeError: analyzers() missing 1 required positional argument: 'self'`

code was working fine with 1.27 release but now seems broken since i accidently updated to 1.40

Hi @davidbange ,

Yes, there was change in syntax, now you need to use `report = Dashboard(tabs=[DataDriftTab(), CatTargetDriftTab()])` (note, brackets after Tabs).

Hi @Liraim , thank you this fixed it.

Unfortunately now a new error rises:

```
 report.calculate(
        reference_data=reference_data,
        current_data=current_data,
        column_mapping={
            'target': 'page1_target',
            'numerical_features': [col for col in reference_data.columns if col not in ['page1_target']]
        }
    )
```
yields

```
Traceback (most recent call last):
  File "/home/dbange/Software/miniconda3/envs/astro_env/lib/python3.8/site-packages/IPython/core/interactiveshell.py", line 3457, in run_code
    exec(code_obj, self.user_global_ns, self.user_ns)
  File "<ipython-input-29-3a40fb30b057>", line 1, in <module>
    report.calculate(
  File "/home/dbange/Software/miniconda3/envs/astro_env/lib/python3.8/site-packages/evidently/dashboard/dashboard.py", line 147, in calculate
    self.execute(reference_data, current_data, column_mapping)
  File "/home/dbange/Software/miniconda3/envs/astro_env/lib/python3.8/site-packages/evidently/pipeline/pipeline.py", line 45, in execute
    instance.calculate(rdata, cdata, column_mapping)
  File "/home/dbange/Software/miniconda3/envs/astro_env/lib/python3.8/site-packages/evidently/analyzers/data_drift_analyzer.py", line 32, in calculate
    columns = process_columns(reference_data, column_mapping)
  File "/home/dbange/Software/miniconda3/envs/astro_env/lib/python3.8/site-packages/evidently/analyzers/utils.py", line 50, in process_columns
    date_column = column_mapping.datetime if column_mapping.datetime in dataset else None
AttributeError: 'dict' object has no attribute 'datetime'

```

Yeah, here you encountered another change in API:
`column_mapping` now is an object of type `ColumnMapping`, you need to rewrite your column_mapping like:
```
from evidently.pipeline.column_mapping import ColumnMapping

 report.calculate(
        reference_data=reference_data,
        current_data=current_data,
        column_mapping=ColumnMapping(
            target='page1_target',
            numerical_features=[col for col in reference_data.columns if col not in ['page1_target']]
        )
    )
```

now working like a charm, thank you so much @Liraim