graph LR
Configuration_Options["Configuration Options"]
Configuration_Orchestrator["Configuration Orchestrator"]
Build_Options_Resolver["Build Options Resolver"]
Option_Value_Accessor["Option Value Accessor"]
Architecture_Config_Parser["Architecture Config Parser"]
Project_Metadata_Extractor["Project Metadata Extractor"]
Configuration_Orchestrator -- "constructs and populates" --> Configuration_Options
Configuration_Orchestrator -- "invokes" --> Build_Options_Resolver
Configuration_Orchestrator -- "interacts with" --> Architecture_Config_Parser
Option_Value_Accessor -- "accesses" --> Configuration_Options
Build_Options_Resolver -- "uses" --> Option_Value_Accessor
Build_Options_Resolver -- "queries" --> Project_Metadata_Extractor
Project_Metadata_Extractor -- "provides metadata to" --> Build_Options_Resolver
The Configuration & Options Manager subsystem is central to cibuildwheel, responsible for consolidating all build-related settings. It acts as the single source of truth for the build process, integrating configurations from various sources like CLI arguments, environment variables, and pyproject.toml, while also incorporating project and architecture-specific details.
The immutable data structure that encapsulates the consolidated and validated build configuration. It serves as the single source of truth for all build settings, embodying the "Configuration Manager" aspect.
Related Classes/Methods:
The primary entry point and facade for the entire configuration process. It orchestrates the loading, parsing, merging, and validation of all build settings, returning a fully populated Options object.
Related Classes/Methods:
An internal method responsible for the complex logic of combining configuration from various sources (CLI arguments, environment variables, pyproject.toml), handling precedence and merging rules.
Related Classes/Methods:
Provides a unified interface to retrieve specific configuration values from the Options object, ensuring that cascading rules and overrides are correctly applied. It acts as a "Strategy" for value retrieval.
Related Classes/Methods:
Responsible for parsing and validating architecture-related configuration strings (e.g., from CIBW_ARCHS), translating them into internal architecture representations. This acts as an "Adapter" for architecture-specific configuration.
Related Classes/Methods:
Extracts the Python version requirements (python_requires) from the project's metadata files (pyproject.toml or setup.py), contributing essential project metadata to the configuration.
Related Classes/Methods: