Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Support for an "executor" implementation #48

Open
hoangtungdinh opened this issue Nov 7, 2024 · 0 comments
Open

Support for an "executor" implementation #48

hoangtungdinh opened this issue Nov 7, 2024 · 0 comments
Labels
isState:New A new issue that needs to be classified to a type. isType:Feature An issue that adds new features to the project.
Milestone

Comments

@hoangtungdinh
Copy link
Contributor

hoangtungdinh commented Nov 7, 2024

Is your feature request related to a problem? Please describe.

Currently, the baselib only provides interfaces to interact with the Config file format and Result file format. Each Python Checker Bundle is responsible for:

  1. Define arguments
  2. Read the input Configuration file
  3. Register individual checkers and rules
  4. Support common concepts such as preconditions (skip a check if another check fails), and applicable versions.
  5. Executing checkers
  6. Copy parameters from the configuration to the result
  7. Write result to file
  8. Support generation of markdown documentation

Describe the solution you'd like

To help users get started quickly with implementing checker bundles, the baselib could provide an "executor" that takes care of all the above steps. The executor should allow users to define, register and execute all the checkers in their checker bundle in a simple way, following the inversion of control principle, such as:

def main():
    executor = qc_baselib.Executor(checker_bundle_name=..., description=...)
    executor.register_checker(checker=my_first_checker)
    executor.register_checker(checker=my_second_checker)
    executor.run()

The executor should be generic to support Checker Bundles for different standards.

A first implementation of a sequential executor concept (which needs revision) can be found in qc-opendrive, where inversion of control is implemented in a Pythonic way.

Additional context

Implementing the "executor" will help the QC Framework introduce advanced concepts such as applicable versions and preconditions.

@hoangtungdinh hoangtungdinh added the isType:Feature An issue that adds new features to the project. label Nov 7, 2024
@andreaskern74 andreaskern74 added this to the Wish List milestone Nov 7, 2024
@andreaskern74 andreaskern74 added the isState:New A new issue that needs to be classified to a type. label Nov 7, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
isState:New A new issue that needs to be classified to a type. isType:Feature An issue that adds new features to the project.
Projects
None yet
Development

No branches or pull requests

2 participants