High level wrappers for Visiology APIs: Smart Forms, ViQube and ViQube admin
Project description
visiology-py
Высокоуровневые обертки и вспомогательные функции для работы с API Visiology: ViQube, ViQube Admin и Smart Forms
Установка
$ pip install visiology-py
Использование
Smart Forms
Получение элементов измерений
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 .
(от рута)
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
File details
Details for the file visiology-py-0.10.3.tar.gz
.
File metadata
- Download URL: visiology-py-0.10.3.tar.gz
- Upload date:
- Size: 12.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.9.18
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 98726dc34f77cc125776bbbd0619f87febdbedc66f4438d0d707861f81d97d32 |
|
MD5 | afefaa27acc28ab4a7f28eaf021e54f3 |
|
BLAKE2b-256 | 854d4621a424a40857842f97b1e3779d03cb1860385d495d628ca36b402a9cf2 |