Package: visiology-py
visiology-pyВысокоуровневые обертки и вспомогательные функции для работы с API Visiology: ViQube, ViQube Admin и DatacollectionУстановка$ pip install visiology-pyИспользованиеDatacollectionПолучение элементов измеренийimport visiology_py as vi
import visiology_py.datacollection as dc

connection = vi.Connection(
    schema="https",
    host="bi.example.com",
    username="<USERNAME>",
    password="<PASSWORD>",
)
api = dc.ApiV2(connection)
elements = api.get_dimension_elements("dim_Status", None)

# ... работаем с elements ...ViQubeПолучение показателей из группы показателейimport visiology_py as vi
import visiology_py.viqube as vq

connection = vi.Connection(...)
api = vq.ApiV3(connection)

# Пример запроса, ГП вымышленная, для наглядности использованы русифицированные имена вместо транслита
result = api.post_metadata_rawdata_query(
    {
        "database": "1",
        "mgid": "Цены",

        "columns": [
            { "mid": "Цена без НДС" },
            { "mid": "Цена с НДС" },

            { "attrid": "Имя продукта", "dlid": "Продукты" },
            { "attrid": "Имя магазина", "dlid": "Магазины" },
        ],
    },
)

# ... работаем с result ...Автоматический выпуск токенаПри использовании методов API, требующих аутентификации (передачи токена), его можно не указывать.В таком случае токен будет выпущен (emit) автоматически и он же продолжит использоваться до тех пор, пока будет оставаться действительным. Токен будет выпускаться только по необходимости (не каждый запрос).Декорирование APIДля задействования дополнительных возможностей, повышающих удобство использования API, существуют декораторы, оборачивающие все методы API. Все определены в модулеvisiology_py.decorators.КешированиеБиблиотека может кешировать результаты тяжелых запросов, для любого нужного TTL (time to live), для этого существует декораторcached:from datetime import timedelta

import visiology_py.datacollection as dc
from visiology_py.decorators import decorate_api, cached


# Декорируем API декоратором `cached`
decorate_api(
    dc.ApiV2,
    cached(timedelta(minutes=5)),
)


# ... работаем с dc.ApiV2 ...Повтор запросаБиблиотека может повторить запрос несколько раз, в случае если предыдущее выполнение завершилось неудачей, для этого существует декораторretried:Запросы выполняются с задержкой, которая определяется функциейtimeout_function, передаваемой декораторуПо-умолчанию используется эксоненциальная функция, которая делает задержки равными 0.1с, 0.2с, 0.4с, 0.8с и т.д., до максимального значения в 300с (5 минут).Это позволяет использовать большие значенияmax_tries, без риска перегрузить API.from datetime import timedelta

import visiology_py.viqube as vq
from visiology_py.decorators import decorate_api, retried


# Декорируем API декоратором `retried`
decorate_api(
    vq.ApiV3,
    retried(max_tries=5),
)


# ... работаем с vq.ApiV3 ...Внесение изменений в библиотекуПодготовка к разработкеСоздание venv:$ python3 -m venv venvУстановка зависимостей:$ pip3 install -r requirements.txtПроверка$ make test— тесты (pytest)$ make lint— линтинг (pycodestyle)$ make typecheck— проверка типов (mypy)$ make coverage— проверка покрытия тестами (pytest-cov)$ make quality— проверка различных метрик качества кода (radon)$ make build— сборка пакета для публикации в PyPi$ make— всё вышеперечисленноеОбщая информацияПо-возможности, пишите тесты и тайп-хинты, проверяйте код перед тем как коммитить, коммитьте в develop/feature-ветки и делайте merge-реквесты в master.Если нужно использовать внесённые изменения, через pip можно поставить пакет из локальной директории и продолжать редактирование кода:# pip install -e .(от рута)