=======================================================================================
+ BREAK: stacking of solution results changed to the more natural "chronological" one
(outputs written later in the solution override previous ones).
Previously it was the opposite during `execution` while reading intermediate
solution values (1st result or user-inputs won), and it was "reversed" to regular
chronological right before the solution was finalized.
+ FEAT(op, netop): add ``__name__`` attribute to operations, to disguise as functions.
+ BREAK(op): The :func:`.operation` factory function (used to be *class*) now behave
like a regular decorator when `fn` given in the first call, and constructs
the :class:`.FnOp` without a need to call again the factory.
Specifically the last empty call at the end ``()`` is not needed (or possible)::
operation(str, name=...)()
became simply like that::
operation(str, name=...)
+ DROP(NET): ``_DataNode`` and use str + modifier-classes as data-nodes;
MODIFIERS: Sideffecteds; arg--> mapped
---------------------------------------
+ BREAK: rename `arg --> mapped``, which conveys the correct meaning.
+ FEAT: Introduced :term`sideffected`\s, to allow for certain dependencies
to be produced & consumed by function to apply "sideffects, without creating
"cycles":
+ feat(op): introduce ``_fn_needs``, ``op_needs`` & ``op_provides`` on
:class:`.FnOp`, used when matching Inps/Outs and when pruning
graph.
+ FEAT(op): print detailed deps when DEBUG enabled.
PLOT: Badges, StyleStacks, refact Themes, fix style mis-classifications, don't plot steps
-----------------------------------------------------------------------------------------
+ ENH: recursively merge Graphviz-styles attributes, with expanding jinja2-template
and extending lists while preserving theme-provenance, for debugging.
+ BREAK: rename class & attributes related to ``Style --> Theme``,
to distinguish them from styles (stacks of dictionaries).
+ UPD: dot no plot Steps by default; use this :ref:`plot-customizations` to re-enable them::
plottable.plot(plotter=Plotter(show_steps=True))
+ FEAT: now `operations` are also :term:`plottable`.
+ FEAT: Operation BADGES to distinguish endured, rescheduled, parallel, marshalled,
returns_dict.
+ FIX: Cancel/Evict styles were misclassified.
+ feat(plot): change label in sol_sideffects; add exceptions as tooltips on
failed operations, etc.
+ enh: improve plot theme, e.g. prunes are all grey, sideffects all blue,
"evictions" are colored closer to steps, etc. Add many neglected styles.
Sphinx extension:
-----------------
+ enh: Save DOTs if DEBUG; save it before...
+ fix: save debug-DOT before rendering images, to still get those files
as debug aid in case of errors.
+ fix: workaround missing *lineno* on doctest failures, an incomplete solution
introduced upstream by sphinx-doc/sphinx4584.
Configurations:
---------------
+ BREAK: rename context-manager configuration function `debug --> debug_enabled`.
+ FEAT: respect :envvar:`GRAPHTIK_DEBUG` for enabling `is_debug()` configuration.
DOC:
----
+ feat: new sections about composing pipelines with :term:`reschedule` / :term:`endured`
operations & :term:`alias`\es.
+ enh: Clarified relation and duties of the new term :term:`dependency`.
+ enh: Linked many terms from quick-start section.
+ enh(site): support for `Sphinx's standard colored-text
<https://stackoverflow.com/a/61389938/548792>`_ roles.