Metadata-Version: 2.4
Name: prs_connector_core
Version: 0.10.2
Summary: Базовый модуль для коннекторов платформы Пересвет
Author-email: ООО МПК <info@mp-co.ru>
License: Apache-2.0
Project-URL: Homepage, https://github.com/mp-co-ru/prs-connector-core
Project-URL: Repository, https://github.com/mp-co-ru/prs-connector-core
Project-URL: Documentation, https://mp-co-ru.github.io/prs-connector-core/
Classifier: Programming Language :: Python :: 3
Classifier: License :: OSI Approved :: Apache Software License
Classifier: Operating System :: OS Independent
Requires-Python: >=3.12
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: aiomqtt==2.3.2
Requires-Dist: jsonata-python==0.5.3
Requires-Dist: colorlog==6.9.0
Requires-Dist: python-json-logger==3.3.0
Requires-Dist: pydantic==2.11.3
Requires-Dist: pydantic_core==2.33.1
Requires-Dist: aiofiles==24.1.0
Requires-Dist: ciso8601==2.3.2
Requires-Dist: python-dateutil==2.9.0.post0
Dynamic: license-file

[![Лицензия Apache 2.0](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](https://opensource.org/licenses/Apache-2.0)
![Python 3.12+](https://img.shields.io/badge/Python-3.12%2B-green.svg)
[![Coverage Status](https://coveralls.io/repos/github/mp-co-ru/prs-connector-core/badge.svg?branch=dev)](https://coveralls.io/github/mp-co-ru/prs-connector-core?branch=dev)
[![PyPI](https://img.shields.io/pypi/v/prs-connector-core.svg)](https://www.pypi.org/project/prs-connector-core)

# prs-connector-core

Базовый модуль для создания коннекторов платформы [Пересвет](https://github.com/mp-co-ru/peresvet).

Коннектор - программа, которая может собирать данные с какого-либо источника и отправлять их в платформу. Также коннектор может отсеивать лишние данные и проводить обработку полученных данных с помощью языка [JSONata](https://jsonata.org/).

## Описание проекта

`prs-connector-core` — это Python-модуль, реализующий общую функциональность для коннекторов платформы Пересвет.
Модуль предоставляет базовые классы, на основе которых можно создавать коннекторы для конкретных источников данных (OPC, Modbus, базы данных и др.).

**Базовая функциональность и основные возможности:**

- Установление связи с платформой Пересвет по протоколу MQTT
- Получение от платформы конфигурации:
    - настройка связи с источником данных,
    - параметры логирования,
    - список тегов, по которым необходимо получать данные
- Поддержка защищённого канала связи с SSL/TLS
- Преобразование данных через JSONata
- Отсеивание лишних данных
- Локальное кэширование конфигурации при потере связи с платформой
- Буферизация данных при потере связи с платформой
- Ротация логов

## Работа с проектом

> [!WARNING]
> Работа тестировалась на операционной системе Ubuntu.

### Требования
- Python 3.12 или новее
- pip 21.3+
- pipenv
- pyenv

### Работа над исходным кодом

Клонируйте репозиторий и выполните команды в консоли:
```bash
git clone git@github.com:mp-co-ru/prs-connector-core.git
cd prs-connector-core
pipenv install
```

#### Запуск тестов
```bash
$ pytest
```

#### Сборка пакета
```bash
$ python -m build
```

### Версионирование

Версия пакета **не хранится в коде вручную**, а вычисляется при сборке из **имени git-тега** с помощью [setuptools-scm](https://github.com/pypa/setuptools_scm).

- **В репозитории** создаются теги вида `v0.9.0`, `v1.0.0` и т.п. При сборке (`python -m build`) setuptools-scm по текущему коммиту и тегам определяет версию и генерирует файл `prs_connector_core/_version.py` (он в `.gitignore` и не коммитится).
- **В коде** версия доступна как `prs_connector_core.__version__`: она берётся из сгенерированного `_version.py`, при его отсутствии — из метаданных установленного пакета, иначе используется `"0.0.0.dev0"` (например, при разработке без тега).
- **Релизы**: при публикации Release в GitHub с тегом (например `v0.9.0`) workflow собирает пакет с этой версией и публикует его в PyPI.
