PyWavelets / pywt

PyWavelets - Wavelet Transforms in Python
http://pywavelets.readthedocs.org
MIT License
2.04k stars 470 forks source link

planning for v0.4.0 release #128

Closed grlee77 closed 8 years ago

grlee77 commented 8 years ago

It looks like we have a nice set of additions that could make up a new release in the near future, although there are a few outstanding PRs that would be nice to have. Any objections to planning a v0.4 release prior to the end of the year?

Here is a summary of the key things that have been completed since v0.3. Let me know if I missed anything.

PRs already merged:

new features

maintenance

bugs fixed

new features

maintenance

bugs fixed

breaking changes

rgommers commented 8 years ago

@grlee77 good idea, it's time for that.

Should be pretty straightforward to get this one out the door. No beta or RC needed I'd think, however one to two weeks before the planned release we should probably ask on the mailing list that people test current master against their own code.

The above list is a good outline for the release notes.

rgommers commented 8 years ago

@grlee77 are you interested to be the release manager for this one?

rgommers commented 8 years ago

Would be good to get all PRs that are (almost) ready merged in time. The breakup of _pywt above isn't urgent for 0.4.0, but the other ones listed above are all very nice to have.

aaren commented 8 years ago

Sounds good to me.

I can rebase #55 (api cleanup) this week - it should then be good to merge.

I can finish #116 (dwt axis arg) easily if #125 is merged. #120 (dwtn axis arg) is more tricky though.

grlee77 commented 8 years ago

@rgommers I volunteer to be release manager, but since it will be my first time, I will likely need some help along the way.

rgommers commented 8 years ago

@grlee77 cool. I'll help out where needed.

grlee77 commented 8 years ago

Hi @rgommers I started drafting the v0.4.0 release notes based on the features listed above. Is there a script somewhere that autogenerates the author lists and the lists of issues and PRs closed as in the previous 0.3.0-notes.rst?

rgommers commented 8 years ago

Yes, use $ python util/authors.py v0.3.0..HEAD and $ python util/gh_lists.py v0.4.0.

grlee77 commented 8 years ago

i think we should try to get #116, #130 and #67 merged prior to tagging v0.4.0.
Does Friday, Dec 18 sound reasonable for this? I think they are all almost there.

We can then notify the mailing list to let people test for a bit before making a release by the end of the month.

rgommers commented 8 years ago

That makes sense to me. And pinging the mailing list sounds like a good idea.

aaren commented 8 years ago

I've submitted a fix to #101 in #144 (making demo images importable). Might want to include it in the release.

grlee77 commented 8 years ago

Thanks for all the recent work everyone!

I will plan to merge the last few v0.4.0 PRs tomorrow and then notify the mailing list to give some time for additional testing.

grlee77 commented 8 years ago

In drafting the email to the mailing list, I wanted to give a planned date for the release. Are there any objections to Dec 28? That would provide 10 days for testing.

aaren commented 8 years ago

Several of those days are holiday but yes I think that is fine.

grlee77 commented 8 years ago

Did any of you receive a post by me from the mailing list? I tried posting a notice about testing the upcoming release both yesterday and today, but do not see either showing up. I can retry via email rather than using the "New Topic" button on the google groups page, but I don't want to spam the list if it was already sent.

rgommers commented 8 years ago

I didn't receive anything. It should also show up on the google groups web interface if it came through.

grlee77 commented 8 years ago

Hmm... Frustrating. I tried again, but via direct email from my gmail account rather than through the web interface. I still don't see anything. If you wouldn't mind, can you posting the message for me? I wonder if it is too long and/or getting blocked as spam somehow? I don't get an error message or anything, it just doesn't seem to show up.

Here is what I tried to send to pywavelets@googlegroups.com

subject: upcoming PyWavelets release (0.4.0), please test

Hello,

We are nearly ready to release PyWavelets v0.4.0.  Please test from current master and report any problems you encounter (https://github.com/PyWavelets/pywt/).  The current plan is to tag the release on Dec 28.

I have pasted a summary of the changes from our current draft of the release notes below.  There are several new features and performance improvements in addition to some API cleanup.

New features
============

1D and 2D stationary wavelet transforms
---------------------------------------
1D (``iswt``) and 2D (``iswt2``) stationary wavelet transforms were added.
These currently only support even length inputs

Faster 2D and nD wavelet transforms
-----------------------------------
The multidimensional DWT and IDWT code was refactored and is now an order of
magnitude faster than in previous releases.  The following functions benefit:
``dwt2``, ``idwt2``, ``dwtn``, ``idwtn``.

Complex floating point support
------------------------------
64 and 128-bit complex data types are now supported by all wavelet transforms.

nD implementation of the multilevel DWT and IDWT
------------------------------------------------
The existing 1D and 2D multilevel transforms were supplemented with an nD
implementation.

Wavelet transforms can be applied along a specific axis/axes
------------------------------------------------------------
All wavelet transform functions now support explicit specification of the axis
or axes upon which to perform the transform.

Example Datasets
----------------
Two additional 2D grayscale images were added (`camera`, `ascent`).  The
previously existing 1D ECG data (`ecg`) and the 2D aerial image (`aero`)
used in the demos can also now be imported via functions defined in
`pywt.data` (e.g. ``camera = pywt.data.camera()``)

Deprecated features
===================

A number of functions have been renamed, the old names are deprecated and will
be removed in a future release:

- ``intwave``, renamed to ``integrate_wavelet``
- ``centrfrq``, renamed to ``central_frequency``
- ``scal2frq``, renamed to ``scale2frequency``
- ``orthfilt``, renamed to ``orthogonal_filter_bank``

Integration of general signals (i.e. not wavelets) with ``integrate_wavelet``
is deprecated.

The ``MODES`` object and its attributes are deprecated.  The new name is
``Modes``, and the attribute names are expanded:

- ``zpd``, renamed to ``zero``
- ``cpd``, renamed to ``constant``
- ``sp1``, renamed to ``smooth``
- ``sym``, renamed to ``symmetric``
- ``ppd``, renamed to ``periodic``
- ``per``, renamed to ``periodization``

Backwards incompatible changes
==============================

``idwt`` no longer takes a ``correct_size`` parameter. As a consequence,
``idwt2`` inputs must match exactly in length. For multilevel transforms, where
arrays differing in size by one element may be produced, use the ``waverec``
functions from the ``multilevel`` module instead.

Bugs Fixed
==========

float32 inputs were not always respected. All transforms now return float32
outputs when called using float32 inputs.

Incorrect detail coefficients were returned by `downcoef` when `level > 1`.

Other changes
=============

Much of the API documentation is now autogenerated from the corresponding
function docstrings.  The numpydoc sphinx extension is now needed to build the
documentation.
rgommers commented 8 years ago

Sent, showed up straight away. You're visible on the member list, so that's not the problem. Maybe you signed up with a different email address than you use now?

grlee77 commented 8 years ago

@rgommers , @kwohlfahrt , @aaren I sent an email to Ralph with a few questions regarding release procedures, but perhaps it is easier to just ask here.

I think I know how to update setup.py, tag the release and upload the source distributions to PyPI, but have still have a couple of questions:

1.) how do the wheels get built and transferred to PyPI? 2.) Is there a script that uploads the HTML docs to PyPI or do I build them locally and upload the docs manually through the web interface?

In regards to posting to the PyWavelets google group, I see that the settings for the group say: "Posts from new members are held for moderation.". Who is the moderator for the group? I don't have any previous posts to the group, so it may be that the messages I sent were awaiting approval somewhere.

grlee77 commented 8 years ago

just a quick note that the issue with me posting to the google groups should be sorted out now. My messages were awaiting moderation, but now @nigma has added me (and @rgommers) as owners of the group.

rgommers commented 8 years ago

1.) how do the wheels get built and transferred to PyPI?

Appveyor builds the wheels for each PR, so if you modify setup.py via a PR then all you have to do is grab those wheels and upload them to PyPi. Wheels are stored under the "Artifacts" tab (example: https://ci.appveyor.com/project/PyWavelets/pywt/build/1.0.138/job/hhb9h644f1ro9048/artifacts) and you can upload them from the PyPi web interface (log in, browse to PyWavelets, and use the "upload" button under the Files tab).

2.) Is there a script that uploads the HTML docs to PyPI or do I build them locally and upload the docs manually through the web interface?

If you push the v0.4.0 tag to Github then ReadTheDocs will build the html docs automatically. Docs are never uploaded to PyPi. So nothing to do here.

rgommers commented 8 years ago

just a quick note that the issue with me posting to the google groups should be sorted out now. My messages were awaiting moderation, but now @nigma has added me (and @rgommers) as owners of the group.

ah, good to have that sorted out. I emptied the queue of messages to be moderated.

rgommers commented 8 years ago

Maybe one note on uploading: there are a lot of bad ways to do it (like setup.py upload), the recommended way is twine upload -s <tarballs or wheels to upload>. That's secure, and the -s will GPG-sign the files. You'll need to have your GPG key set up for that (if no time for that now, leave out the -s).

grlee77 commented 8 years ago

@rgommers Thanks for the tip to use twine rather than setup.py upload. I have tagged the release and uploaded to PyPI. I also marked it as a release on github. Is there anything else I still need to do aside from emailing the google group to announce the release?

The docs at http://pywavelets.readthedocs.org/en/latest/ are up to date, but the ones at: http://pythonhosted.org/PyWavelets/ (linked to from the top of https://pypi.python.org/pypi/PyWavelets/0.4.0) are still the release 0.3.0 docs.

grlee77 commented 8 years ago

I have now updated the docs on http://pythonhosted.org/PyWavelets/ by uploading a .zip file via the pypi web interface

grlee77 commented 8 years ago

0.4.0 released

rgommers commented 8 years ago

Forgot about pythonhosted.org, sorry. Release looks good and complete, thanks for all the efforts @grlee77!

rgommers commented 8 years ago

Oh, one thing may be useful: for the release announcement, put a few sentences about "what is PyWavelets" at the top, and send it also to the scipy-user and python-announce lists. Not many people read the PyWavelets list....

aaren commented 8 years ago

Great. Thanks all!