How to contribute to this project
=================================
This package has been written by following a **test driven development**
approach. Python classes and JSON schemas are thoroughly tested, the latter
against real JSON messages. Features should be proposed on this project's
GitHub Issues page.
Adding a schema
---------------
The classes have been thoroughly tested and several methods has been developed in
order for the clients to offer high flexibility and adapt to various scenarios.
This means that future additions are most likely to be additional schemas.
In order to write a schema for a specific DISCOS component, the first thing to do
is check what information the said component can provide. First and foremost,
you should check what attributes a component already exposes as DevIOs, and
secondly, which inner variables that are currently not exposed as attributes,
can be published in order to provide additional information. All these
attributes should be gathered together, in the form of a
`JSON Schema `_, make sure to follow the `draft-07
specification `_ in order to be compliant
with other written schemas. Check out
`other schemas `_
for a better idea of what a JSON schema looks like. Newly added schemas should
also be reported in :ref:`this documentation ` as well.
Installing development dependencies
-----------------------------------
To run the test suite and perform static analysis, install the development
dependencies with:
.. code-block:: bash
pip install .[test]
This installs the required tools for running tests, measuring coverage, and linting.
Running tests with coverage
---------------------------
Use the following commands to execute the test suite and generate coverage data:
.. code-block:: bash
coverage run -p -m unittest discover -b tests
coverage combine
coverage report
To generate an HTML coverage report:
.. code-block:: bash
coverage html
firefox htmlcov/index.html # or use a browser or a text editor of your choice
Static analysis with prospector
-------------------------------
To check code quality using `prospector`, run:
.. code-block:: bash
prospector