py7dt is the unified public API for the 7-Dimensional Telescope software
stack. It currently acts as a thin facade over the existing implementation
packages:
| Public API | Implementation package |
|---|---|
py7dt.pipeline |
pipeline |
py7dt.phot7ds |
phot7ds |
The facade lets new applications use a stable py7dt-qualified API without
renaming the imports used by the production pipeline.
from py7dt.pipeline import DataReduction, run_scidata_reduction
from py7dt.phot7ds import PhotometryConfig, run_photometryThe facade exports the original function and class objects. It does not load a second copy of the implementation under another module name.
Code inside the existing pipeline implementation should import the sibling
implementation by its bare name:
from phot7ds import PhotometryConfig, run_photometryIt should not import py7dt.phot7ds. The py7dt project is the public facade
and depends on both implementations; making pipeline depend back on that
facade would reverse the dependency direction.
The recommended home for the pipeline-specific adapter is a future module at
pipeline/integrations/phot7ds.py. That adapter should translate pipeline
configuration and scheduler inputs into the public phot7ds API, and translate
results or failures back into scheduler state. This is separate from
pipeline/external.py, whose responsibility is wrapping programs external to
the py7dt software family.
No pipeline/integrations package is created by this scaffold because the
production repositories are intentionally unchanged.
During the scaffold phase, install pipeline and phot7ds in the environment
first, then install this directory in editable mode. The final py7dt release
will declare both component distributions as dependencies.
Supported facade imports are curated at the package boundary, for example
from py7dt.pipeline import DataReduction. Arbitrary aliases of implementation
internals such as py7dt.pipeline.services.scheduler are intentionally not
created; doing that can load the same source module under two names and
duplicate module-level state.