Coverage for netbox_data_import/adapter_config.py: 93%

14 statements  

« prev     ^ index     » next       coverage.py v7.16.0, created at 2026-09-09 20:50 +0000

1# SPDX-License-Identifier: Apache-2.0 

2# SPDX-FileCopyrightText: 2026 Marcin Zieba <marcinpsk@gmail.com> 

3"""Project stored Import Profile policy into plain Source Adapter configuration.""" 

4 

5from .adapters import FlatWorkbookAdapter, TraceWorkbookAdapter, UnknownSourceAdapter 

6from .flat_workbook import FlatWorkbookConfig, TransformRule 

7 

8 

9def _flat_workbook_config(profile) -> FlatWorkbookConfig: 

10 """Return the detached configuration for one flat-workbook profile.""" 

11 return FlatWorkbookConfig( 

12 sheet_name=profile.adapter_settings.sheet_name, 

13 column_map={field: tuple(columns) for field, columns in profile.grouped_column_map().items()}, 

14 transform_rules=tuple( 

15 TransformRule( 

16 source_column=rule.source_column, 

17 pattern=rule.pattern, 

18 group_1_target=rule.group_1_target or "", 

19 group_2_target=rule.group_2_target or "", 

20 ) 

21 for rule in profile.column_transform_rules.all() 

22 ), 

23 capture_extra_data=profile.adapter_settings.capture_extra_data, 

24 ) 

25 

26 

27def _trace_workbook_config(profile) -> dict: 

28 """Return the empty configuration the trace-workbook adapter declares.""" 

29 del profile 

30 return {} 

31 

32 

33_CONFIG_PROJECTORS = { 

34 FlatWorkbookAdapter.key: _flat_workbook_config, 

35 TraceWorkbookAdapter.key: _trace_workbook_config, 

36} 

37 

38 

39def interpreter_config_for(profile): 

40 """Return the detached interpreter configuration for an Import Profile.""" 

41 projector = _CONFIG_PROJECTORS.get(profile.source_adapter) 

42 if projector is None: 

43 raise UnknownSourceAdapter( 

44 f"No interpreter configuration projector is registered for '{profile.source_adapter}'." 

45 ) 

46 return projector(profile) 

47 

48 

49__all__ = ("interpreter_config_for",)