Populate Clarify metadata through asset models.
Project description
clarify-assets
Populate Clarify metadata through asset models.
Flow example
from clarify_assets import Asset, Attribute, AssetBroker
from pyclarify import Item
enterprise = Asset(
labels = [{"enterprise": "OG Inc"}]
)
station = Asset(
labels = [{"station": "work"}]
)
temperature = Attribute(
meta=Item(
name="Temperature",
labels={
"medium": ["Air"]
}
),
filter = {"name": "Temperature"}
)
climate = Asset(
labels=[{"cell": "climate"}],
attributes=[temperature]
)
station.append(climate)
enterprise.append(station)
enterprise.pretty_print(debug=True)
AB = AssetBroker(
credentials="credentials.json",
integrations=["integration1"]
)
AB.flush_and_build_db()
AB.assign_signals(enterprise)
enterprise.pretty_print(minimal=True)
AB.publish_asset(enterprise)
Custom attribute example
from clarify_assets import Attribute
from dataclasses import dataclass
def get_value_or_none(key, asset):
return list(filter(lambda x: x,
list(map(lambda x: x[key] if key in x.keys() else None,
asset.labels)
)
))
def get_line_number(string):
return string.lower().replace(" ", "").split("line")[-1]
@dataclass
class FishtalkAttribute(Attribute):
def __post_init__(self):
super().__post_init__()
self.independent = True
if self.meta:
i = self.meta.dict()
i["labels"]["data-source"] = ["Fishtalk"]
self.meta = Item(**i)
if self.labels:
area_label = get_value_or_none("area", self)
line_label = get_value_or_none("line", self)
if area_label and line_label:
line_no = get_line_number(line_label)
if len(line_no) == 1:
line_no = "0" + line_no
unit_label = area_label + "-" + line_no
self.filter = merge_filters(self.filter, {"labels.unit": [unit_label]})
@dataclass
class FishtalkBiomassCount(FishtalkAttribute):
meta: Item = Item(
name = "Biomasse antall",
engUnit = "stk",
visible = True,
)
def __post_init__(self):
self.filter = merge_filters(self.filter, {"name": "fishtalkparser.Closing Count"})
super().__post_init__()
Reusable attributes example
@dataclass
class ValveAeration(ScadaAttribute):
meta: Item = Item(
name = "Valve X",
engUnit = "",
valueType="enum",
enumValues={
"0": "Closed",
"1": "Open"
},
visible = True,
)
def __post_init__(self):
self.filter = merge_filters(self.filter, {"name": "Value"})
super().__post_init__()
valve_aeration_list = [
ValveAeration(name = f"Valve {i}", filter = {"labels.folder-3": [f"Valve_Aeriation_{i}"]})
for i in range(1,9)
]
Reusable attributes with different filters
va = ValveAeration()
house = Asset(
labels=[{"site":"home"}],
attributes=[
va.copy(
name="Aeration Kitchen",
add_filter={
"labels.room": "Kitchen"
}
),
va.copy(
name="Aeration Living room",
add_filter={
"labels.room": "Living room"
}
)
]
)
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
clarify_assets-0.0.9.tar.gz
(16.2 kB
view details)
Built Distribution
File details
Details for the file clarify_assets-0.0.9.tar.gz
.
File metadata
- Download URL: clarify_assets-0.0.9.tar.gz
- Upload date:
- Size: 16.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.1 CPython/3.9.20
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | abd6fcadfb408bcd4422b488ff4c6edacf94edaa8fbaa73f62ec2998a0213466 |
|
MD5 | f9ce3562b17e1bdeddb373e338b3c2ba |
|
BLAKE2b-256 | af987decfdfd13016a3f41af4647ea242ebc9b64e3d05d56dc51c4d70d683351 |
File details
Details for the file clarify_assets-0.0.9-py3-none-any.whl
.
File metadata
- Download URL: clarify_assets-0.0.9-py3-none-any.whl
- Upload date:
- Size: 17.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.1 CPython/3.9.20
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | f37cb988b4f3acdf5c97ded0535000cec9b03d47b18b86bc876e725e6cb8fc73 |
|
MD5 | d2035e4d3fd277b6e5f2bb9ba999e4da |
|
BLAKE2b-256 | 23389ae3976d6e7c33527d4906155891ea5d41f0ada9a99bb73b78df031dce60 |