@@ -18,9 +18,9 @@ Graphtik Changelog
1818 <hidden from RTD docs, as comment>
1919
2020 - [+] ENH: planning reports unsatisfied node modus, for plotting
21- - [v ] ENH: Plan accepts previous solutions
22- - [v ] fix: FnOp.compute() should (or should not?) accept Pipeline.compute() args.
23- - [v ] FEAT: ``compute(solution, recompute_from=["input_1"]) ``
21+ - [+ ] ENH: Plan accepts previous solutions
22+ - [+ ] fix: FnOp.compute() should (or should not?) accept Pipeline.compute() args.
23+ - [+ ] FEAT: ``compute(solution, recompute_from=["input_1"]) ``
2424
2525 - Configs:
2626 - [ ] FEAT: drop MANY contextvars with 1 cfg-dict in contextvars?
@@ -34,14 +34,16 @@ Graphtik Changelog
3434 - [ ] keep SFX in outputs
3535
3636 - Compose:
37- - [ ] REFACT/FEAT/ENH: Autograph functions by annotating
37+ - [+] feat: add a real `` implicit `` modifier.
3838 - [?] REFACT: separate op-decorator from factory (to facilitate defining conveyor operations).
3939 - [ ] FEAT: +1 merge method for pipelines: nest=False: treat Pipelines as Operations
40- - [ ] feat: add a real ``implicit `` modifier.
40+ - [ ] break/enh(modifier): augment modifier table with `implicits ` for REPR.
41+ - [ ] BREAK(modif): "stuffy" names for `is_xxx(modifier) ` funcs returning stuff.
42+ - [ ] REFACT/FEAT/ENH: Autograph functions by annotating
4143
42- - Plan :
43- - [ ] FEAT: break cycles with dijkstra; +weights.
44- - [ ] ENH: virtual graph roots for inputs & outputs , to replace custom node- visiting algos
44+ - Planning :
45+ - [ ] FEAT: break cycles with dijkstra; +weights?
46+ - [ ] ENH: link graph inputs/outputs to virtual root-nodes , to replace custom visiting algos
4547 (eg unsatisfied-ops, prune-by-outs)
4648 - [ ] FEAT: per-operation EVICTs
4749 (+cat: Compose)
@@ -52,24 +54,39 @@ Graphtik Changelog
5254 - Execute:
5355 - [ ] ENH/REFACT: use Signature.Param from `inspect ` module to match needs & zip provides
5456 - [?] refact: named_inputs --> sol
55- - [ ] FEAT: varargs for Outs collect all outs to the very end
56- (+cat: Compose)
57- - [ ] ???: Should sfxed's sfx-lists become implicits? (to be accessed regularly downstream)
57+ - [ ] FEAT(fnop): varargs for Outs collect all outs to the very end
58+ - [ ] FEAT: +2 callbacks before marshalling: (pre_batch, post_batch) (olds: pre_op, post_op).
59+ - [ ] BREAK/FEAT: allow marking SFX-LIST items:
60+ 1. Implicits (default), to be checked/resolved downstream (see "FEAT: +2 callbacks"), or
61+ 2. Sfx (pure), as they are now).
62+ - [] Solution-retriever modifier `opcb() `;
63+ WONTFIX: easier and more generic to access solution from Op-context.
64+ REINSTATED - [X] Solution-retriever modifier;
65+ WONTFIX: easier and more generic to access solution from Op-context.
66+ REINSTATED to support simple conveyor belts from json-pointer paths.
67+ bc it's simpler and does not have any threading issues.
5868
5969 - **Solution: **
60- - [x] DROP accessors?
61- - [ ] DROP/ENH: Solution updates GivenInputs only, yet still layers jsonp-refer to its values.
70+ - [+] DROP/ENH: Solution updates GivenInputs only, yet still layers jsonp-refer to its values.
71+ - [+] FEAT: ``pd.concat() `` --> modifier+accessor, to avoid sfxed for multi-column updates.
72+ - [+] FEAT: + `post_callback ` with `pre_callback ` --> `callbacks ` tuple
73+ (+cat: Compose)
74+ - [+] ENH(jsonp): mass-concat (not one-by-one).
75+ - [ ] ENH: validate Implicits indeed added (in `post_op_callback `)?
6276 - [ ] FEAT: VALIDATE (by user) items on Solution-Insert (with a `post_callback `?):
6377 - auto-assertions {jsonp--> validators}
6478 - compare overwrites while recomputing
65- - [ ] FEAT: ``pd.concat() `` --> modifier+accessor, to avoid sfxed for multi-column updates.
66- (+cat: Compose)
79+ - check implicits exist
80+ - [ ] FEAT: teach FnOps about ROOT(full solution) and CWD(cw-document)
81+ to resolve also any NON-jsonp dependencies from
82+ (needs to finalize jsonp-ROOT implementation)
83+ (+cat: Compose)
6784
6885 - plot:
6986 - [ ] Badges on Data
70- - [ ] update legend (or generate it dynamically)
71- - [ ] sphinxext: extend standard `doctest ` module (instead of sphinx-builder)
87+ - [ ] generate legend dynamically
7288 - [ ] SPHINXEXT: autodoc Pipelines & Ops
89+ - [ ] sphinxext: extend standard `doctest ` module (instead of sphinx-builder)
7390
7491 - Docs:
7592 - [ ] REFACT: move GitHub organization `pygraphkit --> pygraphtik ` (+Travis, +RTD)
@@ -79,29 +96,28 @@ Graphtik Changelog
7996
8097
8198 - DROPPED
82- - [X] Solution-retriever modifier;
83- WONTFIX: easier and more generic to access solution from Op-context.
84- REINSTATED to support simple conveyor belts from json-pointer paths.
8599 - [X] `solution.executed ` pre-populated with all operations
86100 - [X] parallel batches restart from last position in steps
87101 - [X] covert custom op classes & modifiers directly into mergeable networkx graphs;
88102 WONTFIX bc foreign function would not work with merged deps.
89103 - [X] conditionals
90104 WONTFIX bc it permits pipelines with too complex execution flow to debug.
105+ - [X] DROP accessors:
106+ REJECTED already used for hcat()/vcat()
91107
92108 - v9.0.0
93109 - [X] Accept jsonp inputs & outputs,
94110 WONTFIX user's business to expand into given Inputs, Outputs already working.
95- - [x ] REVERT rename subdocs;
111+ - [X ] REVERT rename subdocs;
96112 WONTFIX bc eventually made it work correctly and added TC.
97- - [x ] REFACT: separate op-decorator from factory
113+ - [X ] REFACT: separate op-decorator from factory
98114 (to facilitate defining conveyor operations):
99115 NO, simplify passing fn=None.
100- - [x ] Nest-rename subdocs: not by default, possible by renamer/nester.
101- - [x ] accessors accept default (not to search x2 contain+get_path)
116+ - [X ] Nest-rename subdocs: not by default, possible by renamer/nester.
117+ - [X ] accessors accept default (not to search x2 contain+get_path)
102118 WONTFIX bc not worth it.
103- - [x ] Simplify Task-context by injecting it in a parametric argument of `fn `.
104- NO, current solution works without `inspect ` module.
119+ - [X ] Simplify Task-context by injecting it in a parametric argument of `fn `.
120+ NO, ` opcb ` modifier works without `inspect ` module.
105121
106122 + See :gg: `1 `.
107123
@@ -110,6 +126,39 @@ Changelog
110126%%%%%%%%%
111127:GitHub Releases: https://github.com/pygraphkit/graphtik/releases
112128
129+ v10.3.0 (21 Sep 2020, @ankostis): CONCAT pandas, Hierarchical overwrites, implicit(), post-cb
130+ ---------------------------------------------------------------------------------------------
131+ + FEAT(solution+jsonp)): can extend in place pandas (dataframes & series) horizontally/vertically
132+ with :term: `pandas concatenation `.
133+ Usefull for when working with :ref: `Pandas advanced indexing <pandas:advanced.hierarchical >`.
134+ or else, sideffecteds are needed to break read-update cycles on dataframes.
135+
136+ + fix(jsonp): :func: `.set_path_value() ` should have failed to modify object attributes
137+ (but not mass-updated, utilized by :term: `accessor `\s ).
138+
139+ + FEAT/fix(solution): :term: `overwrite `\s work properly for non-:term: `layer `\e d solutions.
140+
141+ + refact: dropped ``_layers `` solution-attribute, role passed to (existing) ``executed ``.
142+
143+ + FEAT(execution): support also *post *\- :term: `callbacks `.
144+
145+ + FEAT/DROP(modifier): added x3 new modifiers, :func: `.vcat ` and :func: `.hcat `,
146+ (and respective accessors), :func: `.implicit ` -- dropped never-used ``accessor `` modifier.
147+
148+ + FEAT: parse string explicitly passed in ``jsonp=... `` argument in modifiers.
149+
150+ + feat(modifier+fnop): keep just the last part of a keyword+jsonp dependency,
151+ to save an explicit conversion (jsonps are invalid as python-identifiers).
152+
153+ + break(modifier+fnop): forbid :term: `implicit ` term:`sfxed ` -- hard to find a solid use-case,
154+ pure `sfx ` would be preferable in that case.
155+
156+ + fix: forbid :term: `aliasing <alias> ` implicits -- they wouldn't work anyway.
157+
158+ + enh(compose): check for node type collisions (i.e. a dependency name clashing
159+ with some operation name).
160+
161+
113162v10.2.1 (18 Sep 2020, @ankostis): plot sol bugfix
114163-------------------------------------------------
115164+ FIX(PLOT): passing simple dictionaries into ``plot(solution=...) `` were crashing.
@@ -121,7 +170,7 @@ v10.2.0 (16 Sep 2020, @ankostis): RECOMPUTE, pre-callback, drop `op_xxx`, ops-eq
121170------------------------------------------------------------------------------------------------------
122171Should have been a "major" release, but x2 breaks are that important.
123172
124- + FEAT(pipeline+execution): add ``pre_callback `` to be invoked prior to computing
173+ + FEAT(pipeline+execution): add term ``pre_callback `` to be invoked prior to computing
125174 each operation (see ``pre_callback `` arg in :meth: `.Pipeline.compute() `).
126175
127176+ FEAT(pipeline+plan): can :term: `recompute ` modified solutions, partial or complete --
0 commit comments