Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

chore: use uv pip compile #1778

Merged
merged 5 commits into from
Mar 21, 2024
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
1 change: 1 addition & 0 deletions cibuildwheel/options.py
Original file line number Diff line number Diff line change
Expand Up @@ -215,6 +215,7 @@ def _resolve_cascade(
return result


# pylint: disable-next=inconsistent-return-statements
def _merge_values(before: str | None, after: str, rule: InheritRule, merge_sep: str | None) -> str:
if rule == InheritRule.NONE:
return after
Expand Down
20 changes: 7 additions & 13 deletions cibuildwheel/resources/constraints-python310.txt
Original file line number Diff line number Diff line change
@@ -1,21 +1,18 @@
#
# This file is autogenerated by pip-compile with Python 3.10
# by the following command:
#
# nox -s update_constraints-3.10
#
# This file was autogenerated by uv via the following command:
# nox -s update_constraints
build==1.1.1
# via -r cibuildwheel/resources/constraints.in
delocate==0.10.7
# via -r cibuildwheel/resources/constraints.in
distlib==0.3.8
# via virtualenv
filelock==3.13.1
# via virtualenv
importlib-metadata==7.1.0
# via build
packaging==24.0
# via
# build
# delocate
pip==24.0
platformdirs==4.2.0
# via virtualenv
pyproject-hooks==1.0.0
Expand All @@ -27,8 +24,5 @@ tomli==2.0.1
typing-extensions==4.10.0
# via delocate
virtualenv==20.25.1
# via -r cibuildwheel/resources/constraints.in

# The following packages are considered to be unsafe in a requirements file:
pip==24.0
# via -r cibuildwheel/resources/constraints.in
zipp==3.18.1
# via importlib-metadata
16 changes: 3 additions & 13 deletions cibuildwheel/resources/constraints-python311.txt
Original file line number Diff line number Diff line change
@@ -1,13 +1,7 @@
#
# This file is autogenerated by pip-compile with Python 3.11
# by the following command:
#
# nox -s update_constraints-3.11
#
# This file was autogenerated by uv via the following command:
# nox -s update_constraints
build==1.1.1
# via -r cibuildwheel/resources/constraints.in
delocate==0.10.7
# via -r cibuildwheel/resources/constraints.in
distlib==0.3.8
# via virtualenv
filelock==3.13.1
Expand All @@ -16,15 +10,11 @@ packaging==24.0
# via
# build
# delocate
pip==24.0
platformdirs==4.2.0
# via virtualenv
pyproject-hooks==1.0.0
# via build
typing-extensions==4.10.0
# via delocate
virtualenv==20.25.1
# via -r cibuildwheel/resources/constraints.in

# The following packages are considered to be unsafe in a requirements file:
pip==24.0
# via -r cibuildwheel/resources/constraints.in
16 changes: 3 additions & 13 deletions cibuildwheel/resources/constraints-python312.txt
Original file line number Diff line number Diff line change
@@ -1,13 +1,7 @@
#
# This file is autogenerated by pip-compile with Python 3.12
# by the following command:
#
# nox -s update_constraints-3.12
#
# This file was autogenerated by uv via the following command:
# nox -s update_constraints
build==1.1.1
# via -r cibuildwheel/resources/constraints.in
delocate==0.10.7
# via -r cibuildwheel/resources/constraints.in
distlib==0.3.8
# via virtualenv
filelock==3.13.1
Expand All @@ -16,15 +10,11 @@ packaging==24.0
# via
# build
# delocate
pip==24.0
platformdirs==4.2.0
# via virtualenv
pyproject-hooks==1.0.0
# via build
typing-extensions==4.10.0
# via delocate
virtualenv==20.25.1
# via -r cibuildwheel/resources/constraints.in

# The following packages are considered to be unsafe in a requirements file:
pip==24.0
# via -r cibuildwheel/resources/constraints.in
16 changes: 3 additions & 13 deletions cibuildwheel/resources/constraints-python37.txt
Original file line number Diff line number Diff line change
@@ -1,13 +1,7 @@
#
# This file is autogenerated by pip-compile with Python 3.7
# by the following command:
#
# nox -s update_constraints-3.7
#
# This file was autogenerated by uv via the following command:
# nox -s update_constraints
build==1.1.1
# via -r cibuildwheel/resources/constraints.in
delocate==0.10.7
# via -r cibuildwheel/resources/constraints.in
distlib==0.3.8
# via virtualenv
filelock==3.12.2
Expand All @@ -20,6 +14,7 @@ packaging==24.0
# via
# build
# delocate
pip==24.0
platformdirs==4.0.0
# via virtualenv
pyproject-hooks==1.0.0
Expand All @@ -34,10 +29,5 @@ typing-extensions==4.7.1
# importlib-metadata
# platformdirs
virtualenv==20.25.1
# via -r cibuildwheel/resources/constraints.in
zipp==3.15.0
# via importlib-metadata

# The following packages are considered to be unsafe in a requirements file:
pip==24.0
# via -r cibuildwheel/resources/constraints.in
18 changes: 4 additions & 14 deletions cibuildwheel/resources/constraints-python38.txt
Original file line number Diff line number Diff line change
@@ -1,23 +1,18 @@
#
# This file is autogenerated by pip-compile with Python 3.8
# by the following command:
#
# nox -s update_constraints-3.8
#
# This file was autogenerated by uv via the following command:
# nox -s update_constraints
build==1.1.1
# via -r cibuildwheel/resources/constraints.in
delocate==0.10.7
# via -r cibuildwheel/resources/constraints.in
distlib==0.3.8
# via virtualenv
filelock==3.13.1
# via virtualenv
importlib-metadata==7.0.2
importlib-metadata==7.1.0
# via build
packaging==24.0
# via
# build
# delocate
pip==24.0
platformdirs==4.2.0
# via virtualenv
pyproject-hooks==1.0.0
Expand All @@ -29,10 +24,5 @@ tomli==2.0.1
typing-extensions==4.10.0
# via delocate
virtualenv==20.25.1
# via -r cibuildwheel/resources/constraints.in
zipp==3.18.1
# via importlib-metadata

# The following packages are considered to be unsafe in a requirements file:
pip==24.0
# via -r cibuildwheel/resources/constraints.in
18 changes: 4 additions & 14 deletions cibuildwheel/resources/constraints-python39.txt
Original file line number Diff line number Diff line change
@@ -1,23 +1,18 @@
#
# This file is autogenerated by pip-compile with Python 3.9
# by the following command:
#
# nox -s update_constraints-3.9
#
# This file was autogenerated by uv via the following command:
# nox -s update_constraints
build==1.1.1
# via -r cibuildwheel/resources/constraints.in
delocate==0.10.7
# via -r cibuildwheel/resources/constraints.in
distlib==0.3.8
# via virtualenv
filelock==3.13.1
# via virtualenv
importlib-metadata==7.0.2
importlib-metadata==7.1.0
# via build
packaging==24.0
# via
# build
# delocate
pip==24.0
platformdirs==4.2.0
# via virtualenv
pyproject-hooks==1.0.0
Expand All @@ -29,10 +24,5 @@ tomli==2.0.1
typing-extensions==4.10.0
# via delocate
virtualenv==20.25.1
# via -r cibuildwheel/resources/constraints.in
zipp==3.18.1
# via importlib-metadata

# The following packages are considered to be unsafe in a requirements file:
pip==24.0
# via -r cibuildwheel/resources/constraints.in
16 changes: 3 additions & 13 deletions cibuildwheel/resources/constraints.txt
Original file line number Diff line number Diff line change
@@ -1,13 +1,7 @@
#
# This file is autogenerated by pip-compile with Python 3.12
# by the following command:
#
# nox -s update_constraints-3.12
#
# This file was autogenerated by uv via the following command:
# nox -s update_constraints
build==1.1.1
# via -r cibuildwheel/resources/constraints.in
delocate==0.10.7
# via -r cibuildwheel/resources/constraints.in
distlib==0.3.8
# via virtualenv
filelock==3.13.1
Expand All @@ -16,15 +10,11 @@ packaging==24.0
# via
# build
# delocate
pip==24.0
platformdirs==4.2.0
# via virtualenv
pyproject-hooks==1.0.0
# via build
typing-extensions==4.10.0
# via delocate
virtualenv==20.25.1
# via -r cibuildwheel/resources/constraints.in

# The following packages are considered to be unsafe in a requirements file:
pip==24.0
# via -r cibuildwheel/resources/constraints.in
69 changes: 32 additions & 37 deletions noxfile.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,8 +9,6 @@

nox.options.sessions = ["lint", "pylint", "check_manifest", "tests"]

PYTHON_ALL_VERSIONS = ["3.7", "3.8", "3.9", "3.10", "3.11", "3.12"]

DIR = Path(__file__).parent.resolve()

if os.environ.get("CI", None):
Expand All @@ -23,7 +21,7 @@ def tests(session: nox.Session) -> None:
Run the unit and regular tests.
"""
unit_test_args = ["--run-docker"] if sys.platform.startswith("linux") else []
session.install("-e", ".[test]")
session.install("-e.[test]")
if session.posargs:
session.run("pytest", *session.posargs)
else:
Expand All @@ -46,7 +44,8 @@ def pylint(session: nox.Session) -> None:
Run pylint.
"""

session.install("pylint", ".")
name = "cibuildwheel @ ." if getattr(session.virtualenv, "venv_backend", "") == "uv" else "."
session.install("pylint", name)
session.run("pylint", "cibuildwheel", *session.posargs)


Expand All @@ -60,32 +59,36 @@ def check_manifest(session: nox.Session) -> None:
session.run("check-manifest", *session.posargs)


@nox.session(python=PYTHON_ALL_VERSIONS)
@nox.session
def update_constraints(session: nox.Session) -> None:
"""
Update the dependencies inplace.
"""
session.install("pip-tools")
assert isinstance(session.python, str)
python_version = session.python.replace(".", "")
env = os.environ.copy()
# CUSTOM_COMPILE_COMMAND is a pip-compile option that tells users how to
# regenerate the constraints files
env["CUSTOM_COMPILE_COMMAND"] = f"nox -s {session.name}"
session.run(
"pip-compile",
"--allow-unsafe",
"--upgrade",
"cibuildwheel/resources/constraints.in",
f"--output-file=cibuildwheel/resources/constraints-python{python_version}.txt",
env=env,
)
if session.python == PYTHON_ALL_VERSIONS[-1]:
RESOURCES = DIR / "cibuildwheel" / "resources"
shutil.copyfile(
RESOURCES / f"constraints-python{python_version}.txt",
RESOURCES / "constraints.txt",

if getattr(session.virtualenv, "venv_backend", "") != "uv":
session.install("uv>=0.1.23")

for minor_version in range(7, 13):
python_version = f"3.{minor_version}"
env = os.environ.copy()
# CUSTOM_COMPILE_COMMAND is a pip-compile option that tells users how to
# regenerate the constraints files
env["UV_CUSTOM_COMPILE_COMMAND"] = f"nox -s {session.name}"
session.run(
"uv",
"pip",
"compile",
f"--python-version={python_version}",
"--upgrade",
"cibuildwheel/resources/constraints.in",
f"--output-file=cibuildwheel/resources/constraints-python{python_version.replace('.', '')}.txt",
env=env,
)
RESOURCES = DIR / "cibuildwheel" / "resources"
shutil.copyfile(
RESOURCES / "constraints-python312.txt",
RESOURCES / "constraints.txt",
)


@nox.session
Expand All @@ -104,7 +107,7 @@ def update_proj(session: nox.Session) -> None:
"""
Update the README inplace.
"""
session.install("-e", ".[bin]")
session.install("-e.[bin]")
session.run(
"python",
"bin/projects.py",
Expand All @@ -127,18 +130,10 @@ def generate_schema(session: nox.Session) -> None:
@nox.session(python="3.9")
def docs(session: nox.Session) -> None:
"""
Build the docs.
Build the docs. Will serve unless --non-interactive
"""
session.install("-e", ".[docs]")
session.run("pip", "list")

if session.posargs:
if "serve" in session.posargs:
session.run("mkdocs", "serve")
else:
session.error("Unrecognized args, use 'serve'")
else:
session.run("mkdocs", "build")
session.install("-e.[docs]")
session.run("mkdocs", "serve" if session.interactive else "build")


@nox.session
Expand Down