- !263 implements various improvements to the plotting and data transformation framework, improving performance, communication and overall usability:
- Allow caching whole `TransformationDAG` trees in order to avoid re-building them (which can be very time-consuming if there are many nodes)
- Improve logging (formulation of messages, choice of level, removal)
- Improve communication of run times, now only shown if beyond a threshold
- Implement a significantly faster `cPickle`-based deep copy function which is used when building `TransformationDAG` and speeds up creation of large DAGs
- Use `__slots__` in DAG placeholder classes to reduce memory load
- In DAG, only load from cache file if the content was *not* already loaded
- !270 drops official support and testing for Python 3.7
- !271 strongly reduces the time it takes to `import dantro` by delaying imports of dependencies
- !277 improves the [dantro documentation][dantro-docs] by adding cross-referencing to other sphinx-based docs and tweaking many minor aspects of the dantro docs.
- !278 implements the `TERMINAL_INFO` dict which holds information about the terminal size and can be updated using `dantro.tools.update_terminal_info()`.
- !279 adds the `set_margins` function to the `PlotHelper`, giving access to the [`ax.margins`](https://matplotlib.org/stable/api/_as_gen/matplotlib.axes.Axes.margins.html) method.
- !280 reworks the structure of the `dantro.utils.data_ops` module, now available directly via `dantro.data_ops`.
Furthermore, this implements the `is_operation` decorator which can be used to register functions as operations directly where they are defined.
- !281 completely restructures the plotting module (and some other modules):
- Plotting related functionality is now condensed in `dantro.plot`, with plot creators having moved to `dantro.plot.creators`.
- The `ExternalPlotCreator` is renamed to `PyPlotCreator`, highlighting that it works with `matplotlib.pyplot` as a backend.
- The `dantro.groups.pspgrp` module was renamed to `dantro.groups.psp`
- The `dantro.containers.xrdatactr` module was renamed to `dantro.containers.xr`
- !282 moves the former `ExternalPlotCreator`'s plot function loading functionality into `PlotManager`, making it a central component of the plotting framework rather than a creator's special feature.
- This also makes `BasePlotCreator` a fully-functioning (no longer abstract) creator class, which is averse to any plotting backend.
- Adds the customizable `PlotFuncResolver` class which now takes care of these tasks in a more decoupled setting.
- !282 also completely removes the plot creator auto detection feature, reducing implementation complexity.
Internal
- !267 performs some code clean-up and improves the sphinx setup
- This may lead to implicit loss of Python 3.6 compatibility (which is no longer supported officially since a few releases ago).
- Makes use of newer language features (like consistent use of f-strings)
- !280 separates the `dantro.utils.data_ops` module into a `dantro.data_ops` subpackage
- !285 expands and improves the `dantro._import_tools` module and improves tests
Deprecations
- !278 deprecates use of `dantro.tools.IS_A_TTY` and `dantro.tools.TTY_COLS` constants. This information should be retrieved from the `dantro.tools.TERMINAL_INFO` dict instead.
- !280 deprecates imports from `dantro.utils.data_ops`; use `dantro.data_ops` instead.
- !282 deprecates `creator_type` and `creator_name` arguments to the `is_plot_func` decorator; use `creator` instead.