Python libraries to talk to IQ Motion Control devices
Project description
IQ Motion Python API
This library is to talk to any IQ Control devices from mulititude of communication protocoles.
Getting Started
These instructions will get you a copy of the project up and running on your local machine for development and testing purposes.
Prerequisites
Pipenv
Windows and mac users:
Linux users:
Read the second part of this and this once, understand how it works (it's really easy) and you will be good for ever (you can also come and bother Raf, he loves explaining how this stuff works).
List of usefull pipenv commands:
pipenv install
pipenv install --dev
pipenv install [some_package]
pipenv uninstall --all
pipenv uninstall [some_package]
pipenv shell
pipenv update
pipenv update [some_package]
you probably only need this command to create a python venv and install all the dependancies when starting out:
pipenv install --dev
and this command to init the python venv shell
pipenv shell
Vscode
For windows, the power shell might not be able to activate the environment cuase of restrictions, just run the following command in a PowerShell to solve this:
Set-ExecutionPolicy �ExecutionPolicy RemoteSignedt
Installing
You can install this library using "pip":
pip install iqmotion
If you want to edit this library and/or run some tests, You can clone this repository locally on your computer.
Submodule
If you are using this repository as a submodule, make sure to make a symbolic link:
ln -s python_api/iqmotion iqmotion
If you prefer not to use symbolic links, you could dynamically append the library to your system PATH at runtime by following along with the example below:
├── examples
│ ├── api_testing.py <---------------(current python script)
│ ├── async_example.py
│ ├── multi_turn_example.py
│ └── propeller_example.py
├── iqmotion <-----------------------(IQMOTION API LIBRARY)
│ ├── client_entries
│ │ ├── client_entry_data.py
│ │ ├── client_entry.py
│ │ ├── dictionary_client_entry.py
│ │ ├── __init__.py
│ │ └── process_client_entry.py
│ ├── clients
If I wanted to run api_testing.py from the examples Directory, I need to append the iqmotion library to the system path at the top of my api_testing.py script:
import sys
# Adds the parent directory to the system path
# (Same location that the iqmotion library is located)
sys.path.append("../")
Running the tests
You will need the following packages to run the tests:
- pytest
- pytest-cov
They should be already installed with pipenv.
You can then run the software tests with the following command:
pytest ./iqmotion/tests/ --cov-config=.coveragerc --cov=iqmotion --cov-fail-under=90
The test will fail if coverage is under 90%
You can run the hardware tests with the following commands:
python run_hardware_tests.py speed --usb_handle=/dev/ttyUSB0
python run_hardware_tests.py servo --usb_handle=/dev/ttyUSB0
python run_hardware_tests.py step_dir --usb_handle=/dev/ttyUSB0
Clean Code
Formatting
We use black as a formatter. It does everything for you and it should be installed with the dev packages of pipenv.
I recommend setting up your IDE to format with black when saving. Vscode has a known issue sometimes with new .py files where you need to run black in the terminal first
You can also run black from the terminal with:
black ./
Linting
We use pylint as a linter. It does everything for you and it should be installed with the dev packages of pipenv.
We have a .pylintrc file that setups your pylint for you.
I would recommend to set up your IDE to use pylint automatically (vscode should find the .pylintrc automatically).
Sometimes pylint shouts at out some errors you do not wantc you can disbale a pylint error locally in a file/method/class with a comment like this:
# pytlint: disable=my-error
You can also run pylint from the terminal with the following command:
pylint your_project_directory
New Releases
It is really easy to create a new release, simply run the following script and follow the prompt:
(You might need to run the following command to use a bash script in windows):
dos2unix ./ci_scripts/new_release.sh
./ci_scripts/new_release.sh
Versioning
We use SemVer for versioning.
Contributing
Please read CONTRIBUTING.md for details on our code of conduct, and the process for submitting pull requests to us.
Authors
- Raphael Van Hoffelen
See also the list of contributors who participated in this project.
License
This project is licensed under the MIT License - see the LICENSE file for details
Acknowledgments
- Matt Piccoli for helping out debugging the architecture and continuously testing the API.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for iqmotion-0.11.0-py2.py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 95b8868a878682bf200f75e72c6df9d1503366a20da7a56b8210d54a725058c9 |
|
MD5 | f3da90b2c7682ae57b5b96c8610e779c |
|
BLAKE2b-256 | 4a8bf0ae5e03692e20b4c1c56fafc3bb8faf8c349cab1d2b6ec3caedf3d572db |