Release Notes#

0.6.0 (29.04.2022)#

This release includes major changes to the handling and support of units in the API and ASDF schemas. All classes now support and require quantities where appropriate. Plain numbers without units are no longer supported and will raise an exception. If the number is truly dimensionless, you still have to wrap it with the quantity class weldx.Q_ like this:

my_number = 42.0
my_number_wrapped = weldx.Q_(my_number, "meter")

Furthermore, a new class called GenericSeries was added. It provides a common interface to describe coordinate-based data either by discrete values or mathematical expressions. A built-in mechanism lets you derive specialized series with specific requirements. For more information, have a look at the new tutorial .

added#

removed#

  • removed access to WeldxFile.data [PR744]

changes#

fixes#

  • TimeSeries can now be serialized correctly when using absolute times [PR677]

documentation#

  • update PR link format in the changelog [PR658]

  • new tutorial that describes how to work with workpiece data from a WelDX file [PR681]

ASDF#

  • update weldx extension and manifest version to 0.1.1 [PR655]

  • removed legacy weldx tag and schema support [PR600]

  • update core/geometry/spatial_data to version 0.1.1 with support for multidimensional data [PR655]

  • add wx_shape validation support for core/data_array [PR655]

  • update core/time_series schema to use time/time [PR677]

  • update core/variable schema to allow single string as data [PR707]

  • update the default sorting order of select_tag for WeldxConverter [PR733]

  • add custom validation behavior to wx_unit [PR739]

deprecations#

dependencies#

  • weldx now works with Python-3.10. [PR696]

  • bump to asdf >=2.8.2 [PR668]

  • add pint-xarray dependency [PR518]

  • bump to numpy>=1.20 (for numpy.typing) [PR656]

  • bump to pint >=0.18 for typing [PR664]

  • bump to xarray >=0.19 for array creation compatibility [PR618]

  • add bidict dependency [PR618]

  • set networkx !=2.7 for plotting compatibility (for now) [PR714, PR722]

0.5.2 (18.11.2021)#

added#

changes#

  • WeldxFile now raises an exception, if a warning is emitted during loading the weldx ASDF extension, this should prevent erroneous data during loading, for example missing dependencies. [PR641]

  • WeldxFile now hides ASDF added fields like history and asdf_library from the dictionary interface. To access these, there are separate properties [PR625].

  • Allow handling of time values as singular coordinates without dimensions in some classes [PR635].

fixes#

dependencies#

  • Removed ipykernel dependency. [PR634]

  • The K3D implementation now uses the experimental weldx-widgets backend if available [PR636]

0.5.1 (04.11.2021)#

added#

changes#

fixes#

documentation#

ASDF#

  • fix process missing as required property in single_pass_weld-0.1.0.yaml [PR627]

deprecations#

  • removed welding.util.lcs_coords_from_ts [PR620]

dependencies#

  • adjust code to support pint 0.18 unit formatting. [PR616]

0.5.0 (12.10.2021)#

Release 0.5.0 brings a major rework of the weldx standard and many 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 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#

removed#

changes#

fixes#

documentation#

  • added installation guide with complete environment setup (Jupyterlab with extensions) and possible problems and solutions [PR450]

  • split API documentation into user classes/functions and a full API reference [PR469].

  • added citation metadata in CITATION.cff [PR568].

ASDF#

  • all schema version numbers set to 0.1.0 [PR535].

  • add time/time schema to support Time class [PR463].

  • rework ASDF extension to new asdf 2.8 API [PR467]

    • 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 [PR533]

  • 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. [PR497]

  • add asdf://weldx.bam.de/weldx/schemas/unit/quantity and asdf://weldx.bam.de/weldx/schemas/unit/unit schemas [PR522]

  • use asdf://weldx.bam.de/weldx/schemas/unit/quantity instead of tag:stsci.edu:asdf/unit/quantity-1.1.0 [PR542].

  • refactor properties named unit to units and use unit/unit tag [PR551].

  • reworked the optional syntax for wx_shape validation [PR571].

dependencies#

  • set k3d!=2.10 because of conda dependency bugs [GH474, PR577]

  • Python 3.10 is not supported in this version. [PR575]

0.4.1 (20.07.2021)#

changes#

ASDF#

  • sort List[str] before serialization of most weldx classes to avoid random reordering in the same file and enforce consistency. [PR430]

deprecations#

  • lcs_coords_from_ts will be removed in version 0.5.0 [PR426]

0.4.0 (13.07.2021)#

Release 0.4.0 brings many new major features to weldx

Highlights#

full changelog below:

added#

changes#

documentation#

ASDF#

  • fix inline array serialization for new 64bit inline limit [PR218]

  • add asdf.extension.WeldxExtension.yaml_tag_handles to WeldxExtension [PR218]

  • add uuid-1.0.0.yaml schema as basic version 4 UUID implementation [PR330]

  • add core/graph/di_node, core/graph/di_edge & core/graph/di_graph for implementing a generic networkx.DiGraph [PR330]

  • compatibility with ASDF-2.8 [PR355]

  • data attached to an instance of the CoordinateSystemManager is now also stored in a WelDX file [PR364]

  • replace references to base asdf tags with -1.* version wildcard [PR373]

  • update single-pass-weldx.1.0.0.schema to allow groove types by wildcard [PR373]

  • fix attributes serialization of DataSet children [PR384].

  • update wx_shape syntax in local_coordinate_system-1.0.0 [PR366]

  • add custom wx_shape validation to variable-1.0.0 [PR366]

  • remove outdated TimeSeries shape validation code [PR399]

  • use asdf tag validation pattern for wx_property_tag [PR410]

  • update MathematicalExpression schema [PR410]

fixes#

deprecations#

  • deprecate wx_tag validator (use default asdf uri pattern matching) [PR410]

0.3.3 (30.03.2021)#

This is a bugfix release to correctly include the asdf schema files in conda builds. [PR314]

ASDF#

  • fix required welding wire metadata in single-pass-weldx.1.0.0.schema [PR316]

0.3.2 (29.03.2021)#

added#

removed#

  • rotation_matrix_x, rotation_matrix_y and rotation_matrix_z [PR317]

dependencies#

  • restrict scipy!=1.6.0,scipy!=1.6.1 [PR300]

ASDF#

  • add validators to rotation-1.0.0.yaml & gas_component-1.0.0.yaml [PR303]

  • update descriptions in single-pass-weldx.1.0.0.schema [PR308]

fixes#

0.3.1 (21.03.2021)#

added#

ASDF#

  • remove the additionalProperties restriction from single_pass_weld-1.0.0.schema.yaml [PR283]

  • allow scalar integer value in anyOf of time_series-1.0.0.yaml to fix [PR282, PR286]

  • add examples to schema files [PR274]

changes#

fixes#

  • A warning is now emitted if a LocalCoordinateSystem drops a provided time during construction. This usually happens if the coordinates and orientation only contain a single data point. [PR285]

0.3.0 (12.03.2021)#

added#

ASDF#

  • Add possibility to store meta data and content of an external file in an ASDF file [PR215]

    • Python class: asdf.ExternalFile

    • Schema: core/file-1.0.0.yaml

  • Added support for serializing generic metadata and userdata attributes for weldx classes. [PR209]

    • the provisional attribute names are wx_metadata and wx_user

  • None values are removed from the asdf tree for all weldx classes. [PR212]

  • add datamodels directory and example http://weldx.bam.de/schemas/weldx/datamodels/single_pass_weld-1.0.0.schema schema [PR190]

    • schemas in the datamodels directory do not define any tags and can be referenced in other schemas and as custom_schema when reading/writing ASDF-files

    • the single_pass_weld-1.0.0.schema is an example schema for a simple, linear, single pass GMAW application

    • add core/geometry/point_cloud-1.0.0.yaml schema [PR234]

  • add file schema describing a simple linear welding application datamodels/single_pass_weld-1.0.0.schema [PR256]

documentation#

  • Simplify tutorial code and enhance plots by using newly implemented plot functions [PR231] [PR251]

  • add AWS shielding gas descriptions to documentation [PR270]

changes#

fixes#

dependencies#

0.2.2 (30.11.2020)#

added#

  • Added util.ureg_check_class class decorator to enable pint dimensionality checks with @dataclass [PR179].

  • Made coordinates and orientations optional for LCS schema. Missing values are interpreted as unity translation/rotation. An empty LCS object represents a unity transformation step. [PR177]

  • added welding.util.lcs_coords_from_ts function [PR199]

  • add a tutorial with advanced use case for combining groove interpolation with different TCP movements and distance calculations [PR199]

changes#

  • refactor welding groove classes [PR181]

    • refactor groove codebase to make use of subclasses and classnames for more generic functions

    • add _meta attribute to subclasses that map class attributes (dataclass parameters) to common names

    • rework get_groove to make use of new class layout and parse function arguments

  • create welding module (contains GMAW processes and groove definitions) [PR181]

  • move GmawProcessTypeAsdf to asdf/tags folder [PR181]

  • reorder module imports in weldx.__init__ [PR181]

  • support timedelta dtypes in ASDF data_array/variable [PR191]

  • add set_axes_equal option to some geometry plot functions (now defaults to False) [PR199]

  • make welding.util.sine public function [PR199]

  • switch to setuptools_scm versioning and move package metadata to setup.cfg [PR206]

ASDF#

  • refactor ISO 9692-1 groove schema definitions and classes [PR181]

    • move base schema definitions in file terms-1.0.0.yaml to weldx/groove

    • split old schema into multiple files (1 per groove type) and create folder iso_9692_1_2013_12

0.2.1 (26.10.2020)#

changes#

ASDF extension & schemas#

  • add weldx.asdf.types.WxSyntaxError exception for custom weldx ASDF syntax errors [PR99]

  • add custom wx_tag validation and update wx_property_tag to allow new syntax [PR99]
    the following syntax can be used:
    wx_tag: http://stsci.edu/schemas/asdf/core/software-* # allow every version
    wx_tag: http://stsci.edu/schemas/asdf/core/software-1 # fix major version
    wx_tag: http://stsci.edu/schemas/asdf/core/software-1.2 # fix minor version
    wx_tag: http://stsci.edu/schemas/asdf/core/software-1.2.3 # fix patch version
    
  • add basic schema layout and GmawProcess class for arc welding process implementation [PR104]

  • add example notebook and documentation for arc welding process [PR104]

  • allow optional properties for validation with wx_shape by putting the name in brackets like (optional_prop) [PR176]

fixes#

  • fix propagating the name attribute when reading an ndarray TimeSeries object back from ASDF files [PR104]

  • fix pint regression in TimeSeries when mixing integer and float values [PR121]

0.2.0 (30.07.2020)#

ASDF#

  • add wx_unit and wx_shape validators

  • add doc/shape-validation.md documentation for wx_shape [PR75]

  • add doc/unit-validation.md documentation for wx_unit

  • add unit validation to iso_groove-1.0.0.yaml

  • fixed const/enum constraints and properties in iso_groove-1.0.0.yaml

  • add NetCDF inspired common types (Dimension, Variable) with corresponding asdf serialization classes

  • add asdf serialization classes and schemas for xarray.DataArray, xarray.Dataset, weldx.transformations.LocalCoordinateSystem and weldx.transformations.CoordinateSystemManager.

  • add test for xarray.DataArray, xarray.Dataset, weldx.transformations.LocalCoordinateSystem and weldx.transformations.CoordinateSystemManager serialization.

  • allow using pint.Quantity coordinates in LocalCoordinateSystem [PR70]

  • add measurement related ASDF serialization classes: [PR70]

    • equipment/generic_equipment-1.0.0

    • measurement/data-1.0.0

    • data_transformation-1.0.0

    • measurement/error-1.0.0

    • measurement/measurement-1.0.0

    • measurement/measurement_chain-1.0.0

    • measurement/signal-1.0.0

    • measurement/source-1.0.0

  • add example notebook for measurement chains in tutorials [PR70]

  • add support for sympy expressions with weldx.core.MathematicalExpression and ASDF serialization in core/mathematical_expression-1.0.0 [PR70], [PR76]

  • add class to describe time series - weldx.core.TimeSeries [PR76]

  • add wx_property_tag validator [PR72]

    the wx_property_tag validator restricts all properties of an object to a single tag. For example the following object can have any number of properties but all must be of type tag:weldx.bam.de:weldx/time/timestamp-1.0.0

    type: object
    additionalProperties: true # must be true to allow any property
    wx_property_tag: "tag:weldx.bam.de:weldx/time/timestamp-1.0.0"
    

    It can be used as a “named” mapping replacement instead of YAML arrays.

  • add core/transformation/rotation-1.0.0 schema that implements scipy.spatial.transform.Rotation and WXRotation class to create custom tagged Rotation instances for custom serialization. [PR79]

  • update requirements to asdf>=2.7 [PR83]

  • update anyOf to oneOf in ASDF schemas [PR83]

  • add __eq__ methods to LocalCoordinateSystem and CoordinateSystemManager [PR87]

0.1.0 (05.05.2020)#

ASDF#

  • add basic file/directory layout for asdf files

    • asdf schemas are located in weldx/asdf/schemas/weldx.bam.de/weldx

    • tag implementations are in weldx/asdf/tags/weldx

  • implement support for pint quantities

  • implement support for basic pandas time class

  • implement base welding classes from AWS/NIST “A Welding Data Dictionary”

  • add and implement ISO groove types (DIN EN ISO 9692-1:2013)

  • add basic jinja templates and functions for adding simple dataclass objects

  • setup package to include and install ASDF extensions and schemas (see setup.py, MANIFEST.in)

  • add basic tests for writing/reading all ASDF classes (these only run code without any real checks!)

module:#

  • add setup.py package configuration for install

    • required packages

    • package metadata

    • asdf extension entry points

    • version support

  • update pandas, scipy, xarray and pint minimum versions (in conda env and setup.py)

  • add versioneer

  • update options in setup.cfg

  • update tool configurations