oelint-parser 3.5.5

Creator: codyrutscher

Last updated:

Add to Cart

Description:

oelintparser 3.5.5

oelint-parser




alternative parser for bitbake recipes
API documentation
Find the full API docs here
Examples
from oelint_parser.cls_stash import Stash

# create an stash object
_stash = Stash()

# add any bitbake like file
_stash.AddFile("/some/file")

# Resolves proper cross file dependencies
_stash.Finalize()

# Use _stash.GetItemsFor() method to filter the stash

Get variables from the files
To get variables from the stash object do
from oelint_parser.cls_item import Variable

# get all variables of the name PV from all files
for x in _stash.GetItemsFor(attribute=Variable.ATTR_VAR, attributeValue="PV"):
print(x)

this returns the raw object representation
Expand raw variables
from oelint_parser.cls_item import Variable

# get all variables of the name PV from all files
for x in _stash.GetItemsFor(attribute=Variable.ATTR_VAR, attributeValue="PV"):
# raw unexpanded variable
print(x.VarValue)
# raw unexpanded variable without quotes
print(x.VarValueStripped)
# expanded variable
print(expand_term(stash, "/some/file", x.VarValueStripped))
# single items from a list
print(x.get_items())
# expanded single items from a list
print([_stash.ExpandTerm("/some/file", y) for y in x.get_items()])

Filtering
You can filter by multiple items
from oelint_parser.cls_item import Variable

# get all variables of the name PV or BPV from all files
for x in _stash.GetItemsFor(attribute=Variable.ATTR_VAR, attributeValue=["PV", "BPV"]):
# variable name
print(x.VarName)
# raw unexpanded variable
print(x.VarValue)
# raw unexpanded variable without quotes
print(x.VarValueStripped)

and you can reduce the list after the initial filtering even more
from oelint_parser.cls_item import Variable

# get all variables of the name PV or BPV from all files if the value is '1.0'
for x in _stash.GetItemsFor(attribute=Variable.ATTR_VAR, attributeValue=["PV", "BPV"]).reduce(
attribute=Variable.ATTR_VARVAL, attributeValue=["1.0"]):
# variable name
print(x.VarName)
# raw unexpanded variable -> "1.0"
print(x.VarValue)
# raw unexpanded variable without quotes -> 1.0
print(x.VarValueStripped)

but if you need copies from a wider list to smaller lists use
from oelint_parser.cls_item import Variable

_all = _stash.GetItemsFor(attribute=Variable.ATTR_VAR, attributeValue=["PV", "BPV"])
_pv = _stash.Reduce(_all, attribute=Variable.ATTR_VAR, attributeValue="PV")
_bpv = _stash.Reduce(_all, attribute=Variable.ATTR_VAR, attributeValue="BPV")

for x in _pv:
# variable name
print(x.VarName)
# raw unexpanded variable -> "1.0"
print(x.VarValue)
# raw unexpanded variable without quotes -> 1.0
print(x.VarValueStripped)

Expanding a Variable
To get the effective value of a Variable after parsing you can use
from oelint_parser.cls_item import Variable

result_set = _stash.ExpandVar(attribute=Variable.ATTR_VAR, attributeValue=["PV"]):
print(result_set.get('PV'))

Working with constants
For this library a few basic sets of constant information, such as basic package definitions, known machines and functions are
needed.
Those can be easily modified, in case you have additional information to add/remove/modify.
The actual database is not directly accessible by the user, but a few methods in the oelint_parse.constants.CONSTANT class do exist.
Each of the method accepts a dictionary with the same key mapping as listed below (multilevel paths are displayed a JSON pointer)



key
type
description
getter for information




functions/known
list
known functions
oelint_parse.constants.CONSTANT.FunctionsKnown


functions/order
list
preferred order of core functions
oelint_parse.constants.CONSTANT.FunctionsOrder


images/known-classes
list
bbclasses to be known to be used in images
oelint_parse.constants.CONSTANT.ImagesClasses


images/known-variables
list
variables known to be used in images
oelint_parse.constants.CONSTANT.ImagesVariables


replacements/distros
list
known distro overrides
oelint_parse.constants.CONSTANT.DistrosKnown


replacements/machines
list
known machine overrides
oelint_parse.constants.CONSTANT.MachinesKnown


replacements/mirrors
dict
known mirrors
oelint_parse.constants.CONSTANT.MirrorsKnown


variables/known
list
known variables
oelint_parse.constants.CONSTANT.VariablesKnown


variables/mandatory
list
variables mandatory to a recipe
oelint_parse.constants.CONSTANT.VariablesMandatory


variables/order
list
preferred order of variables
oelint_parse.constants.CONSTANT.VariablesOrder


variables/protected
list
variables not to be used in recipes
oelint_parse.constants.CONSTANT.VariablesProtected


variables/protected-append
list
variables not to be used in bbappends
oelint_parse.constants.CONSTANT.VariablesProtectedAppend


variables/suggested
list
suggested variable in a recipe
oelint_parse.constants.CONSTANT.VariablesSuggested


sets/base
dict
base set of variables always used for value expansion
oelint_parse.constants.CONSTANT.SetsBase



For additional constants
from oelint_parser.constants import CONSTANTS

CONSTANTS.GetByPath('/-joined path')

will offer access
Contributing
Before any contribution please run the following
python3 -m venv --clear .env
. .env/bin/activate
pip install -r requirements.txt -r requirements-dev.txt
flake8 oelint_parser/ tests/
pytest
./gendoc.sh

License

For personal and professional use. You cannot resell or redistribute these repositories in their original state.

Customer Reviews

There are no reviews.