pygidata provides Python access to Gantner Instruments data on GI.cloud,
GI.bench, Q.core, and Q.station. Install pygidata and import gi_data
for the REST/GraphQL client. Python 3.10-3.14 is supported.
python -m pip install pygidataSet GI_BASE_URL and GI_TOKEN in your environment.
docs/.env.example contains the base URL and credentials; see
Installation for opt-in loading.
List the available streams:
import logging
import os
from gi_data.dataclient import GIDataClient
base_url = os.environ["GI_BASE_URL"]
GIDataClient.set_log_level(logging.WARNING)
with GIDataClient(
base_url,
access_token=os.environ["GI_TOKEN"],
) as client:
for source in client.list_buffer_sources():
print(source.id, source.name)For username/password authentication, replace the client construction with
GIDataClient(base_url, username=os.environ["GI_USER"], password=os.environ["GI_PASSWORD"]) and unset GI_TOKEN. A local target URL
may look like http://your-controller:8090; use HTTPS for remote connections.
These examples read environment variables, not .env files.
| I want to... | Start here |
|---|---|
| Read buffer/online data, plot, or exchange files | Data access |
| Read recordings or manage measurement metadata | Measurements |
| Look up return types and backend conventions | API notes |
| Set up Python or the notebook kernel | Installation and JupyterLab |
| Access Highspeedport through a local DLL | Local expert access |
Each notebook is standalone: run Setup, then the workflow you need.
Optional operations are executable cells with run_... = False switches.
Configure the inputs and enable only the cell you need; reset its switch before Run All.
ginsutility is included for expert/local workflows, not as a GI.cloud-only
integration path. The examples in src/ginsutility/examples require both the
optional Python dependencies and GInsUtility.dll (Windows) or
libGInsUtility.so (Linux), typically supplied with GI.bench / Q.core.
python -m pip install "pygidata[ginsutility]"For an editable development installation, use
python -m pip install -e ".[ginsutility]".
- gi-sphinx
- gi-jupyterlab
- gi-analytics-examples
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 2Edit pyproject.toml version number and create a release. -> Creating a release will trigger the workflow to push the package to PyPi
run tests locally:
pipenv run test -vor
pytestDo 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 uvpython -m pip install -U pip toxpython -m pip install pip-toolspython -m pip install pipreqsTo 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.shuv python install 3.10 3.11 3.12 3.13 3.14Now run for all envs
toxof for a specific version only -> look what you defined in pyproject.toml
tox -e py310NOTE: Remove the old gimodules version from requirements.txt before pushing (dependency conflict).
Build docs from repository root.
nbsphinx requires a local Pandoc installation.
Windows (winget):
winget install --id JohnMacFarlane.Pandoc -eLinux (Debian/Ubuntu):
sudo apt update
sudo apt install -y pandocpython -m pip install -r .\docs\requirements.txt
Set-Location .\docs
.\make.bat htmlHTML output is written to docs\_build\html.
python -m pip install -r ./docs/requirements.txt
make -C docs htmlHTML output is written to docs/_build/html.
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])