semvec/pypi-packages huggingface dataset:
claia-bob 0.0.1
CLAIA Agent - Bob
Requires Python: >=3.12

# CLAIA Bob Extension

A fun CLAIA extension that adds "Bob", a gruff, straightforward, no-nonsense assistant with a unique personality.

- Website: https://claia.dev
- License: Apache-2.0
- Python: 3.12+

## About Bob

Bob is a fun, quirky, and gruff agent. Have fun!

*NOTE: Bob will override the conversation's system prompt*

## Installation

### From Source

```bash
# Clone the repository
git clone https://gitlab.com/exofox/claia/claia-bob.git
cd claia-bob

# Select or create the environment where bob will be used
python -m venv .venv
. .venv/bin/activate  # On Windows: .venv\Scripts\activate

# Install dependencies
pip install -U pip
pip install -e .
```

### From PyPI

```bash
pip install claia-bob
```

## Usage

After installation, Bob will be automatically registered as an agent in CLAIA through the plugin system.

### Using Bob in the CLI

```bash
# Start CLAIA with Bob as the default agent
claia --default-agent bob

# Or switch to Bob in interactive mode
:agent bob


# Optionally, save Bob to settings as the defafult agent
claia --set default-agent bob

# Or in interactive mode
:set default-agent bob
```

### Using Bob in your own project

```python
from claia.registry import Registry
from claia.lib.data import Conversation
from claia.lib.enums.conversation import MessageRole
from claia.lib import Process
from claia.lib.enums.process import ProcessStatus
import time

# Initialize registry (Bob will be auto-discovered)
registry = Registry(anthropic_api_key="ANTHROPIC_API_KEY")
registry.start_workers(1)

# Create a conversation
conversation = Conversation()
user_message_id = conversation.add_message(MessageRole.USER, "Tell me about yourself")

# Create a process for Bob
process = Process(
    agent_type="bob",
    conversation=conversation,
    parameters={"model_id": "claude-sonnet-4"}
)

# Execute the process
registry.add_process(process)

# Wait for the process to complete
while process.status != ProcessStatus.COMPLETED and not process.status != ProcessStatus.FAILED:
    print("Waiting for Bob to respond...")
    time.sleep(1)

# Print the result
if process.status == ProcessStatus.COMPLETED:
    print(conversation.get_latest_message().content)
elif process.status == ProcessStatus.FAILED:
    print(f"Bob failed to respond: {process.error}")
else:
    print("Unknown process status")

# Clean up
registry.stop_workers()
```

## Related Projects

- [CLAIA's Website](https://claia.dev)
- [CLAIA](https://gitlab.com/exofox/claia/claia) - The main CLAIA framework
- [CLAIA Template](https://gitlab.com/exofox/claia/claia-template) - Template for creating CLAIA extensions

## License

This project is licensed under the Apache License 2.0 - see the LICENSE file for details.
py-morpher 1.0.1
Одна строка — любой формат данных
Requires Python: >=3.9

py-morpher


Одна строчка — любой формат данных

from morph import morph

df       = morph(data, to="pandas")     # → pandas.DataFrame
users    = morph(data, to=User)         # → List[User] (Pydantic)
dicts    = morph(users, to=dict)        # → list[dict] / dict

Больше никаких ручных циклов, model_dump(), DataFrame(data), if-ов и «а вдруг список, а вдруг словарь».
Одна функция — всё.


Установка

pip install py-morpher


10 секунд магии

from morph import morph
from pydantic import BaseModel

# Обычные данные (из API, JSON, БД…)
data = [
    {"name": "Аня", "age": 17, "city": "Москва"},
    {"name": "Дима", "age": 19, "city": "Питер"},
]

# 1. В таблицу
df = morph(data, to="pandas")
print(df)
   name  age   city
0   Аня   17  Москва
1   Дима   19   Питер

# 2. В умные объекты (с валидацией)
class User(BaseModel):
    name: str
    age: int
    city: str

users = morph(data, to=User)
print(users[0].name)  # Аня

# 3. Обратно в словари (для JSON/API)
clean_dicts = morph(users, to=dict)
 → [{'name': 'Аня', 'age': 17, 'city': 'Москва'}, ...]

# 4. Кривые данные? Сама поймает
bad = {"name": "Вася", "age": "age": "не число"}
try:
    morph(bad, to=User)
except Exception as e:
    print("Ошибка поймана →", e)


Поддерживаемые преобразования (пока)

Откуда → Куда,Работает?,Команда
list[dict] → DataFrame,Yes,"to=""pandas"" или to=""df"""
dict → DataFrame,Yes,"to=""pandas"""
list[dict] → List[Model],Yes,`to=MyModel
Model / List[Model] → dict,Yes,"to=dict или to=""json"""
DataFrame → list[dict],Yes,to=dict
любой примитив → dict,Yes,"to=dict (обернёт в {""data"": value})"


# Почему это круто

Ноль ручного маппинга
Автоматическая валидация через Pydantic
Минимум кода — максимум читаемости
Идеально для FastAPI, скриптов аналитики, парсеров, ботов


Автор: busyaaa_1
GitHub: https://github.com/busyaaa-1/py-morph/
PyPI: https://pypi.org/project/py-morpher/


Заливай, пользуйся, кайфуй.
Твои данные теперь слушаются с одного слова.

# ⭐ Если понравилось — звёздочка на GitHub будет самой приятной благодарностью