AAYMA
RU
Войти

HACKALEM AI

Прототип поддержки закупок: по истории продаж и остаткам прогнозирует спрос, исключает разовые крупные продажи, компенсирует stockout и формирует…

Рабочий MVP
Команда «TheGoldenDUO» 4💬 0 комментариевс 23 сентября 2026 г.

О проекте

Команда: 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.md

HACKALEM AI — управление заказами поставщикам

HACKALEM AI — прототип системы поддержки закупок для менеджеров, которые формируют заказы поставщикам. Решение принимает историю продаж и складские данные, исключает нетипичные крупные продажи, прогнозирует спрос, учитывает периоды отсутствия товара и формирует объяснимые рекомендации по объёму заказа.

Проект помогает заменить ручной анализ таблиц единым сценарием: загрузить данные, выполнить расчёт, изучить рекомендации и причины, скорректировать план, сравнить поставщиков и выгрузить результат.

Что реализовано

  • загрузка и проверка файлов CSV, XLSX и XLS;
  • собственный многолистовой тестовый датасет команды, который автоматически анализируется при запуске;
  • распознавание русских и английских названий колонок, включая формат выгрузки из 1С;
  • предварительная сводка по загруженному файлу без возврата сырых клиентских данных;
  • обнаружение крупных разовых продаж методом IQR и исключение их из регулярного спроса;
  • агрегация истории продаж по месяцам;
  • прогноз следующего периода методом экспоненциального сглаживания Holt–Winters;
  • учёт тренда артикула и категории;
  • компенсация скрытого спроса за периоды отсутствия товара на складе (stockout);
  • расчёт рекомендуемого количества с учётом текущего остатка и товаров в пути;
  • определение срочности заказа и ближайшего сезонного пика;
  • REST API для загрузки, расчёта, просмотра, корректировки и утверждения заказов;
  • веб-интерфейс с восемью разделами: загрузка, дашборд, детализация, аномалии, подбор поставщика, аналитика, утверждение и экспорт;
  • фильтрация рекомендаций по складу, категории, поставщику и срочности;
  • графики истории спроса, отметки периодов stockout, аналитика категорий и сезонный календарь;
  • AI-анализ рыночных трендов по категориям с веб-поиском и ссылками на источники;
  • AI-поиск до трёх альтернативных предложений поставщиков в Казахстане;
  • экспорт текущего плана в CSV, XLSX и PDF;
  • автоматические тесты расчёта, API-контракта и AI-сервиса.

Как работает решение

  1. Исходные данные передаются в POST /upload в виде CSV/XLSX/XLS-файла. Парсер приводит названия колонок к единому формату и проверяет обязательные поля.
  2. POST /calculate запускает расчёт. Продажи агрегируются по артикулам и месяцам, крупные разовые операции исключаются IQR-детектором.
  3. Модель прогнозирует спрос на следующий период. К прогнозу добавляется оценка недополученного спроса во время stockout, затем вычитаются остаток и товары в пути.
  4. Результат сохраняется в памяти процесса и доступен через GET /orders; исключённые операции — через GET /anomalies.
  5. Веб-интерфейс загружает эти ответы и строит дашборд, детализацию артикула, аналитику по категориям и календарь закупок.
  6. При наличии ключа OpenAI пользователь может запросить рыночные тренды или альтернативных поставщиков. Ключ остаётся на сервере и не передаётся в браузер.
  7. План можно скорректировать, сгруппировать по поставщикам и экспортировать в нужный формат.

Технологии

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.pyFastAPI-приложение, 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.

Как проверить решение

  1. Запустите сервер через start.bat или Uvicorn.
  2. Откройте http://127.0.0.1:8000. Дополнительная загрузка файла не требуется: backend уже анализирует data/test-dataset.xlsx.
  3. В шапке должно появиться сообщение о загрузке 10 позиций.
  4. На дашборде проверьте реальные позиции датасета, например AUTO-B16, BOIL-080 и CABL-325.
  5. Откройте детализацию артикула: интерфейс покажет его месячную историю, обоснование и найденные периоды stockout.
  6. На вкладке «Аномалии» найдите тестовую нетипичную продажу клиента anon-anomaly-001, исключённую из регулярного спроса.
  7. Откройте «Аналитика / Тренды» и проверьте графики для пяти категорий и сезонный календарь.
  8. На вкладке экспорта скачайте результат в 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.

Репозиторий

BAITC-Hacks/hack-08651f63-thegoldenduo

Звёзды
⭐ 0
Форки
0
Язык
Python
Последний push
в прошлом месяце
Коммиты
12
Авторы
3
Файлы
831
Ветки
3

Авторы коммитов

KaseStuck 7panamera-ai 4KaseStuck 1

История коммитов

  • 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
Ветки (3)

Обсуждение 0 комментариев

Войдите, чтобы комментировать

Пока нет комментариев — будьте первым.