blob: 8b741c341008b138f8b0d535aa6ec19b7ca25113 [file] [view]
# Gemini Workspace Configuration
Read "./README.md" for all instructions.
Use `poetry run cb` instead of just running `./cb.py`
Use `poetry run help` to gather all details.
# Style Guide
- You must follow the google style guide for python coding.
- Do **not** use non-local imports inside classes or methods.
- You must not skip pylint checks.
- Check surrounding code and class hierarchies for reusing functionality.
- Use existing tests and test classes to write platform and mock tests.
## Platform Code
- Avoid using raw shell-commands if possible and directly use the platform
helpers for the same functionality.
- Avoid using "shell = True", eiher use or extend the explicit platform
helpers or look for simple workarounds.
- New platform methods should be implemented in the most abstract platform
class if possible.
## Paths
- Use pth.AnyPath or pth.LocalPath instead of strings for paths.
- Use pth.AnyPath for paths that can either be local and/or remote.
- Use pth.LocalPath for paths that are exclusively local.
## Input Parsing
- All user input should pass through one of the helpers from
`crossbench.parse`.
- Do early input validation either in the config parser or argument parsing.
- Any new parser helper method needs a dedicated unittest.
## ConfigObjects
- Any complex input parameter should be a dedicated immutable / frozen
ConfigObject with proper documentation.
- Add unittests for each newly added ConfigObject.
- Add example config files to the config/doc or a better suited
config/* folder.
# Sanity Checks
- Always do `poetry run ruff check` after completing a change to validate
all results.
- Run `poetry run mypy crossbench` after finishing a larger change.
- Run tests with `poetry run pytest tests/crossbench -x -n 7`