Recent Releases of enable

enable - Version 6.0.0

This is a major version update to add support for Python 3.11, PySide 6.4+, and TraitsUI 8. As part of this update, a number of backwards-incompatible changes were made. Perhaps the most significant of these was the removal of the partially implemented and buggy OpenGL Kiva backend, but it also included removing support for legacy Numeric APIs, changing modules with "qt4" in their name to use "qt" instead, some changes to make the various Kiva APIs more consistent, and some changes to the mapping of font families to bring them in line with documentation and other libraries.

Building Enable, with its complex dependencies has sometimes been challenging for users, so this release includes Github actions that use cibuildwheel to automatically build binary wheels across a wide variety of Python versions, operating systems and architectures and upload them to PyPI. This should make pip-based installs of Enable significantly easier.

Finally, as is usual for a release, there are a number of smaller bugfixes and minor improvements, such as bringing the PyCairo and Quartz backends back into a working state.

Thanks to:

  • Mark Dickinson
  • Chengyu Liu
  • Didrik Pinte
  • Corran Webster
  • John Wiggins

Enhancements

  • Move kiva.image to kiva.oldagg and make kiva.image a stub (#1054)
  • Map MODERN fonts to monospace and TELETYPE to typewriter (#977)
  • Normalize setting of colors across backends (#1052)
  • Support for PySide 6.4+ (#1045, #1053)
  • Remove support for old Numeric APIs (#1011)
  • Python 3.11 support (#1042)
  • Remove OpenGL backend (#1029)
  • Code modernization (#933, #1015)

Fixes

  • Fix draw_path_at_points for the Quartz Kiva backend (#1051)
  • Do explicit type conversions for PyQt5 on Python 3.10+ (#1041)
  • Handle namespace changes for Pyface 8 and TraitsUI 8 (#1025, #1028, #1033, #1043)
  • Better feedback for constraints examples if kiwisolver unavailable (#1019)

Testing and CI

  • Automated wheel building (#1039)
  • Maintenance of CI and tests (#1007, #1035, #1044)

- C
Published by corranwebster about 3 years ago

enable - Version 5.3.1

This is a bugfix release that aims to improve compatibility and completeness of the various Kiva backends. In particular, there are improvements for font selection and rendering, and some fixes for path and curve rendering (particularly for arcs). There are still some discrepancies in how things are drawn, but it is more likely that something reasonable will be produced on all backends.

This also includes some fixes provided by Brecht Machiels to return the wxPython backend to a working condition.

On the build and CI front, we have added SWIG to the pyproject.toml, and no longer ship any Cython-generated C++ files. With these changes it should be possible to pip install Enable in an environment with the appropriate C/C++ compilers.

Thanks to:

  • Mark Dickinson
  • Brecht Machiels
  • Rahul Poruri
  • Corran Webster
  • John Wiggins

Fixes

  • Fix the SCRIPT font family (#975)
  • Improve font rendering (#973, #978, #980, #990)
  • Fix curve and path rendering (#970, #987, #988)
  • Correct Quartz backend string encoding (#966)
  • Restore the WxPython backends to working order (#950)

Documentation

  • Sphinx copy button support in documentation (#948)

Build and Continuous Integration

  • add a github workflow for publishing releases to PyPI (#967)
  • don't ship Cython-generated C++ files (#958)
  • add SWIG to pyproject.toml dependencies (#954)

- C
Published by corranwebster almost 4 years ago

enable - Version 5.3.0

This release focused on support for PySide6, modernization of Traits code, and improving font handling.

Thanks to:

  • Aaron Ayres
  • Mark Dickinson
  • Frank Fishburn
  • Rahul Poruri
  • Joris Vankerschaver
  • Corran Webster
  • John Wiggins

Enhancements

  • A new font trait, including support for Pyface Font objects, including support for more font weights (#929)
  • A new cross-toolkit Font editor that uses Enable internally (#928)
  • Unification of the various color traits (#917, #924)
  • Support for PySide6 (#897, #900)

Fixes

  • Fix incorrect fallback font path (#931)
  • Ensure toolkits are initialized before they are used (#921)
  • Fix incorrect trait definitions for mouse pointer traits (#911)
  • Validate line dash arguments (#910)
  • Fixes for font file parsing and discovery (#906, #918, #919)
  • Support pyparsing >= 3 for SVG parsing (#888)

Documentation

  • Improvements to Kiva documentation (#914)

Maintenance

  • Modernization of trait definitions (#925)

Build and Continuous Integration

  • CI is now run on Python 3.8 and PySide 6 (#927)
  • Replace use of Hypothesis by unittest subTest (#912)
  • Use Ubuntu 18.04 for CI (#889)
  • Some tests were not being run in CI (#929, #937)

- C
Published by corranwebster about 4 years ago

enable - Version 5.2.1

This is a bug fix release which addresses an issue with the FontManager encountered when no fonts are available and a rounding issue related to a recent pillow release.

Fixes

  • Fix FontManager bug when no fonts are available (#871)
  • Fix the dpi rounding issues with newer versions of pillow (#875)

- C
Published by aaronayres35 almost 5 years ago

enable - Release 5.2.0

The enable 5.2.0 minor version release was made to accompany the chaco 5.0.0 release. It includes some removals of deprecated code, refactoring, documentation improvements and bugfixes.

Enhancements

  • Provide better support for mixed writing systems (#763, #764 #767, #768)

Fixes

  • Fix listeners hooked up using observe but unhooked using ontraitchange (#766)
  • Handle preferred size computation when container isnt resizable (#778)
  • Fix alignment trait on "HStackedContainer" (#780)
  • Update custom marker as scale_ctm expects floats (#782)

Documentation

  • Convert # to #: to improve docstrings in markers (#784)
  • Document EnableTestAssistant (#800)

Maintenance

  • Remove "usedraworder" code path (#777)
  • Add useful objects to "enable.api" (#779, #788)
  • Remove Python 2 or 3 only conditionals (#785, #810)
  • Remove dead code (#786)
  • Remove deprecated "strtofont" and "pointsinpolygon" functions. (#787)
  • Update super usage (#789, #790)
  • Remove deprecated intercept_events trait on Container (#801)
  • Use non deprecated font families styles etc (#806)* Replace use of deprecated GetItemPyData with its new replacement GetItemData (#807)
  • Remove unused tk related drawing methods (#809)* Remove old deprecated drawing methods (#814)
  • Remove AbstractWindow.bg_color trait (#816)
  • Remove unused enable/traitdefs/ui/wx/enablergbacoloreditor.py module (#817)
  • Deal with getstate methods (#804, #841)

Build and Continuous Integration

  • Skip markers tests if not using agg (#799)
  • Add pyproject.toml to specify cython and numpy as build deps (#808, #836, #847)
  • Verify swig version in setup.py (#811)

- C
Published by aaronayres35 about 5 years ago

enable - Version 5.1.1

This is a bug fix release which addresses a drawing alignment issue.

Fixes

  • Fix artefact in Qt caused by a wrong QRectF size. (#820)

- C
Published by aaronayres35 about 5 years ago

enable - Version 5.1.0

This is an incremental release which fixes several known bugs and improves font handling. On top of that, the documentation was substantially overhauled.

Enhancements

  • Create an independent renderer for drawmarkerat_points (#724)
  • Add IPython display support (#389)
  • Add a way for applications to supply custom fonts (#711)
  • Add Brush classes (#689)
  • Add a benchmark program for comparing Kiva backends (#647, #653, #659, #661, #666, #667, #668, #671, #673, #677)
  • Add a celiagg Kiva backend for Wx (#608)

Changes

  • Add new ondragleave Enum trait to DragTool (#712)
  • Refactor Font management and selection (#693, #695, #700, #701, #702, #704, #707, #714, #723, #726)
  • Accept PIL Image instances in kiva.agg draw_image() (#682)
  • Supply DPI when saving images (#678)
  • Add face_index support to celiagg and kiva.agg backends. (#605)

Fixes

  • Catch the exception thrown by AGG (#751)
  • Don't create a ref cycle in AbstractWindow.cleanup() (#749)
  • Set encoding when saving svg file (#735)
  • Reorder the preferred fonts list (#698)
  • Extract a better property dict from TTF fonts (#697)
  • Get the Qt Quartz backend working again (#679)
  • Fix set_font() for PDF and SVG backends (#674)
  • Fix QPainter fill_path (#660)
  • Fix save() in the quartz backend (#645)
  • Fix font selection in the QPainter backend (#641)

Documentation

  • Mention return value for drawmarkerat_points (#754)
  • Update constrained layout documentation (#746)
  • Rearrange the documentation (#732)
  • Add documentation for ComponentEditor (#730)
  • Add some developer docs for Kiva's FontManager (#725)
  • Document Enable trait types (#721)
  • Add documentation for mouse events (#717)
  • Add documentation for AbstractWindow (#718)
  • Ignore Kiva backends in the API docs (#703)
  • Add a Kiva tutorial (#676)
  • Document how colors work in Kiva (#684)
  • Document image drawing in Kiva (#680)
  • Place Kiva docs before Enable docs (#675)
  • Document GraphicsContext state (#672)
  • Add documentation for CompiledPath (#662)
  • Add an intro section for Enable docs (#658)
  • Update the Kiva GraphicsContext documentation (#644)
  • Document the available Kiva backends (#646)
  • Reorg docs and document Kiva text rendering (#639)

Testing

  • Allow sending "mouse move" with left/right down with EnableTestAssistant (#715)
  • Add tests for strtofont (#705)

Maintenance

  • Deprecate the strtofont in enable.base (#748)
  • Use BGRA32 for celiagg's default pixel format (#729)
  • Require a minimum of Traits 6.2.0 (#755)
  • Don't test drawing on Qt4 due to lack of Pillow support
  • Remove kiva.fonttools.sstruct (#699)
  • Remove old/broken code (#692)
  • Add an 'oldagg' backend pointing to kiva.agg (#669)
  • Replace uses of ontraitchange with observe (#656, #663, #665, #654)
  • Normalize some signatures of Kiva methods (#691)
  • Add ContextMenuTool to enable.tools.pyface.api (#690)
  • Update celiagg backend to use 2.0.0 API (#633)

Build and Continuous Integration

  • fix edmtool test-all command (#655)
  • Install cron job dependencies correctly (#637)
  • Add Cython and SWIG to cron job build deps (#607)

- C
Published by jwiggins over 5 years ago

enable - Version 5.1.0rc2

This is the second release candidate for 5.1.0

- C
Published by jwiggins over 5 years ago

enable - Version 5.1.0rc1

This is the first release candidate for 5.1.0

- C
Published by jwiggins over 5 years ago

enable - Version 5.0.1

This is a patch release which addresses some issues that were caught early in the 5.0.x series.

Fixes

  • Fix KeySpec.from_string (#638)
  • Don't mess up the component bounds in HiDPI mode (#635)

- C
Published by jwiggins over 5 years ago

enable - Version 5.0.0

Enhancements

  • Add HiDPI support (#591, #595)
  • Contribute examples to etsdemo. (#494)
  • Add Container.components setter. (#387)

Changes

  • Accept a PIL Image as input to draw_image (#590)
  • Use Pyface-style toolkit selection. (#571)
  • Remove the old and outdated pyglet and vtk backends. (#570)
  • Remove the PIL/pillow kiva compatibility wrapper code. (#569)
  • Remove quartz CGGLContext. (#515)
  • Make kiva explorer a popup. (#510)
  • Remove import time side effect of creating the font cache in the font_manager. (#488)
  • Drop support for Python <= 3.6 from the codebase. (#384, #461, #462, #463, #464, #465, #479, #506)
  • Split out the GL backend. (#392)
  • Add opacity to null-toolkit-defined rgbacolortrait. (#374)
  • Don't use a GraphicsContext for storage in the Image component. (#251)

Fixes

  • Allow scaling in kiva.agg draw_marker_at_points (#594)
  • Celiagg's clip_to_rect should respect the transform matrix (#592)
  • Handle ETSConfig.toolkit == 'qt' (#587)
  • Undo removal of getmaccontext import (#586)
  • Allow unhandled key and mouse-wheel events to bubble up. (#552)
  • Fix Font.findfontname AttributeError when the default font manager has not been initialized. (#531)
  • Fix AttributeError on Python 3.9 due to the use of removed API in xml. (#492)
  • Make font style- and stretch- check case insensitive. (#405)
  • Add a missing self argument to a method. (#468)
  • WxPython4 fixes. (#403)
  • Pass file object into TTCollection and close when done. (#378)
  • Fix DeprecationWarning\s due to escape characters. (#371)
  • Don't mess with logging configuration. (#370)
  • Fix KeyError while parsing ttfFontProperty. (#365)

Documentation

  • Add documentation for toolkit/backend selection (#597)
  • Add an example of controlling HiDPI usage (#596)
  • Add an Image Explorer demo (#589)
  • Improve module docstrings in kiva and enable api modules. (#518, #564)
  • Mention in the README libglu1-mesa-dev is a build dependency on Linux. (#546)
  • Use templates when generating api docs for enable and kiva. (#526)
  • Ignore toolkit-specific modules in api documentation. (#522, #527)
  • Cleanup and fix errors in demos and examples. (#388, #402, #508, #511)
  • Add a click command to build docs. (#499)
  • Fix failing documentation build on Python 3. (#478)
  • Expand DragTool comments. (#452)
  • Add a demo runner for enable. (#383)

Testing

  • Clean up some of the agg tests. (#573)
  • Add a unit test for drawing images. (#572)
  • Unskip most of the TestGLDrawing tests on OSX. (#540)
  • Address resource warnings because of open file handles. (#529)
  • Rename test module so it gets discovered by unittest. (#528)
  • Fix tests for PySide2 and add PySide2 to the testing matrix. (#484)
  • Make tests for font manager quieter. (#487)
  • Use unittest as the test runner instead of nose. (#475)
  • Switch on default warnings flag for CI test command. (#469)
  • Replace use of tempfile.mktemp with tempfile.NamedTemporaryFile. (#456)
  • Add dclick option to test assistant. (#444)

Maintenance

  • Remove files that are not used or needed. (#578)
  • Use a standard copyright header. (#577)
  • Remove is_string_like. (#568)
  • Stop using deprecated trait handlers. (#567)
  • Use kiva api modules where possible. (#565)
  • Use traits.api, traitsui.api and pyface.api where possible. (#566)
  • Remove outdated/broken debugging constructs. (#560)
  • Cleanup non-standard use of traitsui.api imports. (#561)
  • Add tox.ini for flake8 control. (#559)
  • Run black on enable and kiva. (#557, #558)
  • Remove outdated/unnecessary files. (#521)
  • Remove TODO.txt file from the manifest. (#523)
  • Use pyface.undo instead of apptools.undo. (#507)
  • Remove module-level findfont in font_manager. (#505)
  • Remove USE_FONTCONFIG in font_manager. (#498)
  • Warn if attempted pyface and traitsui imports fail. (#481)
  • Remove todo files in the repository. (#474)
  • Add disclaimer in complaince with FreeType License. (#477)
  • Add or update README files to mention what are vendored code. (#476)
  • Remove unnecessary empty return statements. (#455)
  • Replace default list argument with None. (#467)
  • Use is instead of == when comparing to None. (#457)
  • Remove dead/commented out code. (#466)
  • Remove EOF markers from files. (#453)
  • Fix test failures when testing against TraitsUI 7.1.0. (#446)
  • Update badges and links in README. (#420)
  • Regenerate _cython_speedups.cpp for compatibility with Python 3.8. (#376)
  • Defer imports from font_manager in font module. (#368)

Build and Continuous Integration

  • Update setup.py to allow creation of release candidates. (#575)
  • Provide the right path to the version file on windows. (#563)
  • Unconditionally list pillow as a runtime dependency. (#562)
  • Move to a single setup.py file. (#535)
  • Declare setuptools as a test dependency. (#547)
  • Move from Travis, Appveyor CI to GitHub Actions CI. (#538, #539. #542, #544, #548, #549, #579)
  • Remove code coverage reporting on PRs. (#536)
  • Unset and remove use_2to3 from setup.py. (#520)
  • Update CI requirements. (#513)
  • Require wx toolkit CI job to pass. (#459)
  • Use config when bootstrapping an edm environment. (#489)
  • Remove install requirement version numbers from README. (#470)
  • Make improvements to edmtool utility. (#454)
  • Fix missing new dependencies in cron job. (#448)
  • Use PyQt5 from EDM instead of PyPI. (#437)
  • Re-add Wx as a supported toolkit. (#432)
  • Update cron job to install dependencies from git source. (#428)
  • Use Python 3.6 as the default runtime in edmtool. (#430)
  • Make CI green again and remove Python 3.5 from CI. (#424)
  • Add optional demo dependencies to setup.py. (#386)
  • Upgrade to EDM 2.0.0. (#373)
  • Prevent nose from capturing logs. (#367)
  • Fix the environment name used in CI. (#366)

- C
Published by jwiggins over 5 years ago

enable - Version 4.8.1

This is a patch release in the 4.8.x series.

Fixes

  • PR #368: Deferral of kiva font_manager imports
  • PR #365: Fix a KeyError while parsing ttfFontProperty

Maintenance

  • PR #366: Fix CI config to avoid skipping tests in matrix
  • PR #367: Fix CI config to avoid losing logs to nose

- C
Published by jwiggins almost 7 years ago

enable - Version 4.8.0

Enhancements

  • PR #302: Qt5 Support
  • PR #330: Add support for ttc fonts
  • PR #345: Add more Qt mouse button names

Fixes

  • PR #312: Ensure contiguity for memoryview arrays in pointsinpolygon
  • PR #317: Fix rect drawing with celiagg
  • PR #321: Kiva PDF backend: Don't clobber a passed-in font object
  • PR #331: Prevent context menus in Enable Qt widgets.
  • PR #346: Fix TypeError when passing unicode args to agg gradient methods
  • PR #350: Don't fail when empty arrays are passed to pointsinpolygon
  • PR #354: Fix typo in MANIFEST.in
  • PR #358: Fix paths to static files.

Maintenance

  • PR #322: Remove sudo: false from Travis config
  • PR #343: Fix code which triggered DeprecationWarnings
  • PR #347: Setup Appveyor
  • PR #348: Update EDM version for CI script
  • PR #349: Update unittest imports
  • PR #352: Quick and Dirty Documentation Improvements
  • PR #353: Update Travis CI configuration to be compatible with Ubuntu Xenial.
  • PR #356: CI failures on wx, python 2.7, win expected
  • PR #357: Remove unnecessary Ubuntu package.

- C
Published by jwiggins about 7 years ago

enable - Version 4.7.2

Fixes

  • PR #310: Remove locale-dependence in Agg text rendering
  • PR #309: FIX: Ensure contiguous transposed arrays
  • PR #305: Ignore X11 fonts on macOS
  • PR #299: BUG: Remove use of C API not available in Python 3

Maintenance

  • PR #308: Update to the most recent release of fonttools

- C
Published by jwiggins about 8 years ago

enable - Version 4.7.1

Bugfix release

Fixes

  • PR #295: Use uint8_t from numpy instead of stdint

- C
Published by jvkersch over 8 years ago

enable - Version 4.7.0

This is a maintenance release, with the most significant change being an upgrade to the vendorized Agg code. This should resolve issues with hard crashes in (packages that use) Kiva.

Maintenance

  • PR #288: Upgrade to a newer Agg version
  • PR #287: Improve mouse wheel support
  • PR #285: Add Python 3.5, 3.6 to CI
  • PR #284, #289, #290: Support Python 3 without 2to3
  • PR #281: Use EDM for CI testing
  • PR #280: Clean up circular import in test

- C
Published by jvkersch over 8 years ago

enable - Version 4.6.2

Bugfix release

Fixes

  • PR #272: Fix import failure when no fonts are installed on the system.
  • PR #269: Fix floating-point numbers used as NumPy shapes (incompatible with NumPy 1.12.0).
  • PR #268: Fix "no attribute 'getcurrentpoint'" error from savage on OS X.

- C
Published by mdickinson about 9 years ago

enable - Version 4.6.1

Bugfix release

Fixes

  • PR #257: Fix a problem encountered when installing from pip

- C
Published by jwiggins over 9 years ago

enable - Version 4.6.0

Enhancements

  • PR #246: Kiva explorer demo
  • PR #222: New markers: 2 triangles, star, cross-plus, 2 hexagons, and pentagon
  • PR #209: Python 3 Support
  • PR #207: Viewport resizing

Fixes

  • PR #243: Make savage compatible with newer PyParsing versions.
  • PR #241: Fixed the trs_factor function
  • PR #238: pointsinpolygon now returns a bool array
  • PR #234: allow multiple gradient stops with wx toolkit
  • PR #231: Be deterministic about initial state of viewport position and bounds
  • PRs #215 & 217: Support for Pillow 3.0
  • PR #205: Fix scrolling problem with Qt native scrollbar
  • PR #203: numpy.rank() is deprecated

Maintainence

  • PR #244: Remove support for Mac font suitcases.
  • PR #240: add quartz to MANIFEST file
  • PR #232: Don't assume window is MockWindow when dealing with pointer position
  • PR #230: Fix for build issues
  • PR #227: Create codecov.yml
  • PRs #226 & #201: Fix g++ version string parsing
  • PR #223: Fix SVG Tests
  • PR #214: Add docs and examples to the source distribution
  • PR #206: Containerize Travis CI Builds
  • PR #195: Multiple build environments
  • PR #177: fixes for recent swig
  • PR #192: Add the auto-generated enable/_version.py to .gitignore
  • PR #191: fix missing framework when building kiva.quartz.
  • PR #180: fix minor errors in sphinx build

- C
Published by jwiggins over 9 years ago

enable - Version 4.5.1

Bugfix release

Fixes

  • PR #182: Fix enable setup under recent versions of setuptools
  • PR #180: Fixed sphinx warnings
  • PR #178: Fix Travis-CI build and version file setup for kiva and enable

- C
Published by itziakos over 11 years ago

enable - Version 4.5.0

Enhancements

  • PR #138: Optional constraints-based layout.
  • PR #140: Add a base class for drag and drop tools, example and test support.
  • PR #150: Add a very basic Image component
  • PR #160: Basic testing for kiva backends.
  • PR #168: Simple push-button and checkbox tool.
  • PR #167: Add tools that support Apptools Undo/Redo.

Fixes

  • PR#139 Significant code clean-up, modernization, test improvement and documentation for Kiva.
  • Multiple fixes for breaks to Travis-CI builds.

- C
Published by jwiggins over 11 years ago