blob: 4af63fec37bf6c5a3e2ef7fe85b52b7575b69bda [file] [log] [blame]
============
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 <https://semver.org/>`_ 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.