FloeSpecConverter
FloeSpecConverter is used to convert between two different Floe spec versions, as long as the final spec version is lower than the starting version.
Each conversion is programmed as a SpecConverter
class in floe/versioning/converters.py
.
Creating Spec Converter class
Each SpecConverter
is a subclass of SpecConvertBaseClass
.
* SpecConverter
is converting between two different Floe spec versions
* there cannot be two SpecConverter
classes that convert from the same Floe spec version to two different spec versions
* SpecConverter
does not convert to higher spec version. Old Floe spec can be parsed by newer version of Floe.
* SpecConverter
class cannot have from_version
and to_version
attributes pointing to the same version
Using Spec Converters
To perform Floe spec conversion between two arbitrary spec versions, SpecConverter
classes are chained
together by floe.versioning.parser.FloeSpecConverter
. If the target version is the same as originating Floe spec
version, FloeSpecConverter
will not modify the input spec.
When running in Orion, Floe spec version produced by serializing Workfloe to JSON using Workfloe.json()
is controlled by environment variable ORION_FLOE_SPEC_VERSION
:
* when ORION_FLOE_SPEC_VERSION
is not set, Workfloe.json()
will produce Floe spec 1.0
* when ORION_FLOE_SPEC_VERSION
is set and points to valid Floe spec version, Workfloe.json()
will
produce Floe spec with this version
This logic is implemented to avoid Orion stacks running older versions of Floe package failing to parse specs produced by Workfloe packages created with newer version of Floe.
Note that when running locally ORION_FLOE_SPEC_VERSION
variable has no effect and Floe will return Floe spec
in current version. This is implemented to avoid situation when absence of this variable in user environment
would cause Floe to silently produce Floe spec version 1.0. Different Floe spec version can be requested by
calling Workfloe.json(output_spec_version=<version>)
.
Floe Package vs Floe Spec Versions
Floe Version |
Spec Version |
---|---|
<=0.11 |
1.0 |
0.12 |
1.1 |
0.13 |
1.2 |
4.4.0 |
1.3 |
4.5.0 |
1.4 |