Skip to content
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

Bringing out release 0.3.4 #49

Closed
repagh opened this issue Mar 16, 2019 · 28 comments
Closed

Bringing out release 0.3.4 #49

repagh opened this issue Mar 16, 2019 · 28 comments

Comments

@repagh
Copy link
Member

repagh commented Mar 16, 2019

I have been looking a bit into getting a windows-also build in conda-forge. To do that cleanly, we need to bring out a new slycot release.

Would it be an option to simply tag v0.3.4, or do we need to merge/fix other issues first?

@moorepants
Copy link
Contributor

@repagh I'm adding you a maintainer on the conda forge feedstock: conda-forge/slycot-feedstock#12

@repagh
Copy link
Member Author

repagh commented Apr 16, 2019

Thanks Jason.
@murrayrm , I propose returning the favour....

Any objections if we merge this? Next week my students are starting control classes, and having slycot in conda-forge would so much simplify the install instructions....

@murrayrm
Copy link
Member

No problem on my end. Go for it!

@repagh
Copy link
Member Author

repagh commented Apr 17, 2019

I am a regular member, not maintainer. Turns out I cannot add @moorepants.
And apparently I cannot merge PR #53 either. No merge button. Is that because I have no write access to the Slycot repository, or because I cannot merge my own PR?

@roryyorke
Copy link
Collaborator

I've merged the 3 outstanding PRs.

I think conda-forge looks at PyPI for package sources, so we not only need a tag, but a PyPI upload.

I think @repagh should have commit rights---I don't actually know how to check whether or not he does, but from the log I don't see any merges or commits to master made by him, so I guess he doesn't. I also support giving @moorepants commit rights. I don't think I can make changes of this sort.

@repagh
Copy link
Member Author

repagh commented Apr 17, 2019

I have a pull request on the conda-forge feedstock for this. That one temporarily used the branch from my repository to get the source, but I intend to change that to use source from the python-control github repository, using a tagged release, rather than making a detour over PyPi; In that way it is immediately clear where the source is coming from.

@repagh
Copy link
Member Author

repagh commented Apr 17, 2019

This means that I still need a tag (v0.3.4) to complete the feedstock.

@roryyorke
Copy link
Collaborator

OK, great. The remaining hold-up is release notes, see e.g. https://github.com/python-control/Slycot/releases/tag/v0.3.3. I'll try to do that this weekend; will post draft notes here.

I assume we'll still eventually upload a source tarball to PyPI?

@moorepants
Copy link
Contributor

I recommend releasing to PyPI and having conda forge pull from there. It helps to ensure people can actually install and build from the PyPi release being that the github tarball and the pypi tarballs are different.

@moorepants
Copy link
Contributor

Also, the conda forge infrastructure checks pypi for updated packages and automatically create's PRs on the feedstock when pypi updates.

@roryyorke
Copy link
Collaborator

roryyorke commented Apr 18, 2019

proposed release notes below. I'm not very familiar with the system pencil terminology, please let me know if what i've written is nonsense.

title: 0.3.4: added ag08bd, sb10jd, tg01ad, and tg01fd; switched to scikit-build.

New features

Support for four SLICOT routines was added by Marcus Liljedahl.

ag08bd Process system pencil to find multivariable zeros

ag08bd takes a system pencil (E,A,B,C,D) and returns a matrix pair (Af, Ef) which can be used to find the finite multivariable ("Smith") zeros. The orders of infinite zeros, right and left Kronecker indices, and multiplicities of infinite eigenvalues are also returned.

sb10jd Convert descriptor to non-descriptor form

sb10jd converts a descriptor state-space system (E,A,B,C,D) to a regular state-space system (Ad, Bd, Cd, Dd).

tg01ad Balance system pencil

tg01ad balances system pencils (E,A,B,C,D), with D=0, such that the rows and columns of the resulting pencil are as close in norm as possible.

tg01fd SVD-like coordinate form of system pencil

tg01fd finds the orthogonal transformation matrices for a system pencil (E,A,B,C,D), with D=0, such that the result is in SVD-like coordinate form.

Build

Rene van Paassen switched the build over to scikit-build, which allows for flang to be used to build SLICOT on Windows, and improves the build output for developers.

Testing

Python 3.7 was added to the Travis CI build set.

The tests no longer use the deprecated np.matrix type.

Added a regression test for #6, for td04ad.

Pull requests and issues associated with the release

PRs merged: #32, #34, #36, #38, #43, #45, #51, #52, #53, #56, #57
Issues fixed: #35, #37, #47, #55
Issues closed ("wont-fix"): #40, #41, #48

@repagh
Copy link
Member Author

repagh commented Apr 18, 2019

Looks good. Then again, I mostly use physical pencils....
The switch to scikit was a means to get additional flexibility in selecting build tools, the switch to flang is a result from that.

@roryyorke
Copy link
Collaborator

0.3.4 released

@roryyorke
Copy link
Collaborator

I'm afraid I didn't realize there was a bit more to releasing; it looks like setup.py must be edited. I've deleted v0.3.4 for now.

I assume the idea is to have a release branch.

@roryyorke roryyorke reopened this Apr 23, 2019
@murrayrm
Copy link
Member

If it helps, the workflow for a release for python-control is here: https://github.com/python-control/python-control/wiki/Release-instructions

@repagh
Copy link
Member Author

repagh commented Apr 24, 2019

What happened? I thought I had tweaked setup.py to take the version information from git. If that does not work -- e.g., because the source is tarballed --, it assumes the default hardcoded version (currently 0.3.3, so that must be updated).

@roryyorke
Copy link
Collaborator

roryyorke commented Apr 24, 2019 via email

@roryyorke
Copy link
Collaborator

If I try "git archive", I get this error when running setup.py in the unpacked archive:

Traceback (most recent call last):
  File "setup.py", line 248, in <module>
    setup_package()
  File "setup.py", line 179, in setup_package
    VERSION, gitrevision = get_version_info(src_path)
  File "setup.py", line 124, in get_version_info
    FULLVERSION += '.' + str(GIT_CYCLE)
UnboundLocalError: local variable 'GIT_CYCLE' referenced before assignment

Do we want "python setup.py sdist" to work? It seems not to; only some files are packaged.

@roryyorke
Copy link
Collaborator

@murrayrm, thanks for the pointer to the release instructions, they are helpful

Remaining tasks:

  • don't know if this builds on OSX - @murraym, are you able to check this?
  • adding PRs, issues to release notes -- I'll do this
  • tagging and releasing -- I'll do this
  • pypi - @murrayrm, I think you're the only one who can do this
  • conda-forge - this is between @repagh and @moorepants
  • python-control-announce -- can anyone post here?

@murrayrm
Copy link
Member

murrayrm commented May 1, 2019

@roryyorke Updates on my end:

  • MacOS: I was able to compile and install the 0.3.4 release candidate (roryyorke/v0.3.4-release) on MacOS 10.14.4 with python 3.6.

  • PyPI: I can upload the current master to PyPI as v0.3.4. Please confirm this is what is needed. I have made @moorepants a maintainer and can do the same for you and @repagh if you send me your PyPI IDs.

  • python-control-announce: anyone should be able to post, but I may need to turn off the moderate bit for the post to go ouot. I will approve whatever post comes through and approve as a future poster, so that will streamline things.

@murrayrm
Copy link
Member

murrayrm commented May 2, 2019

I just checked the master branch on slycot and it appears that there is no v0.3.4 tag. I think this means that if I generate a version on PyPI that it will be tagged as slycot-0.3.3.51, which is not what we want (I think).

I haven't been following things closely, so don't want to tag things until someone says it is OK. Let me know (or just do it). What is required is the following (from the python-control release notes):

git tag -a x.y.z -m "python-control version x.y.z"
git push --tags

I'm fairly sure that has to be done in the master branch of the repository itself (not as a PR).

@roryyorke
Copy link
Collaborator

roryyorke commented May 2, 2019 via email

@murrayrm
Copy link
Member

murrayrm commented May 3, 2019

@roryyorke Looks like the tag went through. The version is 0.3.4.0 (rather than 0.3.4). The SHA256 hash is 63e648b2be8c8ba0322a5fe286bdcf0e8d28a0c12e9ab1510f2a8725fc1283ec

@roryyorke
Copy link
Collaborator

I didn't think about the fourth part of the version number. It's used in the CI and other non-release builds to give the "git commit distance" from the major-minor-patch version. It looks like the python versioning scheme (PEP 440, see https://www.python.org/dev/peps/pep-0440/#id24) allows an arbitrary number of version parts, but more than 3 parts is unusual.

If we need or want a 3-part version number, we can probably still delete the tag and recreate it, or jump straight to 0.3.5 (with no .0).

I'm not sure what that hash you've given is -- it's not a git object ID. If I do "python setup.py sdist", the tar.gz file I get has a sha256sum of 728fce305908819211aaec2f21b57483f67b02dc94116c3e9102deb5e611d0d2 Tarballs include timestamps of files (take a look at tar xvjf slycot-0.3.4.0.tar.gz|grep setup.cfg) , so one would have to fiddle at least those to get reproduceable tarball generation.

@murrayrm
Copy link
Member

murrayrm commented May 3, 2019

I pulled the SHA256 hash from PyPI, which is what is supposedly needed for conda-forge.

@moorepants
Copy link
Contributor

Don't delete the tag. Good rule of thumb is to never delete a tag (or commit) once pushed beyond your personal computer.

If you want to make a new release just make it 3.4.1 that fixes the version number. We have everything built at conda forge from the new pypi tar ball.

@roryyorke
Copy link
Collaborator

If it's all working, it's probably not necessary for another tag.

I see the 0.3.4 packages at https://anaconda.org/conda-forge/slycot/files, but conda search doesn't find them. I guess there's an index that needs to be updated?

I've just sent the announcement mail, so 0.3.4 is done. If the extra .0 is a problem, please open another issue, and we can release 0.3.5.

@moorepants
Copy link
Contributor

Yes, I should have written 0.3.5 not 3.4.1.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

4 participants