Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
37 changes: 37 additions & 0 deletions docs/reference/config-reference.rst
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
Configuration Reference
=======================

.. currentmodule:: fromager.packagesettings

Per-package Settings
--------------------

Expand All @@ -22,6 +24,41 @@ For example `flash_attn.yaml`.

.. autopydantic_model:: fromager.packagesettings.SbomSettings

Source Resolver
^^^^^^^^^^^^^^^

.. autopydantic_model:: fromager.packagesettings.PyPISDistResolver

.. autopydantic_model:: fromager.packagesettings.PyPIPrebuiltResolver

.. autopydantic_model:: fromager.packagesettings.PyPIDownloadResolver

.. autopydantic_model:: fromager.packagesettings.PyPIGitResolver

.. autopydantic_model:: fromager.packagesettings.VersionMapResolver

.. autopydantic_model:: fromager.packagesettings.GitHubTagDownloadResolver
:inherited-members: AbstractGitSourceResolver

.. autopydantic_model:: fromager.packagesettings.GitHubTagCloneResolver
:inherited-members: AbstractGitSourceResolver

.. autopydantic_model:: fromager.packagesettings.GitLabTagDownloadResolver
:inherited-members: AbstractGitSourceResolver

.. autopydantic_model:: fromager.packagesettings.GitLabTagCloneResolver
:inherited-members: AbstractGitSourceResolver

.. autopydantic_model:: fromager.packagesettings.NotAvailableResolver

.. autopydantic_model:: fromager.packagesettings.HookResolver

.. autoclass:: fromager.packagesettings.BuildSDist

.. autoattribute:: pep517
.. autoattribute:: tarball


Global Settings
---------------

Expand Down
28 changes: 28 additions & 0 deletions src/fromager/packagesettings/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,21 @@
VariantInfo,
)
from ._pbi import PackageBuildInfo
from ._resolver import (
DEFAULT_TAG_MATCHER,
BuildSDist,
GitHubTagCloneResolver,
GitHubTagDownloadResolver,
GitLabTagCloneResolver,
GitLabTagDownloadResolver,
HookResolver,
NotAvailableResolver,
PyPIDownloadResolver,
PyPIGitResolver,
PyPIPrebuiltResolver,
PyPISDistResolver,
VersionMapResolver,
)
from ._settings import Settings, SettingsFile
from ._templates import substitute_template
from ._typedefs import (
Expand All @@ -31,21 +46,33 @@
)

__all__ = (
"DEFAULT_TAG_MATCHER",
"MODEL_CONFIG",
"Annotations",
"BuildDirectory",
"BuildOptions",
"BuildSDist",
"DownloadSource",
"EnvKey",
"EnvVars",
"GitHubTagCloneResolver",
"GitHubTagDownloadResolver",
"GitLabTagCloneResolver",
"GitLabTagDownloadResolver",
"GitOptions",
"GlobalChangelog",
"HookResolver",
"NotAvailableResolver",
"Package",
"PackageBuildInfo",
"PackageSettings",
"PackageVersion",
"PatchMap",
"ProjectOverride",
"PyPIDownloadResolver",
"PyPIGitResolver",
"PyPIPrebuiltResolver",
"PyPISDistResolver",
"RawAnnotations",
"ResolverDist",
"SbomSettings",
Expand All @@ -55,6 +82,7 @@
"Variant",
"VariantChangelog",
"VariantInfo",
"VersionMapResolver",
"default_update_extra_environ",
"get_extra_environ",
"substitute_template",
Expand Down
15 changes: 14 additions & 1 deletion src/fromager/packagesettings/_models.py
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@
from pydantic import Field
from pydantic_core import core_schema

from ._resolver import SourceResolver
from ._typedefs import (
MODEL_CONFIG,
BuildDirectory,
Expand Down Expand Up @@ -228,7 +229,7 @@ class VariantInfo(pydantic.BaseModel):
VAR1: "value 1"
VAR2: "2.0
wheel_server_url: https://pypi.org/simple/
pre_build: False
pre_built: False
"""

model_config = MODEL_CONFIG
Expand All @@ -249,6 +250,12 @@ class VariantInfo(pydantic.BaseModel):
pre_built: bool = False
"""Use pre-built wheel from index server?"""

source: typing.Annotated[
SourceResolver | None,
pydantic.Field(default=None, discriminator="provider"),
]
"""Source resolver and downloader"""


class GitOptions(pydantic.BaseModel):
"""Git repository cloning options
Expand Down Expand Up @@ -371,6 +378,12 @@ class PackageSettings(pydantic.BaseModel):
project_override: ProjectOverride = Field(default_factory=ProjectOverride)
"""Patch project settings"""

source: typing.Annotated[
SourceResolver | None,
pydantic.Field(default=None, discriminator="provider"),
]
"""Source resolver and downloader"""

variants: Mapping[Variant, VariantInfo] = Field(default_factory=dict)
"""Variant configuration"""

Expand Down
9 changes: 9 additions & 0 deletions src/fromager/packagesettings/_pbi.py
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@
ProjectOverride,
VariantInfo,
)
from ._resolver import SourceResolver
from ._templates import _resolve_template, substitute_template
from ._typedefs import Annotations, PackageVersion, PatchMap, Template, Variant

Expand Down Expand Up @@ -175,6 +176,14 @@ def pre_built(self) -> bool:
return vi.pre_built
return False

@property
def source_resolver(self) -> SourceResolver | None:
"""Get source resolver settings (variant or global)"""
vi = self._ps.variants.get(self.variant)
if vi is not None and vi.source is not None:
return vi.source
return self._ps.source

@property
def wheel_server_url(self) -> str | None:
"""Alternative package index for pre-build wheel"""
Expand Down
Loading
Loading