Releases: pygraphkit/graphtik
(25 Apr 2023, @ankostis): REVIVE project, Bump DEPS
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 >= 4plugin demands%salso 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 adocutils.conffile (instead of resorting to pinning).
- FIX(TCs): bumped jinja2, added MarkupSafe and unpinned pytest
-
fix(build): unpin
black==20.8b1since it's been years sinceblackwas released
andpip install -e[all]was failing when trying to build end-of-lifedtyped-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
-
FEAT(compose): a :term:
current-working-documentgiven when defining operation
prefixes all non-root its dependencies asjsonpexpressions. -
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;
replaceOpCb` class with pre-existing_OpTask`` (now publicized).- Calllbacks are now called from solution context, before :term:
marshalling.
- Calllbacks are now called from solution context, before :term:
-
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.
- feat:
-
doc(api): add forgotten
jsonpointermodule; updated module-dependencies diagram
(21 Sep 2020, @ankostis): CONCAT pandas, Hierarchical overwrites, implicit(), post-cb
-
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).
- fix(jsonp): :func:
-
FEAT/fix(solution): :term:
overwrite\s work properly for non-:term:layer\ed solutions.- refact: dropped
_layerssolution-attribute, role passed to (existing)executed.
- refact: dropped
-
FEAT(execution): support also post-:term:
callbacks. -
FEAT/DROP(modifier): added x3 new modifiers, :func:
.vcatand :func:.hcat,
(and respective accessors), :func:.implicit-- dropped never-usedaccessormodifier. -
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:
implicitterm:sfxed-- hard to find a solid use-case,
puresfxwould 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
-
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
Should have been a "major" release, but x2 breaks are that important.
-
FEAT(pipeline+execution): add :term:
pre_callbackto be invoked prior to computing
each operation (seepre_callbackarg in :meth:.Pipeline.compute()). -
FEAT(pipeline+plan): can :term:
recomputemodified solutions, partial or complete --
Therecompute_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:.Operationanew (but) UNTESTED :-().- refact: don't crash of operations lacking
rescheduled,marshalled
etc attributes.
- refact: don't crash of operations lacking
-
ENH(OP):
Operation.nameandnamestring 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.
- REFACT: move
-
FEAT/break(pipeline): replace
NULL_OPoperation a newcompose(excludes=..)argument,
in order to delete existing operations when merging pipelines. -
FIX(PLAN): compile cache was ignoring(!) the state of the :term:
evictionflag. -
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):
exemethodfixture'sexe_methodwas always empty when interrogated
for deciding "xfail"s. -
enh(build): pin
blackversion, 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_contextas 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
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;
themeshow_steps=Falsecan 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 dictionaryfunction - previously,
full-eviction assertion was kicking.
- fix/break: clip extra data from a :term:
-
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 tojetsam(see below). - doc: enhance existing tutorial section to explain compilation.
- enh: suggest mode of action on the error message, when graph has cycles;
-
feat(:term:
jetsam):pipelinewas not collected, till now.- FEAT: items can be accessed as jetsam attributes (helpful for interactive REPLs).
- ENH: don't "catch" exception, use
try-finallywithokflag instead,
not to corrupt the landing position of a post-mortem debugger. - feat: now collecting also
pruned_dag,op_comments,sorted_nodeswhile
: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
-
FEAT: new :term:
implicitmodifier doing a better job than :func:.sfx. -
FEAT(pipeline): auto-derive name from enclosing function.
-
BREAK/fix(modifier): rename modifier
jsonp =>:func:.modify();
parameterjsonp=Falsenow works. -
FEAT(jspoint): descend object attributes were disabled before (marked post-release).
-
ENH(modifier): privatize all fields (
strwith 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=Falsethem 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
DEBUGlogs. -
enh(:term:
jetsam): exception-annotated contents accessed also as attributes. -
doc(debug) improve instructions.
-
enh(tests): check library also with
DEBUGlogging level.
(8 Jul 2020, @ankostis): Sphinx AutoDocumenter; fix plot sfx-nodes
-
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(fnop, pipeline): wrapped function attributes are conveyed to wrapping
-
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
Delayed raising of needs errors hindered debug.
(4 Jul 2020, @ankostis): Bugfix, panda-polite, privatize modifier fields
-
BREAK(modifier): privatize all :class:
._Modifierproperties; 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_chaindocsby 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.