-
Notifications
You must be signed in to change notification settings - Fork 438
hinfsyn and h2syn fixes #100
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
hinfsyn and h2syn fixes #100
Conversation
Can you rebase your changes onto the current tip of master branch, so as to use your updates to the Travis CI configuration (from #102)? |
I'll force push a rebased branch, but this won't pass without an up-to-date Slycot. The conda packages used on Travis were published by @cwrowley before jgoppert/Slycot#4 was merged. |
81b8a5b
to
ef43d0a
Compare
@cwrowley Might you update the packages on https://conda.anaconda.org/cwrowley soon? Alternatives:
|
I think that alternative 1 is the right long term answer, so that python-control can have multiple admins. I've created a python-control organization on anaconda.org and set up @cwrowley and @slivingston as admins (I think). |
@roryyorke Can you rebase again? The current tip of master branch (commit cdd3e73) has an updated Travis CI configuration that uses the python-control account on Anaconda Cloud, where there are or will be a conda package of Slycot that includes your changes of sb10ad(). |
@slivingston I'd like to update the slycot package on the new python-control account at anaconda.org, to include the changes to sb10ad from @roryyorke, but I am worried about creating conflicting versions. The latest version number (according to pypi and @jgoppert 's slycot repository, which I believe is the most up-to-date fork) is still 0.2.0, and that's the version currently on anaconda.org. I'm hesitant to make my own version number and upload it to anaconda.org, in case it might create conflicts with versions others might release down the road. Is it time to make a fork of slycot here at python-control, and call that the definitive version? |
I agree that this might be the time to pull a fork of slycot into python-control, so that we have a bit better control over the version that python-control builds on. |
I agree about maintaining a fork of Slycot in the python-control organization. Given that the original seems to be abandoned and that both the original and jgoppert/Slycot lack issue trackers, the fork under python-control might become the main point of Slycot development. |
I created it at https://github.com/python-control/Slycot |
Fixed call to sb10ad. Needs fixed slycot, e.g., [1] [1] roryyorke/Slycot@42cdeb8
Similar fix to hinfsyn: np -> np_, and identical test.
ef43d0a
to
d923c6b
Compare
Have rebased on cdd3e73 and pushed, but it seems I've jumped the gun a bit. I gather rebase-and-force-push is the preferred workflow for python-control PRs? Seems to go against the normal advice of never rebasing published branches, but I guess with a small community it'll work fine. |
My motivation in asking for you to rebase is to allow us to restart Travis CI jobs and observe test results after making changes to the built Slycot packages that are on Anaconda Cloud. It is not important when you do it because we can restart Travis CI jobs against the tip of this pull request at any time. If avoiding force-pushing is desired, we could have achieved the same result by having you cherry-pick (i.e., apply identical changesets and commit messages from) the relevant commits that are on master branch. |
Regarding workflows that might involve force-pushing, I recommend the practice of:
The ambition of item 2 is for the changes that are finally merged into the main repository to be in a good state, including which commit of the main repository provides the base for the branch of the pull request. Furthermore, pull requests often come through forks of the main repository, so the issue of someone basing a new branch on something that is rebased is not to be expected (unless someone makes a fork of a fork, for example). Observe that reworking (e.g., rebasing or squashing) branches of pull requests is a common workflow with Git; e.g.,
All of that said, I am not aware that there are established guidelines for the python-control project. It is feasible to follow a policy of never rebasing or modifying commits under any circumstances, if that is preferred among contributors. However, I want to emphasize item 1 above; the main branches of the project are not being modified after being published. We could make it more strict so that all branches of the main repository including temporary branches are never rebased nor modified. |
Thanks, I appreciate the detailed reply. |
Is there any reason not to make a Slycot 0.3.0 release? This branch rebases cleanly against 1953399, but isn't much good without the Slycot fix: https://travis-ci.org/roryyorke/python-control/builds/179263142 |
I agree that we should be able to update to Slycot 0.3.0. However, it should also be the case that this code should run without errors without Slycot being installed, since Slycot is optional for python-control. Can you put some code into your unit tests that checks for Slycot and checks for the appropriate error in that case. There should be some other unit test code of that sort in the |
Both h2syn and hinfsyn already had the ImportError to ControlSlycot conversion, and the unit tests have the Is there something else you had in mind? The hinfsyn unit test doesn't currently fail because sb10ad is absent from slycot 0.2.0, but because of a bug in the f2py argument annotations for that function. |
I've updated Will continue to debug until I can get the checks to pass. Hints welcome. |
The error in python 3.5 seems to be due to lapack not loading correctly. Specifically, I see the following error in the Travis CI log:
This is causing @cwrowley: I might need to update the lapack package in conda as well. Can you provide some information in what is in that package? |
Found and fixed the problem in python3.5. For posterity: I had installed lapack on my local machine and so conda was picking up that version when it build slycot. Since that version was not present on the virtual machine used for Travis CI, it caused an error. I uploaded a new version of slycot for python 3.5 to anaconda and this new version clears up the problem in the Travis build. While I was at it, I updated the conda build for |
#100 Changes are from branch `rory-robust-test` of https://github.com/roryyorke/python-control.git
Because it is not described in the message of commit ca8f331, I note here that including |
Needs jgoppert/Slycot#4
Fixes for hinfsyn and h2syn; added trivial unit tests.