Skip to content

Releases: Atlamillias/DearPyPixl

Version 2.2

24 Apr 21:23
0f1ab13

Choose a tag to compare

Changes:

  • Minimum DearPyGui version -> v2.3:
    • Adds various constants for tab items, colors, and styles.
    • Adds additional configuration options for mvTab.
    • mvFontChars, mvFontRange, and mvFontRangeHint classes and related functions have been removed.
  • Classes in the theme, value, colormap, handlers, tables, plots, drawing, font, menu, and tab systems derived from ContainerItem have new methods for creating specific children. Most create items that are children to that type exclusively (excluding mvStage and mvTemplateRegistry) e.g. mvTable.add_table_row(), while a select few were added simply because it "made sense" like mvTableRow.add_spacer().
  • AppItem.__repr__() now includes the item's label but not its value.
  • SupportsValueArray.__eq__() has been removed — instances now fall back on AppItem.__eq__().

Fixes:

  • AppItem:
    • __delitem__() no longer ignores the __item_index_slot__ class-level attribute.
    • Class-level attributes __item_parents__ and __item_children__ are now properly assigned.
    • Comparisons between built-in item type classes and DearPyGui type names now evaluate as intended.
    • Instances of built-in item type classes are now hashable as intended. However, instances of classes derived from those types may not be, as the Python interpreter may set their __hash__ attribute to None since they inherit AppItem.__eq__().
  • ContextMenuStack.push(): adjusted the logic so that it no longer incorrectly raises IndexError .
  • Several constants that were missing from the dearpypixl namespace are now properly exported.
  • The identify() method of mvThemeColor & mvThemeStyle had a return signature that differed from the actual return value — both of which were not intentional. The method now returns a namedtuple-like object.
  • SupportsValueArray.__setitem_() now works (nothing else to add here...).
  • A specific warning that can be issued when importing dearpypixl is no longer falsely emitted.

Misc

  • set_primary_window() will now cache several options of a window at the time it is set as the primary window that will be restored once that window is no longer the primary window.
  • Generated item type class signatures now include the DearPyGui docstring.
  • theming.SizedFont is now deprecated since it no longer serves a purpose as fonts can now be resized on demand. It will be removed in a future release.

Full Changelog: v2.1.3 -> v2.2

v2.1.3

28 Mar 06:44

Choose a tag to compare

It's been a while since I've updated this library. Truth be told, I simply haven't found myself developing UI lately. Well, not until recently. The original version of Dear PyPixl (the one that predates the commit history) is over 7 years old now and was my first ever project. Since then, every release tends to be vastly different from the last -- I've made a plethora of mistakes and accumulated many hours of tech-debt, but I feel like I have a better approach and am better equipped knowledge-wise each time I revisit the project. My personal goal for this project is to find myself typing uv add dearpypixl or python -m pip install dearpypixl when I want to build an interface using Dear PyGui. I think this release is the closest I've gotten to that point; Dear PyPixl v2.0 focuses on reducing the library's on-import overhead and memory footprint, reducing internal framework complexity, eliminating de-synchronized state(s) between Dear PyPixl and Dear PyGui, reducing the quantity of Dear PyGui monkey-patches, and making the library's core API uniform with Dear PyGui so it serves as a near drop-in replacement.

Highlights

  • Significantly reduced the amount of dynamic code generation at run-time - the core framework (symbols that are available in the dearpypixl namespace) is now generated at the time of release against the newest version of Dear PyGui available at the time (currently v2.2).
  • Building the core framework creates ~80% fewer objects, sharply reducing its memory footprint. This was achieved by caching immutable objects that would otherwise be created hundreds of times (like property objects and tuples), in addition to offloading most typing signatures to stub files.
  • The library no longer uses its own UUID counter/registry, eliminating any potential UUID collisions. The performance limitation (the reason it used its own counter in the first place) has been remedied in Dear PyGui v2.2 (thanks to @v-ein).
  • AppItem.__new__() -- the constructor inherited by every item type class -- can now handle integer UUIDs and string alias (new or existing), eliminating the need of separate constructors. This is at no cost to performance.
  • Decoupled item and interface creation -- all item type classes now have a create() class method that creates both the item and interface, while simply calling the class only creates the interface object.
  • Improved the experience and result of subclassing Dear PyPixl's item type classes. User-defined subclasses are now expected to include dearpypixl.CompositeItem amongst its list of bases (listed before the built-in item type class). This is an extra step, but doing so is definitely worth it (see the README for an example).
  • Reduced the number of internal AppItem bases & mixin classes, therein reducing the number of classes used to create built-in item type classes.
  • All Dear PyGui constants as per v2.2 (excluding those named after Dear PyGui item types) are now exposed in dearpypixl as enum.IntEnum or enum.IntFlag members. Note that their respective enumeration classes are only available in dearpypixl.lib.constants, not dearpypixl.
  • Added ImGui "key" constants for the mouse and gamepad that are currently unavailable in Dear PyGui (see the dearpypixl.lib.constants.mvKey enumeration).
  • Patches the set_primary_window() function so that it re-applies most of the window's settings when changed, fixing an issue where the window could "forget" several of its settings.
  • Symbols available in the dearpypixl namespace mirror most non-deprecated symbols in dearpygui.dearpygui, allowing a lot of existing Dear PyGui code to work using import dearpypixl as dpg in place of import dearpygui.dearpygui as dpg. Exceptions include code referencing Dear PyGui's item type constants like mvButton which are class objects in dearpypixl -- the constant value can be obtained by casting the class to int.
  • A few item type classes such as mvPlot and mvTextureRegistry have new methods.
  • Improvements have been made to dearpypixl.menus and dearpypixl.console.
  • dearpypixl.theming has been completely revised -- a lot of symbols no longer exist.
  • Updated dearpypixl.grid.Grids "rendering" logic, making it more performant.
  • The dearpypixl.color and dearpypixl.style modules still exist and are largely unchanged.
  • The Application and Viewport classes still exist and are now less weird. They now act like typical Python classes and adhere to similar semantics to item type classes. Their create() methods run the associated Dear PyGui setup boilerplate code, while calling the class normally simply returns an interface operating on global state. Both are available in the dearpypixl namespace.
  • On-frame callbacks are now managed through the Viewport class instead of Runtime.
  • The Runtime class still exists and has been moved to dearpypixl.runtime, but is now more simple and modular.

Still fighting with Sphinx rst for html documentation, though. I'll get there...eventually.

Full Changelog: 1.2.6...v2.1.3

1.2.6

19 Nov 06:07

Choose a tag to compare

Fixes:

  • an internal helper function formerly relied on inspecting the frame stack, which would break when frozen

1.2.4

25 Oct 21:26

Choose a tag to compare

Fixes:

  • [Python 3.12] no longer raises AssertionError on import
  • [typing] module contents can now be correctly inspected by type checkers
  • [themes] calling functions would sometimes raise AttributeError
  • [console] InteractivePython's input field resizer would occasionally break when using a non-default font
  • [api] Registry.windows() now returns only window item identifiers (formerly returned the direct result of dearpygui.get_windows, which includes ALL top-level items)
  • [api] Registry.root_items() no longer returns the exact opposite of what's intended
  • Interface class .command members were bound to the pre-patched DearPyGui function
  • Corrected branching logic within the interface function based on the inclusion of the initialize keyword argument
  • Fixed the wonky error message thrown when constructing an interface instance using a new alias
  • delay_search and before are now excluded from "item configuration"

Misc:

  • Improved the error message thrown when calling the .configure or .configuration methods of an interface whose target item no longer exists
  • Functions within the color and style modules are now typed to accept variadic keyword arguments
  • The performance of the item interface method .configuration has been significantly improved

Full Changelog: 1.2.0...1.2.4

1.2.0

17 Oct 18:28

Choose a tag to compare

Changes

  • dearpygui.grid has been completely rewritten, although the API is mostly the same. It is now also completely detached from the rest of the library (it will have its' own repo soon).
  • Dear PyPixl now plays nice with packaging frameworks.
  • Corrected typing for Dear PyGui's buffer types, and added them to dearpypixl.typing.

Full Changelog: 1.1.2...1.2.0

1.1.2

22 Sep 21:00

Choose a tag to compare

Breaking:

  • corrected Applications .version property, which was misspelled as .verison

New:

  • Runtime:
    • added methods .get_exit_callback, .set_exit_callback
    • added the optional keyword argument debug_aware the .start method
  • added the menu module (experimental -- a warning is issued during import)
  • added the .identify method to ThemeElementTypes

Fixes:

  • fixed an issue where the wrong Table API was used depending on the installed dearpygui version
  • the SupportsSized mixin now properly returns calculated values for the rect_min/max properties when necessary
  • Viewports "fullscreen" behaviors no longer do the opposite of what was intended

Misc;

  • the AppItemType.root_parent property is now much more likely to return a proper item interface instead of an instance of mvAll
  • changed the dependent dearpygui version to >= 1.9.0 (formerly locked to 1.9.x)

1.1.0

14 Sep 01:14
f2241c2

Choose a tag to compare

Breaking;

  • Removed the interface module. Public contents are now available in the typing module.

Additions;

  • themes module containing functions that return a theme preset
  • expanded the events module with stuff

Fixes;

  • name(space) collisions

1.0.4

08 Sep 18:27
5771b02

Choose a tag to compare

Merge pull request #17 from Atlamillias/v1.0.x

1.0.4

1.0.0

04 Sep 02:29

Choose a tag to compare

misc (Runtime): `.queue` typing

0.3.1

28 Aug 00:50

Choose a tag to compare

I'm sure I'll remember to edit this.