https://github.com/paulscherrerinstitute/dbtoolspy
Python Module to Read EPICS Database
https://github.com/paulscherrerinstitute/dbtoolspy
epics epics-substitution python
Last synced: 4 months ago
JSON representation
Python Module to Read EPICS Database
- Host: GitHub
- URL: https://github.com/paulscherrerinstitute/dbtoolspy
- Owner: paulscherrerinstitute
- License: bsd-3-clause
- Created: 2018-06-20T13:31:01.000Z (almost 8 years ago)
- Default Branch: master
- Last Pushed: 2025-10-06T16:36:15.000Z (8 months ago)
- Last Synced: 2025-10-06T18:33:22.618Z (8 months ago)
- Topics: epics, epics-substitution, python
- Language: Python
- Size: 23.4 KB
- Stars: 0
- Watchers: 7
- Forks: 3
- Open Issues: 0
-
Metadata Files:
- Readme: README.rst
- License: LICENSE
Awesome Lists containing this project
README
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)
load_includes
(Optional) Follow *include* directive. (default True)
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.
get_included_templates
Get template files referenced by all *include* directives.
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*.