- Minimum Python version is now 3.9
- Strip all logged lines of extra whitespace
- Align logged lines with four space indents
- Do not automatically create subplots figure and axis in Figure
- Changed default axis timestamp labels to be more readable
- Support lists in moving average functions
- Changed DataStorage to have default name based on class name
- Non json-serializable data in DataStorage instances are now saved to a single pickle file
- Prevent NameError being raised if an exception was raised inside nested profiling without the use of `with TT.profile`
- Added `string` method to `HardwareInfo` for easy formatting
- Removed `no_grad` decorator, as this was already implemented in PyTorch
- Updated `JobDescription` to only include relevant and nonprivate attributes
- Renamed development distribution from `tests` to `dev`
- Added `tensor_bytesize` function to get the size of NumPy arrays and PyTorch tensors in bytes
- Added optional ID to `TickTock.tick` and `TickTock.tock` methods for multiple concurrent timings
- Added option to print the stacktrace with `log.log_with_stacktrace`
- Allowed setting `--name` with `Parser` even when `multiple_jobs` is `True`
- Exposed method for writing or appending configuration file to existing job folder
- Removed `[ds]` submodule as an install option -- PyTorch now has to be installed separately if the relevant features are needed
- `HardwareInfo` now supports multiple GPUs
- Removed `click` as a dependency
- Improved default table entry alignment
- Improved default `Figure` parameters
- Added option to set label size in `Figure`
- `name` no longer reserves `-n` abbreviation
- Renamed `c_ptr` to the more sensible `array_ptr`
- Changed parser submodule default values and error handling
- Added option to only parse a subset of sections in a config file
- Removed standard deviation calculation from profiles, as it was kind of pointless
Bug fixes
- Fixed missing `__init__.py` in `_entry_points` module
- Fixed incorrect whitespace when printing multiline logs
- Fixed wrong type annotation in `log.configure`
- Fixed wrong return type in `exp_moving_avg`
- Appending now works with `jsonl`
- Fixed wrong type annotation in `Figure`'s `figsize` argument
- `array_ptr` (formerly `c_ptr`) now works for CUDA tensors
- Fixed `Parser` allowing `Argument` without given values when not using a config file