Metadata-Version: 2.4
Name: raclib
Version: 1.0.2
Summary: Библиотека на языке Python, которая позволяет взаимодействовать с сервером администрирования 1С через утилиту RAC, предоставляя соответствующие сущности.
Author-email: bqio <dmitry.mikhaltsov98@gmail.com>
License-Expression: MIT
Project-URL: Homepage, https://github.com/bqio/raclib
Project-URL: Repository, https://github.com/bqio/raclib
Requires-Python: >=3.12
Description-Content-Type: text/markdown
License-File: LICENSE
Dynamic: license-file

# raclib

Библиотека на языке Python, которая позволяет взаимодействовать с сервером администрирования 1С через утилиту RAC, предоставляя соответствующие сущности.

## Установка

```bash
pip install raclib
```

## Примеры

Получение списка кластеров.

```python
import raclib as rc

client = rc.Client("/opt/1cv8/x86_64/<version>/rac")
session = rc.Session(client)

print(rc.Cluster.list(session))
```

Получение списка информационных баз кластера.

```python
import raclib as rc

client = rc.Client("/opt/1cv8/x86_64/<version>/rac")
session = rc.Session(client)
cluster = rc.Cluster.list(session)[0]["cluster"]

print(rc.Infobase.Summary.list(session, cluster))
```

Создание информационной базы.

```python
import raclib as rc

client = rc.Client("/opt/1cv8/x86_64/<version>/rac")
session = rc.Session(client)
cluster = rc.Cluster.list(session)[0]["cluster"]

infobase = rc.Infobase.create(
    session, cluster, "Тестовая база", "PostgreSQL", "localhost", "TestIB", "ru_RU"
)

print(infobase)
```

Пример `async` реализации **[В разработке]**.

```python
from raclib.asynchronous.client import AsyncClient
from raclib.asynchronous.session import AsyncSession
from raclib.asynchronous.cmd.cluster import AsyncCluster

import os
import asyncio

client = AsyncClient(os.environ.get("RAC_PATH"))

session1 = AsyncSession(client, "server1")
session2 = AsyncSession(client, "server2")
session3 = AsyncSession(client, "server3")
session4 = AsyncSession(client, "server4")
session5 = AsyncSession(client, "server5")


async def main():
    tasks = (
        AsyncCluster.list(session1),
        AsyncCluster.list(session2),
        AsyncCluster.list(session3),
        AsyncCluster.list(session4),
        AsyncCluster.list(session5),
    )

    results = await asyncio.gather(*tasks)

    for result in results:
        print(result)


if __name__ == "__main__":
    asyncio.run(main()) # в 3 раза быстрее sync
```
