Skip to main content

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


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.4.tar.gz (16.1 kB view details)

Uploaded Source

Built Distribution

clarify_assets-0.0.4-py3-none-any.whl (17.7 kB view details)

Uploaded Python 3

File details

Details for the file clarify_assets-0.0.4.tar.gz.

File metadata

  • Download URL: clarify_assets-0.0.4.tar.gz
  • Upload date:
  • Size: 16.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.9.20

File hashes

Hashes for clarify_assets-0.0.4.tar.gz
Algorithm Hash digest
SHA256 00eaac92a855f5ef4aa3a964fb2fb5d6787eb03feb0230349e660a752e12be21
MD5 8f1774ab133e3044512f40384c9c9c7d
BLAKE2b-256 7953e0411781c90aacdeaded1483ed6739bb81cc25f62f308b7986f55070b148

See more details on using hashes here.

File details

Details for the file clarify_assets-0.0.4-py3-none-any.whl.

File metadata

File hashes

Hashes for clarify_assets-0.0.4-py3-none-any.whl
Algorithm Hash digest
SHA256 e7afab2d4f3afc69663a9e402f6d5a3553df1cf595f0141105f5e39fa901abf4
MD5 18f1ec9398b29763b98c71e8f1299431
BLAKE2b-256 d04b927ec697577ad2bf95887296c1ed36c93304aa118853f38f8344c2fc7c71

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page