You can install all tools needed for developing the package by using
the dev extra:
python-scsi $ pip install -e .[dev]
This will include test and verification tools, as well as all the necessary packages to build a new release.
This repository uses pre-commit to maintain a
consistent codebase. The tool is installed as part of the dev extra.
To activate the pre-commit hooks, you should use:
python-scsi $ pre-commit install
which will set up the hooks for the current repository.
The tests directory contain unit tests for python-scsi.
To run the tests:
python-scsi $ pip install -e .[dev]
python-scsi $ pytest --mypy
or use the make file:
$ cd tests
$ make
Travis CI is set up to run integration tests
for the repository. The configuration is in the .travis.yml file.
Travis will execute the whole testsuite (unittests and typechecking) on the master branch as well as on each Pull Request.
Setuptools is used to create the released packages:
python-scsi $ pip install -e .[dev]
python-scsi $ git clean -fxd
python-scsi $ git tag -a python-scsi-X.Y.Z
python-scsi $ python3 setup.py sdist bdist_wheel
The git tag command is used to tag the version that will be used by
setuptools-scm to apply the
correct version information in the source and wheel packages.
The version to tag should be following Semantic Versioning (SemVer).
For more details, see Generating distribution archives.
The repository follows a (mostly) standard layout for Python repositories:
.gitignoreis part of the repository configuration and is set to ignore generated files from Python testing and usage..pre-commit-config.yamlcontains the configuration for pre-commit and its hooks..travis.ymlconfigures the continuous integration used to validate pull requests.mypy.inicontains configuration for mypy.setup.pyandsetup.cfgcontain configuration for setuptools.pyproject.tomlcontains PEP 518 configuration for various tools.pyscsicontains the source code of the module that is actually installed by pip.toolsandexamplescontain Python entrypoints showing usage of the library.testscontains the unittest to validate the correctness of the library.