1212
1313type ProjectName = str
1414type SourceSpec = str
15+ type SourceConfig = dict [str , str | int | float | bool | None ]
16+ type SourceItem = tuple [SourceSpec , SourceConfig ]
1517
1618
1719def bqsrc (google_project : str ,
1820 snapshot : str ,
19- flags : int = 0 ,
20- ) -> tuple [ProjectName , SourceSpec | None ]:
21+ flags : int = 0
22+ ) -> tuple [ProjectName , SourceItem | None ]:
2123 assert len (google_project ) == 8 , google_project
2224 project = 'datarepo-dev-' + google_project
2325 assert not snapshot .startswith ('ANVIL_' ), snapshot
@@ -28,36 +30,40 @@ def bqsrc(google_project: str,
2830def mksrc (source_type : Literal ['bigquery' , 'parquet' ],
2931 google_project ,
3032 snapshot ,
31- flags : int = 0 ,
32- ) -> tuple [ProjectName , SourceSpec | None ]:
33+ flags : int = 0
34+ ) -> tuple [ProjectName , SourceItem | None ]:
3335 project = '_' .join (snapshot .split ('_' )[1 :- 3 ])
3436 assert flags <= pop
35- source = None if flags & pop else ':' .join ([
36- 'tdr' ,
37- source_type ,
38- 'gcp' ,
39- google_project ,
40- snapshot ,
41- ])
37+ source = None if flags & pop else (
38+ ':' .join ([
39+ 'tdr' ,
40+ source_type ,
41+ 'gcp' ,
42+ google_project ,
43+ snapshot ,
44+ ]),
45+ {}
46+ )
4247 return project , source
4348
4449
45- def mkdelta (items : list [tuple [ProjectName , SourceSpec | None ]]
46- ) -> dict [ProjectName , SourceSpec | None ]:
50+ def mkdelta (items : list [tuple [ProjectName , SourceItem | None ]]
51+ ) -> dict [ProjectName , SourceItem | None ]:
4752 result = dict (items )
4853 assert len (items ) == len (result ), 'collisions detected'
4954 assert list (result .keys ()) == sorted (result .keys ()), 'input not sorted'
5055 return result
5156
5257
53- def mksrcs (catalog : dict [ProjectName , SourceSpec | None ]) -> list [SourceSpec ]:
54- return list (filter (None , catalog .values ()))
58+ def mksrcs (catalog : dict [ProjectName , SourceItem | None ]
59+ ) -> dict [SourceSpec , SourceConfig ]:
60+ return dict (filter (None , catalog .values ()))
5561
5662
57- def mkdict (previous_catalog : dict [ProjectName , SourceSpec | None ],
63+ def mkdict (previous_catalog : dict [ProjectName , SourceItem | None ],
5864 num_expected : int ,
59- delta : dict [ProjectName , SourceSpec | None ],
60- ) -> dict [ProjectName , SourceSpec | None ]:
65+ delta : dict [ProjectName , SourceItem | None ],
66+ ) -> dict [ProjectName , SourceItem | None ]:
6167 catalog = previous_catalog | delta
6268 num_actual = len (mksrcs (catalog ))
6369 assert num_expected == num_actual , (num_expected , num_actual )
0 commit comments