openjyotish 0.1.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (60) hide show
  1. openjyotish-0.1.0/.gitignore +27 -0
  2. openjyotish-0.1.0/AGENTS.md +19 -0
  3. openjyotish-0.1.0/LICENSE +661 -0
  4. openjyotish-0.1.0/PKG-INFO +172 -0
  5. openjyotish-0.1.0/README.md +149 -0
  6. openjyotish-0.1.0/assets/logo.png +0 -0
  7. openjyotish-0.1.0/core/__init__.py +0 -0
  8. openjyotish-0.1.0/core/ashtakavarga.py +202 -0
  9. openjyotish-0.1.0/core/charts.py +374 -0
  10. openjyotish-0.1.0/core/constants.py +254 -0
  11. openjyotish-0.1.0/core/dasha.py +237 -0
  12. openjyotish-0.1.0/core/eclipses.py +229 -0
  13. openjyotish-0.1.0/core/ephemeris.py +294 -0
  14. openjyotish-0.1.0/core/geocode.py +209 -0
  15. openjyotish-0.1.0/core/panchang.py +145 -0
  16. openjyotish-0.1.0/core/shadbala.py +605 -0
  17. openjyotish-0.1.0/data/ephe/.gitkeep +0 -0
  18. openjyotish-0.1.0/data/gazetteer/README.md +38 -0
  19. openjyotish-0.1.0/data/gazetteer/cities.csv +27502 -0
  20. openjyotish-0.1.0/environment.yml +8 -0
  21. openjyotish-0.1.0/openjyotish/__init__.py +3 -0
  22. openjyotish-0.1.0/openjyotish/__main__.py +6 -0
  23. openjyotish-0.1.0/openjyotish/core/__init__.py +0 -0
  24. openjyotish-0.1.0/openjyotish/core/ashtakavarga.py +202 -0
  25. openjyotish-0.1.0/openjyotish/core/charts.py +374 -0
  26. openjyotish-0.1.0/openjyotish/core/constants.py +254 -0
  27. openjyotish-0.1.0/openjyotish/core/dasha.py +237 -0
  28. openjyotish-0.1.0/openjyotish/core/eclipses.py +229 -0
  29. openjyotish-0.1.0/openjyotish/core/ephemeris.py +289 -0
  30. openjyotish-0.1.0/openjyotish/core/geocode.py +206 -0
  31. openjyotish-0.1.0/openjyotish/core/panchang.py +145 -0
  32. openjyotish-0.1.0/openjyotish/core/shadbala.py +605 -0
  33. openjyotish-0.1.0/openjyotish/data/__init__.py +0 -0
  34. openjyotish-0.1.0/openjyotish/data/ephe/__init__.py +0 -0
  35. openjyotish-0.1.0/openjyotish/data/ephe/semo_18.se1 +0 -0
  36. openjyotish-0.1.0/openjyotish/data/ephe/sepl_18.se1 +0 -0
  37. openjyotish-0.1.0/openjyotish/data/gazetteer/README.md +38 -0
  38. openjyotish-0.1.0/openjyotish/data/gazetteer/__init__.py +0 -0
  39. openjyotish-0.1.0/openjyotish/data/gazetteer/cities.csv +27502 -0
  40. openjyotish-0.1.0/openjyotish/server.py +494 -0
  41. openjyotish-0.1.0/openjyotish-spec.md +138 -0
  42. openjyotish-0.1.0/pyproject.toml +46 -0
  43. openjyotish-0.1.0/requirements-dev.txt +2 -0
  44. openjyotish-0.1.0/requirements.txt +2 -0
  45. openjyotish-0.1.0/scripts/build_gazetteer.py +90 -0
  46. openjyotish-0.1.0/scripts/crosscheck_ashtakavarga.py +69 -0
  47. openjyotish-0.1.0/scripts/crosscheck_dasha.py +126 -0
  48. openjyotish-0.1.0/scripts/crosscheck_panchang.py +77 -0
  49. openjyotish-0.1.0/scripts/crosscheck_shadbala.py +130 -0
  50. openjyotish-0.1.0/scripts/crosscheck_vargas.py +77 -0
  51. openjyotish-0.1.0/scripts/download_ephe.py +79 -0
  52. openjyotish-0.1.0/scripts/fetch_ephemeris.py +54 -0
  53. openjyotish-0.1.0/scripts/make_fixtures.py +133 -0
  54. openjyotish-0.1.0/server.py +37 -0
  55. openjyotish-0.1.0/tests/reference_charts/fixtures.json +2090 -0
  56. openjyotish-0.1.0/tests/test_eclipses.py +81 -0
  57. openjyotish-0.1.0/tests/test_ephemeris.py +40 -0
  58. openjyotish-0.1.0/tests/test_geocode.py +86 -0
  59. openjyotish-0.1.0/tests/test_reference_charts.py +215 -0
  60. openjyotish-0.1.0/tests/test_smoke.py +84 -0
@@ -0,0 +1,27 @@
1
+ # Python
2
+ __pycache__/
3
+ *.py[cod]
4
+ *.egg-info/
5
+ .venv/
6
+ dist/
7
+ build/
8
+
9
+ # Tooling
10
+ .pytest_cache/
11
+ .ruff_cache/
12
+ .mypy_cache/
13
+ .coverage
14
+
15
+ # Ephemeris — legacy top-level data/ephe/ is gitignored for backwards-compat
16
+ # local installs; the canonical bundled files live at openjyotish/data/ephe/
17
+ # and ARE tracked (shipped in the wheel under AGPL).
18
+ data/ephe/*
19
+ !data/ephe/.gitkeep
20
+ !openjyotish/data/ephe/*.se1
21
+
22
+ # Personal/local MCP config
23
+ opencode.json
24
+ .pi/
25
+
26
+ # OS
27
+ .DS_Store
@@ -0,0 +1,19 @@
1
+ # OpenJyotish — agent instructions
2
+
3
+ ## Python environment (user preference)
4
+ Always work in the conda env for Python tasks. If missing, recreate it:
5
+ `conda env create -f environment.yml`
6
+ Run all Python/pytest commands via: `conda run -n openjyotish python ...`
7
+ Never use system pip/python directly; never use uv venvs here.
8
+
9
+ ## Project
10
+ Deterministic Vedic astrology MCP server (see openjyotish-spec.md).
11
+ Stack locked for v1: pyswisseph (Swiss Ephemeris, AGPL), logic built direct on it,
12
+ whole-sign houses, Lahiri ayanamsha default. Every tool response must include an
13
+ explicit `conventions_used` block.
14
+
15
+ ## Server framework notes
16
+ - `mcp>=2.0.0` uses the new `MCPServer` API (`from mcp.server.mcpserver import MCPServer`,
17
+ `@server.tool()` decorator, `server.run("stdio")`). There is NO
18
+ `mcp.server.fastmcp.FastMCP` in 2.x.
19
+ - Dev-only oracle PyJHora lives in the env; never import it from core/ or server.py.