ThatsTheEnd / horiba-python-sdk

MIT License
3 stars 3 forks source link

horiba-python-sdk

[![build](https://github.com/ThatsTheEnd/horiba-python-sdk/actions/workflows/build.yml/badge.svg)](https://github.com/ThatsTheEnd/horiba-python-sdk/actions/workflows/build.yml) [![PyPI - Version](https://img.shields.io/pypi/v/horiba-sdk)](https://pypi.org/project/horiba-sdk/) [![Python Version](https://img.shields.io/pypi/pyversions/horiba-sdk.svg)](https://pypi.org/project/horiba-sdk/) [![Dependencies Status](https://img.shields.io/badge/dependencies-up%20to%20date-brightgreen.svg)](https://github.com/ThatsTheEnd/horiba-python-sdk/pulls?utf8=%E2%9C%93&q=is%3Apr%20author%3Aapp%2Fdependabot) [![Ruff](https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/astral-sh/ruff/main/assets/badge/v2.json)](https://github.com/astral-sh/ruff) [![Security: bandit](https://img.shields.io/badge/security-bandit-green.svg)](https://github.com/PyCQA/bandit) [![Pre-commit](https://img.shields.io/badge/pre--commit-enabled-brightgreen?logo=pre-commit&logoColor=white)](https://github.com/ThatsTheEnd/horiba-python-sdk/blob/master/.pre-commit-config.yaml) [![Semantic Versions](https://img.shields.io/badge/%20%20%F0%9F%93%A6%F0%9F%9A%80-semantic--versions-e10079.svg)](https://github.com/ThatsTheEnd/horiba-python-sdk/releases) [![License](https://img.shields.io/github/license/ThatsTheEnd/horiba-python-sdk)](https://github.com/ThatsTheEnd/horiba-python-sdk/blob/master/LICENSE) ![Coverage Report](assets/images/coverage.svg) [![Documentation Status](https://readthedocs.org/projects/horiba-python-sdk/badge/?version=latest)](https://horiba-python-sdk.readthedocs.io/en/latest/?badge=latest) 'horiba-sdk' is a package that provides source code for the development with Horiba devices

⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️

[!WARNING]
This SDK is under development and not yet released.

[!IMPORTANT]
For this python code to work, the SDK from Horiba has to be purchased, installed and licensed. The code in this repo and the SDK are under development and not yet released for public use!

⬆️⬆️⬆️⬆️⬆️⬆️⬆️⬆️⬆️⬆️⬆️⬆️⬆️⬆️⬆️⬆️⬆️⬆️⬆️⬆️⬆️⬆️⬆️⬆️⬆️⬆️⬆️⬆️⬆️⬆️⬆️


📦 Prerequisites

🛠️ Usage

Video of the steps below ![first steps in python](docs/source/images/python_first_steps.gif)
  1. (Optional but recommended) Work in a virtual environment:

    Navigate to the (empty) project folder you want to work and run:

    python -m venv .

    Activate the virtual environment:

    Windows ```powershell .\Scripts\activate ```
    Unix ```bash source ./bin/activate ```

    Note: do deactivate it, simply run deactivate.

  2. Install the sdk:

    pip install horiba-sdk

    or install with Poetry

    poetry add horiba-sdk
  3. Create a file named center_scan.py and copy-paste the content of examples/asynchronous_examples/center_scan.py

  4. Install the required library for plotting the graph in the example:

    pip install matplotlib

    or install with Poetry

    poetry add matplotlib
  5. Run the example with:

    python center_scan.py

👩‍💻 First steps as contributor

Clone and setup the repo

  1. Clone the repo:
git clone https://github.com/ThatsTheEnd/horiba-python-sdk.git
cd horiba-python-sdk
  1. If you don't have Poetry installed run:
make poetry-download
  1. Initialize poetry and install pre-commit hooks:
make install
make pre-commit-install
  1. Run the codestyle:
make codestyle
  1. To push local changes to the remote repository, run:
git add .
git commit -m "feat: add new feature xyz"
git push

Poetry

Want to know more about Poetry? Check its documentation.

Details about Poetry

Poetry's [commands](https://python-poetry.org/docs/cli/#commands) are very intuitive and easy to learn, like: - `poetry add numpy@latest` - `poetry run pytest` - `poetry publish --build` etc

Building and releasing your package

Building a new version of the application contains steps:

Makefile usage

Makefile contains a lot of functions for faster development.

1. Download and remove Poetry

To download and install Poetry run: ```bash make poetry-download ``` To uninstall ```bash make poetry-remove ```

2. Install all dependencies and pre-commit hooks

Install requirements: ```bash make install ``` Pre-commit hooks coulb be installed after `git init` via ```bash make pre-commit-install ```

3. Codestyle

Automatic formatting uses `pyupgrade`, `isort` and `black`. ```bash make codestyle # or use synonym make formatting ``` Codestyle checks only, without rewriting files: ```bash make check-codestyle ``` > Note: `check-codestyle` uses `isort`, `black` and `darglint` library Update all dev libraries to the latest version using one comand ```bash make update-dev-deps ```

4. Code security

```bash make check-safety ``` This command launches `Poetry` integrity checks as well as identifies security issues with `Safety` and `Bandit`. ```bash make check-safety ```

5. Type checks

Run `mypy` static type checker ```bash make mypy ```

6. Tests with coverage badges

Run `pytest` Unix: ```bash make test ``` Windows: ```powershell poetry run pytest -c pyproject.toml --cov-report=html --cov=horiba_sdk tests/ ``` For the hardware tests run the following: Windows: ```powershell $env:HAS_HARDWARE="true" poetry run pytest -c pyproject.toml --cov-report=html --cov=horiba_sdk tests/ ``` Unix: ```bash HAS_HARDWARE="true" make test ```

7. All linters

Of course there is a command to ~~rule~~ run all linters in one: ```bash make lint ``` the same as: ```bash make test make check-codestyle make mypy make check-safety ```

8. Docker

```bash make docker-build ``` which is equivalent to: ```bash make docker-build VERSION=latest ``` Remove docker image with ```bash make docker-remove ``` More information [about docker](https://github.com/ThatsTheEnd/horiba-python-sdk/tree/master/docker).

9. Cleanup

Delete pycache files ```bash make pycache-remove ``` Remove package build ```bash make build-remove ``` Delete .DS_STORE files ```bash make dsstore-remove ``` Remove .mypycache ```bash make mypycache-remove ``` Or to remove all above run: ```bash make cleanup ```

📚 Documentation

The latest documentation can be found at horiba-python-sdk.readthedocs.io. In order to build it locally, run the following in the docs/ folder:

make html

The documentation will then be built under docs/build/html/.

Documentation is built each time a commit is pushed on main or for pull requests. When release tags are created in the repo, readthedocs will also tag the documentation accordingly

🚀 Features

Development features

Deployment features

Open source community features

📈 Releases

You can see the list of available releases on the GitHub Releases page.

We follow Semantic Versions specification.

List of labels and corresponding titles

Label Title in Releases
enhancement, feature 🚀 Features
bug, refactoring, bugfix, fix 🔧 Fixes & Refactoring
build, ci, testing 📦 Build System & CI/CD
breaking 💥 Breaking Changes
documentation 📝 Documentation
dependencies ⬆️ Dependencies updates

🛡 License

License

This project is licensed under the terms of the MIT license. See LICENSE for more details.

📃 Citation

@misc{horiba-python-sdk,
  author = {ZühlkeEngineering},
  title = {'horiba-python-sdk' is a package that provides source code for the development with Horiba devices},
  year = {2023},
  publisher = {GitHub},
  journal = {GitHub repository},
  howpublished = {\url{https://github.com/ThatsTheEnd/horiba-python-sdk}}
}

Credits 🚀 Your next Python package needs a bleeding-edge project structure.

This project was generated with python-package-template