All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog and this project adheres to Semantic Versioning
- The execution report also contains sample entities now (CMEM-3664):
- For plugins that don't update the execution report by themselves, DataIntegration will automatically add sample entities.
- Plugins that update the execution report can add sample entities to
ExecutionReport.sample_entities
.
- Added workflow status to execution context. This can be used to check if the workflow task has been cancelled by the user:
context.workflow.status() != "Canceling"
- Added workflow identifier to execution context:
context.workflow.workflow_id()
- Added package_name to PluginDescription. This is read by DataIntegration and part of the plugin JSON.
- discover_plugins function to make sure all package modules are re-imported freshly
- util method to generate entities from python dict | list object
- parameter sub_schemata in EntitySchema to capture nested entity schemata
- renamed EntityPath parameter is_uri to is_relation
- renamed EntitySchema parameter sub_path to path_to_root
- capabilities for hierarchical entities as input and output of workflow tasks
- Workflow plugins can specify their input and output ports now.
ResourceParameterType
- for selecting DI dataset resourcesCodeParameterType
- which supports various different code languages
- dependency to cmempy >= 23.3.0
- Optional
plugin_icon
parameter in a plugin description to specify a custom plugin icon as data URL.
- use
post_resource
api inwrite_to_dataset
function to update dataset file resource - use cmempy 23.2
- upgrade dependencies
- enforce Python 3.11
-
Autocompleted parameter types may declare dependent parameters. For instance, a parameter 'city' may declare that its completed values depend on another parameter 'country':
class CityParameterType(StringParameterType): autocompletion_depends_on_parameters: list[str] = ["country"] def autocomplete(self, query_terms: list[str], depend_on_parameter_values: list[Any], context: PluginContext) -> list[Autocompletion]: # 'depend_on_parameter_values' contains the value of the country parameter return ...
-
Password plugin parameter type. Passwords will be encrypted in the backend and not shown to users:
@Plugin(label="My Plugin") class MyTestPlugin(TransformPlugin): def __init__(self, password: Password): self.password = password # The decrypted password can be accessed using: self.password.decrypt()
-
Custom parameter types can be registered. See implementation of PasswordParameterType for an example.
The signature of the autocomplete function has been changed. All autocomplete implementations need to be updated to the following signature:
def autocomplete(self, query_terms: list[str], depend_on_parameter_values: list[Any], context: PluginContext) -> list[Autocompletion]
Parameters using the old signature will continue to work for one release, but a warning will be printed in the log.
The same applies to the label function that has been updated to the following signature:
def label(self, value: str, depend_on_parameter_values: list[Any], context: PluginContext) -> Optional[str]
- DatasetParameterType: to use user context
- ChoiceParameterType: to_string and from_string need to be the inverse of each other.
- Added ChoiceParameterType
- Added context classes to various functions (CMEM-4173).
Due to the added context classes, the signature of a number of functions has been changed. The following changes need to be made to implementation of these classes:
- The execute function has a new parameter
context
:def execute(self, inputs: Sequence[Entities], context: ExecutionContext)
- The
project_id
parameters of the label and the autocompletion functions have been replaced by the PluginContext:def autocomplete(self, query_terms: list[str], context: PluginContext) -> list[Autocompletion]
def label(self, value: str, context: PluginContext) -> Optional[str]
- The project identifier can still be accessed via
context.project_id
- The
fromString
function has a new parametercontext
:def from_string(self, value: str, context: PluginContext) -> T
write_to_dataset
function to utils module to write to a dataset- Added MultilineStringParameterType
- DatasetParameterType provides labels now
- DatasetParameterType returns combined dataset ID now
- DatasetParameterType - for selecting DI datasets
- GraphParameterType - for selecting DP Knowledge Graphs
- Plugin discovery had an issue that plugins that are in the root module of a package have not been re-discovered on the second call.
- Boolean values are formatted lower case in order to conform to xsd:bool.
- release 1.0.0
- python >= 3.7 dependency
- examples dev-dependency
- update dependencies
autocompletion_enabled
method to ParameterType class to signal whether autocompletion should be enabled.
- downgrade needed python version to 3.7+
- Fixed
discover_plugins_in_module
: Need to reload modules that have been imported already.
- Support for custom plugin parameter types
- Enumeration parameter type
- Only return parameters for user-defined init methods
- Added constants for common categories.
- Added plugin APIs for logging and retrieving configuration.
- parameter type validation and matching to internal types
- optional plugin identifier
- plugin discovery no for multiple base moduls of a prefix
- parameter and description annotation of plugins
- discovery methods of plugins
- WorkflowPlugin v1
- initial project with Taskfile.yml and pre-commit hooks