О проекте
Команда: TheGoldenDUO
Кейс HackAlem.ai: Логистика — Электрокомплект · ekt.kz
Стадия: Рабочий MVP
Задача кейса: Автоматический расчёт заказов поставщикам для пополнения склада, с утверждением менеджером
Суть
Прототип поддержки закупок: по истории продаж и остаткам прогнозирует спрос, исключает разовые крупные продажи, компенсирует stockout и формирует объяснимые рекомендации заказов с корректировкой и утверждением менеджером.
Как устроено
Загрузка CSV/XLSX/XLS (включая формат 1С) с нормализацией колонок; агрегация продаж по артикулам и месяцам, IQR-детектор исключает аномальные продажи, Holt–Winters (statsmodels ExponentialSmoothing) прогнозирует следующий период, добавляется недополученный спрос за stockout, вычитаются остаток и товары в пути, оценивается срочность и сезонный пик. FastAPI отдаёт рекомендации, корректировки и утверждение с группировкой по поставщикам; веб-интерфейс на vanilla JS с Chart.js, экспорт CSV/XLSX/PDF. Опционально OpenAI Responses API с web_search ищет рыночные тренды и до 3 альтернативных поставщиков в Казахстане.
Ключевые решения
- Holt-Winters exponential smoothing
- IQR outlier detection
- stockout demand compensation
- OpenAI web_search
Особенности
Собственный многолистовой тестовый датасет (продажи, остатки, товары в пути, поставщики), автоматически анализируемый при старте; в репозиторий закоммичена папка .test-deps с бинарными зависимостями (~800 файлов).
Стек
Python · FastAPI · Uvicorn · Pydantic · pandas · NumPy · statsmodels · openpyxl · HTML/CSS/JS · Tailwind CSS · Chart.js · SheetJS · jsPDF
Модели
gpt-5.6-terra (OpenAI Responses API)
Проект создан за 5 часов на финале хакатона HackAlem.ai (23 сентября 2026, Астана). Код — BAITC-Hacks/hack-08651f63-thegoldenduo.
README
README.mdHACKALEM AI — управление заказами поставщикам
HACKALEM AI — прототип системы поддержки закупок для менеджеров, которые формируют заказы поставщикам. Решение принимает историю продаж и складские данные, исключает нетипичные крупные продажи, прогнозирует спрос, учитывает периоды отсутствия товара и формирует объяснимые рекомендации по объёму заказа.
Проект помогает заменить ручной анализ таблиц единым сценарием: загрузить данные, выполнить расчёт, изучить рекомендации и причины, скорректировать план, сравнить поставщиков и выгрузить результат.
Что реализовано
- загрузка и проверка файлов CSV, XLSX и XLS;
- собственный многолистовой тестовый датасет команды, который автоматически анализируется при запуске;
- распознавание русских и английских названий колонок, включая формат выгрузки из 1С;
- предварительная сводка по загруженному файлу без возврата сырых клиентских данных;
- обнаружение крупных разовых продаж методом IQR и исключение их из регулярного спроса;
- агрегация истории продаж по месяцам;
- прогноз следующего периода методом экспоненциального сглаживания Holt–Winters;
- учёт тренда артикула и категории;
- компенсация скрытого спроса за периоды отсутствия товара на складе (
stockout); - расчёт рекомендуемого количества с учётом текущего остатка и товаров в пути;
- определение срочности заказа и ближайшего сезонного пика;
- REST API для загрузки, расчёта, просмотра, корректировки и утверждения заказов;
- веб-интерфейс с восемью разделами: загрузка, дашборд, детализация, аномалии, подбор поставщика, аналитика, утверждение и экспорт;
- фильтрация рекомендаций по складу, категории, поставщику и срочности;
- графики истории спроса, отметки периодов stockout, аналитика категорий и сезонный календарь;
- AI-анализ рыночных трендов по категориям с веб-поиском и ссылками на источники;
- AI-поиск до трёх альтернативных предложений поставщиков в Казахстане;
- экспорт текущего плана в CSV, XLSX и PDF;
- автоматические тесты расчёта, API-контракта и AI-сервиса.
Как работает решение
- Исходные данные передаются в
POST /uploadв виде CSV/XLSX/XLS-файла. Парсер приводит названия колонок к единому формату и проверяет обязательные поля. POST /calculateзапускает расчёт. Продажи агрегируются по артикулам и месяцам, крупные разовые операции исключаются IQR-детектором.- Модель прогнозирует спрос на следующий период. К прогнозу добавляется оценка недополученного спроса во время stockout, затем вычитаются остаток и товары в пути.
- Результат сохраняется в памяти процесса и доступен через
GET /orders; исключённые операции — черезGET /anomalies. - Веб-интерфейс загружает эти ответы и строит дашборд, детализацию артикула, аналитику по категориям и календарь закупок.
- При наличии ключа OpenAI пользователь может запросить рыночные тренды или альтернативных поставщиков. Ключ остаётся на сервере и не передаётся в браузер.
- План можно скорректировать, сгруппировать по поставщикам и экспортировать в нужный формат.
Технологии
Backend и расчёты
- Python;
- FastAPI и Uvicorn;
- Pydantic;
- pandas и NumPy;
- statsmodels (
ExponentialSmoothing/ Holt–Winters); - openpyxl для Excel-файлов;
- python-multipart для загрузки файлов;
- python-dotenv для переменных окружения.
Frontend
- HTML5, CSS и Vanilla JavaScript;
- Tailwind CSS через CDN;
- Chart.js через CDN;
- SheetJS для экспорта XLSX;
- jsPDF и jsPDF-AutoTable для экспорта PDF;
- встроенный шрифт Roboto с кириллицей для PDF.
AI и внешние API
- OpenAI Responses API;
- инструмент OpenAI
web_search; - модель по умолчанию —
gpt-5.6-terra; - модель можно заменить переменной окружения
OPENAI_MODEL.
Архитектура проекта
Браузер
├─ index.html + style.css + app.js
├─ GET /orders, GET /anomalies
└─ POST /ai/*
│
▼
FastAPI (main.py)
├─ parser.py — чтение и валидация CSV/Excel
├─ calculation.py — аномалии, прогноз, stockout и рекомендации
├─ ai_service.py — OpenAI Responses API и web_search
└─ StaticFiles — раздача фронтенда с корневого URL
Основные файлы:
| Файл | Назначение |
|---|---|
main.py | FastAPI-приложение, API-маршруты и раздача фронтенда |
parser.py | Чтение файлов, нормализация колонок и валидация |
calculation.py | Прогнозирование, IQR-детектор, stockout и рекомендации |
ai_service.py | Рыночные запросы к OpenAI и обработка ответов |
index.html | Разметка восьми разделов интерфейса |
app.js | Загрузка данных API, визуализация, локальные корректировки и экспорт |
style.css | Стили интерфейса |
data/test-dataset.xlsx | Собственный тестовый набор продаж, остатков, поставок и поставщиков |
tests/ | Тесты вычислений, API и AI-интеграции |
API
| Метод | Маршрут | Назначение |
|---|---|---|
POST | /upload | Загрузить и проверить исходный файл |
POST | /calculate | Выполнить расчёт; доступны фильтры warehouse и category |
GET | /orders | Получить текущие рекомендации и исключённые аномалии |
GET | /anomalies | Получить список исключённых операций |
POST | /orders/{sku}/adjust | Изменить рекомендуемое количество и сохранить причину |
POST | /orders/approve | Сформировать сгруппированный по поставщикам план для экспорта |
POST | /ai/market-trends | Получить AI-сводку трендов категории |
POST | /ai/market-alternatives | Найти альтернативных поставщиков |
Интерактивная документация API доступна по адресу http://127.0.0.1:8000/docs.
Формат входных данных
Обязательные колонки:
| Каноническое имя | Содержание |
|---|---|
sku | Артикул товара |
date | Дата продажи |
quantity | Проданное количество |
price | Цена |
client_id | Обезличенный идентификатор клиента |
warehouse | Склад |
stock | Остаток на складе |
Дополнительно поддерживаются in_transit, name, category, supplier и lead_time_days. Для отсутствующих необязательных полей расчёт использует значения по умолчанию. CSV читается в UTF-8 с BOM, а при ошибке декодирования — в CP1251.
Собственный тестовый датасет
В репозитории находится собственный тестовый набор команды data/test-dataset.xlsx. Он автоматически загружается и анализируется при запуске backend, поэтому дашборд сразу показывает результаты на этом наборе.
Датасет охватывает период с 1 октября 2024 года по 30 сентября 2026 года и содержит:
| Лист | Содержание | Строк |
|---|---|---|
Продажи | Продажи по артикулам, клиентам, датам и складам | 7 301 |
Остатки | Ежедневные складские остатки | 7 300 |
Товары в пути | Количество товара в поставках | 10 |
Поставщики | Поставщик и срок поставки для каждого артикула | 10 |
В наборе представлены 10 артикулов, 5 категорий, 3 склада, 4 поставщика и 71 обезличенный идентификатор клиента. Проверка файла не выявила пропусков или полных дубликатов строк. Парсер объединяет четыре листа в единую таблицу по артикулу, дате и складу перед запуском расчёта.
Контрольный запуск текущего алгоритма на этом файле сформировал 10 рекомендаций общим объёмом 693 единицы. IQR-детектор отметил 46 агрегированных операций как аномальные, для 6 артикулов определил сезонный пик, а для 1 артикула нашёл период stockout. Эти значения описывают текущую версию алгоритма и служат воспроизводимой базой для дальнейшей настройки модели.
Установка и запуск
Требования
- установленный Python и
pip; - доступ в интернет для установки Python-пакетов и загрузки frontend-библиотек с CDN;
- ключ OpenAI нужен только для AI-функций.
Точная версия Python в репозитории не зафиксирована.
Быстрый запуск в Windows
Из корня репозитория запустите:
start.bat
Скрипт установит зависимости, откроет браузер и запустит Uvicorn. При старте backend рассчитает рекомендации на собственном датасете. Приложение будет доступно по адресу:
http://127.0.0.1:8000
Ручной запуск
python -m venv .venv
Активация виртуального окружения в Windows PowerShell:
.\.venv\Scripts\Activate.ps1
Активация в Linux/macOS:
source .venv/bin/activate
Установка зависимостей и запуск:
python -m pip install -r requirements.txt
python -m uvicorn main:app --reload
Команду запуска необходимо выполнять из корня репозитория: от текущей директории зависит поиск статических файлов.
Настройка AI-функций
Создайте в корне файл .env:
OPENAI_API_KEY=ваш_ключ
OPENAI_MODEL=gpt-5.6-terra
OPENAI_MODEL необязателен. Без OPENAI_API_KEY основной расчёт и интерфейс работают, но AI-маршруты возвращают понятную ошибку 502.
Как проверить решение
- Запустите сервер через
start.batили Uvicorn. - Откройте
http://127.0.0.1:8000. Дополнительная загрузка файла не требуется: backend уже анализируетdata/test-dataset.xlsx. - В шапке должно появиться сообщение о загрузке 10 позиций.
- На дашборде проверьте реальные позиции датасета, например
AUTO-B16,BOIL-080иCABL-325. - Откройте детализацию артикула: интерфейс покажет его месячную историю, обоснование и найденные периоды stockout.
- На вкладке «Аномалии» найдите тестовую нетипичную продажу клиента
anon-anomaly-001, исключённую из регулярного спроса. - Откройте «Аналитика / Тренды» и проверьте графики для пяти категорий и сезонный календарь.
- На вкладке экспорта скачайте результат в CSV, XLSX или PDF.
Для повторной загрузки собственного датасета через API используйте Swagger UI (/docs) или выполните в Windows:
curl.exe -X POST "http://127.0.0.1:8000/upload" `
-F "mode=1c" `
-F "file=@data/test-dataset.xlsx;type=application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"
curl.exe -X POST "http://127.0.0.1:8000/calculate"
Для запуска автоматических тестов:
python -m unittest discover -s tests -p "test_*.py" -v
Тесты проверяют, что выброс не изменяет рекомендацию, stockout увеличивает потребность, API сохраняет контракт данных, AI-запросы используют веб-поиск и строгую JSON-схему, а собственный многолистовой датасет проходит полный расчёт.
Данные и интеграции
- Основной тестовый источник — собственный датасет команды
data/test-dataset.xlsx; он хранится в репозитории и рассчитывается при старте приложения. - Дополнительные источники расчётных данных — загружаемые пользователем CSV/XLSX/XLS-файлы.
- Код содержит набор алиасов колонок для русскоязычных выгрузок и упрощённого формата 1С, но прямого подключения к базе 1С нет.
- Для собственного датасета parser объединяет листы
Продажи,Остатки,Товары в путииПоставщикив канонический формат расчёта. - Новая загрузка через
/uploadи/calculateзаменяет текущий результат анализа в памяти сервера. - Расчётные данные, корректировки backend и утверждения backend хранятся только в памяти процесса.
- Ручные позиции, изменения и утверждения, сделанные через текущий интерфейс, сохраняются в
localStorageбраузера. - OpenAI Responses API используется для рыночных трендов и поиска альтернатив;
web_searchпредоставляет актуальные внешние источники. - Tailwind CSS, Chart.js, SheetJS, jsPDF и jsPDF-AutoTable загружаются из публичных CDN.
Ограничения текущей версии
- Данные не сохраняются в базе и теряются после перезапуска сервера.
- Состояние рассчитанных заказов является общим для процесса и не разделено по пользователям или сессиям.
- Автоматическая загрузка собственного XLSX увеличивает время запуска backend по сравнению с пустым приложением.
- В интерфейсе элементы загрузки файла и кнопка «Запустить расчёт» пока не подключены к
/uploadи/calculate; полный сценарий загрузки выполняется через Swagger или REST API. - Корректировки и утверждения, сделанные в интерфейсе, сохраняются локально в браузере и пока не вызывают реализованные backend-маршруты
/orders/{sku}/adjustи/orders/approve. - Утверждение заказа не отправляет его поставщику; API формирует только готовую к экспорту структуру.
- Кнопка возврата аномалии в расчёт не подключена к backend-операции.
- Переключатели периода
All / 1M / 5M / 1Yв аналитике пока не меняют диапазон графика. - Аналитика по категориям собирается на клиенте из истории
/orders; оценка риска использует эвристику на основе срочности, а не отдельную модель риска backend. - Для определения сезонного пика требуется не менее 24 месяцев истории и наличие всех 12 месяцев; иначе дата пика не формируется.
- AI-функции зависят от действующего ключа OpenAI, доступа аккаунта к выбранной модели, лимитов API и доступности веб-поиска.
- Frontend-зависимости загружаются с CDN, поэтому без интернета часть интерфейса и экспортов может быть недоступна.
- В
requirements.txtне закреплены версии пакетов, поэтому полностью воспроизводимая сборка пока не гарантирована. - Парсер принимает расширение
.xls, но отдельный движок для старого формата Excel в зависимостях явно не указан. - Многолистовая загрузка рассчитана на структуру собственного датасета с четырьмя именованными листами; произвольные многолистовые книги автоматически не объединяются.
- Аутентификация, разграничение прав, многопользовательская работа и production-конфигурация сервера не реализованы.
Развёрнутая версия
Публичная deployed-версия и конфигурация облачного развёртывания в репозитории не обнаружены. Проект запускается локально через start.bat или Uvicorn.
Репозиторий
Авторы коммитов
История коммитов
- 2026-09-23 17:58.KaseStuck
- 2026-09-23 17:45/KaseStuck
- 2026-09-23 17:23Промпт напарника №4panamera-ai
- 2026-09-23 17:22Глобальный updKaseStuck
- 2026-09-23 16:33Merge branch 'feature/ui-analytics'KaseStuck
- 2026-09-23 16:283 пушKaseStuck
- 2026-09-23 16:28Промпт напарника № 3panamera-ai
- 2026-09-23 15:53Промпт напарника №2panamera-ai
Все коммиты (12)
- 2026-09-23 15:39Реализация функцийKaseStuck
- 2026-09-23 15:13Промпт напарникаpanamera-ai
- 2026-09-23 14:26Первый промтKaseStuck
- 2026-09-23 13:55DocsKaseStuck
Структура репозитория (831 файлов)
.gitignore .test-deps/bin/f2py.exe .test-deps/bin/numpy-config.exe .test-deps/dateutil/__init__.py .test-deps/dateutil/_common.py .test-deps/dateutil/_version.py .test-deps/dateutil/easter.py .test-deps/dateutil/parser/__init__.py .test-deps/dateutil/parser/_parser.py .test-deps/dateutil/parser/isoparser.py .test-deps/dateutil/relativedelta.py .test-deps/dateutil/rrule.py .test-deps/dateutil/tz/__init__.py .test-deps/dateutil/tz/_common.py .test-deps/dateutil/tz/_factories.py .test-deps/dateutil/tz/tz.py .test-deps/dateutil/tz/win.py .test-deps/dateutil/tzwin.py .test-deps/dateutil/utils.py .test-deps/dateutil/zoneinfo/__init__.py .test-deps/dateutil/zoneinfo/dateutil-zoneinfo.tar.gz .test-deps/dateutil/zoneinfo/rebuild.py .test-deps/formulaic-1.2.2.dist-info/INSTALLER .test-deps/formulaic-1.2.2.dist-info/METADATA .test-deps/formulaic-1.2.2.dist-info/RECORD .test-deps/formulaic-1.2.2.dist-info/WHEEL .test-deps/formulaic-1.2.2.dist-info/licenses/LICENSE .test-deps/formulaic/__init__.py .test-deps/formulaic/_version.py .test-deps/formulaic/errors.py .test-deps/formulaic/formula.py .test-deps/formulaic/materializers/__init__.py .test-deps/formulaic/materializers/base.py .test-deps/formulaic/materializers/narwhals.py .test-deps/formulaic/materializers/pandas.py .test-deps/formulaic/model_matrix.py .test-deps/formulaic/model_spec.py .test-deps/formulaic/parser/__init__.py .test-deps/formulaic/parser/parser.py .test-deps/formulaic/parser/utils.py .test-deps/formulaic/sugar.py .test-deps/formulaic/transforms/__init__.py .test-deps/formulaic/transforms/basis_spline.py .test-deps/formulaic/transforms/contrasts.py .test-deps/formulaic/transforms/cubic_spline.py .test-deps/formulaic/transforms/hashed.py .test-deps/formulaic/transforms/identity.py .test-deps/formulaic/transforms/lag.py .test-deps/formulaic/transforms/patsy_compat.py .test-deps/formulaic/transforms/poly.py .test-deps/formulaic/transforms/scale.py .test-deps/formulaic/utils/__init__.py .test-deps/formulaic/utils/calculus.py .test-deps/formulaic/utils/cast.py .test-deps/formulaic/utils/code.py .test-deps/formulaic/utils/constraints.py .test-deps/formulaic/utils/context.py .test-deps/formulaic/utils/deprecations.py .test-deps/formulaic/utils/iterators.py .test-deps/formulaic/utils/layered_mapping.py .test-deps/formulaic/utils/null_handling.py .test-deps/formulaic/utils/sentinels.py .test-deps/formulaic/utils/sparse.py .test-deps/formulaic/utils/stateful_transforms.py .test-deps/formulaic/utils/structured.py .test-deps/formulaic/utils/variables.py .test-deps/interface_meta-2.0.1.dist-info/INSTALLER .test-deps/interface_meta-2.0.1.dist-info/METADATA .test-deps/interface_meta-2.0.1.dist-info/RECORD .test-deps/interface_meta-2.0.1.dist-info/WHEEL .test-deps/interface_meta-2.0.1.dist-info/licenses/LICENSE .test-deps/interface_meta/__init__.py .test-deps/interface_meta/_version.py .test-deps/interface_meta/decorators.py .test-deps/interface_meta/interface.py .test-deps/interface_meta/py.typed .test-deps/interface_meta/utils/__init__.py .test-deps/interface_meta/utils/conformance.py .test-deps/interface_meta/utils/docs.py .test-deps/interface_meta/utils/errors.py .test-deps/interface_meta/utils/inspection.py .test-deps/interface_meta/utils/reporting.py .test-deps/narwhals-2.26.0.dist-info/INSTALLER .test-deps/narwhals-2.26.0.dist-info/METADATA .test-deps/narwhals-2.26.0.dist-info/RECORD .test-deps/narwhals-2.26.0.dist-info/WHEEL .test-deps/narwhals-2.26.0.dist-info/licenses/LICENSE.md .test-deps/narwhals/__init__.py .test-deps/narwhals/_arrow/__init__.py .test-deps/narwhals/_arrow/dataframe.py .test-deps/narwhals/_arrow/expr.py .test-deps/narwhals/_arrow/group_by.py .test-deps/narwhals/_arrow/namespace.py .test-deps/narwhals/_arrow/selectors.py .test-deps/narwhals/_arrow/series.py .test-deps/narwhals/_arrow/series_cat.py .test-deps/narwhals/_arrow/series_dt.py .test-deps/narwhals/_arrow/series_list.py .test-deps/narwhals/_arrow/series_str.py .test-deps/narwhals/_arrow/series_struct.py .test-deps/narwhals/_arrow/typing.py .test-deps/narwhals/_arrow/utils.py .test-deps/narwhals/_compliant/__init__.py .test-deps/narwhals/_compliant/any_namespace.py .test-deps/narwhals/_compliant/column.py .test-deps/narwhals/_compliant/dataframe.py .test-deps/narwhals/_compliant/expr.py .test-deps/narwhals/_compliant/group_by.py .test-deps/narwhals/_compliant/namespace.py .test-deps/narwhals/_compliant/selectors.py .test-deps/narwhals/_compliant/series.py .test-deps/narwhals/_compliant/typing.py .test-deps/narwhals/_compliant/window.py .test-deps/narwhals/_constants.py .test-deps/narwhals/_dask/__init__.py .test-deps/narwhals/_dask/dataframe.py .test-deps/narwhals/_dask/expr.py .test-deps/narwhals/_dask/expr_dt.py .test-deps/narwhals/_dask/expr_str.py .test-deps/narwhals/_dask/group_by.py .test-deps/narwhals/_dask/namespace.py .test-deps/narwhals/_dask/selectors.py .test-deps/narwhals/_dask/utils.py .test-deps/narwhals/_duckdb/__init__.py .test-deps/narwhals/_duckdb/dataframe.py .test-deps/narwhals/_duckdb/expr.py .test-deps/narwhals/_duckdb/expr_dt.py .test-deps/narwhals/_duckdb/expr_list.py .test-deps/narwhals/_duckdb/expr_str.py .test-deps/narwhals/_duckdb/expr_struct.py .test-deps/narwhals/_duckdb/group_by.py .test-deps/narwhals/_duckdb/namespace.py .test-deps/narwhals/_duckdb/selectors.py .test-deps/narwhals/_duckdb/series.py .test-deps/narwhals/_duckdb/typing.py .test-deps/narwhals/_duckdb/utils.py .test-deps/narwhals/_duration.py .test-deps/narwhals/_enum.py .test-deps/narwhals/_exceptions.py .test-deps/narwhals/_expression_parsing.py .test-deps/narwhals/_ibis/__init__.py .test-deps/narwhals/_ibis/dataframe.py .test-deps/narwhals/_ibis/expr.py .test-deps/narwhals/_ibis/expr_dt.py .test-deps/narwhals/_ibis/expr_list.py .test-deps/narwhals/_ibis/expr_str.py .test-deps/narwhals/_ibis/expr_struct.py .test-deps/narwhals/_ibis/group_by.py .test-deps/narwhals/_ibis/namespace.py .test-deps/narwhals/_ibis/selectors.py .test-deps/narwhals/_ibis/series.py .test-deps/narwhals/_ibis/utils.py .test-deps/narwhals/_interchange/__init__.py .test-deps/narwhals/_interchange/dataframe.py .test-deps/narwhals/_interchange/series.py .test-deps/narwhals/_namespace.py .test-deps/narwhals/_native.py .test-deps/narwhals/_pandas_like/__init__.py .test-deps/narwhals/_pandas_like/dataframe.py .test-deps/narwhals/_pandas_like/expr.py .test-deps/narwhals/_pandas_like/group_by.py .test-deps/narwhals/_pandas_like/namespace.py .test-deps/narwhals/_pandas_like/selectors.py .test-deps/narwhals/_pandas_like/series.py .test-deps/narwhals/_pandas_like/series_cat.py .test-deps/narwhals/_pandas_like/series_dt.py .test-deps/narwhals/_pandas_like/series_list.py .test-deps/narwhals/_pandas_like/series_str.py .test-deps/narwhals/_pandas_like/series_struct.py .test-deps/narwhals/_pandas_like/typing.py .test-deps/narwhals/_pandas_like/utils.py .test-deps/narwhals/_polars/__init__.py .test-deps/narwhals/_polars/dataframe.py .test-deps/narwhals/_polars/expr.py .test-deps/narwhals/_polars/group_by.py .test-deps/narwhals/_polars/namespace.py .test-deps/narwhals/_polars/series.py .test-deps/narwhals/_polars/typing.py .test-deps/narwhals/_polars/utils.py .test-deps/narwhals/_spark_like/__init__.py .test-deps/narwhals/_spark_like/dataframe.py .test-deps/narwhals/_spark_like/expr.py .test-deps/narwhals/_spark_like/expr_dt.py .test-deps/narwhals/_spark_like/expr_list.py .test-deps/narwhals/_spark_like/expr_str.py .test-deps/narwhals/_spark_like/expr_struct.py .test-deps/narwhals/_spark_like/group_by.py .test-deps/narwhals/_spark_like/namespace.py .test-deps/narwhals/_spark_like/selectors.py .test-deps/narwhals/_spark_like/utils.py .test-deps/narwhals/_sql/__init__.py .test-deps/narwhals/_sql/dataframe.py .test-deps/narwhals/_sql/expr.py .test-deps/narwhals/_sql/expr_dt.py .test-deps/narwhals/_sql/expr_str.py .test-deps/narwhals/_sql/group_by.py .test-deps/narwhals/_sql/namespace.py .test-deps/narwhals/_sql/typing.py .test-deps/narwhals/_translate.py .test-deps/narwhals/_typing.py .test-deps/narwhals/_typing_compat.py .test-deps/narwhals/_utils.py .test-deps/narwhals/compliant.py .test-deps/narwhals/dataframe.py .test-deps/narwhals/dependencies.py .test-deps/narwhals/dtypes.py .test-deps/narwhals/exceptions.py .test-deps/narwhals/expr.py .test-deps/narwhals/expr_cat.py .test-deps/narwhals/expr_dt.py .test-deps/narwhals/expr_list.py .test-deps/narwhals/expr_name.py .test-deps/narwhals/expr_str.py .test-deps/narwhals/expr_struct.py .test-deps/narwhals/functions.py .test-deps/narwhals/group_by.py .test-deps/narwhals/plugins.py .test-deps/narwhals/py.typed .test-deps/narwhals/schema.py .test-deps/narwhals/selectors.py .test-deps/narwhals/series.py .test-deps/narwhals/series_cat.py .test-deps/narwhals/series_dt.py .test-deps/narwhals/series_list.py .test-deps/narwhals/series_str.py .test-deps/narwhals/series_struct.py .test-deps/narwhals/sql.py .test-deps/narwhals/stable/__init__.py .test-deps/narwhals/testing/__init__.py .test-deps/narwhals/this.py .test-deps/narwhals/translate.py .test-deps/narwhals/typing.py .test-deps/narwhals/utils.py .test-deps/numpy-2.5.3.dist-info/DELVEWHEEL .test-deps/numpy-2.5.3.dist-info/INSTALLER .test-deps/numpy-2.5.3.dist-info/METADATA .test-deps/numpy-2.5.3.dist-info/RECORD .test-deps/numpy-2.5.3.dist-info/WHEEL .test-deps/numpy-2.5.3.dist-info/entry_points.txt .test-deps/numpy-2.5.3.dist-info/licenses/LICENSE.txt .test-deps/numpy.libs/libscipy_openblas64_-ed4f167a5330424524f45258e7ca2c8d.dll .test-deps/numpy.libs/msvcp140-a4c2229bdc2a2a630acdc095b4d86008.dll .test-deps/numpy/__config__.py .test-deps/numpy/__config__.pyi .test-deps/numpy/__init__.cython-30.pxd .test-deps/numpy/__init__.pxd .test-deps/numpy/__init__.py .test-deps/numpy/__init__.pyi .test-deps/numpy/_array_api_info.py .test-deps/numpy/_array_api_info.pyi .test-deps/numpy/_configtool.py .test-deps/numpy/_configtool.pyi .test-deps/numpy/_core/__init__.py .test-deps/numpy/_core/__init__.pyi .test-deps/numpy/_core/_add_newdocs.py .test-deps/numpy/_core/_add_newdocs.pyi .test-deps/numpy/_core/_add_newdocs_scalars.py .test-deps/numpy/_core/_add_newdocs_scalars.pyi .test-deps/numpy/_core/_asarray.py .test-deps/numpy/_core/_asarray.pyi .test-deps/numpy/_core/_dtype.py .test-deps/numpy/_core/_dtype.pyi .test-deps/numpy/_core/_dtype_ctypes.py .test-deps/numpy/_core/_dtype_ctypes.pyi .test-deps/numpy/_core/_exceptions.py .test-deps/numpy/_core/_exceptions.pyi .test-deps/numpy/_core/_internal.py .test-deps/numpy/_core/_internal.pyi .test-deps/numpy/_core/_methods.py .test-deps/numpy/_core/_methods.pyi .test-deps/numpy/_core/_multiarray_tests.cp312-win_amd64.lib .test-deps/numpy/_core/_multiarray_tests.cp312-win_amd64.pyd .test-deps/numpy/_core/_multiarray_umath.cp312-win_amd64.lib .test-deps/numpy/_core/_multiarray_umath.cp312-win_amd64.pyd .test-deps/numpy/_core/_operand_flag_tests.cp312-win_amd64.lib .test-deps/numpy/_core/_operand_flag_tests.cp312-win_amd64.pyd .test-deps/numpy/_core/_rational_tests.cp312-win_amd64.lib .test-deps/numpy/_core/_rational_tests.cp312-win_amd64.pyd .test-deps/numpy/_core/_simd.cp312-win_amd64.lib .test-deps/numpy/_core/_simd.cp312-win_amd64.pyd .test-deps/numpy/_core/_simd.pyi .test-deps/numpy/_core/_string_helpers.py .test-deps/numpy/_core/_string_helpers.pyi .test-deps/numpy/_core/_struct_ufunc_tests.cp312-win_amd64.lib .test-deps/numpy/_core/_struct_ufunc_tests.cp312-win_amd64.pyd .test-deps/numpy/_core/_type_aliases.py .test-deps/numpy/_core/_type_aliases.pyi .test-deps/numpy/_core/_ufunc_config.py .test-deps/numpy/_core/_ufunc_config.pyi .test-deps/numpy/_core/_umath_tests.cp312-win_amd64.lib .test-deps/numpy/_core/_umath_tests.cp312-win_amd64.pyd .test-deps/numpy/_core/_umath_tests.pyi .test-deps/numpy/_core/arrayprint.py .test-deps/numpy/_core/arrayprint.pyi .test-deps/numpy/_core/cversions.py .test-deps/numpy/_core/defchararray.py .test-deps/numpy/_core/defchararray.pyi .test-deps/numpy/_core/einsumfunc.py .test-deps/numpy/_core/einsumfunc.pyi .test-deps/numpy/_core/fromnumeric.py .test-deps/numpy/_core/fromnumeric.pyi .test-deps/numpy/_core/function_base.py .test-deps/numpy/_core/function_base.pyi .test-deps/numpy/_core/getlimits.py .test-deps/numpy/_core/getlimits.pyi .test-deps/numpy/_core/memmap.py .test-deps/numpy/_core/memmap.pyi .test-deps/numpy/_core/multiarray.py .test-deps/numpy/_core/multiarray.pyi .test-deps/numpy/_core/numeric.py .test-deps/numpy/_core/numeric.pyi .test-deps/numpy/_core/numerictypes.py .test-deps/numpy/_core/numerictypes.pyi .test-deps/numpy/_core/overrides.py .test-deps/numpy/_core/overrides.pyi .test-deps/numpy/_core/printoptions.py .test-deps/numpy/_core/printoptions.pyi .test-deps/numpy/_core/records.py .test-deps/numpy/_core/records.pyi .test-deps/numpy/_core/shape_base.py .test-deps/numpy/_core/shape_base.pyi .test-deps/numpy/_core/strings.py .test-deps/numpy/_core/strings.pyi .test-deps/numpy/_core/umath.py .test-deps/numpy/_core/umath.pyi .test-deps/numpy/_distributor_init.py .test-deps/numpy/_distributor_init.pyi .test-deps/numpy/_expired_attrs_2_0.py .test-deps/numpy/_expired_attrs_2_0.pyi .test-deps/numpy/_globals.py .test-deps/numpy/_globals.pyi .test-deps/numpy/_pyinstaller/__init__.py .test-deps/numpy/_pyinstaller/__init__.pyi .test-deps/numpy/_pyinstaller/hook-numpy.py .test-deps/numpy/_pyinstaller/hook-numpy.pyi .test-deps/numpy/_pytesttester.py .test-deps/numpy/_pytesttester.pyi .test-deps/numpy/_typing/__init__.py .test-deps/numpy/_typing/_add_docstring.py .test-deps/numpy/_typing/_array_like.py .test-deps/numpy/_typing/_char_codes.py .test-deps/numpy/_typing/_dtype_like.py .test-deps/numpy/_typing/_extended_precision.py .test-deps/numpy/_typing/_nbit.py .test-deps/numpy/_typing/_nbit_base.py .test-deps/numpy/_typing/_nbit_base.pyi .test-deps/numpy/_typing/_nested_sequence.py .test-deps/numpy/_typing/_scalars.py .test-deps/numpy/_typing/_shape.py .test-deps/numpy/_typing/_ufunc.py .test-deps/numpy/_typing/_ufunc.pyi .test-deps/numpy/_utils/__init__.py .test-deps/numpy/_utils/__init__.pyi .test-deps/numpy/_utils/_conversions.py .test-deps/numpy/_utils/_conversions.pyi .test-deps/numpy/_utils/_inspect.py .test-deps/numpy/_utils/_inspect.pyi .test-deps/numpy/_utils/_pep440.py .test-deps/numpy/_utils/_pep440.pyi .test-deps/numpy/char/__init__.py .test-deps/numpy/char/__init__.pyi .test-deps/numpy/conftest.py .test-deps/numpy/core/__init__.py .test-deps/numpy/core/__init__.pyi .test-deps/numpy/core/_dtype.py .test-deps/numpy/core/_dtype.pyi .test-deps/numpy/core/_dtype_ctypes.py .test-deps/numpy/core/_dtype_ctypes.pyi .test-deps/numpy/core/_internal.py .test-deps/numpy/core/_internal.pyi .test-deps/numpy/core/_multiarray_umath.py .test-deps/numpy/core/_utils.py .test-deps/numpy/core/arrayprint.py .test-deps/numpy/core/arrayprint.pyi .test-deps/numpy/core/defchararray.py .test-deps/numpy/core/defchararray.pyi .test-deps/numpy/core/einsumfunc.py .test-deps/numpy/core/einsumfunc.pyi .test-deps/numpy/core/fromnumeric.py .test-deps/numpy/core/fromnumeric.pyi .test-deps/numpy/core/function_base.py .test-deps/numpy/core/function_base.pyi .test-deps/numpy/core/getlimits.py .test-deps/numpy/core/getlimits.pyi .test-deps/numpy/core/multiarray.py .test-deps/numpy/core/multiarray.pyi .test-deps/numpy/core/numeric.py .test-deps/numpy/core/numeric.pyi .test-deps/numpy/core/numerictypes.py .test-deps/numpy/core/numerictypes.pyi .test-deps/numpy/core/overrides.py .test-deps/numpy/core/overrides.pyi .test-deps/numpy/core/records.py .test-deps/numpy/core/records.pyi .test-deps/numpy/core/shape_base.py .test-deps/numpy/core/shape_base.pyi .test-deps/numpy/core/umath.py .test-deps/numpy/core/umath.pyi .test-deps/numpy/ctypeslib/__init__.py .test-deps/numpy/ctypeslib/__init__.pyi .test-deps/numpy/ctypeslib/_ctypeslib.py .test-deps/numpy/ctypeslib/_ctypeslib.pyi .test-deps/numpy/doc/ufuncs.py .test-deps/numpy/dtypes.py .test-deps/numpy/dtypes.pyi .test-deps/numpy/exceptions.py .test-deps/numpy/exceptions.pyi .test-deps/numpy/f2py/__init__.py .test-deps/numpy/f2py/__init__.pyi .test-deps/numpy/f2py/__main__.py .test-deps/numpy/f2py/__version__.py .test-deps/numpy/f2py/__version__.pyi .test-deps/numpy/f2py/_isocbind.py .test-deps/numpy/f2py/_isocbind.pyi .test-deps/numpy/f2py/_src_pyf.py .test-deps/numpy/f2py/_src_pyf.pyi .test-deps/numpy/f2py/auxfuncs.py .test-deps/numpy/f2py/auxfuncs.pyi .test-deps/numpy/f2py/capi_maps.py .test-deps/numpy/f2py/capi_maps.pyi .test-deps/numpy/f2py/cb_rules.py .test-deps/numpy/f2py/cb_rules.pyi .test-deps/numpy/f2py/cfuncs.py .test-deps/numpy/f2py/cfuncs.pyi .test-deps/numpy/f2py/common_rules.py .test-deps/numpy/f2py/common_rules.pyi .test-deps/numpy/f2py/crackfortran.py .test-deps/numpy/f2py/crackfortran.pyi .test-deps/numpy/f2py/diagnose.py .test-deps/numpy/f2py/diagnose.pyi .test-deps/numpy/f2py/f2py2e.py .test-deps/numpy/f2py/f2py2e.pyi .test-deps/numpy/f2py/f90mod_rules.py .test-deps/numpy/f2py/f90mod_rules.pyi .test-deps/numpy/f2py/func2subr.py .test-deps/numpy/f2py/func2subr.pyi .test-deps/numpy/f2py/rules.py .test-deps/numpy/f2py/rules.pyi .test-deps/numpy/f2py/setup.cfg .test-deps/numpy/f2py/symbolic.py .test-deps/numpy/f2py/symbolic.pyi .test-deps/numpy/f2py/use_rules.py .test-deps/numpy/f2py/use_rules.pyi .test-deps/numpy/fft/__init__.py .test-deps/numpy/fft/__init__.pyi .test-deps/numpy/fft/_helper.py .test-deps/numpy/fft/_helper.pyi .test-deps/numpy/fft/_pocketfft.py .test-deps/numpy/fft/_pocketfft.pyi .test-deps/numpy/fft/_pocketfft_umath.cp312-win_amd64.lib .test-deps/numpy/fft/_pocketfft_umath.cp312-win_amd64.pyd .test-deps/numpy/lib/__init__.py .test-deps/numpy/lib/__init__.pyi .test-deps/numpy/lib/_array_utils_impl.py .test-deps/numpy/lib/_array_utils_impl.pyi .test-deps/numpy/lib/_arraypad_impl.py .test-deps/numpy/lib/_arraypad_impl.pyi .test-deps/numpy/lib/_arraysetops_impl.py .test-deps/numpy/lib/_arraysetops_impl.pyi .test-deps/numpy/lib/_arrayterator_impl.py .test-deps/numpy/lib/_arrayterator_impl.pyi .test-deps/numpy/lib/_datasource.py .test-deps/numpy/lib/_datasource.pyi .test-deps/numpy/lib/_format_impl.py .test-deps/numpy/lib/_format_impl.pyi .test-deps/numpy/lib/_function_base_impl.py .test-deps/numpy/lib/_function_base_impl.pyi .test-deps/numpy/lib/_histograms_impl.py .test-deps/numpy/lib/_histograms_impl.pyi .test-deps/numpy/lib/_index_tricks_impl.py .test-deps/numpy/lib/_index_tricks_impl.pyi .test-deps/numpy/lib/_iotools.py .test-deps/numpy/lib/_iotools.pyi .test-deps/numpy/lib/_nanfunctions_impl.py .test-deps/numpy/lib/_nanfunctions_impl.pyi .test-deps/numpy/lib/_npyio_impl.py .test-deps/numpy/lib/_npyio_impl.pyi .test-deps/numpy/lib/_polynomial_impl.py .test-deps/numpy/lib/_polynomial_impl.pyi .test-deps/numpy/lib/_scimath_impl.py .test-deps/numpy/lib/_scimath_impl.pyi .test-deps/numpy/lib/_shape_base_impl.py .test-deps/numpy/lib/_shape_base_impl.pyi .test-deps/numpy/lib/_stride_tricks_impl.py .test-deps/numpy/lib/_stride_tricks_impl.pyi .test-deps/numpy/lib/_twodim_base_impl.py .test-deps/numpy/lib/_twodim_base_impl.pyi .test-deps/numpy/lib/_type_check_impl.py .test-deps/numpy/lib/_type_check_impl.pyi .test-deps/numpy/lib/_ufunclike_impl.py .test-deps/numpy/lib/_ufunclike_impl.pyi .test-deps/numpy/lib/_user_array_impl.py .test-deps/numpy/lib/_user_array_impl.pyi .test-deps/numpy/lib/_utils_impl.py .test-deps/numpy/lib/_utils_impl.pyi .test-deps/numpy/lib/_version.py .test-deps/numpy/lib/_version.pyi .test-deps/numpy/lib/array_utils.py .test-deps/numpy/lib/array_utils.pyi .test-deps/numpy/lib/format.py .test-deps/numpy/lib/format.pyi .test-deps/numpy/lib/introspect.py .test-deps/numpy/lib/introspect.pyi .test-deps/numpy/lib/mixins.py .test-deps/numpy/lib/mixins.pyi .test-deps/numpy/lib/npyio.py .test-deps/numpy/lib/npyio.pyi .test-deps/numpy/lib/recfunctions.py .test-deps/numpy/lib/recfunctions.pyi .test-deps/numpy/lib/scimath.py .test-deps/numpy/lib/scimath.pyi .test-deps/numpy/lib/stride_tricks.py .test-deps/numpy/lib/stride_tricks.pyi .test-deps/numpy/lib/user_array.py .test-deps/numpy/lib/user_array.pyi .test-deps/numpy/linalg/__init__.py .test-deps/numpy/linalg/__init__.pyi .test-deps/numpy/linalg/_linalg.py .test-deps/numpy/linalg/_linalg.pyi .test-deps/numpy/linalg/_umath_linalg.cp312-win_amd64.lib .test-deps/numpy/linalg/_umath_linalg.cp312-win_amd64.pyd .test-deps/numpy/linalg/_umath_linalg.pyi .test-deps/numpy/linalg/lapack_lite.cp312-win_amd64.lib .test-deps/numpy/linalg/lapack_lite.cp312-win_amd64.pyd .test-deps/numpy/linalg/lapack_lite.pyi .test-deps/numpy/ma/API_CHANGES.txt .test-deps/numpy/ma/LICENSE .test-deps/numpy/ma/README.rst .test-deps/numpy/ma/__init__.py .test-deps/numpy/ma/__init__.pyi .test-deps/numpy/ma/core.py .test-deps/numpy/ma/core.pyi .test-deps/numpy/ma/extras.py .test-deps/numpy/ma/extras.pyi .test-deps/numpy/ma/mrecords.py .test-deps/numpy/ma/mrecords.pyi .test-deps/numpy/ma/testutils.py .test-deps/numpy/ma/testutils.pyi .test-deps/numpy/matlib.py .test-deps/numpy/matlib.pyi .test-deps/numpy/matrixlib/__init__.py .test-deps/numpy/matrixlib/__init__.pyi .test-deps/numpy/matrixlib/defmatrix.py .test-deps/numpy/matrixlib/defmatrix.pyi .test-deps/numpy/polynomial/__init__.py .test-deps/numpy/polynomial/__init__.pyi .test-deps/numpy/polynomial/_polybase.py .test-deps/numpy/polynomial/_polybase.pyi .test-deps/numpy/polynomial/_polytypes.pyi .test-deps/numpy/polynomial/chebyshev.py .test-deps/numpy/polynomial/chebyshev.pyi .test-deps/numpy/polynomial/hermite.py .test-deps/numpy/polynomial/hermite.pyi .test-deps/numpy/polynomial/hermite_e.py .test-deps/numpy/polynomial/hermite_e.pyi .test-deps/numpy/polynomial/laguerre.py .test-deps/numpy/polynomial/laguerre.pyi .test-deps/numpy/polynomial/legendre.py .test-deps/numpy/polynomial/legendre.pyi .test-deps/numpy/polynomial/polynomial.py .test-deps/numpy/polynomial/polynomial.pyi .test-deps/numpy/polynomial/polyutils.py .test-deps/numpy/polynomial/polyutils.pyi .test-deps/numpy/py.typed .test-deps/numpy/random/LICENSE.md .test-deps/numpy/random/__init__.pxd .test-deps/numpy/random/__init__.py .test-deps/numpy/random/__init__.pyi .test-deps/numpy/random/_bounded_integers.cp312-win_amd64.lib .test-deps/numpy/random/_bounded_integers.cp312-win_amd64.pyd .test-deps/numpy/random/_bounded_integers.pxd .test-deps/numpy/random/_bounded_integers.pyi .test-deps/numpy/random/_common.cp312-win_amd64.lib .test-deps/numpy/random/_common.cp312-win_amd64.pyd .test-deps/numpy/random/_common.pxd .test-deps/numpy/random/_common.pyi .test-deps/numpy/random/_generator.cp312-win_amd64.lib .test-deps/numpy/random/_generator.cp312-win_amd64.pyd .test-deps/numpy/random/_generator.pyi .test-deps/numpy/random/_mt19937.cp312-win_amd64.lib .test-deps/numpy/random/_mt19937.cp312-win_amd64.pyd .test-deps/numpy/random/_mt19937.pyi .test-deps/numpy/random/_pcg64.cp312-win_amd64.lib .test-deps/numpy/random/_pcg64.cp312-win_amd64.pyd .test-deps/numpy/random/_pcg64.pyi .test-deps/numpy/random/_philox.cp312-win_amd64.lib .test-deps/numpy/random/_philox.cp312-win_amd64.pyd .test-deps/numpy/random/_philox.pyi .test-deps/numpy/random/_pickle.py .test-deps/numpy/random/_pickle.pyi .test-deps/numpy/random/_sfc64.cp312-win_amd64.lib .test-deps/numpy/random/_sfc64.cp312-win_amd64.pyd .test-deps/numpy/random/_sfc64.pyi .test-deps/numpy/random/bit_generator.cp312-win_amd64.lib .test-deps/numpy/random/bit_generator.cp312-win_amd64.pyd .test-deps/numpy/random/bit_generator.pxd .test-deps/numpy/random/bit_generator.pyi .test-deps/numpy/random/c_distributions.pxd .test-deps/numpy/random/mtrand.cp312-win_amd64.lib .test-deps/numpy/random/mtrand.cp312-win_amd64.pyd .test-deps/numpy/random/mtrand.pyi .test-deps/numpy/rec/__init__.py .test-deps/numpy/rec/__init__.pyi .test-deps/numpy/strings/__init__.py .test-deps/numpy/strings/__init__.pyi .test-deps/numpy/testing/__init__.py .test-deps/numpy/testing/__init__.pyi .test-deps/numpy/testing/overrides.py .test-deps/numpy/testing/overrides.pyi .test-deps/numpy/testing/print_coercion_tables.py .test-deps/numpy/testing/print_coercion_tables.pyi .test-deps/numpy/tests/__init__.py .test-deps/numpy/tests/test__all__.py .test-deps/numpy/tests/test_configtool.py .test-deps/numpy/tests/test_ctypeslib.py .test-deps/numpy/tests/test_lazyloading.py .test-deps/numpy/tests/test_matlib.py .test-deps/numpy/tests/test_numpy_config.py .test-deps/numpy/tests/test_numpy_version.py .test-deps/numpy/tests/test_public_api.py .test-deps/numpy/tests/test_reloading.py .test-deps/numpy/tests/test_scripts.py .test-deps/numpy/tests/test_warnings.py .test-deps/numpy/typing/__init__.py .test-deps/numpy/typing/__init__.pyi .test-deps/numpy/typing/mypy_plugin.py .test-deps/numpy/version.py .test-deps/numpy/version.pyi .test-deps/packaging-26.3.dist-info/INSTALLER .test-deps/packaging-26.3.dist-info/METADATA .test-deps/packaging-26.3.dist-info/RECORD .test-deps/packaging-26.3.dist-info/WHEEL .test-deps/packaging-26.3.dist-info/licenses/LICENSE .test-deps/packaging-26.3.dist-info/licenses/LICENSE.APACHE .test-deps/packaging-26.3.dist-info/licenses/LICENSE.BSD .test-deps/packaging/__init__.py .test-deps/packaging/_elffile.py .test-deps/packaging/_manylinux.py .test-deps/packaging/_musllinux.py .test-deps/packaging/_parser.py .test-deps/packaging/_ranges.py .test-deps/packaging/_structures.py .test-deps/packaging/_tokenizer.py .test-deps/packaging/dependency_groups.py .test-deps/packaging/direct_url.py .test-deps/packaging/errors.py .test-deps/packaging/licenses/__init__.py .test-deps/packaging/licenses/_spdx.py .test-deps/packaging/markers.py .test-deps/packaging/metadata.py .test-deps/packaging/py.typed .test-deps/packaging/pylock.py .test-deps/packaging/ranges.py .test-deps/packaging/requirements.py .test-deps/packaging/specifiers.py .test-deps/packaging/tags.py .test-deps/packaging/utils.py .test-deps/packaging/version.py .test-deps/pandas-3.0.6.dist-info/DELVEWHEEL .test-deps/pandas-3.0.6.dist-info/INSTALLER .test-deps/pandas-3.0.6.dist-info/LICENSE .test-deps/pandas-3.0.6.dist-info/METADATA .test-deps/pandas-3.0.6.dist-info/RECORD .test-deps/pandas-3.0.6.dist-info/WHEEL .test-deps/pandas-3.0.6.dist-info/entry_points.txt .test-deps/pandas.libs/msvcp140-a4c2229bdc2a2a630acdc095b4d86008.dll .test-deps/pandas/__init__.py .test-deps/pandas/_typing.py .test-deps/pandas/_version.py .test-deps/pandas/_version_meson.py .test-deps/pandas/api/__init__.py .test-deps/pandas/api/internals.py .test-deps/pandas/arrays/__init__.py .test-deps/pandas/compat/__init__.py .test-deps/pandas/compat/_constants.py .test-deps/pandas/compat/_optional.py .test-deps/pandas/compat/pickle_compat.py .test-deps/pandas/compat/pyarrow.py .test-deps/pandas/conftest.py .test-deps/pandas/core/__init__.py .test-deps/pandas/core/flags.py .test-deps/pandas/core/frame.py .test-deps/pandas/core/generic.py .test-deps/pandas/core/indexing.py .test-deps/pandas/core/missing.py .test-deps/pandas/core/nanops.py .test-deps/pandas/core/resample.py .test-deps/pandas/core/roperator.py .test-deps/pandas/core/sample.py .test-deps/pandas/core/series.py .test-deps/pandas/core/shared_docs.py .test-deps/pandas/core/sorting.py .test-deps/pandas/pyproject.toml .test-deps/pandas/testing.py .test-deps/patsy-1.0.3.dist-info/INSTALLER .test-deps/patsy-1.0.3.dist-info/METADATA .test-deps/patsy-1.0.3.dist-info/RECORD .test-deps/patsy-1.0.3.dist-info/WHEEL .test-deps/patsy-1.0.3.dist-info/top_level.txt .test-deps/patsy/__init__.py .test-deps/patsy/build.py .test-deps/patsy/builtins.py .test-deps/patsy/categorical.py .test-deps/patsy/compat.py .test-deps/patsy/compat_ordereddict.py .test-deps/patsy/constraint.py .test-deps/patsy/contrasts.py .test-deps/patsy/desc.py .test-deps/patsy/design_info.py .test-deps/patsy/eval.py .test-deps/patsy/highlevel.py .test-deps/patsy/infix_parser.py .test-deps/patsy/mgcv_cubic_splines.py .test-deps/patsy/missing.py .test-deps/patsy/origin.py .test-deps/patsy/parse_formula.py .test-deps/patsy/redundancy.py .test-deps/patsy/splines.py .test-deps/patsy/state.py .test-deps/patsy/test_build.py .test-deps/patsy/test_highlevel.py .test-deps/patsy/test_regressions.py .test-deps/patsy/test_splines_bs_data.py .test-deps/patsy/test_splines_crs_data.py .test-deps/patsy/test_state.py .test-deps/patsy/tokens.py .test-deps/patsy/user_util.py .test-deps/patsy/util.py .test-deps/patsy/version.py .test-deps/python_dateutil-2.9.0.post0.dist-info/INSTALLER .test-deps/python_dateutil-2.9.0.post0.dist-info/LICENSE .test-deps/python_dateutil-2.9.0.post0.dist-info/METADATA .test-deps/python_dateutil-2.9.0.post0.dist-info/RECORD .test-deps/python_dateutil-2.9.0.post0.dist-info/WHEEL .test-deps/python_dateutil-2.9.0.post0.dist-info/top_level.txt .test-deps/python_dateutil-2.9.0.post0.dist-info/zip-safe .test-deps/scipy-1.18.1-cp312-cp312-win_amd64.whl .test-deps/scipy-1.18.1.dist-info/DELVEWHEEL .test-deps/scipy-1.18.1.dist-info/INSTALLER .test-deps/scipy-1.18.1.dist-info/LICENSE.txt .test-deps/scipy-1.18.1.dist-info/METADATA .test-deps/scipy-1.18.1.dist-info/RECORD .test-deps/scipy-1.18.1.dist-info/WHEEL .test-deps/scipy.libs/libscipy_openblas-197ee2fc9b4d071f7e048078cac74115.dll .test-deps/scipy/__config__.py .test-deps/scipy/__init__.py .test-deps/scipy/_cyutility.cp312-win_amd64.dll.a .test-deps/scipy/_cyutility.cp312-win_amd64.pyd .test-deps/scipy/_distributor_init.py .test-deps/scipy/conftest.py .test-deps/scipy/version.py .test-deps/six-1.17.0.dist-info/INSTALLER .test-deps/six-1.17.0.dist-info/LICENSE .test-deps/six-1.17.0.dist-info/METADATA .test-deps/six-1.17.0.dist-info/RECORD .test-deps/six-1.17.0.dist-info/WHEEL .test-deps/six-1.17.0.dist-info/top_level.txt .test-deps/six.py .test-deps/statsmodels-0.15.0.dist-info/INSTALLER .test-deps/statsmodels-0.15.0.dist-info/METADATA .test-deps/statsmodels-0.15.0.dist-info/RECORD .test-deps/statsmodels-0.15.0.dist-info/REQUESTED .test-deps/statsmodels-0.15.0.dist-info/WHEEL .test-deps/statsmodels/__init__.py .test-deps/statsmodels/_version.py .test-deps/statsmodels/api.py .test-deps/statsmodels/conftest.py .test-deps/statsmodels/pyproject.toml .test-deps/typing_extensions-4.16.0.dist-info/INSTALLER .test-deps/typing_extensions-4.16.0.dist-info/METADATA .test-deps/typing_extensions-4.16.0.dist-info/RECORD .test-deps/typing_extensions-4.16.0.dist-info/WHEEL .test-deps/typing_extensions.py .test-deps/tzdata-2026.4.dist-info/INSTALLER .test-deps/tzdata-2026.4.dist-info/METADATA .test-deps/tzdata-2026.4.dist-info/RECORD .test-deps/tzdata-2026.4.dist-info/WHEEL .test-deps/tzdata-2026.4.dist-info/top_level.txt .test-deps/tzdata/__init__.py .test-deps/tzdata/zones .test-deps/wrapt-2.4.1.dist-info/INSTALLER .test-deps/wrapt-2.4.1.dist-info/METADATA .test-deps/wrapt-2.4.1.dist-info/RECORD .test-deps/wrapt-2.4.1.dist-info/WHEEL .test-deps/wrapt-2.4.1.dist-info/top_level.txt .test-deps/wrapt-stubs/__init__.pyi .test-deps/wrapt/__init__.py .test-deps/wrapt/__wrapt__.py .test-deps/wrapt/_wrappers.c .test-deps/wrapt/_wrappers.cp312-win_amd64.pyd .test-deps/wrapt/arguments.py .test-deps/wrapt/caching.py .test-deps/wrapt/decorators.py .test-deps/wrapt/exceptions.py .test-deps/wrapt/importer.py .test-deps/wrapt/patches.py .test-deps/wrapt/proxies.py .test-deps/wrapt/signature.py .test-deps/wrapt/synchronization.py .test-deps/wrapt/weakrefs.py .test-deps/wrapt/wrappers.py .test-venv/bin/Activate.ps1 .test-venv/bin/activate .test-venv/bin/pip.exe .test-venv/bin/pip3.12.exe .test-venv/bin/pip3.exe .test-venv/bin/python.exe .test-venv/bin/python3.12.exe .test-venv/bin/python3.exe .test-venv/bin/python3w.exe .test-venv/bin/pythonw.exe .test-venv/pyvenv.cfg README.md ai_service.py app.js calculation.py data/test-dataset.xlsx fonts/roboto-cyrillic.js index.html main.py output/pdf/orders-cyrillic-test.pdf parser.py project-docs.md requirements.txt start.bat style.css tests/fixtures/must_have_anomaly.csv tests/test_ai_service.py tests/test_api.py tests/test_calculation.py tests/test_project_dataset.py
Обсуждение 0 комментариев
Войдите, чтобы комментироватьПока нет комментариев — будьте первым.