Files
Jyotisha/scripts/prashna_sphuta_oss_case_probe.py
2026-07-20 18:40:02 +08:00

42 lines
3.1 KiB
Python
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#!/usr/bin/env python3
"""Run installed PyJHora Sphuta OSS case as isolated observation."""
from __future__ import annotations
import argparse, contextlib, hashlib, importlib.metadata as md, io, json
from pathlib import Path
ROOT=Path(__file__).resolve().parents[1]
OUT=ROOT/'references/oracle/prashna_sphuta_oss_case_probe_2026_07_20.json'
def h(o): return hashlib.sha256(json.dumps(o,ensure_ascii=False,sort_keys=True,default=str).encode()).hexdigest()
def build(date):
rows=[]; meta={}
try:
captured_stdout = io.StringIO()
captured_stderr = io.StringIO()
with contextlib.redirect_stdout(captured_stdout), contextlib.redirect_stderr(captured_stderr):
import jhora
from jhora.panchanga import drik
from jhora.horoscope.chart import sphuta
try: dist=md.metadata('jhora')
except md.PackageNotFoundError: dist=md.metadata('PyJHora')
meta={'package':dist.get('Name'),'version':dist.get('Version'),'license':dist.get('License') or 'AGPL detected from package metadata text','module_file':jhora.__file__,'captured_import_stdout_hash':h(captured_stdout.getvalue()),'captured_import_stderr_hash':h(captured_stderr.getvalue())}
dob=drik.Date(1996,12,7); tob=(10,34,0); place=drik.Place('Chennai',13.0878,80.2785,5.5)
for field,fn,expected in [('tri_sphuta',sphuta.tri_sphuta,'Pisces 20° 47 20"'),('chatur_sphuta',sphuta.chatur_sphuta,'Scorpio 12° 21 15"'),('pancha_sphuta',sphuta.pancha_sphuta,'Aries 22° 54 29"')]:
try:
with contextlib.redirect_stdout(io.StringIO()), contextlib.redirect_stderr(io.StringIO()):
got=fn(dob,tob,place,divisional_chart_factor=1)
rows.append({'field':field,'status':'observed','raw_result':got,'expected_from_oss_case':expected})
except Exception as e:
rows.append({'field':field,'status':'runtime_error','error':type(e).__name__,'expected_from_oss_case':expected})
except Exception as e:
meta={'package':'jhora','import_error':type(e).__name__}
for field in ['tri_sphuta','chatur_sphuta','pancha_sphuta']: rows.append({'field':field,'status':'runtime_error','error':'jhora_import_failed'})
data={'scope':'prashna_sphuta_oss_case_probe','created_at':date,'status':'oss_probe_ready','claim_status':'tooling_observation_only','production_tuning_allowed':False,'truth_matrix_allowed':False,'oracle_ready':False,'license_boundary':'agpl_observation_only_do_not_vendor','case':{'source':'jhora.tests.pvr_tests.sphuta_tests','dob':'1996-12-07','tob':'10:34:00','place':'Chennai 13.0878,80.2785 +05:30'},'package_metadata':meta,'rows':rows,'boundary':'Runs installed OSS package only; no AGPL implementation is copied and no oracle truth is upgraded.'}
data['raw_hash']=h({'meta':meta,'rows':rows})
return data
def main():
ap=argparse.ArgumentParser(); ap.add_argument('--date',default='2026-07-20'); args=ap.parse_args(); data=build(args.date); OUT.write_text(json.dumps(data,ensure_ascii=False,indent=2,sort_keys=True)+'\n'); print(json.dumps(data,ensure_ascii=False,indent=2,sort_keys=True))
if __name__=='__main__': main()