Contributions are welcome and very much appreciated!
We accept code contributions through pull requests. In short, this is how that works.
-
Fork the repository and clone the fork.
-
Create a virtual environment using your tool of choice (e.g.
virtualenv,conda, etc). -
Install development dependencies:
pip install "compas_dem @ git+https://github.com/BlockResearchGroup/compas_dem.git@main" pip install -e ".[dev,docs]"
-
Make sure all tests pass:
python -m pytest
-
Create a feature branch from the main branch and make your changes.
-
Make sure all tests still pass:
python -m ruff check . python -m ruff format --check . python -m pytest
The real external integration smoke tests are skipped by default because they launch a licensed local 3DEC executable. To run the complete
COMPAS DEM -> compas_3decand headlessCOMPAS-Masonry -> COMPAS DEM -> compas_3decchecks on Windows Command Prompt, use:set "COMPAS_3DEC_EXECUTABLE=C:\Program Files\Itasca\3DEC700\exe64\3dec700_console.exe" set "COMPAS_3DEC_VERSION=7.0" python -m pytest tests/test_external_integrations.py -s
The masonry test is skipped when
compas_masonryis not installed. It verifies the headless solve and session result round-trip; Rhino drawing is intentionally checked separately in Rhino. -
Add yourself to the Contributors section of
AUTHORS.md. -
Commit your changes and push your branch to GitHub.
-
Create a pull request through the GitHub website.
During development, use pyinvoke tasks on the command line to ease recurring operations:
invoke clean: Clean all generated artifacts.invoke check: Run various code and documentation style checks.invoke docs: Generate documentation.invoke test: Run all tests and checks in one swift command.invoke: Show available tasks.
When reporting a bug please include:
- Operating system name and version.
- Any details about your local setup that might be helpful in troubleshooting.
- Detailed steps to reproduce the bug.
When proposing a new feature please include:
- Explain in detail how it would work.
- Keep the scope as narrow as possible, to make it easier to implement.