semvec/pypi-packages huggingface dataset:
gravity-controller-operator 2.2.5
SDK предоставляющий универсальный интерфейс для работы со многими промышленными контроллерами ввода-вывода (количество расширяемо)
Requires Python: >=3.7

# Gravity Controller Operator

Модуль для унифицированной работы с промышленными контроллерами (реле, дискретные входы и т.д.). Позволяет взаимодействовать с различными устройствами через единый интерфейс.

---

## 🚀 Поддерживаемые контроллеры

- **EmulatorController** — заглушка для тестов
- **ARMK210Controller** — Modbus TCP
- **WBMR6LV** — Modbus RTU
- **NetPing2Controller** — HTTP API
- **Sigur** — доступ через TCP (СКУД)
- **MoxaE1214** — REST API (vdn.dac.v1)

---

## 🧩 Архитектура

### 🧠 Интерфейсы:

- `DIInterface`: чтение дискретных входов
- `RelayInterface`: чтение/управление релейными выходами
- `ControllerInterface`: объединяет оба

Все интерфейсы наследуют `SoftStateMixin`, в котором реализовано хранение состояния точек (`state`, `changed`, `addr`).

### 🛠 Контроллер
Каждый контроллер реализует:
```python
self.interface = ControllerInterface(di_interface=..., relay_interface=...)
```

### 🧪 Обёртки:

- `ControllerOperator` — отвечает за автоматическое обновление, mutex-безопасность и удобный API
- `ControllerCreator` — фабрика создания контроллеров по имени модели (см. `controller_factory.py`)

---

## 🧪 Как использовать

```python
from gravity_controller_operator.controllers.moxa import MoxaE1214
from gravity_controller_operator.controller_operator import ControllerOperator

moxa = MoxaE1214("192.168.60.103")
operator = ControllerOperator(moxa)

print(operator.get_points())
operator.change_relay_state(0, 1)  # включить реле 0
```

---

## 🔬 Тестирование

Установка:
```bash
pip install pytest
```

Запуск:
```bash
pytest gravity_controller_operator/tests/
```

---

## 📦 Добавление нового контроллера

1. Реализуй `YourControllerDI` и `YourControllerRelay`, наследуя `DIInterface`, `RelayInterface`
2. Создай `YourController`, в котором:
```python
self.interface = ControllerInterface(di_interface=..., relay_interface=...)
```
3. Добавь контроллер в `AVAILABLE_CONTROLLERS` в `controller_factory.py`

---

## 📁 Структура

```
controllers_super.py          # Базовые интерфейсы
controllers/                  # Реализации контроллеров
controller_operator.py        # Обёртка ControllerOperator ✅
controller_factory.py         # AVAILABLE_CONTROLLERS + фабрика ✅
exceptions.py                 # Кастомные исключения ✅
tests/                        # Тесты
README.md
```

---

## 🤝 Контакты

- 📧 Email: ksmdrmvstchny@gmail.com
- 💬 Telegram: [@PunchyArchy](https://t.me/PunchyArchy)
- 📞 Phone: +7 996 294-75-95

Проект поддерживается Артуром (PunchyArchy, Qodex)
robotframework-auto-screenshot-listener 0.1.8
A Robot Framework listener that automatically takes screenshots before each keyword.
Requires Python: >=3.8

# Robot Screenshot Listener

Listener for Automation testing Screenshots with Robot framework-Selenium,Browser and Appium Libraries

## Installation
pip install robotframework-auto-screenshot-listener

## Project Structure

```
Robot Screenshot Listener
├── robotframework_auto_screenshot_listener
│   ├── __init__.py               # Entry point of the application
│   ├── ScreenshotListener.py      # Handles reading and filtering messages
├── requirements.txt           # Lists project dependencies
└── README.md                  # Project documentation
```

**Monitored Selenium Keywords**
   The listener captures screenshots for the following Selenium keywords:
   
   1. Click Element
   2. Input Text
   3. Press Keys
   4. Get Text
   5. Get Element Attribute
   6. Page Should Contain
   7. Page Should Not Contain
   8. Element Should Be Visible
   9. Element Should Not Be Visible
   10. Close Browser
   11. Click Button
   12. Click Link
   13. Click
   14. Fill Text

**How It Works**
   . Test Start: Creates a root directory and test-specific subdirectory
   . Keyword Execution: Before each monitored Selenium keyword, captures a screenshot
   . File Naming: Screenshots are named sequentially (selenium_0.png, selenium_1.png, etc.)
   . Test End: Resets the screenshot counter for the next test

**Technical Details**

Class Structure
   . API Version: Uses Robot Framework Listener API version 2
   . Key Methods:
      . start_test(): Initializes test-specific screenshot directory
      . start_keyword(): Captures screenshots before keyword execution
      . end_keyword(): Handles post-keyword cleanup

Dependencies
   . robot.libraries.BuiltIn: For accessing Robot Framework variables and keywords
   . robot.libraries.String: For string manipulation
   . os: For file system operations
   . shutil: For directory operations



## Usage

   robot --listener robotframework_auto_screenshot_listener.ScreenshotListener:ScreenshotDirectoryName <TestFilePath.robot>

## Contributing

Feel free to submit issues or pull requests if you have suggestions or improvements for the project.