-
Notifications
You must be signed in to change notification settings - Fork 42
/
architecture.rst
38 lines (28 loc) · 1.44 KB
/
architecture.rst
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
============
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.