Skip to main content

bifrost-common

A library of commonly used functions to interact with BIFROST. Useful for module developers.

Installation

pip install bifrost-common-py

Components

Log

A module to print nice logging information to the console and, optionally, to files.

from bifrost_common_py.Log import Log

log = Log('myComponent', 'myApplication', options={'maxLogFileSize':1e4, 'enableLogFiles':True})

log.write(`Abandon ship`, Log.WARNING)
log.write(`Run like hell`, Log.INFO)

Log levels are DEBUG, INFO, WARNING, ERROR, FAILURE

Allowed options are:

  • enableLogFiles (default: false): log to files as well as the console
  • logDir (default: log): the log file directory (will be created as necessary)
  • maxLogFileSize (default: 0): maximum byte size of the log files, after which a new file will be started, default =0 never rollover
  • maxArchiveSize(default: 5): maximum number of log files to keep

time

Some useful operations involving time, mostly for formatting Log output.

idOfRef

Resolve the ID contained in an object. If no 'id' field is found in the object pointed to with ref, the last part of the reference is returned instead.

from bifrost_common_py.idOfRef import idOfRef

print(idOfRef({ 'A': { 'id': '1' }}, '/A')) // '1'

tokens

An object collecting string tokens commonly used in the BIFROST state.

import bifrost_common_py.tokens as tokens

print(tokens.tkId) // "id"

select

Selectors returning fully-qualified JSON paths into the BIFROST state.

import bifrost_common_py.pathSelectors as select

print(select.meta())                      # "/meta"
print(select.dynamicId('DYNAMIC-1'))      # "/dynamics/byId/DYNAMIC-1"
print(select.eventParentRef('EVENT-1'))   # "/events/byId/EVENT-1/parentRef"

safepointer

A wrapper that allows to specify default values if paths can not be resolved. This is best used in conjunction with select and a copy of the BIFROST state.

API

import bifrost_common_py.safepointer
.has(obj, path)

Determine whether the fully-qualified JSON pointer path points to something in obj.

safepointer.has({ 'A': { 'B': 1} }, '/A/B') # true
safepointer.has({ 'A': { 'B': 1} }, '/A/C') # false
.get(obj, path, def = null)

Resolve path against obj. If the path does not exist, def is returned instead.

safepointer.get({ 'A': { 'B': 1} }, '/A/B', 0)  # 1
safepointer.get({ 'A': { 'B': 1} }, '/A/C', 0)  # 0

import bifrost_common_py.pathSelectors as select

safepointer.get(state, select.meta(), {}) // { id: ... }

SelectFrom

A declarative state selection library. Use this to select elements from the BIFROST state or from module subscription data.

    from bifrost_common_py.SelectFrom import SelectFrom

    SelectFrom(state).allDynamics().ofType('VOLTAGE-3P').asValueMap()

    SelectFrom(subs).allEntries().ofType('CLIMATE-MODEL').asValueList()

    SelectFrom(subs, state).allEntries().withParentOfType('WEATHER').asValueMap()

Release files for bifrost-common-py 0.8

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for bifrost-common-py 0.8
File Size Uploaded
bifrost_common_py-0.8.tar.gz 18.4 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for bifrost-common-py 0.8
File Interpreter ABI Platform
bifrost_common_py-0.8-py3-none-any.whl Python 3 none any Details

Total release size: 38.5 kB

Release files / bifrost_common_py-0.8.tar.gz

Download URL bifrost_common_py-0.8.tar.gz
Size 18.4 kB
Tags Source
SHA-256 checksum
How to use checksums
5f0993acc3eacb81680e0faf183b35da7b0acb9058753e3f796ca79a89d87ebf
BLAKE2b-256 checksum
How to use checksums
953ea6e9221c9edc2bb007db5ff985fe8184c202a3f0747f23de56066ef0eb1d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.2 CPython/3.9.13

Release files / bifrost_common_py-0.8-py3-none-any.whl

Download URL bifrost_common_py-0.8-py3-none-any.whl
Size 20.1 kB
Tags Python 3
SHA-256 checksum
How to use checksums
accc2800fd6d705fde52e98b67e11b86850def3fec4a7b19e9431d00c186f64b
BLAKE2b-256 checksum
How to use checksums
f25db2ff8d95067d943cf11fb5b6ff5e7dfe0fa07d8e53a4c1fe91e430070a96
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.2 CPython/3.9.13

Release history Release notifications | RSS feed

This release

0.8 This release

2 release files

0.7

2 release files

0.6

2 release files

0.5

2 release files

0.4

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page