Python package providing an interface to the Gantner Instruments Data API
Project description
pygidata
This repository provides one Python package, pygidata, for Gantner Instruments data access.
Inside pygidata, the ginsutility module is included for expert/local Highspeedport access via GInsUtility.dll.
The logic remains separated by module scope (gi_data for API access, ginsutility for local DLL workflows).
Choose the right package
- Use
pygidata/gi_datafor standard backend/API integrations and GI.cloud workflows. - Use
ginsutilityonly for local expert scenarios that require the Highspeedport DLL. - Do not use
ginsutilityas GI.cloud-only integration path.
Usage
Install pygidata from PyPI
pip install pygidata
Install with local expert module dependencies
Use this only if you need local Highspeedport access.
Required for
ginsutilityexamplesAll examples in
src/ginsutility/examplesrequire:
pygidatainstalled with extras:pip install "pygidata[ginsutility]"- local access to
GInsUtility.dllor on LinuxlibGInsUtility.dll(typically installed with GI.bench / Q.core).
pip install "pygidata[ginsutility]"
Editable install from this repository:
pip install -e .[ginsutility]
Quick check after installation:
python -c "import ginsutility; print('ginsutility import OK')"
If this import fails, run the examples only after fixing the ginsutility installation and DLL availability.
Import module in python script and call functions.
A detailed description of pygidata can be found under docs/ or in the
Gantner Documentation.
from gi_data.dataclient import GIDataClient
import os
PROFILES = {
"qstation": {
"base": os.getenv("GI_QSTATION_BASE", "http://10.1.50.36:8090"),
"auth": {"username": os.getenv("GI_QSTATION_USER", "admin"),
"password": os.getenv("GI_QSTATION_PASS", "admin")},
},
"cloud": {
"base": os.getenv("GI_CLOUD_BASE", "https://demo.gi-cloud.io"),
"auth": {"access_token": os.getenv("GI_CLOUD_TOKEN", "")},
},
}
ACTIVE_PROFILE = os.getenv("GI_PROFILE", "qstation")
def get_client(profile: str = ACTIVE_PROFILE) -> GIDataClient:
cfg = PROFILES[profile]
if cfg["auth"].get("access_token"):
return GIDataClient(cfg["base"], access_token=cfg["auth"]["access_token"])
return GIDataClient(cfg["base"],
username=cfg["auth"].get("username"),
password=cfg["auth"].get("password"))
client = get_client()
Development
Used as submodule in
- gi-sphinx
- gi-jupyterlab
- gi-analytics-examples
Information on how to manually distribute this package can be found here
https://packaging.python.org/en/latest/tutorials/packaging-projects/
Hint: If you are debugging the source code with a jupyter notebook, run this code in the first cell to enable autoreloading source code changes.
%load_ext autoreload
%autoreload 2
Distribute with CI / CD
Edit pyproject.toml version number and create a release. -> Creating a release will trigger the workflow to push the package to PyPi
Tests
run tests locally:
pipenv run test -v
or
pytest
Generate loose requirements
Do this in a bash shell using the lowest version you want to support!
Install uv to easily install all needed python versions (coss-platform)
pip install uv
python -m pip install -U pip tox
python -m pip install pip-tools
python -m pip install pipreqs
To ensure we support multiple python versions we don't want to pin every dependency. Instead, we pin everything on the lowest version (that we support) and make it loose for every version above.
from root package dir (/gimodules-python)
./gen-requirements.sh
Ensure python-package version compatibility
uv python install 3.10 3.11 3.12 3.13 3.14
Now run for all envs
tox
of for a specific version only -> look what you defined in pyproject.toml
tox -e py310
NOTE: Remove the old gimodules version from requirements.txt before pushing (dependency conflict).
Documentation
Build docs from repository root.
nbsphinx requires a local Pandoc installation.
Install Pandoc
Windows (winget):
winget install --id JohnMacFarlane.Pandoc -e
Linux (Debian/Ubuntu):
sudo apt update
sudo apt install -y pandoc
Windows (PowerShell)
python -m pip install -r .\docs\requirements.txt
Set-Location .\docs
.\make.bat html
HTML output is written to docs\_build\html.
Linux/macOS
python -m pip install -r ./docs/requirements.txt
make -C docs html
HTML output is written to docs/_build/html.
Linting / Type hints
This project follows the codestyle PEP8 and uses the linter flake8 (with line length = 100).
You can format and check the code using lint.sh:
./lint.sh [directory/]
Type hints are highly recommended. Type hints in Python specify the expected data types of variables, function arguments, and return values, improving code readability, catching errors early, and aiding in IDE autocompletion.
To include type hints in the check:
mpypy=true ./lint.sh [directory])
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
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file pygidata-0.5.0.tar.gz.
File metadata
- Download URL: pygidata-0.5.0.tar.gz
- Upload date:
- Size: 61.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.9.25
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d24a912271e6c047b16450d845f8c7a2e7ce7bab32b94b32022f6324255705af
|
|
| MD5 |
1f174cf77c4e1f9bc150d636e67da594
|
|
| BLAKE2b-256 |
d0f776c365ec043c61c454df0393e65fca9a89539ceb0d9ca6a512c6815869af
|
File details
Details for the file pygidata-0.5.0-py3-none-any.whl.
File metadata
- Download URL: pygidata-0.5.0-py3-none-any.whl
- Upload date:
- Size: 79.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.9.25
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
4c025eea20a892b2e9a96bcd2a8dde27860af127f1b09eaa4e08fb42625148d8
|
|
| MD5 |
bac3346c887f8fe1fd222d50e4a74cb5
|
|
| BLAKE2b-256 |
81bdf31ae2bfc0d121452254703c3a76770bba0bc7fc8f2fc0cd503fb746184d
|