doc: Document installation into a virtualenv.
This commit is contained in:
parent
9c69d656a3
commit
dd35ed25c2
2 changed files with 19 additions and 2 deletions
|
@ -17,7 +17,7 @@ Installation
|
|||
|
||||
python3 -m pip install --user --upgrade .
|
||||
|
||||
Of course, if you're familiar with Python development tools, you're welcome to install the module in a virtualenv, somewhere else, etc.
|
||||
For development, a Python virtual environment may be more appropriate. See the development documentation for details.
|
||||
|
||||
Development
|
||||
-----------
|
||||
|
|
|
@ -11,6 +11,17 @@ The project comes with a Tox configuration that defines all the tests we expect
|
|||
|
||||
The next sections describe how to run them standalone in your own development environment, for faster iteration or simpler isolation of problems.
|
||||
|
||||
Installing
|
||||
~~~~~~~~~~
|
||||
|
||||
Create a virtual environment, for example::
|
||||
|
||||
python3 -m venv ~/.virtualenvs/conservancy-beancount
|
||||
|
||||
Install the ``conservancy_beancount`` as an editable package including the test dependencies::
|
||||
|
||||
~/.virtualenvs/conservancy-beancount/bin/python -m pip install --editable ~/conservancy/conservancy_beancount[test]
|
||||
|
||||
Running unit tests
|
||||
~~~~~~~~~~~~~~~~~~
|
||||
|
||||
|
@ -18,11 +29,17 @@ Run::
|
|||
|
||||
pytest
|
||||
|
||||
Alternatively, you can run ``tox`` which will run the tests in a clean virtual
|
||||
environment with all the relevant dependencies.
|
||||
|
||||
Type checking
|
||||
~~~~~~~~~~~~~
|
||||
|
||||
Most of the code is typed, except for very dynamic loader methods. To run the type checker::
|
||||
|
||||
# Beancount includes type declarations but not the `py.typed` flag file mypy
|
||||
# is looking for to know that. Create it ourselves.
|
||||
python -c 'import beancount, pathlib; pathlib.Path(beancount.__file__).with_name("py.typed").touch()'
|
||||
mypy conservancy_beancount
|
||||
|
||||
This is expected to pass just like the unit tests.
|
||||
|
@ -34,7 +51,7 @@ Books that use this plugin are expected to say::
|
|||
|
||||
plugin "conservancy_beancount.plugin"
|
||||
|
||||
When Beancount sees this directive after loading all the data, it passes everything it loaded through the ``run`` function in ``conservancy_beancount/plugin/__init__.py`` to be manipulated. Our ``run`` function, it turn, passes the data through hooks defined in other files under ``conservancy_beancount/plugin`` to normalize data and report errors. ``HookRegistry`` in ``__init__.py`` is the bridge between these two. It supports dynamically choosing which hooks are loaded at runtime, although we currently aren't using that.
|
||||
When Beancount sees this directive after loading all the data, it passes everything it loaded through the ``run`` function in ``conservancy_beancount/plugin/__init__.py`` to be manipulated. Our ``run`` function, in turn, passes the data through hooks defined in other files under ``conservancy_beancount/plugin`` to normalize data and report errors. ``HookRegistry`` in ``__init__.py`` is the bridge between these two. It supports dynamically choosing which hooks are loaded at runtime, although we currently aren't using that.
|
||||
|
||||
``conservancy_beancount/plugin/core.py`` has the base classes for these hooks. The rest of the files in the directory contain the specific hooks that are loaded and run. All the ``meta_foo.py`` files have hook(s) to validate ``foo`` metadata. ``txn_date.py`` verifies that transactions are in the right file by fiscal year.
|
||||
|
||||
|
|
Loading…
Reference in a new issue