1+ from _typeshed import Unused
12from datetime import datetime as _datetime
2- from typing import TypedDict , overload
3- from typing_extensions import Never , Self , TypeAlias , deprecated
3+ from typing import NoReturn , Protocol , TypedDict , overload , type_check_only
4+ from typing_extensions import Self , TypeAlias , deprecated , disjoint_base
45
56_DateInitType : TypeAlias = (
67 Date
@@ -15,31 +16,31 @@ _DateInitType: TypeAlias = (
1516 | _datetime
1617)
1718
19+ @type_check_only
1820class _DateDescriptor :
1921 @overload
2022 def __get__ (self , obj : None , objtype : type | None = None ) -> Self : ...
2123 @overload
2224 def __get__ (self , obj : object , objtype : type | None = None ) -> Date : ...
2325 def __set__ (self , obj : object , value : _DateInitType ) -> None : ...
2426
25- # Descriptor classes for angle attributes that accept float or string input
26- # These descriptors don't actually exist at runtime but help type checkers
27- # distinguish between the different angle storage formats used in the C extension
28-
27+ @type_check_only
2928class _AngleDescriptorRadiansHours :
3029 @overload
3130 def __get__ (self , obj : None , objtype : type | None = None ) -> Self : ...
3231 @overload
3332 def __get__ (self , obj : object , objtype : type | None = None ) -> Angle : ...
3433 def __set__ (self , obj : object , value : float | str ) -> None : ...
3534
35+ @type_check_only
3636class _AngleDescriptorRadiansDegrees :
3737 @overload
3838 def __get__ (self , obj : None , objtype : type | None = None ) -> Self : ...
3939 @overload
4040 def __get__ (self , obj : object , objtype : type | None = None ) -> Angle : ...
4141 def __set__ (self , obj : object , value : float | str ) -> None : ...
4242
43+ @type_check_only
4344class _AngleDescriptorDegreesRadians :
4445 @overload
4546 def __get__ (self , obj : None , objtype : type | None = None ) -> Self : ...
@@ -58,8 +59,9 @@ meters_per_au: float
5859moon_radius : float
5960sun_radius : float
6061
61- class Angle (float ):
62- def __new__ (cls , * args : object , ** kwargs : object ) -> Never : ...
62+ @disjoint_base
63+ class Angle (float ): # type: ignore[type-var]
64+ def __new__ (cls , * args : Unused , ** kwargs : Unused ) -> NoReturn : ...
6365 @property
6466 def norm (self ) -> Angle : ...
6567 @property
@@ -74,6 +76,7 @@ class Date(float):
7476 def tuple (self ) -> tuple [int , int , int , int , int , float ]: ...
7577 def datetime (self ) -> _datetime : ...
7678
79+ @disjoint_base
7780class Observer :
7881 lat : _AngleDescriptorRadiansDegrees
7982 lon : _AngleDescriptorRadiansDegrees
@@ -87,11 +90,12 @@ class Observer:
8790 epoch : _DateDescriptor
8891 date : _DateDescriptor
8992
90- def __init__ (self , / , * args : object , ** kwargs : object ) -> None : ...
93+ def __init__ (self ) -> None : ...
9194 def sidereal_time (self ) -> Angle : ...
9295 def radec_of (self , az : float | str , alt : float | str ) -> tuple [Angle , Angle ]: ...
9396
94- class Body :
97+ @disjoint_base
98+ class Body (Protocol ):
9599 @property
96100 def name (self ) -> str | None : ...
97101 @property
@@ -138,7 +142,7 @@ class Body:
138142 def circumpolar (self ) -> bool : ...
139143 @property
140144 def neverup (self ) -> bool : ...
141- def __init__ (self , * args : object , ** kwargs : object ) -> Never : ...
145+ def __init__ (self , * args : Unused , ** kwargs : Unused ) -> None : ...
142146 def __copy__ (self ) -> Self : ...
143147 @overload
144148 def compute (self , observer : Observer , / ) -> None : ...
@@ -148,7 +152,7 @@ class Body:
148152 def writedb (self ) -> str : ...
149153 def parallactic_angle (self ) -> Angle : ...
150154
151- class Planet (Body ):
155+ class Planet (Body , Protocol ):
152156 @property
153157 def hlon (self ) -> Angle : ...
154158 @property
@@ -161,8 +165,14 @@ class Planet(Body):
161165 def phase (self ) -> float : ...
162166 @property
163167 def hlong (self ) -> Angle : ...
164- def __init__ (self , / , * args : object , ** kwargs : object ) -> Never : ...
168+ @overload
169+ def __init__ (self , observer : Observer , / ) -> None : ...
170+ @overload
171+ def __init__ (self , when : _DateInitType , / , epoch : _DateInitType = ...) -> None : ...
172+ @overload
173+ def __init__ (self , * args : Unused , ** kwargs : Unused ) -> None : ...
165174
175+ @disjoint_base
166176class Moon (Planet ):
167177 @property
168178 def libration_lat (self ) -> Angle : ...
@@ -174,23 +184,23 @@ class Moon(Planet):
174184 def moon_phase (self ) -> float : ...
175185 @property
176186 def subsolar_lat (self ) -> Angle : ...
177- def __init__ (self , / , * args : object , ** kwargs : object ) -> None : ...
178187
188+ @disjoint_base
179189class Jupiter (Planet ):
180190 @property
181191 def cmlI (self ) -> Angle : ...
182192 @property
183193 def cmlII (self ) -> Angle : ...
184- def __init__ (self , / , * args : object , ** kwargs : object ) -> None : ...
185194
195+ @disjoint_base
186196class Saturn (Planet ):
187197 @property
188198 def earth_tilt (self ) -> Angle : ...
189199 @property
190200 def sun_tilt (self ) -> Angle : ...
191- def __init__ (self , / , * args : object , ** kwargs : object ) -> None : ...
192201
193- class PlanetMoon :
202+ @disjoint_base
203+ class PlanetMoon (Protocol ):
194204 @property
195205 def name (self ) -> str : ...
196206 @property
@@ -219,7 +229,12 @@ class PlanetMoon:
219229 def earth_visible (self ) -> float : ...
220230 @property
221231 def sun_visible (self ) -> float : ...
222- def __init__ (self , / , * args : object , ** kwargs : object ) -> Never : ...
232+ @overload
233+ def __init__ (self , observer : Observer , / ) -> None : ...
234+ @overload
235+ def __init__ (self , when : _DateInitType , / , epoch : _DateInitType = ...) -> None : ...
236+ @overload
237+ def __init__ (self , ** kwargs : Unused ) -> None : ...
223238 def __copy__ (self ) -> Self : ...
224239 @overload
225240 def compute (self , observer : Observer , / ) -> None : ...
@@ -242,7 +257,7 @@ class FixedBody(Body):
242257 _pmdec : float
243258 _class : str
244259
245- def __init__ (self , / , * args : object , ** kwargs : object ) -> None : ...
260+ def __init__ (self ) -> None : ...
246261
247262class EllipticalBody (Planet ):
248263 name : str | None
@@ -260,7 +275,7 @@ class EllipticalBody(Planet):
260275 _size : float
261276 _e : float
262277
263- def __init__ (self , / , * args : object , ** kwargs : object ) -> None : ...
278+ def __init__ (self , * args : Unused , ** kwargs : Unused ) -> None : ...
264279
265280class ParabolicBody (Planet ):
266281 name : str | None
@@ -274,7 +289,7 @@ class ParabolicBody(Planet):
274289 _k : float
275290 _size : float
276291
277- def __init__ (self , / , * args : object , ** kwargs : object ) -> None : ...
292+ def __init__ (self , * args : Unused , ** kwargs : Unused ) -> None : ...
278293
279294class HyperbolicBody (Planet ):
280295 name : str | None
@@ -289,8 +304,9 @@ class HyperbolicBody(Planet):
289304 _k : float
290305 _size : float
291306
292- def __init__ (self , / , * args : object , ** kwargs : object ) -> None : ...
307+ def __init__ (self , * args : Unused , ** kwargs : Unused ) -> None : ...
293308
309+ @disjoint_base
294310class EarthSatellite (Body ):
295311 name : str | None
296312 epoch : _DateDescriptor
@@ -327,8 +343,8 @@ class EarthSatellite(Body):
327343 def range_velocity (self ) -> float : ...
328344 @property
329345 def eclipsed (self ) -> bool : ...
330- def __init__ (self , / , * args : object , ** kwargs : object ) -> None : ...
331346
347+ @type_check_only
332348class _MoonPhases (TypedDict ):
333349 new : Date
334350 full : Date
0 commit comments