Metadata-Version: 2.4
Name: wthrcli
Version: 1.0.1
Summary: A smart CLI weather tool: no coordinates needed, just name your location and go.
Author-email: sanbobsan <saintsanbob@gmail.com>
Project-URL: Repository, https://github.com/sanbobsan/weather-cli.git
Requires-Python: >=3.12
Description-Content-Type: text/markdown
Requires-Dist: typer>=0.24.0
Requires-Dist: niquests>=3.17.0
Requires-Dist: pydantic>=2.12.5
Requires-Dist: platformdirs>=4.9.2
Provides-Extra: dev
Requires-Dist: pip-tools; extra == "dev"
Requires-Dist: mypy; extra == "dev"
Provides-Extra: build
Requires-Dist: pyinstaller; extra == "build"
Requires-Dist: shiv; extra == "build"

# ✨⛅ weather-cli

Командная утилита для получения текущей погоды в любом месте.

## 📋 Содержание

- [Технологический стек](#-технологический-стек)
- [Используемые API](#-используемые-api)
- [Использование](#использование)
- [Сборка](#сборка)

## 🛠 Технологический стек

- [Typer](https://typer.tiangolo.com/) — для создания удобного интерфейса командной строки (CLI). Позволяет легко определять аргументы и опции (например, название места и тип прогноза), автоматически генерирует подсказки и обрабатывает ввод пользователя.
- [Niquests](https://github.com/jawah/niquests/) — современный HTTP-клиент (форк `requests`). Используется для отправки запросов к Nominatim и Open-Meteo и получения данных о месте и погоде, соответственно.
- [Pydantic](https://docs.pydantic.dev/) — для валидации и парсинга данных. С его помощью мы определяем структуру ответа API и автоматически преобразуем JSON в удобные объекты Python с проверкой типов.

## 🌐 Используемые API

- [Nominatim](https://nominatim.org/) — геокодирование координат
- [Open-Meteo](https://open-meteo.com/) — получение прогноза по координатам

### ⚠️ Ограничения API

- Nominatim — Максимум 1 запрос в секунду
- Open-Meteo — Не более 10,000 запросов в день, 5,000 в час и 600 в минуту

## Использование

Возможные команды weather-cli можно увидеть прописав `--help`, так же можно использовать `--help` и у отдельных команд, чтобы увидеть их описание

```bash
wthr --help
```

Доступные команды:
- weather – Показать прогноз погоды для указанного места.
- set – Сохранить место в конфиг, чтобы в дальнейшем автоматически использовать его для получения погоды
- get – Проверить текущее место в конфиге
- clear – Очистить конфиг и кеш


Также доступно использование просто `wthr`

### Использование исполняемого файла на linux

Выбрать подходящую версию из [релизов](https://github.com/sanbobsan/weather-cli/releases)

- **wthr** — самодостаточный исполняемый файл
- **whtr.pyz** — исполняемый файл, который требует установленный python для запуска (требуется лишь интерпретатор, все зависимости он хранит в себе)

1. поместить исполняемый файл в _`/usr/local/bin`_
2. запускать командой `wthr` / `wthr.pyz`

### Использование python для запуска

## Сборка

### Сборка под linux

Создание и активация виртуального окружения python

```bash
python -m venv .venv
source .venv/bin/activate
```

Установка зависимостей для сборки

```basn
pip install -r requirements-build.txt
```

Сборка исполняемых файлов

```bash
sh build.sh # самодостаточный
sh build_shiv.sh # файл .pyz
```

Результат сборки лежит в папке _`/dist`_
