From 3cec0d1d0776c401267d03b8dadfd201a0a854c5 Mon Sep 17 00:00:00 2001 From: Andrew Stein Date: Wed, 2 Aug 2023 00:36:21 -0400 Subject: [PATCH] Pin python dependencies --- .github/workflows/build.yml | 16 +- .../perspective/manager/manager_internal.py | 2 +- python/perspective/requirements-310.txt | 161 +++++++++++++++++ python/perspective/requirements-311.txt | 157 +++++++++++++++++ python/perspective/requirements-37.txt | 134 ++++++++++++++ python/perspective/requirements-38.txt | 163 ++++++++++++++++++ python/perspective/requirements-39.txt | 161 +++++++++++++++++ .../perspective-scripts/_requires_python.mjs | 26 +-- tools/perspective-scripts/_wheel_python.mjs | 2 +- tools/perspective-scripts/build_python.mjs | 5 +- tools/perspective-scripts/sh_perspective.mjs | 9 + 11 files changed, 814 insertions(+), 22 deletions(-) create mode 100644 python/perspective/requirements-310.txt create mode 100644 python/perspective/requirements-311.txt create mode 100644 python/perspective/requirements-37.txt create mode 100644 python/perspective/requirements-38.txt create mode 100644 python/perspective/requirements-39.txt diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 6ac40c8c5d..b263a2f25f 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -1359,10 +1359,10 @@ jobs: # Install artifact - name: Install wheel (system) - run: python -m pip install -U *manylinux2014*.whl + run: python -m pip install -U --no-dependencies *manylinux2014*.whl - name: Install wheel (local) - run: python -m pip install -U *manylinux2014*.whl --target python/perspective + run: python -m pip install -U --no-dependencies *manylinux2014*.whl --target python/perspective - name: Check Installed labextensions run: jupyter labextension list @@ -1541,21 +1541,21 @@ jobs: # Install artifact in-place so tests work as-is - name: Install wheel (Linux) - run: python -m pip install -U *manylinux2014*.whl --target python/perspective + run: python -m pip install -U --no-dependencies *manylinux2014*.whl --target python/perspective if: ${{ runner.os == 'Linux' }} # Note, on mac we must install the x86 wheel, the arm64 wheel # would need an arm machine to test - name: Install wheel (OSX) - run: python -m pip install -U *x86*.whl --target python/perspective + run: python -m pip install -U --no-dependencies *x86*.whl --target python/perspective if: ${{ runner.os == 'macOS' && matrix.python-version != '3.11' }} - name: Install wheel (OSX 3.11+) - run: python -m pip install -U *universal*.whl --target python/perspective + run: python -m pip install -U --no-dependencies *universal*.whl --target python/perspective if: ${{ runner.os == 'macOS' && matrix.python-version == '3.11' }} - name: Install wheel (windows) - run: python -m pip install -U (Get-ChildItem .\*.whl | Select-Object -Expand FullName) --target python/perspective + run: python -m pip install -U --no-dependencies (Get-ChildItem .\*.whl | Select-Object -Expand FullName) --target python/perspective if: ${{ runner.os == 'Windows' }} # Run tests @@ -1683,7 +1683,7 @@ jobs: # Install sdist - name: Install sdist - run: python -m pip install perspective*.tar.gz + run: python -m pip install --no-dependencies perspective*.tar.gz # Test sdist - name: Run tests against from-scratch sdist build @@ -1801,7 +1801,7 @@ jobs: # Install artifact in-place so tests work as-is - name: Install wheel (Linux) - run: python -m pip install -U *manylinux2014*.whl --target python/perspective + run: python -m pip install -U --no-dependencies *manylinux2014*.whl --target python/perspective if: ${{ runner.os == 'Linux' }} - name: Run Benchmark diff --git a/python/perspective/perspective/manager/manager_internal.py b/python/perspective/perspective/manager/manager_internal.py index 9edbe58743..ece4889272 100644 --- a/python/perspective/perspective/manager/manager_internal.py +++ b/python/perspective/perspective/manager/manager_internal.py @@ -355,7 +355,7 @@ def callback(self, *args, **kwargs): else: msg = self._make_message(id, None) - if len(args) > 1 and type(args[1]) == bytes: + if len(args) > 1 and type(args[1]) is bytes: self._process_bytes(args[1], msg, post_callback) else: post_callback(self._message_to_json(msg["id"], msg)) diff --git a/python/perspective/requirements-310.txt b/python/perspective/requirements-310.txt new file mode 100644 index 0000000000..f81bb29072 --- /dev/null +++ b/python/perspective/requirements-310.txt @@ -0,0 +1,161 @@ +aiofiles==22.1.0 +aiohttp==3.8.5 +aiosignal==1.3.1 +aiosqlite==0.19.0 +alabaster==0.7.13 +annotated-types==0.5.0 +anyio==3.7.1 +appnope==0.1.3 +argon2-cffi==21.3.0 +argon2-cffi-bindings==21.2.0 +arrow==1.2.3 +asttokens==2.2.1 +async-timeout==4.0.2 +attrs==23.1.0 +Babel==2.12.1 +backcall==0.2.0 +beautifulsoup4==4.12.2 +black==23.1.0 +bleach==6.0.0 +certifi==2023.7.22 +cffi==1.15.1 +charset-normalizer==3.2.0 +click==8.1.6 +comm==0.1.4 +coverage==7.2.7 +debugpy==1.6.7 +decorator==5.1.1 +defusedxml==0.7.1 +deprecation==2.1.0 +docutils==0.20.1 +entrypoints==0.4 +exceptiongroup==1.1.2 +executing==1.2.0 +Faker==19.2.0 +fastapi==0.100.1 +fastjsonschema==2.18.0 +flake8==6.1.0 +flake8-black==0.3.6 +fqdn==1.5.1 +frozenlist==1.4.0 +future==0.18.3 +h11==0.14.0 +html5lib==1.1 +httpcore==0.17.3 +httpx==0.24.1 +idna==3.4 +imagesize==1.4.1 +importlib-metadata==6.8.0 +iniconfig==2.0.0 +ipykernel==6.25.0 +ipython==8.14.0 +ipython-genutils==0.2.0 +ipywidgets==8.1.0 +isoduration==20.11.0 +jedi==0.19.0 +Jinja2==3.1.2 +json5==0.9.14 +jsonpointer==2.4 +jsonschema==4.18.6 +jsonschema-specifications==2023.7.1 +jupyter-events==0.7.0 +jupyter-ydoc==0.2.5 +jupyter_client==7.4.9 +jupyter_core==5.3.1 +jupyter_packaging==0.12.3 +jupyter_server==2.7.0 +jupyter_server_fileid==0.9.0 +jupyter_server_terminals==0.4.4 +jupyter_server_ydoc==0.8.0 +jupyterlab==3.6.5 +jupyterlab-pygments==0.2.2 +jupyterlab-widgets==3.0.8 +jupyterlab_server==2.24.0 +MarkupSafe==2.1.3 +matplotlib-inline==0.1.6 +mccabe==0.7.0 +mistune==3.0.1 +multidict==6.0.4 +mypy-extensions==1.0.0 +nbclassic==1.0.0 +nbclient==0.8.0 +nbconvert==7.7.3 +nbformat==5.9.2 +nest-asyncio==1.5.7 +notebook==6.5.5 +notebook_shim==0.2.3 +numpy==1.25.2 +overrides==7.3.1 +packaging==23.1 +pandas==2.0.3 +pandocfilters==1.5.0 +parso==0.8.3 +pathspec==0.11.2 +pexpect==4.8.0 +pickleshare==0.7.5 +platformdirs==3.10.0 +pluggy==1.2.0 +prometheus-client==0.17.1 +prompt-toolkit==3.0.39 +psutil==5.9.5 +ptyprocess==0.7.0 +pure-eval==0.2.2 +pyarrow==12.0.1 +pybind11==2.11.1 +pycodestyle==2.11.0 +pycparser==2.21 +pydantic==2.1.1 +pydantic_core==2.4.0 +pyflakes==3.1.0 +Pygments==2.15.1 +pytest==7.4.0 +pytest-aiohttp==1.0.4 +pytest-asyncio==0.21.1 +pytest-cov==4.1.0 +pytest-tornado==0.8.1 +pytest_check_links==0.9.0 +python-dateutil==2.8.2 +python-json-logger==2.0.7 +pytz==2023.3 +PyYAML==6.0.1 +pyzmq==24.0.1 +referencing==0.30.1 +requests==2.31.0 +rfc3339-validator==0.1.4 +rfc3986-validator==0.1.1 +rpds-py==0.9.2 +Send2Trash==1.8.2 +six==1.16.0 +sniffio==1.3.0 +snowballstemmer==2.2.0 +soupsieve==2.4.1 +Sphinx==7.1.2 +sphinx-markdown-builder==0.6.4 +sphinxcontrib-applehelp==1.0.4 +sphinxcontrib-devhelp==1.0.2 +sphinxcontrib-htmlhelp==2.0.1 +sphinxcontrib-jsmath==1.0.1 +sphinxcontrib-qthelp==1.0.3 +sphinxcontrib-serializinghtml==1.1.5 +stack-data==0.6.2 +starlette==0.27.0 +tabulate==0.9.0 +terminado==0.17.1 +tinycss2==1.2.1 +tomli==2.0.1 +tomlkit==0.12.1 +tornado==6.3.2 +traitlets==5.9.0 +typing_extensions==4.7.1 +tzdata==2023.3 +uri-template==1.3.0 +urllib3==2.0.4 +wcwidth==0.2.6 +webcolors==1.13 +webencodings==0.5.1 +websocket-client==1.6.1 +widgetsnbextension==4.0.8 +y-py==0.6.0 +yarl==1.9.2 +ypy-websocket==0.8.4 +zipp==3.16.2 \ No newline at end of file diff --git a/python/perspective/requirements-311.txt b/python/perspective/requirements-311.txt new file mode 100644 index 0000000000..7c31745b6f --- /dev/null +++ b/python/perspective/requirements-311.txt @@ -0,0 +1,157 @@ +aiofiles==22.1.0 +aiohttp==3.8.5 +aiosignal==1.3.1 +aiosqlite==0.19.0 +alabaster==0.7.13 +annotated-types==0.5.0 +anyio==3.7.1 +appnope==0.1.3 +argon2-cffi==21.3.0 +argon2-cffi-bindings==21.2.0 +arrow==1.2.3 +asttokens==2.2.1 +async-timeout==4.0.2 +attrs==23.1.0 +Babel==2.12.1 +backcall==0.2.0 +beautifulsoup4==4.12.2 +black==23.1.0 +bleach==6.0.0 +certifi==2023.7.22 +cffi==1.15.1 +charset-normalizer==3.2.0 +click==8.1.6 +comm==0.1.4 +coverage==7.2.7 +debugpy==1.6.7 +decorator==5.1.1 +defusedxml==0.7.1 +deprecation==2.1.0 +docutils==0.20.1 +entrypoints==0.4 +executing==1.2.0 +Faker==19.2.0 +fastapi==0.100.1 +fastjsonschema==2.18.0 +flake8==6.1.0 +flake8-black==0.3.6 +fqdn==1.5.1 +frozenlist==1.4.0 +future==0.18.3 +h11==0.14.0 +html5lib==1.1 +httpcore==0.17.3 +httpx==0.24.1 +idna==3.4 +imagesize==1.4.1 +iniconfig==2.0.0 +ipykernel==6.25.0 +ipython==8.14.0 +ipython-genutils==0.2.0 +ipywidgets==8.1.0 +isoduration==20.11.0 +jedi==0.19.0 +Jinja2==3.1.2 +json5==0.9.14 +jsonpointer==2.4 +jsonschema==4.18.6 +jsonschema-specifications==2023.7.1 +jupyter-events==0.7.0 +jupyter-ydoc==0.2.5 +jupyter_client==7.4.9 +jupyter_core==5.3.1 +jupyter_packaging==0.12.3 +jupyter_server==2.7.0 +jupyter_server_fileid==0.9.0 +jupyter_server_terminals==0.4.4 +jupyter_server_ydoc==0.8.0 +jupyterlab==3.6.5 +jupyterlab-pygments==0.2.2 +jupyterlab-widgets==3.0.8 +jupyterlab_server==2.24.0 +MarkupSafe==2.1.3 +matplotlib-inline==0.1.6 +mccabe==0.7.0 +mistune==3.0.1 +multidict==6.0.4 +mypy-extensions==1.0.0 +nbclassic==1.0.0 +nbclient==0.8.0 +nbconvert==7.7.3 +nbformat==5.9.2 +nest-asyncio==1.5.7 +notebook==6.5.5 +notebook_shim==0.2.3 +numpy==1.25.2 +overrides==7.3.1 +packaging==23.1 +pandas==2.0.3 +pandocfilters==1.5.0 +parso==0.8.3 +pathspec==0.11.2 +pexpect==4.8.0 +pickleshare==0.7.5 +platformdirs==3.10.0 +pluggy==1.2.0 +prometheus-client==0.17.1 +prompt-toolkit==3.0.39 +psutil==5.9.5 +ptyprocess==0.7.0 +pure-eval==0.2.2 +pyarrow==12.0.1 +pybind11==2.11.1 +pycodestyle==2.11.0 +pycparser==2.21 +pydantic==2.1.1 +pydantic_core==2.4.0 +pyflakes==3.1.0 +Pygments==2.15.1 +pytest==7.4.0 +pytest-aiohttp==1.0.4 +pytest-asyncio==0.21.1 +pytest-cov==4.1.0 +pytest-tornado==0.8.1 +pytest_check_links==0.9.0 +python-dateutil==2.8.2 +python-json-logger==2.0.7 +pytz==2023.3 +PyYAML==6.0.1 +pyzmq==24.0.1 +referencing==0.30.1 +requests==2.31.0 +rfc3339-validator==0.1.4 +rfc3986-validator==0.1.1 +rpds-py==0.9.2 +Send2Trash==1.8.2 +six==1.16.0 +sniffio==1.3.0 +snowballstemmer==2.2.0 +soupsieve==2.4.1 +Sphinx==7.1.2 +sphinx-markdown-builder==0.6.4 +sphinxcontrib-applehelp==1.0.4 +sphinxcontrib-devhelp==1.0.2 +sphinxcontrib-htmlhelp==2.0.1 +sphinxcontrib-jsmath==1.0.1 +sphinxcontrib-qthelp==1.0.3 +sphinxcontrib-serializinghtml==1.1.5 +stack-data==0.6.2 +starlette==0.27.0 +tabulate==0.9.0 +terminado==0.17.1 +tinycss2==1.2.1 +tomlkit==0.12.1 +tornado==6.3.2 +traitlets==5.9.0 +typing_extensions==4.7.1 +tzdata==2023.3 +uri-template==1.3.0 +urllib3==2.0.4 +wcwidth==0.2.6 +webcolors==1.13 +webencodings==0.5.1 +websocket-client==1.6.1 +widgetsnbextension==4.0.8 +y-py==0.6.0 +yarl==1.9.2 +ypy-websocket==0.8.4 \ No newline at end of file diff --git a/python/perspective/requirements-37.txt b/python/perspective/requirements-37.txt new file mode 100644 index 0000000000..9f69dc4144 --- /dev/null +++ b/python/perspective/requirements-37.txt @@ -0,0 +1,134 @@ +Faker==18.13.0 +Jinja2==3.1.2 +MarkupSafe==2.1.3 +Pygments==2.15.1 +Send2Trash==1.8.2 +Sphinx==4.3.2 +aiohttp==3.8.5 +aiosignal==1.3.1 +alabaster==0.7.13 +annotated-types==0.5.0 +anyio==3.7.1 +appnope==0.1.3 +argon2-cffi==21.3.0 +argon2-cffi-bindings==21.2.0 +async-timeout==4.0.2 +asynctest==0.13.0 +attrs==23.1.0 +babel==2.12.1 +backcall==0.2.0 +beautifulsoup4==4.12.2 +black==23.1.0 +bleach==6.0.0 +certifi==2023.5.7 +cffi==1.15.1 +charset-normalizer==3.2.0 +click==8.1.6 +coverage==7.2.7 +debugpy==1.6.7 +decorator==5.1.1 +defusedxml==0.7.1 +docutils==0.17.1 +entrypoints==0.4 +exceptiongroup==1.1.2 +fastapi==0.100.0 +fastjsonschema==2.17.1 +flake8==5.0.4 +flake8-black==0.3.6 +frozenlist==1.3.3 +future==0.18.3 +h11==0.14.0 +html5lib==1.1 +httpcore==0.17.3 +httpx==0.24.1 +idna==3.4 +imagesize==1.4.1 +importlib-metadata==4.2.0 +importlib-resources==5.12.0 +iniconfig==2.0.0 +ipykernel==6.16.2 +ipython==7.34.0 +ipython-genutils==0.2.0 +ipywidgets==8.0.7 +jedi==0.18.2 +json5==0.9.14 +jsonschema==4.17.3 +jupyter-client==7.4.9 +jupyter-core==4.12.0 +jupyter-server==1.24.0 +jupyterlab==3.5.3 +jupyterlab-pygments==0.2.2 +jupyterlab-server==2.15.2 +jupyterlab-widgets==3.0.8 +matplotlib-inline==0.1.6 +mccabe==0.7.0 +mistune==3.0.1 +multidict==6.0.4 +mypy-extensions==1.0.0 +nbclassic==1.0.0 +nbclient==0.7.4 +nbconvert==7.6.0 +nbformat==5.8.0 +nest-asyncio==1.5.6 +notebook==6.5.4 +notebook-shim==0.2.3 +numpy==1.21.6 +pandas==1.3.5 +pandocfilters==1.5.0 +parso==0.8.3 +pathspec==0.11.1 +pexpect==4.8.0 +pickleshare==0.7.5 +pip==23.1.2 +pkgutil-resolve-name==1.3.10 +platformdirs==3.9.1 +pluggy==1.2.0 +prometheus-client==0.17.1 +prompt-toolkit==3.0.39 +psutil==5.9.5 +ptyprocess==0.7.0 +pyarrow==12.0.1 +pybind11==2.11.1 +pycodestyle==2.9.1 +pycparser==2.21 +pydantic==2.0.3 +pydantic-core==2.3.0 +pyflakes==2.5.0 +pyrsistent==0.19.3 +pytest==7.4.0 +pytest-aiohttp==1.0.4 +pytest-asyncio==0.21.1 +pytest-check-links==0.8.0 +pytest-cov==4.1.0 +pytest-tornado==0.8.1 +python-dateutil==2.8.2 +pytz==2023.3 +pyzmq==25.1.0 +requests==2.31.0 +six==1.16.0 +sniffio==1.3.0 +snowballstemmer==2.2.0 +soupsieve==2.4.1 +sphinx-markdown-builder==0.6.3 +sphinxcontrib-applehelp==1.0.2 +sphinxcontrib-devhelp==1.0.2 +sphinxcontrib-htmlhelp==2.0.0 +sphinxcontrib-jsmath==1.0.1 +sphinxcontrib-qthelp==1.0.3 +sphinxcontrib-serializinghtml==1.1.5 +starlette==0.27.0 +tabulate==0.9.0 +terminado==0.17.1 +tinycss2==1.2.1 +tomli==2.0.1 +tornado==6.2 +traitlets==5.9.0 +typed-ast==1.5.5 +typing-extensions==4.7.1 +urllib3==2.0.4 +wcwidth==0.2.6 +webencodings==0.5.1 +websocket-client==1.6.1 +widgetsnbextension==4.0.8 +yarl==1.9.2 +zipp==3.15.0 \ No newline at end of file diff --git a/python/perspective/requirements-38.txt b/python/perspective/requirements-38.txt new file mode 100644 index 0000000000..461dc292d4 --- /dev/null +++ b/python/perspective/requirements-38.txt @@ -0,0 +1,163 @@ +aiofiles==22.1.0 +aiohttp==3.8.5 +aiosignal==1.3.1 +aiosqlite==0.19.0 +alabaster==0.7.13 +annotated-types==0.5.0 +anyio==3.7.1 +appnope==0.1.3 +argon2-cffi==21.3.0 +argon2-cffi-bindings==21.2.0 +arrow==1.2.3 +asttokens==2.2.1 +async-timeout==4.0.2 +attrs==23.1.0 +Babel==2.12.1 +backcall==0.2.0 +beautifulsoup4==4.12.2 +black==23.1.0 +bleach==6.0.0 +certifi==2023.7.22 +cffi==1.15.1 +charset-normalizer==3.2.0 +click==8.1.6 +comm==0.1.4 +coverage==7.2.7 +debugpy==1.6.7 +decorator==5.1.1 +defusedxml==0.7.1 +deprecation==2.1.0 +docutils==0.20.1 +entrypoints==0.4 +exceptiongroup==1.1.2 +executing==1.2.0 +Faker==19.2.0 +fastapi==0.100.1 +fastjsonschema==2.18.0 +flake8==6.1.0 +flake8-black==0.3.6 +fqdn==1.5.1 +frozenlist==1.4.0 +future==0.18.3 +h11==0.14.0 +html5lib==1.1 +httpcore==0.17.3 +httpx==0.24.1 +idna==3.4 +imagesize==1.4.1 +importlib-metadata==6.8.0 +importlib-resources==6.0.0 +iniconfig==2.0.0 +ipykernel==6.25.0 +ipython==8.12.2 +ipython-genutils==0.2.0 +ipywidgets==8.1.0 +isoduration==20.11.0 +jedi==0.19.0 +Jinja2==3.1.2 +json5==0.9.14 +jsonpointer==2.4 +jsonschema==4.18.6 +jsonschema-specifications==2023.7.1 +jupyter-events==0.7.0 +jupyter-ydoc==0.2.5 +jupyter_client==7.4.9 +jupyter_core==5.3.1 +jupyter_packaging==0.12.3 +jupyter_server==2.7.0 +jupyter_server_fileid==0.9.0 +jupyter_server_terminals==0.4.4 +jupyter_server_ydoc==0.8.0 +jupyterlab==3.6.5 +jupyterlab-pygments==0.2.2 +jupyterlab-widgets==3.0.8 +jupyterlab_server==2.24.0 +MarkupSafe==2.1.3 +matplotlib-inline==0.1.6 +mccabe==0.7.0 +mistune==3.0.1 +multidict==6.0.4 +mypy-extensions==1.0.0 +nbclassic==1.0.0 +nbclient==0.8.0 +nbconvert==7.7.3 +nbformat==5.9.2 +nest-asyncio==1.5.7 +notebook==6.5.5 +notebook_shim==0.2.3 +numpy==1.24.4 +overrides==7.3.1 +packaging==23.1 +pandas==2.0.3 +pandocfilters==1.5.0 +parso==0.8.3 +pathspec==0.11.2 +pexpect==4.8.0 +pickleshare==0.7.5 +pkgutil_resolve_name==1.3.10 +platformdirs==3.10.0 +pluggy==1.2.0 +prometheus-client==0.17.1 +prompt-toolkit==3.0.39 +psutil==5.9.5 +ptyprocess==0.7.0 +pure-eval==0.2.2 +pyarrow==12.0.1 +pybind11==2.11.1 +pycodestyle==2.11.0 +pycparser==2.21 +pydantic==2.1.1 +pydantic_core==2.4.0 +pyflakes==3.1.0 +Pygments==2.15.1 +pytest==7.4.0 +pytest-aiohttp==1.0.4 +pytest-asyncio==0.21.1 +pytest-cov==4.1.0 +pytest-tornado==0.8.1 +pytest_check_links==0.9.0 +python-dateutil==2.8.2 +python-json-logger==2.0.7 +pytz==2023.3 +PyYAML==6.0.1 +pyzmq==24.0.1 +referencing==0.30.1 +requests==2.31.0 +rfc3339-validator==0.1.4 +rfc3986-validator==0.1.1 +rpds-py==0.9.2 +Send2Trash==1.8.2 +six==1.16.0 +sniffio==1.3.0 +snowballstemmer==2.2.0 +soupsieve==2.4.1 +Sphinx==7.1.2 +sphinx-markdown-builder==0.6.4 +sphinxcontrib-applehelp==1.0.4 +sphinxcontrib-devhelp==1.0.2 +sphinxcontrib-htmlhelp==2.0.1 +sphinxcontrib-jsmath==1.0.1 +sphinxcontrib-qthelp==1.0.3 +sphinxcontrib-serializinghtml==1.1.5 +stack-data==0.6.2 +starlette==0.27.0 +tabulate==0.9.0 +terminado==0.17.1 +tinycss2==1.2.1 +tomli==2.0.1 +tomlkit==0.12.1 +tornado==6.3.2 +traitlets==5.9.0 +typing_extensions==4.7.1 +tzdata==2023.3 +uri-template==1.3.0 +urllib3==2.0.4 +wcwidth==0.2.6 +webcolors==1.13 +webencodings==0.5.1 +websocket-client==1.6.1 +widgetsnbextension==4.0.8 +y-py==0.6.0 +yarl==1.9.2 +ypy-websocket==0.8.4 +zipp==3.16.2 \ No newline at end of file diff --git a/python/perspective/requirements-39.txt b/python/perspective/requirements-39.txt new file mode 100644 index 0000000000..f81bb29072 --- /dev/null +++ b/python/perspective/requirements-39.txt @@ -0,0 +1,161 @@ +aiofiles==22.1.0 +aiohttp==3.8.5 +aiosignal==1.3.1 +aiosqlite==0.19.0 +alabaster==0.7.13 +annotated-types==0.5.0 +anyio==3.7.1 +appnope==0.1.3 +argon2-cffi==21.3.0 +argon2-cffi-bindings==21.2.0 +arrow==1.2.3 +asttokens==2.2.1 +async-timeout==4.0.2 +attrs==23.1.0 +Babel==2.12.1 +backcall==0.2.0 +beautifulsoup4==4.12.2 +black==23.1.0 +bleach==6.0.0 +certifi==2023.7.22 +cffi==1.15.1 +charset-normalizer==3.2.0 +click==8.1.6 +comm==0.1.4 +coverage==7.2.7 +debugpy==1.6.7 +decorator==5.1.1 +defusedxml==0.7.1 +deprecation==2.1.0 +docutils==0.20.1 +entrypoints==0.4 +exceptiongroup==1.1.2 +executing==1.2.0 +Faker==19.2.0 +fastapi==0.100.1 +fastjsonschema==2.18.0 +flake8==6.1.0 +flake8-black==0.3.6 +fqdn==1.5.1 +frozenlist==1.4.0 +future==0.18.3 +h11==0.14.0 +html5lib==1.1 +httpcore==0.17.3 +httpx==0.24.1 +idna==3.4 +imagesize==1.4.1 +importlib-metadata==6.8.0 +iniconfig==2.0.0 +ipykernel==6.25.0 +ipython==8.14.0 +ipython-genutils==0.2.0 +ipywidgets==8.1.0 +isoduration==20.11.0 +jedi==0.19.0 +Jinja2==3.1.2 +json5==0.9.14 +jsonpointer==2.4 +jsonschema==4.18.6 +jsonschema-specifications==2023.7.1 +jupyter-events==0.7.0 +jupyter-ydoc==0.2.5 +jupyter_client==7.4.9 +jupyter_core==5.3.1 +jupyter_packaging==0.12.3 +jupyter_server==2.7.0 +jupyter_server_fileid==0.9.0 +jupyter_server_terminals==0.4.4 +jupyter_server_ydoc==0.8.0 +jupyterlab==3.6.5 +jupyterlab-pygments==0.2.2 +jupyterlab-widgets==3.0.8 +jupyterlab_server==2.24.0 +MarkupSafe==2.1.3 +matplotlib-inline==0.1.6 +mccabe==0.7.0 +mistune==3.0.1 +multidict==6.0.4 +mypy-extensions==1.0.0 +nbclassic==1.0.0 +nbclient==0.8.0 +nbconvert==7.7.3 +nbformat==5.9.2 +nest-asyncio==1.5.7 +notebook==6.5.5 +notebook_shim==0.2.3 +numpy==1.25.2 +overrides==7.3.1 +packaging==23.1 +pandas==2.0.3 +pandocfilters==1.5.0 +parso==0.8.3 +pathspec==0.11.2 +pexpect==4.8.0 +pickleshare==0.7.5 +platformdirs==3.10.0 +pluggy==1.2.0 +prometheus-client==0.17.1 +prompt-toolkit==3.0.39 +psutil==5.9.5 +ptyprocess==0.7.0 +pure-eval==0.2.2 +pyarrow==12.0.1 +pybind11==2.11.1 +pycodestyle==2.11.0 +pycparser==2.21 +pydantic==2.1.1 +pydantic_core==2.4.0 +pyflakes==3.1.0 +Pygments==2.15.1 +pytest==7.4.0 +pytest-aiohttp==1.0.4 +pytest-asyncio==0.21.1 +pytest-cov==4.1.0 +pytest-tornado==0.8.1 +pytest_check_links==0.9.0 +python-dateutil==2.8.2 +python-json-logger==2.0.7 +pytz==2023.3 +PyYAML==6.0.1 +pyzmq==24.0.1 +referencing==0.30.1 +requests==2.31.0 +rfc3339-validator==0.1.4 +rfc3986-validator==0.1.1 +rpds-py==0.9.2 +Send2Trash==1.8.2 +six==1.16.0 +sniffio==1.3.0 +snowballstemmer==2.2.0 +soupsieve==2.4.1 +Sphinx==7.1.2 +sphinx-markdown-builder==0.6.4 +sphinxcontrib-applehelp==1.0.4 +sphinxcontrib-devhelp==1.0.2 +sphinxcontrib-htmlhelp==2.0.1 +sphinxcontrib-jsmath==1.0.1 +sphinxcontrib-qthelp==1.0.3 +sphinxcontrib-serializinghtml==1.1.5 +stack-data==0.6.2 +starlette==0.27.0 +tabulate==0.9.0 +terminado==0.17.1 +tinycss2==1.2.1 +tomli==2.0.1 +tomlkit==0.12.1 +tornado==6.3.2 +traitlets==5.9.0 +typing_extensions==4.7.1 +tzdata==2023.3 +uri-template==1.3.0 +urllib3==2.0.4 +wcwidth==0.2.6 +webcolors==1.13 +webencodings==0.5.1 +websocket-client==1.6.1 +widgetsnbextension==4.0.8 +y-py==0.6.0 +yarl==1.9.2 +ypy-websocket==0.8.4 +zipp==3.16.2 \ No newline at end of file diff --git a/tools/perspective-scripts/_requires_python.mjs b/tools/perspective-scripts/_requires_python.mjs index 562c57a4f3..777336c913 100644 --- a/tools/perspective-scripts/_requires_python.mjs +++ b/tools/perspective-scripts/_requires_python.mjs @@ -14,21 +14,27 @@ import { default as sh, python_version, copy_files_to_python_folder, + py_requirements, } from "./sh_perspective.mjs"; let PYTHON = sh(python_version()); -const requires_script = `import distutils.core; setup = distutils.core.run_setup('python/perspective/setup.py'); print(' '.join(['"' + requirement + '"' for requirement in setup.extras_require['dev']]))`; +if (process.env.PSP_OLD_SHITTY_INSTALL_METHOD) { + const requires_script = `import distutils.core; setup = distutils.core.run_setup('python/perspective/setup.py'); print(' '.join(['"' + requirement + '"' for requirement in setup.extras_require['dev']]))`; -// copy build/config files into python folder -copy_files_to_python_folder(); + // copy build/config files into python folder + copy_files_to_python_folder(); -// install build meta deps, this is a necessary evil to keep the setup.py clean -sh`${PYTHON} -m pip install -U jupyter_packaging==0.12.3`.runSync(); -const requirements = await sh`${PYTHON} -c ${requires_script}`.execSync(); -if (requirements.trim().length > 0) { - console.log(`Installing: ${requirements}`); - sh`${PYTHON} -m pip install -U ${sh(requirements)}`.log().runSync(); + // install build meta deps, this is a necessary evil to keep the setup.py clean + sh`${PYTHON} -m pip install jupyter_packaging==0.12.3`.runSync(); + const requirements = await sh`${PYTHON} -c ${requires_script}`.execSync(); + if (requirements.trim().length > 0) { + console.log(`Installing: ${requirements}`); + sh`${PYTHON} -m pip install -U ${sh(requirements)}`.log().runSync(); + } else { + console.log("Nothing to install"); + } } else { - console.log("Nothing to install"); + sh`${PYTHON} -m pip install -r ${py_requirements()}`.runSync(); + sh`${PYTHON} -m pip install -U jupyter_packaging==0.12.3`.runSync(); } diff --git a/tools/perspective-scripts/_wheel_python.mjs b/tools/perspective-scripts/_wheel_python.mjs index 1861347c8d..bd3e31ba5c 100644 --- a/tools/perspective-scripts/_wheel_python.mjs +++ b/tools/perspective-scripts/_wheel_python.mjs @@ -59,7 +59,7 @@ if (IS_DOCKER) { // These are system deps that may only be in place from pep-517/518 so // lets reinstall them to be sure - cmd.sh`${PYTHON} -m pip install -U 'numpy>=1.13.1' jupyter_packaging wheel twine auditwheel`; + cmd.sh`${PYTHON} -m pip install 'numpy>=1.13.1' jupyter_packaging wheel twine auditwheel`; // remove the build folder so we completely rebuild (and pick up the // libs we just installed above, since this build method won't use diff --git a/tools/perspective-scripts/build_python.mjs b/tools/perspective-scripts/build_python.mjs index 9593bad5ef..c9eb457701 100644 --- a/tools/perspective-scripts/build_python.mjs +++ b/tools/perspective-scripts/build_python.mjs @@ -17,6 +17,7 @@ import { getarg, python_version, copy_files_to_python_folder, + py_requirements, } from "./sh_perspective.mjs"; const IS_CI = getarg("--ci"); @@ -47,9 +48,9 @@ if (SETUP_ONLY) { let cmd; if (IS_CI) { - cmd = sh`${PYTHON} -m pip install -e .[dev] --no-clean`; + cmd = sh`${PYTHON} -m pip install -r ${py_requirements()} -e .[dev] --no-clean`; } else if (IS_INSTALL) { - cmd = sh`${PYTHON} -m pip install .`; + cmd = sh`${PYTHON} -m pip install -r ${py_requirements()} .`; } else if (IS_PYODIDE) { cmd = sh`pyodide build . --exports=pyinit`; } else { diff --git a/tools/perspective-scripts/sh_perspective.mjs b/tools/perspective-scripts/sh_perspective.mjs index df5f8ae417..77c127a985 100644 --- a/tools/perspective-scripts/sh_perspective.mjs +++ b/tools/perspective-scripts/sh_perspective.mjs @@ -253,6 +253,15 @@ export const copy_files_to_python_folder = (link_files) => { } }; +export function py_requirements() { + const version = sh`python3 --version` + .execSync() + .replace("Python ", "") + .replace(".", "") + .replace(/\..*?$/m, ""); + return `python/perspective/requirements-${version}.txt`; +} + /** * Get the python version to use from env/arguments *