From 24e68a34a02b946c6fdbb5b4ec29f3ea83d850ef Mon Sep 17 00:00:00 2001 From: Okke van Eck <39912605+OkkeVanEck@users.noreply.github.com> Date: Sun, 16 Jul 2023 11:49:22 +0200 Subject: [PATCH] Develop (#55) * Rework readme (#6) * Renamed actions and added badges to readme * Switched slash for dash * Fix import structure (#10) * Fixed import structure * Removed pull_request target as push also seems to trigger on pull request? * Fix visualization helpers (#13) * Fixed bugs * Added pull_request again as trigger for workflow * Update build_deploy.yml * Fix compressing core and installed pre-commit (#15) * Pre-commit test * Added local hook for zipping core * Added .zip and .tar.gz autozips into core_archives folder * Zip test * tar.gz test * Compressing works, only really ugly workaround for moving files * Refered to the archives in the README * Fix datasets (#17) * Release v0.2a1 (#14) * Rework readme (#6) * Renamed actions and added badges to readme * Switched slash for dash * Fix import structure (#10) * Fixed import structure * Removed pull_request target as push also seems to trigger on pull request? * Fix visualization helpers (#13) * Fixed bugs * Added pull_request again as trigger for workflow * Deleted old log file and changed setup version * Restructured dataset files and added package_data to setup.py, also changed max-line-length for black to 79 * New setup for loading datasets * Added dataset inclusion * Added archiving for datasets * Test for matrix include (#18) * Test for matrix include * Added runOns variable * Changed to a custom action * Added inputFile * Copied literal line * Changed strategy order * Check only ubuntu * Extended matrix with all OS and extra CIBW_BUILD ENV flag * Added default of only python 3.6 builds for 64-bit if push is not to master * Added enter to README * Release v0.2a2 (#20) * Release v0.2a1 (#14) * Rework readme (#6) * Renamed actions and added badges to readme * Switched slash for dash * Fix import structure (#10) * Fixed import structure * Removed pull_request target as push also seems to trigger on pull request? * Fix visualization helpers (#13) * Fixed bugs * Added pull_request again as trigger for workflow * Deleted old log file and changed setup version * Changed master trigger to release trigger * Moved wildcard * Moved wildcard of JMESPath * Added dot * Trying starts_with * Switched arguments * Excluded python 2.7 pypy * New jmespath filter test * Changed version number * Add PyTest to repo and CI (#21) * Added first pytest script for protein class and a script for performing local tests. * Added pytest in CI * Forgot -r for file * Version of pytest with pytest at end of pipeline * New pytest CI where pip installs local package * Fixed tabs and added caching of python/pip environment * Removed dot and added removal of build dirs to manage clean command * Added cache ignores for env setup and ids for the caches * Fixed cache IDs * Renamed cache because GitHub does not allow for clearing caches... * Moved python setup to be before cache loading * Run that will install the dependencies * Uncommented the cache-hit detection for installing dependencies * Updated pre-commit version in hope that runner will create new cache * Added more tests and added flake8 incompatability * Other flake8 config try * Reset to .flake8 file * Downgrade of pre-commit to force dep. installation in CI * Different pre-commit version * Added depth_first tests * Added depth_first_bnb tests * Push to try and install all dependencies correctly * Added back cache check for installing dependencies. New way of calling flake8, added class dependencies on tests * Removed ls * Core change test * Core change test - new correctly * Core archiving works * Fixed pytest ordering and upgraded pandas version to trigger new cache * Upgraded pandas * Changed pandas version to 1.1.0 * Removed caching of CI and moved code to new PR * Add CI caching for python environments (#23) * Added first pytest script for protein class and a script for performing local tests. * Added pytest in CI * Forgot -r for file * Version of pytest with pytest at end of pipeline * New pytest CI where pip installs local package * Fixed tabs and added caching of python/pip environment * Removed dot and added removal of build dirs to manage clean command * Added cache ignores for env setup and ids for the caches * Fixed cache IDs * Renamed cache because GitHub does not allow for clearing caches... * Moved python setup to be before cache loading * Run that will install the dependencies * Uncommented the cache-hit detection for installing dependencies * Updated pre-commit version in hope that runner will create new cache * Added more tests and added flake8 incompatability * Other flake8 config try * Reset to .flake8 file * Downgrade of pre-commit to force dep. installation in CI * Different pre-commit version * Added depth_first tests * Added depth_first_bnb tests * Push to try and install all dependencies correctly * Added back cache check for installing dependencies. New way of calling flake8, added class dependencies on tests * Removed ls * Core change test * Core change test - new correctly * Core archiving works * Fixed pytest ordering and upgraded pandas version to trigger new cache * Upgraded pandas * Changed pandas version to 1.1.0 * Dependency check * new flake8 installation * Flake8 action * Added pip update flag * Cleaned up the flake8 action usage * Trying to install new deps * Removed caching, only using dependencies during pytest * Add documentation to project (#24) * Ran the sphinx quickstart, ignored mypy on docs * First version of docs * Added installation instructions for python * Finished installation page and added quickstart info (not done yet) * Finished v1 of the quickstart guide * Removed heterogeneous setup page and added todo for creating example * Added manpages for the datasets and algorithms * Added helpers and visualize documentation * Added placeholders for the Protein properties * Added methods of Protein to the documentation * Small changes * Reworked the README * Added whitespace for enter * Added github star and filler-logo * Starting on logo * Added logo * Removed github fork banner * Logo test * Changed logo loading * New test * Trying image tag * Trying image tag 2.0 * Trying image tag 2.0 * Trying relative link * New size * New logo test * New logo try * New logo * Reworked logo * Downgraded matplotlib to alllow CI pipeline * Added edittable logo, fixed small rst things, fixed compression of cores * Added some figures, added reference to license, added license * Started on AminoAcid class (#28) * Started on AminoAcid class * Added comments in core, still bugs to sort out * Fixed more bugs in the core when adding AminoAcid class * Moved part of bind * Integrated AminoAcid class and fixed Protein tests * Mid way testing for new depth-first approach * Added local check script and depth_first works for HPPH * Fixed depth_first search new version * Fixed depth_first_bnb algorithm using new system * Fixed small core bugs, working on new logo * Mid-way of changing bond_value structure * Cleaned up bugs from intermediate version. Bumped versions of requirements. Introduced max_weights string for keeping track of possible future scores. Merged bond_semetry model setup with the else model setup. Fixed bug with cur_len of protein always being 1. Fixed getting the weight of a amino bond * Bumbed python version in github workflow for matplotlib version dependency * Bumped workflow python version to 3.9 as numpy 1.23 requires so * Removed h_idxs from prune function. Nothing has been tested * Fixed Protein signature for pybind build * Setup for debugging current protein issues * Introduced core testing code * Finished test script for amino acids * Started on Protein core tests * Fixed protein test compilation * Fixed first couple protein generation checks * Added more debug statements for core tests * Fixed bugs with bond checks * Fixed generation of weighted amino maps * Finished all protein generation test * Added debug options in script to run core tests with gdb * Added removal of amino tests * Updated some pytest asserts. Added pytest and core_test asserts for score updates * Updated reference for black in pre-commit * Try adding core build in github actions pipeline * Fixed local algorithm core tests * Fixed dfs_bnb * Fixed pybind11 change to providing protein pointers * Added special compilation case for MacOS * Changed minimum Python version to 3.9 as 3.11 will release soon * Changed always build to only build python 3.9 versions * Changed CIwheel builds to be specific instead of exlcuding based * Leaving documentation as is and adding issue for the future * Added more licensing references * Added config file for rtfd to set python version to 3.9 * Temp commit to switch branch * Update core merge (#33) * Started on AminoAcid class * Added comments in core, still bugs to sort out * Fixed more bugs in the core when adding AminoAcid class * Moved part of bind * Integrated AminoAcid class and fixed Protein tests * Mid way testing for new depth-first approach * Added local check script and depth_first works for HPPH * Fixed depth_first search new version * Fixed depth_first_bnb algorithm using new system * Fixed small core bugs, working on new logo * Mid-way of changing bond_value structure * Cleaned up bugs from intermediate version. Bumped versions of requirements. Introduced max_weights string for keeping track of possible future scores. Merged bond_semetry model setup with the else model setup. Fixed bug with cur_len of protein always being 1. Fixed getting the weight of a amino bond * Bumbed python version in github workflow for matplotlib version dependency * Bumped workflow python version to 3.9 as numpy 1.23 requires so * Removed h_idxs from prune function. Nothing has been tested * Fixed Protein signature for pybind build * Setup for debugging current protein issues * Introduced core testing code * Finished test script for amino acids * Started on Protein core tests * Fixed protein test compilation * Fixed first couple protein generation checks * Added more debug statements for core tests * Fixed bugs with bond checks * Fixed generation of weighted amino maps * Finished all protein generation test * Added debug options in scriptn to run core tests with gdb * Fixed the last_pos indexing error from place_amino. Changed the 'changed' variable to 'solutions_found'-like variable * Solved typing issues * Finished protein movement tests * Added removal of amino tests * Updated some pytest asserts. Added pytest and core_test asserts for score updates * Updated reference for black in pre-commit * Fixed score generation of core_test * Fixed score update through removal * Try adding core build in github actions pipeline * Started on algorithm code * Changed signature of depth_first to use pointers. Added testing code for 2d and 3d depth_first tests * Fixed local algorithm core tests * Fixed dfs_bnb * Fixed pybind11 change to providing protein pointers * Added dynamic_lookup for linking python in case of undefined symbols * New way of setting -undefined flag * Updated the way of passing -undefined setting for macos * Added special compilation case for MacOS * Saving Furo update for issue * Changed minimum Python version to 3.9 as 3.11 will release soon * Updated versions for wheel deployment * Changed always build to only build python 3.9 versions * Changed CIwheel builds to be specific instead of exlcuding based * Leaving documentation as is and adding issue for the future * Added more licensing references * Added config file for rtfd to set python version to 3.9 * Removed commented code * Merge visualization updates (#41) (#42) * Develop merge into master to sync commits. (#41) * Rework readme (#6) * Renamed actions and added badges to readme * Switched slash for dash * Fix import structure (#10) * Fixed import structure * Removed pull_request target as push also seems to trigger on pull request? * Fix visualization helpers (#13) * Fixed bugs * Added pull_request again as trigger for workflow * Update build_deploy.yml * Fix compressing core and installed pre-commit (#15) * Pre-commit test * Added local hook for zipping core * Added .zip and .tar.gz autozips into core_archives folder * Zip test * tar.gz test * Compressing works, only really ugly workaround for moving files * Refered to the archives in the README * Fix datasets (#17) * Release v0.2a1 (#14) * Rework readme (#6) * Renamed actions and added badges to readme * Switched slash for dash * Fix import structure (#10) * Fixed import structure * Removed pull_request target as push also seems to trigger on pull request? * Fix visualization helpers (#13) * Fixed bugs * Added pull_request again as trigger for workflow * Deleted old log file and changed setup version * Restructured dataset files and added package_data to setup.py, also changed max-line-length for black to 79 * New setup for loading datasets * Added dataset inclusion * Added archiving for datasets * Test for matrix include (#18) * Test for matrix include * Added runOns variable * Changed to a custom action * Added inputFile * Copied literal line * Changed strategy order * Check only ubuntu * Extended matrix with all OS and extra CIBW_BUILD ENV flag * Added default of only python 3.6 builds for 64-bit if push is not to master * Added enter to README * Release v0.2a2 (#20) * Release v0.2a1 (#14) * Rework readme (#6) * Renamed actions and added badges to readme * Switched slash for dash * Fix import structure (#10) * Fixed import structure * Removed pull_request target as push also seems to trigger on pull request? * Fix visualization helpers (#13) * Fixed bugs * Added pull_request again as trigger for workflow * Deleted old log file and changed setup version * Changed master trigger to release trigger * Moved wildcard * Moved wildcard of JMESPath * Added dot * Trying starts_with * Switched arguments * Excluded python 2.7 pypy * New jmespath filter test * Changed version number * Add PyTest to repo and CI (#21) * Added first pytest script for protein class and a script for performing local tests. * Added pytest in CI * Forgot -r for file * Version of pytest with pytest at end of pipeline * New pytest CI where pip installs local package * Fixed tabs and added caching of python/pip environment * Removed dot and added removal of build dirs to manage clean command * Added cache ignores for env setup and ids for the caches * Fixed cache IDs * Renamed cache because GitHub does not allow for clearing caches... * Moved python setup to be before cache loading * Run that will install the dependencies * Uncommented the cache-hit detection for installing dependencies * Updated pre-commit version in hope that runner will create new cache * Added more tests and added flake8 incompatability * Other flake8 config try * Reset to .flake8 file * Downgrade of pre-commit to force dep. installation in CI * Different pre-commit version * Added depth_first tests * Added depth_first_bnb tests * Push to try and install all dependencies correctly * Added back cache check for installing dependencies. New way of calling flake8, added class dependencies on tests * Removed ls * Core change test * Core change test - new correctly * Core archiving works * Fixed pytest ordering and upgraded pandas version to trigger new cache * Upgraded pandas * Changed pandas version to 1.1.0 * Removed caching of CI and moved code to new PR * Add CI caching for python environments (#23) * Added first pytest script for protein class and a script for performing local tests. * Added pytest in CI * Forgot -r for file * Version of pytest with pytest at end of pipeline * New pytest CI where pip installs local package * Fixed tabs and added caching of python/pip environment * Removed dot and added removal of build dirs to manage clean command * Added cache ignores for env setup and ids for the caches * Fixed cache IDs * Renamed cache because GitHub does not allow for clearing caches... * Moved python setup to be before cache loading * Run that will install the dependencies * Uncommented the cache-hit detection for installing dependencies * Updated pre-commit version in hope that runner will create new cache * Added more tests and added flake8 incompatability * Other flake8 config try * Reset to .flake8 file * Downgrade of pre-commit to force dep. installation in CI * Different pre-commit version * Added depth_first tests * Added depth_first_bnb tests * Push to try and install all dependencies correctly * Added back cache check for installing dependencies. New way of calling flake8, added class dependencies on tests * Removed ls * Core change test * Core change test - new correctly * Core archiving works * Fixed pytest ordering and upgraded pandas version to trigger new cache * Upgraded pandas * Changed pandas version to 1.1.0 * Dependency check * new flake8 installation * Flake8 action * Added pip update flag * Cleaned up the flake8 action usage * Trying to install new deps * Removed caching, only using dependencies during pytest * Add documentation to project (#24) * Ran the sphinx quickstart, ignored mypy on docs * First version of docs * Added installation instructions for python * Finished installation page and added quickstart info (not done yet) * Finished v1 of the quickstart guide * Removed heterogeneous setup page and added todo for creating example * Added manpages for the datasets and algorithms * Added helpers and visualize documentation * Added placeholders for the Protein properties * Added methods of Protein to the documentation * Small changes * Reworked the README * Added whitespace for enter * Added github star and filler-logo * Starting on logo * Added logo * Removed github fork banner * Logo test * Changed logo loading * New test * Trying image tag * Trying image tag 2.0 * Trying image tag 2.0 * Trying relative link * New size * New logo test * New logo try * New logo * Reworked logo * Downgraded matplotlib to alllow CI pipeline * Added edittable logo, fixed small rst things, fixed compression of cores * Added some figures, added reference to license, added license * Started on AminoAcid class (#28) * Started on AminoAcid class * Added comments in core, still bugs to sort out * Fixed more bugs in the core when adding AminoAcid class * Moved part of bind * Integrated AminoAcid class and fixed Protein tests * Mid way testing for new depth-first approach * Added local check script and depth_first works for HPPH * Fixed depth_first search new version * Fixed depth_first_bnb algorithm using new system * Fixed small core bugs, working on new logo * Mid-way of changing bond_value structure * Cleaned up bugs from intermediate version. Bumped versions of requirements. Introduced max_weights string for keeping track of possible future scores. Merged bond_semetry model setup with the else model setup. Fixed bug with cur_len of protein always being 1. Fixed getting the weight of a amino bond * Bumbed python version in github workflow for matplotlib version dependency * Bumped workflow python version to 3.9 as numpy 1.23 requires so * Removed h_idxs from prune function. Nothing has been tested * Fixed Protein signature for pybind build * Setup for debugging current protein issues * Introduced core testing code * Finished test script for amino acids * Started on Protein core tests * Fixed protein test compilation * Fixed first couple protein generation checks * Added more debug statements for core tests * Fixed bugs with bond checks * Fixed generation of weighted amino maps * Finished all protein generation test * Added debug options in script to run core tests with gdb * Added removal of amino tests * Updated some pytest asserts. Added pytest and core_test asserts for score updates * Updated reference for black in pre-commit * Try adding core build in github actions pipeline * Fixed local algorithm core tests * Fixed dfs_bnb * Fixed pybind11 change to providing protein pointers * Added special compilation case for MacOS * Changed minimum Python version to 3.9 as 3.11 will release soon * Changed always build to only build python 3.9 versions * Changed CIwheel builds to be specific instead of exlcuding based * Leaving documentation as is and adding issue for the future * Added more licensing references * Added config file for rtfd to set python version to 3.9 * Temp commit to switch branch * Update core merge (#33) * Started on AminoAcid class * Added comments in core, still bugs to sort out * Fixed more bugs in the core when adding AminoAcid class * Moved part of bind * Integrated AminoAcid class and fixed Protein tests * Mid way testing for new depth-first approach * Added local check script and depth_first works for HPPH * Fixed depth_first search new version * Fixed depth_first_bnb algorithm using new system * Fixed small core bugs, working on new logo * Mid-way of changing bond_value structure * Cleaned up bugs from intermediate version. Bumped versions of requirements. Introduced max_weights string for keeping track of possible future scores. Merged bond_semetry model setup with the else model setup. Fixed bug with cur_len of protein always being 1. Fixed getting the weight of a amino bond * Bumbed python version in github workflow for matplotlib version dependency * Bumped workflow python version to 3.9 as numpy 1.23 requires so * Removed h_idxs from prune function. Nothing has been tested * Fixed Protein signature for pybind build * Setup for debugging current protein issues * Introduced core testing code * Finished test script for amino acids * Started on Protein core tests * Fixed protein test compilation * Fixed first couple protein generation checks * Added more debug statements for core tests * Fixed bugs with bond checks * Fixed generation of weighted amino maps * Finished all protein generation test * Added debug options in scriptn to run core tests with gdb * Fixed the last_pos indexing error from place_amino. Changed the 'changed' variable to 'solutions_found'-like variable * Solved typing issues * Finished protein movement tests * Added removal of amino tests * Updated some pytest asserts. Added pytest and core_test asserts for score updates * Updated reference for black in pre-commit * Fixed score generation of core_test * Fixed score update through removal * Try adding core build in github actions pipeline * Started on algorithm code * Changed signature of depth_first to use pointers. Added testing code for 2d and 3d depth_first tests * Fixed local algorithm core tests * Fixed dfs_bnb * Fixed pybind11 change to providing protein pointers * Added dynamic_lookup for linking python in case of undefined symbols * New way of setting -undefined flag * Updated the way of passing -undefined setting for macos * Added special compilation case for MacOS * Saving Furo update for issue * Changed minimum Python version to 3.9 as 3.11 will release soon * Updated versions for wheel deployment * Changed always build to only build python 3.9 versions * Changed CIwheel builds to be specific instead of exlcuding based * Leaving documentation as is and adding issue for the future * Added more licensing references * Added config file for rtfd to set python version to 3.9 * Removed commented code * Splitted visualization function to allow for multiple styles * Fixed function for plotting proteins * Fixed bug where no bonds would form * Fixed paper style * V1 paper style plots * Fixed first paper visualization. Added visualization to test set * Ran pre-commit * Increased version to make new visualizations available * Add beam (#47) * V1 (untested) of a beam_search function * Compiles and runs, does not work * In mids of debug * Small changes * Changed wrong author usage in toml. Fixing copy issues with proteins and amino acids * Fixed copy operators for Protein and AminoAcid * Fixed bug in assignment and copy operators. New try for testing beam, which is also semi fixed * Fixed beam_search bugs * Added a more specific heuristic function for beam search and removed unnescessary branching in reach_prune * Solved bug in beam_search and add protein length to print * Finished beam search tests * Extended AminoAcid with << and = operator overloads * Added ptests for beam search and naive prune * Fixed typo for beam search class * Trying other pytest approach for mac * Trying run-on conditional from matrix * Removed file specifier for pytest * Added Windows runner check to linux * Enabled windows runner again * ALso removed big beam width * Removing dir slash in setuptools for windows buil * Removed windows due to Pybind11 bug * 32 change documentation to match core functionality (#53) * Made abstraction for version identification. Changed docs style to Furo. Updated internal contents to match core more. Visualization and Datasets still need to be done, as well as more visualizations * Wrote more on visualization and datasets. Only need to add correct figures, and fix pipeline issue when generating the core * Fixed versioning and importing for compilation. Added new figures for quickstart docs * Added last missing method * Added AminoAcid class to the API focs * Added beam search to the docs api * Added furo to docs requirements.txt * Trying different configuration for building readthedocs * Removed versioning * Exended and pinned requirements for docs * Changed python version to make readthedocs work. Also changed some small things * More minimal setup for furo * Upped versioning and new try for dong data reading * Removed commented code * Trying Windows build again * Trying full pytest on MacOS * Different Pip upgrade line for window * Excluded Windows again because it wants to be a special snowflake.. * Upped pybind in setup --- .github/workflows/matrix_includes.BAK | 12 +- .github/workflows/matrix_includes.json | 8 +- .readthedocs.yaml | 11 +- README.md | 6 +- docs/requirements.txt | 3 + docs/source/_static/prospr_logo.png | Bin 959056 -> 33428 bytes docs/source/_static/prospr_logo.xcf | Bin 52177 -> 0 bytes docs/source/_static/quickstart_basic.png | Bin 0 -> 20493 bytes docs/source/_static/quickstart_paper.png | Bin 0 -> 10752 bytes .../_static/quickstart_paper_no_legend.png | Bin 0 -> 7759 bytes .../source/_static/quickstart_paper_outer.png | Bin 0 -> 10369 bytes docs/source/api.rst | 150 ++++++++++++++- docs/source/conf.py | 55 ++++-- docs/source/index.rst | 2 +- docs/source/installation.rst | 10 +- docs/source/quickstart.rst | 174 +++++++++++++++--- manage.sh | 9 + prospr/__init__.py | 3 +- prospr/_version.py | 1 + prospr/core/core_module.cpp | 2 +- prospr/datasets.py | 6 +- pyproject.toml | 4 +- requirements.txt | 21 ++- 23 files changed, 389 insertions(+), 88 deletions(-) create mode 100644 docs/requirements.txt delete mode 100644 docs/source/_static/prospr_logo.xcf create mode 100644 docs/source/_static/quickstart_basic.png create mode 100644 docs/source/_static/quickstart_paper.png create mode 100644 docs/source/_static/quickstart_paper_no_legend.png create mode 100644 docs/source/_static/quickstart_paper_outer.png create mode 100644 prospr/_version.py diff --git a/.github/workflows/matrix_includes.BAK b/.github/workflows/matrix_includes.BAK index 1ef7f6e..57200d8 100644 --- a/.github/workflows/matrix_includes.BAK +++ b/.github/workflows/matrix_includes.BAK @@ -3,37 +3,37 @@ "runOn": "master", "os": "ubuntu-latest", "cibw_skip": "", - "cibw_build": "cp39-* cp310-* pp37-* pp38-* pp39-*" + "cibw_build": "cp39-* cp310-* pp39-*" }, { "runOn": "master", "os": "windows-latest", "cibw_skip": "", - "cibw_build": "cp39-* cp310-* pp37-* pp38-* pp39-*" + "cibw_build": "cp39-* cp310-* pp39-*" }, { "runOn": "master", "os": "macos-latest", "cibw_skip": "", - "cibw_build": "cp39-* cp310-* pp37-* pp38-* pp39-*" + "cibw_build": "cp39-* cp310-* pp39-*" }, { "runOn": "release-", "os": "ubuntu-latest", "cibw_skip": "", - "cibw_build": "cp39-* cp310-* pp37-* pp38-* pp39-*" + "cibw_build": "cp39-* cp310-* pp39-*" }, { "runOn": "release-", "os": "windows-latest", "cibw_skip": "", - "cibw_build": "cp39-* cp310-* pp37-* pp38-* pp39-*" + "cibw_build": "cp39-* cp310-* pp39-*" }, { "runOn": "release-", "os": "macos-latest", "cibw_skip": "", - "cibw_build": "cp39-* cp310-* pp37-* pp38-* pp39-*" + "cibw_build": "cp39-* cp310-* pp39-*" }, { "runOn": "always", diff --git a/.github/workflows/matrix_includes.json b/.github/workflows/matrix_includes.json index e4be8b4..0e87e48 100644 --- a/.github/workflows/matrix_includes.json +++ b/.github/workflows/matrix_includes.json @@ -3,25 +3,25 @@ "runOn": "master", "os": "ubuntu-latest", "cibw_skip": "", - "cibw_build": "cp39-* cp310-* pp37-* pp38-* pp39-*" + "cibw_build": "cp39-* cp310-* pp39-*" }, { "runOn": "master", "os": "macos-latest", "cibw_skip": "", - "cibw_build": "cp39-* cp310-* pp37-* pp38-* pp39-*" + "cibw_build": "cp39-* cp310-* pp39-*" }, { "runOn": "release-", "os": "ubuntu-latest", "cibw_skip": "", - "cibw_build": "cp39-* cp310-* pp37-* pp38-* pp39-*" + "cibw_build": "cp39-* cp310-* pp39-*" }, { "runOn": "release-", "os": "macos-latest", "cibw_skip": "", - "cibw_build": "cp39-* cp310-* pp37-* pp38-* pp39-*" + "cibw_build": "cp39-* cp310-* pp39-*" }, { "runOn": "always", diff --git a/.readthedocs.yaml b/.readthedocs.yaml index 7e02fdf..a2434a1 100644 --- a/.readthedocs.yaml +++ b/.readthedocs.yaml @@ -3,8 +3,15 @@ version: 2 build: os: "ubuntu-20.04" tools: - python: "3.10" + python: "3.9" -# Build from the docs/ directory with Sphinx +# Build from the docs/ directory with Sphinx. sphinx: configuration: docs/source/conf.py + +# Install Python requirements. +python: + install: + - requirements: docs/requirements.txt + - method: pip + path: . diff --git a/README.md b/README.md index 06d8b94..a7c7702 100644 --- a/README.md +++ b/README.md @@ -2,12 +2,16 @@
+
tqX^) zn13SZQ&X#8GWDIR6yA#`hE!b13!Yqs+vGRJsgsk0;N3*%i`2%47_z}_0W&HW>0hI# zWezdaH-=_#^rLBxW{sUB_y z6IQrH8F~&q+PMHwor0Lwh`75Z^1)1q1i`vC+U7wPwy!~6GDrHeps|J_yh6@sMRf{Z zl%OB#4 UZ~02etSLl>|rCGbZ}eyk$i~423wkR;*$?DpEI$ah|sDPn+=|OW9qpM zw?{b~<<{hIYd9a%UeZ}T%D3}LN@ux6y2i{Wvn?7+nOTb8@kOrSZqsnx46m!?*ZD%1 z_e48JE+3Cm((glzw!i=Sw1V_oZKc7EMk%T|%;1)ncVVwfNM>;6aO8q#l4*_wP|Kw^ ziF?{P+1MtHD&H$Te4`w(B|o2HL{MS#NXo|T1wZ6#SEYyC1Cyl mINOv!U zt3()^>@XU^F>acmTG`Royl$z+gtP9DKtzk7W$5!7JKp+9gVS)Zfr5u;^m$<8w>HVv z8>PE6GrS!=I!O$uL_}z`{TVuimB4nT#&f5Szi{gVu_|hAHMz vHVBQm@c}I*7U?3qbAJw5cm5OoCeRe;4bXO4bfMThc|gNRU8ut z`N;!hShdrf88Md^x~!gWa6{#MF~;fYRUiIDBx$ZU(dyop-q1k~mHIvU<{5T^HpB_* zs0v!;>>@RxE#8VW6vjiaRMNrw9c9fx{Mj2i27M$d+!+Ol@)%#;Dbvh)QMH1d#af~- zN34uri8qkM(-Qr2e-kM^q)UaAh0Ws{na8v~d_^ZKB9Z^uhmx6BX}+>jD_CC)Ll~9T z;U>>n3I~2y3gW&TD4NQ-M5+jf)k!9sU30U$QEqEoE5u0z_r>cuE#eyoAH@QKHGboP zV=2DY891pJ=HzIpv8TwqB@dF%kfhwRhUezt&=nS?$~;_?LysA;95N?#R~pnqzgUg7 zzEoc)r^9(g-`*50M38#syKJJ;D(l?NTijQ-QH$8$kE|;p%!|d`8l@J0H0Xn0gBTJO zZ(GZ!rOiJ;UKPm3MpW;Op%b9_+e0q>Su!?y!sw?{PFEZ~?tF6euQPUQTLhGa7nM`p z1{Z5%)TTwLVg#9|aH@;C&J50jQ`q^9<*SZ_lZx}Jb}uxSHwy)r%G&U$Qbc%VhU_ea z2qY}9e>D{5=fX1wKFfdHOG=O=@EB2{r!yJ{@e_Mu=3Exn%WL}G8*Q3EBSt1yc-I-m zmM6zgq^SjDL%(_$fA+4>sduq32)xD8$!u?Tv1=(uCDy$Tm>HoXxx1tbzP{0TGoubc z(6Uh~3VyocFJX9kbG6jaFMr%8nqBv!_g4l&;87P+(K#x)@R@_Z@yFSY@ye*9PckJ| zeWNwW)E7R%xd<<9Q6xBq{Sg>^_c)HY77JhTr(&W}mh=d5B(l59 MH?nZJsA0~^U=GRl75s9zDVSFg7;`ItngL|U24#!kJ&?wl3DlM5LrOQ zrSJ}qG?YnYk?b9k*km~B1DcoNY2}ZLmTVbm2h&Ag5h>A#;Zc)6{v1~$9bg>--|?ih zfz_F9u#(ZRD?_(>CcaW*LOWay|6!ocN?+-RH+=T$yyM8bwGVj^E|x#FBG<<0aFs`> z?Z2AXVePz4K%7%3muSRe%Rab2+__sI>FyjR3E&7NIbq)U72P$#xFSC_?b?-*6tISS z=Q&}PloFp4+^HG p*_xm&Z6j~vGvv8YUepitzvbLebqP>saVm>RdqU`-%D*^MtrQ7k`CQ?S z;(qt`m7F0M@iPr3&Xg7A*KD^+<;i2<5mUNxyvpROZqVRvs@R-pNSPdlQrvvG1uf z6^)AW_oxWQV8r21s4U|(`Mk5O^!!Q{-5QNX 6fXG0ej -+OUqixtEZlYcL&N z%OQ6#>Ra>Fxwoyl6{Ps>8xL)vMh^$?^^ex#Ca(Bu=$?nf+5NLFxx%5`@77ryF|4KL z*w@W(7#`-ChYq}0v8P0Se&38AI8`XfTd3qhu&c5`Z^q9iA{V3cb#ORsB@Fd9Q#R@X zPXu)t%_Z@xlj3ahs~2cJI3j{}VGcy8Dt-3N=_*P4wc(`=TUL#7(VUdirq4?2t4ydd zCah*Fi+);u <_#VG zqP u( zp*6{njdI8~?%DJ#gO-)fL{_Qz{smKiDTVVcCIkTjxsjWdJkzLH3#KCt4brcvP#7l; zkj!FEPWGf=d={+iWiS_(|Jiw RRqGYVn;(y1??k- zX)HOb{<=Dmnq{WCZFh;aU7>e&>x0hdt0OG;G5YX<&cSiy*mAfUm?-VzyxWHH?(F$( z76O(nDD5(P`i+lbax+uXa-Z=Nc}zD{@`3B%@;D7hW?*S7HTp@jtxZ07%$QL3NI*fX z%`QAuJCB@qV s{^ bK0_TZ*9=`^)|p}TGW$<0q*+%rcLQ_}w#O?GGP zl)C2ay|TD7r2g)>^JXJtJT$&Ij+Yi*DpTJmage3=zQ1u4OLU21=kz0*b&4=Dd+fp5 zxWdYmotx4oS`PAS_1$BZWO`>ff>o74$_|kPu6r^p)#N%2Ir*1+dIiSp+#zIZtTI#~ z@rknGIguhNHAW_iP`=_15y{%Ev4PO7LfVc&8%>n>k!78-&t&ZI`3<`}@AM4=M$WbD z)IZzfKs@L=;6n7$MX#CLp1S#mW`)|W&3FW4ZfeCFvfPRJ*f7- d@Al6ut~Alfo#`UmU8D zmr#~I)Kp2=RRnF;1Z RM{7T2c7s9f +F+Iq-^TUm<>GP@zo2Z*9 P>ln9d%&|V=2NEYVE_`t!*kBJ=x7BYvUBCan-_mfe tvO?)vTLF`Z-*K2D*HK84Gd>nX?jwoR z0P4*Whcr@H1QP3p0$p08VN3}wx<4XrD*SJqD5d4ZU!)h$b?(I<*DY0ZiP;;lh_A1s z6vY#;dx|I8YFjjlcN8ydheulLEJWiQ=wB9@Nzqg_pmphcNg;K3eY+gL)Ss{H71o_H zimFk93qLqvOGks$GrnmnYkbH?Hib>NY-&7U_MBn-%XhWRAI{&ilNl7@ KNAi)lVy>CEC}hZB;!-f4kmJG5`KcANJwc>VCIl z@$ENaQHD`XCsXA!?L7ZBkuJ>42g8e3+eIlO5iIQRtRZoe(r-QYW>u(PWS(V NMe*t`g j-R9<^m}@Y zV!Qo)i~zmo63JP&Ly1ob-@qoFQ@PkO2EovKV{=64%6G_kxymZqFxmZoFj2JB~v9BDro)aR`!P zSXYR#uM*vdQtW}phfdK1{L4=j;CKw^FMp 5`%{ z;_OrDc>}L_H-`^b*;o+t?n%4`v|OF~RUGefKp8oWO}-yZSt%l67-SUPjHM)nSp3bi zXHfdm@ahB`)5}lG?I-8?;)jY9MTVo*Vrcu5s+79#ooI_22j`Wq; $kHXDi$-_ zkyXx@BruhbP8lD5xb5CzkaS?oHeLL7PHS?Wpk+J#wrBE4s_PraYO_kXO}JSyqPv&I z-fM)GtA-Lyt3qBh^aRZ)IY;sm#FEJ}Rb-1>76p_$OOA%-7X6G9ig|Y*N0#IHjHnzx z67_+q2=@>8fpHZgyu{Vtp5)Egmd`9RB;omeLmD#I!xAOOV>Be?NT+u6UzGS^RI0_^ zm3+w@K`UTT_2q=B^u_yUM&bn_daK3XH- g#+cTyIPFR+$*B)bD14Ily0$E? zYhvYaYG|@&!pzLZvX=TJW!mRGX?-G%H^}2QGTpd=tZnav(XR1wE7W89T7Ig*fuT?w zJw{2FD?^YNImQ!7kcBQy1NCeP-MEsh$uV0@;q^!q-!osVpDG&CVbP~O-Zc5!eyH%p zq=l|{r=KvYZIjSEm$1V+0@7x~%?|l>c3o?u5bMwkz51wk cIJ_(aL#smVZCv(X87WW5+{S;nj2gyjeLN*~Y%*g}LA_sajrN zM*HVkre73f73}et;wud(`%MNaHDy0R9-`7&F+7&8!~axPz;85?eidS^w`ttIC~Snc zKmytD5aG;1>C9~|@wk~2-Y)4xBM^Bn*t|19v08gUo#8O)E7B`a*-mOtt>2tOizW6U z^)r%^tCy$KhpnQJ@ b%GT?VHB5&_V&xL%9T6?v%Ml z&|iMjso5ErXEcO)x!-N3TJ3+p5oI;KeR=hOY6vF~uHJkkWz z|I^X_# fu z9$8hv6^ zZVKq3 iI^qV~{)2YVMPhL$f5`BV4 YjhT(w|o zXG1Z?m!b|Om6Nm1;9*u)_M|YoI6OMz{L~;?aN}`WEfNPWk>Z;{R<7P5E!JuGF!v&+ z_ccpR-&UU`)6?Y3l-<|?mt0IvOff#k^2aBA<`(ZJKB+uxD6YcS#8=c)uLz)BdpG<% zu0j7z{igU8rmRRHG<%mnDy4@mgGM?$lud=DS0P?Mj}Vjfdy>zgqDi+LXM_nOw>w86 z0(Si_>V4SKg3;9wIu|P;>U%SaElVV{UkC}W)&i&>X{;d~N+KHgjhIy-@)eZM8X29U zZ7-p4zA=7Pk7}|HC#xChIQ(Y4f_43*=Y}lsF)?W?a;Sr;%UEEp1f1Ot+jB$;3WO5m zVbg=d{rvOAJMpPs2dMm&?um+0TY{kLb!!K@TZZatqLwaBoaR<87En%KCs)w@f`b#2 z^mR42bbxx&SU_#;oW$wwsuN>?$F168oHK#4wfQTbdnMn zV!on4fD_cyoW|G5(b+@PSDfyTTv6~n>@gP|&7UEj4&ro%>RL3iF78koeolT)Ziu|E zoi{I?1O| SI@y;H9 z(*n>3m#?`i7Y`>lmy;9MKhN;+l=lWg{ Y{QkmR_*!Da(n|!PXbGa D26;y?p=cg|3|w^s%QoOq)D{!Xn@xyaIfJ zd_p2Tf9?5?JbkFU2e3q#Odf7dzQ5$cu0<3a1}N4XW~V^FAF<#pqO$H#b59p{T^AQe zaXOd?8raM~=1n8^*QF@gd4LhmVHW>4n|};-`|DqSxqzeHpI0 0Cm0|oy5H-q~7bG!fMvUr7sEV!+pRuDlUC_m7!umD6@(8>a0!DB9L z%@5_b;O6~5NcV8D_Vh7#hf3RklY-L#1Nw6s8kRq*Wc}B@_}D^WdgA8gfp7~zc)4|X z1Vwp8Lp$xHw>0o?4gQaH{YPE@mInTuSvmy;VL3dSp;sFPTYYzJjUnyB( z2Ogq&Dyz$*ZlU5}kYZaIsK&v;(ZDIoN$dK4|Fz)bOE|qMap>bM)G31oFOx!SFC`;` zO_vt}U& 4tjS^5xx4MQcJlSaP!%S$E<-!dO9v~WCo1O!$F^Qo5HCF+Y*YCrAN z>^Uo+lc0R&Bs38ln~L1$Tce{QaQNWs31!J73%?1r9Qc}vkxqz?jviF`$#Dy>koKf> zXN)@sdH$(@tJjQ*$sTM7mvzd-Da#zqIhE$XmBU=?^YIXhu*>l%<&f^TI8E%2iYy-s z@mH>VoKT33PQW96Buv+Hn-(1%8$W4FSe+l8Z e#feqel?l=MBrdo+wi}V@91 gMVHG1t|To1H4dx2nld_tUYw{v?z&QI%=&D?Ws2<+XOk*05L z3`>5`ZG7;Ol9R)-A3wP@@7%#W-Hq@JXsN>-jpTQx^ef6DGeMP;v+A~5x*i=BjNvnA z&@-b^UPH54vYzJ!dh07>YFQrhj|@n7$rM$h2-kuIR^zE0g7|K|_+Wuq=20^Ukp<(h z?A 6ka>Lk&E5y}MA6^SJ~RRKovXaO5Dar@ zQ}R%}`8c3ze2APJ5@eq5doxBbPY$!M@rf$E$q@mQQf4xycb>)=IJrZEvtosMzbU!j zxhQ|FTIImrXr=*rxqc8gZ?ER-i07YJw)VTpalXSw>T|G5j0%BPSL0un_&}(`q&K2P zR2g4&@p_%lUQSLoJzk-t?lNZ3mN$;SlZ=UWdB6BYO+yB=WIao#DHpk*W7ffvWbmCB z_-ZvHz)zV*7RW1;l&hFNL{b8~V+f0^34z(rA3p(Vhkfr@urpqnjfHY_`R!f6ebCT^ zmMta4CB;La)s(WZSKOp{E%tg{!QFCepXM?CobiKk0qk!qup^jdDE#Bkzdicr7yr$p zzh?a3oBr>N{ogJ1|8iU2$`yVIsYppZJqWiFKsoqCGFnq@t%MxUJ1?kO5Ws^;kHZ;e z*c+Ia!`$P){`}jce}3`bJo; $1KQzV4mK 2Ph$SQSkOK1U3;3MB+%g1Nq^dMj!t^ R%puOY3s%f= -9NTXbApZx|}>9diiS?7NFN-Lgqrt$M2=$%vM%+j$Mw z{;y@q^|Id|6aDry6fDCs$!m%oXNMgcia AZY9eG^om*%a*O$Llez?i(1z#l@~azc9+l%NHr9F`4jOt*@-4 z2n9}>Rd8SLHY!k2Q3Yd|Tv75j3G-yD(J?b`wY}h^r$_YblyLbJZDSMX>;0ZH?1NUL znT+9^%qJCkML7G`0BW-G@jZqeef&HF85Px|U#vtfhT!nzWaQ!K>D;njv0RK~1TS!? zI5iR7T)U=W6fXf_dygL71aF$&wil$Q6EZL{Rew*j8TErxeEXgFi6m5&HR%aVWBNUg zf^m<0_Lt||JX&2>5MYWcETqXA+q7tt0IqpY*pq*EHCOPZOtp7tDCWaRq#ZwUF#Q)W zD?T2Jfq|jp5QLPih%>VMJ_P7@!}S|vUC+j@LhIon{G;8OjhhR0EK)cKE Ls7U}Hy0y{a;|Ub>Dn{%@*uD?fCW~- zk!-(KraaZ;*k4}{k0oL+mWjZqG<>&O5cK=@_Bm$iYo>{8H71_(6G^;4gN4OiPRRT_ zlL$ZG-L&XIgj2uHR^KBFQ*KNgoaXkbmtx}LCm#*UR9@Z@4ug (9zLR3U=(amNtg@W`i!Ui&pv9qx_;)PGtn9Gj? l+Wh)Az5N-Dz*%9uy!vIop}mt~C;9ZEsiYzPn}@5}j+B6jxcE2}FFe zpgnUU-WW$>isPzXE0hfo84LBObwg|5jkhVc1JKbJ&iT*1y<5o_ul>$;4$sds5~(FW zC#d(Q*2L+5v3b>Z`j)`$r-H_d5eJ56h6XO6%qZJ|1cM@^xH}~ygGnP_ECyUnvDfa* z s<= NJ)YLF R;u_iIk(DR`)&0RQWO8h+ir5G58(jz3u}xOCpJm5U1L