LookWithJupyter
English
Interactive module for viewing polars or pandas tables using Jupyter widgets.
A convenient solution for working with large DataFrames directly in Jupyter Notebook/Lab with interactive controls for data navigation and filtering.
Features
- ✨ Support for pandas and polars DataFrames
- 📊 Interactive Jupyter widgets
- 🎛️ Display range control for rows
- 🏷️ Column selection
- 🧪 Full test coverage
- 📦 Ready to install as a module
- 🔧 Simple and intuitive API
Installation
Requirements
- Python >= 3.11
- Jupyter Notebook or Jupyter Lab
- pandas and/or polars
Via GitHub Releases (recommended)
Download the latest .whl file from Releases and install:
pip install look-with-jupyter-0.1.0-py3-none-any.whl
From sources (development mode)
git clone https://github.com/yourusername/look-with-jupyter.git
cd look-with-jupyter
pip install -e ".[dev]"
From PyPI (when published)
pip install look-with-jupyter
Quick Start
from UtilForWhatching import DataShow
import pandas as pd
# Create a DataFrame
df = pd.DataFrame({
'name': ['Alice', 'Bob', 'Charlie', 'David', 'Eve'],
'age': [25, 30, 35, 28, 32],
'salary': [50000, 60000, 75000, 55000, 65000]
})
# Display interactive widget in one line!
DataShow().show_tablet(df)
After execution you will get an interactive interface with:
- Slider for scrolling data
- Display range control
- Column visibility selection
Usage
Example 1: DataShow - High-level API (recommended)
The simplest way to use for quick data viewing:
from UtilForWhatching import DataShow
import pandas as pd
# Create a DataFrame
df = pd.DataFrame({
'name': ['Alice', 'Bob', 'Charlie'],
'age': [25, 30, 35],
'salary': [50000, 60000, 75000]
})
# Display interactive widget
show = DataShow()
show.show_tablet(df) # Pandas is used by default
Parameters for show_tablet():
data_set: DataFrame to displayid_start(int, default=0): Starting indexline_range(tuple, default=(0, 10)): Number of rows per pagelib_work(str, default="pandas"): "pandas" or "polars"
Русский
Интерактивный модуль для просмотра таблиц polars или pandas с помощью виджетов Jupyter.
Удобное решение для работы с большими DataFrame'ами прямо в Jupyter Notebook/Lab с интерактивными элементами управления для навигации и фильтрации данных.
Особенности
- ✨ Поддержка pandas и polars DataFrames
- 📊 Интерактивные Jupyter виджеты
- 🎛️ Управление диапазоном выводимых строк
- 🏷️ Выбор отображаемых колонок
- 🧪 Полное покрытие тестами
- 📦 Готов к установке как модуль
- 🔧 Простой и интуитивный API
Установка
Требования
- Python >= 3.11
- Jupyter Notebook или Jupyter Lab
- pandas и/или polars
Через GitHub Releases (рекомендуется)
Скачайте последнюю версию .whl файла из Releases и установите:
pip install look-with-jupyter-0.1.0-py3-none-any.whl
Из исходников (в режиме разработки)
git clone https://github.com/yourusername/look-with-jupyter.git
cd look-with-jupyter
pip install -e ".[dev]"
Из PyPI (когда будет опубликовано)
pip install look-with-jupyter
Быстрый старт
from UtilForWhatching import DataShow
import pandas as pd
# Создаем DataFrame
df = pd.DataFrame({
'name': ['Alice', 'Bob', 'Charlie', 'David', 'Eve'],
'age': [25, 30, 35, 28, 32],
'salary': [50000, 60000, 75000, 55000, 65000]
})
# Отображаем интерактивный виджет в одной строке!
DataShow().show_tablet(df)
После выполнения вы получите интерактивный интерфейс с:
- Слайдером для прокрутки данных
- Контролем диапазона отображаемых строк
- Выбором видимых колонок
Использование
Пример 1: DataShow - Высокоуровневый API (рекомендуется)
Самый простой способ использования для быстрого просмотра данных:
from UtilForWhatching import DataShow
import pandas as pd
# Создаем DataFrame
df = pd.DataFrame({
'name': ['Alice', 'Bob', 'Charlie'],
'age': [25, 30, 35],
'salary': [50000, 60000, 75000]
})
# Отображаем интерактивный виджет
show = DataShow()
show.show_tablet(df) # Используется по умолчанию pandas
Параметры show_tablet():
data_set: DataFrame для отображенияid_start(int, default=0): Начальный индексline_range(tuple, default=(0, 10)): Кол-во строк на страницеlib_work(str, default="pandas"): "pandas" или "polars"
Пример 2: DataOut - Низкоуровневый API
Для более гибкого управления данными и программной работы:
from UtilForWhatching import DataOut
import polars as pl
# Создаем DataFrame с Polars
df = pl.DataFrame({
'A': [1, 2, 3, 4, 5],
'B': [10, 20, 30, 40, 50],
'C': [100, 200, 300, 400, 500]
})
# Создаем объект для управления срезом
data_out = DataOut(df, id_start=0, line_range=(0, 10))
# Получаем срез данных
slice_data = data_out._get_data_slice()
print(slice_data)
# Обновляем диапазон просмотра
data_out.on_range_change((0, 5)) # Теперь показываем 5 строк
API Справочник
Класс DataOut
Отвечает за управление срезом DataFrame и его обновление. Создает визуальное представление данных с возможностью интерактивного управления.
Параметры конструктора:
| Параметр | Тип | Описание | По умолчанию |
|---|---|---|---|
data_set |
pd.DataFrame | pl.DataFrame | Просматриваемый DataFrame | Обязателен |
id_start |
int | Начальный индекс для смещения | 0 |
line_range |
tuple[int, int] | Диапазон строк для отображения (от, до) | (0, 10) |
Методы:
| Метод | Описание | Возвращает |
|---|---|---|
_get_data_slice() |
Получить срез данных согласно текущим параметрам | pd.DataFrame | pl.DataFrame |
on_range_change(data) |
Обработчик изменения диапазона строк | None |
on_value_change(data) |
Обработчик изменения начального индекса | None |
on_change_tag(data) |
Обработчик изменения выбранных колонок | None |
Примеры использования методов:
# Изменение диапазона отображаемых строк
data_out.on_range_change((0, 20))
# Переход на другой индекс
data_out.on_value_change(100)
# Выбор определенных колонок
data_out.on_change_tag({'value': ['name', 'salary']})
Класс DataShow
Создает полный интерактивный интерфейс для отображения DataFrame в Jupyter с виджетами управления.
Методы:
| Метод | Описание |
|---|---|
show_tablet(data_set, id_start=0, line_range=(0, 10), lib_work="pandas") |
Отобразить DataFrame с интерактивными виджетами |
Создаваемые виджеты:
- IntSlider: Слайдер для выбора начального индекса (прокрутка)
- IntRangeSlider: Range slider для выбора диапазона строк (от, до)
- TagsInput: Тегированный ввод для выбора колонок для отображения
Тестирование
Проект полностью покрыт тестами для обеспечения надежности работы.
Запуск всех тестов
pytest
или с использованием uv:
uv run pytest -v
Запуск тестов с отчетом о покрытии
pytest --cov=UtilForWhatching --cov-report=html
Отчет будет доступен в htmlcov/index.html
Запуск конкретного теста
pytest tests/test_dataout.py::TestDataOutInit::test_init_pandas_df -v
Тестовые наборы
- test_dataout.py: Тесты класса
DataOut(инициализация, получение срезов, обработчики) - test_datashow.py: Тесты класса
DataShow(интеграция с виджетами)
Смотрите TESTING.md для более подробной информации о тестировании.
Сборка и публикация
Собрать wheel (бинарный пакет)
uv build --target wheel
Собрать исходный код (sdist)
uv build --target sdist
Собрать оба варианта
uv build
Результаты сборки будут в папке dist/
Публикация на PyPI
# Требуется python-twine или использование GitHub Actions
twine upload dist/*
Развитие проекта
Требования для разработки
- Python >= 3.11
- uv (менеджер пакетов) - установка
- pytest (тестирование)
- black (форматирование)
- ruff (линтинг)
- mypy (проверка типов)
- ipywidgets (для интерактивных виджетов)
Установка dev-зависимостей
uv sync --all-groups
Форматирование кода
black .
Проверка кода (линтинг)
ruff check .
Проверка типов
mypy UtilForWhatching
Полная проверка перед коммитом
# Запустить все проверки
black .
ruff check --fix .
mypy UtilForWhatching
pytest -v
Структура проекта
look-with-jupyter/
├── UtilForWhatching/ # Основной пакет
│ ├── __init__.py # Экспорт публичного API
│ └── LookInJupyter.py # Основной код
├── tests/ # Модульные и интеграционные тесты
│ ├── __init__.py
│ ├── conftest.py # Конфигурация pytest и fixtures
│ ├── test_dataout.py # Тесты класса DataOut
│ └── test_datashow.py # Тесты класса DataShow
├── .github/workflows/ # GitHub Actions CI/CD
├── Images/ # Примеры и скриншоты
├── pyproject.toml # Конфигурация проекта
├── TESTING.md # Руководство по тестированию
├── example.py # Примеры использования
└── README.md # Этот файл
Лицензия
Этот проект лицензирован под MIT License - см. файл LICENSE для деталей.
Контрибьютинг
Мы приветствуем контрибьюции! Пожалуйста, следуйте этим шагам:
-
Форкните репозиторий
-
Создайте ветку для вашей фичи:
git checkout -b feature/amazing-feature
-
Совершите ваши изменения с понятными commit messages:
git commit -m 'Add amazing feature: описание'
-
Отправьте ветку в репозиторий:
git push origin feature/amazing-feature
-
Откройте Pull Request с описанием ваших изменений
Перед отправкой PR убедитесь, что:
- ✅ Все тесты проходят:
pytest -v - ✅ Код отформатирован:
black . - ✅ Нет ошибок линтинга:
ruff check . - ✅ Типы проверены:
mypy UtilForWhatching - ✅ Добавлены тесты для новых функций
- ✅ Обновлена документация если необходимо
Автор
Создано как полезный инструмент для работы с данными в Jupyter окружении.
Metadata
Release files for look-with-jupyter 0.1.5
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| look_with_jupyter-0.1.5.tar.gz | 89.6 kB | Without provenance | Details for look_with_jupyter-0.1.5.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| look_with_jupyter-0.1.5-py3-none-any.whl | Python 3 | none | any | Details for look_with_jupyter-0.1.5-py3-none-any.whl |
Total release size: 98.2 kB
Release files / look_with_jupyter-0.1.5.tar.gz
| Download URL | look_with_jupyter-0.1.5.tar.gz |
|---|---|
| Size | 89.6 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
089b1b47e821bac25516a0efa4e64b8ee424dcee3a5fb33e2a8c6c257fa941c3
|
|
BLAKE2b-256 checksum How to use checksums |
873e114f460be824eea4086be94326123153d4e437ddeb39e63337c3ed12e648
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.13.7
|
Release files / look_with_jupyter-0.1.5-py3-none-any.whl
| Download URL | look_with_jupyter-0.1.5-py3-none-any.whl |
|---|---|
| Size | 8.7 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
70f3b6cb757096ed245f2472f72b0aa6bcb2a343edb2c8e6b65694d6fec30fad
|
|
BLAKE2b-256 checksum How to use checksums |
3763f9ad4d8af27a03b320ab6990d6e6ba4691189215ce738be999d2ccbf8d91
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.13.7
|
Security for look-with-jupyter 0.1.5
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.