astroapi-io-client 0.2.0__tar.gz → 0.2.2__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.
- {astroapi_io_client-0.2.0 → astroapi_io_client-0.2.2}/PKG-INFO +5 -4
- {astroapi_io_client-0.2.0 → astroapi_io_client-0.2.2}/README.md +4 -3
- {astroapi_io_client-0.2.0 → astroapi_io_client-0.2.2}/pyproject.toml +1 -1
- {astroapi_io_client-0.2.0 → astroapi_io_client-0.2.2}/src/astroapi_client/__init__.py +3 -3
- {astroapi_io_client-0.2.0 → astroapi_io_client-0.2.2}/src/astroapi_client/_validation.py +31 -0
- {astroapi_io_client-0.2.0 → astroapi_io_client-0.2.2}/src/astroapi_client/client.py +7 -3
- {astroapi_io_client-0.2.0 → astroapi_io_client-0.2.2}/src/astroapi_client/types.py +8 -0
- {astroapi_io_client-0.2.0 → astroapi_io_client-0.2.2}/src/astroapi_io_client.egg-info/PKG-INFO +5 -4
- {astroapi_io_client-0.2.0 → astroapi_io_client-0.2.2}/tests/test_client.py +8 -0
- {astroapi_io_client-0.2.0 → astroapi_io_client-0.2.2}/LICENSE.txt +0 -0
- {astroapi_io_client-0.2.0 → astroapi_io_client-0.2.2}/setup.cfg +0 -0
- {astroapi_io_client-0.2.0 → astroapi_io_client-0.2.2}/src/astroapi_client/errors.py +0 -0
- {astroapi_io_client-0.2.0 → astroapi_io_client-0.2.2}/src/astroapi_client/py.typed +0 -0
- {astroapi_io_client-0.2.0 → astroapi_io_client-0.2.2}/src/astroapi_client/receipts.py +0 -0
- {astroapi_io_client-0.2.0 → astroapi_io_client-0.2.2}/src/astroapi_io_client.egg-info/SOURCES.txt +0 -0
- {astroapi_io_client-0.2.0 → astroapi_io_client-0.2.2}/src/astroapi_io_client.egg-info/dependency_links.txt +0 -0
- {astroapi_io_client-0.2.0 → astroapi_io_client-0.2.2}/src/astroapi_io_client.egg-info/requires.txt +0 -0
- {astroapi_io_client-0.2.0 → astroapi_io_client-0.2.2}/src/astroapi_io_client.egg-info/top_level.txt +0 -0
- {astroapi_io_client-0.2.0 → astroapi_io_client-0.2.2}/tests/test_aspect_windows_client.py +0 -0
- {astroapi_io_client-0.2.0 → astroapi_io_client-0.2.2}/tests/test_calendar_export.py +0 -0
- {astroapi_io_client-0.2.0 → astroapi_io_client-0.2.2}/tests/test_davison_input.py +0 -0
- {astroapi_io_client-0.2.0 → astroapi_io_client-0.2.2}/tests/test_house_ingresses_client.py +0 -0
- {astroapi_io_client-0.2.0 → astroapi_io_client-0.2.2}/tests/test_next_expansions_client.py +0 -0
- {astroapi_io_client-0.2.0 → astroapi_io_client-0.2.2}/tests/test_onboarding_context_client.py +0 -0
- {astroapi_io_client-0.2.0 → astroapi_io_client-0.2.2}/tests/test_planetary_events_client.py +0 -0
- {astroapi_io_client-0.2.0 → astroapi_io_client-0.2.2}/tests/test_varga_input.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: astroapi-io-client
|
|
3
|
-
Version: 0.2.
|
|
3
|
+
Version: 0.2.2
|
|
4
4
|
Summary: Synchronous Python client for the AstroAPI.io calculation gateway
|
|
5
5
|
License-Expression: ISC
|
|
6
6
|
Classifier: Programming Language :: Python :: 3
|
|
@@ -14,14 +14,14 @@ Dynamic: license-file
|
|
|
14
14
|
|
|
15
15
|
# AstroAPI.io Python client
|
|
16
16
|
|
|
17
|
-
The
|
|
17
|
+
The R195 release version `astroapi-io-client==0.2.2` covers all forty-three calculation routes: forty-two standard operations plus the separate Pro Nakshatra Timeline. Minor-body calculations are not part of the contract.
|
|
18
18
|
|
|
19
19
|
A synchronous client for Python 3.10+, with no runtime dependencies.
|
|
20
20
|
The package import is `astroapi_client`; the distribution name is
|
|
21
|
-
`astroapi-io-client`. Version 0.2.
|
|
21
|
+
`astroapi-io-client`. Version 0.2.2 is the R195 release version; package availability does not imply
|
|
22
22
|
new deployed API capabilities.
|
|
23
23
|
|
|
24
|
-
Install from PyPI with `python -m pip install astroapi-io-client==0.2.
|
|
24
|
+
Install from PyPI with `python -m pip install astroapi-io-client==0.2.2`, or from a local checkout using `python -m pip install ./clients/python`.
|
|
25
25
|
Building needs setuptools and wheel; the installed client uses only the standard
|
|
26
26
|
library. Keep API credentials in trusted server or command-line environments.
|
|
27
27
|
|
|
@@ -96,6 +96,7 @@ Type hints describe the server contract and do not perform response validation.
|
|
|
96
96
|
| `event_calendar` **beta** | `calculateEventCalendar` | whole-second UTC interval and selected event families | `result["result"]["events"]`; optional iCalendar, strict opt-in fixed-column CSV, and opt-in deduplicated pass groups |
|
|
97
97
|
| `event_rule_search` **beta** | `calculateEventRuleSearch` | bounded versioned AND/OR/NOT rules, location, and interval | validation/cost analysis plus sampled matches and windows |
|
|
98
98
|
| `convention_compare` **beta** | `calculateConventionCompare` | two profiles with one birth, or two trusted signed responses | field-level differences without ranking or interpretation |
|
|
99
|
+
| `chart_robustness` **beta** | `calculateChartRobustness` | unknown or approximate birth time plus 2–3 convention profiles | sampled stability classifications without rectification, ranking, or prediction |
|
|
99
100
|
| `synastry_svg` **beta** | `calculateSynastrySvg` | two births; optional zodiac/houses/theme/aspects/`include_png` | `result["svg"]`, optional `result["png"]` |
|
|
100
101
|
| `transit_svg` **beta** | `calculateTransitSvg` | birth and transit date; optional display controls/`include_png` | `result["svg"]`, optional `result["png"]` |
|
|
101
102
|
| `natal_report` **beta** | `calculateNatalReport` | birth; optional zodiac/houses/theme/SVG/download | `result["html"]`, source-linked `result["facts"]`, optional `result["download"]` |
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
# AstroAPI.io Python client
|
|
2
2
|
|
|
3
|
-
The
|
|
3
|
+
The R195 release version `astroapi-io-client==0.2.2` covers all forty-three calculation routes: forty-two standard operations plus the separate Pro Nakshatra Timeline. Minor-body calculations are not part of the contract.
|
|
4
4
|
|
|
5
5
|
A synchronous client for Python 3.10+, with no runtime dependencies.
|
|
6
6
|
The package import is `astroapi_client`; the distribution name is
|
|
7
|
-
`astroapi-io-client`. Version 0.2.
|
|
7
|
+
`astroapi-io-client`. Version 0.2.2 is the R195 release version; package availability does not imply
|
|
8
8
|
new deployed API capabilities.
|
|
9
9
|
|
|
10
|
-
Install from PyPI with `python -m pip install astroapi-io-client==0.2.
|
|
10
|
+
Install from PyPI with `python -m pip install astroapi-io-client==0.2.2`, or from a local checkout using `python -m pip install ./clients/python`.
|
|
11
11
|
Building needs setuptools and wheel; the installed client uses only the standard
|
|
12
12
|
library. Keep API credentials in trusted server or command-line environments.
|
|
13
13
|
|
|
@@ -82,6 +82,7 @@ Type hints describe the server contract and do not perform response validation.
|
|
|
82
82
|
| `event_calendar` **beta** | `calculateEventCalendar` | whole-second UTC interval and selected event families | `result["result"]["events"]`; optional iCalendar, strict opt-in fixed-column CSV, and opt-in deduplicated pass groups |
|
|
83
83
|
| `event_rule_search` **beta** | `calculateEventRuleSearch` | bounded versioned AND/OR/NOT rules, location, and interval | validation/cost analysis plus sampled matches and windows |
|
|
84
84
|
| `convention_compare` **beta** | `calculateConventionCompare` | two profiles with one birth, or two trusted signed responses | field-level differences without ranking or interpretation |
|
|
85
|
+
| `chart_robustness` **beta** | `calculateChartRobustness` | unknown or approximate birth time plus 2–3 convention profiles | sampled stability classifications without rectification, ranking, or prediction |
|
|
85
86
|
| `synastry_svg` **beta** | `calculateSynastrySvg` | two births; optional zodiac/houses/theme/aspects/`include_png` | `result["svg"]`, optional `result["png"]` |
|
|
86
87
|
| `transit_svg` **beta** | `calculateTransitSvg` | birth and transit date; optional display controls/`include_png` | `result["svg"]`, optional `result["png"]` |
|
|
87
88
|
| `natal_report` **beta** | `calculateNatalReport` | birth; optional zodiac/houses/theme/SVG/download | `result["html"]`, source-linked `result["facts"]`, optional `result["download"]` |
|
|
@@ -17,7 +17,7 @@ from .types import (
|
|
|
17
17
|
GeographicLocation, RelocationChartInput, AstrocartographyBody, AstrocartographyInput,
|
|
18
18
|
EclipseType, EclipseGeometryInput, EclipseObserverSnapshot, EclipseEvent, EclipseGeometryResponse, MoonPhaseSector, ElectionalAspectFilter,
|
|
19
19
|
ElectionalFilters, ElectionalSearchInput,
|
|
20
|
-
EventRule, EventRuleSearchInput, ConventionProfile, ConventionCompareInput, ReleaseCompareInput,
|
|
20
|
+
EventRule, EventRuleSearchInput, ConventionProfile, ConventionCompareInput, ReleaseCompareInput, ChartRobustnessInput,
|
|
21
21
|
NatalAnalysisAspectName, NatalAnalysisAspectOption, NatalAnalysisInput,
|
|
22
22
|
AshtakootaInput, AshtakavargaInput, NumerologyInput, PlanetaryHoursInput,
|
|
23
23
|
FixedStar, FixedStarsInput,
|
|
@@ -30,7 +30,7 @@ from .types import (
|
|
|
30
30
|
PlaceSearchInput, TimezoneResolveInput, NatalContextInput,
|
|
31
31
|
)
|
|
32
32
|
|
|
33
|
-
__version__ = "0.2.
|
|
33
|
+
__version__ = "0.2.2"
|
|
34
34
|
__all__ = [
|
|
35
35
|
"NumerologyInput", "verify_calculation_receipt",
|
|
36
36
|
"AstroAPIClient", "AstroAPIError", "ClientBusyError", "HTTPError", "DavisonInput",
|
|
@@ -45,7 +45,7 @@ __all__ = [
|
|
|
45
45
|
"GeographicLocation", "RelocationChartInput", "AstrocartographyBody", "AstrocartographyInput",
|
|
46
46
|
"EclipseType", "EclipseGeometryInput", "EclipseObserverSnapshot", "EclipseEvent", "EclipseGeometryResponse", "MoonPhaseSector", "ElectionalAspectFilter",
|
|
47
47
|
"ElectionalFilters", "ElectionalSearchInput",
|
|
48
|
-
"EventRule", "EventRuleSearchInput", "ConventionProfile", "ConventionCompareInput", "ReleaseCompareInput",
|
|
48
|
+
"EventRule", "EventRuleSearchInput", "ConventionProfile", "ConventionCompareInput", "ReleaseCompareInput", "ChartRobustnessInput",
|
|
49
49
|
"NatalAnalysisAspectName", "NatalAnalysisAspectOption", "NatalAnalysisInput",
|
|
50
50
|
"AshtakootaInput", "AshtakavargaInput", "PlanetaryHoursInput",
|
|
51
51
|
"FixedStar", "FixedStarsInput",
|
|
@@ -664,6 +664,37 @@ def encode_request(route: str, payload: Any) -> bytes:
|
|
|
664
664
|
if (type(location["lat"]) not in (int, float) or not math.isfinite(location["lat"]) or abs(location["lat"]) >= 90 or type(location["lon"]) not in (int, float) or not math.isfinite(location["lon"]) or abs(location["lon"]) > 180): _invalid("event rule coordinates are outside supported bounds.")
|
|
665
665
|
if "sample_minutes" in data and data["sample_minutes"] not in (15, 30, 60): _invalid("sample_minutes must be 15, 30, or 60.")
|
|
666
666
|
if "validate_only" in data and type(data["validate_only"]) is not bool: _invalid("validate_only must be a boolean.")
|
|
667
|
+
elif route == "chart-robustness":
|
|
668
|
+
_object(data, {"birth_time", "lat", "lon", "profiles"}, {"birth_time", "lat", "lon", "profiles"})
|
|
669
|
+
workflow = _object(data["birth_time"], {"status", "date", "time", "timezone", "uncertainty_minutes"}, {"status"})
|
|
670
|
+
if workflow["status"] == "unknown":
|
|
671
|
+
_object(workflow, {"status", "date", "timezone"}, {"status", "date", "timezone"})
|
|
672
|
+
_date(workflow["date"]); _timezone(workflow["timezone"])
|
|
673
|
+
elif workflow["status"] == "approximate":
|
|
674
|
+
_object(workflow, {"status", "date", "time", "timezone", "uncertainty_minutes"}, {"status", "date", "time", "timezone", "uncertainty_minutes"})
|
|
675
|
+
_date(workflow["date"]); _time(workflow["time"]); _timezone(workflow["timezone"])
|
|
676
|
+
uncertainty = workflow["uncertainty_minutes"]
|
|
677
|
+
if type(uncertainty) is not int or not 10 <= uncertainty <= 120 or uncertainty % 10:
|
|
678
|
+
_invalid("chart robustness uncertainty_minutes must be a multiple of 10 from 10 through 120.")
|
|
679
|
+
else:
|
|
680
|
+
_invalid("birth_time status must be unknown or approximate.")
|
|
681
|
+
if (type(data["lat"]) not in (int, float) or not math.isfinite(data["lat"]) or abs(data["lat"]) > 90
|
|
682
|
+
or type(data["lon"]) not in (int, float) or not math.isfinite(data["lon"]) or abs(data["lon"]) > 180):
|
|
683
|
+
_invalid("chart robustness coordinates are outside supported bounds.")
|
|
684
|
+
if type(data["profiles"]) is not list or not 2 <= len(data["profiles"]) <= 3:
|
|
685
|
+
_invalid("profiles must contain two or three entries.")
|
|
686
|
+
normalized_profiles = []
|
|
687
|
+
for profile in data["profiles"]:
|
|
688
|
+
_object(profile, {"zodiac", "ayanamsa", "house_system"}, {"zodiac", "house_system"})
|
|
689
|
+
_enum(profile["zodiac"], {"tropical", "sidereal"}, "zodiac must be tropical or sidereal.")
|
|
690
|
+
_enum(profile["house_system"], {"equal", "whole_sign", "placidus"}, "house_system is unsupported.")
|
|
691
|
+
if profile["zodiac"] == "tropical" and "ayanamsa" in profile:
|
|
692
|
+
_invalid("tropical profiles cannot include ayanamsa.")
|
|
693
|
+
if profile["zodiac"] == "sidereal" and ("ayanamsa" not in profile or profile["ayanamsa"] not in _AYANAMSAS):
|
|
694
|
+
_invalid("sidereal profiles require a supported ayanamsa.")
|
|
695
|
+
normalized_profiles.append(json.dumps(profile, sort_keys=True, separators=(",", ":")))
|
|
696
|
+
if len(set(normalized_profiles)) != len(normalized_profiles):
|
|
697
|
+
_invalid("profiles must be different.")
|
|
667
698
|
elif route == "convention-compare":
|
|
668
699
|
if set(data) == {"releases"}:
|
|
669
700
|
if type(data["releases"]) is not list or len(data["releases"]) != 2 \
|
|
@@ -32,7 +32,7 @@ from .types import (
|
|
|
32
32
|
MoonPhaseInput, MoonPhaseResponse, DavisonInput, PlanetaryEventsInput, PlanetaryEventsResponse,
|
|
33
33
|
HouseIngressesInput, HouseIngressesResponse,
|
|
34
34
|
AspectWindowsInput, AspectWindowsResponse,
|
|
35
|
-
EventRuleSearchInput, ConventionCompareInput, ReleaseCompareInput,
|
|
35
|
+
EventRuleSearchInput, ConventionCompareInput, ReleaseCompareInput, ChartRobustnessInput,
|
|
36
36
|
EventCalendarInput, SynastrySvgInput, TransitSvgInput, NatalReportInput,
|
|
37
37
|
BirthTimeSensitivityInput, RelocationChartInput, AstrocartographyInput,
|
|
38
38
|
PlaceSearchInput, TimezoneResolveInput, NatalContextInput,
|
|
@@ -181,7 +181,7 @@ def _perform(
|
|
|
181
181
|
"Content-Type": "application/json",
|
|
182
182
|
"Accept": "application/json",
|
|
183
183
|
"Accept-Encoding": "identity",
|
|
184
|
-
"User-Agent": "astroapi-io-client/0.2.
|
|
184
|
+
"User-Agent": "astroapi-io-client/0.2.2",
|
|
185
185
|
"Connection": "close",
|
|
186
186
|
**({"X-AstroAPI-Receipt": "v1"} if request_receipt else {}),
|
|
187
187
|
})
|
|
@@ -285,7 +285,7 @@ class AstroAPIClient:
|
|
|
285
285
|
|
|
286
286
|
def _request(self, route: str, payload: object) -> JSONResponse:
|
|
287
287
|
body = encode_request(route, payload)
|
|
288
|
-
timeout = (self._timeline_timeout if route in {"nakshatra-timeline", "birth-time-sensitivity"}
|
|
288
|
+
timeout = (self._timeline_timeout if route in {"nakshatra-timeline", "birth-time-sensitivity", "chart-robustness"}
|
|
289
289
|
else self._planetary_events_timeout if route in {"planetary-events", "house-ingresses", "eclipse-geometry", "electional-search", "event-rule-search"}
|
|
290
290
|
else self._aspect_windows_timeout if route == "aspect-windows"
|
|
291
291
|
else self._timeout)
|
|
@@ -424,6 +424,10 @@ class AstroAPIClient:
|
|
|
424
424
|
"""BETA: compare conventions or two trusted signed release responses."""
|
|
425
425
|
return self._request("convention-compare", payload)
|
|
426
426
|
|
|
427
|
+
def chart_robustness(self, payload: ChartRobustnessInput) -> JSONResponse:
|
|
428
|
+
"""BETA: separate sampled birth-time and convention sensitivity."""
|
|
429
|
+
return self._request("chart-robustness", payload)
|
|
430
|
+
|
|
427
431
|
def synastry_svg(self, payload: SynastrySvgInput) -> JSONResponse:
|
|
428
432
|
"""BETA: original deterministic double-wheel relationship SVG."""
|
|
429
433
|
return self._request("synastry-svg", payload)
|
|
@@ -382,6 +382,14 @@ class ConventionCompareInput(TypedDict):
|
|
|
382
382
|
birth: BirthInput
|
|
383
383
|
profiles: list[ConventionProfile]
|
|
384
384
|
|
|
385
|
+
|
|
386
|
+
class ChartRobustnessInput(TypedDict):
|
|
387
|
+
birth_time: BirthTimeWorkflowInput
|
|
388
|
+
lat: float
|
|
389
|
+
lon: float
|
|
390
|
+
profiles: list[ConventionProfile]
|
|
391
|
+
|
|
392
|
+
|
|
385
393
|
NatalAnalysisAspectName = Literal[
|
|
386
394
|
"conjunction", "semisextile", "semisquare", "sextile", "quintile",
|
|
387
395
|
"square", "trine", "sesquiquadrate", "biquintile", "quincunx", "opposition",
|
{astroapi_io_client-0.2.0 → astroapi_io_client-0.2.2}/src/astroapi_io_client.egg-info/PKG-INFO
RENAMED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: astroapi-io-client
|
|
3
|
-
Version: 0.2.
|
|
3
|
+
Version: 0.2.2
|
|
4
4
|
Summary: Synchronous Python client for the AstroAPI.io calculation gateway
|
|
5
5
|
License-Expression: ISC
|
|
6
6
|
Classifier: Programming Language :: Python :: 3
|
|
@@ -14,14 +14,14 @@ Dynamic: license-file
|
|
|
14
14
|
|
|
15
15
|
# AstroAPI.io Python client
|
|
16
16
|
|
|
17
|
-
The
|
|
17
|
+
The R195 release version `astroapi-io-client==0.2.2` covers all forty-three calculation routes: forty-two standard operations plus the separate Pro Nakshatra Timeline. Minor-body calculations are not part of the contract.
|
|
18
18
|
|
|
19
19
|
A synchronous client for Python 3.10+, with no runtime dependencies.
|
|
20
20
|
The package import is `astroapi_client`; the distribution name is
|
|
21
|
-
`astroapi-io-client`. Version 0.2.
|
|
21
|
+
`astroapi-io-client`. Version 0.2.2 is the R195 release version; package availability does not imply
|
|
22
22
|
new deployed API capabilities.
|
|
23
23
|
|
|
24
|
-
Install from PyPI with `python -m pip install astroapi-io-client==0.2.
|
|
24
|
+
Install from PyPI with `python -m pip install astroapi-io-client==0.2.2`, or from a local checkout using `python -m pip install ./clients/python`.
|
|
25
25
|
Building needs setuptools and wheel; the installed client uses only the standard
|
|
26
26
|
library. Keep API credentials in trusted server or command-line environments.
|
|
27
27
|
|
|
@@ -96,6 +96,7 @@ Type hints describe the server contract and do not perform response validation.
|
|
|
96
96
|
| `event_calendar` **beta** | `calculateEventCalendar` | whole-second UTC interval and selected event families | `result["result"]["events"]`; optional iCalendar, strict opt-in fixed-column CSV, and opt-in deduplicated pass groups |
|
|
97
97
|
| `event_rule_search` **beta** | `calculateEventRuleSearch` | bounded versioned AND/OR/NOT rules, location, and interval | validation/cost analysis plus sampled matches and windows |
|
|
98
98
|
| `convention_compare` **beta** | `calculateConventionCompare` | two profiles with one birth, or two trusted signed responses | field-level differences without ranking or interpretation |
|
|
99
|
+
| `chart_robustness` **beta** | `calculateChartRobustness` | unknown or approximate birth time plus 2–3 convention profiles | sampled stability classifications without rectification, ranking, or prediction |
|
|
99
100
|
| `synastry_svg` **beta** | `calculateSynastrySvg` | two births; optional zodiac/houses/theme/aspects/`include_png` | `result["svg"]`, optional `result["png"]` |
|
|
100
101
|
| `transit_svg` **beta** | `calculateTransitSvg` | birth and transit date; optional display controls/`include_png` | `result["svg"]`, optional `result["png"]` |
|
|
101
102
|
| `natal_report` **beta** | `calculateNatalReport` | birth; optional zodiac/houses/theme/SVG/download | `result["html"]`, source-linked `result["facts"]`, optional `result["download"]` |
|
|
@@ -62,9 +62,11 @@ ROUTES += [
|
|
|
62
62
|
|
|
63
63
|
RULE_INPUT = {"rule_version": 1, "start_utc": "2026-01-01T00:00:00Z", "end_utc": "2026-01-02T00:00:00Z", "location": {"lat": 0, "lon": 0}, "sample_minutes": 60, "rule": {"all": [{"fact": "planet_sign", "body": "moon", "value": "Taurus"}]}}
|
|
64
64
|
CONVENTION_INPUT = {"birth": BIRTH, "profiles": [{"zodiac": "tropical", "house_system": "equal"}, {"zodiac": "sidereal", "ayanamsa": "lahiri", "house_system": "whole_sign"}]}
|
|
65
|
+
CHART_ROBUSTNESS_INPUT = {"birth_time": {"status": "approximate", "date": "2000-01-01", "time": "12:00", "timezone": "UTC", "uncertainty_minutes": 30}, "lat": 0, "lon": 0, "profiles": [{"zodiac": "tropical", "house_system": "equal"}, {"zodiac": "sidereal", "ayanamsa": "lahiri", "house_system": "whole_sign"}]}
|
|
65
66
|
ROUTES += [
|
|
66
67
|
("event_rule_search", "event-rule-search", RULE_INPUT, {"type": "event_rule_search", "status": "beta", "rule_analysis": {}, "matching_samples": [], "sampled_candidate_windows": [], "metadata": {}}),
|
|
67
68
|
("convention_compare", "convention-compare", CONVENTION_INPUT, {"type": "convention_compare", "status": "beta", "profiles": [{}, {}], "differences": {}, "metadata": {}}),
|
|
69
|
+
("chart_robustness", "chart-robustness", CHART_ROBUSTNESS_INPUT, {"type": "chart_robustness", "status": "beta", "profiles": [{}, {}], "facts": [{} for _ in range(22)], "summary": {}, "evidence": {}, "metadata": {}}),
|
|
68
70
|
]
|
|
69
71
|
|
|
70
72
|
@contextmanager
|
|
@@ -147,9 +149,11 @@ def local_client(url, **options):
|
|
|
147
149
|
|
|
148
150
|
RULE_INPUT = {"rule_version": 1, "start_utc": "2026-01-01T00:00:00Z", "end_utc": "2026-01-02T00:00:00Z", "location": {"lat": 0, "lon": 0}, "sample_minutes": 60, "rule": {"all": [{"fact": "planet_sign", "body": "moon", "value": "Taurus"}]}}
|
|
149
151
|
CONVENTION_INPUT = {"birth": BIRTH, "profiles": [{"zodiac": "tropical", "house_system": "equal"}, {"zodiac": "sidereal", "ayanamsa": "lahiri", "house_system": "whole_sign"}]}
|
|
152
|
+
CHART_ROBUSTNESS_INPUT = {"birth_time": {"status": "approximate", "date": "2000-01-01", "time": "12:00", "timezone": "UTC", "uncertainty_minutes": 30}, "lat": 0, "lon": 0, "profiles": [{"zodiac": "tropical", "house_system": "equal"}, {"zodiac": "sidereal", "ayanamsa": "lahiri", "house_system": "whole_sign"}]}
|
|
150
153
|
ROUTES += [
|
|
151
154
|
("event_rule_search", "event-rule-search", RULE_INPUT, {"type": "event_rule_search", "status": "beta", "rule_analysis": {}, "matching_samples": [], "sampled_candidate_windows": [], "metadata": {}}),
|
|
152
155
|
("convention_compare", "convention-compare", CONVENTION_INPUT, {"type": "convention_compare", "status": "beta", "profiles": [{}, {}], "differences": {}, "metadata": {}}),
|
|
156
|
+
("chart_robustness", "chart-robustness", CHART_ROBUSTNESS_INPUT, {"type": "chart_robustness", "status": "beta", "profiles": [{}, {}], "facts": [{} for _ in range(22)], "summary": {}, "evidence": {}, "metadata": {}}),
|
|
153
157
|
]
|
|
154
158
|
|
|
155
159
|
@contextmanager
|
|
@@ -401,6 +405,10 @@ class ClientTests(unittest.TestCase):
|
|
|
401
405
|
client.convention_compare({"birth": BIRTH, "profiles": [{"zodiac": "tropical", "house_system": "equal"}] * 2})
|
|
402
406
|
with self.assertRaises(ValidationError):
|
|
403
407
|
client.convention_compare({"birth": BIRTH, "profiles": [{"zodiac": "sidereal", "house_system": "whole_sign"}, {"zodiac": "tropical", "house_system": "equal"}]})
|
|
408
|
+
with self.assertRaises(ValidationError):
|
|
409
|
+
client.chart_robustness({**CHART_ROBUSTNESS_INPUT, "birth_time": {**CHART_ROBUSTNESS_INPUT["birth_time"], "time": "noon"}})
|
|
410
|
+
with self.assertRaises(ValidationError):
|
|
411
|
+
client.chart_robustness({**CHART_ROBUSTNESS_INPUT, "profiles": [CHART_ROBUSTNESS_INPUT["profiles"][0]] * 2})
|
|
404
412
|
|
|
405
413
|
|
|
406
414
|
def test_request_body_limit(self):
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{astroapi_io_client-0.2.0 → astroapi_io_client-0.2.2}/src/astroapi_io_client.egg-info/SOURCES.txt
RENAMED
|
File without changes
|
|
File without changes
|
{astroapi_io_client-0.2.0 → astroapi_io_client-0.2.2}/src/astroapi_io_client.egg-info/requires.txt
RENAMED
|
File without changes
|
{astroapi_io_client-0.2.0 → astroapi_io_client-0.2.2}/src/astroapi_io_client.egg-info/top_level.txt
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{astroapi_io_client-0.2.0 → astroapi_io_client-0.2.2}/tests/test_onboarding_context_client.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|