@@ -14,193 +14,7 @@ Graphtik Changelog
1414
1515TODOs
1616%%%%%
17-
18- - [+] ENH: planning reports unsatisfied node modus, for plotting
19- - [+] ENH: Plan accepts previous solutions
20-
21- - [+] fix: FnOp.compute() should (or should not?) accept Pipeline.compute() args.
22- - [+] FEAT: ``compute(solution, recompute_from=["input_1"]) ``
23- - [ ] **+++REFACT: Merge Config+Operation+Authographed to simplify them **
24-
25- Configs
26- =======
27-
28- - [ ] FEAT: drop MANY contextvars with 1 cfg-dict in contextvars?
29- - [ ] FEAT: drop contextvars, use merging-dicts on (cfg, pipe, op) instead?
30- BUT then cannot change configs amidst run, unless next todo ...
31- - [ ] FEAT: configs & op attributes accept 2-tuples: (flag, priority)
32- default priorities: cfg, fnop
33- (+cat: Compose)
34- - [ ] FEAT: Config DEBUG flags:
35-
36- - [ ] skip - evictions(drop config)
37- - [ ] keep SFX in outputs
38-
39- Compose
40- =======
41-
42- - [+] ++refact: change :term: `accessor ` diacritic `` from ``$ `` to @``.
43- - [+] +++feat: add a real ``implicit `` modifier.
44- - [+] ++feat: ``^ `` diacritic for implicits
45- - [-] ++refact: change keyword diacritic to ``** ``.
46- - NO, ``dep>kword `` is better.
47- - [+] refact: rename modifier sfx --> token
48- - [+] refact: introduce diacritic for sfx ``$ `` (vs ``sfx() ``).
49- - [ ] refact: change (or separate) jsonp diacritic (from accessor) to ``/ `` (``@ ``)?
50- - [?] REFACT: separate op-decorator from factory (to facilitate defining conveyor operations).
51- - [?] `cwd() ` modifier:
52- Isn't already working with relative jsonps?
53-
54- - `implicit ` with only the 2nd arg should work on cwd, no?
55-
56- - [ ] :func: `.get_accessor() ` should return a partial on the dependency.
57- - [ ] ++FEAT: Teach pipelines how to accept positional arguments with a tuple with their names
58- - [ ] ++FEAT: +1 merge method for pipelines: nest=False: treat Pipelines as Operations
59- (need pipeline feat for positional-args, above).
60- - [ ] enh(modifier): augment :func: `keyword ` to hold an "informative" value
61- read from the function-default.
62- - [ ] break/enh(modifier): augment modifier table with ``implicits `` for REPR.
63- - [ ] BREAK(modif): "stuffy" names for ``is_xxx(modifier) `` funcs returning stuff.
64- - [ ] modifier || jsonp --> pandalone.pstep (flexible syntax for a modifier on each step)
65-
66- Autograph
67- ---------
68-
69- - [ ] +++FEAT: Autograph functions by type-annotations
70- (PY39 :pep: `593 ` e.g. ``Annotated[int, CWD] ``)
71- - [ ] ++feat: populate :func: `keyword ` "informative" value from inspect-signature.
72- (see also keyword-"informative" value, above)
73-
74-
75- Planning
76- ========
77-
78- - [ ] FEAT: break cycles with dijkstra; +weights?
79- - [ ] ++ENH: link graph inputs/outputs to virtual root-nodes, to replace custom visiting algos
80- (eg unsatisfied-ops, prune-by-outs)
81- - [ ] FEAT: per-operation EVICTs
82- (+cat: Compose)
83- - [ ] ++DROP PARALLEL: always produce a list of "parallelizable batches",
84- to hook with other executors, and keep here just the single-process implementation.
85- (+cat: Execution)
86- - [ ] +++FEAT: Identify any jsonp-needs already in the given-inputs as sub-docs.
87-
88- Execute
89- =======
90-
91- - [+] FEAT: +2 callbacks before marshalling: (pre_batch, post_batch) (olds: pre_op, post_op).
92-
93- - PARTIAL: moved existing x2 callbacks to be called before marshalling.
94-
95- - [?] refact: named_inputs --> sol
96- - [ ] ++ENH/REFACT: use Signature.Param from `inspect ` module to match needs & zip provides
97- and support already there ``... ``.
98- - [ ] Solution-retriever modifier `opcb() `;
99-
100- - WONTFIX: easier and more generic to access solution from Op-context.
101- - REINSTATED: bc it's simpler and does not have any threading issues....
102-
103- - [ ] ++FEAT(fnop): vararg(s) for Outs collect all outs to the very end
104- - [ ] BREAK/FEAT: allow marking SFX-LIST items:
105-
106- 1. Implicits (default), to be checked/resolved downstream (see "FEAT: +2 callbacks"), or
107- 2. Sfx (pure), as they are now).
108-
109- - [ ] +++BREAK/DROP accessors for `jsonp ` (move all functionality in solution)
110-
111- - REJECTED already used for hcat()/vcat()
112- - REINSTATED as "ACCESSOR per jsonp-PART"! (h/vcat should have been like that)
113- by default applied to the last part (or use ``[acc, ...] `` syntax for specific parts)
114-
115- - [ ] RENAME ``Solution --> DataTree ``
116- - [ ] move dep_prefixed() as a top-level `modifier ` utility (to prefix also Accessors)
117- - [ ] revive "stable sort paths" branch on solution updates
118- - [ ] hdf/vdf accessor example-utilities for typical level-0 resolving multi-indexed slices.
119- - [ ] Drop int/attribute indexers from resolve-jsonp, accessors-per-part can do that.
120- - [ ] Interoperate with *Dask, * *Vaex, * *Modin * etc
121- (see https://12ft.io/proxy?&q=https%3A%2F%2Ftowardsdatascience.com%2F4-libraries-that-can-parallelize-the-existing-pandas-ecosystem-f46e5a257809)
122- - [ ] replace in-house `jetsam ` with :pep: `678 ` for exception notes on PY3.11+.
123-
124- Solution
125- --------
126-
127- - [+] DROP/ENH: Solution updates GivenInputs only, yet still layers jsonp-refer to its values.
128- - [+] FEAT: ``pd.concat() `` --> modifier+accessor, to avoid sfxed for multi-column updates.
129- - [+] FEAT: + `post_callback ` with `pre_callback ` --> `callbacks ` tuple
130- (+cat: Compose)
131-
132- - [+] ENH(jsonp): mass-concat (not one-by-one).
133- - [+] ENH: validate Implicits indeed added (in `post_op_callback `)?
134- - [ ] FEAT: VALIDATE (by user) items on Solution-Insert (with a `post_callback `?):
135- - auto-assertions ``{jsonp--> validators} ``
136- - compare overwrites while recomputing
137- - check implicits exist (??not done above??)
138-
139- Plotting
140- ========
141-
142- - [+] Badges on Data
143- - [ ] generate legend dynamically
144- - [ ] Draw nested graphs as such (hiding internal nodes)
145- - [ ] SPHINXEXT: autodoc Pipelines & Ops
146- - [ ] sphinxext: extend standard ``doctest `` or *doctest * module (instead of sphinx-builder)
147- - [ ] FEAT/REFACT: dogfood when constructing graphviz graphs.
148- - [ ] FEAT: add another `dagviz <https://wimyedema.medium.com/drawing-dags-5cadcb452115 >`_
149- plot-backend.
150-
151- Docs
152- ====
153-
154- - [ ] REFACT: move GitHub organization `pygraphkit --> pygraphtik ` (+Travis, +RTD)
155- - [ ] Merge tutorial (operations + composition)
156- - [ ] +++DOC: explain Implicits in tutorial; mention ovunque.
157-
158- - [ ] TCs: Test DEBUG
159-
160-
161- DROPPED
162- =======
163-
164- - [X] `solution.executed ` pre-populated with all operations
165- - [X] parallel batches restart from last position in steps
166- - [X] covert custom op classes & modifiers directly into mergeable networkx graphs;
167-
168- - WONTFIX bc foreign function would not work with merged deps.
169-
170- - [X] conditionals
171-
172- - WONTFIX bc it permits pipelines with too complex execution flow to debug.
173-
174- - [X] DROP accessors:
175-
176- - REJECTED already used for hcat()/vcat() (but to be dropped for jsnop).
177-
178- v9.0.0
179- ------
180-
181- - [X] Accept jsonp inputs & outputs,
182-
183- - WONTFIX user's business to expand into given Inputs, Outputs already working.
184-
185- - [X] REVERT rename subdocs;
186-
187- - WONTFIX bc eventually made it work correctly and added TC.
188-
189- - [X] REFACT: separate op-decorator from factory
190- (to facilitate defining conveyor operations):
191-
192- - NO, simplify passing fn=None.
193-
194- - [X] Nest-rename subdocs: not by default, possible by renamer/nester.
195- - [X] accessors accept default (not to search x2 contain+get_path)
196-
197- - WONTFIX bc not worth it.
198-
199- - [X] Simplify Task-context by injecting it in a parametric argument of `fn `.
200-
201- - NO, `opcb ` modifier works without `inspect ` module.
202-
203- - See :gg: `1 `.
17+ :TODOs in the wiki: `the wiki <https://github.com/pygraphkit/graphtik/wiki/TODOs >`_.
20418
20519
20620Changelog
0 commit comments