occultations 0.1.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,245 @@
1
+ Metadata-Version: 2.3
2
+ Name: occultations
3
+ Version: 0.1.0
4
+ Summary: Lunar occultation timings and visibility maps
5
+ Author: trice
6
+ Author-email: trice <rtphokie@gmail.com>
7
+ Requires-Dist: cartopy>=0.26.0
8
+ Requires-Dist: geopy>=2.5.0
9
+ Requires-Dist: matplotlib>=3.11.2
10
+ Requires-Dist: skyfield>=1.55
11
+ Requires-Dist: timezonefinder>=9.0.0
12
+ Requires-Python: >=3.11
13
+ Description-Content-Type: text/markdown
14
+
15
+ # occultations
16
+
17
+ Predicts lunar occultations — the Moon passing in front of a planet or bright star — for a
18
+ given location and date, draws maps and Google Earth files of where on Earth an occultation
19
+ can be seen, and
20
+ forecasts the occultations visible from a location over the coming months.
21
+
22
+ Positions come from [Skyfield](https://rhodesmill.org/skyfield/) using the JPL DE421 ephemeris,
23
+ computed topocentrically (as seen from the observer's spot on Earth, not Earth's center).
24
+
25
+ ## Installation
26
+
27
+ Requires Python 3.11+ and [uv](https://docs.astral.sh/uv/).
28
+
29
+ ```sh
30
+ uv sync
31
+ ```
32
+
33
+ Data files are stored in `/var/data` (the directory must exist and be writable):
34
+
35
+ - `de421.bsp` — JPL ephemeris (~17 MB), downloaded on first run
36
+ - `cartopy/` — Natural Earth coastlines and borders, downloaded the first time a map is drawn
37
+
38
+ ## Usage
39
+
40
+ ```
41
+ occultations TARGET DATE [LOCATION] [options] # timing for one date, optional map
42
+ occultations forecast LOCATION [options] # upcoming visible occultations
43
+ ```
44
+
45
+ | Argument | Description |
46
+ |------------|-------------|
47
+ | `TARGET` | A planet (`mercury` … `pluto`), a bright star (see below), or coordinates as `"RA_hours,Dec_deg"` |
48
+ | `DATE` | `YYYY-MM-DD` — the local date at `LOCATION`, or the UTC date when only mapping |
49
+ | `LOCATION` | `"City, ST"` (looked up via OpenStreetMap) or `"lat,lon"` in decimal degrees, west negative. Optional when `--map` is given |
50
+
51
+ Built-in stars: Aldebaran, Alcyone (Pleiades), Antares, Elnath, Mebsuta, Nunki, Pollux,
52
+ Regulus, Spica, Zubenelgenubi.
53
+
54
+ ### Timing options
55
+
56
+ | Option | Description |
57
+ |--------|-------------|
58
+ | `--elevation M` | Observer elevation in meters (defaults to the geocoder's value, or 0) |
59
+ | `--timezone TZ` | Override the IANA time zone (normally derived from the coordinates) |
60
+ | `--prev-next` | Also show the date and target of the previous and next occultation visible from `LOCATION`, of any built-in planet or star (searches up to 20 years each way) |
61
+ | `--planets-only` | With `--prev-next`, consider only planets |
62
+
63
+ ### Map and Google Earth options
64
+
65
+ | Option | Description |
66
+ |--------|-------------|
67
+ | `--map [PATH]` | Also draw a visibility map as a PNG. Without `PATH` it is named `occultation_<target>_<date>[_<region>].png` in the current directory. A second, clean copy with no title, legend or labels is written alongside it as `<name>_clean.png` |
68
+ | `--region NAME` | Limit the map to a preset: `north-america`, `conus`, `europe`, `africa` |
69
+ | `--extent W E S N` | Limit the map to a longitude/latitude box (degrees, west/south negative) |
70
+ | `--resolution DEG` | Map grid spacing in degrees (default `0.25`; smaller is slower) |
71
+ | `--kmz [PATH]` | Also write a Google Earth file (KMZ). Without `PATH` it is named `occultation_<target>_<date>[_<region>].kmz` |
72
+ | `--mark-location` | Put a marker at `LOCATION` on the map / in the KMZ |
73
+
74
+ `--region`, `--extent`, `--resolution` and `--mark-location` apply to both `--map` and `--kmz`;
75
+ use both flags together to get a PNG and a KMZ from one calculation. Without `--region` or
76
+ `--extent`, the area is chosen automatically around where the event is visible.
77
+
78
+ > **Note:** `--map` and `--kmz` take an optional path, so put them *after* `LOCATION` (or give
79
+ > them a path). `occultations jupiter 2026-10-06 --map "Raleigh, NC"` would treat
80
+ > `"Raleigh, NC"` as the filename.
81
+
82
+ ### Forecast options
83
+
84
+ `occultations forecast LOCATION` searches a span of dates for every occultation of the
85
+ built-in planets and stars that can actually be seen from `LOCATION`.
86
+
87
+ | Option | Description |
88
+ |--------|-------------|
89
+ | `--start DATE` | First local date to search (default today) |
90
+ | `--days N` | Number of days to search (default 365) |
91
+ | `--end DATE` | Last local date to search, instead of `--days` |
92
+ | `--targets T [T ...]` | Only these targets (default: all planets and built-in stars) |
93
+ | `--planets-only` | Only planets, no stars (cannot be combined with `--targets`) |
94
+ | `--include-daylight` | Also list events of bright planets (Mercury–Saturn) with the Sun up or in civil twilight |
95
+ | `--elevation M`, `--timezone TZ` | As for timing |
96
+
97
+ An occultation is listed when its disappearance or reappearance happens with the Moon above
98
+ the horizon and the Sun at least 6° below it (or, with `--include-daylight`, at any Sun
99
+ altitude for bright planets).
100
+
101
+ ## Examples
102
+
103
+ Contact times for Jupiter from Raleigh:
104
+
105
+ ```sh
106
+ uv run occultations jupiter 2026-10-06 "Raleigh, NC"
107
+ ```
108
+
109
+ ```
110
+ Lunar occultation of Jupiter
111
+ Location: Raleigh, NC (35.7804°, -78.6391°), 0 m
112
+ Date: 2026-10-06 (America/New_York)
113
+ Moon: 20% illuminated, radius 16.05'; Jupiter radius 16.8"
114
+
115
+ Event Local time UTC Moon alt/az PA Sky
116
+ ----------------------------------------------------------------------------------------------------
117
+ Disappearance begins (1st contact) 04:18 EDT 08:18 15.2° E 82° 113° dark
118
+ Fully hidden (2nd contact) 04:19 EDT 08:19 15.4° E 82° 113° dark
119
+ Reappearance begins (3rd contact) 05:21 EDT 09:21 27.6° E 91° 288° dark
120
+ Reappearance ends (4th contact) 05:23 EDT 09:23 27.9° E 91° 288° dark
121
+
122
+ Duration (first to last contact): 65 min
123
+ ```
124
+
125
+ Using coordinates instead of a city:
126
+
127
+ ```sh
128
+ uv run occultations jupiter 2026-10-06 "35.78,-78.64"
129
+ ```
130
+
131
+ Contact times plus a North America visibility map:
132
+
133
+ ```sh
134
+ uv run occultations jupiter 2026-10-06 "Raleigh, NC" --region north-america --map
135
+ ```
136
+
137
+ Map only, framed automatically, saved to a chosen path:
138
+
139
+ ```sh
140
+ uv run occultations jupiter 2026-10-06 --map jupiter.png
141
+ ```
142
+
143
+ Google Earth file of the whole visibility path (open it in Google Earth or Google Earth Web):
144
+
145
+ ```sh
146
+ uv run occultations jupiter 2026-10-06 --kmz
147
+ ```
148
+
149
+ PNG map and KMZ together, with the observer marked:
150
+
151
+ ```sh
152
+ uv run occultations jupiter 2026-10-06 "Raleigh, NC" --region north-america --mark-location --map --kmz
153
+ ```
154
+
155
+ Map of a custom area with the observer marked:
156
+
157
+ ```sh
158
+ uv run occultations jupiter 2026-10-06 "Raleigh, NC" --extent -95 -65 25 45 --mark-location --map
159
+ ```
160
+
161
+ Visible occultations from Raleigh over the next year:
162
+
163
+ ```sh
164
+ uv run occultations forecast "Raleigh, NC" --start 2026-10-01
165
+ ```
166
+
167
+ ```
168
+ Visible lunar occultations from Raleigh, NC (35.7804°, -78.6391°)
169
+ 2026-10-01 to 2027-09-30, times in America/New_York
170
+
171
+ Date Target Disappears Reappears Moon
172
+ ----------------------------------------------------------------------------------------------------------------------------------------------
173
+ Tue 2026-10-06 Jupiter 04:18 15° E dark bright limb 05:23 28° E dark dark limb 20%
174
+ Sun 2027-06-20 Nunki 03:21 26° SSW dark bright limb 04:07 23° SSW dark dark limb 98%
175
+ ```
176
+
177
+ Only Jupiter and Regulus over the rest of the year, including daytime events:
178
+
179
+ ```sh
180
+ uv run occultations forecast "Raleigh, NC" --end 2026-12-31 --targets jupiter regulus --include-daylight
181
+ ```
182
+
183
+ ## Reading the output
184
+
185
+ **Timing table**
186
+
187
+ - Planets show four contacts, since they have a visible disk; stars disappear and reappear
188
+ instantly, so they show a single disappearance and reappearance.
189
+ - **Moon alt/az** — the Moon's altitude and compass direction at that moment. Events with the
190
+ Moon below the horizon are flagged.
191
+ - **PA** — position angle on the Moon's limb where the event happens, in degrees measured from
192
+ celestial north through east (90° is the Moon's eastern edge).
193
+ - **Sky** — daylight, civil/nautical/astronomical twilight, or dark, from the Sun's altitude.
194
+ - Times are rounded to the nearest minute.
195
+ - If there is no occultation, the closest approach to the Moon's center is reported instead.
196
+
197
+ **Forecast table**
198
+
199
+ - One row per occultation, with the local date and time it starts and ends. For planets these
200
+ are the first and last contacts.
201
+ - Each event shows the Moon's altitude and compass direction, the sky condition, and whether
202
+ it happens on the Moon's **bright limb** (sunlit edge) or **dark limb**. Dark-limb events are
203
+ much easier to watch; a star vanishing at the dark limb seems to blink out.
204
+ - "Moon below horizon" means that half of the event can't be seen, but the other half can.
205
+ - **Moon** is the percentage of the Moon's disk that is illuminated.
206
+ - Targets marked `*` (Uranus, Neptune, Pluto) need a telescope.
207
+ - Only the built-in planets and ten bright stars are searched, so fainter-star occultations
208
+ that dedicated services such as [IOTA](https://occultations.org) list are not included.
209
+
210
+ **Map**
211
+
212
+ | Color | Meaning |
213
+ |-------|---------|
214
+ | Dark blue | Visible with the Sun more than 12° below the horizon |
215
+ | Light blue | Visible in twilight |
216
+ | Gold | Visible in daylight (bright planets only, with a telescope) |
217
+ | Gray | The occultation happens there, but the Moon is below the horizon |
218
+
219
+ A lighter shade of each color marks where only one contact happens with the Moon above the
220
+ horizon: only the disappearance where the Moon sets while the target is hidden, or only the
221
+ reappearance where it rises. Full-strength areas see both.
222
+
223
+ The title's "global event window" is the span during which the occultation is happening
224
+ anywhere on Earth.
225
+
226
+ **Google Earth (KMZ)**
227
+
228
+ The KMZ shows translucent polygons in the colors above, including the lighter shades
229
+ (folder *Visibility*), and
230
+ disappearance-time lines labeled in UTC (folder *Disappearance
231
+ times*), plus the observer if `--mark-location` is used. Each folder can be toggled in
232
+ Google Earth's sidebar. With `--region` or `--extent`, the shapes extend somewhat past the
233
+ requested box; without either, they cover the whole path where the Moon is up.
234
+
235
+ ## Accuracy
236
+
237
+ For the 2026-10-06 Jupiter occultation, computed times agree with published predictions for
238
+ Atlanta, Boston, Chicago, Miami, New York, and Winnipeg to within about a minute.
239
+
240
+ - The Moon is treated as a smooth sphere, so lunar mountains and valleys are ignored. This
241
+ shifts times by only seconds in most places, but near the northern or southern edge of the
242
+ path (a *graze*) predictions are less reliable and the target may blink in and out several times.
243
+ - Map boundaries use the target's center, so for planets they are accurate to about the
244
+ planet's apparent radius.
245
+ - Atmospheric refraction is not modeled.
@@ -0,0 +1,231 @@
1
+ # occultations
2
+
3
+ Predicts lunar occultations — the Moon passing in front of a planet or bright star — for a
4
+ given location and date, draws maps and Google Earth files of where on Earth an occultation
5
+ can be seen, and
6
+ forecasts the occultations visible from a location over the coming months.
7
+
8
+ Positions come from [Skyfield](https://rhodesmill.org/skyfield/) using the JPL DE421 ephemeris,
9
+ computed topocentrically (as seen from the observer's spot on Earth, not Earth's center).
10
+
11
+ ## Installation
12
+
13
+ Requires Python 3.11+ and [uv](https://docs.astral.sh/uv/).
14
+
15
+ ```sh
16
+ uv sync
17
+ ```
18
+
19
+ Data files are stored in `/var/data` (the directory must exist and be writable):
20
+
21
+ - `de421.bsp` — JPL ephemeris (~17 MB), downloaded on first run
22
+ - `cartopy/` — Natural Earth coastlines and borders, downloaded the first time a map is drawn
23
+
24
+ ## Usage
25
+
26
+ ```
27
+ occultations TARGET DATE [LOCATION] [options] # timing for one date, optional map
28
+ occultations forecast LOCATION [options] # upcoming visible occultations
29
+ ```
30
+
31
+ | Argument | Description |
32
+ |------------|-------------|
33
+ | `TARGET` | A planet (`mercury` … `pluto`), a bright star (see below), or coordinates as `"RA_hours,Dec_deg"` |
34
+ | `DATE` | `YYYY-MM-DD` — the local date at `LOCATION`, or the UTC date when only mapping |
35
+ | `LOCATION` | `"City, ST"` (looked up via OpenStreetMap) or `"lat,lon"` in decimal degrees, west negative. Optional when `--map` is given |
36
+
37
+ Built-in stars: Aldebaran, Alcyone (Pleiades), Antares, Elnath, Mebsuta, Nunki, Pollux,
38
+ Regulus, Spica, Zubenelgenubi.
39
+
40
+ ### Timing options
41
+
42
+ | Option | Description |
43
+ |--------|-------------|
44
+ | `--elevation M` | Observer elevation in meters (defaults to the geocoder's value, or 0) |
45
+ | `--timezone TZ` | Override the IANA time zone (normally derived from the coordinates) |
46
+ | `--prev-next` | Also show the date and target of the previous and next occultation visible from `LOCATION`, of any built-in planet or star (searches up to 20 years each way) |
47
+ | `--planets-only` | With `--prev-next`, consider only planets |
48
+
49
+ ### Map and Google Earth options
50
+
51
+ | Option | Description |
52
+ |--------|-------------|
53
+ | `--map [PATH]` | Also draw a visibility map as a PNG. Without `PATH` it is named `occultation_<target>_<date>[_<region>].png` in the current directory. A second, clean copy with no title, legend or labels is written alongside it as `<name>_clean.png` |
54
+ | `--region NAME` | Limit the map to a preset: `north-america`, `conus`, `europe`, `africa` |
55
+ | `--extent W E S N` | Limit the map to a longitude/latitude box (degrees, west/south negative) |
56
+ | `--resolution DEG` | Map grid spacing in degrees (default `0.25`; smaller is slower) |
57
+ | `--kmz [PATH]` | Also write a Google Earth file (KMZ). Without `PATH` it is named `occultation_<target>_<date>[_<region>].kmz` |
58
+ | `--mark-location` | Put a marker at `LOCATION` on the map / in the KMZ |
59
+
60
+ `--region`, `--extent`, `--resolution` and `--mark-location` apply to both `--map` and `--kmz`;
61
+ use both flags together to get a PNG and a KMZ from one calculation. Without `--region` or
62
+ `--extent`, the area is chosen automatically around where the event is visible.
63
+
64
+ > **Note:** `--map` and `--kmz` take an optional path, so put them *after* `LOCATION` (or give
65
+ > them a path). `occultations jupiter 2026-10-06 --map "Raleigh, NC"` would treat
66
+ > `"Raleigh, NC"` as the filename.
67
+
68
+ ### Forecast options
69
+
70
+ `occultations forecast LOCATION` searches a span of dates for every occultation of the
71
+ built-in planets and stars that can actually be seen from `LOCATION`.
72
+
73
+ | Option | Description |
74
+ |--------|-------------|
75
+ | `--start DATE` | First local date to search (default today) |
76
+ | `--days N` | Number of days to search (default 365) |
77
+ | `--end DATE` | Last local date to search, instead of `--days` |
78
+ | `--targets T [T ...]` | Only these targets (default: all planets and built-in stars) |
79
+ | `--planets-only` | Only planets, no stars (cannot be combined with `--targets`) |
80
+ | `--include-daylight` | Also list events of bright planets (Mercury–Saturn) with the Sun up or in civil twilight |
81
+ | `--elevation M`, `--timezone TZ` | As for timing |
82
+
83
+ An occultation is listed when its disappearance or reappearance happens with the Moon above
84
+ the horizon and the Sun at least 6° below it (or, with `--include-daylight`, at any Sun
85
+ altitude for bright planets).
86
+
87
+ ## Examples
88
+
89
+ Contact times for Jupiter from Raleigh:
90
+
91
+ ```sh
92
+ uv run occultations jupiter 2026-10-06 "Raleigh, NC"
93
+ ```
94
+
95
+ ```
96
+ Lunar occultation of Jupiter
97
+ Location: Raleigh, NC (35.7804°, -78.6391°), 0 m
98
+ Date: 2026-10-06 (America/New_York)
99
+ Moon: 20% illuminated, radius 16.05'; Jupiter radius 16.8"
100
+
101
+ Event Local time UTC Moon alt/az PA Sky
102
+ ----------------------------------------------------------------------------------------------------
103
+ Disappearance begins (1st contact) 04:18 EDT 08:18 15.2° E 82° 113° dark
104
+ Fully hidden (2nd contact) 04:19 EDT 08:19 15.4° E 82° 113° dark
105
+ Reappearance begins (3rd contact) 05:21 EDT 09:21 27.6° E 91° 288° dark
106
+ Reappearance ends (4th contact) 05:23 EDT 09:23 27.9° E 91° 288° dark
107
+
108
+ Duration (first to last contact): 65 min
109
+ ```
110
+
111
+ Using coordinates instead of a city:
112
+
113
+ ```sh
114
+ uv run occultations jupiter 2026-10-06 "35.78,-78.64"
115
+ ```
116
+
117
+ Contact times plus a North America visibility map:
118
+
119
+ ```sh
120
+ uv run occultations jupiter 2026-10-06 "Raleigh, NC" --region north-america --map
121
+ ```
122
+
123
+ Map only, framed automatically, saved to a chosen path:
124
+
125
+ ```sh
126
+ uv run occultations jupiter 2026-10-06 --map jupiter.png
127
+ ```
128
+
129
+ Google Earth file of the whole visibility path (open it in Google Earth or Google Earth Web):
130
+
131
+ ```sh
132
+ uv run occultations jupiter 2026-10-06 --kmz
133
+ ```
134
+
135
+ PNG map and KMZ together, with the observer marked:
136
+
137
+ ```sh
138
+ uv run occultations jupiter 2026-10-06 "Raleigh, NC" --region north-america --mark-location --map --kmz
139
+ ```
140
+
141
+ Map of a custom area with the observer marked:
142
+
143
+ ```sh
144
+ uv run occultations jupiter 2026-10-06 "Raleigh, NC" --extent -95 -65 25 45 --mark-location --map
145
+ ```
146
+
147
+ Visible occultations from Raleigh over the next year:
148
+
149
+ ```sh
150
+ uv run occultations forecast "Raleigh, NC" --start 2026-10-01
151
+ ```
152
+
153
+ ```
154
+ Visible lunar occultations from Raleigh, NC (35.7804°, -78.6391°)
155
+ 2026-10-01 to 2027-09-30, times in America/New_York
156
+
157
+ Date Target Disappears Reappears Moon
158
+ ----------------------------------------------------------------------------------------------------------------------------------------------
159
+ Tue 2026-10-06 Jupiter 04:18 15° E dark bright limb 05:23 28° E dark dark limb 20%
160
+ Sun 2027-06-20 Nunki 03:21 26° SSW dark bright limb 04:07 23° SSW dark dark limb 98%
161
+ ```
162
+
163
+ Only Jupiter and Regulus over the rest of the year, including daytime events:
164
+
165
+ ```sh
166
+ uv run occultations forecast "Raleigh, NC" --end 2026-12-31 --targets jupiter regulus --include-daylight
167
+ ```
168
+
169
+ ## Reading the output
170
+
171
+ **Timing table**
172
+
173
+ - Planets show four contacts, since they have a visible disk; stars disappear and reappear
174
+ instantly, so they show a single disappearance and reappearance.
175
+ - **Moon alt/az** — the Moon's altitude and compass direction at that moment. Events with the
176
+ Moon below the horizon are flagged.
177
+ - **PA** — position angle on the Moon's limb where the event happens, in degrees measured from
178
+ celestial north through east (90° is the Moon's eastern edge).
179
+ - **Sky** — daylight, civil/nautical/astronomical twilight, or dark, from the Sun's altitude.
180
+ - Times are rounded to the nearest minute.
181
+ - If there is no occultation, the closest approach to the Moon's center is reported instead.
182
+
183
+ **Forecast table**
184
+
185
+ - One row per occultation, with the local date and time it starts and ends. For planets these
186
+ are the first and last contacts.
187
+ - Each event shows the Moon's altitude and compass direction, the sky condition, and whether
188
+ it happens on the Moon's **bright limb** (sunlit edge) or **dark limb**. Dark-limb events are
189
+ much easier to watch; a star vanishing at the dark limb seems to blink out.
190
+ - "Moon below horizon" means that half of the event can't be seen, but the other half can.
191
+ - **Moon** is the percentage of the Moon's disk that is illuminated.
192
+ - Targets marked `*` (Uranus, Neptune, Pluto) need a telescope.
193
+ - Only the built-in planets and ten bright stars are searched, so fainter-star occultations
194
+ that dedicated services such as [IOTA](https://occultations.org) list are not included.
195
+
196
+ **Map**
197
+
198
+ | Color | Meaning |
199
+ |-------|---------|
200
+ | Dark blue | Visible with the Sun more than 12° below the horizon |
201
+ | Light blue | Visible in twilight |
202
+ | Gold | Visible in daylight (bright planets only, with a telescope) |
203
+ | Gray | The occultation happens there, but the Moon is below the horizon |
204
+
205
+ A lighter shade of each color marks where only one contact happens with the Moon above the
206
+ horizon: only the disappearance where the Moon sets while the target is hidden, or only the
207
+ reappearance where it rises. Full-strength areas see both.
208
+
209
+ The title's "global event window" is the span during which the occultation is happening
210
+ anywhere on Earth.
211
+
212
+ **Google Earth (KMZ)**
213
+
214
+ The KMZ shows translucent polygons in the colors above, including the lighter shades
215
+ (folder *Visibility*), and
216
+ disappearance-time lines labeled in UTC (folder *Disappearance
217
+ times*), plus the observer if `--mark-location` is used. Each folder can be toggled in
218
+ Google Earth's sidebar. With `--region` or `--extent`, the shapes extend somewhat past the
219
+ requested box; without either, they cover the whole path where the Moon is up.
220
+
221
+ ## Accuracy
222
+
223
+ For the 2026-10-06 Jupiter occultation, computed times agree with published predictions for
224
+ Atlanta, Boston, Chicago, Miami, New York, and Winnipeg to within about a minute.
225
+
226
+ - The Moon is treated as a smooth sphere, so lunar mountains and valleys are ignored. This
227
+ shifts times by only seconds in most places, but near the northern or southern edge of the
228
+ path (a *graze*) predictions are less reliable and the target may blink in and out several times.
229
+ - Map boundaries use the target's center, so for planets they are accurate to about the
230
+ planet's apparent radius.
231
+ - Atmospheric refraction is not modeled.
@@ -0,0 +1,24 @@
1
+ [project]
2
+ name = "occultations"
3
+ version = "0.1.0"
4
+ description = "Lunar occultation timings and visibility maps"
5
+ readme = "README.md"
6
+ requires-python = ">=3.11"
7
+ dependencies = [
8
+ "cartopy>=0.26.0",
9
+ "geopy>=2.5.0",
10
+ "matplotlib>=3.11.2",
11
+ "skyfield>=1.55",
12
+ "timezonefinder>=9.0.0",
13
+ ]
14
+
15
+ [[project.authors]]
16
+ name = "trice"
17
+ email = "rtphokie@gmail.com"
18
+
19
+ [project.scripts]
20
+ occultations = "occultations:main"
21
+
22
+ [build-system]
23
+ requires = ["uv_build>=0.12.19,<0.13.0"]
24
+ build-backend = "uv_build"
@@ -0,0 +1,23 @@
1
+ [project]
2
+ name = "occultations"
3
+ version = "0.1.0"
4
+ description = "Lunar occultation timings and visibility maps"
5
+ readme = "README.md"
6
+ authors = [
7
+ { name = "trice", email = "rtphokie@gmail.com" }
8
+ ]
9
+ requires-python = ">=3.11"
10
+ dependencies = [
11
+ "cartopy>=0.26.0",
12
+ "geopy>=2.5.0",
13
+ "matplotlib>=3.11.2",
14
+ "skyfield>=1.55",
15
+ "timezonefinder>=9.0.0",
16
+ ]
17
+
18
+ [project.scripts]
19
+ occultations = "occultations:main"
20
+
21
+ [build-system]
22
+ requires = ["uv_build>=0.12.19,<0.13.0"]
23
+ build-backend = "uv_build"