API improvements:
Highlights
- `weldx` now internally uses the reworked ASDF extension API. The
schema and tag naming patterns have also changed to the recommended
`asdf://` format.
- New `Time` class to make handling of time related functionality
easier and consistent.
- many internal reworks to streamline the code.
- rework the [API documentation](https://weldx.readthedocs.io/en/latest/api.html) to show the most
important classes.
Compatibility
- the `0.5.x` versions will retain backwards compatibility with files
generated with the `0.4.x` versions and convert them to the new
naming schema on save. Support for the old schemas will be dropped in
the `0.6` release.
Added
- added "units" (exact) and "dimensionality" (dimensionality
compatible) checking options to `util.xr_check_coords` \[{pull}`442`\]
- `Time` class that can be initialized from several other time types
and provides time related utility functions \[{pull}`433`\]
- `TimeSeries` now supports setting a `reference_time` absolute time
values for interpolation \[{pull}`440`\]
- `LocalCoordinateSystem.from_axis_vectors` and
`CoordinateSystemManager.create_cs_from_axis_vectors` \[{pull}`472`\]
- added PyTest flags to use `WeldxFile` internally in
`asdf.util.read_buffer` and `asdf.util.write_buffer` \[{pull}`469`\].
- added classes and functions at the top-level of the package to the
documentation \[{pull}`437`\].
- added `weldx.asdf.util.get_highest_tag_version` utility function
\[{pull}`523`\].
- added support for parsing temperature deltas with `Δ°` notation
\[{pull}`565`\].
- `WeldxFile.info` to print a quick content overview to the stdout.
\[{pull}`576`\].
Removed
- removed functions now covered by `Time`:
`pandas_time_delta_to_quantity`, `to_pandas_time_index`,
`get_time_union` \[{pull}`448`\]
- removed custom `wx_tag` validator \[{pull}`461`\]
- attrdict dependency replaced with a custom implementation of
recursive dicts \[{pull}`470`\].
- `from_xyz`, `from_xy_and_orientation`,
`from_yz_and_orientation` and `from_xz_and_orientation` from
`LocalCoordinateSystem`. Use
`LocalCoordinateSystem.from_axis_vectors` instead. \[{pull}`472`\]
- `create_cs_from_xyz`, `create_cs_from_xy_and_orientation`,
`create_cs_from_yz_and_orientation` and
`create_cs_from_xz_and_orientation` from `CoordinateSystemManager`.
Use `CoordinateSystemManager.create_cs_from_axis_vectors` instead.
\[{pull}`472`\]
- `is_column_in_matrix`, `is_row_in_matrix`, `to_float_array`,
`to_list`, `matrix_is_close`, `vector_is_close` and
`triangulate_geometry` from `weldx.util` \[{pull}`490`\]
- remove the `:` syntax from `wx_shape` validation \[{pull}`537`\]
Changes
- move `welding.util.sine` utility function to `weldx.welding.util`
\[{pull}`439`\]
- `LocalCoordinateSystem` and `CoordinateSystemManager` function
parameters related to time now support all types that are also
supported by the new `Time` class \[{pull}`448`\]
- `LocalCoordinateSystem.interp_time` returns static systems if only a
single time value is passed or if there is no overlap between the
interpolation time range and the coordinate systems time range. This
also affects the results of some `CoordinateSystemManager` methods
(`CoordinateSystemManager.get_cs` ,
`CoordinateSystemManager.interp_time`) \[{pull}`476`\]
- `util.WeldxAccessor.time_ref` setter now raises a `TypeError` if
`None` is passed to it \[{pull}`489`\]
- move xarray related utility functions into `weldx.util.xarray` and
all other ones into `weldx.util.util`. Content from both submodules
can still be accessed using `weldx.util` \[{pull}`490`\]
- xarray implementations for the `LocalCoordinateSystem` now operate on
time as a dimension instead of coordinates \[{pull}`486`\]
- `WeldxFile.copy` now creates a copy to a (optional) file. Before it
just returned a dictionary \[{pull}`504`\].
- changed the default `pint.Unit` formatting to short notation `:~`
\[{pull}`519`\]. (the asdf
serialization still uses long notation (\[{pull}`560`\]))
- `welding_current` and `welding_voltage` in the single-pass weld
schema now expect the tag
`"asdf://weldx.bam.de/weldx/tags/core/time_series-0.1.*"` instead
of `"asdf://weldx.bam.de/weldx/tags/measurement/signal-0.1.*"`
\[{pull}`578`\].
- `Geometry.__init__` now also accepts an `iso.IsoBaseGroove` as
`profile` parameter \[{pull}`583`\].
- Renamed `Geometry.__init__` parameter `trace` to
`trace_or_length`. A `pint.Quantity` is now an accepted input. In
this case the value will be used to create a linear trace of the
given length \[{pull}`583`\].
Fixes
- `WeldxFile.show_asdf_header` prints output on console, before it only
returned the header as parsed dict and string representation. Also
tweaked efficiency by not writing binary blocks \[{pull}`459`\], \[{pull}`469`\].
- Merging and unmerging multiple `CoordinateSystemManager` instances
now correctly preserves all attached data. \[{pull}`494`\].
- `util.compare_nested` can compare sets \[{pull}`496`\]
- `WeldxFile` respects `mode` argument also for BytesIO and file
handles \[{pull}`539`\].
Documentation
- added installation guide with complete environment setup (Jupyterlab
with extensions) and possible problems and solutions \[{pull}`450`\]
- split API documentation into user classes/functions and a full API
reference \[{pull}`469`\].
- added citation metadata in `CITATION.cff` \[{pull}`568`\].
ASDF
- all schema version numbers set to `0.1.0` \[{pull}`535`\].
- add `time/time` schema to support `Time` class \[{pull}`463`\].
- rework ASDF extension to new asdf 2.8 API \[{pull}`467`\]
- move schema files to `weldx/schemas`
- create extension manifest in `weldx/manifests`. The manifest
also contains tag mappings for legacy tag names for backwards
compatibility.
- move tag module to `weldx/tags`
- refactor all asdf uris to new `asdf://` naming convention, see
<https://asdf.readthedocs.io/en/latest/asdf/extending/uris.html#entities-identified-by-uri>
- replaced all referenced weldx tag versions in schemas with
`0.1.*`
- refactor
`asdf://weldx.bam.de/weldx/schemas/datamodels/single_pass_weld-1.0.0.schema`
to
`asdf://weldx.bam.de/weldx/schemas/datamodels/single_pass_weld-0.1.0`
and enable schema test
- add legacy class for validators support in
`weldx.asdf._extension.py`
- asdf utility functions `weldx.asdf.util.uri_match`,
`weldx.asdf.util.get_converter_for_tag` and
`weldx.asdf.util.get_weldx_extension`
- add `devtools/scripts/update_manifest.py` to auto update
manifest from extension metadata
- custom shape validation must now be implemented via staticmethod
`weldx.asdf.types.WeldxConverter.shape_from_tagged`
- provide legacy schema support in
`weldx/schemas/weldx.bam.de/legacy` \[{pull}`533`\]
- rewrote
`asdf://weldx.bam.de/weldx/schemas/core/transformations/coordinate_system_hierarchy`
schema for the `CoordinateSystemManager`. It uses the digraph schemas
to serialize the coordinate system structure. \[{pull}`497`\]
- add `asdf://weldx.bam.de/weldx/schemas/unit/quantity` and
`asdf://weldx.bam.de/weldx/schemas/unit/unit` schemas \[{pull}`522`\]
- use `asdf://weldx.bam.de/weldx/schemas/unit/quantity` instead of
`tag:stsci.edu:asdf/unit/quantity-1.1.0` \[{pull}`542`\].
- refactor properties named `unit` to `units` and use `unit/unit`
tag \[{pull}`551`\].
- reworked the optional syntax for `wx_shape` validation \[{pull}`571`\].
Dependencies
- set `k3d!=2.10` because of conda dependency bugs \[{issue}`474`, {pull}`577`\]
- Python 3.10 is not supported in this version. \[{pull}`575`\]