Skip to content

Releases: metaopt/optree

v0.17.0

25 Jul 08:15
Compare
Choose a tag to compare

optree v0.17.0

Added

Changed

Fixed

  • Handle pybind11 macro defined as 0 instead of non-exist by @XuehaiPan in #227.

Removed

Full Changelog: v0.16.0...v0.17.0

v0.16.0

28 May 07:15
Compare
Choose a tag to compare

optree v0.16.0

Added

  • Explicitly set recursion limit for recursion tests by @XuehaiPan in #207.
  • Dump build-time meta-information to C extension by @XuehaiPan in #215.
  • Use pybind11::native_enum to create enum class PyTreeKind if available by @XuehaiPan in #214.
  • Enable pybind11::smart_holder to create class PyTreeSpec and PyTreeIter if available by @XuehaiPan in #217.
  • Implement optional tp_clear for class PyTreeSpec and PyTreeIter by @XuehaiPan in #218.
  • Add function tree_partition by @pfackeldey in #222.
  • Add Python 3.14 and Python 3.14t support by @XuehaiPan in #216.

Changed

  • Enforce naming convention of packages with singular and plural: optree.{accessor,integration} -> optree.{accessors,integrations} by @XuehaiPan in #209.
  • Allow creating dataclass types in the global namespace by @XuehaiPan in #212.
  • Migrate to setuptools>=77 for PEP-639 by @XuehaiPan in #208.
  • Update minimal version of typing-extensions to 4.6.0 for typing_extensions.TypeAliasType by @XuehaiPan in #216.

Fixed

  • Never call PyType_Ready twice and use PyType_Modified instead by @XuehaiPan in #214.
  • Fix optree.typing.PyTree[T] for Python 3.14 due to immutable UnionType by @XuehaiPan in #216.

Removed

New Contributors

Full Changelog: v0.15.0...v0.16.0

optree v0.15.0

05 Apr 17:30
Compare
Choose a tag to compare

optree v0.15.0

Added

Removed

New Contributors

Full Changelog: v0.14.1...v0.15.0

optree v0.14.1

01 Mar 19:34
Compare
Choose a tag to compare

optree v0.14.1

Added

  • Support using system cmake executable during setup by @mgorny in #188.
  • Add shortcut module optree.pytree and optree.treespec by @lqhuang in #189.
  • Support lookup all registry entries in a namespace via register_pytree_node.get() by @XuehaiPan in #190.
  • Add PyPy 3.11 support by @XuehaiPan in #194.

Changed

New Contributors

Full Changelog: v0.14.0...v0.14.1

optree v0.14.0

16 Jan 19:17
Compare
Choose a tag to compare

optree v0.14.0

Added

Changed

  • Mark some arguments as positional-only as of Python 3.8+ by @XuehaiPan in #178.

Fixed

Removed

Full Changelog: v0.13.1...v0.14.0

optree v0.13.1

12 Nov 12:32
Compare
Choose a tag to compare

optree v0.13.1

What's New

  • CI workflow improvements and minor fixes for typing annotation.

Added

  • Upload coverage / JUnit results / core dumps in CI workflows by @XuehaiPan in #170 and #172.
  • Add more info to tree_flatten_one_level by @XuehaiPan in #168.
  • Improve typing support for generic PyTree[T] and registry lookup / register functions by @XuehaiPan in #160 and #166.

Changed

  • Move include directory include/{ => optree}/*.h by @XuehaiPan in #167.

Fixed

  • Improve typing support for optree.dataclasses.dataclass and optree.dataclasses.field by @manulari in #165.

Full Changelog: v0.13.0...v0.13.1

New Contributors

@manulari made their first contribution in #165.

optree v0.13.0

03 Oct 12:52
Compare
Choose a tag to compare

optree v0.13.0

What's New

  • Add Python 3.13 and Python 3.13t (free-threading build) support.
  • Add dataclasses integration.
  • Significantly refactor and improve CXX build support.

Added

Changed

  • Split implementation files and add more inline / constexpr / noexcept qualifiers by @XuehaiPan in #159.
  • Use cmake's FindPython module by @XuehaiPan in #151.

Fixed

  • Fix potential segmentation fault for structseq_fields cache support by @XuehaiPan in #150.

Full Changelog: v0.12.1...v0.13.0

optree v0.12.1

06 Jul 14:37
Compare
Choose a tag to compare

optree v0.12.1

Fixed

  • Fix warning regression during import when launch with strict warning filters by @XuehaiPan in #149.

Full Changelog: v0.12.0...v0.12.1

optree v0.12.0

04 Jul 19:54
Compare
Choose a tag to compare

optree v0.12.0

Added

Changed

  • Use stable tag instead of 2.12.0 for pybind11 version by @XuehaiPan in #146.
  • Refactor the raw import statement in setup.py with importlib utilities by @XuehaiPan in #135.
  • Update minimal version of typing-extensions to 4.5.0 for typing_extensions.deprecated by @XuehaiPan in #134.
  • Update string representation for OrderedDict by @XuehaiPan in #133.

Fixed

  • Fix gc for self-referential case by implementing tp_traverse by @XuehaiPan in #144.
  • Fix potential segmentation fault for pickling support by @XuehaiPan in #143.
  • Update CI runner image for Python 3.7 on macOS by @XuehaiPan in #135.

Removed

Full Changelog: v0.11.0...v0.12.0

optree v0.11.0

25 Mar 18:01
bab8b7c
Compare
Choose a tag to compare

optree v0.11.0

Added

  • Add function is_namedtuple_instance and is_structseq_instance and result caches by @XuehaiPan in #121.
  • Add tree_iter function by @XuehaiPan in #130.
  • Add API to unregister node type in the registry by @XuehaiPan in #124.
  • Add tree map functions with transposed outputs tree_transpose_map and tree_transpose_map_with_path by @XuehaiPan in #127.
  • Add static constructors to create PyTreeSpec instances by @XuehaiPan in #120.
  • Cache intermediate str objects in PyObject_GetAttr calls by @XuehaiPan in #106 and #109.
  • Install clang-format and clang-tidy from PyPI by @XuehaiPan in #107.
  • Also check _make and _asdict in function is_namedtuple_class by @XuehaiPan in #105.

Changed

  • Set recursion limit to 1000 for all platforms by @XuehaiPan in #121.
  • Allow types to be registered in both the global namespace and custom namespaces by @XuehaiPan in #124.
  • Set treespec_is_leaf as strict by default by @XuehaiPan in #120.
  • Reorder functions for better code correspondence between C++ and Python by @XuehaiPan in #117.
  • Standardize py::handle and py::object usage in function signature by @XuehaiPan in #115.
  • Reorder cases for namedtuple and PyStructSequence types by @XuehaiPan in #111.
  • Use __bases__ rather than __base__ in function is_structseq_class by @XuehaiPan in #104.

Fixed

  • Fix potential segmentation fault when modifying treespec.entries() by @XuehaiPan in #116.

Full Changelog: v0.10.0...v0.11.0