isobar-cli 1.0.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 Beau Bremer / KnowOneActual
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -0,0 +1,180 @@
1
+ Metadata-Version: 2.4
2
+ Name: isobar-cli
3
+ Version: 1.0.0
4
+ Summary: A visually pleasing terminal weather tool focusing on Real Feel and Windchill.
5
+ Author: Beau Bremer / KnowOneActual
6
+ License-Expression: MIT
7
+ Project-URL: Homepage, https://github.com/KnowOneActual/isobar-cli
8
+ Project-URL: Repository, https://github.com/KnowOneActual/isobar-cli
9
+ Project-URL: Issues, https://github.com/KnowOneActual/isobar-cli/issues
10
+ Project-URL: Changelog, https://github.com/KnowOneActual/isobar-cli/blob/main/CHANGELOG.md
11
+ Keywords: weather,cli,terminal,meteo,forecast
12
+ Classifier: Development Status :: 5 - Production/Stable
13
+ Classifier: Environment :: Console
14
+ Classifier: Intended Audience :: End Users/Desktop
15
+ Classifier: Programming Language :: Python :: 3
16
+ Classifier: Programming Language :: Python :: 3.8
17
+ Classifier: Programming Language :: Python :: 3.9
18
+ Classifier: Programming Language :: Python :: 3.10
19
+ Classifier: Programming Language :: Python :: 3.11
20
+ Classifier: Topic :: Utilities
21
+ Requires-Python: >=3.8
22
+ Description-Content-Type: text/markdown
23
+ License-File: LICENSE
24
+ Requires-Dist: rich>=13.0.0
25
+ Requires-Dist: requests>=2.31.0
26
+ Requires-Dist: typer>=0.9.0
27
+ Requires-Dist: timezonefinder>=6.0.0
28
+ Provides-Extra: test
29
+ Requires-Dist: pytest>=7.0.0; extra == "test"
30
+ Requires-Dist: requests-mock>=1.11.0; extra == "test"
31
+ Requires-Dist: pytest-cov>=4.1.0; extra == "test"
32
+ Dynamic: license-file
33
+
34
+ # Isobar CLI
35
+
36
+ ![CI](https://github.com/KnowOneActual/isobar-cli/actions/workflows/ci.yml/badge.svg)
37
+ ![Coverage](https://img.shields.io/badge/coverage-98%25-green)
38
+ ![Version](https://img.shields.io/badge/version-0.6.3-blue)
39
+ ![Ruff](https://img.shields.io/badge/linting-ruff-purple)
40
+ ![Python](https://img.shields.io/badge/python-3.8%2B-blue)
41
+ ![License](https://img.shields.io/badge/license-MIT-green)
42
+
43
+ A terminal weather tool designed to give you a fast, clean sense of what the weather **feels like** outside; right now and for the week ahead. Built with Python and Rich.
44
+
45
+ ## Philosophy
46
+
47
+ Isobar CLI answers a simple question: **"What does it feel like outside right now, and how do I prepare to be outside?"**
48
+
49
+ Most weather apps overwhelm you with data. Isobar strips away everything except what matters when you're deciding whether to grab a jacket.
50
+
51
+ ### Design Principles
52
+ - **Essential over comprehensive** — Show Real Feel, not 47 data points
53
+ - **Terminal-native** — Built for quick checks in your workflow
54
+ - **Zero friction** — No API keys, no config files
55
+ - **Information density** — Clean, borderless UI
56
+ - **Intentional features** — Each must answer: *"Does this help understand what it feels like outside?"*
57
+
58
+ ## ✨ Features
59
+
60
+ - **Auto-Location** — `isobar` detects your city automatically 🌍
61
+ - **Weather Condition Icons** — WMO-standard emoji + plain-English description (☀️ Clear sky, 🌨️ Moderate snow, ⛈️ Thunderstorm)
62
+ - **Real Feel** — Apparent temperature (what it *feels* like)
63
+ - **Air Quality Index** — US AQI with health classifications 😷
64
+ - **7-Day Forecast** — Full week outlook with color-coded highs/lows and daily rain %
65
+ - **Hourly Outlook** — Next 12 hours of temp and rain chance (`--hourly`)
66
+ - **Multiple Cities** — Compare weather across several cities at once (side-by-side)
67
+ - **Smart Suggestions** — Fuzzy city name matching if you make a typo
68
+ - **Shell Completion** — Tab-complete city names from your search history
69
+ - **Dynamic Timezone** — Sunrise/sunset always shown in the city's local time, not yours
70
+ - **Precipitation Forecast** — Next 6h rain/snow chance + totals
71
+ - **Smart Caching** — 15-min cache per city (`~/.cache/isobar/`)
72
+ - **Color-Coded Temps** — Cyan → Blue → Green → Yellow → Red
73
+ - **Metric Support** — `--metric` or `-m` for Celsius, km/h, and mm
74
+ - **No API Keys** — Free Open-Meteo + ip-api.com
75
+ - **Zero Config** — Works instantly after `pip install .`
76
+
77
+ ## 🚀 Installation
78
+
79
+ ```bash
80
+ git clone https://github.com/KnowOneActual/isobar-cli.git
81
+ cd isobar-cli
82
+ pip install .
83
+ ```
84
+
85
+ ## 📱 Usage
86
+
87
+ ```bash
88
+ # Auto-detect your location
89
+ isobar
90
+
91
+ # Specify a city
92
+ isobar Chicago
93
+ isobar London Tokyo Paris # Multiple cities
94
+ isobar "New York" # Use quotes for multi-word cities
95
+
96
+ # Hourly outlook (next 12h)
97
+ isobar --hourly
98
+ isobar -H
99
+
100
+ # 7-day forecast
101
+ isobar --forecast
102
+ isobar -f
103
+ isobar "San Francisco" --forecast
104
+ isobar -f Sydney
105
+
106
+ # Metric units (Celsius, km/h, mm)
107
+ isobar --metric
108
+ isobar -m
109
+ isobar Tokyo -m
110
+ ```
111
+
112
+ ## ⌨️ Shell Completion
113
+
114
+ Isobar supports tab-completion for city names based on your search history. To enable it for your shell:
115
+
116
+ **Zsh:**
117
+ ```bash
118
+ isobar --install-completion zsh
119
+ ```
120
+
121
+ **Bash:**
122
+ ```bash
123
+ isobar --install-completion bash
124
+ ```
125
+
126
+ *(Note: You may need to restart your terminal after installing completion).*
127
+
128
+ ## 🖥️ Example Output
129
+
130
+ ```
131
+ Chicago, Illinois Weather
132
+ ☀️ Conditions: Mainly clear
133
+ 🌡️ Temperature: 37.1°F
134
+ 🤔 Real Feel: 30.4°F
135
+ 💨 Wind Speed: 4.3 mph
136
+ 💧 Humidity: 58%
137
+ ☔ Precip Chance: 0% (6h) | Dry conditions expected
138
+ 🌅 Sunrise: 6:29 AM
139
+ 🌇 Sunset: 5:37 PM
140
+
141
+ 7-Day Forecast — Chicago, Illinois
142
+ Day Conditions High Low Rain%
143
+ Today ☁️ Overcast 41.7°F 23.9°F 1%
144
+ Fri Feb 27 ⛅ Partly cloudy 66.4°F 32.4°F 2%
145
+ Sat Feb 28 🌨️ Moderate snow 44.0°F 26.5°F 38%
146
+ Sun Mar 1 ☁️ Overcast 29.0°F 26.6°F 36%
147
+ Mon Mar 2 ☁️ Overcast 33.6°F 27.1°F 36%
148
+ Tue Mar 3 🌦️ Light drizzle 36.8°F 30.9°F 27%
149
+ Wed Mar 4 🌦️ Moderate drizzle 41.3°F 33.5°F 46%
150
+ ```
151
+
152
+ ## 🛠 Tech Stack
153
+
154
+ | Tool | Purpose |
155
+ |---|---|
156
+ | [Typer](https://typer.tiangolo.com/) | CLI framework |
157
+ | [Rich](https://github.com/Textualize/rich) | Terminal UI |
158
+ | [Open-Meteo](https://open-meteo.com/) | Weather + forecast data (free, no key) |
159
+ | [ip-api.com](http://ip-api.com/) | Auto-location detection (free) |
160
+ | [timezonefinder](https://github.com/jannikmi/timezonefinder) | Dynamic timezone from coordinates (offline) |
161
+ | [pytest](https://docs.pytest.org/) | Unit testing framework |
162
+ | [requests-mock](https://requests-mock.readthedocs.io/) | Mocking for API testing |
163
+ | [Ruff](https://docs.astral.sh/ruff/) | Linting + formatting |
164
+ | [pip-audit](https://github.com/pypa/pip-audit) | Dependency security scanning (CI) |
165
+
166
+ ## 📈 Project Status
167
+
168
+ ✅ **Phase 1 Complete** — Caching + Auto-Location
169
+ ✅ **Phase 2 Complete** — Precipitation, Sunrise/Sunset, Condition Icons
170
+ ✅ **Phase 3 Complete** — 7-Day Forecast, Dynamic Timezone, `--city` flag
171
+ ✅ **CI/CD** — Ruff lint + security audit on every push and PR
172
+ See [ROADMAP.md](ROADMAP.md) and [CHANGELOG.md](CHANGELOG.md)
173
+
174
+ ## 🤝 Contributing
175
+
176
+ See [CONTRIBUTING.md](CONTRIBUTING.md). New features must answer: **"Does this help understand what it feels like outside?"**
177
+
178
+ ## 📄 License
179
+
180
+ MIT. See [LICENSE](LICENSE).
@@ -0,0 +1,147 @@
1
+ # Isobar CLI
2
+
3
+ ![CI](https://github.com/KnowOneActual/isobar-cli/actions/workflows/ci.yml/badge.svg)
4
+ ![Coverage](https://img.shields.io/badge/coverage-98%25-green)
5
+ ![Version](https://img.shields.io/badge/version-0.6.3-blue)
6
+ ![Ruff](https://img.shields.io/badge/linting-ruff-purple)
7
+ ![Python](https://img.shields.io/badge/python-3.8%2B-blue)
8
+ ![License](https://img.shields.io/badge/license-MIT-green)
9
+
10
+ A terminal weather tool designed to give you a fast, clean sense of what the weather **feels like** outside; right now and for the week ahead. Built with Python and Rich.
11
+
12
+ ## Philosophy
13
+
14
+ Isobar CLI answers a simple question: **"What does it feel like outside right now, and how do I prepare to be outside?"**
15
+
16
+ Most weather apps overwhelm you with data. Isobar strips away everything except what matters when you're deciding whether to grab a jacket.
17
+
18
+ ### Design Principles
19
+ - **Essential over comprehensive** — Show Real Feel, not 47 data points
20
+ - **Terminal-native** — Built for quick checks in your workflow
21
+ - **Zero friction** — No API keys, no config files
22
+ - **Information density** — Clean, borderless UI
23
+ - **Intentional features** — Each must answer: *"Does this help understand what it feels like outside?"*
24
+
25
+ ## ✨ Features
26
+
27
+ - **Auto-Location** — `isobar` detects your city automatically 🌍
28
+ - **Weather Condition Icons** — WMO-standard emoji + plain-English description (☀️ Clear sky, 🌨️ Moderate snow, ⛈️ Thunderstorm)
29
+ - **Real Feel** — Apparent temperature (what it *feels* like)
30
+ - **Air Quality Index** — US AQI with health classifications 😷
31
+ - **7-Day Forecast** — Full week outlook with color-coded highs/lows and daily rain %
32
+ - **Hourly Outlook** — Next 12 hours of temp and rain chance (`--hourly`)
33
+ - **Multiple Cities** — Compare weather across several cities at once (side-by-side)
34
+ - **Smart Suggestions** — Fuzzy city name matching if you make a typo
35
+ - **Shell Completion** — Tab-complete city names from your search history
36
+ - **Dynamic Timezone** — Sunrise/sunset always shown in the city's local time, not yours
37
+ - **Precipitation Forecast** — Next 6h rain/snow chance + totals
38
+ - **Smart Caching** — 15-min cache per city (`~/.cache/isobar/`)
39
+ - **Color-Coded Temps** — Cyan → Blue → Green → Yellow → Red
40
+ - **Metric Support** — `--metric` or `-m` for Celsius, km/h, and mm
41
+ - **No API Keys** — Free Open-Meteo + ip-api.com
42
+ - **Zero Config** — Works instantly after `pip install .`
43
+
44
+ ## 🚀 Installation
45
+
46
+ ```bash
47
+ git clone https://github.com/KnowOneActual/isobar-cli.git
48
+ cd isobar-cli
49
+ pip install .
50
+ ```
51
+
52
+ ## 📱 Usage
53
+
54
+ ```bash
55
+ # Auto-detect your location
56
+ isobar
57
+
58
+ # Specify a city
59
+ isobar Chicago
60
+ isobar London Tokyo Paris # Multiple cities
61
+ isobar "New York" # Use quotes for multi-word cities
62
+
63
+ # Hourly outlook (next 12h)
64
+ isobar --hourly
65
+ isobar -H
66
+
67
+ # 7-day forecast
68
+ isobar --forecast
69
+ isobar -f
70
+ isobar "San Francisco" --forecast
71
+ isobar -f Sydney
72
+
73
+ # Metric units (Celsius, km/h, mm)
74
+ isobar --metric
75
+ isobar -m
76
+ isobar Tokyo -m
77
+ ```
78
+
79
+ ## ⌨️ Shell Completion
80
+
81
+ Isobar supports tab-completion for city names based on your search history. To enable it for your shell:
82
+
83
+ **Zsh:**
84
+ ```bash
85
+ isobar --install-completion zsh
86
+ ```
87
+
88
+ **Bash:**
89
+ ```bash
90
+ isobar --install-completion bash
91
+ ```
92
+
93
+ *(Note: You may need to restart your terminal after installing completion).*
94
+
95
+ ## 🖥️ Example Output
96
+
97
+ ```
98
+ Chicago, Illinois Weather
99
+ ☀️ Conditions: Mainly clear
100
+ 🌡️ Temperature: 37.1°F
101
+ 🤔 Real Feel: 30.4°F
102
+ 💨 Wind Speed: 4.3 mph
103
+ 💧 Humidity: 58%
104
+ ☔ Precip Chance: 0% (6h) | Dry conditions expected
105
+ 🌅 Sunrise: 6:29 AM
106
+ 🌇 Sunset: 5:37 PM
107
+
108
+ 7-Day Forecast — Chicago, Illinois
109
+ Day Conditions High Low Rain%
110
+ Today ☁️ Overcast 41.7°F 23.9°F 1%
111
+ Fri Feb 27 ⛅ Partly cloudy 66.4°F 32.4°F 2%
112
+ Sat Feb 28 🌨️ Moderate snow 44.0°F 26.5°F 38%
113
+ Sun Mar 1 ☁️ Overcast 29.0°F 26.6°F 36%
114
+ Mon Mar 2 ☁️ Overcast 33.6°F 27.1°F 36%
115
+ Tue Mar 3 🌦️ Light drizzle 36.8°F 30.9°F 27%
116
+ Wed Mar 4 🌦️ Moderate drizzle 41.3°F 33.5°F 46%
117
+ ```
118
+
119
+ ## 🛠 Tech Stack
120
+
121
+ | Tool | Purpose |
122
+ |---|---|
123
+ | [Typer](https://typer.tiangolo.com/) | CLI framework |
124
+ | [Rich](https://github.com/Textualize/rich) | Terminal UI |
125
+ | [Open-Meteo](https://open-meteo.com/) | Weather + forecast data (free, no key) |
126
+ | [ip-api.com](http://ip-api.com/) | Auto-location detection (free) |
127
+ | [timezonefinder](https://github.com/jannikmi/timezonefinder) | Dynamic timezone from coordinates (offline) |
128
+ | [pytest](https://docs.pytest.org/) | Unit testing framework |
129
+ | [requests-mock](https://requests-mock.readthedocs.io/) | Mocking for API testing |
130
+ | [Ruff](https://docs.astral.sh/ruff/) | Linting + formatting |
131
+ | [pip-audit](https://github.com/pypa/pip-audit) | Dependency security scanning (CI) |
132
+
133
+ ## 📈 Project Status
134
+
135
+ ✅ **Phase 1 Complete** — Caching + Auto-Location
136
+ ✅ **Phase 2 Complete** — Precipitation, Sunrise/Sunset, Condition Icons
137
+ ✅ **Phase 3 Complete** — 7-Day Forecast, Dynamic Timezone, `--city` flag
138
+ ✅ **CI/CD** — Ruff lint + security audit on every push and PR
139
+ See [ROADMAP.md](ROADMAP.md) and [CHANGELOG.md](CHANGELOG.md)
140
+
141
+ ## 🤝 Contributing
142
+
143
+ See [CONTRIBUTING.md](CONTRIBUTING.md). New features must answer: **"Does this help understand what it feels like outside?"**
144
+
145
+ ## 📄 License
146
+
147
+ MIT. See [LICENSE](LICENSE).
@@ -0,0 +1,112 @@
1
+ [build-system]
2
+ requires = ["setuptools>=61.0"]
3
+ build-backend = "setuptools.build_meta"
4
+
5
+ [project]
6
+ name = "isobar-cli"
7
+ version = "1.0.0"
8
+ description = "A visually pleasing terminal weather tool focusing on Real Feel and Windchill."
9
+ authors = [
10
+ { name="Beau Bremer / KnowOneActual" },
11
+ ]
12
+ readme = "README.md"
13
+ license = "MIT"
14
+ keywords = ["weather", "cli", "terminal", "meteo", "forecast"]
15
+ classifiers = [
16
+ "Development Status :: 5 - Production/Stable",
17
+ "Environment :: Console",
18
+ "Intended Audience :: End Users/Desktop",
19
+ "Programming Language :: Python :: 3",
20
+ "Programming Language :: Python :: 3.8",
21
+ "Programming Language :: Python :: 3.9",
22
+ "Programming Language :: Python :: 3.10",
23
+ "Programming Language :: Python :: 3.11",
24
+ "Topic :: Utilities",
25
+ ]
26
+ dependencies = [
27
+ "rich>=13.0.0",
28
+ "requests>=2.31.0",
29
+ "typer>=0.9.0",
30
+ "timezonefinder>=6.0.0",
31
+ ]
32
+ requires-python = ">=3.8"
33
+
34
+ [project.urls]
35
+ Homepage = "https://github.com/KnowOneActual/isobar-cli"
36
+ Repository = "https://github.com/KnowOneActual/isobar-cli"
37
+ Issues = "https://github.com/KnowOneActual/isobar-cli/issues"
38
+ Changelog = "https://github.com/KnowOneActual/isobar-cli/blob/main/CHANGELOG.md"
39
+
40
+ [project.optional-dependencies]
41
+
42
+ test = [
43
+ "pytest>=7.0.0",
44
+ "requests-mock>=1.11.0",
45
+ "pytest-cov>=4.1.0",
46
+ ]
47
+
48
+ [project.scripts]
49
+ isobar = "isobar_cli.main:app" # This allows you to type 'isobar' in the terminal to run it
50
+
51
+ [tool.setuptools]
52
+ package-dir = {"" = "src"}
53
+ packages = ["isobar_cli"]
54
+
55
+ [tool.ruff]
56
+ # Exclude a variety of commonly ignored directories.
57
+ exclude = [
58
+ ".bzr",
59
+ ".direnv",
60
+ ".eggs",
61
+ ".git",
62
+ ".git-rewrite",
63
+ ".hg",
64
+ ".ipynb_checkpoints",
65
+ ".mypy_cache",
66
+ ".nox",
67
+ ".pants.d",
68
+ ".pyenv",
69
+ ".pytest_cache",
70
+ ".pytype",
71
+ ".ruff_cache",
72
+ ".svn",
73
+ ".tox",
74
+ ".venv",
75
+ ".vscode",
76
+ "__pypackages__",
77
+ "_build",
78
+ "buck-out",
79
+ "build",
80
+ "dist",
81
+ "node_modules",
82
+ "site-packages",
83
+ "venv",
84
+ ]
85
+
86
+ line-length = 88
87
+ indent-width = 4
88
+ target-version = "py39"
89
+
90
+ [tool.ruff.lint]
91
+ select = [
92
+ "E", # pycodestyle errors
93
+ "W", # pycodestyle warnings
94
+ "F", # pyflakes
95
+ "I", # isort
96
+ "B", # flake8-bugbear
97
+ "C4", # flake8-comprehensions
98
+ "UP", # pyupgrade
99
+ ]
100
+ ignore = ["E501"]
101
+
102
+ [tool.ruff.format]
103
+ quote-style = "double"
104
+ indent-style = "space"
105
+ skip-magic-trailing-comma = false
106
+ line-ending = "auto"
107
+ docstring-code-format = false
108
+ docstring-code-line-length = "dynamic"
109
+
110
+ [tool.pytest.ini_options]
111
+ testpaths = ["tests"]
112
+ addopts = "--cov=src/isobar_cli --cov-report=term-missing"
@@ -0,0 +1,4 @@
1
+ [egg_info]
2
+ tag_build =
3
+ tag_date = 0
4
+
@@ -0,0 +1 @@
1
+ __version__ = "0.6.2"