Coding Style#
To maintain consistency and readability across the codebase, we follow a standardized coding style. All contributions should adhere to these guidelines.
Code Formatting#
We use black for code formatting and isort for import sorting. This ensures a uniform style without any need for manual adjustments.
black: The uncompromising code formatter.
isort: A Python utility to sort imports alphabetically and automatically separate them into sections.
Before committing your changes, please run these tools to format your code:
# Format code with black
black .
# Sort imports with isort
isort .
Docstrings#
We follow the NumPy/SciPy docstring standard. A typical docstring includes:
A brief one-line summary.
An extended description (optional).
A parameters section.
A returns section.
Here is an example of a well-documented function:
def example_function(param1, param2):
"""
A one-line summary of the function.
A more detailed explanation of what the function does and how it
works.
Parameters
----------
param1 : int
Description of the first parameter.
param2 : str
Description of the second parameter.
Returns
-------
bool
Description of the return value.
"""
# Function logic here
return True
Type Hints#
We use type hints throughout the codebase to improve code clarity and allow for static analysis. Please add type hints to all new functions and methods.
Example with type hints:
def greet(name: str) -> str:
"""
Returns a greeting message.
Parameters
----------
name : str
The name to include in the greeting.
Returns
-------
str
The formatted greeting message.
"""
return f"Hello, {name}!"
Pyomo Model Naming Conventions#
To ensure clarity and consistency within the Pyomo model, we follow a specific naming convention for model components:
Parameters: Names should start with the prefix
p_. For example,p_demand.Variables: Names should start with the prefix
v_. For example,v_generation.Constraints: Names should start with the prefix
e_. For example,e_balance.
This convention makes it easier to identify the type of a model component just by its name.