diff --git a/pkgs/development/python-modules/jupysql/default.nix b/pkgs/development/python-modules/jupysql/default.nix index a7a43b3c7874..c9e255aba086 100644 --- a/pkgs/development/python-modules/jupysql/default.nix +++ b/pkgs/development/python-modules/jupysql/default.nix @@ -38,15 +38,15 @@ buildPythonPackage rec { pname = "jupysql"; - version = "0.38"; + version = "0.11.1"; pyproject = true; src = fetchFromGitHub { owner = "ploomber"; repo = "jupysql"; - tag = "v${version}"; - hash = "sha256-Z132bGkjXUNPIscIfIM8FKRO0Uc/z4Sl932CVN8f3lc="; + tag = version; + hash = "sha256-7wfKvKqDf8LlUiLoevNRxmq8x5wLheOgIeWz72oFcuw="; }; pythonRelaxDeps = [ "sqlalchemy" ]; @@ -62,7 +62,8 @@ buildPythonPackage rec { sqlalchemy sqlglot sqlparse - ]; + ] + ++ pyspark.optional-dependencies.connect; optional-dependencies.dev = [ duckdb @@ -128,10 +129,13 @@ buildPythonPackage rec { pythonImportsCheck = [ "sql" ]; + # python-update-script picks up an 11-year old 0.38 over the current version + passthru.skipBulkUpdate = true; + meta = { description = "Better SQL in Jupyter"; homepage = "https://github.com/ploomber/jupysql"; - changelog = "https://github.com/ploomber/jupysql/blob/${src.tag}/CHANGELOG.md"; + changelog = "https://github.com/ploomber/jupysql/blob/${version}/CHANGELOG.md"; license = lib.licenses.asl20; maintainers = with lib.maintainers; [ euxane ]; }; diff --git a/pkgs/development/python-modules/ploomber-core/default.nix b/pkgs/development/python-modules/ploomber-core/default.nix index 52907f3127d1..e5309fe2d953 100644 --- a/pkgs/development/python-modules/ploomber-core/default.nix +++ b/pkgs/development/python-modules/ploomber-core/default.nix @@ -6,10 +6,11 @@ pyyaml, posthog, pytestCheckHook, + pythonAtLeast, typing-extensions, }: -buildPythonPackage rec { +buildPythonPackage (finalAttrs: { pname = "ploomber-core"; version = "0.2.27"; pyproject = true; @@ -17,7 +18,7 @@ buildPythonPackage rec { src = fetchFromGitHub { owner = "ploomber"; repo = "core"; - tag = version; + tag = finalAttrs.version; hash = "sha256-/HlJxaxsGbZ1UIJNwDdzJLR4bey7bv/qsmFmVi8eWjQ="; }; @@ -36,13 +37,18 @@ buildPythonPackage rec { "exceptions" # requires stderr capture ]; + disabledTestPaths = lib.optionals (pythonAtLeast "3.14") [ + # Depends on pre-3.14 attribute access + "tests/test_config.py" + ]; + pythonImportsCheck = [ "ploomber_core" ]; meta = { description = "Core module shared across Ploomber projects"; homepage = "https://github.com/ploomber/core"; - changelog = "https://github.com/ploomber/core/blob/${src.tag}/CHANGELOG.md"; + changelog = "https://github.com/ploomber/core/blob/${finalAttrs.src.tag}/CHANGELOG.md"; license = lib.licenses.asl20; maintainers = with lib.maintainers; [ euxane ]; }; -} +}) diff --git a/pkgs/development/python-modules/ploomber-extension/default.nix b/pkgs/development/python-modules/ploomber-extension/default.nix deleted file mode 100644 index 4031e91d4a97..000000000000 --- a/pkgs/development/python-modules/ploomber-extension/default.nix +++ /dev/null @@ -1,52 +0,0 @@ -{ - lib, - stdenv, - buildPythonPackage, - fetchPypi, - hatchling, - hatch-jupyter-builder, - hatch-nodejs-version, - jupyterlab, - ploomber-core, - pytestCheckHook, - pytest-jupyter, -}: - -buildPythonPackage rec { - pname = "ploomber-extension"; - version = "0.1.1"; - pyproject = true; - - # using pypi archive which includes pre-built assets - src = fetchPypi { - pname = "ploomber_extension"; - inherit version; - hash = "sha256-wsldqLhJfOESH9aMMzz1Y/FXofHyfgrl81O95NePXSA="; - }; - - build-system = [ - hatchling - hatch-jupyter-builder - hatch-nodejs-version - jupyterlab - ]; - - dependencies = [ ploomber-core ]; - - nativeCheckInputs = [ - pytestCheckHook - pytest-jupyter - ]; - - # Tests fail on Darwin when sandboxed - doCheck = !stdenv.buildPlatform.isDarwin; - - pythonImportsCheck = [ "ploomber_extension" ]; - - meta = { - description = "Ploomber extension"; - homepage = "https://pypi.org/project/ploomber-extension"; - license = lib.licenses.bsd3; - maintainers = [ lib.maintainers.euxane ]; - }; -} diff --git a/pkgs/development/python-modules/pyspark/default.nix b/pkgs/development/python-modules/pyspark/default.nix index ebb7207be285..3ad86e432a60 100644 --- a/pkgs/development/python-modules/pyspark/default.nix +++ b/pkgs/development/python-modules/pyspark/default.nix @@ -2,30 +2,41 @@ lib, buildPythonPackage, fetchPypi, + + # build-system + setuptools, + + # dependencies + py4j, + + # optional-dependencies + googleapis-common-protos, + graphviz, + grpcio-status, + grpcio, numpy, pandas, - py4j, pyarrow, + zstandard, }: -buildPythonPackage rec { +buildPythonPackage (finalAttrs: { pname = "pyspark"; version = "4.1.1"; - format = "setuptools"; + pyproject = true; src = fetchPypi { - inherit pname version; + inherit (finalAttrs) pname version; hash = "sha256-d/eJhKqE++hlxxfdN7SZE7TlyX1272gk+TLxrvpmIew="; }; # pypandoc is broken with pandoc2, so we just lose docs. postPatch = '' sed -i "s/'pypandoc'//" setup.py - - substituteInPlace setup.py \ - --replace py4j== 'py4j>=' ''; + build-system = [ setuptools ]; + postFixup = '' # find_python_home.py has been wrapped as a shell script substituteInPlace $out/bin/find-spark-home \ @@ -37,13 +48,26 @@ buildPythonPackage rec { 'export PYTHONPATH="''${SPARK_HOME}/..:''${SPARK_HOME}/python/:$PYTHONPATH"' ''; - propagatedBuildInputs = [ py4j ]; + dependencies = [ py4j ]; optional-dependencies = { + connect = [ + pandas + pyarrow + grpcio + grpcio-status + googleapis-common-protos + zstandard + graphviz + ]; ml = [ numpy ]; mllib = [ numpy ]; + pandas_on_spark = [ + pandas + pyarrow + ]; + pipelines = finalAttrs.optional-dependencies.connect ++ finalAttrs.optional-dependencies.sql; sql = [ - numpy pandas pyarrow ]; @@ -62,6 +86,9 @@ buildPythonPackage rec { binaryBytecode ]; license = lib.licenses.asl20; - maintainers = with lib.maintainers; [ shlevy ]; + maintainers = with lib.maintainers; [ + sarahec + shlevy + ]; }; -} +}) diff --git a/pkgs/top-level/python-aliases.nix b/pkgs/top-level/python-aliases.nix index dc644c06733c..7d8a1c819270 100644 --- a/pkgs/top-level/python-aliases.nix +++ b/pkgs/top-level/python-aliases.nix @@ -342,6 +342,7 @@ mapAliases { pillow-avif-plugin = throw "'pillow-avif-plugin' has been removed because 'pillow' has native avif support since 11.3"; # added 2025-11-26 pizzapi = throw "pizzapi was removed because it no longer works"; # added 2025-12-03 pkuseg = throw "'pkuseg' has been removed because it was not supported on newer versions of Python"; # added 2026-01-20 + ploomber-extension = throw "'ploomber-extension' has been removed since the upstream repo was archived"; # added 2026-02-16 plumlightpad = throw "plumlightpad has been removed because the API was shut down"; # added 2025-11-04 Polygon3 = throw "'Polygon3' has been renamed to/replaced by 'polygon3'"; # Converted to throw 2025-10-29 posix_ipc = throw "'posix_ipc' has been renamed to/replaced by 'posix-ipc'"; # Converted to throw 2025-10-29 diff --git a/pkgs/top-level/python-packages.nix b/pkgs/top-level/python-packages.nix index b95b8347272f..9f2ad14298c3 100644 --- a/pkgs/top-level/python-packages.nix +++ b/pkgs/top-level/python-packages.nix @@ -12453,8 +12453,6 @@ self: super: with self; { ploomber-core = callPackage ../development/python-modules/ploomber-core { }; - ploomber-extension = callPackage ../development/python-modules/ploomber-extension { }; - plopp = callPackage ../development/python-modules/plopp { }; plotext = callPackage ../development/python-modules/plotext { };