Open main menu

Changes

Relax 5.0.0

13,369 bytes added, 11:15, 26 August 2020
Added some more keywords.
| version = 5.0.0
| prev = 4.1.3
| keywords = wxPython-Phoenix, Python, text output, test suite, Travis CI
| type = Major feature
| date = 24 August 2020
<section begin=description/>
This is a major feature release that adds initial support for wxPython-Phoenix. It includes a large number of under the hood changes to support more modern Python versions and packages, a lot of polish of the relax text output, improved test suite control, and improved and modernised [https://travis-ci.com/github/nmr-relax/relax/builds Travis CI] support for automatically checking the integrity of the software.
<section end=description/>
<section begin=features/>
* Support for wxPython-Phoenix.
* Bmrblib: This Python package is now once again optional and relax can run without it.
* MS Windows builds are now 64-bit by default.
* Major improvements to relax text output.
<section end=features/>
<section begin=changes/>
* TestSuite: Skipped tests are no longer run when individual tests are supplied on the command line. The [http://www.nmr-relax.com/api/5.0/test_suite.relax_test_loader.RelaxTestLoader-class.html#loadTestsFromNames RelaxTestLoader.loadTestsFromNames() method] has been implemented to gracefully handle the skipping of tests when only a single test is run.
* Travis CI config: Fixes for PyPI numpy no longer being compatible with Python 2.7. Older versions of numpy now need to be manually specified for the Python 2.7 job.
* Travis CI config: Attempt at making the MS Windows build job run again. The Travis CI infrastructure has changed yet again and the Windows job fails in the setup stage. These changes are just a guess to try to make this work again.
* Travis CI config: 2nd attempt at making the MS Windows build job run again. Chocolatey was automatically installing the new Python 3.8.0 but the paths pointed to the 3.7 version. Now the 3.7.4 Python version is explicitly specified.
* SCons: Change for the MS Windows build architecture from the default of 32-bit to 64-bit. Previously the default was 32-bit compilation on all Windows systems, via the <code>WIN_TARGET_OVERRIDE</code> flag, as official Python never used to release 64-bit builds for Windows systems. As this is no longer the case, the 32-bit override is now only set for the old Python 2 versions.
* Travis CI config: Creation of a job for testing relax on an arm64 CPU. The system Python and its packages are used to avoid timeouts on arm64. Installing the Python packages via pip prior to running causes a Travis CI time out, as most of the 50 minutes allowed are used up by the compilation of SciPy. Despite the successful installation of the wxPython site-package on the system Python3, the GUI tests are not activated as there is a problem with xvfb on the arm64 Travis CI jobs.
* [http://www.nmr-relax.com/api/5.0/test_suite.system_tests.n_state_model.N_state_model-class.html#test_populations N_state_model.test_populations system test]: Loosened two of the checks to allow arm64 to pass.
* wxPython: Added the <code>dep_check.old_wx</code> flag for differentiating between Classic and Phoenix.
* wxPython-Phoenix: Fix for the <code>wx.BoxSizer.AddSpacer()</code> function calls. The old wxPython conversion of the size argument to (size, size) breaks the layout, so that the tuple arguments are essential. However tuple arguments are not allowed in wxPython-Phoenix. Therefore the <code>dep_check.old_wx</code> flag is used to differentiate the behaviour of the different wxPythons.
* wxPython-Phoenix: Fix for the old <code>wx.Sizer.DeleteWindows()</code> method. This method no longer exists, so instead the <code>Clear()</code> method with the <code>deleteWindows</code> argument (or <code>delete_windows</code> in Phoenix) is used instead.
* wxPython-Phoenix: Fix for the missing <code>wx.SystemSettings_GetMetric()</code> function. This has been switched to <code>wx.SystemSettings.GetMetric()</code> which is present in the original wxPython and Phoenix.
* wxPython-Phoenix: Fixes for the relax gui About dialog. The <code>wx.Frame.Center()</code> function call only works if the window is shown (i.e. it is broken in the test suite), and the <code>wx.DC.EndDrawing()</code> function has been dropped in Phoenix.
* wxPython-Phoenix: Fixes for the GUI sequence and file input elements. The <code>wx.Frame.Center()</code> function call only works if the window is shown (i.e. it is broken in the test suite).
* wxPython-Phoenix: Support for the splash screen. The <code>wx.SplashScreen</code> and associated variables have shifted into <code>wx.adv</code>.
* wxPython-Phoenix: Support for the relax icon. The <code>wx.IconBundle.AddIconFromFile()</code> function have been replaced by <code>wx.IconBundle.AddIcon()</code> in the current phoenix.
* wxPython-Phoenix: Fix for the spin viewer window. The <code>wx.Window.GetClientSizeTuple()</code> function does not exist in Phoenix. However this can simply be replaced by <code>wx.Window.GetClientSize()</code> in the current code.
* Deletion hack: The <code>wx.Bitmap.HasAlpha()</code> function is missing in current phoenix.
* relax GUI: Fix for the window icons.
* wxPython-Phoenix: Switch away from the depreciated <code>wx.Menu.AppendItem()</code> function. Classic still requires the calls to this function, but phoenix now uses <code>wx.Menu.Append()</code> instead.
* wxPython: Renamed the <code>dep_check.old_wx</code> flag to [http://www.nmr-relax.com/api/5.0/dep_check-module.html#wx_classic dep_check.wx_classic].
* wxPython-Phoenix: Prominent feedback warning the user about using unstable Phoenix versions. This includes both a RelaxWarning on start up and placing the warning text in red in the center of the blank relax GUI main window. Currently all Phoenix versions are labelled as unstable, however this can be changed in the future directly in the dep_check module.
* wxPython-Phoenix: Switch away from the depreciated <code>wx.ToolBar.AddLabelTool()</code> function. This is still used for "Classic". For Phoenix, the <code>wx.ToolBar.AddTool()</code> function is used instead.
* wxPython-Phoenix: Switch away from the depreciated <code>wx.Window.SetToolTipString()</code> function. Instead <code>wx.Window.SetToolTip(wx.ToolTip(text))</code> is used for both "Classic" and Phoenix.
* wxPython-Phoenix: Switch from <code>wx.NamedColour()</code> to <code>wx.Colour()</code> in the relax controller. "Classic" still uses the old function.
* wxPython-Phoenix: Switch from the depreciated <code>wx.Text.GetSizeTuple()</code> to <code>wx.Text.GetSize()</code>. This seems to work on "Classic" as well.
* wxPython-Phoenix: Switch from the depreciated <code>wx.TreeCtrl.GetItemPyData()</code> function. "Classic" is still using this function, but Phoenix is now using <code>wx.TreeCtrl.GetItemData()</code>.
* wxPython-Phoenix: Switch from the depreciated <code>wx.TreeCtrl.SetDimensions()</code> function. Instead <code>SetSize()</code> is now being used for Phoenix.
* wxPython-Phoenix: Switch from the depreciated <code>wx.TreeCtrl.SetPyData()</code> function. "Classic" is still using this function, but Phoenix is now using <code>wx.TreeCtrl.SetItemData()</code>.
* wxPython-Phoenix: Switch from the depreciated <code>wx.StockCursor()</code> wrapper function. The overloaded <code>wx.Cursor</code> class can be used instead in Phoenix.
* wxPython-Phoenix: Switch from the depreciated <code>wx.EmptyBitmap()</code> wrapper function. Instead Phoenix versions can simply use the overloaded <code>wx.Bitmap</code> class with the same arguments.
* wxPython-Phoenix: Switch from wrapper to overloaded functions for the <code>wx.ListCtrl</code> elements.
* Python 3.8 support: The <code>platform.linux_distibution()</code> function no longer exists. This is now replaced by the distro site-package. The [http://www.nmr-relax.com/api/5.0/lib.compat-module.html lib.compat] package deals with this difference.
* Model-free analysis: Obscure syntax error bug fix for an issue highlighted by Python 3.8. The error in the [http://www.nmr-relax.com/api/5.0/specific_analyses.model_free.back_compat-module.html#set_xh_vect set_xh_vect() function]. This is only encountered when reading an ancient relax 1.2 model-free results file.
* Travis CI config: Changes as suggested by the experimental Travis CI Build Config Explorer. The config text was pasted into https://config.travis-ci.com/explore and changed as suggested.
* Travis CI config: Shifted the OpenMPI required packages into an apt <code>addons</code> section.
* Travis CI config: Shifted the API doc <code>build</code> specific parts into the jobs matrix. This allows an environmental variable to be removed and a simplification of the <code>script</code> section.
* Travis CI config: Shifted the FSF copyright validation specific parts into the jobs matrix. This allows an environmental variable to be removed and a simplification of the <code>script</code> section.
* Travis CI config: Removal of the now unused <code>TEST</code> environmental variable.
* Travis CI config: Simplification of the single processor and OpenMPI execution. The <code>MPIRUN</code> and <code>RELAX_ARGS</code> arguments have been introduced. These are normally unset but, for the OpenMPI jobs, they are set to <code>mpirun -np 2</code> and <code>--multi=mpi4py</code> respectively. This allows the duplicated entries for the information printout and test suite execution to be collapsed into one.
* Travis CI config: Removal of the <code>pip upgraded package</code> job. This job does not seem to be necessary for testing relax.
* Travis CI config: Conversion of the Ubuntu Xenial job to Ubuntu Bionic.
* Travis CI config: Removal of the <code>language</code> key in the jobs matrix when the value is <code>python</code>. This is a duplication as the language is set to Python outside of the matrix.
* Multi-processor: Shifted the processor type checking into the initial command line parsing. This allows a non-zero error code to be returned to the shell.
* Travis CI config: Shifted the echoing of environmental vars into a new <code>before_script</code> section. This allows the echoing to occur for all jobs.
* Scons: Improvements to the string formatting and the printout for the C module compilation. This includes showing the target architecture for MS Windows compilation.
* Scons: Document the environmental variables used.
* Information printout: Improved output for Python3 compiled C modules. The bytesteam is now decoded.
* Scons: The MS Windows binary target architecture is now determined by the Python binary arch.
* Test suite: Implementation of a command line option for disabling IO capture. This was previously handled by using the debug command line option which simply prevented IO capture. This type of output is very hard to parse by eye, as the tests are not well separated and the debugging output is very verbose. Now the <code>--no-capt</code> or <code>--no-capture</code> option has been implement to disable the IO capture. The debug command line option no longer disables IO capture, rather it allows for finer control of the test suite in that verbose debugging output is now only shown for tests that do not pass. When IO capture is disabled, extra formatted output is used to provide clear separators, titles, descriptions and endings for each test.
* Test suite: Argument reordering and better docstring documentation in the relax test suite runners.
* Test suite: All adjustable widths are now set using the value of <code>status.text_width</code>. This include the separators for the tests and the test suite summary lines at the end.
* Fix for Python 2.5 support.
* Command line processing: Switch from the depreciated optparse Python module to argparse. The argument parsing code and help text has also been improved.
* Travis CI config: Added the relax <code>--test</code> and <code>--version</code> modes.
* Travis CI config: Alphabetical ordering of the environmental variable printouts.
* Help: Improvements to the help printout, including new descriptions for the argument groups.
* Status object: Improved logic for determining the ideal text width for relax.
* Travis CI config: Added testing of the relax <code>--help</code> mode.
* Test suite: Added text wrapping set to the relax text width for the test description. This is the description shown when running without IO capture.
* Information printout: Improved formatting for MS Windows. The <code>repr()</code> function results in <code>\\</code> for path separators rather than <code>\</code>, causing the formatting to be out.
* Test suite: Addition of a new command line option for listing all of the test names. The new <code>--list-tests</code> option will cause the names of the tests to be printed out and not run any tests.
* Travis CI config: Try to force a Py2 compatible version of kiwisolver, as needed by matplotlib.
* Travis CI config: The virtual machines with Python2 now seem to require SCons be manually installed.
* Test suite: Fixes for the [http://www.nmr-relax.com/api/5.0/test_suite.system_tests.palmer.Palmer-class.html#test_palmer_omp Palmer.test_palmer_omp system test]. The modelfree4 binary type <code>linux-x86_64-gcc</code> seems to now produce slightly different results with newer system libraries. The checks in this test have been updated to reflect this.
<section end=changes/>
<section begin=bugfixes/>
* GUI: Bug fix for the deletion of analysis tabs on Python 3. The value of <code>None</code> cannot be compared to an integer. This bug appears to only be triggered by another bug - a GUI <code>tearDown()</code> or deletion failure on MS Windows with wxPython-Phoenix and Python 3.
* Bug fix: Restoration of the simple user function menus.
<section end=bugfixes/>
* [http://wiki.nmr-relax.com/Relax_5.0.0 Official release notes on the relax wiki].
* [https://sourceforge.net/p/nmr-relax/mailman/message/3669419737094335/ Mailing list message].* [https://www.mail-archive.com/nmr-relax-announce@lists.sourceforge.net/msg00004msg00010.html The Mail Archive].
{{:Softpedia}}
Trusted, Bureaucrats
4,223

edits