# Changelog

All notable changes to this project will be documented in this file.

The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).

## [Unreleased]

## [1.50.2] - 2023-02-14
### Fixed
- Made test file pattern account for node files not beginning with Ogn

## [1.50.1] - 2022-11-22
### Added
- Documentation for running a minimal Kit with OmniGraph

## [1.50.0] - 2022-11-15
### Changed
- Default simple dynamic attribute values to the CPU

## [1.49.0] - 2022-11-14
### Added
- instance_path argument added to IVariable.get, get_array and set methods to specify the instance of the variable
- node_type.get_path(), which returns the path to the prim associated with a node type

## [1.48.0] - 2022-11-09
### Added
- Support for redirecting dynamic attributes to the GPU

## [1.47.1] - 2022-10-18
### Fixed
- Corrected the path to the default category files

## [1.47.0] - 2022-09-28
### Changed
- Refactored controller classes to accept variable arguments in all methods and constructor
### Removed
- References to obsolete set of unsupported types
- Last remaining references to the obsolete ContextHelper
### Added
- Argument flattening utility

## [1.46.0] - 2022-09-27
### Added
- Collection of registration and deregistration timing for Python node types

## [1.45.2] - 2022-09-01
### Fixed
- Fixed the type name access in the node controller to handle bundles properly

## [1.45.1] - 2022-08-31
### Fixed
- Refactored out use of a deprecated class

## [1.45.0] - 2022-08-30
### Added
- Handling for allocation of memory and transfer of values for Python default values

## [1.44.0] - 2022-08-25
### Added
- Access to new setting that turns deprecations into errors

## [1.43.0] - 2022-08-17
### Added
- Cross-handling of array and non-array types when compatible

## [1.42.0] - 2022-08-12
### Changed
- og.AttributeData now raise exceptions for errors instead of printing

## [1.41.1] - 2022-08-09
### Fixed
- All of the lint errors reported on the Python files in this extension

## [1.41.0] - 2022-08-02
### Added
- Optimize attribute setting from python nodes - during runtime computation we skip commands (no need for undo)

## [1.40.0] - 2022-07-27
### Added
- IBundle2 remove_attributes_by_name, remove_child_bundles_by_name

## [1.39.0] - 2022-07-27
### Changed
- Added better __repr__ to Attribute and Node

## [1.38.1] - 2022-07-26
### Fixed
- Adjusted config to avoid obsolete commands module
- Added firewall protection to AutoFunc and AutoClass initialization so that they work in the script editor

## [1.38.0] - 2022-07-19
### Added
- IBundle2 interface API review

## [1.37.0] - 2022-07-12
### Added
- Python performance: database caching, prefetch and commit for batching of simple attribute reads/writes

## [1.36.0] - 2022-07-12
### Fixed
- Backward compatibility of the generated attribute descriptions.

## [1.35.0] - 2022-07-08
### Added
- omni.graph.core.Attribute.is_deprecated()
- omni.graph.core.Attribute.deprecation_message()
- omni.graph.core.Internal sub-module
- omni.graph.core.Internal._deprecateAttribute()

## [1.34.0] - 2022-07-07
### Changed
- Refactored imports from omni.graph.tools to get the new locations
- Moved node_generator/ into the _impl/ subdirectory
- Made dunder attribute names in AttributeDataValueHelper into single-underscore to avoid Python compatibility problem
### Added
- Test for public API consistency

## [1.33.0] - 2022-07-06
### Added
- Metadata support for IBundle2 interface

## [1.32.3] - 2022-07-04
### Fixed
- Py_GraphContext's __eq__ and __hash__ now use the underlying GraphContext object rather than the Python wrapper

## [1.32.2] - 2022-06-28
### Changed
- Made node type failure a more actionable error
- Bootstrap the nodeContextHandle to allow independent database creation
### Added
- Linked docs in the build area

## [1.32.1] - 2022-06-26
### Changed
- Made node type failure a more actionable error

## [1.32.0] - 2022-06-26
### Added
- Added test for clearing bundle contents

## [1.31.1] - 2022-06-21
### Changed
- Fixed error in graph_settings when loading non-schema prims

## [1.31.0] - 2022-06-17
### Added
- omni.graph.core.graph.get_evaluator_name()

## [1.30.1] - 2022-06-17
### Added
- Added ApplyOmniGraph and RemoveOmniGraph api commands

## [1.30.0] - 2022-06-13
### Added
- omni.graph.core.GraphEvaluationMode enum
- evaluation_mode argument added to omni.graph.core.Graph.create_graph_as_node
- evaluation_mode property added to omni.graph.core.Graph
- SetEvaluationModeCommand
- evaluation_mode parameter added to CreateGraphAsNodeCommand
- evaluation_mode option added to GraphController

## [1.29.0] - 2022-06-13
### Added
- Temporary binding function to prevent Python node initialization from overwriting values already set

## [1.28.0] - 2022-06-07
### Added
- Added CPU-GPU pointer support in data_view class and propagation of the state through python wrapper classes

## [1.27.0] - 2022-06-07
### Added
- Support for the generator settings to complement runtime settings

## [1.26.1] - 2022-06-04
### Fixed
- Nodes with invalid connections no longer break upgrades to OmniGraph schema

## [1.26.0] - 2022-05-06
### Fixed
- Handling of runtime attributes whose bundle uses CPU to GPU pointers
### Added
- Support for CPU to GPU data in the DataWrapper

## [1.25.0] - 2022-05-05
### Removed
- Python subscriptions to changes in settings, now handled in C++

## [1.24.1] - 2022-05-05
### Deprecated
- Deprecated OmniGraphHelper and ContextHelper for og.Controller

## [1.24.0] - 2022-04-29
### Fixed
- Fixed override method for IPythonNode type
### Removed
- Obsolete example files
### Added
- Explicit settings handler
### Changed
- Used explicit OmniGraph test handler base classes

## [1.24.0] - 2022-04-27
### Added
- *GraphController.set_variable_default_value*
- *GraphController.get_variable_default_value*
- *ObjectLookup.variable*
- *GraphContext.get_graph_target*

## [1.23.0] - 2022-04-25
### Added
- Added a test to confirm that all version references in omni.graph.* match

## [1.22.2] - 2022-04-20
### Fixed
- Undoing the deletion of a connection's src prim will now restore the connection on undo.

## [1.22.1] - 2022-04-18
### Changed
- og.Attribute will now raise an exception when methods are called when in an invalid state.

## [1.22.0] - 2022-04-11
### Fixed
- Moved Py_Node and Py_Graph callback lists to static storage where they won't
  be destroyed prematurely.
- Callback objects now get destroyed when the extension is unloaded.

## [1.21.1] - 2022-04-05
### Fixed
- Added hash check to avoid overwriting ogn/tests/__init__.py when it hasn't changed
- Fix deprecated generator of ogn/tests/__init__.py to generate a safer, non-changing version

## [1.21.0] - 2022-03-31
### Added
- `IConstBundle2`, `IBundle2` and `IBundleFactory` interface python bindings.
- Unit tests for bundle interfaces

## [1.20.1] - 2022-03-24
### Fixed
- Fixed location of live-generation of USD files from .ogn
- Fixed contents of the generated tests/__init__.py file

### [1.20.0] - 2022-03-23
### Added
- *GraphEvent.CREATE_VARIABLE* and *GraphEvent.REMOVE_VARIABLE* event types
- *Graph.get_event_stream()*

## [1.19.0] - 2022-03-18
### Added
- Added command to set variable tooltip

## [1.18.0] - 2022-03-16
### Added
- support for *enableLegacyPrimConnection* setting to test utils

## [1.17.1] - 2022-03-14
### Fixed
- Corrected creation of implicit graphs that were not at the root path
- Added tests for such graphs and a graph in a layer

## [1.17.0] - 2022-03-11
### Added
- *Node.get_backing_bucket_id()*
- *GraphContext.write_bucket_to_backing()*

## [1.16.0] - 2022-03-01
### Added
- *expected_error.ExpectedError* (moved from omni.graph.test)
### Changed
- Updated OmniGraphTestCase and derived classes to use *test_case_class*

## [1.15.0] - 2022-02-16
### Added
- Added commands to create and remove variables

## [1.14.0] - 2022-02-11
### Added
- *Attribute.register_value_changed_callback*
- *Database.get_variable*
- *Database.set_variable*
- *Controller.keys.CREATE_VARIABLES*
- *GraphController.create_variable*

## [1.13.0] - 2022-02-10
### Added
- Added support for migration of old graphs to use schema prims

## [1.12.2] - 2022-02-07
### Changed
- Moved carb logging out of database.py and into Node::logComputeMessage.
- Fall back to old localized logging for Python nodes which don't yet
  support the compute message logging ABI.

## [1.12.1] - 2022-02-04
### Fixed
- Compute counts weren't working for Python nodes
- Compute messages from Python nodes weren't visible in the graph editors

## [1.12.0] - 2022-01-28
### Added
- Support for WritePrim creation in *GraphController.expose_prims*

## [1.11.0] - 2022-01-29
### Changed
- Reflecting change of omni.graph.core from 2.11 -> 2.12

## [1.10.0] - 2022-01-27
### Added
- *ObjectLookup.usd_attribute*

## [1.9.0] - 2022-01-21
### Added
- *Node.log_compute_message*
- *Node.get_compute_messages*
- *Node.clear_old_compute_messages*
- *Graph.register_error_status_change_callback*
- *Graph.deregister_error_status_change_callback*
- *Severity* enum

## [1.8.0] - 2021-12-17
### Added
- Added *NodeType.get_all_categories_*
- Added *get_node_categories_interface*
- Created binding class *NodeCategories*

## [1.7.0] - 2021-12-15
### Added
- Added _NodeType::isValid_ and cast to bool
- Added _Controller_ class
- Added _GraphController_ class

## [1.6.0] - 2021-12-06
### Added
- og.NodeEvent.ATTRIBUTE_TYPE_RESOLVE
## [1.5.2] - 2021-12-03
### Added
- Node, Attribute, AttributeData, Graph, and Type objects are now hashable
  in Python, meaning that they can be used in sets, as keys in dicts, etc.
### Fixed
- Comparing Node and Graph objects for equality in Python now compare the
  actual objects referenced rather than the wrappers which hold the references
- Comparing Attribute and AttributeData objects to None in Python no longer
  generates an exception.

## [1.5.0] - 2021-12-01
- Added functions to get extension versions for core and tools
- Added cascading Python node registration process, that auto-generates when out of date
- Added user cache location for live regeneration of nodes

## [1.4.0] - 2021-11-26
### Added
- Python Api `Graph.get_parent_graph`
### Fixed
- Fix failure when disconnecting a connection from a subgraph node to the parent graph node

## [1.3.2] - 2021-11-24
### Changed
- Generated python nodes will emit info instead of warning when inputs are unresolved
## [1.3.1] - 2021-11-22
### Changed
- Improved error messages from wrapped functions
## [1.3.0] - 2021-11-19
### Added
- __bool__ operators added to all returned OG Objects. So `if node:` is equivalent to `if node.is_valid():`
### Changed
- Bug fix in Graph getter methods
## [1.2.0] - 2021-11-10
### Added
- `og.get_node_by_path`
- `get_graph_by_path`, `get_node_by_path` now return None on failure

## [1.1.0] - 2021-10-17
### Added
- og.get_graph_by_path

## [1.0.0] - 2021-10-17
### Initial Version
- Started changelog with current version of omni.graph
