@@ -54,6 +54,7 @@ def __init__(
5454 self .generic_test_parsers : Dict [str , SchemaGenericTestParser ] = {}
5555 self .patches_used : Dict [SourceKey , Set [str ]] = {}
5656 self .sources : Dict [str , SourceDefinition ] = {}
57+ self ._deprecations : Set [Any ] = set ()
5758
5859 # This method calls the 'parse_source' method which takes
5960 # the UnpatchedSourceDefinitions in the manifest and combines them
@@ -169,24 +170,26 @@ def parse_source(self, target: UnpatchedSourceDefinition) -> SourceDefinition:
169170 project_freshness = None
170171
171172 source_freshness = source .freshness
172- if source_freshness :
173+ if source_freshness and ( target . path , source . name ) not in self . _deprecations :
173174 deprecations .warn (
174175 "property-moved-to-config-deprecation" ,
175176 key = "freshness" ,
176177 file = target .path ,
177178 key_path = source .name ,
178179 )
180+ self ._deprecations .add ((target .path , source .name ))
179181
180182 source_config_freshness = FreshnessThreshold .from_dict (source .config .get ("freshness" , {}))
181183
182184 table_freshness = table .freshness
183- if table_freshness :
185+ if table_freshness and ( target . path , table . name ) not in self . _deprecations :
184186 deprecations .warn (
185187 "property-moved-to-config-deprecation" ,
186188 key = "freshness" ,
187189 file = target .path ,
188190 key_path = table .name ,
189191 )
192+ self ._deprecations .add ((target .path , table .name ))
190193
191194 table_config_freshness = FreshnessThreshold .from_dict (table .config .get ("freshness" , {}))
192195 freshness = merge_source_freshness (
0 commit comments