Observer/Geometry Delegation Update

Scope

This update introduces two targeted API-level changes to support strict downstream delegation of observer and geometry handling to the public pyampp.geometry surface.

Files Changed

  1. pyampp/gxbox/observer_restore.py

  • Updated normalize_observer_key aliases:

    • Added terra -> earth

    • Added stereo ahead -> stereo-a

    • Added stereo behind -> stereo-b

  • Changed fallback normalization behavior from:

    • unknown key -> earth

    to:

    • unknown key -> preserved normalized key

  1. pyampp/geometry/core.py

  • Added public helper make_observer_wcs_header to generate an observer-aware SunPy-compatible WCS header with canonical observer cards.

  1. pyampp/geometry/__init__.py

  • Exported make_observer_wcs_header in the public geometry import surface.

Purpose

These changes are intended to remove downstream geometry duplication and make pyampp.geometry sufficient as the single integration surface for:

  • observer identity normalization/resolution,

  • observer-aware FOV and projection utilities,

  • observer-aware WCS header generation.

Behavior and Compatibility Notes

  1. Canonical model I/O normalization remains unchanged:

  • Missing observer identity in restored legacy models still defaults to Earth via the model normalization pipeline.

  1. The observer key normalization change only affects explicit observer-key handling in the observer helper path:

  • Known aliases still map to canonical keys.

  • Unknown keys are no longer collapsed to Earth at normalization time.

Downstream Migration Intent

Downstream code (for example gximagecomputing workflows) can use these APIs to avoid local reimplementation of observer/WCS routines:

  • pyampp.geometry.normalize_observer_key

  • pyampp.geometry.resolve_named_observer

  • pyampp.geometry.resolve_observer_with_info

  • pyampp.geometry.compute_inscribing_fov_from_world

  • pyampp.geometry.make_observer_wcs_header

PR Summary Template

Use this summary in the PR description:

  • Added observer alias coverage and preserved unknown normalized observer keys in observer_restore.normalize_observer_key.

  • Added public make_observer_wcs_header helper in pyampp.geometry.core and exported it through pyampp.geometry.__init__.

  • Purpose: enable strict downstream delegation of observer/geometry/WCS handling to pyAMPP public API and reduce duplicated geometry code in consumers.