GUIDELINES FOR DEVELOPING SDOM#
General Guidelines#
Follow PEP 8 for code style and formatting.
Write clear, concise, and well-documented code.
Add docstrings to all public classes, methods, and functions.
Include unit tests for new features and bug fixes.
Use descriptive commit messages.
Open issues or discussions for significant changes before submitting a pull request.
Ensure all tests pass before submitting code.
Keep dependencies minimal and document any new requirements.
Review and update documentation as needed.
Be respectful and collaborative in all communications.
Table of Contents#
clone/fork SDOM repo#
Open VS code and use file -> open folder and select the folder where you want to copy the repo.
Clone in your local the python version of SDOM repo:
git clone https://github.com/Omar0902/SDOM.git
Setting up your enviroment#
Install uv#
pip install uv
For further instructions click in the link above.
Create a virtual enviroment “.venv”
uv venv .venv
This command creates a new Python virtual environment in the .venv directory.
Install your local SDOM python module and pytest#
To be able to run the tests locally and develop SDOM source code, install your local SDOM module by runing in your powershell terminal (Modify the folder address approprietly):
uv pip install -e "C:\YOUR_PATH\SDOM"
It will install also the SDOM dependencies. You should see something like this:
uv pip install -e "C:\YOUR_PATH\SDOM"
Resolved 9 packages in 1.90s
Built sdom @ file:///C:/YOUR_PATH/SDOM
Prepared 1 package in 1.68s
Installed 9 packages in 1.60s
+ numpy==2.3.2
+ pandas==2.3.1
+ ply==3.11
+ pyomo==6.9.2
+ python-dateutil==2.9.0.post0
+ pytz==2025.2
+ sdom==0.0.1 (from file:///C:/YOUR_PATH/SDOM)
+ six==1.17.0
+ tzdata==2025.2
Also, install:
pytests.py to be able to run the tests locally:
uv pip install pytest
run the following codes to install all the requirements to build SDOM documentation:
uv pip install -r docs\requirements.txt
Running tests locally#
The SDOM python version source code have a folder called “tests”. This folder contains all the scripts with the unit tests.
⚠️ Attention:
Before to push and/or do a pull request please run locally all the tests scripts and make sure all the tests are passing sucessfully.
Please add unit test for all new features and source code implementations.
To run all the test files:
uv run pytest
To run a test python script you can use:
uv run pytest tests/TEST_SCRIPT_NAME.py
For instance to run the tests of the script called “test_no_resiliency_optimization_cases.py” you should run
uv run pytest tests/test_no_resiliency_optimization_cases.py
This is an example of what you should see:
uv run pytest tests/test_no_resiliency_optimization_cases.py
================================================================== test session starts ==================================================================
platform win32 -- Python 3.12.4, pytest-8.4.1, pluggy-1.6.0
rootdir: C:\Users\smachado\repositories\pySDOM\SDOM
configfile: pyproject.toml
plugins: anyio-4.8.0, hydra-core-1.3.2
collected 2 items
tests\test_no_resiliency_optimization_cases.py .. [100%]
================================================================== 2 passed in 2.71s ===================================================================
Build the documentation locally#
Please update the documentationd in the folder docs for each new feature implementation you are making in a pull request. The SDOM documentation is based on sphinx.
⚠️ Attention:
Before to push and/or do a pull request please build locally the documentation and make sure it does not have any issues.
Please add Docstrings to all code implementations you include in your contributions.
Add proper documentation for the new features before submit a pull request.
In order to build locally the documentation and check if your changes are correct you can run:
uv run .\docs\make.bat html
to visualize locally the documentation website run
start docs\build\html\index.html
General Source code structure#
To be updated…. Below is a diagram illustrating the general folder and script structure of the SDOM repository:
SDOM/
├── sdom/ # Main SDOM source code package
│ ├── __init__.py
│ ├── core.py
│ ├── utils.py
│ └── ... # Other modules
├── tests/ # Unit tests for SDOM
│ ├── __init__.py
│ ├── test_core.py
│ └── ... # Other test scripts
├── docs/ # Documentation files
│ └── Developers_guide.md
├── requirements.txt # Python dependencies
├── pyproject.toml # Project metadata and build configuration
└── README.md # Project overview
Note: The actual structure may include additional files or folders depending on the project’s evolution.