Unverified Commit a76ef519 authored by Gaétan Lepage's avatar Gaétan Lepage Committed by GitHub
Browse files

python313Packages.picologging: fix build; python313Packages.psycopg: 3.2.3 ->...

python313Packages.picologging: fix build; python313Packages.psycopg: 3.2.3 -> 3.2.4 ; litestar: build for all python version (#374977)
parents 5a272ec6 ab15e3b7
Loading
Loading
Loading
Loading
+1 −56
Original line number Diff line number Diff line
{
  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
+113 −0
Original line number Diff line number Diff line
{
  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";
  };
}
+7 −0
Original line number Diff line number Diff line
@@ -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
+94 −0
Original line number Diff line number Diff line
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 <anthony.p.shaw@gmail.com>
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.
+3 −3
Original line number Diff line number Diff line
@@ -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 = [
Loading