Skip to content

Commit 2ff1b74

Browse files
Federico De PonteFederico De Ponte
authored andcommitted
Rename package to opensky
1 parent 2c61a1f commit 2ff1b74

52 files changed

Lines changed: 6841 additions & 3163 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.env.example

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,11 @@
11
# Optional: Duffel API (free unlimited searches)
22
# Sign up at https://duffel.com
3-
# SKYROUTE_DUFFEL_TOKEN=duffel_test_xxxxx
3+
# OPENSKY_DUFFEL_TOKEN=duffel_test_xxxxx
4+
# Legacy fallback: SKYROUTE_DUFFEL_TOKEN=duffel_test_xxxxx
45

56
# Optional: Amadeus API (free tier: 2,000 calls/month)
67
# Sign up at https://developers.amadeus.com
7-
# SKYROUTE_AMADEUS_KEY=your_api_key
8-
# SKYROUTE_AMADEUS_SECRET=your_api_secret
8+
# OPENSKY_AMADEUS_KEY=your_api_key
9+
# OPENSKY_AMADEUS_SECRET=your_api_secret
10+
# Legacy fallback: SKYROUTE_AMADEUS_KEY=your_api_key
11+
# Legacy fallback: SKYROUTE_AMADEUS_SECRET=your_api_secret

.github/workflows/ci.yml

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -62,16 +62,17 @@ jobs:
6262

6363
- name: Run CLI smoke checks
6464
run: |
65-
skyroute --version | grep -q "skyroute "
66-
skyroute demo --json > /tmp/demo.json
65+
opensky --version | grep -q "opensky "
66+
skyroute --version | grep -q "opensky "
67+
opensky demo --json > /tmp/demo.json
6768
python - <<'PY'
6869
import json
6970
from pathlib import Path
7071
7172
data = json.loads(Path("/tmp/demo.json").read_text())
7273
assert data, "demo output is empty"
7374
PY
74-
skyroute zones > /tmp/zones.txt
75+
opensky zones > /tmp/zones.txt
7576
grep -q "Active Conflict Zones" /tmp/zones.txt
7677
7778
- name: Upload build artifacts

.github/workflows/release.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -124,7 +124,7 @@ jobs:
124124

125125
environment:
126126
name: pypi
127-
url: https://pypi.org/project/skyroute/
127+
url: https://pypi.org/project/opensky-cli/
128128

129129
steps:
130130
- name: Download build artifacts

README.md

Lines changed: 30 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# opensky
22

3-
`skyroute` is an open-source flight search CLI that aggregates Google Flights, Duffel, and Amadeus results, then flags itineraries that transit through risky airports, land in risky countries, or appear to overfly whole-country conflict zones on regional segments.
3+
`opensky` is an open-source flight search CLI that aggregates Google Flights, Duffel, and Amadeus results, then flags itineraries that transit through risky airports, land in risky countries, or appear to overfly whole-country conflict zones on regional segments.
44

55
## What The Engine Evaluates Today
66

@@ -17,7 +17,13 @@ It does not ingest filed routings, live FIR closures, or airline-specific detour
1717

1818
Requires Python 3.11+.
1919

20-
Install directly from GitHub:
20+
Install from PyPI:
21+
22+
```bash
23+
pip install opensky-cli
24+
```
25+
26+
GitHub install still works:
2127

2228
```bash
2329
pip install "git+https://github.com/buildingopen/opensky.git"
@@ -34,75 +40,77 @@ pip install -e .
3440

3541
Copy `.env.example` to `.env` and fill in any API keys you have. Google Flights works without any keys.
3642

43+
`skyroute` remains available as a compatibility command for now, but `opensky` is the canonical CLI.
44+
3745
## Quick Demo
3846

3947
See the full output without any API keys or network calls:
4048

4149
```bash
42-
skyroute demo
43-
skyroute demo --show-risky
50+
opensky demo
51+
opensky demo --show-risky
4452
```
4553

46-
![skyroute demo](demo.gif)
54+
![opensky demo](demo.gif)
4755

4856
## Providers
4957

50-
`skyroute` supports three providers. Google Flights is always available. Duffel and Amadeus activate automatically when their env vars are set.
58+
`opensky` supports three providers. Google Flights is always available. Duffel and Amadeus activate automatically when their env vars are set.
5159

5260
| Provider | Env vars | Notes |
5361
|----------|----------|-------|
5462
| Google Flights | none (default) | Scrapes Google Flights. Needs a residential IP. |
55-
| [Duffel](https://duffel.com) | `SKYROUTE_DUFFEL_TOKEN` | API-based search. |
56-
| [Amadeus](https://developers.amadeus.com) | `SKYROUTE_AMADEUS_KEY` + `SKYROUTE_AMADEUS_SECRET` | API-based search. |
63+
| [Duffel](https://duffel.com) | `OPENSKY_DUFFEL_TOKEN` | Fallback: `SKYROUTE_DUFFEL_TOKEN`. |
64+
| [Amadeus](https://developers.amadeus.com) | `OPENSKY_AMADEUS_KEY` + `OPENSKY_AMADEUS_SECRET` | Fallback: legacy `SKYROUTE_AMADEUS_KEY` + `SKYROUTE_AMADEUS_SECRET`. |
5765

5866
When multiple providers are configured, results are aggregated and deduplicated. If one provider fails, the CLI reports partial results. If every provider fails, the command exits non-zero.
5967

6068
Use `--provider` / `-p` to limit to a single provider:
6169

6270
```bash
63-
skyroute search BLR HAM 2026-04-10 --provider duffel
71+
opensky search BLR HAM 2026-04-10 --provider duffel
6472
```
6573

6674
## Usage
6775

6876
### Single route search
6977

7078
```bash
71-
skyroute search BLR HAM 2026-04-10
72-
skyroute search BLR HAM 2026-04-10 --currency EUR --show-risky
73-
skyroute search BLR HAM 2026-04-10 --json
74-
skyroute search BLR HAM 2026-04-10 --provider duffel
79+
opensky search BLR HAM 2026-04-10
80+
opensky search BLR HAM 2026-04-10 --currency EUR --show-risky
81+
opensky search BLR HAM 2026-04-10 --json
82+
opensky search BLR HAM 2026-04-10 --provider duffel
7583
```
7684

7785
### Multi-route scan
7886

7987
Generate a config file:
8088

8189
```bash
82-
skyroute config init
90+
opensky config init
8391
```
8492

8593
Edit `scan.toml` with your origins, destinations, and dates, then:
8694

8795
```bash
88-
skyroute scan --config scan.toml
89-
skyroute scan --config scan.toml --workers 5 --json -o results.json
96+
opensky scan --config scan.toml
97+
opensky scan --config scan.toml --workers 5 --json -o results.json
9098
```
9199

92100
Scans are cached. If interrupted, rerun the same command to reuse cached provider results.
93101

94102
### Conflict zones
95103

96104
```bash
97-
skyroute zones
98-
skyroute zones --update
105+
opensky zones
106+
opensky zones --update
99107
```
100108

101109
### Cache management
102110

103111
```bash
104-
skyroute cache stats
105-
skyroute cache clear
112+
opensky cache stats
113+
opensky cache clear
106114
```
107115

108116
## Scan Config
@@ -140,7 +148,7 @@ CPH = 5
140148

141149
## Safety Data
142150

143-
`skyroute` ships with a bundled conflict-zone database based on:
151+
`opensky` ships with a bundled conflict-zone database based on:
144152

145153
- [EASA Conflict Zone Information Bulletins (CZIB)](https://www.easa.europa.eu/en/domains/air-operations/czibs)
146154
- [Safe Airspace](https://safeairspace.net)
@@ -149,7 +157,7 @@ CPH = 5
149157

150158
The dataset maps countries and specific airports to `SAFE`, `CAUTION`, `HIGH_RISK`, and `DO_NOT_FLY`. Whole-country zones also use bundled country geometry for regional overflight screening.
151159

152-
Run `skyroute zones --update` to fetch the latest dataset from GitHub.
160+
Run `opensky zones --update` to fetch the latest dataset from GitHub.
153161

154162
This is informational only. Always check official NOTAMs and airline advisories before booking.
155163

RELEASING.md

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,9 +26,15 @@ PyPI publish is gated behind the repository variable `PYPI_PUBLISH=true`.
2626

2727
To enable it:
2828

29-
1. Create the package on PyPI.
29+
1. Create the `opensky-cli` package on PyPI.
3030
2. Configure trusted publishing for this GitHub repository in PyPI.
3131
3. Create the GitHub Actions environment `pypi` if you want environment protection rules.
3232
4. Set the repository variable `PYPI_PUBLISH` to `true`.
3333

3434
Once that is configured, the same tag-based release workflow publishes the built distributions to PyPI after the GitHub release assets are created.
35+
36+
Public install target:
37+
38+
```bash
39+
pip install opensky-cli
40+
```

pyproject.toml

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,9 @@ requires = ["hatchling"]
33
build-backend = "hatchling.build"
44

55
[project]
6-
name = "skyroute"
7-
version = "0.1.0"
8-
description = "Flight search CLI with itinerary conflict-zone flagging"
6+
name = "opensky-cli"
7+
version = "0.1.1"
8+
description = "OpenSky flight search CLI with itinerary and overflight conflict-zone flagging"
99
readme = "README.md"
1010
license = "MIT"
1111
requires-python = ">=3.11"
@@ -32,7 +32,8 @@ dependencies = [
3232
]
3333

3434
[project.scripts]
35-
skyroute = "skyroute.cli:app"
35+
opensky = "opensky.cli:app"
36+
skyroute = "opensky.cli:app"
3637

3738
[project.urls]
3839
Homepage = "https://github.com/buildingopen/opensky"
@@ -48,7 +49,7 @@ exclude = [
4849
]
4950

5051
[tool.hatch.build.targets.wheel]
51-
packages = ["src/skyroute"]
52+
packages = ["src/opensky", "src/skyroute"]
5253

5354
[tool.pytest.ini_options]
5455
testpaths = ["tests"]

src/opensky/__init__.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
"""opensky - flight search with itinerary and overflight conflict-zone flagging."""
2+
3+
__version__ = "0.1.1"

src/opensky/__main__.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
from opensky.cli import app
2+
3+
app()

src/opensky/_vendor/__init__.py

Whitespace-only changes.

0 commit comments

Comments
 (0)