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
« 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."""
5from .adapters import FlatWorkbookAdapter, TraceWorkbookAdapter, UnknownSourceAdapter
6from .flat_workbook import FlatWorkbookConfig, TransformRule
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 )
27def _trace_workbook_config(profile) -> dict:
28 """Return the empty configuration the trace-workbook adapter declares."""
29 del profile
30 return {}
33_CONFIG_PROJECTORS = {
34 FlatWorkbookAdapter.key: _flat_workbook_config,
35 TraceWorkbookAdapter.key: _trace_workbook_config,
36}
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)
49__all__ = ("interpreter_config_for",)