Giter Site home page Giter Site logo

ggannann / dbtoolspy Goto Github PK

View Code? Open in Web Editor NEW

This project forked from paulscherrerinstitute/dbtoolspy

0.0 1.0 0.0 27 KB

Python Module to Read EPICS Database

License: BSD 3-Clause "New" or "Revised" License

Batchfile 1.02% Shell 0.95% Python 98.03%

dbtoolspy's Introduction

Python Module to Read EPICS Database

Simply put, this module implements iocsh commands dbLoadRecords and dbLoadTemplate in Python. Each record is represented by a Record object and then records are aggregated into a Database object.

Usage

from dbtoolspy import load_template_file, load_database_file
templates = load_template_file('example.subs')

templates is a list of (dbfile, macros) tuples. dbfile is the database file name and macros is a dictionary containing the macro substitution. They are then passed to load_database_file.

for dbfile, macros in templates:
    database = load_database_file(dbfile, macros)
    print(database)

database is a Database instance. Since Database derives from OrderedDict, it can be iterated:

for record in database.values():
    print(record.name)

Reference

load_template_file takes the following argument:

subsfile
Substitution file.
encoding
(Optional) File encoding. (default utf-8)

load_database_file takes the following argument:

dbfile
Database file.
macros
(Optional) Dict of macro substitution. If None is given, no macro expansion is performed.
includes
(Optional) Extra include paths for database files.
encoding
(Optional) File encoding. (default utf-8)

Record has the following attibutes:

name
Record name.
rtyp
Record type.
fields
Dictionary of record fields.
infos
Dictionary of record infos.
aliases
List of aliased names.

Database derives from OrderedDict. The key is the record name and the value the Record instance. Additional methods:

add_record
Add a new Record instance.
update
Add records from another Database instance. If there exists a record with the same name and the same rtyp, the new fields, infos and aliases attributes will merge with the existing. If rtyp is difference, DatabaseException will be raised.

Tools

dbiocdiff.py
It compares the configured field values with the IOC runtime values and reports the difference.

Limitations

  • In the substitution file, the template file name cannot contain macros.
  • It is stricter when treating valid characters in bare words. Quote them in case of TokenException.

dbtoolspy's People

Contributors

xiaoqiangwang avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.