Skip to content

Commit

Permalink
move table_name to generate
Browse files Browse the repository at this point in the history
  • Loading branch information
R-Palazzo committed Nov 21, 2023
1 parent d58d19d commit f150da4
Show file tree
Hide file tree
Showing 2 changed files with 51 additions and 4 deletions.
13 changes: 9 additions & 4 deletions sdmetrics/reports/multi_table/base_multi_table_report.py
Original file line number Diff line number Diff line change
Expand Up @@ -67,19 +67,24 @@ def _validate_metadata_matches_data(self, real_data, synthetic_data, metadata):

self._validate_relationships(real_data, synthetic_data, metadata)

def _validate(self, real_data, synthetic_data, metadata):
"""Validate the inputs.
def generate(self, real_data, synthetic_data, metadata, verbose=True):
"""Generate report.
This method generates the report by iterating through each property and calculating
the score for each property.
Args:
real_data (pandas.DataFrame):
The real data.
synthetic_data (pandas.DataFrame):
The synthetic data.
metadata (dict):
The metadata of the table.
The metadata, which contains each column's data type as well as relationships.
verbose (bool):
Whether or not to print report summary and progress.
"""
self.table_names = list(metadata['tables'].keys())
super()._validate(real_data, synthetic_data, metadata)
return super().generate(real_data, synthetic_data, metadata, verbose)

def _check_table_names(self, table_name):
if table_name not in self.table_names:
Expand Down
42 changes: 42 additions & 0 deletions tests/unit/reports/multi_table/test_base_multi_table_report.py
Original file line number Diff line number Diff line change
Expand Up @@ -144,6 +144,48 @@ def test__validate_metadata_matches_data(self, mock__validate_metadata_matches_d
mock__validate_metadata_matches_data.assert_has_calls(expected_calls)
report._validate_relationships.assert_called_once_with(real_data, synthetic_data, metadata)

@patch('sdmetrics.reports.base_report.BaseReport.generate')
def test_generate(self, mock_generate):
"""Test the ``generate`` method."""
# Setup
real_data = {
'Table_1': pd.DataFrame({'col1': [1, 2, 3]}),
'Table_2': pd.DataFrame({'col2': [4, 5, 6]}),
}
synthetic_data = {
'Table_1': pd.DataFrame({'col1': [1, 2, 3]}),
'Table_2': pd.DataFrame({'col2': [4, 5, 6]}),
}
real_data = {
'Table_1': pd.DataFrame({'col1': [1, 2, 3]}),
'Table_2': pd.DataFrame({'col2': [4, 5, 6]}),
}
synthetic_data = {
'Table_1': pd.DataFrame({'col1': [1, 2, 3]}),
'Table_2': pd.DataFrame({'col2': [4, 5, 6]}),
}
metadata = {
'tables': {
'Table_1': {
'columns': {
'col1': {},
},
},
'Table_2': {
'columns': {
'col2': {}
},
},
},
}
report = BaseMultiTableReport()

# Run
report.generate(real_data, synthetic_data, metadata)

# Assert
mock_generate.assert_called_once_with(real_data, synthetic_data, metadata, True)

def test__check_table_names(self):
"""Test the ``_check_table_names`` method."""
# Setup
Expand Down

0 comments on commit f150da4

Please sign in to comment.