-
Notifications
You must be signed in to change notification settings - Fork 4
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Enable multiple right-hand sides, fix C-division and n=3
-edge case, made tests elaborate
#26
Closed
MothNik
wants to merge
34
commits into
GeoStat-Framework:main
from
MothNik:11_multiple_right_hand_sides
Closed
Enable multiple right-hand sides, fix C-division and n=3
-edge case, made tests elaborate
#26
MothNik
wants to merge
34
commits into
GeoStat-Framework:main
from
MothNik:11_multiple_right_hand_sides
Conversation
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
… test that test more different cases
…proved import chain; improved code readability
… cover the edge cases
… f-string; fixed typo
…hon level; fixed typos
…utput and warning behaviour; tested it altogether
…tate development without compromising on build
This Pull request should be squashed before merging. |
For the documentation, the only thing that changed is the API of solve. |
MothNik
changed the title
Enable multiple right-hand sides, fix C-division and
11 Enable multiple right-hand sides, fix C-division and Jun 9, 2024
n=3
-edge case, made tests elaboraten=3
-edge case, made tests elaborate
MothNik
changed the title
11 Enable multiple right-hand sides, fix C-division and
Enable multiple right-hand sides, fix C-division and Jun 9, 2024
n=3
-edge case, made tests elaboraten=3
-edge case, made tests elaborate
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Edit June 09, 2024
#27 is an improved version of this pull request. The following describes the basic changes that #27 relies on. However, this pull request is not really required anymore. I will still leave it open for a bit.
This pull request primarily tackles #11 by enabling multiple right hand sides for the
pentapy
-solvers. Currently, this is only implemented in a serial fashion because the current API does not specify the memory layout of the input Arrays. This makes it quite hard to completely remove the GIL which is required for parallelization of Cython level, but the serial fashion implements the feature in a first step ✅Implementing this required a shotgun refactoring on Cython-level for a consistent, scalable flow and memory handling that relies on memoisation.
Furthermore the pull request fixes
n=3
#24 via a fallback to NumPy.unittest
for an extensive, parallelizedpytest
test suite which can now be run bypytest --cov=pentapy .\tests -n=auto --cov-report html
I've found the development with the current package setup causes so much friction on simple tasks and maintainability was not really facilitated, so
Enum
-conversion and only relying on single checks. Also, the string-input was made case-insensitive.pyproject.toml
. To install a new dependency for development,pip install -r some_requirements.txt
is way simpler thanpip install pentapy[...]
which takes very long for rebuildingpentapy
. Actually, I'm not even sure whether all the development requirements should be in thepyproject.toml
.Nobody who just installs the package will notice the difference, but for development, this ensures a proper workflow.
NOTE: this was done in a single commit, so it can be reverted in one go if desired.
matrix has to be n x n
is nowmatrix has to be n x n, got 10 x 15
, so the user knows where to check.pentapy.solve
is now fully typed, especially thesolver
-argument which can be specified by so many literals that leaving it untyped reduces the joy to work with it. Now, any IDE will show all the options as one hovers over the function name and also autocompletion with proper input is now easily possible.Finally, some typos were fixed. With a VSCode extension like CSpell or a similar spell checker, this can be avioded.
I tried to update the changelog, but feel free to adapt this. I don't really know what has to be updated in terms of other documentations and stuff around, but you know better. I also don't know where to update the version and if these changes are a minor or a major jump for the version.
I really hope that I didn't miss anything, but all the new tests pass and the bound checker never ran into an out of bounds error ✅
Sorry, that this is such a big PR, but I would not have been able to ensure that everything works fine with the current package setup 🙏