certflow.config package

配置模块

提供配置加载和管理功能,是CertFlow配置系统的入口模块.

该模块导出配置加载器和配置模型的主要类,方便其他模块统一导入使用.

Exports:

ConfigLoader: 配置加载器类,负责加载YAML配置文件、处理环境变量和文件包含 RootConfig: 根配置模型类,定义所有配置项的数据结构和验证规则 get_config: 全局配置单例获取函数,提供便捷的配置访问接口

示例

>>> from certflow.config import get_config, ConfigLoader
>>>
>>> # 方式1: 使用全局单例
>>> config = get_config()
>>> print(config.app.name)
"CertFlow"
>>>
>>> # 方式2: 创建独立加载器实例
>>> loader = ConfigLoader()
>>> config = loader.load("custom_config.yaml")
class ConfigLoader(config_dir=None)[源代码]

基类:object

配置加载器,负责加载和处理YAML配置文件

提供完整的配置文件加载功能,包括环境变量替换、配置文件包含和配置验证. 支持从指定目录加载YAML格式的配置文件,并自动处理配置中的动态内容.

参数:

config_dir (Path | None)

config_dir

配置文件所在目录的路径,默认为项目根目录下的config文件夹

_config

内部存储的配置对象,仅在调用load()后有效

示例

>>> from pathlib import Path
>>> loader = ConfigLoader(Path("/path/to/config"))
>>> config = loader.load("app_config.yaml")
>>> print(config.database.host)
__init__(config_dir=None)[源代码]

初始化配置加载器实例

如果不指定配置目录,会自动定位到项目根目录下的config文件夹. 开发环境: 通过当前文件向上查找4级父目录确定. 打包环境: 使用可执行文件所在目录 (sys.frozen).

参数:

config_dir (Path | None) -- 配置文件所在目录路径,默认为None时自动使用项目config目录

load(config_file='config.yaml')[源代码]

加载配置文件并进行处理

执行完整的配置加载流程: 读取文件 -> 展开顶层包含 -> 解析YAML -> 处理嵌套包含 -> 替换环境变量 -> 验证配置结构.

参数:

config_file (str) -- 配置文件名,默认为"config.yaml"

返回:

经过验证的配置对象,包含所有处理后的配置数据

返回类型:

RootConfig

抛出:
  • FileNotFoundError -- 指定的配置文件不存在

  • yaml.YAMLError -- YAML语法错误或格式不正确

  • ValidationError -- 配置内容不符合定义的数据模型

property config: RootConfig

获取已加载的配置对象

该属性提供对加载后的配置对象的只读访问. 必须先调用load()方法,否则会抛出运行时错误.

返回:

已加载的配置对象

返回类型:

RootConfig

抛出:

RuntimeError -- 配置尚未加载,需要先调用load()方法

class RootConfig(*, app=<factory>, paths=<factory>, sales_plan=<factory>, certificate=<factory>, import_deduplication=<factory>, database=<factory>, logging=<factory>, ui=<factory>, color_mapping=<factory>, numbering=None, duplicate_check=None, unique_key=None, priority_rules=None, export=None, sales_plan_fill=None, field_fallbacks=None, field_fill_rules=None, sales_importer=None, qualified_list=None, import_mapping=None, export_debug=None, test_report=None, printer=None, environment=None, colors=None, image_backgrounds=None, templates=None, vba_import=None, certificate_print=None, completed_orders_backfill=None, query_page=<factory>, grouping=None, sorting=None)[源代码]

基类:BaseModel

根配置模型

所有配置的顶层容器,聚合所有子配置模块.

参数:
app

应用基础配置

Type:

certflow.config.models.AppConfig

paths

路径配置

Type:

certflow.config.models.PathsConfig

sales_plan

销售计划配置

Type:

certflow.config.models.SalesPlanConfig

sort_rules

排序规则配置

certificate

合格证配置

Type:

certflow.config.models.CertificateConfig

import_deduplication

导入去重配置

Type:

certflow.config.models.ImportDeduplicationConfig

database

数据库配置

Type:

certflow.config.models.DatabaseConfig

logging

日志配置

Type:

certflow.config.models.LoggingConfig

ui

UI配置

Type:

certflow.config.models.UIConfig

color_mapping

颜色映射配置

Type:

certflow.config.models.ColorMappingConfig

numbering

编号规则配置(V2)

Type:

certflow.config.models.NumberingConfig | None

duplicate_check

重复检查配置(V2)

Type:

certflow.config.models.DuplicateCheckConfig | None

unique_key

唯一键配置(V2)

Type:

certflow.config.models.UniqueKeyConfig | None

priority_rules

优先级规则配置(V2)

Type:

certflow.config.models.PriorityRulesConfig | None

group_by

分组规则配置(V2)

export

导出配置(V2)

Type:

certflow.config.models.ExportConfig | None

sales_plan_fill

销售计划填充配置(V2)

Type:

dict[str, Any] | None

field_fallbacks

字段回退链配置(V2)

Type:

dict[str, list[str]] | None

field_fill_rules

字段填充规则配置(V2)

Type:

dict[str, Any] | None

sales_importer

销售计划导入器配置(V2)

Type:

certflow.config.models.SalesImporterConfig | None

qualified_list

合格清单配置(V2)

Type:

dict[str, Any] | None

import_mapping

导入列映射配置(V2)

Type:

certflow.config.models.ImportMappingConfig | None

export_debug

导出调试配置(V2)

Type:

dict[str, Any] | None

test_report

试压报告配置(V2)

Type:

certflow.config.models.TestReportConfig | None

printer

打印机配置(V2)

Type:

certflow.config.models.PrinterConfig | None

environment

环境信息配置(V2)

Type:

certflow.config.models.EnvironmentConfig | None

colors

颜色常量配置(V2)

Type:

certflow.config.models.ColorsConfig | None

image_backgrounds

图片背景配置(V2)

Type:

certflow.config.models.ImageBackgroundsConfig | None

templates

顶层模板配置(V2)

Type:

dict[str, Any] | None

vba_import

VBA导入配置(V2)

Type:

certflow.config.models.VBAImportConfig | None

certificate_print

合格证打印配置(V2)

Type:

certflow.config.models.CertificatePrintConfig | None

app: AppConfig
paths: PathsConfig
sales_plan: SalesPlanConfig
certificate: CertificateConfig
import_deduplication: ImportDeduplicationConfig
database: DatabaseConfig
logging: LoggingConfig
ui: UIConfig
color_mapping: ColorMappingConfig
numbering: NumberingConfig | None
duplicate_check: DuplicateCheckConfig | None
unique_key: UniqueKeyConfig | None
priority_rules: PriorityRulesConfig | None
export: ExportConfig | None
sales_plan_fill: dict[str, Any] | None
field_fallbacks: dict[str, list[str]] | None
field_fill_rules: dict[str, Any] | None
sales_importer: SalesImporterConfig | None
qualified_list: dict[str, Any] | None
import_mapping: ImportMappingConfig | None
export_debug: dict[str, Any] | None
test_report: TestReportConfig | None
printer: PrinterConfig | None
environment: EnvironmentConfig | None
colors: ColorsConfig | None
image_backgrounds: ImageBackgroundsConfig | None
templates: dict[str, Any] | None
vba_import: VBAImportConfig | None
certificate_print: CertificatePrintConfig | None
completed_orders_backfill: CompletedOrdersBackfillConfig | None
query_page: dict[str, Any]
grouping: GroupingConfig | None
sorting: SortingConfig | None
classmethod validate_log_level(v)[源代码]

验证日志级别是否有效

参数:

v (LoggingConfig) -- 待验证的日志配置对象

返回:

验证通过的日志配置对象

返回类型:

LoggingConfig

抛出:

ValueError -- 当日志级别不在有效值范围内时抛出

model_config = {}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

get_config(config_dir=None, reload=False)[源代码]

获取全局配置实例(单例模式)

提供便捷的全局配置访问接口,避免在多处重复创建ConfigLoader实例. 首次调用时会自动加载配置,后续调用返回缓存的配置对象.

参数:
  • config_dir (Path | None) -- 配置文件所在目录路径,首次调用时可指定,后续调用此参数无效

  • reload (bool) -- 是否强制重新加载配置,设为True时会重新读取配置文件

返回:

全局配置对象实例

返回类型:

RootConfig

示例

>>> from certflow.config.loader import get_config
>>> config = get_config()  # 首次调用,自动加载配置
>>> db_config = get_config().database  # 使用缓存配置
>>> new_config = get_config(reload=True)  # 强制重新加载

Submodules