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

Uploaded Source

Built Distribution

clarify_assets-0.0.3-py3-none-any.whl (17.6 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: clarify_assets-0.0.3.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.3.tar.gz
Algorithm Hash digest
SHA256 f9d8951c26ad6f755359ccdf94ba529b6f73750aa3312894e3dbbac55b05df0f
MD5 89341c128d2d242c189e9c61099a8df8
BLAKE2b-256 7edd16fbd0ada443ec2b28063d07335d50ea43be2aa49cf29513fd65933b3b27

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for clarify_assets-0.0.3-py3-none-any.whl
Algorithm Hash digest
SHA256 10b4c9ea65dac0e86e5e4f8066a08ebd825641b97d0fe64cc22e75ec099d16f7
MD5 b9f872ccaa5cbdaca5f2b9cb15e04811
BLAKE2b-256 7b86df8b19d3a16dccd090597d43c2a79c286e0492729ff2b226b218e45356ff

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