From f893027829404769f6ecf28517c2857f9b23a2e0 Mon Sep 17 00:00:00 2001 From: Abhinav Date: Wed, 7 May 2025 15:41:50 +0200 Subject: [PATCH 1/9] update docker image and stage the build over existing image of our jupyterhub. --- jupyterhub/Dockerfile | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/jupyterhub/Dockerfile b/jupyterhub/Dockerfile index 70d3de3..7e49e7e 100644 --- a/jupyterhub/Dockerfile +++ b/jupyterhub/Dockerfile @@ -1,5 +1,8 @@ # Custom image, see README -FROM jupyter/custom +# usually we build the fresh image of jupyter custom from docker stacks repo but since we are just updating a package +# here we will build it on top of our existing jupyter image +# FROM jupyter/custom +FROM us-docker.pkg.dev/vgi-pn-277619/data-team/pubnative/jupyterhub:spark3.4.1-py3.11-hadoop3-openjdk11-scala2.12-build2.0.0 USER root WORKDIR /usr/local/ From b8926fba4e46ff1066338ebbb5261fb53820a563 Mon Sep 17 00:00:00 2001 From: Abhinav Date: Wed, 7 May 2025 15:42:34 +0200 Subject: [PATCH 2/9] update comments in jupyterhub make file --- jupyterhub/Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/jupyterhub/Makefile b/jupyterhub/Makefile index 46b4f43..4207f95 100644 --- a/jupyterhub/Makefile +++ b/jupyterhub/Makefile @@ -23,4 +23,4 @@ build: requirements publish: build docker push ${JUPYTERHUB} - @echo pushed ${JUPYTERHUB} to DockerHub + @echo pushed ${JUPYTERHUB} to Google Artifact Registry From 762412b000aaf7fc9fec61acb7813906bcce128f Mon Sep 17 00:00:00 2001 From: Abhinav Date: Wed, 7 May 2025 15:43:08 +0200 Subject: [PATCH 3/9] add xgboost to jupyterhub poetry env and update patch version --- jupyterhub/poetry.lock | 346 +++++--------------------------------- jupyterhub/pyproject.toml | 3 +- 2 files changed, 43 insertions(+), 306 deletions(-) diff --git a/jupyterhub/poetry.lock b/jupyterhub/poetry.lock index 0e0fec8..1f10fd5 100644 --- a/jupyterhub/poetry.lock +++ b/jupyterhub/poetry.lock @@ -433,27 +433,6 @@ files = [ {file = "charset_normalizer-3.3.2-py3-none-any.whl", hash = "sha256:3e4d1f6587322d2788836a99c69062fbb091331ec940e02d12d179c1d53e25fc"}, ] -[[package]] -name = "clarabel" -version = "0.6.0" -description = "Clarabel Conic Interior Point Solver for Rust / Python" -optional = false -python-versions = ">=3.7" -files = [ - {file = "clarabel-0.6.0-cp37-abi3-macosx_10_7_x86_64.whl", hash = "sha256:4f366de79b8bc66bef8dc170987840b672ccab9222e710c09536d78ef47f606d"}, - {file = "clarabel-0.6.0-cp37-abi3-macosx_10_9_x86_64.macosx_11_0_arm64.macosx_10_9_universal2.whl", hash = "sha256:edcebbfc14073cd32bfb664317fd2555716c96be8b2a54efdb2b728453582bea"}, - {file = "clarabel-0.6.0-cp37-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e737d2818b9ca10e92ccd3fa9ad1a805b039976016415a0c45adef3427d70792"}, - {file = "clarabel-0.6.0-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2e0b1891d8e507eb0bfc7e0b981584c388b2ab28658056e600997dbbc23f1ab4"}, - {file = "clarabel-0.6.0-cp37-abi3-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:9946d3b5db346421b6d839d868e7b1151b590f871344fe95113bfd55b5be2433"}, - {file = "clarabel-0.6.0-cp37-abi3-win32.whl", hash = "sha256:73ed408c975a8ea021c3d8262d5d023a18e1ac3f6bb59a37cd69a11dba8f86ed"}, - {file = "clarabel-0.6.0-cp37-abi3-win_amd64.whl", hash = "sha256:5a6be4df9fed98b6f73f034836def913a1ecd52e8b79ca230ddf7cd66ebcdee7"}, - {file = "clarabel-0.6.0.tar.gz", hash = "sha256:ef909a393e72981ca10b1d866d9cc7fb6295ece20ae035def764338894961184"}, -] - -[package.dependencies] -numpy = "*" -scipy = "*" - [[package]] name = "cloudpickle" version = "3.0.0" @@ -556,64 +535,6 @@ mypy = ["contourpy[bokeh,docs]", "docutils-stubs", "mypy (==1.6.1)", "types-Pill test = ["Pillow", "contourpy[test-no-images]", "matplotlib"] test-no-images = ["pytest", "pytest-cov", "pytest-xdist", "wurlitzer"] -[[package]] -name = "cvxpy" -version = "1.4.1" -description = "A domain-specific language for modeling convex optimization problems in Python." -optional = false -python-versions = ">=3.8" -files = [ - {file = "cvxpy-1.4.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:03588055b660c043848f5281fe24dbd21f005b34bd8bd3b56906d8ad457c14ae"}, - {file = "cvxpy-1.4.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:315609ff96adeda4970471b349bc19d44ff4043e15630cf5ac70c029658fe8fc"}, - {file = "cvxpy-1.4.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:55e08ffb973d62b3fabc675ad464cb6013ea5ce69799f330b33a084a2e580d8d"}, - {file = "cvxpy-1.4.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0f1482558b785f2db51c76b9c6e91cc85dbd146675b126a799e7d7aab5b15354"}, - {file = "cvxpy-1.4.1-cp310-cp310-win_amd64.whl", hash = "sha256:2f84687d15d11f9b49ca902f20103a2076efd47773c399cace71237ef53cdadc"}, - {file = "cvxpy-1.4.1-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:d6bfbd535fdaabc5fa55f28de7a1d40f3a803a27fe3fec86e90700fa159a3afc"}, - {file = "cvxpy-1.4.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:71a95aaccf22431fd25a63bcb12d583e1b0baeaeb4fafa3e25857cec03b9e2f3"}, - {file = "cvxpy-1.4.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9d3bae3bf31e4eb6ed6407f78c6bc3c7bc4b4145cdbbb9ba8c61c3fc541d7067"}, - {file = "cvxpy-1.4.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:41cfaecf86f85162ca53c7be7377b4143e316204fb9b6a7df8b7a08c826e3806"}, - {file = "cvxpy-1.4.1-cp311-cp311-win_amd64.whl", hash = "sha256:edf66010e49b64d3f2dd1a7abde8fa3e615ce7a2b3eb185ab744b0beb3a6adb9"}, - {file = "cvxpy-1.4.1-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:6b0f17dca85b2a410e73f5d84b28f35f57a20cfec1b0adc9b16f0f8aabff9961"}, - {file = "cvxpy-1.4.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:9318c4e679b3db470e76e7f23cce362b038bd2d68c4a7326a7c21577ddbdc542"}, - {file = "cvxpy-1.4.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7a46ef722c8d1590875e86360d5781703dfcbd08be73eb98a2fc91a280870064"}, - {file = "cvxpy-1.4.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:57593a852c563ce77bdb075a3e75f23d36d4b3162ebf3199b54cc7fe75088ef2"}, - {file = "cvxpy-1.4.1-cp38-cp38-win_amd64.whl", hash = "sha256:db89b55025514bad821b1f1781bed373cbb6aa22fe84420431efd510dbe7f858"}, - {file = "cvxpy-1.4.1-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:372c0825cc6e6bb03ecc550d83718761a1bbdbbb48010fec6f9718581ebd45b5"}, - {file = "cvxpy-1.4.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:163caffd7f7f27b6cb151f4ccff283068e063c3673158793048761690cbe4bbe"}, - {file = "cvxpy-1.4.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f24067c54979b09910aea0a03256247121d8a8169538facf087c1923e9e2701a"}, - {file = "cvxpy-1.4.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5a3ec054279880a9ebf5fd9d2ac4109acf944b8c45ea8b24e461680e34f3d7b5"}, - {file = "cvxpy-1.4.1-cp39-cp39-win_amd64.whl", hash = "sha256:d220a7ee55907da9b55b98e5238d03735118d03b82855ba87b872cb2e6977367"}, - {file = "cvxpy-1.4.1.tar.gz", hash = "sha256:7a9ef34e3c57ff8c844d86f0a3834fb5575af19233947639de0ba577c6122e3e"}, -] - -[package.dependencies] -clarabel = ">=0.5.0" -ecos = ">=2" -numpy = ">=1.15" -osqp = ">=0.6.2" -pybind11 = "*" -scipy = ">=1.1.0" -scs = ">=3.0" - -[package.extras] -cbc = ["cylp (>=0.91.5)"] -clarabel = ["clarabel"] -cvxopt = ["cvxopt"] -diffcp = ["diffcp"] -glop = ["ortools (>=9.5,<9.8)"] -glpk = ["cvxopt"] -glpk-mi = ["cvxopt"] -gurobi = ["gurobipy"] -highs = ["scipy (>=1.6.1)"] -mosek = ["Mosek"] -pdlp = ["ortools (>=9.5,<9.8)"] -piqp = ["piqp"] -proxqp = ["proxsuite"] -scip = ["PySCIPOpt"] -scipy = ["scipy"] -scs = ["setuptools (>65.5.1)"] -xpress = ["xpress"] - [[package]] name = "cycler" version = "0.12.1" @@ -716,35 +637,6 @@ files = [ {file = "dm_tree-0.1.8-cp39-cp39-win_amd64.whl", hash = "sha256:8ed3564abed97c806db122c2d3e1a2b64c74a63debe9903aad795167cc301368"}, ] -[[package]] -name = "ecos" -version = "2.0.12" -description = "This is the Python package for ECOS: Embedded Cone Solver. See Github page for more information." -optional = false -python-versions = "*" -files = [ - {file = "ecos-2.0.12-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:835298a299c88c207b3402fba60ad9b5688b59bbbf2ac34a46de5b37165d773a"}, - {file = "ecos-2.0.12-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:608bc822ee8e070927ab3519169b13a1a0fe88f3d562212d6b5dbb1039776360"}, - {file = "ecos-2.0.12-cp310-cp310-win_amd64.whl", hash = "sha256:5184a9d8521ad1af90ffcd9902a6fa75c7bc473f37d30d86f97beda1033dfca2"}, - {file = "ecos-2.0.12-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:eba07599084724eedc20b2862d5580eebebb09609f4740baadc78401cb99827c"}, - {file = "ecos-2.0.12-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4979dc2d1cb6667e371a45a61887068505c1305437eef104ed6ef16f4b6aa0e3"}, - {file = "ecos-2.0.12-cp311-cp311-win_amd64.whl", hash = "sha256:da8fbbca3feb83a9e27075d29b3765417d0c80af8ea83cbdc4a558cae7b564af"}, - {file = "ecos-2.0.12-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:f70e4547966f530fd7715756f7a65d5b9b90b312b9d37f243ef9356c05e7d74c"}, - {file = "ecos-2.0.12-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:617be25d74222849622b0f82b94a11abcf1fae78ccaf69977b328321ee6ffa0b"}, - {file = "ecos-2.0.12-cp37-cp37m-win_amd64.whl", hash = "sha256:29d00164eaea66ed54697a3b361c575284a8bca54f2623381a0635806c7303a7"}, - {file = "ecos-2.0.12-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:4e86671397d1d2cd7cccff8a9c45be0541b0c60af8b92a0ff3581c9ed869db67"}, - {file = "ecos-2.0.12-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:858a4dd3177bdc8cc6e362031732f5177b62138a1e4ef91c0dc3c6bd7d2d1248"}, - {file = "ecos-2.0.12-cp38-cp38-win_amd64.whl", hash = "sha256:528b02f53835bd1baeb2e23f8153b8d6cc2b3704e1768be6a1a972f542241670"}, - {file = "ecos-2.0.12-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:3e42bd4c19af6e04f76ccc85d941b1f1adc7faeee4d06d482395a6beb7bec895"}, - {file = "ecos-2.0.12-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6def54336a15b5a49bc3bfcaa36035e8557cae8a4853b17ca84f5a29c93bcaea"}, - {file = "ecos-2.0.12-cp39-cp39-win_amd64.whl", hash = "sha256:7af08941552fce108bd80145cdb6be7fa74477a20bacdac170800442cc7027d4"}, - {file = "ecos-2.0.12.tar.gz", hash = "sha256:f48816d73b87ae325556ea537b7c8743187311403c80e3832035224156337c4e"}, -] - -[package.dependencies] -numpy = ">=1.6" -scipy = ">=0.9" - [[package]] name = "flatbuffers" version = "23.5.26" @@ -2278,6 +2170,17 @@ files = [ {file = "numpy-1.26.3.tar.gz", hash = "sha256:697df43e2b6310ecc9d95f05d5ef20eacc09c7c4ecc9da3f235d39e71b7da1e4"}, ] +[[package]] +name = "nvidia-nccl-cu12" +version = "2.26.5" +description = "NVIDIA Collective Communication Library (NCCL) Runtime" +optional = false +python-versions = ">=3" +files = [ + {file = "nvidia_nccl_cu12-2.26.5-py3-none-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:adb1bf4adcc5a47f597738a0700da6aef61f8ea4251b375540ae138c7d239588"}, + {file = "nvidia_nccl_cu12-2.26.5-py3-none-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:ea5ed3e053c735f16809bee7111deac62ac35b10128a8c102960a0462ce16cbe"}, +] + [[package]] name = "oauthlib" version = "3.2.2" @@ -2312,29 +2215,6 @@ numpy = ">=1.7" docs = ["numpydoc", "sphinx (==1.2.3)", "sphinx-rtd-theme", "sphinxcontrib-napoleon"] tests = ["pytest", "pytest-cov", "pytest-pep8"] -[[package]] -name = "optbinning" -version = "0.18.0" -description = "OptBinning: The Python Optimal Binning library" -optional = false -python-versions = ">=3.7" -files = [ - {file = "optbinning-0.18.0-py3-none-any.whl", hash = "sha256:9adf279051ac336ba81d2af456c26208e30d72fbc0c46b2df3fc43edad6d4745"}, - {file = "optbinning-0.18.0.tar.gz", hash = "sha256:0c05924c45a22a8f169f72da2371154d6d73e21e7576248272f9c9a63c7a04ab"}, -] - -[package.dependencies] -matplotlib = "*" -numpy = ">=1.16.1" -ortools = ">=9.4" -pandas = "*" -ropwr = ">=1.0.0" -scikit-learn = ">=1.0.2" -scipy = ">=1.6.0" - -[package.extras] -distributed = ["pympler", "tdigest"] - [[package]] name = "optuna" version = "3.5.0" @@ -2363,83 +2243,6 @@ integration = ["botorch (>=0.4.0)", "catboost (>=0.26)", "catboost (>=0.26,<1.2) optional = ["boto3", "botorch", "cmaes (>=0.10.0)", "google-cloud-storage", "matplotlib (!=3.6.0)", "pandas", "plotly (>=4.9.0)", "redis", "scikit-learn (>=0.24.2)"] test = ["coverage", "fakeredis[lua]", "kaleido", "moto", "pytest", "scipy (>=1.9.2)"] -[[package]] -name = "ortools" -version = "9.6.2534" -description = "Google OR-Tools python libraries and modules" -optional = false -python-versions = ">= 3.6" -files = [ - {file = "ortools-9.6.2534-cp310-cp310-macosx_10_15_x86_64.whl", hash = "sha256:b2ed0a0d8691351905dbcef0246342a67c47f3b5d0401de12093fbd1b7554568"}, - {file = "ortools-9.6.2534-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:05f0fab30582d183f5df86da8aa714327b488a1c51095aa8e58f1f57be58ecfe"}, - {file = "ortools-9.6.2534-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ac7b95238571048e564502327a4c81300fa1225a7343d39ebd177502a3060ae4"}, - {file = "ortools-9.6.2534-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:43e24847a089adf5e79b4dd26845f84d08b66013121123b2f9f5f90e452163bc"}, - {file = "ortools-9.6.2534-cp310-cp310-win_amd64.whl", hash = "sha256:25b4ad1e7c8fe58da27e14e0fc4a16b5c835cb00870a298f2e41d7d0eb13ab10"}, - {file = "ortools-9.6.2534-cp311-cp311-macosx_10_15_x86_64.whl", hash = "sha256:f4cdafb26f8ce9fc3149cb28c25bf84fa22bba807f91d938e0e68efe549a53c3"}, - {file = "ortools-9.6.2534-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:03b97413617fb7b288fa08f248c0e6d77e569da4f3a5f0a09e399d57faa6fbe6"}, - {file = "ortools-9.6.2534-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:886c2b7bfac12468f24486525acfc6e78a8a374d61916f50b15598bcf82daa0a"}, - {file = "ortools-9.6.2534-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7d421138d4e4761324b3e2a7f4575969879e7c01d777fe554b616144eb743967"}, - {file = "ortools-9.6.2534-cp311-cp311-win_amd64.whl", hash = "sha256:fa65adff97e356acbf20a5c068595cfa247182621bb83671daa98359265f9927"}, - {file = "ortools-9.6.2534-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cdb44dcd6fa66dad0fe4f2915700abb0f3ebb101983ad17e45098370f5d095ab"}, - {file = "ortools-9.6.2534-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:eab4e658543d976936fbe4f79b87d6e1d66598ba6f6e2bca3e1a1471f897b072"}, - {file = "ortools-9.6.2534-cp37-cp37m-win_amd64.whl", hash = "sha256:0fe800f9823b342bf32917f9c7d770943eeac90641c24eeedd15eff600ae7aa8"}, - {file = "ortools-9.6.2534-cp38-cp38-macosx_10_15_x86_64.whl", hash = "sha256:f961272381015c4d804c3077c19b5d80e64d7f69d8646e525fb27ed61afbacc9"}, - {file = "ortools-9.6.2534-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:19e43ff44331f4c2a4a5a886632ebe735c906acf6938aaac2813b37de806c948"}, - {file = "ortools-9.6.2534-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:79479aec12c434af9cbe3f792e50fff6e84c1974bd7ee89c8148eea9459df064"}, - {file = "ortools-9.6.2534-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9661d68d3097f20ee7e789bbc0f7112d4afbd676a8a5dd94bbeda7002e22089a"}, - {file = "ortools-9.6.2534-cp38-cp38-win_amd64.whl", hash = "sha256:36ccc3e31af37ba767bdd0e08c5361f679e2cd2e61e25eab103dca8490a9dd54"}, - {file = "ortools-9.6.2534-cp39-cp39-macosx_10_15_x86_64.whl", hash = "sha256:76a27a0eb56e63a6981783e1e366725e8df684f126943c22960c86cfabc94697"}, - {file = "ortools-9.6.2534-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:6bd17ea2c3bd58387a1fbc6bfa726e78dc6967ab8c798f56a12d9b6ebb37a1f9"}, - {file = "ortools-9.6.2534-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f62ece1909940a096e98544b552825335e34e8356b67fae972bc74609dd19c3d"}, - {file = "ortools-9.6.2534-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:67159c5523c78900479979d9629f867d1f4fbe293b339aa84c6965019ae52210"}, - {file = "ortools-9.6.2534-cp39-cp39-win_amd64.whl", hash = "sha256:eb2c83163abf72cf74f17117dcc53a93004d3d35636c2511278349f7920d8c8d"}, -] - -[package.dependencies] -absl-py = ">=0.13" -numpy = ">=1.13.3" -protobuf = ">=4.21.12" -scipy = ">=1.10.0" - -[[package]] -name = "osqp" -version = "0.6.3" -description = "OSQP: The Operator Splitting QP Solver" -optional = false -python-versions = "*" -files = [ - {file = "osqp-0.6.3-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:e6b7d923c836f1d07115057e595245ccc1694ecae730a1affda78fc6f3c8d239"}, - {file = "osqp-0.6.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e1dfda08c38c3521012740a73ef782f97dfc54a41deae4b0bc4afd18d0e74da0"}, - {file = "osqp-0.6.3-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7eafa3f3e82dd36c52f3f4ef19a95142405c807c272c4b53c5971c53535d7804"}, - {file = "osqp-0.6.3-cp310-cp310-win_amd64.whl", hash = "sha256:3cbb6efdaffb7387dc0037dfe3259d4803e5ad7217e6f20fb605c92953214b9d"}, - {file = "osqp-0.6.3-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:1b2049b2c42565dcaa63ddca1c4028b1fb20aab141453f5d77e8ff5b1a99a2cf"}, - {file = "osqp-0.6.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:146b89f2cfbf59eaeb2c47e3a312f2034138df78d80ce052364810dc0ef70fc4"}, - {file = "osqp-0.6.3-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0084e3d733c75687d68bc133bc380ce471dfe6f7724af2718a43491782eec8d6"}, - {file = "osqp-0.6.3-cp311-cp311-win_amd64.whl", hash = "sha256:1b573fe1cd0e82239a279c58817c1d365187ef862e928b2b9c828c3c516ad3c2"}, - {file = "osqp-0.6.3-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:6c3951ef505177b858c6cd34de980346014cae3d2234c93db960b12c5885f9a2"}, - {file = "osqp-0.6.3-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:dc18f87c9549032c163ce590a5e32079df94ee656c8fb357ba607aa9d78fab81"}, - {file = "osqp-0.6.3-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c07b1a4b538aab629b0fae69f644b7e76f81f94d65230014d482e296dacd046b"}, - {file = "osqp-0.6.3-cp36-cp36m-win_amd64.whl", hash = "sha256:60abec3593870990b16f00bd5017096a7091fb00b68d0db3383fc048ca8e55c9"}, - {file = "osqp-0.6.3-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:b73bdd9589901841af83c5ed6a4092b4fac5a0beff9e32682d8526d1f16a728c"}, - {file = "osqp-0.6.3-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:71d9f611823af4a8b241c86805920e5382cd65c7f94fd3615b4eef999ed94c7c"}, - {file = "osqp-0.6.3-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:30fbc3b3c028c06a6c5f1e66be7b7106ad48a29e0dc5bd82393f82dd68235ef8"}, - {file = "osqp-0.6.3-cp37-cp37m-win_amd64.whl", hash = "sha256:fe57e4bde071b388518ecb068f26319506dd9cb107363d3d80c12d2e59fc1e81"}, - {file = "osqp-0.6.3-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:41f304d1d7f91af07d8f0b01e5af29ec3bb8824f0102c7fd8b13b497be120da4"}, - {file = "osqp-0.6.3-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ea7d8c92bcdf4fef98d777f13d39060d425ef2e8778ed487c96a6fa10848cdea"}, - {file = "osqp-0.6.3-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3f3a3c6d2708868e5e3fe2da300d6523cbf68a3d8734ce9c5043db37391969f5"}, - {file = "osqp-0.6.3-cp38-cp38-win_amd64.whl", hash = "sha256:1c548a0b3691850e7e22f3624a128d8af33416d70a9b5976a47d4d832028dcd8"}, - {file = "osqp-0.6.3-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:387e7abd737dfe32c9ec00ad74af25328cdd0d0f634d79530655c040a5cb9590"}, - {file = "osqp-0.6.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e1445e10a94e01698e13c87a7debf6ac1a15f3acd1f8f6340cb1ad945db4732b"}, - {file = "osqp-0.6.3-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0441c10f7fe5f46692a9b44a57138977bb112ae3f8127151671968c5d9ec5dbb"}, - {file = "osqp-0.6.3-cp39-cp39-win_amd64.whl", hash = "sha256:b15e65a307fbbabf60248bb9bc204e61d5d4ae64e00427a69e2dad9622f4c29d"}, - {file = "osqp-0.6.3.tar.gz", hash = "sha256:03e460e683ec2ce0f839353ddfa3c4c8ffa509ab8cf6a2b2afbb586fa453e180"}, -] - -[package.dependencies] -numpy = ">=1.7" -qdldl = "*" -scipy = ">=0.13.2" - [[package]] name = "packaging" version = "23.2" @@ -2859,20 +2662,6 @@ files = [ [package.dependencies] pyasn1 = ">=0.4.6,<0.6.0" -[[package]] -name = "pybind11" -version = "2.11.1" -description = "Seamless operability between C++11 and Python" -optional = false -python-versions = ">=3.6" -files = [ - {file = "pybind11-2.11.1-py3-none-any.whl", hash = "sha256:33cdd02a6453380dd71cc70357ce388ad1ee8d32bd0e38fc22b273d050aa29b3"}, - {file = "pybind11-2.11.1.tar.gz", hash = "sha256:00cd59116a6e8155aecd9174f37ba299d1d397ed4a6b86ac1dfe01b3e40f2cc4"}, -] - -[package.extras] -global = ["pybind11-global (==2.11.1)"] - [[package]] name = "pydantic" version = "2.5.3" @@ -3154,38 +2943,6 @@ files = [ {file = "PyYAML-6.0.1.tar.gz", hash = "sha256:bfdf460b1736c775f2ba9f6a92bca30bc2095067b8a9d77876d1fad6cc3b4a43"}, ] -[[package]] -name = "qdldl" -version = "0.1.7.post0" -description = "QDLDL, a free LDL factorization routine." -optional = false -python-versions = "*" -files = [ - {file = "qdldl-0.1.7.post0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:8ab02e8b9ff86bd644a1935718387c82fbe04c31e3309cf9f7a121d02b1deda8"}, - {file = "qdldl-0.1.7.post0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:40e5d6753310377451ed4dc09b1ef28faf40108b713e7f55c8a8ae94d679a672"}, - {file = "qdldl-0.1.7.post0-cp310-cp310-win_amd64.whl", hash = "sha256:718d8e141832e96ba71ca1807a74813836c6403110faaa3d33a67de1af3b29c4"}, - {file = "qdldl-0.1.7.post0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:0e3f06e8a49ddd834b24fc3d7afbba4fec0923101045aa2666e18d2a9980e329"}, - {file = "qdldl-0.1.7.post0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3a81c46522dd6b3042e2348fa98128bb5c0e466f42bce214e80cfb766ff40930"}, - {file = "qdldl-0.1.7.post0-cp311-cp311-win_amd64.whl", hash = "sha256:4a86155f3de66c5db0e21544b7a2421c671028fa20da407686d2a8d0e9b57e51"}, - {file = "qdldl-0.1.7.post0-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:717cb1892b033c01a0aae84ededcfa1f05bcb97013095d779c497e6c32f90dac"}, - {file = "qdldl-0.1.7.post0-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8fc35432913085d94b2327242cf51388467ef7a37ac0d71eb31b594b575dd498"}, - {file = "qdldl-0.1.7.post0-cp36-cp36m-win_amd64.whl", hash = "sha256:fd5cfd8c50f33ddacb830594a63b8c1093a24aea45312b9d2ed826cea5ece08a"}, - {file = "qdldl-0.1.7.post0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:981ca8672e9506976c663552c1eb6f6daf9726d62650b3bf5900260946156166"}, - {file = "qdldl-0.1.7.post0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b8ec670d97cf756f9159dc0a11de5cf054e88aefe84bea1c7282f00334642843"}, - {file = "qdldl-0.1.7.post0-cp37-cp37m-win_amd64.whl", hash = "sha256:aa208703b44337a7e77f6f2663f7a452144becb4421970d534ff8297b92e1e10"}, - {file = "qdldl-0.1.7.post0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:b42649484f7c0d8ee659224ecaac0a3e97f12531018207f4d7323e4071320eb1"}, - {file = "qdldl-0.1.7.post0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:26aa3d6f0da7779265d72e8f418094003e75fa53c515a53bc03fd8b9bcfbf7de"}, - {file = "qdldl-0.1.7.post0-cp38-cp38-win_amd64.whl", hash = "sha256:e55bcd6962178029faf543addd49db145302dd51e19855fefa71b5fd55840eea"}, - {file = "qdldl-0.1.7.post0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:c1dd0e570e65aaf35e10b7fb345f7ac763fd05a2227b9c06ce65e07993fc4984"}, - {file = "qdldl-0.1.7.post0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ae161342529852b6248ace4642bc4ee371a7c1e0707b7bc43a43ef7e73c06ca3"}, - {file = "qdldl-0.1.7.post0-cp39-cp39-win_amd64.whl", hash = "sha256:092f6606690a2b9bd3c939f3147887e02de13bb068fbed5ffdc7459034def623"}, - {file = "qdldl-0.1.7.post0.tar.gz", hash = "sha256:f346a114c8342ee6d4dbd6471eef314199fb268d3bf7b95885ca351fde2b023f"}, -] - -[package.dependencies] -numpy = ">=1.7" -scipy = ">=0.13.2" - [[package]] name = "referencing" version = "0.32.1" @@ -3240,23 +2997,6 @@ requests = ">=2.0.0" [package.extras] rsa = ["oauthlib[signedtoken] (>=3.0.0)"] -[[package]] -name = "ropwr" -version = "1.0.0" -description = "RoPWR: Robust Piecewise Regression" -optional = false -python-versions = ">=3.7" -files = [ - {file = "ropwr-1.0.0-py3-none-any.whl", hash = "sha256:7ecedd09e513e7fc2ef15b2c236fd25248ce73b0fb7642b9fab6c68d05749de5"}, - {file = "ropwr-1.0.0.tar.gz", hash = "sha256:723981924e57d0601a753a25d3d5d925da7c43d169d55f400cb00970b73e3605"}, -] - -[package.dependencies] -cvxpy = ">=1.1.14" -numpy = ">=1.16" -scikit-learn = ">=0.22" -scipy = ">=1.6.1" - [[package]] name = "rpds-py" version = "0.17.1" @@ -3488,39 +3228,6 @@ dev = ["click", "cython-lint (>=0.12.2)", "doit (>=0.36.0)", "mypy", "pycodestyl doc = ["jupytext", "matplotlib (>2)", "myst-nb", "numpydoc", "pooch", "pydata-sphinx-theme (==0.9.0)", "sphinx (!=4.1.0)", "sphinx-design (>=0.2.0)"] test = ["asv", "gmpy2", "mpmath", "pooch", "pytest", "pytest-cov", "pytest-timeout", "pytest-xdist", "scikit-umfpack", "threadpoolctl"] -[[package]] -name = "scs" -version = "3.2.4.post1" -description = "Splitting conic solver" -optional = false -python-versions = ">=3.7" -files = [ - {file = "scs-3.2.4.post1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:51fed30d2a4a1e6fbfc1e52b4cb3adeecbe89d7c47f3539b49afbb852415fe19"}, - {file = "scs-3.2.4.post1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:eb0524c0b9c3ed0d65dae161475accf3efa8e170938eb93251a60e9709b156ee"}, - {file = "scs-3.2.4.post1-cp310-cp310-win_amd64.whl", hash = "sha256:534519819eea96f18902a9fce15c4ec562b99d23b38dc843a48cb137b5641613"}, - {file = "scs-3.2.4.post1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:8d04ee4d19ac6d0f5053663bc48fcd5c5faed534272f13b10a4e173c814eea69"}, - {file = "scs-3.2.4.post1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:37c23b4299ab77ff5f654573d5667dc982292a8ef2b979053b38c40663919f13"}, - {file = "scs-3.2.4.post1-cp311-cp311-win_amd64.whl", hash = "sha256:ae4624938d3e3a8b7e508029275c6ad7a978fd48c158d0818f69f4ae764bf945"}, - {file = "scs-3.2.4.post1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:40294e22bfe509bdf7fd65a6b77c38cec22dcb3567ff5a75f3c41a1faf2ef1d5"}, - {file = "scs-3.2.4.post1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2a2337acb0604770b6df1473254065a51c210ff9c82fc7c4490595510287a337"}, - {file = "scs-3.2.4.post1-cp312-cp312-win_amd64.whl", hash = "sha256:8689e75a57e59846e65d1c4b9d57e9964b00fcbb8e67fc77f98cf6e0a0530abd"}, - {file = "scs-3.2.4.post1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:ad991b00d0a87c85db57bf2f1863c21bdc4e2f13837f6c35e809f5936bc6f165"}, - {file = "scs-3.2.4.post1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a28af160a44268e726a59d6cf340629b82940c1a643c4c87fe777e9cbe550d75"}, - {file = "scs-3.2.4.post1-cp37-cp37m-win_amd64.whl", hash = "sha256:f6283f725f3fee63d4631c2532d01a5b2ea65883b04d3da3be06084b1c60171b"}, - {file = "scs-3.2.4.post1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:8b3a622cf2120ae765f0f3ad5c6f4f86796d317e29132bab2ad4af3c14d9bf4d"}, - {file = "scs-3.2.4.post1-cp38-cp38-macosx_12_0_x86_64.whl", hash = "sha256:4b5259137c263304effa2b28d0125437ac23569e6e7753c115ae1206ec5033fd"}, - {file = "scs-3.2.4.post1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:424710bc19b0506feee7e05e6d2b7af98acf09af5bd5353126164cbd46ac923f"}, - {file = "scs-3.2.4.post1-cp38-cp38-win_amd64.whl", hash = "sha256:e21bdc8046648846e2c204a6c5cf24eaaedd2b8f5e0a2ab41a647b0247b8d592"}, - {file = "scs-3.2.4.post1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:cea0f7e9473f43f7edf1641d020ead7e39653a81c540fbdba8f3b7b8480038c9"}, - {file = "scs-3.2.4.post1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f6126f1d7ed5ff368cb8c1836715b17a50074314579eefc6d511995a3ab93d70"}, - {file = "scs-3.2.4.post1-cp39-cp39-win_amd64.whl", hash = "sha256:18788befa5284bb1f49149bac7f813703de60ef5b6bf7698a9f1c3a5a49b78e4"}, - {file = "scs-3.2.4.post1.tar.gz", hash = "sha256:7015d7a56d1d5b53264fd277289ea169949309e26101677ff88cd0e5030d032f"}, -] - -[package.dependencies] -numpy = "*" -scipy = "*" - [[package]] name = "setuptools" version = "69.0.3" @@ -4042,6 +3749,35 @@ io = ["cftime", "fsspec", "h5netcdf", "netCDF4", "pooch", "pydap", "scipy", "zar parallel = ["dask[complete]"] viz = ["matplotlib", "nc-time-axis", "seaborn"] +[[package]] +name = "xgboost" +version = "3.0.0" +description = "XGBoost Python Package" +optional = false +python-versions = ">=3.10" +files = [ + {file = "xgboost-3.0.0-py3-none-macosx_10_15_x86_64.whl", hash = "sha256:ed8cffd7998bd9431c3b0287a70bec8e45c09b43c9474d9dfd261627713bd890"}, + {file = "xgboost-3.0.0-py3-none-macosx_12_0_arm64.whl", hash = "sha256:314104bd3a1426a40f0c9662eef40e9ab22eb7a8068a42a8d198ce40412db75c"}, + {file = "xgboost-3.0.0-py3-none-manylinux2014_aarch64.whl", hash = "sha256:72c3405e8dfc37048f9fe339a058fa12b9f0f03bc31d3e56f0887eed2ed2baa1"}, + {file = "xgboost-3.0.0-py3-none-manylinux2014_x86_64.whl", hash = "sha256:72d39e74649e9b628c4221111aa6a8caa860f2e853b25480424403ee61085126"}, + {file = "xgboost-3.0.0-py3-none-manylinux_2_28_aarch64.whl", hash = "sha256:7bdee5787f86b83bebd75e2c96caf854760788e5f4203d063da50db5bf0efc5f"}, + {file = "xgboost-3.0.0-py3-none-manylinux_2_28_x86_64.whl", hash = "sha256:61c7e391e373b8a5312503525c0689f83ef1912a1236377022865ab340f465a4"}, + {file = "xgboost-3.0.0-py3-none-win_amd64.whl", hash = "sha256:0ea74e97f95b1eddfd27a46b7f22f72ec5a5322e1dc7cb41c9c23fb580763df9"}, + {file = "xgboost-3.0.0.tar.gz", hash = "sha256:45e95416df6f6f01d9a62e60cf09fc57e5ee34697f3858337c796fac9ce3b9ed"}, +] + +[package.dependencies] +numpy = "*" +nvidia-nccl-cu12 = {version = "*", markers = "platform_system == \"Linux\" and platform_machine != \"aarch64\""} +scipy = "*" + +[package.extras] +dask = ["dask", "distributed", "pandas"] +pandas = ["pandas (>=1.2)"] +plotting = ["graphviz", "matplotlib"] +pyspark = ["cloudpickle", "pyspark", "scikit-learn"] +scikit-learn = ["scikit-learn"] + [[package]] name = "yarl" version = "1.9.4" @@ -4148,4 +3884,4 @@ multidict = ">=4.0" [metadata] lock-version = "2.0" python-versions = ">=3.11,<3.12" -content-hash = "3a2ee6dbc0ee725a523d9baa7dede0a194cdada5b1a169873ca2471b8b9f1a15" +content-hash = "18673fa30afeea35ab6e166d0272595194e6e6c0ae521cfd9ae8b6627d71eb53" diff --git a/jupyterhub/pyproject.toml b/jupyterhub/pyproject.toml index 072baae..e92d945 100644 --- a/jupyterhub/pyproject.toml +++ b/jupyterhub/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "jupyterhub" -version = "2.0.0" +version = "2.0.1" description = "" authors = ["Abhinav "] readme = "README.md" @@ -26,6 +26,7 @@ influxdb = "^5.3.1" google-cloud-bigquery = "^3.16.0" tensorflow = "2.14.0" tensorflow-probability = "^0.23.0" +xgboost = "^3.0.0" [build-system] From 7f32b746860058a50aaaadbfff481ea9f6e7c52b Mon Sep 17 00:00:00 2001 From: Abhinav Date: Wed, 7 May 2025 15:43:47 +0200 Subject: [PATCH 4/9] export requirements for jupyterhub image and copy it for executors too --- jupyterhub/requirements.txt | 2 + pyspark/executors/requirements.txt | 124 ----------------------------- 2 files changed, 2 insertions(+), 124 deletions(-) delete mode 100644 pyspark/executors/requirements.txt diff --git a/jupyterhub/requirements.txt b/jupyterhub/requirements.txt index 83bc8f1..183559d 100644 --- a/jupyterhub/requirements.txt +++ b/jupyterhub/requirements.txt @@ -68,6 +68,7 @@ mysql-connector-python==8.2.0 ; python_version >= "3.11" and python_version < "3 numba==0.58.1 ; python_version >= "3.11" and python_version < "3.12" numexpr==2.8.8 ; python_version >= "3.11" and python_version < "3.12" numpy==1.26.3 ; python_version >= "3.11" and python_version < "3.12" +nvidia-nccl-cu12==2.26.5 ; platform_system == "Linux" and platform_machine != "aarch64" and python_version >= "3.11" and python_version < "3.12" oauthlib==3.2.2 ; python_version >= "3.11" and python_version < "3.12" opt-einsum==3.3.0 ; python_version >= "3.11" and python_version < "3.12" optuna==3.5.0 ; python_version >= "3.11" and python_version < "3.12" @@ -123,4 +124,5 @@ werkzeug==3.0.1 ; python_version >= "3.11" and python_version < "3.12" wheel==0.42.0 ; python_version >= "3.11" and python_version < "3.12" wrapt==1.14.1 ; python_version >= "3.11" and python_version < "3.12" xarray==2023.12.0 ; python_version >= "3.11" and python_version < "3.12" +xgboost==3.0.0 ; python_version >= "3.11" and python_version < "3.12" yarl==1.9.4 ; python_version >= "3.11" and python_version < "3.12" diff --git a/pyspark/executors/requirements.txt b/pyspark/executors/requirements.txt deleted file mode 100644 index ab4120f..0000000 --- a/pyspark/executors/requirements.txt +++ /dev/null @@ -1,124 +0,0 @@ -absl-py==2.0.0 ; python_version >= "3.11" and python_version < "3.12" -aiobotocore==2.9.0 ; python_version >= "3.11" and python_version < "3.12" -aiohttp==3.9.1 ; python_version >= "3.11" and python_version < "3.12" -aioitertools==0.11.0 ; python_version >= "3.11" and python_version < "3.12" -aiosignal==1.3.1 ; python_version >= "3.11" and python_version < "3.12" -alembic==1.13.1 ; python_version >= "3.11" and python_version < "3.12" -annotated-types==0.6.0 ; python_version >= "3.11" and python_version < "3.12" -astunparse==1.6.3 ; python_version >= "3.11" and python_version < "3.12" -attrs==23.2.0 ; python_version >= "3.11" and python_version < "3.12" -botocore==1.33.13 ; python_version >= "3.11" and python_version < "3.12" -bottleneck==1.3.7 ; python_version >= "3.11" and python_version < "3.12" -cachetools==5.3.2 ; python_version >= "3.11" and python_version < "3.12" -category-encoders==2.6.3 ; python_version >= "3.11" and python_version < "3.12" -certifi==2023.11.17 ; python_version >= "3.11" and python_version < "3.12" -charset-normalizer==3.3.2 ; python_version >= "3.11" and python_version < "3.12" -cloudpickle==3.0.0 ; python_version >= "3.11" and python_version < "3.12" -colorama==0.4.6 ; python_version >= "3.11" and python_version < "3.12" and (sys_platform == "win32" or platform_system == "Windows") -colorlog==6.8.0 ; python_version >= "3.11" and python_version < "3.12" -contourpy==1.2.0 ; python_version >= "3.11" and python_version < "3.12" -cycler==0.12.1 ; python_version >= "3.11" and python_version < "3.12" -dataframe-api-compat==0.2.6 ; python_version >= "3.11" and python_version < "3.12" -db-dtypes==1.2.0 ; python_version >= "3.11" and python_version < "3.12" -decorator==5.1.1 ; python_version >= "3.11" and python_version < "3.12" -dm-tree==0.1.8 ; python_version >= "3.11" and python_version < "3.12" -flatbuffers==23.5.26 ; python_version >= "3.11" and python_version < "3.12" -fonttools==4.47.2 ; python_version >= "3.11" and python_version < "3.12" -frozenlist==1.4.1 ; python_version >= "3.11" and python_version < "3.12" -fsspec==2023.12.2 ; python_version >= "3.11" and python_version < "3.12" -gast==0.5.4 ; python_version >= "3.11" and python_version < "3.12" -gcsfs==2023.12.2.post1 ; python_version >= "3.11" and python_version < "3.12" -google-api-core==2.15.0 ; python_version >= "3.11" and python_version < "3.12" -google-api-core[grpc]==2.15.0 ; python_version >= "3.11" and python_version < "3.12" -google-auth-oauthlib==1.0.0 ; python_version >= "3.11" and python_version < "3.12" -google-auth==2.26.2 ; python_version >= "3.11" and python_version < "3.12" -google-cloud-bigquery-storage==2.24.0 ; python_version >= "3.11" and python_version < "3.12" -google-cloud-bigquery==3.16.0 ; python_version >= "3.11" and python_version < "3.12" -google-cloud-core==2.4.1 ; python_version >= "3.11" and python_version < "3.12" -google-cloud-storage==2.14.0 ; python_version >= "3.11" and python_version < "3.12" -google-crc32c==1.5.0 ; python_version >= "3.11" and python_version < "3.12" -google-pasta==0.2.0 ; python_version >= "3.11" and python_version < "3.12" -google-resumable-media==2.7.0 ; python_version >= "3.11" and python_version < "3.12" -googleapis-common-protos==1.62.0 ; python_version >= "3.11" and python_version < "3.12" -greenlet==3.0.3 ; python_version >= "3.11" and python_version < "3.12" and (platform_machine == "aarch64" or platform_machine == "ppc64le" or platform_machine == "x86_64" or platform_machine == "amd64" or platform_machine == "AMD64" or platform_machine == "win32" or platform_machine == "WIN32") -grpcio-status==1.60.0 ; python_version >= "3.11" and python_version < "3.12" -grpcio==1.60.0 ; python_version >= "3.11" and python_version < "3.12" -h5py==3.10.0 ; python_version >= "3.11" and python_version < "3.12" -idna==3.6 ; python_version >= "3.11" and python_version < "3.12" -influxdb==5.3.1 ; python_version >= "3.11" and python_version < "3.12" -jmespath==1.0.1 ; python_version >= "3.11" and python_version < "3.12" -joblib==1.3.2 ; python_version >= "3.11" and python_version < "3.12" -jsonschema-specifications==2023.12.1 ; python_version >= "3.11" and python_version < "3.12" -jsonschema==4.20.0 ; python_version >= "3.11" and python_version < "3.12" -kafka-python==2.0.2 ; python_version >= "3.11" and python_version < "3.12" -keras==2.14.0 ; python_version >= "3.11" and python_version < "3.12" -kiwisolver==1.4.5 ; python_version >= "3.11" and python_version < "3.12" -libclang==16.0.6 ; python_version >= "3.11" and python_version < "3.12" -lightgbm==4.2.0 ; python_version >= "3.11" and python_version < "3.12" -llvmlite==0.41.1 ; python_version >= "3.11" and python_version < "3.12" -mako==1.3.0 ; python_version >= "3.11" and python_version < "3.12" -markdown==3.5.2 ; python_version >= "3.11" and python_version < "3.12" -markupsafe==2.1.3 ; python_version >= "3.11" and python_version < "3.12" -matplotlib==3.8.2 ; python_version >= "3.11" and python_version < "3.12" -mizani==0.9.3 ; python_version >= "3.11" and python_version < "3.12" -ml-dtypes==0.2.0 ; python_version >= "3.11" and python_version < "3.12" -msgpack==1.0.7 ; python_version >= "3.11" and python_version < "3.12" -multidict==6.0.4 ; python_version >= "3.11" and python_version < "3.12" -mysql-connector-python==8.2.0 ; python_version >= "3.11" and python_version < "3.12" -numba==0.58.1 ; python_version >= "3.11" and python_version < "3.12" -numexpr==2.8.8 ; python_version >= "3.11" and python_version < "3.12" -numpy==1.26.3 ; python_version >= "3.11" and python_version < "3.12" -oauthlib==3.2.2 ; python_version >= "3.11" and python_version < "3.12" -opt-einsum==3.3.0 ; python_version >= "3.11" and python_version < "3.12" -optuna==3.5.0 ; python_version >= "3.11" and python_version < "3.12" -packaging==23.2 ; python_version >= "3.11" and python_version < "3.12" -pandas-gbq==0.20.0 ; python_version >= "3.11" and python_version < "3.12" -pandas==2.1.4 ; python_version >= "3.11" and python_version < "3.12" -pandas[aws,computation,consortium-standard,feather,fss,gcp,parquet,performance]==2.1.4 ; python_version >= "3.11" and python_version < "3.12" -patsy==0.5.6 ; python_version >= "3.11" and python_version < "3.12" -pillow==10.2.0 ; python_version >= "3.11" and python_version < "3.12" -plotnine==0.12.4 ; python_version >= "3.11" and python_version < "3.12" -prometheus-client==0.19.0 ; python_version >= "3.11" and python_version < "3.12" -proto-plus==1.23.0 ; python_version >= "3.11" and python_version < "3.12" -protobuf==4.21.12 ; python_version >= "3.11" and python_version < "3.12" -py4j==0.10.9.7 ; python_version >= "3.11" and python_version < "3.12" -pyarrow==14.0.2 ; python_version >= "3.11" and python_version < "3.12" -pyasn1-modules==0.3.0 ; python_version >= "3.11" and python_version < "3.12" -pyasn1==0.5.1 ; python_version >= "3.11" and python_version < "3.12" -pydantic-core==2.14.6 ; python_version >= "3.11" and python_version < "3.12" -pydantic==2.5.3 ; python_version >= "3.11" and python_version < "3.12" -pydata-google-auth==1.8.2 ; python_version >= "3.11" and python_version < "3.12" -pyparsing==3.1.1 ; python_version >= "3.11" and python_version < "3.12" -python-dateutil==2.8.2 ; python_version >= "3.11" and python_version < "3.12" -pytz==2023.3.post1 ; python_version >= "3.11" and python_version < "3.12" -pytzdata==2020.1 ; python_version >= "3.11" and python_version < "3.12" -pyyaml==6.0.1 ; python_version >= "3.11" and python_version < "3.12" -referencing==0.32.1 ; python_version >= "3.11" and python_version < "3.12" -requests-oauthlib==1.3.1 ; python_version >= "3.11" and python_version < "3.12" -requests==2.31.0 ; python_version >= "3.11" and python_version < "3.12" -rpds-py==0.17.1 ; python_version >= "3.11" and python_version < "3.12" -rsa==4.9 ; python_version >= "3.11" and python_version < "3.12" -s3fs==2023.12.2 ; python_version >= "3.11" and python_version < "3.12" -scikit-learn==1.3.2 ; python_version >= "3.11" and python_version < "3.12" -scipy==1.11.4 ; python_version >= "3.11" and python_version < "3.12" -setuptools==69.0.3 ; python_version >= "3.11" and python_version < "3.12" -six==1.16.0 ; python_version >= "3.11" and python_version < "3.12" -sqlalchemy==2.0.25 ; python_version >= "3.11" and python_version < "3.12" -statsmodels==0.14.1 ; python_version >= "3.11" and python_version < "3.12" -tensorboard-data-server==0.7.2 ; python_version >= "3.11" and python_version < "3.12" -tensorboard==2.14.1 ; python_version >= "3.11" and python_version < "3.12" -tensorflow-estimator==2.14.0 ; python_version >= "3.11" and python_version < "3.12" -tensorflow-io-gcs-filesystem==0.35.0 ; python_version >= "3.11" and python_version < "3.12" -tensorflow-probability==0.23.0 ; python_version >= "3.11" and python_version < "3.12" -tensorflow==2.14.0 ; python_version >= "3.11" and python_version < "3.12" -termcolor==2.4.0 ; python_version >= "3.11" and python_version < "3.12" -threadpoolctl==3.2.0 ; python_version >= "3.11" and python_version < "3.12" -tqdm==4.66.1 ; python_version >= "3.11" and python_version < "3.12" -typing-extensions==4.9.0 ; python_version >= "3.11" and python_version < "3.12" -tzdata==2023.4 ; python_version >= "3.11" and python_version < "3.12" -urllib3==2.0.7 ; python_version >= "3.11" and python_version < "3.12" -werkzeug==3.0.1 ; python_version >= "3.11" and python_version < "3.12" -wheel==0.42.0 ; python_version >= "3.11" and python_version < "3.12" -wrapt==1.14.1 ; python_version >= "3.11" and python_version < "3.12" -xarray==2023.12.0 ; python_version >= "3.11" and python_version < "3.12" -yarl==1.9.4 ; python_version >= "3.11" and python_version < "3.12" From e442fc84e8a9c16b8b2639db731fb8d1b5231ee1 Mon Sep 17 00:00:00 2001 From: Abhinav Date: Wed, 7 May 2025 15:44:28 +0200 Subject: [PATCH 5/9] add a make target to make it obvious that executor requirements are a copy of jupyterhub requirements --- pyspark/executors/Makefile | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/pyspark/executors/Makefile b/pyspark/executors/Makefile index 6098734..e51efe9 100644 --- a/pyspark/executors/Makefile +++ b/pyspark/executors/Makefile @@ -1,6 +1,6 @@ OWNER := us-docker.pkg.dev/vgi-pn-277619/data-team/pubnative REPO := ${OWNER}/pyspark-executor -TAG := v3.4.1-python3.11-2 +TAG := v3.4.1-python3.11-3 IMAGE := ${REPO}:${TAG} build: @@ -8,3 +8,6 @@ build: push: build docker push ${IMAGE} + +requirements: + cp ../../jupyterhub/requirements.txt . \ No newline at end of file From 835133f594953836e1c11a9f4c8d03d51be3aeb7 Mon Sep 17 00:00:00 2001 From: Abhinav Date: Wed, 7 May 2025 15:44:56 +0200 Subject: [PATCH 6/9] add more instruction for setting up environment and why we are restricted to python 3.11 --- jupyterhub/README.md | 29 +++++++++++++++++++++++++++-- jupyterhub/img.png | Bin 0 -> 29327 bytes 2 files changed, 27 insertions(+), 2 deletions(-) create mode 100644 jupyterhub/img.png diff --git a/jupyterhub/README.md b/jupyterhub/README.md index 5b5b1a5..dc63921 100644 --- a/jupyterhub/README.md +++ b/jupyterhub/README.md @@ -1,17 +1,42 @@ -## Build base image +## Choosing a python version +- see available versions +```shell +conda search python +``` +- create conda environment. We are choosing python 3.11 mainly because tensorflow currently does not support python larger than 3.11 +![img.png](img.png) + +## Setting up environment +```shell +conda create -n jupyterhub python=3.11.7 conda +``` +```shell +conda activate jupyterhub +``` +```shell +poetry install +``` + +## Build base image first (jupyter/custom) for building jupyterhub image This image is built on top of this [repo](https://github.com/jupyter/docker-stacks). To reproduce follow the steps below: - Clone repo -- Build the image(`jupyter/custom`) using the command below +```shell +git clone git@github.com:jupyter/docker-stacks.git ``` +- Build the image(`jupyter/custom`) using the command below + +```shell docker build --rm --force-rm \ -t jupyter/custom ./images/pyspark-notebook \ +--build-arg python_version=3.11.10 \ --build-arg openjdk_version=11 \ --build-arg spark_version=3.4.1 \ --build-arg hadoop_version=3 \ --build-arg spark_download_url="https://archive.apache.org/dist/spark/" \ --platform linux/amd64 ``` +- If you are just adding a package instead of starting from `jupyter/custom` consider starting from your existing/current image of jupyter to minimize changes to user experience ## Additional information - `gcs-connector-hadoop3-2.2.11-shaded.jar` is added to spark diff --git a/jupyterhub/img.png b/jupyterhub/img.png new file mode 100644 index 0000000000000000000000000000000000000000..bb5e9397e0dbb7024823dcbecf63f02d825918e2 GIT binary patch literal 29327 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

IN3EHiD-XxoRsjupPcB{$UzpW1~qa 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%0A>L~NLj(Y5|H$CaozqFV?X$Z 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 Date: Wed, 7 May 2025 15:45:53 +0200 Subject: [PATCH 7/9] same as jupyterhub requirements.txt, copied using make target requirements --- pyspark/executors/requirements.txt | 128 +++++++++++++++++++++++++++++ 1 file changed, 128 insertions(+) create mode 100644 pyspark/executors/requirements.txt diff --git a/pyspark/executors/requirements.txt b/pyspark/executors/requirements.txt new file mode 100644 index 0000000..183559d --- /dev/null +++ b/pyspark/executors/requirements.txt @@ -0,0 +1,128 @@ +absl-py==2.0.0 ; python_version >= "3.11" and python_version < "3.12" +aiobotocore==2.9.0 ; python_version >= "3.11" and python_version < "3.12" +aiohttp==3.9.1 ; python_version >= "3.11" and python_version < "3.12" +aioitertools==0.11.0 ; python_version >= "3.11" and python_version < "3.12" +aiosignal==1.3.1 ; python_version >= "3.11" and python_version < "3.12" +alembic==1.13.1 ; python_version >= "3.11" and python_version < "3.12" +annotated-types==0.6.0 ; python_version >= "3.11" and python_version < "3.12" +astunparse==1.6.3 ; python_version >= "3.11" and python_version < "3.12" +attrs==23.2.0 ; python_version >= "3.11" and python_version < "3.12" +botocore==1.33.13 ; python_version >= "3.11" and python_version < "3.12" +bottleneck==1.3.7 ; python_version >= "3.11" and python_version < "3.12" +cachetools==5.3.2 ; python_version >= "3.11" and python_version < "3.12" +category-encoders==2.6.3 ; python_version >= "3.11" and python_version < "3.12" +certifi==2023.11.17 ; python_version >= "3.11" and python_version < "3.12" +charset-normalizer==3.3.2 ; python_version >= "3.11" and python_version < "3.12" +cloudpickle==3.0.0 ; python_version >= "3.11" and python_version < "3.12" +colorama==0.4.6 ; python_version >= "3.11" and python_version < "3.12" and (sys_platform == "win32" or platform_system == "Windows") +colorlog==6.8.0 ; python_version >= "3.11" and python_version < "3.12" +contourpy==1.2.0 ; python_version >= "3.11" and python_version < "3.12" +cycler==0.12.1 ; python_version >= "3.11" and python_version < "3.12" +dataframe-api-compat==0.2.6 ; python_version >= "3.11" and python_version < "3.12" +db-dtypes==1.2.0 ; python_version >= "3.11" and python_version < "3.12" +decorator==5.1.1 ; python_version >= "3.11" and python_version < "3.12" +dm-tree==0.1.8 ; python_version >= "3.11" and python_version < "3.12" +flatbuffers==23.5.26 ; python_version >= "3.11" and python_version < "3.12" +fonttools==4.47.2 ; python_version >= "3.11" and python_version < "3.12" +frozenlist==1.4.1 ; python_version >= "3.11" and python_version < "3.12" +fsspec==2023.12.2 ; python_version >= "3.11" and python_version < "3.12" +gast==0.5.4 ; python_version >= "3.11" and python_version < "3.12" +gcsfs==2023.12.2.post1 ; python_version >= "3.11" and python_version < "3.12" +google-api-core==2.15.0 ; python_version >= "3.11" and python_version < "3.12" +google-api-core[grpc]==2.15.0 ; python_version >= "3.11" and python_version < "3.12" +google-auth-oauthlib==1.0.0 ; python_version >= "3.11" and python_version < "3.12" +google-auth==2.26.2 ; python_version >= "3.11" and python_version < "3.12" +google-cloud-bigquery-storage==2.24.0 ; python_version >= "3.11" and python_version < "3.12" +google-cloud-bigquery==3.16.0 ; python_version >= "3.11" and python_version < "3.12" +google-cloud-core==2.4.1 ; python_version >= "3.11" and python_version < "3.12" +google-cloud-storage==2.14.0 ; python_version >= "3.11" and python_version < "3.12" +google-crc32c==1.5.0 ; python_version >= "3.11" and python_version < "3.12" +google-pasta==0.2.0 ; python_version >= "3.11" and python_version < "3.12" +google-resumable-media==2.7.0 ; python_version >= "3.11" and python_version < "3.12" +googleapis-common-protos==1.62.0 ; python_version >= "3.11" and python_version < "3.12" +greenlet==3.0.3 ; python_version >= "3.11" and python_version < "3.12" and (platform_machine == "aarch64" or platform_machine == "ppc64le" or platform_machine == "x86_64" or platform_machine == "amd64" or platform_machine == "AMD64" or platform_machine == "win32" or platform_machine == "WIN32") +grpcio-status==1.60.0 ; python_version >= "3.11" and python_version < "3.12" +grpcio==1.60.0 ; python_version >= "3.11" and python_version < "3.12" +h5py==3.10.0 ; python_version >= "3.11" and python_version < "3.12" +idna==3.6 ; python_version >= "3.11" and python_version < "3.12" +influxdb==5.3.1 ; python_version >= "3.11" and python_version < "3.12" +jmespath==1.0.1 ; python_version >= "3.11" and python_version < "3.12" +joblib==1.3.2 ; python_version >= "3.11" and python_version < "3.12" +jsonschema-specifications==2023.12.1 ; python_version >= "3.11" and python_version < "3.12" +jsonschema==4.20.0 ; python_version >= "3.11" and python_version < "3.12" +kafka-python==2.0.2 ; python_version >= "3.11" and python_version < "3.12" +keras==2.14.0 ; python_version >= "3.11" and python_version < "3.12" +kiwisolver==1.4.5 ; python_version >= "3.11" and python_version < "3.12" +libclang==16.0.6 ; python_version >= "3.11" and python_version < "3.12" +lightgbm==4.2.0 ; python_version >= "3.11" and python_version < "3.12" +llvmlite==0.41.1 ; python_version >= "3.11" and python_version < "3.12" +mako==1.3.0 ; python_version >= "3.11" and python_version < "3.12" +markdown==3.5.2 ; python_version >= "3.11" and python_version < "3.12" +markupsafe==2.1.3 ; python_version >= "3.11" and python_version < "3.12" +matplotlib==3.8.2 ; python_version >= "3.11" and python_version < "3.12" +mizani==0.9.3 ; python_version >= "3.11" and python_version < "3.12" +ml-dtypes==0.2.0 ; python_version >= "3.11" and python_version < "3.12" +msgpack==1.0.7 ; python_version >= "3.11" and python_version < "3.12" +multidict==6.0.4 ; python_version >= "3.11" and python_version < "3.12" +mysql-connector-python==8.2.0 ; python_version >= "3.11" and python_version < "3.12" +numba==0.58.1 ; python_version >= "3.11" and python_version < "3.12" +numexpr==2.8.8 ; python_version >= "3.11" and python_version < "3.12" +numpy==1.26.3 ; python_version >= "3.11" and python_version < "3.12" +nvidia-nccl-cu12==2.26.5 ; platform_system == "Linux" and platform_machine != "aarch64" and python_version >= "3.11" and python_version < "3.12" +oauthlib==3.2.2 ; python_version >= "3.11" and python_version < "3.12" +opt-einsum==3.3.0 ; python_version >= "3.11" and python_version < "3.12" +optuna==3.5.0 ; python_version >= "3.11" and python_version < "3.12" +packaging==23.2 ; python_version >= "3.11" and python_version < "3.12" +pandas-gbq==0.20.0 ; python_version >= "3.11" and python_version < "3.12" +pandas==2.1.4 ; python_version >= "3.11" and python_version < "3.12" +pandas[aws,computation,consortium-standard,feather,fss,gcp,parquet,performance]==2.1.4 ; python_version >= "3.11" and python_version < "3.12" +patsy==0.5.6 ; python_version >= "3.11" and python_version < "3.12" +pendulum==2.1.2 ; python_version >= "3.11" and python_version < "3.12" +pillow==10.2.0 ; python_version >= "3.11" and python_version < "3.12" +plotnine==0.12.4 ; python_version >= "3.11" and python_version < "3.12" +prometheus-client==0.19.0 ; python_version >= "3.11" and python_version < "3.12" +proto-plus==1.23.0 ; python_version >= "3.11" and python_version < "3.12" +protobuf==4.21.12 ; python_version >= "3.11" and python_version < "3.12" +py4j==0.10.9.7 ; python_version >= "3.11" and python_version < "3.12" +pyarrow==14.0.2 ; python_version >= "3.11" and python_version < "3.12" +pyasn1-modules==0.3.0 ; python_version >= "3.11" and python_version < "3.12" +pyasn1==0.5.1 ; python_version >= "3.11" and python_version < "3.12" +pydantic-core==2.14.6 ; python_version >= "3.11" and python_version < "3.12" +pydantic==2.5.3 ; python_version >= "3.11" and python_version < "3.12" +pydata-google-auth==1.8.2 ; python_version >= "3.11" and python_version < "3.12" +pyparsing==3.1.1 ; python_version >= "3.11" and python_version < "3.12" +pyspark==3.4.1 ; python_version >= "3.11" and python_version < "3.12" +python-dateutil==2.8.2 ; python_version >= "3.11" and python_version < "3.12" +pytz==2023.3.post1 ; python_version >= "3.11" and python_version < "3.12" +pytzdata==2020.1 ; python_version >= "3.11" and python_version < "3.12" +pyyaml==6.0.1 ; python_version >= "3.11" and python_version < "3.12" +referencing==0.32.1 ; python_version >= "3.11" and python_version < "3.12" +requests-oauthlib==1.3.1 ; python_version >= "3.11" and python_version < "3.12" +requests==2.31.0 ; python_version >= "3.11" and python_version < "3.12" +rpds-py==0.17.1 ; python_version >= "3.11" and python_version < "3.12" +rsa==4.9 ; python_version >= "3.11" and python_version < "3.12" +s3fs==2023.12.2 ; python_version >= "3.11" and python_version < "3.12" +scikit-learn==1.3.2 ; python_version >= "3.11" and python_version < "3.12" +scipy==1.11.4 ; python_version >= "3.11" and python_version < "3.12" +setuptools==69.0.3 ; python_version >= "3.11" and python_version < "3.12" +six==1.16.0 ; python_version >= "3.11" and python_version < "3.12" +sqlalchemy==2.0.25 ; python_version >= "3.11" and python_version < "3.12" +statsmodels==0.14.1 ; python_version >= "3.11" and python_version < "3.12" +tensorboard-data-server==0.7.2 ; python_version >= "3.11" and python_version < "3.12" +tensorboard==2.14.1 ; python_version >= "3.11" and python_version < "3.12" +tensorflow-estimator==2.14.0 ; python_version >= "3.11" and python_version < "3.12" +tensorflow-io-gcs-filesystem==0.35.0 ; python_version >= "3.11" and python_version < "3.12" +tensorflow-probability==0.23.0 ; python_version >= "3.11" and python_version < "3.12" +tensorflow==2.14.0 ; python_version >= "3.11" and python_version < "3.12" +termcolor==2.4.0 ; python_version >= "3.11" and python_version < "3.12" +threadpoolctl==3.2.0 ; python_version >= "3.11" and python_version < "3.12" +tqdm==4.66.1 ; python_version >= "3.11" and python_version < "3.12" +typing-extensions==4.9.0 ; python_version >= "3.11" and python_version < "3.12" +tzdata==2023.4 ; python_version >= "3.11" and python_version < "3.12" +urllib3==2.0.7 ; python_version >= "3.11" and python_version < "3.12" +werkzeug==3.0.1 ; python_version >= "3.11" and python_version < "3.12" +wheel==0.42.0 ; python_version >= "3.11" and python_version < "3.12" +wrapt==1.14.1 ; python_version >= "3.11" and python_version < "3.12" +xarray==2023.12.0 ; python_version >= "3.11" and python_version < "3.12" +xgboost==3.0.0 ; python_version >= "3.11" and python_version < "3.12" +yarl==1.9.4 ; python_version >= "3.11" and python_version < "3.12" From eb9eb5aa7c70d2691cec1bcdac443a3310ed245e Mon Sep 17 00:00:00 2001 From: Abhinav Date: Wed, 7 May 2025 15:58:19 +0200 Subject: [PATCH 8/9] remove pendulum from executor requirements since it causes problems with build and is only used in cli's --- pyspark/executors/requirements.txt | 1 - 1 file changed, 1 deletion(-) diff --git a/pyspark/executors/requirements.txt b/pyspark/executors/requirements.txt index 183559d..7d0351f 100644 --- a/pyspark/executors/requirements.txt +++ b/pyspark/executors/requirements.txt @@ -77,7 +77,6 @@ pandas-gbq==0.20.0 ; python_version >= "3.11" and python_version < "3.12" pandas==2.1.4 ; python_version >= "3.11" and python_version < "3.12" pandas[aws,computation,consortium-standard,feather,fss,gcp,parquet,performance]==2.1.4 ; python_version >= "3.11" and python_version < "3.12" patsy==0.5.6 ; python_version >= "3.11" and python_version < "3.12" -pendulum==2.1.2 ; python_version >= "3.11" and python_version < "3.12" pillow==10.2.0 ; python_version >= "3.11" and python_version < "3.12" plotnine==0.12.4 ; python_version >= "3.11" and python_version < "3.12" prometheus-client==0.19.0 ; python_version >= "3.11" and python_version < "3.12" From 0c74e230c23ac1746613a64219b0e691afb07b6a Mon Sep 17 00:00:00 2001 From: Abhinav Date: Wed, 7 May 2025 15:59:19 +0200 Subject: [PATCH 9/9] build from existing executor image instead of pyspark image to avoid complications and minimize changes to user experience --- pyspark/executors/Dockerfile | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/pyspark/executors/Dockerfile b/pyspark/executors/Dockerfile index 8c87616..a96ab8c 100644 --- a/pyspark/executors/Dockerfile +++ b/pyspark/executors/Dockerfile @@ -1,5 +1,6 @@ -FROM us-docker.pkg.dev/vgi-pn-277619/data-team/pubnative/pyspark:v3.4.1-python3.11-2 +#FROM us-docker.pkg.dev/vgi-pn-277619/data-team/pubnative/pyspark:v3.4.1-python3.11-2 # use the base image here +FROM us-docker.pkg.dev/vgi-pn-277619/data-team/pubnative/pyspark-executor:v3.4.1-python3.11-2 USER 0