diff --git a/pkgs/by-name/li/litestar/package.nix b/pkgs/by-name/li/litestar/package.nix index 14d597236c96a..4f7c0e98b65dd 100644 --- a/pkgs/by-name/li/litestar/package.nix +++ b/pkgs/by-name/li/litestar/package.nix @@ -1,56 +1 @@ -{ - python3Packages, - lib, - fetchFromGitHub, -}: - -python3Packages.buildPythonApplication rec { - pname = "litestar"; - version = "2.13.0"; - pyproject = true; - - build-system = with python3Packages; [ - hatchling - ]; - - src = fetchFromGitHub { - owner = "litestar-org"; - repo = "litestar"; - tag = "v${version}"; - hash = "sha256-PR2DVNRtILHs7XwVi9/ZCVRJQFqfGLn1x2gpYtYjHDo="; - }; - - dependencies = with python3Packages; [ - anyio - click - redis - httpx - msgspec - multidict - jinja2 - pyyaml - rich - rich-click - typing-extensions - psutil - polyfactory - litestar-htmx - trio - cryptography - psycopg - fsspec - mako - time-machine - asyncpg - picologging - ]; - - meta = { - homepage = "https://litestar.dev/"; - platforms = lib.platforms.unix; - maintainers = with lib.maintainers; [ bot-wxt1221 ]; - changelog = "https://github.com/litestar-org/litestar/releases/tag/v${version}"; - description = "Production-ready, Light, Flexible and Extensible ASGI API framework"; - license = lib.licenses.mit; - }; -} +{ python3Packages }: with python3Packages; toPythonApplication litestar diff --git a/pkgs/development/python-modules/litestar/default.nix b/pkgs/development/python-modules/litestar/default.nix new file mode 100644 index 0000000000000..f6461d0fc6ca3 --- /dev/null +++ b/pkgs/development/python-modules/litestar/default.nix @@ -0,0 +1,113 @@ +{ + lib, + buildPythonPackage, + fetchFromGitHub, + + # build-system + hatchling, + + # dependencies + anyio, + asyncpg, + click, + cryptography, + fsspec, + httpx, + jinja2, + litestar-htmx, + mako, + msgspec, + multidict, + picologging, + polyfactory, + psutil, + psycopg, + pyyaml, + redis, + rich, + rich-click, + time-machine, + trio, + typing-extensions, + + # tests + pytestCheckHook, + pytest-lazy-fixtures, + pytest-xdist, + pytest-mock, + pytest-asyncio, + pytest-timeout, + pytest-rerunfailures, + versionCheckHook, +}: + +buildPythonPackage rec { + pname = "litestar"; + version = "2.13.0"; + pyproject = true; + + src = fetchFromGitHub { + owner = "litestar-org"; + repo = "litestar"; + tag = "v${version}"; + hash = "sha256-PR2DVNRtILHs7XwVi9/ZCVRJQFqfGLn1x2gpYtYjHDo="; + }; + + build-system = [ + hatchling + ]; + + dependencies = [ + anyio + asyncpg + click + cryptography + fsspec + httpx + jinja2 + litestar-htmx + mako + msgspec + multidict + picologging + polyfactory + psutil + psycopg + pyyaml + redis + rich + rich-click + time-machine + trio + typing-extensions + ]; + + nativeCheckInputs = [ + pytestCheckHook + pytest-lazy-fixtures + pytest-xdist + pytest-mock + pytest-asyncio + pytest-timeout + pytest-rerunfailures + versionCheckHook + ]; + versionCheckProgramArg = [ "version" ]; + + __darwinAllowLocalNetworking = true; + + pytestFlagsArray = [ + # Follow github CI + "docs/examples/" + ]; + + meta = { + homepage = "https://litestar.dev/"; + platforms = lib.platforms.unix; + maintainers = with lib.maintainers; [ bot-wxt1221 ]; + changelog = "https://github.com/litestar-org/litestar/releases/tag/v${version}"; + description = "Production-ready, Light, Flexible and Extensible ASGI API framework"; + license = lib.licenses.mit; + mainProgram = "litestar"; + }; +} diff --git a/pkgs/development/python-modules/picologging/default.nix b/pkgs/development/python-modules/picologging/default.nix index c5a3ac1782738..1ee2ae7943cff 100644 --- a/pkgs/development/python-modules/picologging/default.nix +++ b/pkgs/development/python-modules/picologging/default.nix @@ -25,6 +25,12 @@ buildPythonPackage rec { hash = "sha256-t75D7aNKAifzeCPwtyKp8LoiXtbbXspRFYnsI0gx+V4="; }; + patches = [ + # For python 313 + # https://github.com/microsoft/picologging/pull/212 + ./pr-212.patch + ]; + build-system = [ setuptools cmake @@ -37,6 +43,7 @@ buildPythonPackage rec { ]; dontUseCmakeConfigure = true; + __darwinAllowLocalNetworking = true; dependencies = [ flaky diff --git a/pkgs/development/python-modules/picologging/pr-212.patch b/pkgs/development/python-modules/picologging/pr-212.patch new file mode 100644 index 0000000000000..01498fcd74091 --- /dev/null +++ b/pkgs/development/python-modules/picologging/pr-212.patch @@ -0,0 +1,94 @@ +diff --git a/src/picologging/compat.hxx b/src/picologging/compat.hxx +index d3356da..be7a1fc 100644 +--- a/src/picologging/compat.hxx ++++ b/src/picologging/compat.hxx +@@ -88,4 +88,12 @@ static inline PyObject* _Py_XNewRef(PyObject *obj) + } + #endif + ++// For Python 3.13 and above, PyTime_t is now part of the public API ++#if PY_VERSION_HEX >= 0x030d0000 ++#define _PyTime_t PyTime_t ++#define _PyTime_AsSecondsDouble PyTime_AsSecondsDouble ++#define _PyTime_AsMilliseconds PyTime_AsMilliseconds ++#define _PyTime_ROUND_CEILING PyTime_ROUND_CEILING ++#endif ++ + #endif // COMPAT_H +\ No newline at end of file + +From fe313d8b3dcf0115e1be781e03b20673d3f51c3f Mon Sep 17 00:00:00 2001 +From: Anthony Shaw +Date: Sat, 14 Sep 2024 17:33:25 +1000 +Subject: [PATCH 2/2] Patch other changed APIs for pytime + +--- + pyproject.toml | 2 +- + src/picologging/compat.hxx | 2 -- + src/picologging/logrecord.cxx | 13 +++++++++++++ + 3 files changed, 14 insertions(+), 3 deletions(-) + +diff --git a/pyproject.toml b/pyproject.toml +index 33abe66..27628c9 100644 +--- a/pyproject.toml ++++ b/pyproject.toml +@@ -1,7 +1,7 @@ + [build-system] + requires = [ + "setuptools>=65.4.1", +- "scikit-build>=0.17.0", ++ "scikit-build>=0.18.0", + "cmake>=3.18", + "ninja", + ] +diff --git a/src/picologging/compat.hxx b/src/picologging/compat.hxx +index be7a1fc..7c6970d 100644 +--- a/src/picologging/compat.hxx ++++ b/src/picologging/compat.hxx +@@ -92,8 +92,6 @@ static inline PyObject* _Py_XNewRef(PyObject *obj) + #if PY_VERSION_HEX >= 0x030d0000 + #define _PyTime_t PyTime_t + #define _PyTime_AsSecondsDouble PyTime_AsSecondsDouble +-#define _PyTime_AsMilliseconds PyTime_AsMilliseconds +-#define _PyTime_ROUND_CEILING PyTime_ROUND_CEILING + #endif + + #endif // COMPAT_H +\ No newline at end of file +diff --git a/src/picologging/logrecord.cxx b/src/picologging/logrecord.cxx +index cec68c9..9f5cf86 100644 +--- a/src/picologging/logrecord.cxx ++++ b/src/picologging/logrecord.cxx +@@ -16,11 +16,19 @@ _PyFloat_FromPyTime(_PyTime_t t) + + _PyTime_t current_time() + { ++#if PY_VERSION_HEX >= 0x030d0000 ++ _PyTime_t t; ++ if (PyTime_Time(&t) < 0) { ++ return -1; ++ } ++ return t; ++#else + _PyTime_t t; + if (_PyTime_GetSystemClockWithInfo(&t, NULL) < 0) { + return -1; + } + return t; ++#endif + } + + PyObject* LogRecord_new(PyTypeObject* type, PyObject *initargs, PyObject *kwds) +@@ -162,7 +170,12 @@ LogRecord* LogRecord_create(LogRecord* self, PyObject* name, PyObject* msg, PyOb + } + + self->created = _PyTime_AsSecondsDouble(ctime); ++// msecs conversion isn't in 3.13 API ++#if PY_VERSION_HEX < 0x030d0000 + self->msecs = _PyTime_AsMilliseconds(ctime, _PyTime_ROUND_CEILING); ++#else ++ self->msecs = 0; ++#endif + self->relativeCreated = _PyFloat_FromPyTime((ctime - startTime) * 1000); + self->thread = PyThread_get_thread_ident(); // Only supported in Python 3.7+, if big demand for 3.6 patch this out for the old API. + // TODO #2 : See if there is a performant way to get the thread name. diff --git a/pkgs/development/python-modules/psycopg/default.nix b/pkgs/development/python-modules/psycopg/default.nix index b25dd7e325e5f..fb09ffcf3cc5c 100644 --- a/pkgs/development/python-modules/psycopg/default.nix +++ b/pkgs/development/python-modules/psycopg/default.nix @@ -35,13 +35,13 @@ let pname = "psycopg"; - version = "3.2.3"; + version = "3.2.4"; src = fetchFromGitHub { owner = "psycopg"; - repo = pname; + repo = "psycopg"; tag = version; - hash = "sha256-vcUZvQeD5MnEM02phk73I9dpf0Eug95V7Rspi0s6S2M="; + hash = "sha256-gicntSAEK5VO67M2gAGR6wSwKQwgnbHxVUoPpaAbaDk="; }; patches = [ diff --git a/pkgs/top-level/python-packages.nix b/pkgs/top-level/python-packages.nix index adb25a2e7497a..f2a890631fc72 100644 --- a/pkgs/top-level/python-packages.nix +++ b/pkgs/top-level/python-packages.nix @@ -7603,6 +7603,8 @@ self: super: with self; { litestar-htmx = callPackage ../development/python-modules/litestar-htmx { }; + litestar = callPackage ../development/python-modules/litestar { }; + littleutils = callPackage ../development/python-modules/littleutils { }; livelossplot = callPackage ../development/python-modules/livelossplot { };