Architecture¶
Some notes on the design/implementation of Burr:
Python Package¶
Dependencies¶
A note on dependencies:
The core Burr library will have zero dependencies. Currently its only dependency in hamilton, but that will be removed in the future.
Any other extensions (the server, the CLI, etc…) are allowed dependencies – specify these as install targets in
pyproject.toml
The dependencies/plugins will live alongside the core library, and contain guards to ensure that the right libraries are installed. You can do this with
burr.integrations.base.require_plugins
Coding style¶
We use type hints for function parameters (and in rare cases inline) to aid development but it is not enforced – use your best judgement
Versioning¶
We adhere to sem-var for versioning. We ensure that:
- Every public facing function/class/variable should:
have a docstring
have type-hints
be exposed through the documentation
If it is not exposed through the documentation it is assumed to be private, and thus will not be subject to sem-var rules.
We currently are not versioning the server or CLI, but are versioning the core library. Note
that it starts at 0.x
, which means that we are allowed to make a backwards-incompatible change.
We will make every effort not to do so – and will provide a migration guide/script if we do.