semvec/pypi-packages huggingface dataset:
craftable 0.2.1
craftable - craft elegant tables using format strings
Requires Python: >=3.10
Keywords: craftable, f-string, formatting, grid, pretty, table, terminal

# craftable — craft elegant tables using format strings

Generate clean, flexible text tables in the terminal or in text files using a
familiar, Python-native formatting approach. craftable focuses on attractive and
predictable output, zero dependencies, a simple and elegant API, and fast
rendering without requiring a full TUI library.

- Small, zero-dependency API
- Works with plain Python data (lists/rows)
- Built-in adapters for dicts, dataclasses, numpy, pandas, SQL, and more
- Column definitions use Python's format mini-language
- Multiple built-in styles: no borders, box drawing, rounded, ASCII, Markdown
- Supports wrapping, truncation, alignment, and auto-fill columns
- Simple, but flexible and extensible to meet most any use case

## Quick example

```python
from craftable import get_table

data = [
    ["Alice", 147000, .035, "Engineer"],
    ["Bob", 88000, .0433, "Designer"],
]

print(get_table(
    data,
    header_row=["Name", "Salary", "Adj", "Title"],
    col_defs=["A","<$ (,)", ">.2%", "A"],
    table_width=50,
))
```

Output:

```
      Name     │   Salary  │  Adj  │    Title     
───────────────┼───────────┼───────┼──────────────
 Alice         │ $ 147,000 │ 3.50% │ Engineer     
 Bob           │ $  88,000 │ 4.33% │ Designer     
```

## Data Adapters

Convert Python data structures directly into tables with built-in adapters:

```python
from craftable import get_table
from craftable.adapters import from_dicts

# List of dictionaries (handles missing keys gracefully)
data = [
    {"name": "Alice", "age": 30, "city": "LA"},
    {"name": "Bob", "age": 25},  # missing 'city'
]

rows, headers = from_dicts(data)
print(get_table(rows, header_row=headers))
```

Adapters available for: dicts, dataclasses, numpy arrays, pandas/polars DataFrames,
SQL cursors, and more. See the [Adapters documentation](https://ptyork.github.io/craftable/adapters/)
for details.

## When to use craftable

Use craftable when you need reliable text tables in logs, CLIs, or scripts, and
want the control of Python format specs without heavy UI tooling. If you need
interactive widgets or color/styling, consider pairing with Rich — but for
static tables, craftable is intentionally simple and fast.

## Getting Started

Read the online documentation:

[https://ptyork.github.io/craftable](https://ptyork.github.io/craftable)

Available as `craftable` in PyPI with zero additional dependencies, so you can
install or add to your project using your favorite package manager.

### pip

```bash
pip install craftable
```

### poetry

```bash
poetry add craftable
```

### uv

```bash
uv add craftable
```

Or if using uv pip:
```bash
uv pip install craftable
```
mgimo 0.6.0
MGIMO datasets and Python utilities.
Requires Python: >=3.10

# Программные утилиты и данные МГИМО

![PyPI - Version](https://img.shields.io/pypi/v/mgimo)

## Установка

```console
pip install mgimo
```

После установки в командной строке станет доступна утилита `mgimo`,
а для использования в других программах - одноименная библиотека.

## Что умеет наша программа?

Целями разработки пакета является:

- демонстрация примеров программ, которые посильны начинающим программистам
  ("если в МГИМО смогли написать такой код, я тоже смогу"),
- автоматизация прикладных задач, с которыми сталкиваются наши студенты и коллеги –
  с помощью уже существующих или новых инструментов.

К текущей версии наш пакет:

- [x] переводит оценки из числа в буквенное обозначение
- [x] проводит тесты на знание столиц мира
- [ ] переводит текст с английского на русский
- [ ] выдает нужный набор данных по международке

## Утилита командной строки

Проверить запуск утилиты:

```console
mgimo --help
```

Запустить тест на знание столиц стран мира:

```console
mgimo quiz
```

Спросить столицы 10 стран:

```
mgimo quiz --countries=10
```

Знаете ли вы эти три столицы :

```
mgimo quiz --capitals=3
```

Пять вопросов про столицы и пять про страны:

```
mgimo quiz --countries=5 --capitals=5
```

## Библиотека

### Столицы стран-членов ООН

```python
from random import choice
from mgimo.dataset.data import country_to_capital

countries = list(country_to_capital.keys())
assert len(countries) == 193
country = choice(countries)
city = country_to_capital[country]
print(f"Выбрана страна: {country}, столица - {city}.")
```

## Changelog

`0.5.0` - добавлен интерфейс командной строки и тест по столицам мира.

## Отладка

### Полезные скрипты

```bash
npx prettier README.md --write
isort . --float-to-top
black .
ruff check .
pytest
```

### Утилита командной строки

Мы используем [пакетный менеджер `uv`][uv], во время разработки утилита командной строки
доступна через команду `uv run`.

[uv]: https://github.com/astral-sh/uv?tab=readme-ov-file#installation

```
uv run mgimo
```

Установка конкретной версии утилиты также возможна через pip.
Для этого необходимо собрать образ пакета в `uv`:

```bash
uv build
```

Затем установить образ через pip из директории dist, которая появится после предыдущего шага:

```bash
pip install dist/mgimo-0.4.0-py3-none-any.whl
```

Если вы хорошо понимаете, чем нам могут быть полезны `pipx` и `uvx` - откройте, пожалуйста, issue.
mapbox-earcut 2.0.0
Python bindings for the mapbox earcut C++ polygon triangulation library
Requires Python: >=3.9

# mapbox_earcut

[![PyPi version](https://badgen.net/pypi/v/mapbox-earcut/)](https://pypi.org/project/mapbox-earcut)

Python bindings for the C++ implementation of the Mapbox Earcut library, which
provides very fast and quite robust triangulation of 2D polygons.

Original code: [earcut.hpp](https://github.com/mapbox/earcut.hpp)

Original description:

> The library implements a modified ear slicing algorithm, optimized by
> [z-order curve](http://en.wikipedia.org/wiki/Z-order_curve) hashing and
> extended to handle holes, twisted polygons, degeneracies and self-intersections
> in a way that doesn't _guarantee_ correctness of triangulation, but attempts to
> always produce acceptable results for practical data like geographical shapes.

Provided functions (depending on dtype of vertex data):
```python
triangulate_float32
triangulate_float64
triangulate_int32
triangulate_int64
```

Example:
```python

import mapbox_earcut as earcut
import numpy as np

# A Nx2 array of vertices. Must be 2D.
verts = np.array([[0, 0], [1, 0], [1, 1]]).reshape(-1, 2)

# An array of end-indices for each ring.
# The first ring is the outer contour of the polygon.
# Subsequent ones are holes.
# This implies that the last index must always be equal to the size of verts!
rings = np.array([3])

result = earcut.triangulate_float32(verts, rings)

# Result is an np.ndarray with dtype np.uint32 and shape (3,)
# containing indices into the verts array.

print(verts[result])
# [[1 0]
#  [1 1]
#  [0 0]]
```