Skip to main content

Python package providing an interface to the Gantner Instruments Data API

Project description

pygidata

Usage

Install from PyPi

pip install pygidata

Import module in python script and call functions.

A detailed description of the package and other APIs 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

The documentation is being built as extern script in the GI.Sphinx repository.

The documentation consists of partially generated content. To generate .rst files from the code package, run the following command from the root directory of the project:

sphinx-apidoc -o docs/source/ src

You need pandoc installed on the system itself first to build:

sudo apt install pandoc

Then, to build the documentation, run the following commands:

cd docs
sudo apt update
pip install -r requirements.txt
make 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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pygidata-0.4.4.tar.gz (25.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

pygidata-0.4.4-py3-none-any.whl (29.7 kB view details)

Uploaded Python 3

File details

Details for the file pygidata-0.4.4.tar.gz.

File metadata

  • Download URL: pygidata-0.4.4.tar.gz
  • Upload date:
  • Size: 25.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.9.25

File hashes

Hashes for pygidata-0.4.4.tar.gz
Algorithm Hash digest
SHA256 115c1114ed7a1275131d534c4e69ee748945edcfbac102feb37bab11d93bd8e6
MD5 21da0ee46904db7f6af0a88e4286bac0
BLAKE2b-256 45abd5aca23a28ab230494a7fde0c5e6f6616a17dc5462afc41eafc675403678

See more details on using hashes here.

File details

Details for the file pygidata-0.4.4-py3-none-any.whl.

File metadata

  • Download URL: pygidata-0.4.4-py3-none-any.whl
  • Upload date:
  • Size: 29.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.9.25

File hashes

Hashes for pygidata-0.4.4-py3-none-any.whl
Algorithm Hash digest
SHA256 3c4d2052715ab0ea927993d7d83ee2d050a52db23fec82fef0050abe67c1c0c8
MD5 e56e1b17d9b2d654cd8e92b508174e6f
BLAKE2b-256 72e0ed75b0e10901784c883ce4fed777fd42914ed62ea8148de2c2f99e48afdc

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page