Skip to content
This repository has been archived by the owner on Mar 17, 2021. It is now read-only.

Commit

Permalink
Merge remote-tracking branch 'upstream/release-4.5.0'
Browse files Browse the repository at this point in the history
  • Loading branch information
Carlos Pascual committed Feb 8, 2019
2 parents cc4fa3c + ded6c78 commit cfb9a9d
Show file tree
Hide file tree
Showing 255 changed files with 4,583 additions and 5,204 deletions.
2 changes: 1 addition & 1 deletion .bumpversion.cfg
Expand Up @@ -3,7 +3,7 @@ commit = True
message = Bump version {current_version} to {new_version}
tag = False
tag_name = {new_version}
current_version = 4.4.0
current_version = 4.5.0
parse = (?P<major>\d+)\.(?P<minor>\d+)\.(?P<patch>\d+)(\-(?P<release>[a-z]+))?
serialize =
{major}.{minor}.{patch}-{release}
Expand Down
2 changes: 2 additions & 0 deletions .travis.yml
Expand Up @@ -19,6 +19,8 @@ env:
- DOCKER_IMG=cpascual/taurus-test:debian-jessie
- DOCKER_IMG=cpascual/taurus-test:debian-stretch
- DOCKER_IMG=cpascual/taurus-test:debian-buster
- DOCKER_IMG=cpascual/taurus-test:debian-stretch-py3
- DOCKER_IMG=cpascual/taurus-test:debian-stretch-py3qt5

matrix:
allow_failures:
Expand Down
47 changes: 47 additions & 0 deletions CHANGELOG.md
Expand Up @@ -7,6 +7,52 @@ Note: changes in the [support-3.x] branch (which was split from
the master branch after [3.7.1] and maintained in parallel to the
develop branch) won't be reflected in this file.

## [4.5.0] - 2019-01-29

This is a special release for meeting the deadline of debian buster
freeze (debian 10).

### Added
- Support of Python3 (beta stage, not yet production ready) (#703, #829, #835)
- Support of other Qt bindings: PyQt4, PyQt5, PySide2, PySide
(beta stage, not yet production ready) (TEP18)
- (experimental) Entry point for schemes in TaurusManager (#833)

### Removed
- taurus.qt.qtgui.tree.taurusdevicetree submodule (obsolete, unused)
- Trend dockwidget in TaurusDevPanel
- `taurus.qt.qtgui.taurusgui.macrolistener` (now provided by
`sardana.taurus.qt.qtgui.macrolistener`)

### Changed
- `taurus.qt.qtgui.plot` is now deprecated, but the same Qwt5-based
API is now available in `taurus.qt.qtgui.qwt5`
- `taurus.qt.qtcore.util.emmiter.QEmitter.doSomething` signal signature
changes from `collections.Iterable` to `list`
- Updated Pypy's Trove classifiers (we are now officially stable!) (#844)
- Default serialization mode for Tango reverted to `TangoSerial` (in 4.4.0
the defaultfor Tango was changed to `Serial`) (#850)

### Fixed
- bug when copying tango or evaluation attribute values (#831, #849)
- bug when adding listener to non-ready Tango device (#792)
- Various issues with Taurus Forms (#800, #805)
- problem when displaying TaurusWheelEdit in vertically-limited space (#788)
- bug when managing subscription event in Tango (#809)
- Other (#793, #819)

### Deprecated
- `taurus.qt.qtgui.plot`
- `QtColorPalette.qvariant()`
- `TaurusBaseTreeItem.qdisplay()`
- `taurus.qt.qtdesigner.qtdesigner_prepare_taurus()`
- The following have been implicitly deprecated since 4.0 (when API1
support was dropped) but only now we deprecate them explicitly
- `taurus.external.qt.QtCore.QString`
- `taurus.external.qt.QtCore.QVariant`
- `taurus.external.qt.QtCore.from_qvariant`
- `taurus.external.qt.QtCore.to_qvariant`

## [4.4.0] - 2018-07-26

### Deprecated
Expand Down Expand Up @@ -356,6 +402,7 @@ and several other places](https://sf.net/p/tauruslib/tickets/milestone/Jul15/)
[TEP14]: http://www.taurus-scada.org/tep/?TEP14.md
[TEP15]: http://www.taurus-scada.org/tep/?TEP15.md
[Unreleased]: https://github.com/taurus-org/taurus/tree/develop
[4.5.0]: https://github.com/taurus-org/taurus/tree/release-4.5.0
[4.4.0]: https://github.com/taurus-org/taurus/tree/4.4.0
[4.3.1]: https://github.com/taurus-org/taurus/tree/4.3.1
[4.3.0]: https://github.com/taurus-org/taurus/tree/4.3.0
Expand Down
2 changes: 1 addition & 1 deletion CONTRIBUTING.md
Expand Up @@ -39,7 +39,7 @@ In general, the contributions to taurus should consider following:

- The licensing terms for the contributed code must be compatible
with (and preferably the same as) the license chosen for the Taurus
project (at the time of writing this TEP, it is the [LGPL][],
project (at the time of writing this, it is the [LGPL][],
version 3 *or later*).


Expand Down
3 changes: 3 additions & 0 deletions ci/win-test.bat
Expand Up @@ -14,6 +14,9 @@ pip install pint
:: Install enum34
pip install enum34

:: Install enum34
pip install future

:: Install guiqwt
:: TODO, install guiqwt from pypi
:: pip install --upgrade guiqwt
Expand Down
46 changes: 24 additions & 22 deletions doc/auto_rst4api.py
Expand Up @@ -26,7 +26,9 @@

''' Creates a tree of dirs and restructured text stub files for documenting
the API of a python module with sphinx'''

from __future__ import print_function
from builtins import zip
from builtins import object
import sys
import os
import imp
Expand Down Expand Up @@ -93,10 +95,10 @@ def cleanAutogenerated(self, apipath):
fullname = os.path.join(dirpath, f)
try:
if self._isautogeneratedfile(fullname):
print "Removing %s" % fullname
print("Removing %s" % fullname)
os.remove(fullname)
except Exception, e:
print 'Error accessing %s:%s' % (fullname, repr(e))
except Exception as e:
print('Error accessing %s:%s' % (fullname, repr(e)))

def createClassIndex(self, info, ofname):
'''
Expand All @@ -114,17 +116,17 @@ def createClassIndex(self, info, ofname):
classes = ['.'.join((m, c))
for m, c in classes] # make a full classname
if self.verbose:
print 'creating "%s" ...' % ofname,
print('creating "%s" ...' % ofname, end=' ')
if not os.path.exists(ofname) or (self.overwrite_old and self._isautogeneratedfile(ofname)):
text = self.classindextemplate.render(info=info, classes=classes)
f = open(ofname, "w")
f.write('\n'.join((self.AUTOGEN_SIGNATURE, self.AUTOGEN_MESSAGE, text)))
f.close()
if self.verbose:
print ' ok.'
print(' ok.')
else:
if self.verbose:
print ' skipping (file already exists)'
print(' skipping (file already exists)')

def createStubs(self, info, docparentpath):
'''creates rst stub files for modules and classes according to the
Expand All @@ -139,39 +141,39 @@ def createStubs(self, info, docparentpath):
# create the module doc dir if it didn't exist
absdocpath = os.path.join(docparentpath, info['basemodulename'])
if not os.path.exists(absdocpath):
os.makedirs(absdocpath, mode=0755)
os.makedirs(absdocpath, mode=0o755)
# create module index stub in doc parent dir
ofname = os.path.join(docparentpath, "%s.rst" % info['basemodulename'])
if self.verbose:
print 'creating "%s" ...' % ofname,
print('creating "%s" ...' % ofname, end=' ')
if not os.path.exists(ofname) or (self.overwrite_old and self._isautogeneratedfile(ofname)):
text = self.moduletemplate.render(info=info)
f = open(ofname, "w")
f.write('\n'.join((self.AUTOGEN_SIGNATURE, self.AUTOGEN_MESSAGE, text)))
f.close()
if self.verbose:
print ' ok.'
print(' ok.')
else:
if self.verbose:
print ' skipping (file already exists)'
print(' skipping (file already exists)')
# create class stubs
for name in info['localclassnames']:
ofname = os.path.join(absdocpath, "_%s.rst" % name)
if self.verbose:
print 'creating "%s" ...' % ofname,
print('creating "%s" ...' % ofname, end=' ')
if not os.path.exists(ofname) or (self.overwrite_old and self._isautogeneratedfile(ofname)):
text = self.classtemplate.render(info=info, classname=name)
f = open(ofname, "w")
f.write(
'\n'.join((self.AUTOGEN_SIGNATURE, self.AUTOGEN_MESSAGE, text)))
f.close()
if self.verbose:
print ' ok.'
print(' ok.')
else:
if self.verbose:
print ' skipping (file already exists)'
print(' skipping (file already exists)')
# recurse for submodules
for sminfo in info['submodules'].itervalues():
for sminfo in info['submodules'].values():
self.createStubs(sminfo, absdocpath)

def documentModule(self, modulename, docparentpath, exclude_patterns=None):
Expand All @@ -191,7 +193,7 @@ def documentModule(self, modulename, docparentpath, exclude_patterns=None):
:return: (list<str>) list of warning messages
'''
if self.verbose:
print "\nDocumenting %s..." % modulename
print("\nDocumenting %s..." % modulename)
if exclude_patterns is None:
exclude_patterns = self.exclude_patterns
moduleinfo, w = ModuleExplorer.explore(modulename,
Expand All @@ -203,22 +205,22 @@ def documentModule(self, modulename, docparentpath, exclude_patterns=None):
if len(w) == 0:
return []
else:
return zip(*w)[1]
return list(zip(*w))[1]


def main():
import sys
if len(sys.argv) != 3:
print 'Usage:\n\t%s modulename docpreffix\n\n' % sys.argv[0]
print('Usage:\n\t%s modulename docpreffix\n\n' % sys.argv[0])
sys.exit(1)
modulename, docparentpath = sys.argv[1:]
creator = Auto_rst4API_Creator(verbose=True)
r = creator.documentModule(
modulename, docparentpath, exclude_patterns=['.*\.test'])
print '\n\n' + '*' * 50
print "Auto Creation of API docs for %s Finished with %i warnings:" % (modulename, len(r))
print '\n'.join(r)
print '*' * 50 + '\n'
print('\n\n' + '*' * 50)
print("Auto Creation of API docs for %s Finished with %i warnings:" % (modulename, len(r)))
print('\n'.join(r))
print('*' * 50 + '\n')

if __name__ == "__main__":
main()
33 changes: 14 additions & 19 deletions doc/how_to_release.md
Expand Up @@ -53,13 +53,13 @@ Hint: this list can be used as a template to be copy-pasted on an issue linked f
- [ ] For TaurusLabel, in order to test the background role=value, you can use the following attribute: `eval:["FAULT","ON","OFF","ALARM"][randint(4)]`
- [ ] For TaurusLabel, use a model with fragment (e.g., `sys/tg_test/1/ampli#rvalue.magnitude`, `eval:Q('1mm')#rvalue.unit"`, `eval:10*arange(9)#rvalue[3:4]`)
- [ ] For LCD: Test the foreground roles and the background role
- [ ] For Led: Test the colors, ON color, Off color.
- [ ] For Led: Test the colors, ON color, Off color. (hint: you can use `eval:False` as a model for testing)
### taurusplot
(basically try all features described in the [user's guide](http://taurus-scada.org/en/latest/users/ui/index.html)
- [ ] Execute: `taurusplot "eval:Q(rand(333),'mm')" sys/tg_test/1/wave`
- [ ] Check region Zoom in and out with region zoom and go back stacked zoom levels with
- [ ] Check region Zoom in and out with region zoom and go back stacked zoom levels with the mouse middle button
- [ ] Check mouse wheel Zoom
- [ ] Test panning (dragging with CTRL pressed)
- [ ] Test inspector mode
Expand All @@ -68,23 +68,27 @@ Hint: this list can be used as a template to be copy-pasted on an issue linked f
- [ ] Test plot configuration dialog
- [ ] Test changing curve titles
- [ ] Test Save & restore config (change curve properties, zoom, etc & check that everything is restored)
- [ ] Open the "Input data selection" dialog and add/remove/reorder /edit models
- [ ] export one curve data to ASCII and then load it using "Input data selection" -> raw data -> open file
- [ ] ... other features from [user's guide](http://taurus-scada.org/en/latest/users/ui/index.html)
### taurustrend
(basically try all features described in the [user's guide](http://taurus-scada.org/en/latest/users/ui/index.html)
- [ ] Execute: `taurustrend "eval:Q(rand(),'mm')" sys/tg_test/1/ampli`
- [ ] Execute: `taurustrend -xe "eval:Q(rand(),'mm')" sys/tg_test/1/ampli`
- [ ] Check region Zoom in and out with region zoom and go back stacked zoom levels with
- [ ] Check region Zoom in and out with region zoom and go back stacked zoom levels with the mouse middle button
- [ ] Check mouse wheel Zoom
- [ ] Test panning (dragging with CTRL pressed)
- [ ] Test inspector mode
- [ ] Test pause mode
- [ ] Move curves between axes by clicking on legend (and test zoom on Y2)
- [ ] Test plot configuration dialog
- [ ] Test Forced reading mode
- [ ] Test autopanning mode
- [ ] Test autoscale x mode
- [ ] Test Save & restore config (change curve properties, zoom, etc & check that everything is restored)
- [ ] ... other features from [user's guide](http://taurus-scada.org/en/latest/users/ui/index.html)
- [ ] ... other features from [user's guide](http://taurus-scada.org/users/ui/index.html)
### Test taurusimage
Expand All @@ -99,16 +103,6 @@ Hint: this list can be used as a template to be copy-pasted on an issue linked f
- [ ] Test auto-scroll and auto-scale tools
- [ ] Test Save & restore config (change axes range, zoom, tool status colormap etc & check that everything is restored)
### Tauruscurve & taurustrend1d
(unused and to be deprecated, you may test but **do not worry too much if they fail**)
- [ ] Execute: `tauruscurve --demo`
- [ ] Change size
- [ ] Move curve with mouse
- [ ] Resize curve with mouse
- [ ] Test some option of the menu with mouse.
- [ ] Execute: `taurustrend1d "eval:Q(rand(),'mm')"` and test it in the same way
### taurusdesigner
- [ ] Check that taurusdesigner is correctly opened and taurus widgets are present in the catalog
- [ ] Create an empty widget and drag various taurus widgets to it (they should be correctly dropped)
Expand All @@ -124,26 +118,27 @@ Hint: this list can be used as a template to be copy-pasted on an issue linked f
- [ ] Navigate in the tree and select the TangoTest device (the attr an command panels should be populated)
### taurusform
(basically try all features described in the [user's guide](http://taurus-scada.org/en/latest/users/ui/index.html)
(basically try all features described in the [user's guide](http://taurus-scada.org/users/ui/index.html)
- [ ] Launch `taurusform sys/tg_test/1/short_scalar`
- [ ] go to label context menu, change the configuration and set range to (-1000, 1000), alarm to (-500, 500) and unit to `mm`. Close the form and relaunch. The new units should be used. Change the the write value and check that the orange color is used when in warning values, and that the write widget does not allow to write values out of range.
- [ ] Test to drag and drop of this attribute onto the same form many times (4 times)
(If it crashes, you are seeing bug #96)
- [ ] Open "Modify Contents" and add sys/tg_test/1 and all of its attributes. They should all show ok
- [ ] Test the compact mode (switch to compact, noncompact; edit when in compact mode, ...) for a single
value (from the context menu of a value label)
- [ ] Test compact mode for all values (from the context menu of the whole form)
- [ ] Test changing labels
- [ ] Test changing the formatter for a single value (from the context menu of a value label) (use, e.g. `>>{}<<`)
- [ ] Test changing the formatter for a single value (from the context menu of a value label) (use, e.g. `>>{}<<`). Do this in compact and non compact modes.
- [ ] Test changing the formatter for all values (from the context menu of the whole form)
- [ ] Test re-order of values with "Modify contents"
- [ ] Test the different "show" buttons (tables, images, spectra)
- [ ] Change the write widget of double_scalar by a TaurusWheelEdit
- [ ] Change other read and write widgets
- [ ] ... other features from [user's guide](http://taurus-scada.org/en/latest/users/ui/index.html)
- [ ] ... other features from [user's guide](http://taurus-scada.org/users/ui/index.html)
### taurusgui
(basically try all features described in the [user's guide](http://taurus-scada.org/en/latest/users/ui/index.html)
(basically try all features described in the [user's guide](http://taurus-scada.org/users/ui/index.html)
- [ ] Launch `taurusgui example01`
- [ ] Test (un)lock view
Expand All @@ -157,7 +152,7 @@ Hint: this list can be used as a template to be copy-pasted on an issue linked f
- [ ] Create a new TaurusGui (call it `foogui`) with `taurusgui --new-gui` (follow the wizard)
- [ ] Install `foogui` with pip (using a virtualenv may be a good idea)
- [ ] launch `foogui` using the script that has been installed
- [ ] ... other features from [user's guide](http://taurus-scada.org/en/latest/users/ui/index.html)
- [ ] ... other features from [user's guide](http://taurus-scada.org/users/ui/index.html)
### taurusconfigbrowser
Expand Down
10 changes: 8 additions & 2 deletions doc/source/conf.py
Expand Up @@ -23,6 +23,7 @@
# along with Taurus. If not, see <http://www.gnu.org/licenses/>.
##
##############################################################################
from __future__ import print_function
import sys
import os

Expand Down Expand Up @@ -64,10 +65,16 @@ def _build_doc_api():
'taurus\.qt\.qtgui\.resource',
'taurus\.qt\.qtgui\.taurusgui\.conf',
]
if sys.version_info.major > 2:
excl += [
'taurus\.qt\.qtgui\.qwt5', # qwt5 not available in PY3
'.*\.(object|zip|str)', # avoid warnings from builtins
]

rstCreator = API_Creator(exclude_patterns=excl,
templatespath=_doc_dir,
overwrite_old=True,
verbose=True)
verbose=False)
# clean previously existing rst files
rstCreator.cleanAutogenerated(_api_dir)
# generate api
Expand Down Expand Up @@ -295,5 +302,4 @@ def _build_doc_api():
'sardana': ('https://sardana-controls.org', None),
'pint': ('http://pint.readthedocs.io/en/stable/', None),
'PyTango': ('http://pytango.readthedocs.io/en/stable/', None),
'PyQt4': ('http://pyqt.sourceforge.net/Docs/PyQt4/', None),
}

0 comments on commit cfb9a9d

Please sign in to comment.