semvec/pypi-packages huggingface dataset:
project-toolbox-launcher 0.2.0
A launcher for project-toolbox
Requires Python: >=3.11

# project-toolbox-launcher
A launcher command for project-toolbox.

## Getting started

Install the launcher globally:
```shell
uv tool install project-toolbox-launcher
```

Enable completion (bash) by adding the following to the end of your `~/.bashrc`:
```shell
eval "$(_T_COMPLETE=bash_source t)"
```
Instructions for completion with other shells [can be found here](https://click.palletsprojects.com/en/stable/shell-completion/#enabling-completion).


## Why ?
[project-toolbox](https://gitlab.com/fsmai/project-toolbox) is designed to be installed in your project dev environment and to be run like:
```shell
uv run <command>
```
This works well but it has 2 problems
- a lot of repetitive typing
- no completion available throught `uv run`

The launcher fixes that by providing a single command, `t`, at global level:
```shell
t <command>
```
Completion works for `<command>` and also for the parameters of the commands.
femtologger 0.1.1
Minimal async logger with Telegram transport
Requires Python: >=3.10
Keywords: async, logging, telegram

# FemtoLogger (Python)

Minimal async logger with Telegram transport for Python.

## Install

```bash
pip install femtologger
```

## Required env vars

```
TELEGRAM_BOT_TOKEN=<bot token from @BotFather>
TELEGRAM_CHAT_ID=<chat id from @userinfobot>
```

## Usage

```python
import asyncio
from femtologger import FemtoLogger, TelegramTransport

logger = FemtoLogger(
    transports=[
        TelegramTransport(
            token="your-bot-token",
            chat_id="your-chat-id",
        ),
    ],
)

async def main():
    await logger.info("User signed up", {"userId": 42})
    await logger.warn("Rate limit approaching", {"current": 95, "max": 100})
    await logger.error("Payment failed", {"orderId": "abc", "reason": "declined"})

asyncio.run(main())
```

## API

### FemtoLogger

```python
FemtoLogger(*, transports: list[Transport], level: LogLevel = "info")
```

| Parameter | Type | Default | Description |
|---|---|---|---|
| `transports` | `list[Transport]` | required | List of transport instances |
| `level` | `"info" \| "warn" \| "error"` | `"info"` | Minimum log level |

Methods: `logger.info(message, metadata?)`, `logger.warn(message, metadata?)`, `logger.error(message, metadata?)`. All are async and return `None`.

### TelegramTransport

```python
TelegramTransport(*, token: str, chat_id: str | int, parse_mode: str = "HTML", disable_web_page_preview: bool = True)
```

| Parameter | Type | Default |
|---|---|---|
| `token` | `str` | required |
| `chat_id` | `str \| int` | required |
| `parse_mode` | `str` | `"HTML"` |
| `disable_web_page_preview` | `bool` | `True` |

## Custom transport

Implement the `Transport` protocol:

```python
from femtologger import Transport, LogEntry

class MyTransport:
    async def send(self, entry: LogEntry) -> None:
        # entry.level: "info" | "warn" | "error"
        # entry.message: str
        # entry.metadata: dict[str, object] | None
        # entry.timestamp: datetime
        # IMPORTANT: catch errors internally, never raise
        pass
```

## Key behaviors

- Logger never raises at runtime — transport errors are caught and logged to stderr
- Multiple transports are dispatched in parallel via `asyncio.gather(..., return_exceptions=True)`
- Single runtime dependency (`httpx`), requires Python >= 3.10

## License

MIT
pyrlprob 2.2.19
Train Gym-derived environments in Python/C++ through Ray RLlib
Requires Python: <3.10

<p align="center">
  <img align="center" src="https://github.com/LorenzoFederici/pyrlprob/blob/main/logo.png?raw=true" width="500" />
</p>

<div align="center">

![GitHub Repo stars](https://img.shields.io/github/stars/LorenzoFederici/pyrlprob?style=social)
![GitHub last commit](https://img.shields.io/github/last-commit/LorenzoFederici/pyrlprob)
![GitHub Release Date](https://img.shields.io/github/release-date/LorenzoFederici/pyrlprob)
![GitHub release (latest by date)](https://img.shields.io/github/v/release/LorenzoFederici/pyrlprob)
![PyPI - Python Version](https://img.shields.io/pypi/pyversions/pyrlprob)

</div>

PyRLprob is an open-source python library for training, evaluation, and postprocessing of [Gym](https://gym.openai.com/)-based environments, written in Python, through [Ray-RLlib](https://docs.ray.io/en/master/rllib.html) reinforcement learning library.

## Installation

Use the package manager [pip](https://pip.pypa.io/en/stable/) to install the latest stable release of pyRLprob, with all its dependencies:

```bash
pip install pyrlprob
```

To test if the package is installed correctly, run the following tests:


```python
from pyrlprob.tests import *

test_train_eval_py()
```

If the code exits without errors, a folder named `results/` with the test results will be created in your current directory.

## User Guide
[Latest user guide](https://drive.google.com/file/d/1bNs2g50cxtmAGhhB1_Kf3hX8pdkbCplZ/view?usp=share_link).

## Credits
pyRLprob has been created by [Lorenzo Federici](https://github.com/LorenzoFederici) in 2021.
For any problem, clarification or suggestion, you can contact the author at [lorenzof@arizona.edu](mailto:lorenzof@arizona.edu).

## License
The package is under the [MIT](https://choosealicense.com/licenses/mit/) license.