Skip to content

Commit aa8f97e

Browse files
committed
cleanup
1 parent 2af75cc commit aa8f97e

File tree

3 files changed

+25
-9
lines changed

3 files changed

+25
-9
lines changed

sdv/data_processing/data_processor.py

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -780,8 +780,6 @@ def update_transformers(self, column_name_to_transformer):
780780
)
781781

782782
for column, transformer in column_name_to_transformer.items():
783-
if transformer is None:
784-
continue
785783
if column in self._keys and not transformer.is_generator():
786784
raise SynthesizerInputError(
787785
f"Invalid transformer '{transformer.__class__.__name__}' for a primary "

sdv/multi_table/base.py

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -474,14 +474,12 @@ def _assign_table_transformers(self, synthesizer, table_name, table_data):
474474
"""
475475
synthesizer.auto_assign_transformers(table_data)
476476
column_name_to_transformers = {}
477+
477478
primary_key = self.metadata.tables[table_name].primary_key
478-
for relation in self.metadata.relationships:
479-
column_name = relation['child_foreign_key']
480-
if (
481-
relation['child_table_name'] == table_name
482-
and relation['child_foreign_key'] != primary_key
483-
):
484-
column_name_to_transformers[column_name] = None
479+
foreign_keys = self.metadata._get_all_foreign_keys(table_name)
480+
for foreign_key in foreign_keys:
481+
if foreign_key != primary_key:
482+
column_name_to_transformers[foreign_key] = None
485483
synthesizer.update_transformers(column_name_to_transformers)
486484

487485
def auto_assign_transformers(self, data):

tests/unit/multi_table/test_base.py

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -689,6 +689,26 @@ def test_auto_assign_transformers_foreign_key_none(self):
689689
nesreca_synthesizer.update_transformers.assert_called_once_with({'a': None, 'b': None})
690690
oseba_synthesizer.update_transformers.assert_called_once_with({'a': None, 'b': None})
691691

692+
def test_auto_assign_transformers_primary_key_not_assigned(self):
693+
"""Test that if table has a PK (which also an FK), it is not assigned a Transformer."""
694+
# Setup
695+
metadata = get_multi_table_metadata()
696+
instance = BaseMultiTableSynthesizer(metadata)
697+
data = {'nesreca': Mock(), 'oseba': Mock()}
698+
instance.metadata.tables['nesreca'].primary_key = 'a'
699+
instance.metadata._get_all_foreign_keys = Mock(return_value=['a', 'b'])
700+
nesreca_synthesizer = Mock()
701+
oseba_synthesizer = Mock()
702+
instance._table_synthesizers['nesreca'] = nesreca_synthesizer
703+
instance._table_synthesizers['oseba'] = oseba_synthesizer
704+
705+
# Run
706+
instance.auto_assign_transformers(data)
707+
708+
# Assert
709+
nesreca_synthesizer.update_transformers.assert_called_once_with({'b': None})
710+
oseba_synthesizer.update_transformers.assert_called_once_with({'a': None, 'b': None})
711+
692712
def test_auto_assign_transformers_missing_table(self):
693713
"""Test it errors out when the passed table was not seen in the metadata."""
694714
# Setup

0 commit comments

Comments
 (0)