Skip to content

Repository files navigation

CableSpanCalc

Desktop-приложение на Kivy и веб-версия на FastAPI для расчета механических нагрузок на опоры при подвесе кабеля. Код приложения оформлен как Python-пакет cable_span_calc в src/.

Структура

  • main.py - совместимый launcher для запуска из корня проекта.
  • src/cable_span_calc/app.py - основная точка входа Kivy-приложения.
  • src/cable_span_calc/cable.py - расчетная модель кабеля.
  • src/cable_span_calc/plotting.py - генерация графика пролета в PNG-буфер.
  • src/cable_span_calc/ui/ - интерфейс, виджеты и JSON-сохранение проектов.
  • src/cable_span_calc/web/ - FastAPI API и статический web-интерфейс.
  • src/cable_span_calc/resources/ - изображения, используемые интерфейсом.
  • tests/ - smoke-тесты расчетов и генерации графика.
  • examples/ - отдельные демонстрационные наброски.
  • docs/diagrams/ - PlantUML-диаграммы проекта.
  • docs/images/ - иллюстрации и старые сгенерированные изображения.

Запуск через uv

uv sync
uv run python main.py

Веб-версия:

uv run cable-span-calc-web --reload

После запуска откройте http://127.0.0.1:8000. OpenAPI-документация доступна на http://127.0.0.1:8000/docs.

Альтернативные варианты:

PYTHONPATH=src uv run cable-span-calc
PYTHONPATH=src uv run python -m cable_span_calc

Для проверок:

uv run pytest
uv run ruff check .

Проект закреплен на Python >=3.9,<3.13, потому что текущие зависимости Kivy/Matplotlib надежнее работают в этом диапазоне. Файл .python-version просит uv использовать Python 3.12.

Docker

Для web-версии:

docker compose up --build cable-span-calc-web

Затем откройте http://127.0.0.1:8000.

Для Kivy-приложения контейнеру нужен доступ к дисплею хоста.

Сборка:

docker build -t cable-span-calc .

Linux/X11:

xhost +local:docker
docker run --rm -it \
  -e DISPLAY=$DISPLAY \
  -v /tmp/.X11-unix:/tmp/.X11-unix \
  cable-span-calc

macOS требует запущенный XQuartz с включенной опцией "Allow connections from network clients". Обычно достаточно:

docker run --rm -it \
  -e DISPLAY=host.docker.internal:0 \
  cable-span-calc

Через Compose:

docker compose up --build cable-span-calc

Примечания по проекту

  • Виртуальное окружение, кеши тестов, системные файлы .DS_Store/Thumbs.db и локальные JSON-сохранения игнорируются git.
  • plotting.py использует backend Agg, чтобы генерация графика работала в тестах и headless-средах.
  • Текущий UI рассчитан на большое окно: app.py задает стартовый размер 1800x1200.

About

No description, website, or topics provided.

Resources

Stars

1 star

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages