From 78c6f867121eca9197a4e420bc32d0e2f2e00f85 Mon Sep 17 00:00:00 2001 From: happysalada Date: Wed, 19 Mar 2025 16:13:44 -0400 Subject: [PATCH] prefect: 3.2.7 -> 3.2.13 --- .../make_ui_files_writeable_on_startup.patch | 42 ------ pkgs/by-name/pr/prefect/package.nix | 125 +++++++++--------- 2 files changed, 64 insertions(+), 103 deletions(-) delete mode 100644 pkgs/by-name/pr/prefect/make_ui_files_writeable_on_startup.patch diff --git a/pkgs/by-name/pr/prefect/make_ui_files_writeable_on_startup.patch b/pkgs/by-name/pr/prefect/make_ui_files_writeable_on_startup.patch deleted file mode 100644 index 279c2fa88118..000000000000 --- a/pkgs/by-name/pr/prefect/make_ui_files_writeable_on_startup.patch +++ /dev/null @@ -1,42 +0,0 @@ -From a97d5f501ff3125d96e6c64dfa498ca1a598a4bd Mon Sep 17 00:00:00 2001 -From: happysalada -Date: Sun, 2 Mar 2025 08:30:36 -0500 -Subject: [PATCH] feat: ensure ui files are writeable On startup prefect copies - over files from the ui into the ui directory. If for any reason the ui files - were not writeable, the whole setup will fail. This PR ensures that the - copied files are writeable. To give a bit more context, I am currently - packaging Prefect for nixos. Nix having a little bit of a strict build - system, makes sure that the built package has only read-only files. this is - to ensure the build is deterministic. I understand that this might appear as - a detail related to nix build system only. I can patch the source when - building the nix package, but I thought I would try to contribute the patch. - No hard feelings if you are not interested in this patch. Thank you for - developping prefect! - -fix formatting ---- - src/prefect/server/api/server.py | 6 ++++++ - 1 file changed, 6 insertions(+) - -diff --git a/src/prefect/server/api/server.py b/src/prefect/server/api/server.py -index e5b64d527..ac64616ef 100644 ---- a/src/prefect/server/api/server.py -+++ b/src/prefect/server/api/server.py -@@ -250,8 +250,14 @@ def copy_directory(directory: str, path: str) -> None: - if os.path.exists(destination): - shutil.rmtree(destination) - shutil.copytree(source, destination, symlinks=True) -+ # ensure copied files are writeable -+ for root, dirs, files in os.walk(destination): -+ for f in files: -+ os.chmod(os.path.join(root, f), 0o600) - else: - shutil.copy2(source, destination) -+ # Ensure copied file is writeable -+ os.chmod(destination, 0o600) - - - async def custom_internal_exception_handler( --- -2.48.1 - diff --git a/pkgs/by-name/pr/prefect/package.nix b/pkgs/by-name/pr/prefect/package.nix index 78627cc832c3..793694c962bc 100644 --- a/pkgs/by-name/pr/prefect/package.nix +++ b/pkgs/by-name/pr/prefect/package.nix @@ -7,7 +7,7 @@ python3Packages.buildPythonApplication rec { pname = "prefect"; - version = "3.2.7"; + version = "3.2.13"; pyproject = true; # Trying to install from source is challenging @@ -16,13 +16,9 @@ python3Packages.buildPythonApplication rec { # Source will be missing sdist, uv.lock, ui artefacts ... src = fetchPypi { inherit pname version; - hash = "sha256-4kwGrKvDihBi6Gcvcf6ophNI6GGd+M4qR0nnu/AUK1Q="; + hash = "sha256-NJL3KTvSIzUX1JMa/Lfpx2UzsAgqjU/mbndnkG2evTA="; }; - patches = [ - ./make_ui_files_writeable_on_startup.patch - ]; - pythonRelaxDeps = [ "websockets" ]; @@ -32,61 +28,68 @@ python3Packages.buildPythonApplication rec { versioningit ]; - dependencies = with python3Packages; [ - aiosqlite - alembic - anyio - apprise - asgi-lifespan - asyncpg - cachetools - click - cloudpickle - coolname - cryptography - dateparser - docker - exceptiongroup - fastapi - fsspec - graphviz - griffe - httpcore - httpx - humanize - importlib-metadata - jinja2 - jinja2-humanize-extension - jsonpatch - jsonschema - opentelemetry-api - orjson - packaging - pathspec - pendulum - prometheus-client - pydantic - pydantic-core - pydantic-extra-types - pydantic-settings - python-dateutil - python-slugify - python-socks - pytz - pyyaml - readchar - rfc3339-validator - rich - ruamel-yaml - sniffio - sqlalchemy - toml - typer - typing-extensions - ujson - uvicorn - websockets - ]; + dependencies = + with python3Packages; + [ + aiosqlite + alembic + apprise + asyncpg + click + cryptography + dateparser + docker + graphviz + jinja2 + jinja2-humanize-extension + humanize + pytz + readchar + sqlalchemy + typer + # client dependencies + anyio + asgi-lifespan + cachetools + cloudpickle + coolname + exceptiongroup + fastapi + fsspec + # graphviz already included + griffe + httpcore + httpx + jsonpatch + jsonschema + opentelemetry-api + orjson + packaging + pathspec + pendulum + prometheus-client + pydantic + pydantic-core + pydantic-extra-types + pydantic-settings + python-dateutil + python-slugify + python-socks + pyyaml + rfc3339-validator + rich + ruamel-yaml + sniffio + toml + typing-extensions + ujson + uvicorn + websockets + uv + ] + ++ sqlalchemy.optional-dependencies.asyncio + ++ httpx.optional-dependencies.http2 + ++ python-socks.optional-dependencies.asyncio; optional-dependencies = with python3Packages; { aws = [