Pyface

Latest version: v8.0.0

Safety actively analyzes 623586 Python packages for vulnerabilities to keep your Python projects secure.

Scan your dependencies

Page 1 of 4

8.0.0

=============

Highlights of this release
--------------------------

This is a major release which removes a number of things which have been
deprecated for a number of years. The most significant change in this release
is that the Qt toolkit backend has been moved from the ``pyface.ui.qt4``
package to the ``pyface.ui.qt`` package. The "qt4" namespace had been an
ongoing source of confusion as Qt5 and Qt6 became the most popular versions of
Qt in use. Because this change has the potential to cause significant backwards
compatibility issues, this release includes import hooks to continue to support
imports from ``pyface.ui.qt4...`` which can be enabled by:

- using "qt4" for the `ETS_TOOLKIT` or `ETSConfig.toolkit` values.
- setting the `ETS_QT4_IMPORT` environment variable to a non-empty value
- explicitly adding the import hooks to `sys.meta_path`

In particular the environment variables allow users of ETS-based applications
such as Mayavi to continue to use those applications with newer versions of
Pyface until there is time to update their code to the new import locations.

Additionally this release uses the module-level ``__getattr__`` system
introduced in Python 3.7 to delay imports from the ``api`` modules which have
side-effects, particularly toolkit selection. This means that you can, for
example, import ``pyface.api`` and toolkit selection will be deferred until
you actually request a class or object which is toolkit-dependent. Part of
this included adding formal interfaces for ``ActionManager`` and its subclasses

In addition this release:

- adds support for Python 3.11 and drops support for Python 3.6
- adds support for PySide 6.4+ and the new enum system
- removes code supporting PyQt4, and supports more modern imports from
`pyface.qt`, such as `pyface.qt.QtWidgets`.
- removes many things flagged as deprecated in Pyface 7
- consistently add interface classes to ``api`` modules.
- adds new Field subclasses, including an ImageField and LabelField
- moves to a pyproject.toml-based packaging solution, removing setup.py

Detailed changes
----------------

Thanks to:

* Mark Dickinson
* Dominik Gresch
* JaRoSchm
* Rahul Poruri
* Corran Webster

Features

* Refactor IField and add IImageField and ILabelField Field classes (1234)
* Move ``pyface.ui.qt4`` to ``pyface.ui.qt`` (1223, 1228)
* Delayed imports with side-effects in ``api`` modules; new interfaces for
``ActionManager`` and its subclasses (1229)

Enhancements

* Better handling of sizes for multiple (or no) screens (1237)
* More arguments for the ``confirm`` function (1221)
* Expose interfaces in ``api`` modules and other improvemnts to ``api`` modules
(1220, 1222, 1229)
* remove deprecated modules and code (1209, 1215)
* PySide 6.5 support (1238)
* Python 3.11 and PySide 6.4 support (1210)

Fixes

* Always use a no-delay timer for ``GUI`` ``invoke_later`` and
``set_trait_later`` on Qt (1226)
* Work arounds for some end-of-process segfaults on PySide < 6.4.3 (1214)
* Use ``exec`` instead of ``exec_`` where possible (1208)
* Emit a warning rather than asserting in SplitTabWidget (1192)
* Remove required parent argument in Wx StatusBarManager (1192)
* Use integer division in DockSplitter.draw (1190)

Documentation

* general updates and enhancements (1238)
* update copyright dates (1191)

CI

* remove ``setup.py`` and use ``pyproject.toml`` (1203, 1214)

7.4.4

=============

Highlights of this release
--------------------------

This is a quick bugfix release that resolves some issues with the 7.4.3 release
on CI for downstream projects. The issues were on testing code, and so
shouldn't impact application code or behaviour.

Detailed changes
----------------

Thanks to:

* Corran Webster

Fixes

* Don't raise ConditionTimeoutError if test doesn't time out (1182)

CI

* get CI working again with ubuntu-current on GitHub (1186)

7.4.3

=============

Highlights of this release
--------------------------

This is a bugfix release that collects a number of additional issues discovered
and fixed since the 7.4.2 release. Among the fixes, this pins PySide6 to less than
6.4.0, as 6.4 has breaking changes in it.

Detailed changes
----------------

Thanks to:

* Alex Chabot-Leclerc
* Mark Dickinson
* Eric Larson
* Steven Kern
* Corran Webster

Fixes

* Fix code editor gutter widget on recent Python versions (1176)
* fix issues with FileDialog and DirectoryDialog close method on Linux (1175)
* update setup.py metadata (1173)
* restrict to PySide versions before 6.4.0 (1169)
* don't do unneccessary evaluations of conditions in EventLoopHelper (1168)
* fix a deleted object error in PyQt5 (1161)
* better reporting of toolkit errors (1157)

Documentation

* fix some Python 2 style print statements in documentation (1157)

7.4.2

=============

Highlights of this release
--------------------------

This is a bugfix release that collects a number of additional issues discovered
and fixed since the 7.4.1 release.

Detailed changes
----------------

Thanks to:

* Eric Anderson
* Mark Dickinson
* Robert Kern
* Orion Poplawski
* Rahul Poruri
* PyHannes
* Corran Webster

Fixes

* fixes for Qt workbench backend (1149)
* fix ConsoleWidget PySide6 issues (1146, 1147)
* fix default AboutDialog image (1142)
* remove reference cycle for actions on clean-up (1143)
* status bar manager not cleaned up properly (1141)
* expose QOpenGLWidget in a consistent place in pyface.qt (1138)
* map popup menu coordinates to global (1137)
* fix issues with last window close on Qt6 (1136)
* font size and stretch are ints at the toolkit level (1118)

Documentation

* add copy buttons for example code (1134)

CI

* add a publish to PyPI Github action (1126)

7.4.1

=============

Highlights of this release
--------------------------

This is a bugfix release that fixes an issue that was causing memory
corruption and occasional segfaults when using the new ArrayImage and
PILImage classes on Windows with PySide2.

Detailed changes
----------------

Thanks to:

* Mark Dickinson
* Rahul Poruri
* Corran Webster
* John Wiggins

Fixes

* fix segfaults and memory corruption from dropped QImage references (1108)

7.4.0

=============

Highlights of this release
--------------------------

This release features some significant refactoring and reorganisation of the
Pyface API aimed at making it generally more coherent. Specific changes
include:

* adding intermediate interfaces and classes to collect common roles and
behaviours.
* adding hooks to control widget sizing behaviour within layouts/sizers.
* deprecating behavior where a class creates the underlying toolkit widget in
the __init__ method. This was done by a small minority of Widget classes,
now all widgets are able to use two-step creation (first the
instance, then the toolkit object via the create() method).
* creating Qt versions of some widgets, and filling in some gaps in widget
types (particularly for Fields)
* providing image classes that wrap PIL images and NumPy arrays that allow
dynamic images and icons in addition to the resource-based versions.
* providing a toolkit-independent Font class and corresponding trait that
supports similar use-cases to the existing TraitsUI Font trait.
* extracting the menu and toolbar Schema system from Tasks and making it more
generally useable.

All changes should be backwards compatible, and deprecated APIs have a clear
path forward.

Additionally, this release adds experimental support for Qt 6 in the pyface.qt
API. Downstream packages can use the "pyqt6" and "pyside6" values for
``QT_API`` and CI is being run and passing with PySide6. We generally plan to
move the default development environment to Python 3.8 and PySide6 over the
next few months.

Corresponding to this, PyQt4 support is deprecated, CI is no longer being run
for PyQt4 (which has been at end-of-life since 2015) and remaining support for
PyQt4 will be removed in the next major release.

Detailed changes
----------------

Thanks to:

* Aaron Ayres
* Kit Choi
* Nicola Di Mitri
* Mark Dickinson
* Rahul Poruri
* Diego Ramirez
* Palash Vishnani
* Corran Webster

Enhancements

* Make Action Schemas a generic feature, not specific to Tasks (1076, 1079)
* Add a FontDialog class (1067)
* Allow experimental use of Qt6 backends (1050, 1057, 1059)
* Add DropHandler classes to public API (1049)
* Make Color and Font traits available in pyface.ui_traits and no longer import
them from traits.api (1043)
* Add multi-file selection for IFileDialog (1031)
* Support widgets and context menus for any concrete widget (1019, 1020,
1066)
* Add an ILayoutWidget interface and LayoutWidget base class for widgets which
can be used as layout/sizer items and refactor appropriate classes to use
it (1016, 1018)
* Add an _initialize_control method to base IWidget interface (1013)
* Deprecate creation of widgets in __init__, use separate create call (993)
* Add ILayeredPanel and Qt implementation of LayeredPanel (982)
* Improvements to PythonEditor and PythonWidget classes (980)
* Improvements to SplitWidget widget (977)
* Improvements to HeadingText widget (976)
* Add toggle field widget classes (962)
* Improvements to image support allowing dynamic images from PIL, NumPy (693,
959, 960, 970, 997, 1002, 1004)
* Further conversion to use observe system (954, 963, 985, 1005, 1026)
* Replace use of pkg_resources by importlib (943, 991, 994, 1000)
* Remove code branches for unsupported toolkit versions (938, 939)
* Replace uses of sys.exc_traceback with sys.exc_info()[2] (936)
* Replace old trait handlers with the new equivalents (931, 1041, 1043)
* Add a text_format argument to MessageDialogs for Qt (907)
* Add an enum type for DataViews (782)
* Add a ColorDialog class (711, 1065, 1066)
* Add a toolkit-independent Font class and associated traits (609, 1066)
* Add a TimeField widget class (507)

Fixes

* Support for PyQt6-style enums (1098)
* Fix an issue with circular references in EventFilters (1093)
* Select colors from palettes for better dark mode support (1089)
* Fix an issue with undocked dock panes not updating (1044)
* Remove uses of old trait constructors such as Either and Trait() (728,
1041)
* Fix SplitEditorAreaPane tab label and tooltip update bugs (1038)
* Fix broken local imports (1034, 1036)
* Fix active_task observer (1026)
* Fixes to make examples work (988)
* Better support for newer Python and Qt versions (958, 964, 965)
* Fix use of wx.StyledTextControl (951)
* Fix sizing of ImageButton when image changes (932)
* Fixes for observe integration (915)
* Code quality improvements (914, 919, 920, 921, 922, 923, 935, 945,
946, 947, 920, 921, 922, 923, 1007, 1008, 1046, 1048, 1070, 1072,
1074)
* Fix DockItem trait definitions (902)

Documentation

* Update discussion of toolkit support (1101)
* Documentation for standard dialogs (1053)
* Improvments to GUITestAssistant documenation (1047)
* Clean up unused links (1012)
* Documentation for ImageLibrary system (1001)
* Documentation for GuiTestAssistant and ModalDialogTester (933)
* Add documentation for contents of API modules (903)

Build, Tests and Continuous Integration

* Ensure tests run cleanly in Python 3.8 and when some packages missing (1090)
* Flake8 style check in CI (1073)
* Use most recent EDM version (1058)
* Support MacOS Big Sur in CI (1056)
* Add flake8 command to etstool.py (1027)
* Rename "master" branch to "main" (1011)
* Tests for ImageLibrary system (1003)
* Allow manual triggering of cron CI jobs (975)
* Generic modules for testing classes (926, 956)
* Move CI to github actions (950, 961, 967, 1056)
* Drop PyQt4 from CI (949, 955)
* Improvements to CI (908)

Page 1 of 4

© 2024 Safety CLI Cybersecurity Inc. All Rights Reserved.