Clone from github:
git clone git@github.com:CitrineInformatics/dft-input-gen.gitCreate a virtual environment; one option is to use conda, but it is not required:
conda create -n <env_name>
conda activate <env_name>Then install requirements:
pip install -U -r requirements.txt
pip install -U -r test_requirements.txt
pip install --no-deps -e .We use pytest to run tests. To run all tests:
pytest -svvWe use pytest-cov to check
code coverage.
To run all tests and output a report of the coverage of the src directory:
pytest --cov=src/ --cov-report term-missing -svvdftinputgen follows PEP8, with
several docstring rules relaxed.
See tox.ini for a list of the ignored rules.
Docstrings must follow the
Numpy style.
We use flake8 as a linter.
To run the linter on the src directory:
flake8 srcA pre-commit hook is available to auto-format code with black (recommended):
- Make sure you are using a Python version >=3.6
- Install black:
$ pip install black - Install pre-commit:
$ pip install pre-commit - Intall git hooks in your
.gitdirectory:$ pre-commit install
dftinputgen follows the
gitflow workflow,
so all PRs must be submitted to the develop branch.
Versions must follow semantic versioning.
In order to be merged, a PR must be approved by one authorized user and the build must pass. A passing build requires the following:
- All tests pass
- The linter finds no violations of PEP8 style
- Every line of code is executed by a test (100% coverage)
It is recommended to complement any new large module(s) with
example(s) in the dftinputgen.demo module.
Additional information useful to the user should be added to the package
documentation in docs/src.