Skip to content

Commit 01166e1

Browse files
authored
PluginBuildData (#104)
1 parent 6f34684 commit 01166e1

3 files changed

Lines changed: 79 additions & 79 deletions

File tree

cppython/builder.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
from cppython_core.plugin_schema.provider import Provider
1313
from cppython_core.plugin_schema.scm import SCM
1414
from cppython_core.resolution import (
15+
PluginBuildData,
1516
resolve_cppython,
1617
resolve_cppython_plugin,
1718
resolve_generator,
@@ -42,13 +43,15 @@ def generate_core_data(
4243
configuration: ProjectConfiguration,
4344
pep621_configuration: PEP621Configuration,
4445
cppython_configuration: CPPythonLocalConfiguration,
46+
plugin_build_date: PluginBuildData,
4547
) -> CoreData:
4648
"""Parses and returns resolved data from all configuration sources
4749
4850
Args:
4951
configuration: Input configuration
5052
pep621_configuration: Project table configuration
5153
cppython_configuration: Tool configuration
54+
plugin_build_date: Build data
5255
5356
Raises:
5457
ConfigError: Raised if data cannot be parsed
@@ -68,7 +71,7 @@ def generate_core_data(
6871
configuration.version = self.extract_scm_version(configuration.pyproject_file.parent)
6972
pep621_data = resolve_pep621(pep621_configuration, configuration)
7073

71-
cppython_data = resolve_cppython(cppython_configuration, global_configuration, project_data)
74+
cppython_data = resolve_cppython(cppython_configuration, global_configuration, project_data, plugin_build_date)
7275

7376
return CoreData(project_data=project_data, pep621_data=pep621_data, cppython_data=cppython_data)
7477

cppython/project.py

Lines changed: 7 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
from typing import Any
77

88
from cppython_core.exceptions import ConfigError, PluginError
9-
from cppython_core.resolution import resolve_name
9+
from cppython_core.resolution import PluginBuildData, resolve_name
1010
from cppython_core.schema import CoreData, Interface, ProjectConfiguration, PyProject
1111
from pydantic import ValidationError
1212

@@ -34,14 +34,7 @@ def __init__(
3434
self.logger.info("Initializing project")
3535

3636
try:
37-
if (pyproject := PyProject(**pyproject_data)) is None:
38-
raise ConfigError("Table [project] is not defined")
39-
40-
if pyproject.tool is None:
41-
raise ConfigError("Table [tool] is not defined")
42-
43-
if pyproject.tool.cppython is None:
44-
raise ConfigError("Table [tool.cppython] is not defined")
37+
pyproject = PyProject(**pyproject_data)
4538

4639
builder = Builder(self.logger)
4740

@@ -64,8 +57,12 @@ def __init__(
6457
# Solve the messy interactions between plugins
6558
generator_type, provider_type = builder.solve(generator_plugins, provider_plugins)
6659

60+
pyproject_build_data = PluginBuildData(generator_type=generator_type, provider_type=provider_type)
61+
6762
# Once the plugins are resolved, the core data is complete and can be generated
68-
self._core_data = builder.generate_core_data(configuration, pyproject.project, pyproject.tool.cppython)
63+
self._core_data = builder.generate_core_data(
64+
configuration, pyproject.project, pyproject.tool.cppython, pyproject_build_data
65+
)
6966

7067
# Create the chosen plugins
7168
self._generator = builder.create_generator(

0 commit comments

Comments
 (0)