Metadata-Version: 2.4
Name: polyapi
Version: 5.9.23
Summary: Wrapper for Polymatica API
Home-page: https://polymatica.ru/
Author: Polymatica Rus LLC
Author-email: polymatica_support@polymatica.ru
License: MIT
Keywords: polymatica
Classifier: Development Status :: 5 - Production/Stable
Classifier: Intended Audience :: End Users/Desktop
Classifier: Operating System :: OS Independent
Classifier: License :: OSI Approved :: MIT License
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.6
Classifier: Programming Language :: Python :: 3.7
Classifier: Programming Language :: Python :: 3.8
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Programming Language :: Python :: 3.14
Requires-Python: >=3.6.1,<3.15
Description-Content-Type: text/markdown
License-File: LICENSE.txt
Requires-Dist: setuptools
Requires-Dist: numpy==1.19.5; python_version < "3.9"
Requires-Dist: numpy>1.21.1; python_version >= "3.9"
Requires-Dist: pandas<=1.2.5,>=1.1.5; python_version < "3.9"
Requires-Dist: pandas>2.0.0; python_version >= "3.9"
Requires-Dist: requests>=2.27.1
Requires-Dist: pydantic<2,>=1.9.2; python_version < "3.8"
Requires-Dist: pydantic<3,>=2.5.3; python_version >= "3.8"
Requires-Dist: packaging
Dynamic: author
Dynamic: author-email
Dynamic: classifier
Dynamic: description
Dynamic: description-content-type
Dynamic: home-page
Dynamic: keywords
Dynamic: license
Dynamic: license-file
Dynamic: requires-dist
Dynamic: requires-python
Dynamic: summary


# Основные сведения
Библиотека предназначена для работы с Polymatica API.

## Офлайн-установка

Для офлайн-установки используется единый архив бинарных зависимостей для
CPython 3.6-3.14 на Linux x86_64:

`https://repo.polymatica.ru/analytics/releases/python-deps/polyapi-wheels.tar.gz`

Контрольная сумма архива публикуется рядом:

`https://repo.polymatica.ru/analytics/releases/python-deps/polyapi-wheels.tar.gz.sha256`

Архив необходимо перенести на сервер, проверить и распаковать перед установкой
пакета `polymatica-analytics-api-python-lib`. Встроенный установщик сам находит
поддерживаемый CPython, выбирает соответствующий constraints-файл и использует
только локальные wheel-файлы:

```bash
install -d -m 0755 /opt/polymatica
STAGE=$(mktemp -d /opt/polymatica/.python-deps.XXXXXX)
trap 'rm -rf "$STAGE"' EXIT

sha256sum -c polyapi-wheels.tar.gz.sha256
tar -xzf polyapi-wheels.tar.gz -C "$STAGE"
test -x "$STAGE/python-deps/install.sh"
"$STAGE/python-deps/install.sh"

rm -rf /opt/polymatica/python-deps.previous
if [ -e /opt/polymatica/python-deps ] || [ -L /opt/polymatica/python-deps ]; then
  mv /opt/polymatica/python-deps /opt/polymatica/python-deps.previous
fi
mv "$STAGE/python-deps" /opt/polymatica/python-deps
rmdir "$STAGE"
trap - EXIT
```

Если поддерживаемый Python установлен под отдельным именем, его можно указать
перед выполнением основной последовательности без ручного выбора папки с
зависимостями, например для Astra Linux CE 2.12:

```bash
export POLYAPI_PYTHON_BIN=python3.7
```

На RED OS 7 используется системный Python 3.8. Offline-копия wheel PolyAPI
содержит точные зависимости с условиями для каждой поддерживаемой версии
Python, поэтому стандартная команда приёмки работает без отдельного
constraints-файла:

```bash
python3 -m pip install --no-index \
  --find-links=/opt/polymatica/python-deps polyapi
```

Встроенный `install.sh` остаётся рекомендуемым способом: он дополнительно
проверяет `SHA256SUMS`, выбирает совместимую версию pip и учитывает защиту
системного Python (PEP 668) в Debian 12 и Ubuntu 24.04. Для RED OS 7 его можно
запустить так:

```bash
POLYAPI_PYTHON_BIN=python3 /opt/polymatica/python-deps/install.sh
```

Подробная инструкция `INSTALL.txt` включается непосредственно в offline-архив.

Файл constraints и offline-метаданные PolyAPI фиксируют одинаковые точные
версии зависимостей для обнаруженной версии Python, а pip выбирает
соответствующие ей wheels по ABI и платформе. Выбирать отдельную папку вручную
не требуется. Обычная сборка DEB/RPM не изменена и содержит только исходный
wheel PolyAPI, поэтому в закрытом контуре сначала выполняется
установка из архива зависимостей, затем устанавливается системный пакет. Для
CPython 3.14 необходима glibc 2.28
или новее; для CPython 3.6-3.13 используются wheels, совместимые с manylinux2014
(glibc 2.17 или новее).

Перед установкой на сервере должны присутствовать поддерживаемый CPython с
модулем pip и утилита `sha256sum`; установка выполняется с правами, достаточными
для изменения системного Python. Совместимая установленная версия pip
сохраняется. Если pip слишком старый или не поддерживает выбранную версию
Python, установщик заменяет его проверенной версией только из локального архива.

# Работа с библиотекой
Основным модулем бизнес-логики является файл business_scenarios.py, 
импортировать который можно с помощью команды ``from polymatica import business_scenarios as sc``.

Модуль предоставляет два класса для работы с Полиматикой - ``BusinessLogic`` и ``GetDataChunk``. 
Методы этих классов можно посмотреть при помощи стандартной функции ``dir()``.

Аргументы функций и прочую docstring-документацию модуля и функций можно посмотреть 
при помощи стандартной функции ``help()``.

### Инициализация нового клиентского подключения: 
``session = sc.BusinessLogic(login="your_login", password="your_password", url="polymatica_server_url", **args)``

### Пример создания слоя и воспроизведения сценария на этом слое с использованием PolyAPI

Создадим слой:
``session.execute_manager_command(command_name="user_layer", state="create_layer")``

Запросим список сценариев:
``session.execute_manager_command(command_name="scripts", state="get_script_descriptions_list")``

Загрузим сценарий на слой, используя полученные на предыдущих шагах идентификаторы слоя и сценария:
``session.execute_manager_command(command_name="scripts", state="load_on_layer", runtime_id="d46b7075", script_id="40fc65db", on_load_action=0)``

Воспроизведем сценарий:
``session.execute_manager_command(command_name="scripts", state="play_to_position", runtime_id="d46b7075", script_id="40fc65db", play_to_position=23, clear_workspace=True)``

Получим статус воспроизведения сценария:
``session.execute_manager_command(command_name="scripts", state="get_script_status", runtime_id="d46b7075")``

Получили ответ, из которого видим, что сценарий воспроизведен успешно:
``{'state': 1, 'queries': [{'uuid': '872bdbde-20b9f734-2a5a5ad5-9b08e670', 'command': {'plm_type_code': 227, 'state': 6, 'script_status': {'id': '40fc65db', 'action_name': '', 'status': 3, 'current_step': 24, 'steps_count': 24, 'errors': []}}}]}``

Получим информацию о слое:
``session.execute_manager_command(command_name="user_layer", state="get_layer", layer_id="d46b7075")``
