fix: restore ayanamsa state and keep tests hermetic
Independent Staging Quality Gate / validate (push) Successful in 21m34s
Independent Staging Quality Gate / publish (push) Successful in 2m1s

This commit is contained in:
Jesse_Chen
2026-09-03 23:22:50 +08:00
parent 027e4b0827
commit c1e3f32a0f
30 changed files with 227 additions and 53 deletions
+9 -9
View File
@@ -12,9 +12,9 @@ try:
except ImportError:
from scripts.saham_daynight import determine_daytime
try:
from ayanamsa_utils import ayanamsa_display_name, normalize_ayanamsa_name, sidereal_flags
from ayanamsa_utils import DEFAULT_AYANAMSA_NAME, ayanamsa_display_name, normalize_ayanamsa_name, temporary_ayanamsa
except ImportError:
from scripts.ayanamsa_utils import ayanamsa_display_name, normalize_ayanamsa_name, sidereal_flags
from scripts.ayanamsa_utils import DEFAULT_AYANAMSA_NAME, ayanamsa_display_name, normalize_ayanamsa_name, temporary_ayanamsa
# Monday=0, matching datetime.weekday(). Values are the end of Saturn's share
@@ -72,10 +72,10 @@ TEMPORAL_UPAGRAHAS = {
}
def _sidereal_ascendant(jd_ut: float, lat: float, lon: float, ayanamsa: str = "raman") -> float:
flags = sidereal_flags(swe, ayanamsa)
cusps, ascmc = swe.houses_ex(jd_ut, lat, lon, b"P", flags)
return float(ascmc[0]) % 360
def _sidereal_ascendant(jd_ut: float, lat: float, lon: float, ayanamsa: str = DEFAULT_AYANAMSA_NAME) -> float:
with temporary_ayanamsa(ayanamsa, swe):
_, ascmc = swe.houses_ex(jd_ut, lat, lon, b"P", swe.FLG_SWIEPH | swe.FLG_SIDEREAL)
return float(ascmc[0]) % 360
def calculate_gulika(
@@ -85,7 +85,7 @@ def calculate_gulika(
lon: float,
tz: float,
method: str = "saturn_part_start",
ayanamsa: str = "raman",
ayanamsa: str = DEFAULT_AYANAMSA_NAME,
) -> dict[str, Any]:
"""Return Gulika from local moment/location using Swiss sunrise and sunset."""
ayanamsa_name = normalize_ayanamsa_name(ayanamsa)
@@ -140,7 +140,7 @@ def _temporal_upagraha(
tz: float,
planet_index: int,
segment_part: str,
ayanamsa: str = "raman",
ayanamsa: str = DEFAULT_AYANAMSA_NAME,
) -> dict[str, Any]:
ayanamsa_name = normalize_ayanamsa_name(ayanamsa)
daynight = determine_daytime(moment, lat=lat, lon=lon, tz=tz)
@@ -198,7 +198,7 @@ def calculate_upagrahas(
lon: float,
tz: float,
sun_longitude: float,
ayanamsa: str = "raman",
ayanamsa: str = DEFAULT_AYANAMSA_NAME,
) -> dict[str, Any]:
"""Calculate the D1 Upagraha packet using local Swiss Ephemeris inputs."""
ayanamsa_name = normalize_ayanamsa_name(ayanamsa)