Skip to content

Commit dd31a8a

Browse files
authored
[PyMeeus] Add stubs (#14649)
1 parent 49facf2 commit dd31a8a

21 files changed

Lines changed: 1024 additions & 0 deletions

stubs/PyMeeus/METADATA.toml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
version = "0.5.*"
2+
upstream_repository = "https://github.com/architest/pymeeus"

stubs/PyMeeus/pymeeus/Angle.pyi

Lines changed: 95 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,95 @@
1+
from typing import overload
2+
from typing_extensions import Self
3+
4+
class Angle:
5+
@overload
6+
def __init__(self, *, ra: bool = False) -> None: ...
7+
@overload
8+
def __init__(self, a: Angle, /, *, ra: bool = False) -> None: ...
9+
@overload
10+
def __init__(self, a: float, /, *, ra: bool = False, radians: bool = False) -> None: ...
11+
@overload
12+
def __init__(self, a: list[float] | tuple[float, ...], /, *, ra: bool = False, radians: bool = False) -> None: ...
13+
@overload
14+
def __init__(self, a1: float, a2: float, /, *, ra: bool = False) -> None: ...
15+
@overload
16+
def __init__(self, a1: float, a2: float, a3: float, /, *, ra: bool = False) -> None: ...
17+
@overload
18+
def __init__(self, a1: float, a2: float, a3: float, a4: float, /, *, ra: bool = False) -> None: ...
19+
@staticmethod
20+
def reduce_deg(deg: float | Angle) -> float: ...
21+
@staticmethod
22+
def reduce_dms(degrees: float, minutes: float, seconds: float = 0.0) -> tuple[int, int, float, float]: ...
23+
@staticmethod
24+
def deg2dms(deg: float | Angle) -> tuple[int, int, float, float]: ...
25+
@staticmethod
26+
def dms2deg(degrees: float, minutes: float, seconds: float = 0.0) -> float: ...
27+
def get_tolerance(self) -> float: ...
28+
def set_tolerance(self, tol: float) -> None: ...
29+
def __call__(self) -> float: ...
30+
@overload
31+
def set(self, *, ra: bool = False) -> None: ...
32+
@overload
33+
def set(self, a: Angle, /, *, ra: bool = False) -> None: ...
34+
@overload
35+
def set(self, a: float, /, *, ra: bool = False, radians: bool = False) -> None: ...
36+
@overload
37+
def set(self, a: list[float] | tuple[float, ...], /, *, ra: bool = False, radians: bool = False) -> None: ...
38+
@overload
39+
def set(self, a1: float, a2: float, /, *, ra: bool = False) -> None: ...
40+
@overload
41+
def set(self, a1: float, a2: float, a3: float, /, *, ra: bool = False) -> None: ...
42+
@overload
43+
def set(self, a1: float, a2: float, a3: float, a4: float, /, *, ra: bool = False) -> None: ...
44+
def set_radians(self, rads: float) -> None: ...
45+
@overload
46+
def set_ra(self) -> None: ...
47+
@overload
48+
def set_ra(self, a: float | Angle | list[float] | tuple[float, ...], /) -> None: ...
49+
@overload
50+
def set_ra(self, a1: float, a2: float, /) -> None: ...
51+
@overload
52+
def set_ra(self, a1: float, a2: float, a3: float, /) -> None: ...
53+
@overload
54+
def set_ra(self, a1: float, a2: float, a3: float, a4: float, /) -> None: ...
55+
def dms_str(self, fancy: bool | None = True, n_dec: int = -1) -> str: ...
56+
def get_ra(self) -> float: ...
57+
def ra_str(self, fancy: bool | None = True, n_dec: int = -1) -> str: ...
58+
def rad(self) -> float: ...
59+
def dms_tuple(self) -> tuple[int, int, float, float]: ...
60+
def ra_tuple(self) -> tuple[int, int, float, float]: ...
61+
def to_positive(self) -> Self: ...
62+
def __eq__(self, b: float | Angle) -> bool: ... # type: ignore[override]
63+
def __ne__(self, b: float | Angle) -> bool: ... # type: ignore[override]
64+
def __lt__(self, b: float | Angle) -> bool: ...
65+
def __ge__(self, b: float | Angle) -> bool: ...
66+
def __gt__(self, b: float | Angle) -> bool: ...
67+
def __le__(self, b: float | Angle) -> bool: ...
68+
def __neg__(self) -> Angle: ...
69+
def __abs__(self) -> Angle: ...
70+
def __mod__(self, b: float | Angle) -> Angle: ...
71+
def __add__(self, b: float | Angle) -> Angle: ...
72+
def __sub__(self, b: float | Angle) -> Angle: ...
73+
def __mul__(self, b: float | Angle) -> Angle: ...
74+
def __div__(self, b: float | Angle) -> Angle: ...
75+
def __truediv__(self, b: float | Angle) -> Angle: ...
76+
def __pow__(self, b: float | Angle) -> Angle: ...
77+
def __imod__(self, b: float | Angle) -> Self: ...
78+
def __iadd__(self, b: float | Angle) -> Self: ...
79+
def __isub__(self, b: float | Angle) -> Self: ...
80+
def __imul__(self, b: float | Angle) -> Self: ...
81+
def __idiv__(self, b: float | Angle) -> Angle: ...
82+
def __itruediv__(self, b: float | Angle) -> Self: ...
83+
def __ipow__(self, b: float | Angle) -> Self: ...
84+
def __rmod__(self, b: float | Angle) -> Angle: ...
85+
def __radd__(self, b: float | Angle) -> Angle: ...
86+
def __rsub__(self, b: float | Angle) -> Angle: ...
87+
def __rmul__(self, b: float | Angle) -> Angle: ...
88+
def __rdiv__(self, b: float | Angle) -> Angle: ...
89+
def __rtruediv__(self, b: float | Angle) -> Angle: ...
90+
def __rpow__(self, b: float | Angle) -> Angle: ...
91+
def __float__(self) -> float: ...
92+
def __int__(self) -> int: ...
93+
def __round__(self, n: float = 0) -> Angle: ...
94+
95+
def main() -> None: ...
Lines changed: 192 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,192 @@
1+
import datetime
2+
from typing import Final, overload
3+
4+
from pymeeus.Angle import Angle
5+
from pymeeus.Epoch import Epoch
6+
7+
NUTATION_ARG_TABLE: Final[list[list[int]]]
8+
NUTATION_SINE_COEF_TABLE: Final[list[list[float]]]
9+
NUTATION_COSINE_COEF_TABLE: Final[list[list[float]]]
10+
11+
@overload
12+
def mean_obliquity(
13+
a: Epoch | list[float] | tuple[float, ...] | datetime.date,
14+
/,
15+
*,
16+
leap_seconds: float = 0,
17+
local: bool = False,
18+
utc: bool = False,
19+
) -> Angle: ...
20+
@overload
21+
def mean_obliquity(
22+
year: int, month: int, day: int, /, *, leap_seconds: float = 0, local: bool = False, utc: bool = False
23+
) -> Angle: ...
24+
@overload
25+
def true_obliquity(
26+
a: Epoch | list[float] | tuple[float, ...] | datetime.date,
27+
/,
28+
*,
29+
leap_seconds: float = 0,
30+
local: bool = False,
31+
utc: bool = False,
32+
) -> Angle: ...
33+
@overload
34+
def true_obliquity(
35+
year: int, month: int, day: int, /, *, leap_seconds: float = 0, local: bool = False, utc: bool = False
36+
) -> Angle: ...
37+
@overload
38+
def nutation_longitude(
39+
a: Epoch | list[float] | tuple[float, ...] | datetime.date,
40+
/,
41+
*,
42+
leap_seconds: float = 0,
43+
local: bool = False,
44+
utc: bool = False,
45+
) -> Angle: ...
46+
@overload
47+
def nutation_longitude(
48+
year: int, month: int, day: int, /, *, leap_seconds: float = 0, local: bool = False, utc: bool = False
49+
) -> Angle: ...
50+
@overload
51+
def nutation_obliquity(
52+
a: Epoch | list[float] | tuple[float, ...] | datetime.date,
53+
/,
54+
*,
55+
leap_seconds: float = 0,
56+
local: bool = False,
57+
utc: bool = False,
58+
) -> Angle: ...
59+
@overload
60+
def nutation_obliquity(
61+
year: int, month: int, day: int, /, *, leap_seconds: float = 0, local: bool = False, utc: bool = False
62+
) -> Angle: ...
63+
def precession_equatorial(
64+
start_epoch: Epoch,
65+
final_epoch: Epoch,
66+
start_ra: Angle,
67+
start_dec: Angle,
68+
p_motion_ra: float | Angle = 0.0,
69+
p_motion_dec: float | Angle = 0.0,
70+
) -> tuple[Angle, Angle]: ...
71+
def precession_ecliptical(
72+
start_epoch: Epoch,
73+
final_epoch: Epoch,
74+
start_lon: Angle,
75+
start_lat: Angle,
76+
p_motion_lon: float | Angle = 0.0,
77+
p_motion_lat: float | Angle = 0.0,
78+
) -> tuple[Angle, Angle]: ...
79+
def p_motion_equa2eclip(
80+
p_motion_ra: Angle, p_motion_dec: Angle, ra: Angle, dec: Angle, lat: Angle, epsilon: Angle
81+
) -> tuple[float, float]: ...
82+
def precession_newcomb(
83+
start_epoch: Epoch,
84+
final_epoch: Epoch,
85+
start_ra: Angle,
86+
start_dec: Angle,
87+
p_motion_ra: float | Angle = 0.0,
88+
p_motion_dec: float | Angle = 0.0,
89+
) -> tuple[Angle, Angle]: ...
90+
def motion_in_space(
91+
start_ra: Angle,
92+
start_dec: Angle,
93+
distance: float,
94+
velocity: float,
95+
p_motion_ra: float | Angle,
96+
p_motion_dec: float | Angle,
97+
time: float,
98+
) -> tuple[Angle, Angle]: ...
99+
def equatorial2ecliptical(right_ascension: Angle, declination: Angle, obliquity: Angle) -> tuple[Angle, Angle]: ...
100+
def ecliptical2equatorial(longitude: Angle, latitude: Angle, obliquity: Angle) -> tuple[Angle, Angle]: ...
101+
def equatorial2horizontal(hour_angle: Angle, declination: Angle, geo_latitude: Angle) -> tuple[Angle, Angle]: ...
102+
def horizontal2equatorial(azimuth: Angle, elevation: Angle, geo_latitude: Angle) -> tuple[Angle, Angle]: ...
103+
def equatorial2galactic(right_ascension: Angle, declination: Angle) -> tuple[Angle, Angle]: ...
104+
def galactic2equatorial(longitude: Angle, latitude: Angle) -> tuple[Angle, Angle]: ...
105+
def parallactic_angle(hour_angle: Angle, declination: Angle, geo_latitude: Angle) -> Angle | None: ...
106+
def ecliptic_horizon(local_sidereal_time: Angle, geo_latitude: Angle, obliquity: Angle) -> tuple[Angle, Angle, Angle]: ...
107+
def ecliptic_equator(longitude: Angle, latitude: Angle, obliquity: Angle) -> Angle: ...
108+
def diurnal_path_horizon(declination: Angle, geo_latitude: Angle) -> Angle: ...
109+
def times_rise_transit_set(
110+
longitude: Angle,
111+
latitude: Angle,
112+
alpha1: Angle,
113+
delta1: Angle,
114+
alpha2: Angle,
115+
delta2: Angle,
116+
alpha3: Angle,
117+
delta3: Angle,
118+
h0: Angle,
119+
delta_t: float,
120+
theta0: Angle,
121+
) -> tuple[float, float, float] | tuple[None, None, None]: ...
122+
def refraction_apparent2true(apparent_elevation: Angle, pressure: float = 1010.0, temperature: float = 10.0) -> Angle: ...
123+
def refraction_true2apparent(true_elevation: Angle, pressure: float = 1010.0, temperature: float = 10.0) -> Angle: ...
124+
def angular_separation(alpha1: Angle, delta1: Angle, alpha2: Angle, delta2: Angle) -> Angle: ...
125+
def minimum_angular_separation(
126+
alpha1_1: Angle,
127+
delta1_1: Angle,
128+
alpha1_2: Angle,
129+
delta1_2: Angle,
130+
alpha1_3: Angle,
131+
delta1_3: Angle,
132+
alpha2_1: Angle,
133+
delta2_1: Angle,
134+
alpha2_2: Angle,
135+
delta2_2: Angle,
136+
alpha2_3: Angle,
137+
delta2_3: Angle,
138+
) -> tuple[float, Angle]: ...
139+
def relative_position_angle(alpha1: Angle, delta1: Angle, alpha2: Angle, delta2: Angle) -> Angle: ...
140+
def planetary_conjunction(
141+
alpha1_list: list[Angle] | tuple[Angle, ...],
142+
delta1_list: list[Angle] | tuple[Angle, ...],
143+
alpha2_list: list[Angle] | tuple[Angle, ...],
144+
delta2_list: list[Angle] | tuple[Angle, ...],
145+
) -> tuple[float, Angle]: ...
146+
def planet_star_conjunction(
147+
alpha_list: list[Angle] | tuple[Angle, ...], delta_list: list[Angle] | tuple[Angle, ...], alpha_star: Angle, delta_star: Angle
148+
) -> tuple[float, Angle]: ...
149+
def planet_stars_in_line(
150+
alpha_list: list[Angle] | tuple[Angle, ...],
151+
delta_list: list[Angle] | tuple[Angle, ...],
152+
alpha_star1: Angle,
153+
delta_star1: Angle,
154+
alpha_star2: Angle,
155+
delta_star2: Angle,
156+
) -> float: ...
157+
def straight_line(
158+
alpha1: Angle, delta1: Angle, alpha2: Angle, delta2: Angle, alpha3: Angle, delta3: Angle
159+
) -> tuple[Angle, Angle]: ...
160+
def circle_diameter(alpha1: Angle, delta1: Angle, alpha2: Angle, delta2: Angle, alpha3: Angle, delta3: Angle) -> Angle: ...
161+
def vsop_pos(
162+
epoch: Epoch, vsop_l: list[list[list[float]]], vsop_b: list[list[list[float]]], vsop_r: list[list[list[float]]]
163+
) -> tuple[Angle, Angle, float]: ...
164+
def geometric_vsop_pos(
165+
epoch: Epoch,
166+
vsop_l: list[list[list[float]]],
167+
vsop_b: list[list[list[float]]],
168+
vsop_r: list[list[list[float]]],
169+
tofk5: bool | None = True,
170+
) -> tuple[Angle, Angle, float]: ...
171+
def apparent_vsop_pos(
172+
epoch: Epoch,
173+
vsop_l: list[list[list[float]]],
174+
vsop_b: list[list[list[float]]],
175+
vsop_r: list[list[list[float]]],
176+
nutation: bool | None = True,
177+
) -> tuple[Angle, Angle, float]: ...
178+
def apparent_position(epoch: Epoch, alpha: Angle, delta: Angle, sun_lon: Angle) -> tuple[Angle, Angle]: ...
179+
def orbital_equinox2equinox(epoch0: Epoch, epoch: Epoch, i0: Angle, arg0: Angle, lon0: Angle) -> tuple[Angle, Angle, Angle]: ...
180+
def kepler_equation(eccentricity: float, mean_anomaly: Angle) -> tuple[Angle, Angle]: ...
181+
def orbital_elements(
182+
epoch: Epoch, parameters1: list[list[float]], parameters2: list[list[float]]
183+
) -> tuple[Angle, float, float, Angle, Angle, Angle]: ...
184+
def velocity(r: float, a: float) -> float: ...
185+
def velocity_perihelion(e: float, a: float) -> float: ...
186+
def velocity_aphelion(e: float, a: float) -> float: ...
187+
def length_orbit(e: float, a: float) -> float: ...
188+
def passage_nodes_elliptic(omega: Angle, e: float, a: float, t: Epoch, ascending: bool | None = True) -> tuple[Epoch, float]: ...
189+
def passage_nodes_parabolic(omega: Angle, q: float, t: Epoch, ascending: bool | None = True) -> tuple[Epoch, float]: ...
190+
def phase_angle(sun_dist: float, earth_dist: float, sun_earth_dist: float) -> Angle: ...
191+
def illuminated_fraction(sun_dist: float, earth_dist: float, sun_earth_dist: float) -> float: ...
192+
def main() -> None: ...
Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
from collections.abc import Callable
2+
from typing import overload
3+
4+
from pymeeus.Angle import Angle
5+
6+
class CurveFitting:
7+
@overload
8+
def __init__(self) -> None: ...
9+
@overload
10+
def __init__(self, a: CurveFitting, /) -> None: ...
11+
@overload
12+
def __init__(self, a: list[float | Angle] | tuple[float | Angle, ...], /) -> None: ...
13+
@overload
14+
def __init__(
15+
self, a1: list[float | Angle] | tuple[float | Angle, ...], a2: list[float | Angle] | tuple[float | Angle, ...], /
16+
) -> None: ...
17+
@overload
18+
def __init__(
19+
self, a1: float | Angle, a2: float | Angle, a3: float | Angle, a4: float | Angle, /, *rest: float | Angle
20+
) -> None: ...
21+
@overload
22+
def set(self) -> None: ...
23+
@overload
24+
def set(self, a: CurveFitting, /) -> None: ...
25+
@overload
26+
def set(self, a: list[float | Angle] | tuple[float | Angle, ...], /) -> None: ...
27+
@overload
28+
def set(
29+
self, a1: list[float | Angle] | tuple[float | Angle, ...], a2: list[float | Angle] | tuple[float | Angle, ...], /
30+
) -> None: ...
31+
@overload
32+
def set(
33+
self, a1: float | Angle, a2: float | Angle, a3: float | Angle, a4: float | Angle, /, *rest: float | Angle
34+
) -> None: ...
35+
def __len__(self) -> int: ...
36+
def correlation_coeff(self) -> float: ...
37+
def linear_fitting(self) -> tuple[float, float]: ...
38+
def quadratic_fitting(self) -> tuple[float, float, float]: ...
39+
def general_fitting(
40+
self, f0: Callable[..., float], f1: Callable[..., float] = ..., f2: Callable[..., float] = ...
41+
) -> tuple[float, float, float]: ...
42+
43+
def main() -> None: ...

0 commit comments

Comments
 (0)