From b644f17199d1e319f1a91f6ecdf9aec7d69bc8ff Mon Sep 17 00:00:00 2001 From: Vlada Dusek Date: Tue, 28 Jul 2026 22:25:39 +0200 Subject: [PATCH 1/4] build: replace hatchling with the uv_build backend Also migrates the license metadata to PEP 639 (`license` as an SPDX expression plus `license-files`), which is what uv_build reads to ship LICENSE inside the wheel. The resulting wheel is content-identical to the hatchling one. --- pyproject.toml | 23 +++++++---------------- 1 file changed, 7 insertions(+), 16 deletions(-) diff --git a/pyproject.toml b/pyproject.toml index a10b02e69b..c187ee66a1 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,20 +1,20 @@ [build-system] -requires = ["hatchling"] -build-backend = "hatchling.build" +requires = ["uv_build>=0.12.0,<0.13.0"] +build-backend = "uv_build" [project] name = "crawlee" version = "1.8.4" description = "Crawlee for Python" authors = [{ name = "Apify Technologies s.r.o.", email = "support@apify.com" }] -license = { file = "LICENSE" } +license = "Apache-2.0" +license-files = ["LICENSE"] readme = "README.md" requires-python = ">=3.10" classifiers = [ "Development Status :: 5 - Production/Stable", "Environment :: Console", "Intended Audience :: Developers", - "License :: OSI Approved :: Apache Software License", "Operating System :: OS Independent", "Programming Language :: Python :: 3.10", "Programming Language :: Python :: 3.11", @@ -148,18 +148,9 @@ dev = [ "uvicorn[standard]<1.0.0", ] -[tool.hatch.build.targets.wheel] -packages = ["src/crawlee"] - -[tool.hatch.build.targets.sdist] -only-include = [ - "src/crawlee", - "CHANGELOG.md", - "CONTRIBUTING.md", - "LICENSE", - "README.md", - "pyproject.toml", -] +# The module, pyproject.toml, README, and LICENSE are included in the sdist by default. +[tool.uv.build-backend] +source-include = ["CHANGELOG.md", "CONTRIBUTING.md"] [tool.ruff] line-length = 120 From f8a3e809aa05fc860d752e83cbf764503f6b0174 Mon Sep 17 00:00:00 2001 From: Vlada Dusek Date: Tue, 28 Jul 2026 22:25:40 +0200 Subject: [PATCH 2/4] chore: bump uv to 0.12 in the project template Dockerfile --- .../project_template/{{cookiecutter.project_name}}/Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/crawlee/project_template/{{cookiecutter.project_name}}/Dockerfile b/src/crawlee/project_template/{{cookiecutter.project_name}}/Dockerfile index dcab0ea94c..639e251387 100644 --- a/src/crawlee/project_template/{{cookiecutter.project_name}}/Dockerfile +++ b/src/crawlee/project_template/{{cookiecutter.project_name}}/Dockerfile @@ -49,7 +49,7 @@ RUN echo "Python version:" \ RUN pip install --no-deps --force-reinstall "playwright=={{ playwright_version }}" # % endif # % elif cookiecutter.package_manager == 'uv' -COPY --from=ghcr.io/astral-sh/uv:0.11 /uv /uvx /bin/ +COPY --from=ghcr.io/astral-sh/uv:0.12 /uv /uvx /bin/ ENV UV_PROJECT_ENVIRONMENT="/usr/local" From d9fd833d6330f303db9f4a1ea5c9e96193785cfe Mon Sep 17 00:00:00 2001 From: Vlada Dusek Date: Wed, 29 Jul 2026 08:21:51 +0200 Subject: [PATCH 3/4] build: drop the version constraint on the uv_build requirement --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index c187ee66a1..d83a6eca9d 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,5 +1,5 @@ [build-system] -requires = ["uv_build>=0.12.0,<0.13.0"] +requires = ["uv_build"] build-backend = "uv_build" [project] From 05ce3497133cd2d4cd70f1cfa23abb513099fa99 Mon Sep 17 00:00:00 2001 From: Vlada Dusek Date: Wed, 29 Jul 2026 08:42:18 +0200 Subject: [PATCH 4/4] build: move the sdist include comment inside the uv build-backend section --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index d83a6eca9d..5ee44fc1eb 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -148,8 +148,8 @@ dev = [ "uvicorn[standard]<1.0.0", ] -# The module, pyproject.toml, README, and LICENSE are included in the sdist by default. [tool.uv.build-backend] +# The module, pyproject.toml, README, and LICENSE are included in the sdist by default. source-include = ["CHANGELOG.md", "CONTRIBUTING.md"] [tool.ruff]