Skip to content
Merged
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
10 changes: 5 additions & 5 deletions .github/workflows/check.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ jobs:
- name: Set up Python
uses: actions/setup-python@v6
with:
python-version: "3.11" # minimum supported lang version
python-version: "3.12" # minimum supported lang version

- name: Install dependencies
run: python -m pip install hatch 'click!=8.3.0'
Expand All @@ -39,7 +39,7 @@ jobs:
- name: Set up Python
uses: actions/setup-python@v6
with:
python-version: "3.11" # minimum supported lang version
python-version: "3.12" # minimum supported lang version

- name: Install dependencies
run: python -m pip install hatch 'click!=8.3.0'
Expand All @@ -60,7 +60,7 @@ jobs:
- name: Set up Python
uses: actions/setup-python@v6
with:
python-version: "3.11" # minimum supported lang version
python-version: "3.12" # minimum supported lang version

- name: Install dependencies
run: python -m pip install hatch 'click!=8.3.0'
Expand All @@ -81,7 +81,7 @@ jobs:
- name: Set up Python
uses: actions/setup-python@v6
with:
python-version: "3.11" # minimum supported lang version
python-version: "3.12" # minimum supported lang version

- name: Install dependencies
run: python -m pip install hatch 'click!=8.3.0'
Expand Down Expand Up @@ -118,7 +118,7 @@ jobs:
- name: Set up Python
uses: actions/setup-python@v6
with:
python-version: "3.11" # minimum supported lang version
python-version: "3.12" # minimum supported lang version

- name: Install dependencies
run: python -m pip install hatch 'click!=8.3.0'
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/python-publish.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ jobs:
- name: Set up Python
uses: actions/setup-python@v6
with:
python-version: '3.11'
python-version: '3.12'
- name: Install dependencies
run: |
python -m pip install --upgrade pip
Expand Down
4 changes: 0 additions & 4 deletions .github/workflows/test.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,6 @@ jobs:
fail-fast: false
matrix:
python-version:
- "3.11"
- "3.12"
- "3.13"
- "3.14"
Expand Down Expand Up @@ -71,7 +70,6 @@ jobs:
fail-fast: false
matrix:
python-version:
- "3.11"
- "3.12"
- "3.13"
- "3.14"
Expand All @@ -91,8 +89,6 @@ jobs:
exclude:
# macOS tests are slower and congested
# only run macOS tests on latest stable Python version
- os: macos-latest
python-version: "3.11"
- os: macos-latest
python-version: "3.12"
- os: macos-latest
Expand Down
9 changes: 0 additions & 9 deletions .mergify.yml
Original file line number Diff line number Diff line change
Expand Up @@ -29,8 +29,6 @@ pull_request_rules:
- "-draft"

# Unit tests
- check-success=unit (3.11, 1.75, ubuntu-latest)
- check-success=unit (3.11, 1.75, macos-latest)
- check-success=unit (3.12, 1.75, ubuntu-latest)
- check-success=unit (3.12, 1.75, macos-latest)
- check-success=unit (3.13, 1.75, ubuntu-latest)
Expand All @@ -42,13 +40,6 @@ pull_request_rules:
- check-success=mypy

# E2E test suites (consolidated from individual tests)
# Python 3.11 - Ubuntu only (macOS excluded)
- check-success=e2e (3.11, 1.75, ci_bootstrap_parallel_suite, ubuntu-latest)
- check-success=e2e (3.11, 1.75, ci_bootstrap_suite, ubuntu-latest)
- check-success=e2e (3.11, 1.75, ci_build_suite, ubuntu-latest)
- check-success=e2e (3.11, 1.75, ci_config_suite, ubuntu-latest)
- check-success=e2e (3.11, 1.75, ci_specialized_suite, ubuntu-latest)
- check-success=e2e (3.11, 1.75, ci_workflow_suite, ubuntu-latest)
# Python 3.12 - Ubuntu only (macOS excluded)
- check-success=e2e (3.12, 1.75, ci_bootstrap_parallel_suite, ubuntu-latest)
- check-success=e2e (3.12, 1.75, ci_bootstrap_suite, ubuntu-latest)
Expand Down
2 changes: 1 addition & 1 deletion .readthedocs.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ version: 2
build:
os: ubuntu-22.04
tools:
python: "3.11"
python: "3.12"

sphinx:
configuration: docs/conf.py
Expand Down
4 changes: 2 additions & 2 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ Fromager thrives on practical, well-tested contributions. This guide summarizes

### Prerequisites

- Python 3.11 or newer
- Python 3.12 or newer
- `hatch` for environment and task management

```bash
Expand Down Expand Up @@ -99,7 +99,7 @@ The pre-commit hook prevents commits that would fail some CI quality checks, sav
### Type Annotations

- Every function (including tests) must annotate all parameters and return values.
- Use modern `X | None` syntax instead of `Optional[X]` (requires Python 3.11+).
- Use modern `X | None` syntax instead of `Optional[X]` (PEP 604).
- Prefer precise collection types (`list[str]`, `dict[str, int]`, etc.).

```python
Expand Down
4 changes: 2 additions & 2 deletions docs/example/Containerfile
Original file line number Diff line number Diff line change
Expand Up @@ -12,13 +12,13 @@ RUN dnf install -y --nodocs \
patch rust cargo \
&& dnf clean all

# /opt/app-root structure (same as s2i-core and ubi9/python-311)
# /opt/app-root structure (same as s2i-core and ubi9/python-312)
ENV APP_ROOT=/opt/app-root \
HOME=/opt/app-root/src \
PATH=/opt/app-root/src/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin

# Python, pip, and virtual env settings
ARG PYTHON_VERSION=3.11
ARG PYTHON_VERSION=3.12
ENV PYTHON_VERSION=${PYTHON_VERSION} \
PYTHON=python${PYTHON_VERSION} \
PIP_NO_CACHE_DIR=off \
Expand Down
2 changes: 1 addition & 1 deletion docs/quickstart.rst
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ This guide gets you from zero to your first wheel build in under 5 minutes.
Prerequisites
-------------

You'll need Python 3.11 or later and network access to download packages from PyPI.
You'll need Python 3.12 or later and network access to download packages from PyPI.

Installation
------------
Expand Down
3 changes: 1 addition & 2 deletions e2e/flit_core_override/pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -16,13 +16,12 @@ classifiers = [
"Programming Language :: Python",
"Programming Language :: Python :: 3",
"Programming Language :: Python :: 3 :: Only",
"Programming Language :: Python :: 3.11",
"Programming Language :: Python :: 3.12",
"Programming Language :: Python :: Implementation :: CPython",
"Topic :: Utilities",
]

requires-python = ">=3.11"
requires-python = ">=3.12"

dependencies = []

Expand Down
3 changes: 1 addition & 2 deletions e2e/fromager_hooks/pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -16,13 +16,12 @@ classifiers = [
"Programming Language :: Python",
"Programming Language :: Python :: 3",
"Programming Language :: Python :: 3 :: Only",
"Programming Language :: Python :: 3.11",
"Programming Language :: Python :: 3.12",
"Programming Language :: Python :: Implementation :: CPython",
"Topic :: Utilities",
]

requires-python = ">=3.11"
requires-python = ">=3.12"

dependencies = []

Expand Down
3 changes: 1 addition & 2 deletions e2e/stevedore_override/pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -16,13 +16,12 @@ classifiers = [
"Programming Language :: Python",
"Programming Language :: Python :: 3",
"Programming Language :: Python :: 3 :: Only",
"Programming Language :: Python :: 3.11",
"Programming Language :: Python :: 3.12",
"Programming Language :: Python :: Implementation :: CPython",
"Topic :: Utilities",
]

requires-python = ">=3.11"
requires-python = ">=3.12"

dependencies = []

Expand Down
5 changes: 2 additions & 3 deletions pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -21,15 +21,14 @@ classifiers = [
"Programming Language :: Python",
"Programming Language :: Python :: 3",
"Programming Language :: Python :: 3 :: Only",
"Programming Language :: Python :: 3.11",
"Programming Language :: Python :: 3.12",
"Programming Language :: Python :: 3.13",
"Programming Language :: Python :: 3.14",
"Programming Language :: Python :: Implementation :: CPython",
"Topic :: Utilities",
]

requires-python = ">=3.11"
requires-python = ">=3.12"

dependencies = [
"click>=8.1.7",
Expand Down Expand Up @@ -154,7 +153,7 @@ source = "vcs"
packages = ["src/fromager"]

[tool.ruff]
target-version = "py311"
target-version = "py312"
# same as black's default line length
line-length = 88
exclude = [
Expand Down
6 changes: 2 additions & 4 deletions src/fromager/commands/build.py
Original file line number Diff line number Diff line change
Expand Up @@ -58,10 +58,8 @@ def dict_factory(x: list[tuple[str, typing.Any]]) -> dict[str, typing.Any]:
}


BuildSequenceEntryFuture: typing.TypeAlias = concurrent.futures.Future[
BuildSequenceEntry
]
DependencyNodeSet: typing.TypeAlias = set[dependency_graph.DependencyNode]
type BuildSequenceEntryFuture = concurrent.futures.Future[BuildSequenceEntry]
type DependencyNodeSet = set[dependency_graph.DependencyNode]


@click.command()
Expand Down
12 changes: 5 additions & 7 deletions src/fromager/resolver.py
Original file line number Diff line number Diff line change
Expand Up @@ -369,14 +369,12 @@ def get_project_from_pypi(
logger.info("ignored all candidate files at %s", sdist_server_url)


RequirementsMap: typing.TypeAlias = typing.Mapping[str, typing.Iterable[Requirement]]
Candidates: typing.TypeAlias = typing.Iterable[Candidate]
CandidatesMap: typing.TypeAlias = typing.Mapping[str, Candidates]
type RequirementsMap = typing.Mapping[str, typing.Iterable[Requirement]]
type Candidates = typing.Iterable[Candidate]
type CandidatesMap = typing.Mapping[str, Candidates]
# {identifier: [cls, cachekey]: list[candidates]}}
ResolverCache: typing.TypeAlias = dict[
str, dict[tuple[type[ExtrasProvider], str], list[Candidate]]
]
VersionSource: typing.TypeAlias = typing.Callable[
type ResolverCache = dict[str, dict[tuple[type[ExtrasProvider], str], list[Candidate]]]
type VersionSource = typing.Callable[
[str],
typing.Iterable[Candidate | tuple[str, str | Version]],
]
Expand Down
Loading