mirror of
https://github.com/borgmatic-collective/borgmatic.git
synced 2026-08-02 14:43:02 +02:00
Additional documentation reference refactoring (#942).
This commit is contained in:
@@ -26,3 +26,34 @@ started. Starting at the top level, we have:
|
||||
|
||||
So, broadly speaking, the control flow goes: `commands` → `config` followed by
|
||||
`commands` → `actions` → `borg` and `hooks`.
|
||||
|
||||
|
||||
## Code style
|
||||
|
||||
When writing code for borgmatic, start with [PEP
|
||||
8](https://www.python.org/dev/peps/pep-0008/). But then, apply the following
|
||||
deviations from it:
|
||||
|
||||
* For strings, prefer single quotes over double quotes.
|
||||
* Limit all lines to a maximum of 100 characters.
|
||||
* Use trailing commas within multiline values or argument lists.
|
||||
* For multiline constructs, put opening and closing delimiters on lines
|
||||
separate from their contents.
|
||||
* Within multiline constructs, use standard four-space indentation. Don't align
|
||||
indentation with an opening delimiter.
|
||||
* In general, spell out words in variable names instead of shortening them.
|
||||
So, think `index` instead of `idx`. There are some notable exceptions to
|
||||
this though (like `config`).
|
||||
* Favor blank lines around logical code groupings, `if` statements,
|
||||
`return`s, etc. Readability is more important than packing code tightly.
|
||||
* Import fully qualified Python modules instead of importing individual
|
||||
functions, classes, or constants. E.g., do `import os.path` instead of
|
||||
`from os import path`. (Some exceptions to this are made in tests.)
|
||||
* Only use classes and OOP as a last resort, such as when integrating with
|
||||
Python libraries that require it.
|
||||
* Prefer functional code where it makes sense, e.g. when constructing a
|
||||
command (to subsequently execute imperatively).
|
||||
|
||||
Since borgmatic uses [Ruff](https://docs.astral.sh/ruff/) for code lining and
|
||||
formatting, many other code style requirements are also enforced when running
|
||||
automated tests.
|
||||
|
||||
Reference in New Issue
Block a user