Graphtik

Latest version: v10.5.0

Safety actively analyzes 714792 Python packages for vulnerabilities to keep your Python projects secure.

Scan your dependencies

Page 2 of 10

10.0.0

====================================================================================================
+ FEAT: new :term:`implicit` modifier doing a better job than :func:`.sfx`.
+ FEAT(pipeline): auto-derive name from enclosing function.
+ BREAK/fix(modifier): rename modifier ``jsonp =>`` :func:`.modify()`;
parameter ``jsonp=False`` now works.
+ FEAT(jspoint): descend object attributes were disabled before.
+ ENH(modifier): privatize all fields (`str` with foreign attributes interact badly
with 3rdp libs).
+ ENH(plot): stackable tooltips; now data nodes kind and state is fully explained there.

+ enh: split jsonp data nodes in separate lines forming a tree.
+ enh: label overspill data-node's shapes.
+ enh: theme-stack now expands any callables in keys or whole kv-pairs.
+ feat: ``show_chaindocs=False`` them attribute now hides even subdoc relationships
(edges).
+ fix: various fixes & enhancements ("canceled" were misattributed,
update legend, infective user ``'graphviz.xxx"`` attributes,
plotting no-edge diagrams)

+ enh(planning): explained why nodes were pruned in ``DEBUG`` logs.
+ enh(:term:`jetsam`): exception-annotated contents accessed also as attributes.
+ doc(debug) improve instructions.
+ enh(tests): check library also with ``DEBUG`` logging level.

9.3.0

=========================================================================
- FIX/FEAT(SPHINXEXT): so far, :func:`.operation`-annotated module functions were
excluded from generated sites. Until the installed *autodoc* function-documenter
was instructed how to render the wrapped function in place of the wrapping
``FnOp``:

- fix(fnop, pipeline): wrapped function attributes are conveyed to wrapping `FnOp`.

- FIX(plot): sideffect templates were left broken by recent privatization
of modifier fields; add x2 Jinja-filters encapsulating the access to these fields.
- fix(op): fully fake callables by attaching a ``__qualname__`` property on operations;
also teach :func:`.func_name()` not to choke if ``__qualname__`` missing.

9.2.0

----------------------------------------------------
Delayed raising of needs errors hindered debug.

9.1.0

===============================================================================
- BREAK(modifier): privatize all :class:`._Modifier` properties; it is uncanny
for a str to have more public attributes.
- fix: avoid equality checks on results, to avoid pandas notorious
"The truth value of a Series/DataFrame is ambiguous."
- break(plot): Rename theme property ``include_steps => show_steps``.
- feat(plot): new theme property ``show_chaindocs`` by default false,
that when enabled, plots all nodes in the subdoc hierarchy (even if those
not used as deps), like this::

pipeline.plot(theme={"show_chaindocs": True})

- fix(plot): returns-dictionary op-badge had broken url.

9.0.0

=================================================================================================
+ FEAT(modifier): Dependencies with :term:`json pointer path` that can read/write
:term:`subdoc`\s (e.g. nested dicts & pandas).

+ feat(config): added :func:`set_layered_solution()` into :term:`configurations`
which when True (or *jsonps* in the network if None (default)) all results
are stored in the given inputs to the pipeline
(this may become the regular behavior in the future).
+ feat(modifier, solution): +modifier with accessor functions to read/write Solution.
+ doc: new section :ref:`hierarchical-data` putting together all advanced features
of the project in a "Weekly task runner".

+ BREAK/REFACT: modules and objects renamed:

+---------------------------------+-----------------------------+
| FROM | TO |
+=================================+=============================+
| :file:`modifierS.py` | :file:`modifier.py` |
+---------------------------------+-----------------------------+
| func: modifiers.fn_kwarg | :func:`.modifier.keyword()` |
+---------------------------------+-----------------------------+
| :file:`network.py` | :file:`planning.py` |
+---------------------------------+-----------------------------+
| :file:`op.py` | :file:`fnop.py` |
+---------------------------------+-----------------------------+
| class: op.FunctionalOperation | :class:`.fnop.FnOp` |
+---------------------------------+-----------------------------+

+ FEAT(op): default :func:`.identity_function()` acting as :term:`conveyor operation`.
+ FIX(NET, EXECUTION): discovered and fixed bugs in pruning, evictions and rescheduling
with overwrites, while testing new `jsonp` modifier; rely on dag alone while pruning
(and not digging into op needs/provides).

- Dupe Evictions of pruned output were deliberately & wrongly consolidated, while
it is possible to need to evict repeatedly the same out from multiple ops
providing it.
- Less aggressive prune-isolated-data permits SFX not to be asked explicitly,
and behave more like regular data.
Now For certain cases, the more specific error "Unreachable out" gets raised,
instead of the too generic "Unsolvable graph".
- Prune-by-outputs was ignoring given inputs, chocking on computation cycles
that were possible to avoid!

+ DROP(net): ``_EvictionInstruction`` class was obscuring modifier combinations, and
it didn't make sense any more, being the only instruction.
+ FEAT(ops, pipelines, net, sol): unified :meth:`.Plottable.ops` utility properties.
+ ENH: Error reporting:

+ enh(op, pipe): fail earlier if no function/name given when defining operations
and pipelines.
+ enh(op): when :envvar:`GRAPHTIK_DEBUG` var defined, any errors during inputs/needs
matching are raised immediately.
+ enh: improve tips & hints in exception messages; log past executed operations
when a pipeline fails.

+ DOC(op): table explaining the differences between various dependency attributes of
:class:`.FnOp`.

.. include:: ../../graphtik/fnop.py
:start-after: .. dep-attributes-start
:end-before: .. dep-attributes-end

+ enh(op, pipe): restrict operation names to be strings (were :class:`collection.abc.Hashable`).
+ feat(modifier): public-ize :func:`modifier_withset()` to produce modified
clones -- handle it with care.
+ feat(doc): Add new section with most significant :ref:`features` of this project.
+ fix(travis): update `pytest` or else `pip-install chokes with
<https://travis-ci.org/github/ankostis/graphkit/jobs/700326904>`_ `pytest-coverage` plugin.
+ enh(pytest): add ``--logger-disabled`` CLI option when running TCs, as explained
in `pytest-dev/pytest7431 <https://github.com/pytest-dev/pytest/issues/7431>`_.
+ refact(tests): split big :file:`test/test_graphtik.py` TC file into multiple
ones, per functionality area (features).

8.4.0

=========================================================================================
+ ENH(pipe): nest all Ops (not just FnOps), dropping ``FnOp``
dependency in network code, to **allow for further sub-classing** :class:`Operation`.
+ FIX(pipeline): due to a side-effect on a ``kw`` dictionary, it was mixing the attributes
of earlier operations into later ones while merging them into pipelines.
+ REFACT(solution): facilitate inheriting Solution by extracting :meth:`
.Solution._update_op_outs` into a separate method.
+ refact(pipe): move `build_net()` --> back to `pipeline` module,
dropping further network.py-->pipeline.py mod-dep.
+ enh(plot): StyleStack-ize data-io shape selection into separate theme-able dicts.
+ DOC(exe, plotting): task-context section in Debugger

Page 2 of 10

© 2025 Safety CLI Cybersecurity Inc. All Rights Reserved.