Skip to content
gantnerinstrumentsPublic

About

No description, website, or topics provided.

Resources

Stars

2 stars

Watchers

1 watching

Forks

Repository files navigation

pygidata

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.

Quick start

python -m pip install pygidata

Set 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.

User guide

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.

Local Highspeedport access

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]".

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])

About

No description, website, or topics provided.

Resources

Stars

2 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages