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/requirements-dev.txt b/python/perspective/requirements-dev.txt new file mode 100644 index 0000000000..56caf57d9e --- /dev/null +++ b/python/perspective/requirements-dev.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.3 +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==18.13.0 +fastapi==0.100.1 +fastjsonschema==2.18.0 +flake8==5.0.4 +flake8-black==0.3.6 +fqdn==1.5.1 +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 +iniconfig==2.0.0 +ipykernel==6.25.0 +ipython==8.13.0 +ipython-genutils==0.2.0 +ipywidgets==8.0.7 +isoduration==20.11.0 +jedi==0.19.0 +Jinja2==3.1.2 +json5==0.9.14 +jsonpointer==2.4 +jsonschema==4.18.4 +jsonschema-specifications==2023.7.1 +jupyter-events==0.6.3 +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.1 +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 +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.9.1 +pycparser==2.21 +pydantic==2.1.1 +pydantic_core==2.4.0 +pyflakes==2.5.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.0 +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.1 +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/tools/perspective-scripts/_requires_python.mjs b/tools/perspective-scripts/_requires_python.mjs index 562c57a4f3..41a6cbf648 100644 --- a/tools/perspective-scripts/_requires_python.mjs +++ b/tools/perspective-scripts/_requires_python.mjs @@ -18,17 +18,21 @@ import { 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 python/perspective/requirements-dev.txt`.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..c7902ce749 100644 --- a/tools/perspective-scripts/build_python.mjs +++ b/tools/perspective-scripts/build_python.mjs @@ -47,9 +47,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 ./requirements-dev.txt -e .[dev] --no-clean`; } else if (IS_INSTALL) { - cmd = sh`${PYTHON} -m pip install .`; + cmd = sh`${PYTHON} -m pip install -r ./requirements-dev.txt .`; } else if (IS_PYODIDE) { cmd = sh`pyodide build . --exports=pyinit`; } else {