Skip to content

Releases: pygraphkit/graphtik

(25 Apr 2023, @ankostis): REVIVE project, Bump DEPS

25 Apr 21:26
v10.5.0

Choose a tag to compare

Fix all TCs and warnings for recent dependencies.

  • FIX(SITE): bump to latest sphinx:

    • FIX(TCs): bumped jinja2, added MarkupSafe and unpinned pytest
      so that all TCs run OK again with latest deps.
    • fix(sphinxext.TC) probably graphviz generates slightly different captions in SVGs.
    • fix: version-parsing in docs/conf.py neglected since v1.0 and
      manifested now as erroneously parsing pep440-version id - simplified it a lot;
      stop using forgotten packaging dep.
    • fix: sphinx-extlinks >= 4 plugin demands %s also in caption or else
      pytest-fails, and a warning is issued on site generation.
    • fix(site) docutils-0.17+ broke long substitutions like |version|;
      fixed it with a docutils.conf file (instead of resorting to pinning).
  • fix(build): unpin black==20.8b1 since it's been years since black was released
    and pip install -e[all] was failing when trying to build end-of-lifed typed-ast
    e.g. on Python3.11.

  • style: black & isort imports all over (with a black profile for the latter).

  • DOC: various nitpicks and diagram beauties.

  • DOC: add section about diffs with schedula project.

  • plot: various minor improvements.

  • ENH(plot) add RC-Shape badges in data-nodes

  • CHORE: TravisCI site lost :-( moved to GitHub Actions.

(9 Oct 2020, @ankostis): CWD, callbacks non-marshalled, preserve concat index-names

09 Oct 11:28
v10.4.0

Choose a tag to compare

  • FEAT(compose): a :term:current-working-document given when defining operation
    prefixes all non-root its dependencies as jsonp expressions.

  • feat(plot): color as "pink" any None\s in the results, to facilitate identification
    of operations returning nothing, by mistake, or non-produced :term:implicit\s.

  • refact/feat(exe): the argument to :term:callback\s now contains the results;
    replace OpCb` class with pre-existing _OpTask`` (now publicized).

    • Calllbacks are now called from solution context, before :term:marshalling.
  • ENH(solution): preserve index/column names when concatenating pandas
    (workaround pandas-dev/pandas#13475, to be fixed with pandas-v1.2).

    • feat: sol.update() supports jsonps, and applies them grouped,
      to avoid resolving paths repeatedly.
  • doc(api): add forgotten jsonpointer module; updated module-dependencies diagram

(21 Sep 2020, @ankostis): CONCAT pandas, Hierarchical overwrites, implicit(), post-cb

06 Oct 10:20
v10.3.0

Choose a tag to compare

  • FEAT(solution+jsonp)): can extend in place pandas (dataframes & series) horizontally/vertically
    with :term:pandas concatenation.
    Usefull for when working with :ref:Pandas advanced indexing <pandas:advanced.hierarchical>.
    or else, sideffecteds are needed to break read-update cycles on dataframes.

    • fix(jsonp): :func:.set_path_value() should have failed to modify object attributes
      (but not mass-updated, utilized by :term:accessor\s).
  • FEAT/fix(solution): :term:overwrite\s work properly for non-:term:layer\ed solutions.

    • refact: dropped _layers solution-attribute, role passed to (existing) executed.
  • FEAT(execution): support also post-:term:callbacks.

  • FEAT/DROP(modifier): added x3 new modifiers, :func:.vcat and :func:.hcat,
    (and respective accessors), :func:.implicit -- dropped never-used accessor modifier.

  • FEAT: parse string explicitly passed in jsonp=... argument in modifiers.

  • feat(modifier+fnop): keep just the last part of a keyword+jsonp dependency,
    to save an explicit conversion (jsonps are invalid as python-identifiers).

  • break(modifier+fnop): forbid :term:implicit term:sfxed -- hard to find a solid use-case,
    pure sfx would be preferable in that case.

  • fix: forbid :term:aliasing <alias> implicits -- they wouldn't work anyway.

  • enh(compose): check for node type collisions (i.e. a dependency name clashing
    with some operation name).

(18 Sep 2020, @ankostis): plot sol bugfix

18 Sep 08:44
v10.2.1

Choose a tag to compare

  • FIX(PLOT): passing simple dictionaries into ``plot(solution=...)``` were crashing.

  • enh(plot): use also a different label (not only format) to distinguish sfx/sfxed in plots.

(16 Sep 2020, @ankostis): RECOMPUTE, pre-callback, drop `op_xxx`, ops-eq-op.name, drop NULL_OP

16 Sep 11:27
v10.2.0

Choose a tag to compare

Should have been a "major" release, but x2 breaks are that important.

  • FEAT(pipeline+execution): add :term:pre_callback to be invoked prior to computing
    each operation (see pre_callback arg in :meth:.Pipeline.compute()).

  • FEAT(pipeline+plan): can :term:recompute modified solutions, partial or complete --
    The recompute_from=<dep / list-of-deps> argument has been added to
    :meth:.Pipeline.compute(), :meth:.Pipeline.compile() & :meth:.Network.compile()
    methods.

  • REFACT/break(OP): replace badly-specified public attributes op_needs & op_provides
    with private :attr:.FnOp._user_needs & :attr:.FnOp._user_provides -- now
    it must be easier to inherit :class:.Operation anew (but) UNTESTED :-().

    • refact: don't crash of operations lacking rescheduled, marshalled
      etc attributes.
  • ENH(OP):Operation.name and name string compare equal -- that is,
    dictionaries of operations, such as :attr:.Solution.executed, can be indexed
    with their names (note, they didn't equal by accident).

    • REFACT: move FnOp.__hash__()/__eq__() up, to Operation class.
  • FEAT/break(pipeline): replace NULL_OP operation a new compose(excludes=..) argument,
    in order to delete existing operations when merging pipelines.

  • FIX(PLAN): compile cache was ignoring(!) the state of the :term:eviction flag.

  • FIX(execution): solution copy() was crashing (for 9 months till now).

  • ENH(plot): make all nodes "filled" to facilitate hovering for tooltips.

  • fix(plot): "overwrite" tooltip was written "overridden".

  • fix(plan): bug when printing a list of "unsolvable graph" error-message.

  • FIX(TEST): exemethod fixture's exe_method was always empty when interrogated
    for deciding "xfail"s.

  • enh(build): pin black version, changes in format affect commits.

  • doc(parallel): Deprecate(!), but just in docs, in favor of always producing
    a list of "parallelizable batches", to fed to 3rdp parallelizing executors.

  • doc(execution+fnop): Mark mark :data:.execution.task_context as unstable API,
    in favor of supporting a specially-named function argument to receive the same instances.

  • doc(site+doctests): use greek letters in algebraic formulas AND dependencies.

(5 Aug 2020, @ankostis): rename return-dict outs; step number badges

31 Aug 09:52
v10.1.0

Choose a tag to compare

FEAT(op): :func:.keyword modifier can rename outputs of a :term:returns dictionary
function.

  • fix: rescheduled function err-msg were listing wrong missing provides.

  • enh: err-msg did not list returns-dict mismatches.

  • ENH(plot): add number badges on operations & data nodes to denote execution order;
    theme show_steps=False can hide them;

    • feat: data-nodes are Graphviz HTML-ized to support badges.
  • break(fnop): do not accept operations without any provides - they were pruned before,
    but it is better to fail asap.

    • fix/break: clip extra data from a :term:returns dictionary function - previously,
      full-eviction assertion was kicking.
  • enh(plan): why operations are pruned is now explained in the plan & the plot tooltips.

  • fix(plan): :meth:.ExecutionPlan.validate() may be called with no args,
    and uses the compiled ones.

    • enh: suggest mode of action on the error message, when graph has cycles;
      top-sort nodes only once, and report them to jetsam (see below).
    • doc: enhance existing tutorial section to explain compilation.
  • feat(:term:jetsam): pipeline was not collected, till now.

    • FEAT: items can be accessed as jetsam attributes (helpful for interactive REPLs).
    • ENH: don't "catch" exception, use try-finally with ok flag instead,
      not to corrupt the landing position of a post-mortem debugger.
    • feat: now collecting also pruned_dag, op_comments, sorted_nodes while
      :term:compiling <compile>.
    • revert: stop logging every jetsam item on each salvaging point, not to flood
      logs (which had been introduced in the previous release).
    • refact: move into own module.
  • fix(SphinxExt): catch top-level errors that if occurred, message and stack trace
    were lost.

  • doc: list anti-features (when to avoid using this lib).

(19 Jul 2020, @ankostis): Implicits; modify(); auto-name pipelines; plot data as overspilled

19 Jul 14:54
v10.0.0

Choose a tag to compare

  • 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 (marked post-release).

  • 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.

(8 Jul 2020, @ankostis): Sphinx AutoDocumenter; fix plot sfx-nodes

08 Jul 14:01
v9.3.0

Choose a tag to compare

  • 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.

(4 Jul 2020, @ankostis): Drop MultiValueError

04 Jul 07:28
v9.2.0

Choose a tag to compare

Delayed raising of needs errors hindered debug.

(4 Jul 2020, @ankostis): Bugfix, panda-polite, privatize modifier fields

03 Jul 23:59
v9.1.0

Choose a tag to compare

  • 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.