Skip to main content

Programming- and CLI-Interface for the h5-dataformat of the Shepherd-Testbed

Project description

Core Library

PyPiVersion Pytest CodeStyle

Documentation: https://orgua.github.io/shepherd/external/shepherd_core.html

Source Code: https://github.com/orgua/shepherd-datalib

Main Project: https://github.com/orgua/shepherd


This Python Module is designed as a library and bundles data-models and file-access-routines for the shepherd-testbed, that are used by several codebases.

For postprocessing shepherds .h5-files users want to use shepherd_data.

Features

  • read and write shepherds hdf5-files
  • create, read, write and convert experiments for the testbed (all data-models included)
  • simulate the virtual source, including virtual harvesters (and virtual converter as a whole)
  • connect and query the testbed via a webclient (TestbedClient)
    • offline usage defaults to static demo-fixtures loaded from yaml-files in the model-directories
  • work with target-firmwares
    • embed, modify, verify, convert
    • Note: working with ELF-files requires external dependencies, see Installation-Chapter
  • decode waveforms (gpio-state & timestamp) to UART
  • create an inventory (used versions of software, hardware)

See examples for more details and usage. Most functionality is showcased there. The extra-directory holds data-generators relevant for the testbed. Notably is a trafficbench-experiment that's used to derive the link-matrix.

Data-Models in Detail

  • new orchestration /data-models with focus on remote shepherd-testbed
  • classes of sub-models
    • /base: base-classes, configuration and -functionality for all models
    • /testbed: meta-data representation of all testbed-components
    • /content: reusable meta-data for fw, h5 and vsrc-definitions
    • /experiment: configuration-models including sub-systems
    • /task: digestible configs for shepherd-herd or -sheep
    • behavior controlled by ShpModel and content-model
  • a basic database is available as fixtures through a tb_client
    • fixtures selectable by name & ID
    • fixtures support inheritance
  • models support
    • auto-completion with neutral / sensible values
    • complex and custom datatypes (i.e. PositiveInt, lists-checks on length)
    • checking of inputs and type-casting
    • generate their own schema (for web-forms)
    • pre-validation
    • store to & load from yaml with typecheck through wrapper
    • documentation
  • experiment-definition is designed securely
    • types are limited in size (str)
    • exposes no internal paths
  • experiments can be transformed to task-sets (TestbedTasks.from_xp())

Installation

The Library is available via PyPI and can be installed with

  pip install shepherd-core -U

  # or for the full experience (includes core)
  pip install shepherd-data -U

For bleeding-edge-features or dev-work it is possible to install directly from GitHub-Sources (here dev-branch):

pip install git+https://github.com/orgua/shepherd-datalib.git@dev#subdirectory=shepherd_core -U

If you are working with .elf-files (embedding into experiments) you make "objcopy" accessible to python. In Ubuntu, you can either install build-essential or binutils-$ARCH with arch being msp430 or arm-none-eabi for the nRF52.

  sudo apt install build-essential

For more advanced work with .elf-files (modify value of symbols / target-ID) you should install

  pip install shepherd-core[elf]

and also make sure the prereqs for the pwntools are met.

For creating an inventory of the host-system you should install

  pip install shepherd-core[inventory]

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

shepherd_core-2023.9.8.tar.gz (87.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

shepherd_core-2023.9.8-py3-none-any.whl (126.1 kB view details)

Uploaded Python 3

File details

Details for the file shepherd_core-2023.9.8.tar.gz.

File metadata

  • Download URL: shepherd_core-2023.9.8.tar.gz
  • Upload date:
  • Size: 87.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.11.5

File hashes

Hashes for shepherd_core-2023.9.8.tar.gz
Algorithm Hash digest
SHA256 540a357e8e8e007f5245d74a04035f34f2e0c4a3893233e7f37ea2b7bc2ceebc
MD5 f1afcc7465154154d230a0eba3004050
BLAKE2b-256 12154192f28ba36fee3daf0fc782fbc4258078c3544eb0f8f3eaa5ea01297a1a

See more details on using hashes here.

File details

Details for the file shepherd_core-2023.9.8-py3-none-any.whl.

File metadata

File hashes

Hashes for shepherd_core-2023.9.8-py3-none-any.whl
Algorithm Hash digest
SHA256 6002eccff731b5a6e9f902a48368c1673ad89b83d543c0daa3713695b90238cf
MD5 40df2eb3ebc0b35be3ebffacbf76ad94
BLAKE2b-256 1a33362231e226ed1a3653fffb0e0cfbac5521ec55c7412ce42dcf4a991d67ca

See more details on using hashes here.

Supported by

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