diff --git a/stubs/PyMeeus/METADATA.toml b/stubs/PyMeeus/METADATA.toml new file mode 100644 index 000000000..edd8e1ea4 --- /dev/null +++ b/stubs/PyMeeus/METADATA.toml @@ -0,0 +1,2 @@ +version = "0.5.*" +upstream_repository = "https://github.com/architest/pymeeus" diff --git a/stubs/PyMeeus/pymeeus/Angle.pyi b/stubs/PyMeeus/pymeeus/Angle.pyi new file mode 100644 index 000000000..63a2451d0 --- /dev/null +++ b/stubs/PyMeeus/pymeeus/Angle.pyi @@ -0,0 +1,95 @@ +from typing import overload +from typing_extensions import Self + +class Angle: + @overload + def __init__(self, *, ra: bool = False) -> None: ... + @overload + def __init__(self, a: Angle, /, *, ra: bool = False) -> None: ... + @overload + def __init__(self, a: float, /, *, ra: bool = False, radians: bool = False) -> None: ... + @overload + def __init__(self, a: list[float] | tuple[float, ...], /, *, ra: bool = False, radians: bool = False) -> None: ... + @overload + def __init__(self, a1: float, a2: float, /, *, ra: bool = False) -> None: ... + @overload + def __init__(self, a1: float, a2: float, a3: float, /, *, ra: bool = False) -> None: ... + @overload + def __init__(self, a1: float, a2: float, a3: float, a4: float, /, *, ra: bool = False) -> None: ... + @staticmethod + def reduce_deg(deg: float | Angle) -> float: ... + @staticmethod + def reduce_dms(degrees: float, minutes: float, seconds: float = 0.0) -> tuple[int, int, float, float]: ... + @staticmethod + def deg2dms(deg: float | Angle) -> tuple[int, int, float, float]: ... + @staticmethod + def dms2deg(degrees: float, minutes: float, seconds: float = 0.0) -> float: ... + def get_tolerance(self) -> float: ... + def set_tolerance(self, tol: float) -> None: ... + def __call__(self) -> float: ... + @overload + def set(self, *, ra: bool = False) -> None: ... + @overload + def set(self, a: Angle, /, *, ra: bool = False) -> None: ... + @overload + def set(self, a: float, /, *, ra: bool = False, radians: bool = False) -> None: ... + @overload + def set(self, a: list[float] | tuple[float, ...], /, *, ra: bool = False, radians: bool = False) -> None: ... + @overload + def set(self, a1: float, a2: float, /, *, ra: bool = False) -> None: ... + @overload + def set(self, a1: float, a2: float, a3: float, /, *, ra: bool = False) -> None: ... + @overload + def set(self, a1: float, a2: float, a3: float, a4: float, /, *, ra: bool = False) -> None: ... + def set_radians(self, rads: float) -> None: ... + @overload + def set_ra(self) -> None: ... + @overload + def set_ra(self, a: float | Angle | list[float] | tuple[float, ...], /) -> None: ... + @overload + def set_ra(self, a1: float, a2: float, /) -> None: ... + @overload + def set_ra(self, a1: float, a2: float, a3: float, /) -> None: ... + @overload + def set_ra(self, a1: float, a2: float, a3: float, a4: float, /) -> None: ... + def dms_str(self, fancy: bool | None = True, n_dec: int = -1) -> str: ... + def get_ra(self) -> float: ... + def ra_str(self, fancy: bool | None = True, n_dec: int = -1) -> str: ... + def rad(self) -> float: ... + def dms_tuple(self) -> tuple[int, int, float, float]: ... + def ra_tuple(self) -> tuple[int, int, float, float]: ... + def to_positive(self) -> Self: ... + def __eq__(self, b: float | Angle) -> bool: ... # type: ignore[override] + def __ne__(self, b: float | Angle) -> bool: ... # type: ignore[override] + def __lt__(self, b: float | Angle) -> bool: ... + def __ge__(self, b: float | Angle) -> bool: ... + def __gt__(self, b: float | Angle) -> bool: ... + def __le__(self, b: float | Angle) -> bool: ... + def __neg__(self) -> Angle: ... + def __abs__(self) -> Angle: ... + def __mod__(self, b: float | Angle) -> Angle: ... + def __add__(self, b: float | Angle) -> Angle: ... + def __sub__(self, b: float | Angle) -> Angle: ... + def __mul__(self, b: float | Angle) -> Angle: ... + def __div__(self, b: float | Angle) -> Angle: ... + def __truediv__(self, b: float | Angle) -> Angle: ... + def __pow__(self, b: float | Angle) -> Angle: ... + def __imod__(self, b: float | Angle) -> Self: ... + def __iadd__(self, b: float | Angle) -> Self: ... + def __isub__(self, b: float | Angle) -> Self: ... + def __imul__(self, b: float | Angle) -> Self: ... + def __idiv__(self, b: float | Angle) -> Angle: ... + def __itruediv__(self, b: float | Angle) -> Self: ... + def __ipow__(self, b: float | Angle) -> Self: ... + def __rmod__(self, b: float | Angle) -> Angle: ... + def __radd__(self, b: float | Angle) -> Angle: ... + def __rsub__(self, b: float | Angle) -> Angle: ... + def __rmul__(self, b: float | Angle) -> Angle: ... + def __rdiv__(self, b: float | Angle) -> Angle: ... + def __rtruediv__(self, b: float | Angle) -> Angle: ... + def __rpow__(self, b: float | Angle) -> Angle: ... + def __float__(self) -> float: ... + def __int__(self) -> int: ... + def __round__(self, n: float = 0) -> Angle: ... + +def main() -> None: ... diff --git a/stubs/PyMeeus/pymeeus/Coordinates.pyi b/stubs/PyMeeus/pymeeus/Coordinates.pyi new file mode 100644 index 000000000..b46989768 --- /dev/null +++ b/stubs/PyMeeus/pymeeus/Coordinates.pyi @@ -0,0 +1,192 @@ +import datetime +from typing import Final, overload + +from pymeeus.Angle import Angle +from pymeeus.Epoch import Epoch + +NUTATION_ARG_TABLE: Final[list[list[int]]] +NUTATION_SINE_COEF_TABLE: Final[list[list[float]]] +NUTATION_COSINE_COEF_TABLE: Final[list[list[float]]] + +@overload +def mean_obliquity( + a: Epoch | list[float] | tuple[float, ...] | datetime.date, + /, + *, + leap_seconds: float = 0, + local: bool = False, + utc: bool = False, +) -> Angle: ... +@overload +def mean_obliquity( + year: int, month: int, day: int, /, *, leap_seconds: float = 0, local: bool = False, utc: bool = False +) -> Angle: ... +@overload +def true_obliquity( + a: Epoch | list[float] | tuple[float, ...] | datetime.date, + /, + *, + leap_seconds: float = 0, + local: bool = False, + utc: bool = False, +) -> Angle: ... +@overload +def true_obliquity( + year: int, month: int, day: int, /, *, leap_seconds: float = 0, local: bool = False, utc: bool = False +) -> Angle: ... +@overload +def nutation_longitude( + a: Epoch | list[float] | tuple[float, ...] | datetime.date, + /, + *, + leap_seconds: float = 0, + local: bool = False, + utc: bool = False, +) -> Angle: ... +@overload +def nutation_longitude( + year: int, month: int, day: int, /, *, leap_seconds: float = 0, local: bool = False, utc: bool = False +) -> Angle: ... +@overload +def nutation_obliquity( + a: Epoch | list[float] | tuple[float, ...] | datetime.date, + /, + *, + leap_seconds: float = 0, + local: bool = False, + utc: bool = False, +) -> Angle: ... +@overload +def nutation_obliquity( + year: int, month: int, day: int, /, *, leap_seconds: float = 0, local: bool = False, utc: bool = False +) -> Angle: ... +def precession_equatorial( + start_epoch: Epoch, + final_epoch: Epoch, + start_ra: Angle, + start_dec: Angle, + p_motion_ra: float | Angle = 0.0, + p_motion_dec: float | Angle = 0.0, +) -> tuple[Angle, Angle]: ... +def precession_ecliptical( + start_epoch: Epoch, + final_epoch: Epoch, + start_lon: Angle, + start_lat: Angle, + p_motion_lon: float | Angle = 0.0, + p_motion_lat: float | Angle = 0.0, +) -> tuple[Angle, Angle]: ... +def p_motion_equa2eclip( + p_motion_ra: Angle, p_motion_dec: Angle, ra: Angle, dec: Angle, lat: Angle, epsilon: Angle +) -> tuple[float, float]: ... +def precession_newcomb( + start_epoch: Epoch, + final_epoch: Epoch, + start_ra: Angle, + start_dec: Angle, + p_motion_ra: float | Angle = 0.0, + p_motion_dec: float | Angle = 0.0, +) -> tuple[Angle, Angle]: ... +def motion_in_space( + start_ra: Angle, + start_dec: Angle, + distance: float, + velocity: float, + p_motion_ra: float | Angle, + p_motion_dec: float | Angle, + time: float, +) -> tuple[Angle, Angle]: ... +def equatorial2ecliptical(right_ascension: Angle, declination: Angle, obliquity: Angle) -> tuple[Angle, Angle]: ... +def ecliptical2equatorial(longitude: Angle, latitude: Angle, obliquity: Angle) -> tuple[Angle, Angle]: ... +def equatorial2horizontal(hour_angle: Angle, declination: Angle, geo_latitude: Angle) -> tuple[Angle, Angle]: ... +def horizontal2equatorial(azimuth: Angle, elevation: Angle, geo_latitude: Angle) -> tuple[Angle, Angle]: ... +def equatorial2galactic(right_ascension: Angle, declination: Angle) -> tuple[Angle, Angle]: ... +def galactic2equatorial(longitude: Angle, latitude: Angle) -> tuple[Angle, Angle]: ... +def parallactic_angle(hour_angle: Angle, declination: Angle, geo_latitude: Angle) -> Angle | None: ... +def ecliptic_horizon(local_sidereal_time: Angle, geo_latitude: Angle, obliquity: Angle) -> tuple[Angle, Angle, Angle]: ... +def ecliptic_equator(longitude: Angle, latitude: Angle, obliquity: Angle) -> Angle: ... +def diurnal_path_horizon(declination: Angle, geo_latitude: Angle) -> Angle: ... +def times_rise_transit_set( + longitude: Angle, + latitude: Angle, + alpha1: Angle, + delta1: Angle, + alpha2: Angle, + delta2: Angle, + alpha3: Angle, + delta3: Angle, + h0: Angle, + delta_t: float, + theta0: Angle, +) -> tuple[float, float, float] | tuple[None, None, None]: ... +def refraction_apparent2true(apparent_elevation: Angle, pressure: float = 1010.0, temperature: float = 10.0) -> Angle: ... +def refraction_true2apparent(true_elevation: Angle, pressure: float = 1010.0, temperature: float = 10.0) -> Angle: ... +def angular_separation(alpha1: Angle, delta1: Angle, alpha2: Angle, delta2: Angle) -> Angle: ... +def minimum_angular_separation( + alpha1_1: Angle, + delta1_1: Angle, + alpha1_2: Angle, + delta1_2: Angle, + alpha1_3: Angle, + delta1_3: Angle, + alpha2_1: Angle, + delta2_1: Angle, + alpha2_2: Angle, + delta2_2: Angle, + alpha2_3: Angle, + delta2_3: Angle, +) -> tuple[float, Angle]: ... +def relative_position_angle(alpha1: Angle, delta1: Angle, alpha2: Angle, delta2: Angle) -> Angle: ... +def planetary_conjunction( + alpha1_list: list[Angle] | tuple[Angle, ...], + delta1_list: list[Angle] | tuple[Angle, ...], + alpha2_list: list[Angle] | tuple[Angle, ...], + delta2_list: list[Angle] | tuple[Angle, ...], +) -> tuple[float, Angle]: ... +def planet_star_conjunction( + alpha_list: list[Angle] | tuple[Angle, ...], delta_list: list[Angle] | tuple[Angle, ...], alpha_star: Angle, delta_star: Angle +) -> tuple[float, Angle]: ... +def planet_stars_in_line( + alpha_list: list[Angle] | tuple[Angle, ...], + delta_list: list[Angle] | tuple[Angle, ...], + alpha_star1: Angle, + delta_star1: Angle, + alpha_star2: Angle, + delta_star2: Angle, +) -> float: ... +def straight_line( + alpha1: Angle, delta1: Angle, alpha2: Angle, delta2: Angle, alpha3: Angle, delta3: Angle +) -> tuple[Angle, Angle]: ... +def circle_diameter(alpha1: Angle, delta1: Angle, alpha2: Angle, delta2: Angle, alpha3: Angle, delta3: Angle) -> Angle: ... +def vsop_pos( + epoch: Epoch, vsop_l: list[list[list[float]]], vsop_b: list[list[list[float]]], vsop_r: list[list[list[float]]] +) -> tuple[Angle, Angle, float]: ... +def geometric_vsop_pos( + epoch: Epoch, + vsop_l: list[list[list[float]]], + vsop_b: list[list[list[float]]], + vsop_r: list[list[list[float]]], + tofk5: bool | None = True, +) -> tuple[Angle, Angle, float]: ... +def apparent_vsop_pos( + epoch: Epoch, + vsop_l: list[list[list[float]]], + vsop_b: list[list[list[float]]], + vsop_r: list[list[list[float]]], + nutation: bool | None = True, +) -> tuple[Angle, Angle, float]: ... +def apparent_position(epoch: Epoch, alpha: Angle, delta: Angle, sun_lon: Angle) -> tuple[Angle, Angle]: ... +def orbital_equinox2equinox(epoch0: Epoch, epoch: Epoch, i0: Angle, arg0: Angle, lon0: Angle) -> tuple[Angle, Angle, Angle]: ... +def kepler_equation(eccentricity: float, mean_anomaly: Angle) -> tuple[Angle, Angle]: ... +def orbital_elements( + epoch: Epoch, parameters1: list[list[float]], parameters2: list[list[float]] +) -> tuple[Angle, float, float, Angle, Angle, Angle]: ... +def velocity(r: float, a: float) -> float: ... +def velocity_perihelion(e: float, a: float) -> float: ... +def velocity_aphelion(e: float, a: float) -> float: ... +def length_orbit(e: float, a: float) -> float: ... +def passage_nodes_elliptic(omega: Angle, e: float, a: float, t: Epoch, ascending: bool | None = True) -> tuple[Epoch, float]: ... +def passage_nodes_parabolic(omega: Angle, q: float, t: Epoch, ascending: bool | None = True) -> tuple[Epoch, float]: ... +def phase_angle(sun_dist: float, earth_dist: float, sun_earth_dist: float) -> Angle: ... +def illuminated_fraction(sun_dist: float, earth_dist: float, sun_earth_dist: float) -> float: ... +def main() -> None: ... diff --git a/stubs/PyMeeus/pymeeus/CurveFitting.pyi b/stubs/PyMeeus/pymeeus/CurveFitting.pyi new file mode 100644 index 000000000..9ef7c7c41 --- /dev/null +++ b/stubs/PyMeeus/pymeeus/CurveFitting.pyi @@ -0,0 +1,43 @@ +from collections.abc import Callable +from typing import overload + +from pymeeus.Angle import Angle + +class CurveFitting: + @overload + def __init__(self) -> None: ... + @overload + def __init__(self, a: CurveFitting, /) -> None: ... + @overload + def __init__(self, a: list[float | Angle] | tuple[float | Angle, ...], /) -> None: ... + @overload + def __init__( + self, a1: list[float | Angle] | tuple[float | Angle, ...], a2: list[float | Angle] | tuple[float | Angle, ...], / + ) -> None: ... + @overload + def __init__( + self, a1: float | Angle, a2: float | Angle, a3: float | Angle, a4: float | Angle, /, *rest: float | Angle + ) -> None: ... + @overload + def set(self) -> None: ... + @overload + def set(self, a: CurveFitting, /) -> None: ... + @overload + def set(self, a: list[float | Angle] | tuple[float | Angle, ...], /) -> None: ... + @overload + def set( + self, a1: list[float | Angle] | tuple[float | Angle, ...], a2: list[float | Angle] | tuple[float | Angle, ...], / + ) -> None: ... + @overload + def set( + self, a1: float | Angle, a2: float | Angle, a3: float | Angle, a4: float | Angle, /, *rest: float | Angle + ) -> None: ... + def __len__(self) -> int: ... + def correlation_coeff(self) -> float: ... + def linear_fitting(self) -> tuple[float, float]: ... + def quadratic_fitting(self) -> tuple[float, float, float]: ... + def general_fitting( + self, f0: Callable[..., float], f1: Callable[..., float] = ..., f2: Callable[..., float] = ... + ) -> tuple[float, float, float]: ... + +def main() -> None: ... diff --git a/stubs/PyMeeus/pymeeus/Earth.pyi b/stubs/PyMeeus/pymeeus/Earth.pyi new file mode 100644 index 000000000..764b459f3 --- /dev/null +++ b/stubs/PyMeeus/pymeeus/Earth.pyi @@ -0,0 +1,64 @@ +from typing import Final + +from pymeeus.Angle import Angle +from pymeeus.Epoch import Epoch + +VSOP87_L: Final[list[list[list[float]]]] +VSOP87_B: Final[list[list[list[float]]]] +VSOP87_R: Final[list[list[list[float]]]] +VSOP87_L_J2000: Final[list[list[list[float]]]] +VSOP87_B_J2000: Final[list[list[list[float]]]] +ORBITAL_ELEM: Final[list[list[float]]] +ORBITAL_ELEM_J2000: Final[list[list[float]]] + +class Ellipsoid: + def __init__(self, a: float, f: float, omega: float) -> None: ... + def b(self) -> float: ... + def e(self) -> float: ... + +IAU76: Final[Ellipsoid] +WGS84: Final[Ellipsoid] + +class Earth: + def __init__(self, ellipsoid: Ellipsoid = ...) -> None: ... + def set(self, ellipsoid: Ellipsoid) -> None: ... + def rho(self, latitude: float | Angle) -> float: ... + def rho_sinphi(self, latitude: float | Angle, height: float) -> float: ... + def rho_cosphi(self, latitude: float | Angle, height: float) -> float: ... + def rp(self, latitude: float | Angle) -> float: ... + def linear_velocity(self, latitude: float | Angle) -> float: ... + def rm(self, latitude: float | Angle) -> float: ... + def distance( + self, lon1: float | Angle, lat1: float | Angle, lon2: float | Angle, lat2: float | Angle + ) -> tuple[float, float]: ... + @staticmethod + def geometric_heliocentric_position(epoch: Epoch, tofk5: bool = True) -> tuple[Angle, Angle, float]: ... + @staticmethod + def apparent_heliocentric_position(epoch: Epoch, nutation: bool = True) -> tuple[Angle, Angle, float]: ... + @staticmethod + def geometric_heliocentric_position_j2000(epoch: Epoch, tofk5: bool = True) -> tuple[Angle, Angle, float]: ... + @staticmethod + def orbital_elements_mean_equinox(epoch: Epoch) -> tuple[Angle, float, float, Angle, Angle, Angle]: ... + @staticmethod + def orbital_elements_j2000(epoch: Epoch) -> tuple[Angle, float, float, Angle, Angle, Angle]: ... + @staticmethod + def perihelion_aphelion(epoch: Epoch, perihelion: bool | None = True) -> Epoch: ... + @staticmethod + def passage_nodes(epoch: Epoch, ascending: bool = True) -> tuple[Epoch, float]: ... + @staticmethod + def parallax_correction( + right_ascension: Angle, declination: Angle, latitude: Angle, distance: float, hour_angle: Angle, height: float = 0.0 + ) -> tuple[Angle, Angle]: ... + @staticmethod + def parallax_ecliptical( + longitude: Angle, + latitude: Angle, + semidiameter: Angle, + obs_lat: Angle, + obliquity: Angle, + sidereal_time: Angle, + distance: float, + height: float = 0.0, + ) -> tuple[Angle, Angle, Angle]: ... + +def main() -> None: ... diff --git a/stubs/PyMeeus/pymeeus/Epoch.pyi b/stubs/PyMeeus/pymeeus/Epoch.pyi new file mode 100644 index 000000000..476839684 --- /dev/null +++ b/stubs/PyMeeus/pymeeus/Epoch.pyi @@ -0,0 +1,129 @@ +import datetime +from typing import Final, Literal, overload +from typing_extensions import Self + +from pymeeus.Angle import Angle + +DAY2SEC: Final = 86400.0 +DAY2MIN: Final = 1440.0 +DAY2HOURS: Final = 24.0 +LEAP_TABLE: Final[dict[float, int]] + +class Epoch: + @overload + def __init__(self) -> None: ... + @overload + def __init__( + self, year: int, month: int, day: int, /, *time: float, leap_seconds: float = 0, local: bool = False, utc: bool = False + ) -> None: ... + @overload + def __init__( + self, + a: float | Epoch | list[float] | tuple[float, ...] | datetime.date, + /, + *, + leap_seconds: float = 0, + local: bool = False, + utc: bool = False, + ) -> None: ... + def __hash__(self) -> int: ... + @overload + def set(self) -> None: ... + @overload + def set( + self, year: int, month: int, day: int, /, *time: float, leap_seconds: float = 0, local: bool = False, utc: bool = False + ) -> None: ... + @overload + def set( + self, + a: float | Epoch | list[float] | tuple[float, ...] | datetime.date, + /, + *, + leap_seconds: float = 0, + local: bool = False, + utc: bool = False, + ) -> None: ... + @overload + @overload + @staticmethod + def check_input_date( + a: Epoch | list[float] | tuple[float, ...] | datetime.date, + /, + *, + leap_seconds: float = 0, + local: bool = False, + utc: bool = False, + ) -> Epoch: ... + @overload + @staticmethod + def check_input_date( + year: int, month: int, day: int, /, *, leap_seconds: float = 0, local: bool = False, utc: bool = False + ) -> Epoch: ... + @staticmethod + def is_julian(year: int, month: int, day: int) -> bool: ... + def julian(self) -> bool: ... + @overload + @staticmethod + def get_month(month: float | str, as_string: Literal[True]) -> str: ... + @overload + @staticmethod + def get_month(month: float | str, as_string: Literal[False] | None = False) -> int: ... + @staticmethod + def is_leap(year: float) -> bool: ... + def leap(self) -> bool: ... + @staticmethod + def get_doy(yyyy: int, mm: int, dd: int) -> float: ... + def doy(self) -> float: ... + @staticmethod + def doy2date(year: int, doy: float) -> tuple[int, int, float]: ... + @staticmethod + def leap_seconds(year: int, month: int) -> int: ... + @staticmethod + def get_last_leap_second() -> tuple[int, int, float, int]: ... + @staticmethod + def utc2local() -> float: ... + @staticmethod + def easter(year: float) -> tuple[int, int]: ... + @staticmethod + def jewish_pesach(year: float) -> tuple[int, int]: ... + @staticmethod + def moslem2gregorian(year: float, month: float, day: float) -> tuple[int, int, int]: ... + @staticmethod + def gregorian2moslem(year: float, month: float, day: float) -> tuple[int, int, int]: ... + def get_date(self, *, utc: bool = False, leap_seconds: float = 0.0, local: bool = ...) -> tuple[int, int, float]: ... + def get_full_date( + self, *, utc: bool = False, leap_seconds: float = 0.0, local: bool = ... + ) -> tuple[int, int, int, int, int, float]: ... + @staticmethod + def tt2ut(year: int, month: int) -> float: ... + @overload + def dow(self, as_string: Literal[True]) -> str: ... + @overload + def dow(self, as_string: Literal[False] | None = False) -> int: ... + def mean_sidereal_time(self) -> float: ... + def apparent_sidereal_time(self, true_obliquity: float | Angle, nutation_longitude: float | Angle) -> float: ... + def mjd(self) -> float: ... + def jde(self) -> float: ... + def year(self) -> float: ... + def rise_set(self, latitude: Angle, longitude: Angle, altitude: float = 0.0) -> tuple[Epoch, Epoch]: ... + def __call__(self) -> float: ... + def __add__(self, b: float) -> Epoch: ... + @overload + def __sub__(self, b: float) -> Epoch: ... + @overload + def __sub__(self, b: Epoch) -> float: ... + def __iadd__(self, b: float) -> Self: ... + def __isub__(self, b: float) -> Self: ... # type: ignore[misc] # __sub__ and __isub__ are incompatible + def __radd__(self, b: float) -> Epoch: ... + def __int__(self) -> int: ... + def __float__(self) -> float: ... + def __eq__(self, b: float | Epoch) -> bool: ... # type: ignore[override] + def __ne__(self, b: float | Epoch) -> bool: ... # type: ignore[override] + def __lt__(self, b: float | Epoch) -> bool: ... + def __ge__(self, b: float | Epoch) -> bool: ... + def __gt__(self, b: float | Epoch) -> bool: ... + def __le__(self, b: float | Epoch) -> bool: ... + +JDE2000: Epoch + +def main() -> None: ... diff --git a/stubs/PyMeeus/pymeeus/Interpolation.pyi b/stubs/PyMeeus/pymeeus/Interpolation.pyi new file mode 100644 index 000000000..a9219a7a6 --- /dev/null +++ b/stubs/PyMeeus/pymeeus/Interpolation.pyi @@ -0,0 +1,42 @@ +from typing import overload + +from pymeeus.Angle import Angle + +class Interpolation: + @overload + def __init__(self) -> None: ... + @overload + def __init__(self, a: Interpolation, /) -> None: ... + @overload + def __init__(self, a: list[float | Angle] | tuple[float | Angle, ...], /) -> None: ... + @overload + def __init__( + self, a1: list[float | Angle] | tuple[float | Angle, ...], a2: list[float | Angle] | tuple[float | Angle, ...], / + ) -> None: ... + @overload + def __init__( + self, a1: float | Angle, a2: float | Angle, a3: float | Angle, a4: float | Angle, /, *rest: float | Angle + ) -> None: ... + @overload + def set(self) -> None: ... + @overload + def set(self, a: Interpolation, /) -> None: ... + @overload + def set(self, a: list[float | Angle] | tuple[float | Angle, ...], /) -> None: ... + @overload + def set( + self, a1: list[float | Angle] | tuple[float | Angle, ...], a2: list[float | Angle] | tuple[float | Angle, ...], / + ) -> None: ... + @overload + def set( + self, a1: float | Angle, a2: float | Angle, a3: float | Angle, a4: float | Angle, /, *rest: float | Angle + ) -> None: ... + def __len__(self) -> int: ... + def get_tolerance(self) -> float: ... + def set_tolerance(self, tol: float) -> None: ... + def __call__(self, x: float | Angle) -> float | Angle: ... + def derivative(self, x: float | Angle) -> float: ... + def root(self, xl: float | Angle = 0, xh: float | Angle = 0, max_iter: int = 1000) -> float | Angle: ... + def minmax(self, xl: float | Angle = 0, xh: float | Angle = 0, max_iter: int = 1000) -> float | Angle: ... + +def main() -> None: ... diff --git a/stubs/PyMeeus/pymeeus/Jupiter.pyi b/stubs/PyMeeus/pymeeus/Jupiter.pyi new file mode 100644 index 000000000..8d62086bc --- /dev/null +++ b/stubs/PyMeeus/pymeeus/Jupiter.pyi @@ -0,0 +1,38 @@ +from typing import Final + +from pymeeus.Angle import Angle +from pymeeus.Epoch import Epoch + +VSOP87_L: Final[list[list[list[float]]]] +VSOP87_B: Final[list[list[list[float]]]] +VSOP87_R: Final[list[list[list[float]]]] +ORBITAL_ELEM: Final[list[list[float]]] +ORBITAL_ELEM_J2000: Final[list[list[float]]] + +class Jupiter: + @staticmethod + def geometric_heliocentric_position(epoch: Epoch, tofk5: bool | None = True) -> tuple[Angle, Angle, float]: ... + @staticmethod + def apparent_heliocentric_position(epoch: Epoch) -> tuple[Angle, Angle, float]: ... + @staticmethod + def orbital_elements_mean_equinox(epoch: Epoch) -> tuple[Angle, float, float, Angle, Angle, Angle]: ... + @staticmethod + def orbital_elements_j2000(epoch: Epoch) -> tuple[Angle, float, float, Angle, Angle, Angle]: ... + @staticmethod + def geocentric_position(epoch: Epoch) -> tuple[Angle, Angle, Angle]: ... + @staticmethod + def conjunction(epoch: Epoch) -> Epoch: ... + @staticmethod + def opposition(epoch: Epoch) -> Epoch: ... + @staticmethod + def station_longitude_1(epoch: Epoch) -> Epoch: ... + @staticmethod + def station_longitude_2(epoch: Epoch) -> Epoch: ... + @staticmethod + def perihelion_aphelion(epoch: Epoch, perihelion: bool | None = True) -> Epoch: ... + @staticmethod + def passage_nodes(epoch: Epoch, ascending: bool = True) -> tuple[Epoch, float]: ... + @staticmethod + def magnitude(sun_dist: float, earth_dist: float) -> float: ... + +def main() -> None: ... diff --git a/stubs/PyMeeus/pymeeus/JupiterMoons.pyi b/stubs/PyMeeus/pymeeus/JupiterMoons.pyi new file mode 100644 index 000000000..c23baadef --- /dev/null +++ b/stubs/PyMeeus/pymeeus/JupiterMoons.pyi @@ -0,0 +1,78 @@ +from typing import Literal, overload + +from pymeeus.Angle import Angle +from pymeeus.Epoch import Epoch + +class JupiterMoons: + @staticmethod + def jupiter_system_angles(epoch: Epoch) -> tuple[float, float]: ... + @staticmethod + def rectangular_positions_jovian_equatorial( + epoch: Epoch, tofk5: bool = True, solar: bool = False, do_correction: bool = True + ) -> tuple[ + tuple[float, float, float], tuple[float, float, float], tuple[float, float, float], tuple[float, float, float] + ]: ... + @overload + @staticmethod + def apparent_rectangular_coordinates( + epoch: Epoch, + X: float, + Y: float, + Z: float, + OMEGA: float, + psi: float, + i: float, + lambda_0: float, + beta_0: float, + D: float = 0, + isFictional: Literal[True] = ..., + ) -> float: ... + @overload + @staticmethod + def apparent_rectangular_coordinates( + epoch: Epoch, + X: float, + Y: float, + Z: float, + OMEGA: float, + psi: float, + i: float, + lambda_0: float, + beta_0: float, + D: float = 0, + isFictional: Literal[False] | None = False, + ) -> tuple[float, float, float]: ... + @staticmethod + def calculate_delta( + epoch: Epoch, + ) -> tuple[float, float, Angle, Angle, float] | tuple[float, float, Literal[0], Literal[0], Literal[0]]: ... + @overload + @staticmethod + def correct_rectangular_positions( + R: float, i_sat: int, DELTA: float, X_coordinate: list[float] | tuple[float, float, float] + ) -> tuple[float, float, float]: ... + @overload + @staticmethod + def correct_rectangular_positions( + R: float, i_sat: int, DELTA: float, X_coordinate: float, Y_coordinate: float = 0, Z_coordinate: float = 0 + ) -> tuple[float, float, float]: ... + @overload + @staticmethod + def check_phenomena(epoch: Epoch, check_all: Literal[True] = True, i_sat: int = 0) -> list[list[float]]: ... + @overload + @staticmethod + def check_phenomena(epoch: Epoch, check_all: Literal[False] | None, i_sat: int = 0) -> tuple[float, float]: ... + @staticmethod + def is_phenomena(epoch: Epoch) -> list[list[bool]]: ... + @staticmethod + def check_coordinates(X: float, Y: float) -> float: ... + @staticmethod + def check_occultation( + X: float = 0, Y: float = 0, Z: float = 0, epoch: Epoch | None = None, i_sat: int | None = None + ) -> float: ... + @staticmethod + def check_eclipse( + X_0: float = 0, Y_0: float = 0, Z_0: float = 0, epoch: Epoch | None = None, i_sat: int | None = None + ) -> float: ... + +def main() -> None: ... diff --git a/stubs/PyMeeus/pymeeus/Mars.pyi b/stubs/PyMeeus/pymeeus/Mars.pyi new file mode 100644 index 000000000..083c06a0b --- /dev/null +++ b/stubs/PyMeeus/pymeeus/Mars.pyi @@ -0,0 +1,38 @@ +from typing import Final + +from pymeeus.Angle import Angle +from pymeeus.Epoch import Epoch + +VSOP87_L: Final[list[list[list[float]]]] +VSOP87_B: Final[list[list[list[float]]]] +VSOP87_R: Final[list[list[list[float]]]] +ORBITAL_ELEM: Final[list[list[float]]] +ORBITAL_ELEM_J2000: Final[list[list[float]]] + +class Mars: + @staticmethod + def geometric_heliocentric_position(epoch: Epoch, tofk5: bool | None = True) -> tuple[Angle, Angle, float]: ... + @staticmethod + def apparent_heliocentric_position(epoch: Epoch) -> tuple[Angle, Angle, float]: ... + @staticmethod + def orbital_elements_mean_equinox(epoch: Epoch) -> tuple[Angle, float, float, Angle, Angle, Angle]: ... + @staticmethod + def orbital_elements_j2000(epoch: Epoch) -> tuple[Angle, float, float, Angle, Angle, Angle]: ... + @staticmethod + def geocentric_position(epoch: Epoch) -> tuple[Angle, Angle, Angle]: ... + @staticmethod + def conjunction(epoch: Epoch) -> Epoch: ... + @staticmethod + def opposition(epoch: Epoch) -> Epoch: ... + @staticmethod + def station_longitude_1(epoch: Epoch) -> Epoch: ... + @staticmethod + def station_longitude_2(epoch: Epoch) -> Epoch: ... + @staticmethod + def perihelion_aphelion(epoch: Epoch, perihelion: bool = True) -> Epoch: ... + @staticmethod + def passage_nodes(epoch: Epoch, ascending: bool = True) -> tuple[Epoch, float]: ... + @staticmethod + def magnitude(sun_dist: float, earth_dist: float, phase_angle: float | Angle) -> float: ... + +def main() -> None: ... diff --git a/stubs/PyMeeus/pymeeus/Mercury.pyi b/stubs/PyMeeus/pymeeus/Mercury.pyi new file mode 100644 index 000000000..e5b53a02b --- /dev/null +++ b/stubs/PyMeeus/pymeeus/Mercury.pyi @@ -0,0 +1,42 @@ +from typing import Final + +from pymeeus.Angle import Angle +from pymeeus.Epoch import Epoch + +VSOP87_L: Final[list[list[list[float]]]] +VSOP87_B: Final[list[list[list[float]]]] +VSOP87_R: Final[list[list[list[float]]]] +ORBITAL_ELEM: Final[list[list[float]]] +ORBITAL_ELEM_J2000: Final[list[list[float]]] + +class Mercury: + @staticmethod + def geometric_heliocentric_position(epoch: Epoch, tofk5: bool | None = True) -> tuple[Angle, Angle, float]: ... + @staticmethod + def apparent_heliocentric_position(epoch: Epoch) -> tuple[Angle, Angle, float]: ... + @staticmethod + def orbital_elements_mean_equinox(epoch: Epoch) -> tuple[Angle, float, float, Angle, Angle, Angle]: ... + @staticmethod + def orbital_elements_j2000(epoch: Epoch) -> tuple[Angle, float, float, Angle, Angle, Angle]: ... + @staticmethod + def geocentric_position(epoch: Epoch) -> tuple[Angle, Angle, Angle]: ... + @staticmethod + def inferior_conjunction(epoch: Epoch) -> Epoch: ... + @staticmethod + def superior_conjunction(epoch: Epoch) -> Epoch: ... + @staticmethod + def western_elongation(epoch: Epoch) -> tuple[Epoch, Angle]: ... + @staticmethod + def eastern_elongation(epoch: Epoch) -> tuple[Epoch, Angle]: ... + @staticmethod + def station_longitude_1(epoch: Epoch) -> Epoch: ... + @staticmethod + def station_longitude_2(epoch: Epoch) -> Epoch: ... + @staticmethod + def perihelion_aphelion(epoch: Epoch, perihelion: bool | None = True) -> Epoch: ... + @staticmethod + def passage_nodes(epoch: Epoch, ascending: bool = True) -> tuple[Epoch, float]: ... + @staticmethod + def magnitude(sun_dist: float, earth_dist: float, phase_angle: float | Angle) -> float: ... + +def main() -> None: ... diff --git a/stubs/PyMeeus/pymeeus/Minor.pyi b/stubs/PyMeeus/pymeeus/Minor.pyi new file mode 100644 index 000000000..54e6d3802 --- /dev/null +++ b/stubs/PyMeeus/pymeeus/Minor.pyi @@ -0,0 +1,10 @@ +from pymeeus.Angle import Angle +from pymeeus.Epoch import Epoch + +class Minor: + def __init__(self, q: float, e: float, i: Angle, omega: Angle, w: Angle, t: Epoch) -> None: ... + def set(self, q: float, e: float, i: Angle, omega: Angle, w: Angle, t: Epoch) -> None: ... + def geocentric_position(self, epoch: Epoch) -> tuple[Angle, Angle, Angle]: ... + def heliocentric_ecliptical_position(self, epoch: Epoch) -> tuple[Angle, Angle]: ... + +def main() -> None: ... diff --git a/stubs/PyMeeus/pymeeus/Moon.pyi b/stubs/PyMeeus/pymeeus/Moon.pyi new file mode 100644 index 000000000..2a4ce12ae --- /dev/null +++ b/stubs/PyMeeus/pymeeus/Moon.pyi @@ -0,0 +1,39 @@ +from typing import Final, Literal + +from pymeeus.Angle import Angle +from pymeeus.Epoch import Epoch + +PERIODIC_TERMS_LR_TABLE: Final[list[list[float]]] +PERIODIC_TERMS_B_TABLE: Final[list[list[float]]] + +class Moon: + @staticmethod + def geocentric_ecliptical_pos(epoch: Epoch) -> tuple[Angle, Angle, float, Angle]: ... + @staticmethod + def apparent_ecliptical_pos(epoch: Epoch) -> tuple[Angle, Angle, float, Angle]: ... + @staticmethod + def apparent_equatorial_pos(epoch: Epoch) -> tuple[Angle, Angle, float, Angle]: ... + @staticmethod + def longitude_mean_ascending_node(epoch: Epoch) -> Angle: ... + @staticmethod + def longitude_true_ascending_node(epoch: Epoch) -> Angle: ... + @staticmethod + def longitude_mean_perigee(epoch: Epoch) -> Angle: ... + @staticmethod + def illuminated_fraction_disk(epoch: Epoch) -> float: ... + @staticmethod + def position_bright_limb(epoch: Epoch) -> Angle: ... + @staticmethod + def moon_phase(epoch: Epoch, target: Literal["new", "first", "full", "last"] = "new") -> Epoch: ... + @staticmethod + def moon_perigee_apogee(epoch: Epoch, target: Literal["perigee", "apogee"] = "perigee") -> tuple[Epoch, Angle]: ... + @staticmethod + def moon_passage_nodes(epoch: Epoch, target: Literal["ascending", "descending"] = "ascending") -> Epoch: ... + @staticmethod + def moon_maximum_declination(epoch: Epoch, target: Literal["northern", "southern"] = "northern") -> tuple[Epoch, Angle]: ... + @staticmethod + def moon_librations(epoch: Epoch) -> tuple[Angle, Angle, Angle, Angle, Angle, Angle]: ... + @staticmethod + def moon_position_angle_axis(epoch: Epoch) -> Angle: ... + +def main() -> None: ... diff --git a/stubs/PyMeeus/pymeeus/Neptune.pyi b/stubs/PyMeeus/pymeeus/Neptune.pyi new file mode 100644 index 000000000..3dd5e2a41 --- /dev/null +++ b/stubs/PyMeeus/pymeeus/Neptune.pyi @@ -0,0 +1,30 @@ +from typing import Final + +from pymeeus.Angle import Angle +from pymeeus.Epoch import Epoch + +VSOP87_L: Final[list[list[list[float]]]] +VSOP87_B: Final[list[list[list[float]]]] +VSOP87_R: Final[list[list[list[float]]]] +ORBITAL_ELEM: Final[list[list[float]]] +ORBITAL_ELEM_J2000: Final[list[list[float]]] + +class Neptune: + @staticmethod + def geometric_heliocentric_position(epoch: Epoch, tofk5: bool | None = True) -> tuple[Angle, Angle, float]: ... + @staticmethod + def apparent_heliocentric_position(epoch: Epoch) -> tuple[Angle, Angle, float]: ... + @staticmethod + def orbital_elements_mean_equinox(epoch: Epoch) -> tuple[Angle, float, float, Angle, Angle, Angle]: ... + @staticmethod + def orbital_elements_j2000(epoch: Epoch) -> tuple[Angle, float, float, Angle, Angle, Angle]: ... + @staticmethod + def geocentric_position(epoch: Epoch) -> tuple[Angle, Angle, Angle]: ... + @staticmethod + def conjunction(epoch: Epoch) -> Epoch: ... + @staticmethod + def opposition(epoch: Epoch) -> Epoch: ... + @staticmethod + def magnitude(sun_dist: float, earth_dist: float) -> float: ... + +def main() -> None: ... diff --git a/stubs/PyMeeus/pymeeus/Pluto.pyi b/stubs/PyMeeus/pymeeus/Pluto.pyi new file mode 100644 index 000000000..bbe9825c8 --- /dev/null +++ b/stubs/PyMeeus/pymeeus/Pluto.pyi @@ -0,0 +1,17 @@ +from typing import Final + +from pymeeus.Angle import Angle +from pymeeus.Epoch import Epoch + +PLUTO_ARGUMENT: Final[list[tuple[float, float, float]]] +PLUTO_LONGITUDE: Final[list[tuple[float, float]]] +PLUTO_LATITUDE: Final[list[tuple[float, float]]] +PLUTO_RADIUS_VECTOR: Final[list[tuple[float, float]]] + +class Pluto: + @staticmethod + def geometric_heliocentric_position(epoch: Epoch) -> tuple[Angle, Angle, float]: ... + @staticmethod + def geocentric_position(epoch: Epoch) -> tuple[Angle, Angle]: ... + +def main() -> None: ... diff --git a/stubs/PyMeeus/pymeeus/Saturn.pyi b/stubs/PyMeeus/pymeeus/Saturn.pyi new file mode 100644 index 000000000..9794c5454 --- /dev/null +++ b/stubs/PyMeeus/pymeeus/Saturn.pyi @@ -0,0 +1,44 @@ +from typing import Final + +from pymeeus.Angle import Angle +from pymeeus.Epoch import Epoch + +VSOP87_L: Final[list[list[list[float]]]] +VSOP87_B: Final[list[list[list[float]]]] +VSOP87_R: Final[list[list[list[float]]]] +ORBITAL_ELEM: Final[list[list[float]]] +ORBITAL_ELEM_J2000: Final[list[list[float]]] + +class Saturn: + @staticmethod + def geometric_heliocentric_position(epoch: Epoch, tofk5: bool = True) -> tuple[Angle, Angle, float]: ... + @staticmethod + def apparent_heliocentric_position(epoch: Epoch) -> tuple[Angle, Angle, float]: ... + @staticmethod + def orbital_elements_mean_equinox(epoch: Epoch) -> tuple[Angle, float, float, Angle, Angle, Angle]: ... + @staticmethod + def orbital_elements_j2000(epoch: Epoch) -> tuple[Angle, float, float, Angle, Angle, Angle]: ... + @staticmethod + def geocentric_position(epoch: Epoch) -> tuple[Angle, Angle, Angle]: ... + @staticmethod + def conjunction(epoch: Epoch) -> Epoch: ... + @staticmethod + def opposition(epoch: Epoch) -> Epoch: ... + @staticmethod + def station_longitude_1(epoch: Epoch) -> Epoch: ... + @staticmethod + def station_longitude_2(epoch: Epoch) -> Epoch: ... + @staticmethod + def perihelion_aphelion(epoch: Epoch, perihelion: bool | None = True) -> Epoch: ... + @staticmethod + def passage_nodes(epoch: Epoch, ascending: bool = True) -> tuple[Epoch, float]: ... + @staticmethod + def magnitude(sun_dist: float, earth_dist: float, delta_U: float | Angle, B: float | Angle) -> float: ... + @staticmethod + def ring_inclination(epoch: Epoch) -> Angle: ... + @staticmethod + def ring_logitude_ascending_node(epoch: Epoch) -> Angle: ... + @staticmethod + def ring_parameters(epoch: Epoch) -> tuple[Angle, Angle, Angle, Angle, float, float]: ... + +def main() -> None: ... diff --git a/stubs/PyMeeus/pymeeus/Sun.pyi b/stubs/PyMeeus/pymeeus/Sun.pyi new file mode 100644 index 000000000..d2dfb258f --- /dev/null +++ b/stubs/PyMeeus/pymeeus/Sun.pyi @@ -0,0 +1,35 @@ +from typing import Literal + +from pymeeus.Angle import Angle +from pymeeus.Epoch import Epoch + +class Sun: + def __init__(self) -> None: ... + @staticmethod + def true_longitude_coarse(epoch: Epoch) -> tuple[Angle, float]: ... + @staticmethod + def apparent_longitude_coarse(epoch: Epoch) -> tuple[Angle, float]: ... + @staticmethod + def apparent_rightascension_declination_coarse(epoch: Epoch) -> tuple[Angle, Angle, float]: ... + @staticmethod + def geometric_geocentric_position(epoch: Epoch, tofk5: bool = True) -> tuple[Angle, Angle, float]: ... + @staticmethod + def apparent_geocentric_position(epoch: Epoch, nutation: bool = True) -> tuple[Angle, Angle, float]: ... + @staticmethod + def rectangular_coordinates_mean_equinox(epoch: Epoch) -> tuple[float, float, float]: ... + @staticmethod + def rectangular_coordinates_j2000(epoch: Epoch) -> tuple[float, float, float]: ... + @staticmethod + def rectangular_coordinates_b1950(epoch: Epoch) -> tuple[float, float, float]: ... + @staticmethod + def rectangular_coordinates_equinox(epoch: Epoch, equinox_epoch: Epoch) -> tuple[float, float, float]: ... + @staticmethod + def get_equinox_solstice(year: int, target: Literal["spring", "summer", "autumn", "winter"] = "spring") -> Epoch: ... + @staticmethod + def equation_of_time(epoch: Epoch) -> tuple[int, float]: ... + @staticmethod + def ephemeris_physical_observations(epoch: Epoch) -> tuple[Angle, Angle, Angle]: ... + @staticmethod + def beginning_synodic_rotation(number: int) -> Epoch: ... + +def main() -> None: ... diff --git a/stubs/PyMeeus/pymeeus/Uranus.pyi b/stubs/PyMeeus/pymeeus/Uranus.pyi new file mode 100644 index 000000000..ff2f3885f --- /dev/null +++ b/stubs/PyMeeus/pymeeus/Uranus.pyi @@ -0,0 +1,34 @@ +from typing import Final + +from pymeeus.Angle import Angle +from pymeeus.Epoch import Epoch + +VSOP87_L: Final[list[list[list[float]]]] +VSOP87_B: Final[list[list[list[float]]]] +VSOP87_R: Final[list[list[list[float]]]] +ORBITAL_ELEM: Final[list[list[float]]] +ORBITAL_ELEM_J2000: Final[list[list[float]]] + +class Uranus: + @staticmethod + def geometric_heliocentric_position(epoch: Epoch, tofk5: bool | None = True) -> tuple[Angle, Angle, float]: ... + @staticmethod + def apparent_heliocentric_position(epoch: Epoch) -> tuple[Angle, Angle, float]: ... + @staticmethod + def orbital_elements_mean_equinox(epoch: Epoch) -> tuple[Angle, float, float, Angle, Angle, Angle]: ... + @staticmethod + def orbital_elements_j2000(epoch: Epoch) -> tuple[Angle, float, float, Angle, Angle, Angle]: ... + @staticmethod + def geocentric_position(epoch: Epoch) -> tuple[Angle, Angle, Angle]: ... + @staticmethod + def conjunction(epoch: Epoch) -> Epoch: ... + @staticmethod + def opposition(epoch: Epoch) -> Epoch: ... + @staticmethod + def perihelion_aphelion(epoch: Epoch, perihelion: bool | None = True) -> Epoch: ... + @staticmethod + def passage_nodes(epoch: Epoch, ascending: bool = True) -> tuple[Epoch, float]: ... + @staticmethod + def magnitude(sun_dist: float, earth_dist: float) -> float: ... + +def main() -> None: ... diff --git a/stubs/PyMeeus/pymeeus/Venus.pyi b/stubs/PyMeeus/pymeeus/Venus.pyi new file mode 100644 index 000000000..3fae751f4 --- /dev/null +++ b/stubs/PyMeeus/pymeeus/Venus.pyi @@ -0,0 +1,44 @@ +from typing import Final + +from pymeeus.Angle import Angle +from pymeeus.Epoch import Epoch + +VSOP87_L: Final[list[list[list[float]]]] +VSOP87_B: Final[list[list[list[float]]]] +VSOP87_R: Final[list[list[list[float]]]] +ORBITAL_ELEM: Final[list[list[float]]] +ORBITAL_ELEM_J2000: Final[list[list[float]]] + +class Venus: + @staticmethod + def geometric_heliocentric_position(epoch: Epoch, tofk5: bool | None = True) -> tuple[Angle, Angle, float]: ... + @staticmethod + def apparent_heliocentric_position(epoch: Epoch) -> tuple[Angle, Angle, float]: ... + @staticmethod + def orbital_elements_mean_equinox(epoch: Epoch) -> tuple[Angle, float, float, Angle, Angle, Angle]: ... + @staticmethod + def orbital_elements_j2000(epoch: Epoch) -> tuple[Angle, float, float, Angle, Angle, Angle]: ... + @staticmethod + def geocentric_position(epoch: Epoch) -> tuple[Angle, Angle, Angle]: ... + @staticmethod + def inferior_conjunction(epoch: Epoch) -> Epoch: ... + @staticmethod + def superior_conjunction(epoch: Epoch) -> Epoch: ... + @staticmethod + def western_elongation(epoch: Epoch) -> tuple[Epoch, Angle]: ... + @staticmethod + def eastern_elongation(epoch: Epoch) -> tuple[Epoch, Angle]: ... + @staticmethod + def station_longitude_1(epoch: Epoch) -> Epoch: ... + @staticmethod + def station_longitude_2(epoch: Epoch) -> Epoch: ... + @staticmethod + def perihelion_aphelion(epoch: Epoch, perihelion: bool | None = True) -> Epoch: ... + @staticmethod + def passage_nodes(epoch: Epoch, ascending: bool = True) -> tuple[Epoch, float]: ... + @staticmethod + def illuminated_fraction(epoch: Epoch) -> float: ... + @staticmethod + def magnitude(sun_dist: float, earth_dist: float, phase_angle: float | Angle) -> float: ... + +def main() -> None: ... diff --git a/stubs/PyMeeus/pymeeus/__init__.pyi b/stubs/PyMeeus/pymeeus/__init__.pyi new file mode 100644 index 000000000..e69de29bb diff --git a/stubs/PyMeeus/pymeeus/base.pyi b/stubs/PyMeeus/pymeeus/base.pyi new file mode 100644 index 000000000..e61004af8 --- /dev/null +++ b/stubs/PyMeeus/pymeeus/base.pyi @@ -0,0 +1,8 @@ +from typing import Final, Literal + +TOL: Final = 1e-10 + +def machine_accuracy() -> tuple[float, int]: ... +def get_ordinal_suffix(ordinal: float) -> Literal["st", "nd", "rd", "th"]: ... +def iint(number: float) -> int: ... +def main() -> None: ...