A DSL to define and enforce governance policies
This repository contains the definition of a domain-specific language (DSL) for governance policies (the engine for the enforcement of the policies is available here). We provide details below for the contents of this repository. The DSL provides a form-based editor, available here.
Contents
The repository structure is divided in five folders:
governancedsl/grammar/: This folder contains the definition of the grammar, or concrete syntax, of our DSL. We used ANTLR to define our concrete syntax, seegovdsl.g4for the implementation.governancedsl/metamodel/: This folder contains the metamodel of the abstract syntax of our DSL:metamodel.py: The implementation of the abstract syntax metamodel as Python classes.- ocl_constraints.ocl: Set of OCL constraints applied to the metamodel (OCL constraints are also included in the BESSER diagrams).
- Since the metamodel has been created using the BESSER Web Modeling Editor we provide several files under
metamodel/besser_models/folder:.jsonfiles: The JSON representation that can be used to open the metamodel in the editor..svgand.pngfiles: The SVG and PNG representation for visual purposes..drawio.pngfiles: We also provide the metamodel embedded in a PNG file that can be opened in the draw.io editor.
governancedsl/utils/: This folder contains additional support for the definitions of exceptions, extensions of our metamodel (e.g., code-hosting platform extension), and data structure support for the parser.UI/: This folder contains a Gradio-based form editor for creating governance policies interactively:- See
UI/README.mdfor detailed information. - The form-based editor is available here.
- See
tests/: This folder contains the tests. There are three subfolders inside thetest_cases/for the examples:invalid_examples/: Here we define with our DSL different invalid policies (e.g., the required number of votes is negative).NL_examples: Here we define the examples in natural language, which can come from existing repositories (NL_examples/real-world/folder) or created from us (NL_examples/artifical/).valid_examples: Here we define with our DSL different valid policies, which can also come fromNL_examples/.
Tests
When contributing to incorporate new tests in natural language (NL_examples/) we recommend using the following template:
Original repo: URL (or we can also report "owner/name" if repository is from GitHub)
Access date: Date you accessed the repository
Reporter: -
Policy: If multiple, enter a new line for each.
Prerequisite
- Python 3.11
- Recommended: Create a virtual environment (e.g. venv, conda)
- Clone this repository
- Install the dependencies by referencing to the requirements files:
pip install -r requirements.txt
Run Tests
From the project root directory, run all tests with:
python -m unittest tests.test_policy_creation -v
Or run a specific test:
python -m unittest tests.test_policy_creation.testPolicyCreation.test_majority_policy_creation -v
Note: Make sure you're in the project root directory when running the tests to ensure proper module imports.
Metadata
Release files for governancedsl 0.1.2
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| governancedsl-0.1.2.tar.gz | 64.4 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| governancedsl-0.1.2-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 121.5 kB
Release files / governancedsl-0.1.2.tar.gz
| Download URL | governancedsl-0.1.2.tar.gz |
|---|---|
| Size | 64.4 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
0c764dcf5d5e934a0f6fc533e856ecc95434587e570ec1fab8666a3534d87b27
|
|
BLAKE2b-256 checksum How to use checksums |
f26618a365138ca7e82b5d888726dde3f73ffce262534f08896d20e056905463
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.12.9
|
Release files / governancedsl-0.1.2-py3-none-any.whl
| Download URL | governancedsl-0.1.2-py3-none-any.whl |
|---|---|
| Size | 57.1 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
bd72092060f2b0e1d9d219f515b7c361f4653506fd7c739b72745794039b8520
|
|
BLAKE2b-256 checksum How to use checksums |
f2823469024d9796b74fb5b7431a9ae94beac94183debf9a2d67bb437329ef57
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.12.9
|