Metadata-Version: 2.1
Name: cswn-toolkit
Version: 4.3.0
Summary: Colorado Severe Weather Network — Net Control Toolkit for Skywarn amateur radio nets
Author-email: Jon Poindexter W5ALC <Jon.W5ALC@gmail.com>
License: MIT License
        
        Copyright (c) 2024 Jon Poindexter W5ALC
        
        Permission is hereby granted, free of charge, to any person obtaining a copy
        of this software and associated documentation files (the "Software"), to deal
        in the Software without restriction, including without limitation the rights
        to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
        copies of the Software, and to permit persons to whom the Software is
        furnished to do so, subject to the following conditions:
        
        The above copyright notice and this permission notice shall be included in all
        copies or substantial portions of the Software.
        
        THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
        IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
        FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
        AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
        LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
        OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
        SOFTWARE.
        
Project-URL: Homepage, https://cswn.net
Project-URL: Repository, https://github.com/W5ALC/cswn-toolkit
Project-URL: Bug Tracker, https://github.com/W5ALC/cswn-toolkit/issues
Keywords: weather,skywarn,amateur-radio,ham-radio,nws,severe-weather,net-control,colorado,pyqt6
Classifier: Development Status :: 5 - Production/Stable
Classifier: Environment :: X11 Applications :: Qt
Classifier: Intended Audience :: End Users/Desktop
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Topic :: Scientific/Engineering :: Atmospheric Science
Classifier: Topic :: Communications :: Ham Radio
Requires-Python: >=3.9
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: PyQt6 >=6.4.0
Requires-Dist: requests >=2.28.0
Requires-Dist: beautifulsoup4 >=4.11.0
Requires-Dist: Pillow >=9.0.0
Provides-Extra: all
Requires-Dist: PyQt6-WebEngine >=6.4.0 ; extra == 'all'
Requires-Dist: pytz >=2022.1 ; extra == 'all'
Provides-Extra: dev
Requires-Dist: build ; extra == 'dev'
Requires-Dist: twine ; extra == 'dev'
Requires-Dist: pytest ; extra == 'dev'
Requires-Dist: PyQt6-WebEngine >=6.4.0 ; extra == 'dev'
Requires-Dist: pytz >=2022.1 ; extra == 'dev'
Provides-Extra: timezone
Requires-Dist: pytz >=2022.1 ; extra == 'timezone'
Provides-Extra: webengine
Requires-Dist: PyQt6-WebEngine >=6.4.0 ; extra == 'webengine'

# Colorado Severe Weather Network — Net Control Toolkit

[![PyPI version](https://img.shields.io/pypi/v/cswn-net-toolkit)](https://pypi.org/project/cswn-net-toolkit/)
[![Python](https://img.shields.io/pypi/pyversions/cswn-net-toolkit)](https://pypi.org/project/cswn-net-toolkit/)
[![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](LICENSE)

A cross-platform PyQt6 desktop application for amateur radio **net control operators** running the **Colorado Severe Weather Network** daily Weather Outlook Net on the SkyHubLink repeater-linking system.

---

## Features

- **Automated net script generation** — fetches live NWS Area Forecast Discussions (AFD) and Hazardous Weather Outlooks (HWO) for all regional WFOs (GJT, BOU, GLD, PUB, CYS) and builds a complete, section-by-section net script
- **Regional Weather Roundup** — renders the NWS Pueblo RWR as a styled HTML table with color-coded temperature, wind, and conditions columns
- **Weather Resource Toolkit** — categorized quick-access panel linking to SPC convective outlooks, NWS office pages, radar & satellite tools, Skywarn resources, mesonets, and more
- **Built-in web browser** — opens dashboards in-app via `PyQt6-WebEngine` (optional; falls back to external browser)
- **PDF export** — generates a formatted, bookmarked PDF of the net script via `pdflatex` when TeX Live / MiKTeX is installed
- **Session persistence** — save and restore operator callsign, name, and location; auto-saves every 60 seconds
- **Dark / Light / Blue themes** — full Qt stylesheet theming
- **Auto-advance mode** — steps through script sections on a configurable timer
- **Cross-platform** — tested on Windows 10/11 and Linux (Ubuntu 22.04+)

---

## Installation

### Standard (no web engine)

```bash
pip install cswn-net-toolkit
```

### With in-app browser support

```bash
pip install "cswn-net-toolkit[webengine]"
```

### With timezone-aware Mountain Time display

```bash
pip install "cswn-net-toolkit[all]"
```

---

## Running

```bash
# Console script (installed automatically by pip):
cswn-toolkit

# Or as a Python module:
python -m cswn_toolkit
```

---

## Optional Dependencies

| Extra | Package | Purpose |
|-------|---------|---------|
| `webengine` | `PyQt6-WebEngine` | In-app browser for dashboards |
| `timezone` | `pytz` | Accurate Mountain Time display |
| `all` | Both above | Full feature set |

---

## Optional Assets (image files)

The app will look for the following image files in these locations (in order):

- `~/.colorado_swo/` (Linux/macOS) or `%APPDATA%\CSWN_Toolkit\` (Windows)
- The package `assets/` directory
- `~/Public/` or `~/bin/`

| File | Purpose |
|------|---------|
| `Skywarn-cyan.png` | Header logo (falls back to 📡 emoji if absent) |
| `CSWN-logo-BRAND.png` | PDF watermark (omitted if absent) |

---

## PDF Export

PDF export requires `pdflatex`. Install it with:

- **Linux:** `sudo apt install texlive-latex-recommended texlive-fonts-recommended`
- **Windows:** [MiKTeX](https://miktex.org/) or [TeX Live](https://tug.org/texlive/)
- **macOS:** `brew install --cask mactex`

Plain text (`.txt`) and LaTeX source (`.tex`) export work without any TeX installation.

---

## System Requirements

- Python 3.9 or newer
- PyQt6 ≥ 6.4
- Network access (for fetching NWS data)

---

## About the Colorado Severe Weather Network

The **Colorado Severe Weather Network (CSWN)** is a Skywarn Core Partner network running daily weather briefing nets on the [SkyHubLink](https://skyhublink.com) system at **1300 MT, Monday–Friday**. It serves NWS offices in the Central Rockies and High Plains region.

- Website: [cswn.net](https://cswn.net)
- Email: CO.SEVERE.WX@gmail.com
- Facebook: Colorado Severe Weather Network

---

## Author

**Jon Poindexter W5ALC** — Technical Systems Specialist & Consultant  
Jon.W5ALC@gmail.com

---

## License

[MIT License](LICENSE) — free to use, modify, and distribute with attribution.
