Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

v2.0.0 #12

Merged
merged 121 commits into from
Aug 20, 2024
Merged
Changes from 1 commit
Commits
Show all changes
121 commits
Select commit Hold shift + click to select a range
a0c0322
add unit conversion utility using qudt
MBueschelberger Apr 5, 2024
39689ca
improve code - check unit compability, add example
MBueschelberger Apr 5, 2024
e93472d
update example, add notebook and more complicated example
MBueschelberger Apr 5, 2024
2392232
update example notebook
MBueschelberger Apr 5, 2024
36e17b0
update example
MBueschelberger Apr 5, 2024
9ab2f27
add semantic bundle for units
MBueschelberger Apr 8, 2024
64d7b12
fix hooks and pytests
MBueschelberger Apr 9, 2024
54e0519
make units sparql object configurable
MBueschelberger Apr 9, 2024
e7d5e79
add custom datatype for unit conversion of individual properties
MBueschelberger Apr 9, 2024
32b8993
finalize conversion of custom properties
MBueschelberger Apr 10, 2024
b2aa1b0
update example notebook
MBueschelberger Apr 10, 2024
4e1a579
fix pre-commit hooks
MBueschelberger Apr 10, 2024
b10bdfc
fix knowledge-select
MBueschelberger Apr 10, 2024
9f3e297
update custom properties - remove unneeded in between
MBueschelberger Apr 10, 2024
88d5ba6
assure that custom properties are updated
MBueschelberger Apr 11, 2024
46f800a
update basic usage notebook
MBueschelberger Apr 11, 2024
62d9d37
Bump version v1.3.3 -> v1.4.0rc0
MBueschelberger Apr 12, 2024
f490d4e
introduce slug indexing
MBueschelberger Apr 12, 2024
b47ec7d
update from main
MBueschelberger Apr 12, 2024
808ce9b
update url property of kitem
MBueschelberger Apr 12, 2024
2d8a268
update list-typing in dsms-apps
MBueschelberger Apr 16, 2024
34d4f5e
update python versions tested in github-ci
MBueschelberger Apr 16, 2024
e6d602b
update ignored flake8 string errors in python3.12
MBueschelberger Apr 16, 2024
1dd6a72
Bump version v1.4.0rc0 -> v1.4.0rc1
MBueschelberger Apr 16, 2024
feef705
Adding DSMS Documentation: Intial Structure and First Draft
PBMISRA95 Apr 16, 2024
c2926ca
adding requirements.txt
PBMISRA95 Apr 16, 2024
6f1d0f8
introduce new unit semantics from data2rdf
MBueschelberger Apr 17, 2024
9472c1e
Bump version v1.4.0rc1 -> v1.4.0rc2
MBueschelberger Apr 17, 2024
87b9792
update printing of kitems
MBueschelberger Apr 17, 2024
108872b
adapt to changes in new knowledge service
MBueschelberger Apr 17, 2024
691db50
adapt payload of custom properties and basic usage notebook
MBueschelberger Apr 17, 2024
fde43b6
Bump version v1.4.0rc2 -> v1.4.0rc3
MBueschelberger Apr 18, 2024
a0fcaf7
debug custom properties
MBueschelberger Apr 18, 2024
5417808
set default data for custom properties
MBueschelberger Apr 19, 2024
9a3ac0f
Bump version v1.4.0rc3 -> v1.4.0rc4
MBueschelberger Apr 19, 2024
a5ed1da
debug kitem update
MBueschelberger Apr 19, 2024
26bc37a
Bump version v1.4.0rc4 -> v1.4.0rc5
MBueschelberger Apr 19, 2024
6628e6c
update default knowledge-item repo name in triplestore
MBueschelberger Apr 19, 2024
47fd8da
Bump version v1.4.0rc5 -> v1.4.0rc6
MBueschelberger Apr 19, 2024
36273fa
further debug default triplestore repo
MBueschelberger Apr 19, 2024
5ebba76
Bump version v1.4.0rc6 -> v1.4.0rc7
MBueschelberger Apr 19, 2024
93ec340
Synching with remote repo
PBMISRA95 Apr 19, 2024
f4b83b0
add cli, autocomplete for units froms iri and displaying of units
MBueschelberger Apr 22, 2024
11de4d5
remove unneeded side effects of kitem properties, update cli, speed u…
MBueschelberger Apr 22, 2024
c6df1bc
update buffering of kitems
MBueschelberger Apr 23, 2024
20bdcc5
Bump version v1.4.0rc7 -> v1.4.0rc8
MBueschelberger Apr 23, 2024
ae29e92
minor change in ktype retrieval
MBueschelberger Apr 23, 2024
d731257
Completion of Installation and Introduction md
PBMISRA95 Apr 23, 2024
509221a
Real examples for tutorials
PBMISRA95 Apr 23, 2024
1efac25
Merge tag 'v1.4.0rc8' into enh/sdk-docs
PBMISRA95 Apr 23, 2024
319d378
update commiting mechanism and clear bugs
MBueschelberger Apr 23, 2024
405caf9
Bump version v1.4.0rc8 -> v1.4.0rc9
MBueschelberger Apr 23, 2024
7bd65de
further speedup committing
MBueschelberger Apr 23, 2024
932e16b
Bump version v1.4.0rc9 -> v1.4.0rc10
MBueschelberger Apr 23, 2024
afc6582
fix attachment by name property
MBueschelberger Apr 24, 2024
3568a6d
Bump version v1.4.0rc10 -> v1.4.0rc11
MBueschelberger Apr 24, 2024
eb65bb5
Revert "Real examples for tutorials"
PBMISRA95 May 1, 2024
1357e34
Installation,index and introduction md files updation
PBMISRA95 May 1, 2024
695a26d
development until 02nd May: Basic version of the final iteration of I…
PBMISRA95 May 2, 2024
6d505d5
Merge tag 'v1.4.0rc11' into enh/sdk-docs
PBMISRA95 May 2, 2024
ff4ab07
First major iteration
PBMISRA95 May 2, 2024
d72a723
Add heading in app availability and HDF5 Jupyter notebook and 1st com…
PBMISRA95 May 3, 2024
e1c9281
add logging messages for debugging
MBueschelberger May 7, 2024
914e04b
update logging capabilities
MBueschelberger May 10, 2024
23f8689
Bump version v1.4.0rc11 -> v1.4.0rc12
MBueschelberger May 10, 2024
9a22c10
rename kproperty and kproperty item, add more debugging messages
MBueschelberger May 10, 2024
3472f82
sync with remote repo
PBMISRA95 May 10, 2024
0252591
fix commiting changes in linked kitems and kitem apps
MBueschelberger May 13, 2024
3a332a4
update parsing of kitems
MBueschelberger May 13, 2024
9a8e4cf
Bump version v1.4.0rc12 -> v1.4.0rc13
MBueschelberger May 13, 2024
c38b95d
fix linked kitems validator
MBueschelberger May 13, 2024
1dedbd4
Bump version v1.4.0rc13 -> v1.4.0rc14
MBueschelberger May 13, 2024
d543640
debug numerical data type for displaying units, debug utilities for c…
MBueschelberger May 13, 2024
d2bc9d4
Bump version v1.4.0rc14 -> v1.4.0rc15
MBueschelberger May 13, 2024
d41f384
Enabling Docker, dedicated README.md for docs, fixing installtion.md
PBMISRA95 May 15, 2024
efe3bb7
add functionality to make avatar
MBueschelberger May 15, 2024
93d8309
update setup.cfg
MBueschelberger May 15, 2024
fe7db87
debug setup.cfg
MBueschelberger May 16, 2024
3305ea4
fix pyling issues
MBueschelberger May 16, 2024
19e0f89
add funtion to KItem
MBueschelberger May 16, 2024
b17db7a
Bump version v1.4.0rc15 -> v1.4.0rc16
MBueschelberger May 16, 2024
1d237d1
add functionality to download files as bytes
MBueschelberger Jun 6, 2024
a381d19
Bump version v1.4.0rc16 -> v1.4.0rc17
MBueschelberger Jun 6, 2024
5acb194
update summary model for linked kitems§
MBueschelberger Jun 10, 2024
d07f258
Bump version v1.4.0rc17 -> v1.4.0rc18
MBueschelberger Jun 10, 2024
2bd7041
add new app concept
MBueschelberger Jun 13, 2024
5512c56
rename query parameter
MBueschelberger Jun 13, 2024
8fcbc2b
Bump version v1.4.0rc18 -> v1.4.0rc19
MBueschelberger Jun 13, 2024
570f7ff
finalising dsms-sdk documentation
PBMISRA95 Jun 27, 2024
7677ace
Change of relative path while DSMS intialisation in tutorials
PBMISRA95 Jun 27, 2024
1b83bb0
Merge tag 'v1.4.0rc19' into enh/sdk-docs
PBMISRA95 Jun 27, 2024
e4fe554
merged with v1.4.0rc19
PBMISRA95 Jun 27, 2024
7c1b81d
fixing reminder tip formatting in dsms_config_schema.md
PBMISRA95 Jun 27, 2024
3f47987
Removing extra README.md in docs/source
PBMISRA95 Jun 27, 2024
afdecef
update schema for attachment comparison during commit
MBueschelberger Aug 1, 2024
dbc7b1e
Bump version v1.4.0rc19 -> v1.4.0rc20
MBueschelberger Aug 1, 2024
fb3219d
rename hdf5 to dataframe
MBueschelberger Aug 1, 2024
6a75006
Bump version v1.4.0rc20 -> v1.4.0rc21
MBueschelberger Aug 1, 2024
5b988f5
update committing apps
MBueschelberger Aug 7, 2024
3533133
update app specification
MBueschelberger Aug 8, 2024
89f71b1
update submission of app specs, add job logs, debug waiting for job r…
MBueschelberger Aug 8, 2024
a551419
update app config api requesting, add attachment by content
MBueschelberger Aug 8, 2024
4b89261
apply pre-commit hooks
MBueschelberger Aug 8, 2024
e9d208b
Bump version v1.4.0rc21 -> v1.4.0rc22
MBueschelberger Aug 8, 2024
ce89a56
add deletion of app configs, debug updating of app configs
MBueschelberger Aug 9, 2024
a7717a7
introduce refresh option for kitem
MBueschelberger Aug 16, 2024
40476ee
Bump version v1.4.0rc22 -> v1.4.0rc23
MBueschelberger Aug 16, 2024
29581fd
add pyyaml to requirements
MBueschelberger Aug 16, 2024
de9373c
Bump version v1.4.0rc23 -> v1.4.0rc24
MBueschelberger Aug 16, 2024
88c9de9
update kitem refreshing also for dataframes
MBueschelberger Aug 16, 2024
c409437
Bump version v1.4.0rc24 -> v1.4.0rc25
MBueschelberger Aug 16, 2024
39137de
debug deletion of dataframes
MBueschelberger Aug 16, 2024
f2a2c1d
Merge branch 'dev/unit-conversion' into enh/sdk-docs
MBueschelberger Aug 16, 2024
a3ad955
refactor docs
MBueschelberger Aug 16, 2024
1227c54
rebug doc requirements
MBueschelberger Aug 19, 2024
0325c3d
update sphinx setup
MBueschelberger Aug 19, 2024
98556e3
update docs
MBueschelberger Aug 19, 2024
0bebb1d
update docs
MBueschelberger Aug 19, 2024
4a3f1b4
update docs for KItem schema
MBueschelberger Aug 20, 2024
c48257c
Merge pull request #23 from MI-FraunhoferIWM/enh/sdk-docs
MBueschelberger Aug 20, 2024
71014e8
update tutortials and add readtherdocs config
MBueschelberger Aug 20, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
add deletion of app configs, debug updating of app configs
MBueschelberger committed Aug 9, 2024
commit ce89a56a004473eb67142ac0de8727b8b0d3f4c4
14 changes: 14 additions & 0 deletions dsms/apps/config.py
Original file line number Diff line number Diff line change
@@ -15,6 +15,7 @@

from dsms.apps.utils import ( # isort:skip
_app_spec_exists,
_get_app_specification,
)


@@ -142,6 +143,19 @@ def validate_specification(cls, self: "AppConfig") -> str:
f"Invalid yaml specification path: `{error.args[0]}`"
) from error
self.context.buffers.updated.update({self.name: self})
elif isinstance(self.specification, dict) and self.in_backend:
spec = _get_app_specification(self.name)
if (
not yaml.safe_load(spec) == self.specification
and self.name not in self.context.buffers.updated
):
self.context.buffers.updated.update({self.name: self})
elif (
isinstance(self.specification, dict)
and not self.in_backend
and self.name not in self.context.buffers.updated
):
self.context.buffers.updated.update({self.name: self})
return self

@property
2 changes: 1 addition & 1 deletion dsms/apps/utils.py
Original file line number Diff line number Diff line change
@@ -26,7 +26,7 @@ def _app_spec_exists(name: str) -> bool:

def _get_app_specification(appname) -> str:
response = _perform_request(
f"knowledge/api/apps/argo/spec/{appname}",
f"api/knowledge/apps/argo/spec/{appname}",
"get",
)
if not response.ok:
19 changes: 11 additions & 8 deletions dsms/core/dsms.py
Original file line number Diff line number Diff line change
@@ -100,20 +100,23 @@ def __getitem__(self, key: str) -> "KItem":
"""Get KItem from remote DSMS instance."""
return _get_kitem(key)

def __delitem__(self, kitem) -> None:
"""Stage an KItem for the deletion.
def __delitem__(self, obj) -> None:
"""Stage an KItem, KType or AppConfig for the deletion.
WARNING: Changes only will take place after executing the `commit`-method
"""

from dsms.knowledge.kitem import ( # isort:skip
KItem,
)
from dsms import KItem, AppConfig, KType # isort:skip

if not isinstance(kitem, KItem):
if isinstance(obj, KItem):
self.context.buffers.deleted.update({obj.id: obj})
elif isinstance(obj, AppConfig):
self.context.buffers.deleted.update({obj.name: obj})
elif isinstance(obj, KType):
raise NotImplementedError("Deletion of KTypes not available yet.")
else:
raise TypeError(
f"Object must be of type {KItem}, not {type(kitem)}. "
f"Object must be of type {KItem}, {AppConfig} or {KType}, not {type(obj)}. "
)
kitem.context.buffers.deleted.update({kitem.id: kitem})

def commit(self) -> None:
"""Commit and empty the buffers of the KItems to the DSMS backend."""
21 changes: 16 additions & 5 deletions dsms/knowledge/utils.py
Original file line number Diff line number Diff line change
@@ -372,6 +372,7 @@ def _upload_attachments(kitem: "KItem", attachment: "Attachment") -> None:
f"""Invalid content type of attachment with name
`{attachment.name}`: {type(attachment.content)}"""
)
file.name = attachment.name
upload_file = {"dataFile": file}
response = _perform_request(
f"api/knowledge/attachments/{kitem.id}",
@@ -610,9 +611,7 @@ def _commit_deleted(
_delete_dataframe(obj.id)
_delete_kitem(obj)
elif isinstance(obj, AppConfig):
raise NotImplementedError(
"Deletion of AppConfigs not implemented yet."
)
_delete_app_spec(obj.name)
elif isinstance(obj, KType):
raise NotImplementedError(
"Deletion of KTypes not implemented yet."
@@ -814,12 +813,24 @@ def _create_or_update_app_spec(app: "AppConfig", overwrite=False) -> None:
"""Create app specfication"""
upload_file = {"def_file": io.StringIO(yaml.safe_dump(app.specification))}
response = _perform_request(
f"/api/knowledge/apps/argo/{app.name}",
f"/api/knowledge/apps/argo/spec/{app.name}",
"post",
files=upload_file,
params={"overwrite": overwrite},
)
if not response.ok:
message = f"Something went wrong uploading app with name `{app.name}`: {response.text}"
message = f"Something went wrong uploading app spec with name `{app.name}`: {response.text}"
raise RuntimeError(message)
return response.text


def _delete_app_spec(name: str) -> None:
"""Delete app specfication"""
response = _perform_request(
f"/api/knowledge/apps/argo/spec/{name}",
"delete",
)
if not response.ok:
message = f"Something went wrong deleting app spec with name `{name}`: {response.text}"
raise RuntimeError(message)
return response.text
82 changes: 76 additions & 6 deletions examples/create_and_run_app.py
Original file line number Diff line number Diff line change
@@ -7,37 +7,103 @@
print("\nConnect to DSMS")
dsms = DSMS(env="../.env")

configname = "testapp2"
kitem_name = "test item"

data = """A,B,C
1.2,1.3,1.5
1.7,1.8,1.9
2.0,2.1,2.3
2.5,2.6,2.8
3.0,3.2,3.4
3.6,3.7,3.9
4.1,4.3,4.4
4.7,4.8,5.0
5.2,5.3,5.5
5.8,6.0,6.1
"""

extension = ".csv"

parameters = [
{"name": "parser", "value": "csv"},
{"name": "time_series_header_length", "value": 1},
{"name": "metadata_length", "value": 0},
{"name": "metadata_sep", "value": ","},
{"name": "time_series_sep", "value": ","},
{
"name": "mapping",
"value": """
[
{
"key": "A",
"iri": "https://w3id.org/steel/ProcessOntology/TestTime",
"unit": "s"
},
{
"key": "B",
"iri": "https://w3id.org/steel/ProcessOntology/StandardForce",
"unit": "kN"
},
{
"key": "C",
"iri": "https://w3id.org/steel/ProcessOntology/AbsoluteCrossheadTravel",
"unit": "mm"
}
]
""",
},
]

specification = {
"apiVersion": "argoproj.io/v1alpha1",
"kind": "Workflow",
"metadata": {"generateName": "data2rdf-"},
"spec": {
"entrypoint": "execute_pipeline",
"workflowTemplateRef": {"name": "dsms-data2rdf"},
"arguments": {"parameters": parameters},
},
}

print("\nCreate app specification")
AppConfig(
name="testapp",
specification="../../dsms-app-initiator/excel_tensile_test.argo.yaml",
name=configname,
specification=specification, # this can also be a file path instead of a dict
)

print("\nCreate kitem")
item = KItem(
name="test123",
name=kitem_name,
ktype_id=dsms.ktypes.Dataset,
kitem_apps=[
{
"executable": "testapp",
"executable": configname,
"title": "data2rdf",
"additional_properties": {
"triggerUponUpload": True,
"triggerUponUploadFileExtensions": [".xlsx"],
"triggerUponUploadFileExtensions": [extension],
},
}
],
avatar={"include_qr": True},
)

print("\nCommit KItem")
dsms.commit()

print("\nAdd attachment")
item.attachments = ["../../Desktop/AFZ1-Fz-S1D.xlsx"]
# here we are setting the content directly,
# but `item.attachments` can also be a list with a filepath
# e.g. item.attachments = ["path/to/my/file.csv"]
item.attachments = [{"name": "dummy_data.csv", "content": data}]

print(item)

print("\nUpload attachment and trigger app")
dsms.commit()


print(item)

print("\nRun pipeline manually")
@@ -67,3 +133,7 @@
print(job.logs)
if job.status.phase != "Running":
break

print(item.url)

print(item.dataframe.StandardForce.convert_to("N"))
27 changes: 0 additions & 27 deletions examples/run_kitem_app.py

This file was deleted.