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.3.tar.gz (24.9 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.3-py3-none-any.whl (29.4 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: pygidata-0.4.3.tar.gz
  • Upload date:
  • Size: 24.9 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.3.tar.gz
Algorithm Hash digest
SHA256 0f2ba1417a073f657e9c82d0e7d8c501daae327b54ca1aa2472bf17b862def6f
MD5 207354ac204413cb7e672fb86371971b
BLAKE2b-256 22832c5d58df2093b04b626b7c868be74dab0e536d2d986fb5ed49a1fb54c012

See more details on using hashes here.

File details

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

File metadata

  • Download URL: pygidata-0.4.3-py3-none-any.whl
  • Upload date:
  • Size: 29.4 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.3-py3-none-any.whl
Algorithm Hash digest
SHA256 817bb088ff278a201f4c29366fa98315d7c0a7124ff52b1b3a2b4fd505f57c0a
MD5 04838cbbe72e62e11001be2ac46125f4
BLAKE2b-256 4d269e7835eec502b1033575632c9450ffcedb2af296682ba701aba976354d2d

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