Skip to content
This repository has been archived by the owner on Aug 29, 2023. It is now read-only.

TODO forman

Norman Fomferra edited this page Sep 26, 2016 · 18 revisions

This page lists any ECT ideas, tasks, issues that come into my mind regarding the upcoming ECT release. Some of them can already be found in the ECT Issue Tracker while others are temporary tasks that don't need a representation as a publicly visible issue.

Prioritization:

  • B - blocker: no release without this
  • H - high: severe loss of functionality if not considered
  • M - medium: if not now, maybe next release
  • L - low: nice to have

API requirements

Open

  • H: Ops: provide a "var" function, which will be important for workflows/workspaces: def variable(ds:Dataset, name:str) -> DataArray AND/OR introduce a common op argument "variable: Union[None, str, List[str]]" which will be used to select variables
  • H: Ops: make sure all ops use "simple" values which can be converted from/to text or JSON. The @op_input decorators could make appropriate checks.
  • H: Ops: tag them all!
  • H: Write Op development guide including descriptions of the various properties to be used
  • H: milestone v2: Model image outputs for CLI (write image) and WebAPI (start image tile service)
  • M: Workflow: invoke() --> execute()
  • M: remove mist of unnecessary @op_input
  • M: rename Monitor.NULL to Monitor.NONE
  • M: io: find_reader/find_writer: if no file format given: extract ext and find all formats with that ext. Then continue as if format was given.
  • M: Op: skip operation of type Class. Rather, allow for registration of bound methods (instance functions)
  • M: Op: derive additional operation header info: file, module, version, etc
  • M: Op: @op(aliases=[name1, ...])
  • M: util/io/cli: we should harmonize/revise time range usage, e.g. use of TimeRange tuple, use of date and datetime instances
  • L: WorkspaceManager: use base directory to resolve rel. paths
  • L: Use NodePort.has_value when converting workflow to JSON
  • L: Op: support positional arguments

Done

  • H: Workflow: add str method to all Nodes, so that command "ect ws status" can display nicely the workspace's workflow state
  • M: Op: replace input property 'required' (bool) by 'position' (int)
  • M: Op: perform same input validation for ops and workflows
  • L: So far we don't have any own exception types (partly DONE: we have WorkflowError, CommandError now)

CLI requirements

Open

  • B: when an ect command starts the service and then fails to execute the actual command, the service is still up and running --> auto close required, must detect service inactivity
  • B: "ect res plot" sould be able to also plot multi-variables, plots shall include images (or "ect res imshow")
  • H: "ect res plot" blocks the caller --> service response timeout
  • H: service logging shall not occur on stdout if it is called by other than ect-webapi
  • H: "ect ws status" should also say how many workspaces are opened & modified/saved
  • H: "ect res rename N1 N2"
  • H: "ect ds sync ..." --> should be able to configure ECT data root directory, by deafault it is '~/.ect/data_stores'
  • H: CLI needs auto-completion for many commands that require input of long, unhandy names (data sources, operations, variables)
  • M: Adapt progress bar length to terminal size, use shutil.get_terminal_size()
  • M: "ect ds del DS" to get rid of locally cached datasets
  • M: "ect ds info DS" should print sync status (temporal coverage required) incl. local data allocation
  • M: "ect ds dashboard" --> ASCII art time coverage overview, cool!
  • L: "ect res read NAME FILE [FORMAT] ..." --> Support reader-specific arguments (...)
  • L: "ect op register [--global|-g] WORKFLOW"
  • L: "ect ds list -q variable:temperature" --> use Lucense/Solr-like query syntax

Done

  • H: "ect res del"
  • H: "ect run" --> if return type of op is NoneType, we should not write anything to terminal
  • H: "ect res set" shall validate OP arguments #25
  • H: "ect res set" may overwrite existing res, if possible
  • H: bug: "ect op list --tag" still expects wildcard pattern
  • H: Syncing ds should occur automatically when DS[,START[,END]] is used
  • H: Print available format names, ideally detect input and/or output format (reader and/or writer), #17
  • H: "ect ws status [WS]" must print nicely all workflow steps (SoW requirement!)
  • H: "ect op info OP" must print op parameters and return values
  • H: Catch exceptions when calling into ECT API functions, print kind error messages, add -e option to print stack traces
  • H: Print data sources (from ODP) and data sourcesvariable names
  • H: "ect run --read p=2010_precipitation.nc --write ts.nc ect.ops.timeseries.timeseries ds=p lat=53 lon=10"
  • H: Workspaces: "ect init" "ect read p 2010_precipitation.nc" "ect set ts ect.ops.timeseries.timeseries ds=p lat=53 lon=10 "ect write ts ts.nc
  • M: Harmonise all error messages and their formats
  • M: Use common query syntax to search and explore things that can be listed

WebAPI service requirements

Open

  • H: service logging shall not occur on stdout if it is called by other than ect-webapi
  • H: WebAPI shall write log file, currently it prints to the console
  • M: "ect run" and "ect res write" implementations in the WebAPI must execute asynchronously, WebAPI requires a get_workspace_resource_state()

Other

Open

  • H: Create software installer
  • H: gridtools geom arguments (Norman, Janis)
  • M: automated system testing approach (all)
  • H: giant ops clean-up (Janis)
    • filter --> select, also make sure aux-variables are included in the output dataset (option?)
    • make sure all ops use "simple" values which can be easily converted from/to text or JSON
    • tag all operations
    • us variable name 'ds', 'ds_' for xr.Dataset arguments
    • make all unit-tests fast

Done

  • H: 'sphinx_autodoc_annotation', so that Python 3 type annotations go into docs (DONE)
  • H: cli with workspaces (Marco + Norman)