astropop 0.9.5.dev26__tar.gz → 0.9.5.dev30__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.
- astropop-0.9.5.dev30/.agents/AGENTS.md +27 -0
- astropop-0.9.5.dev30/.agents/rules/development.md +32 -0
- astropop-0.9.5.dev30/.agents/skills/astropop-catalogs/SKILL.md +35 -0
- astropop-0.9.5.dev30/.agents/skills/astropop-ci/SKILL.md +40 -0
- astropop-0.9.5.dev30/.agents/skills/astropop-docs/SKILL.md +30 -0
- astropop-0.9.5.dev30/.agents/skills/astropop-scientific-code/SKILL.md +22 -0
- {astropop-0.9.5.dev26 → astropop-0.9.5.dev30}/PKG-INFO +1 -1
- {astropop-0.9.5.dev26 → astropop-0.9.5.dev30}/astropop/version.py +3 -3
- {astropop-0.9.5.dev26 → astropop-0.9.5.dev30}/astropop.egg-info/PKG-INFO +1 -1
- {astropop-0.9.5.dev26 → astropop-0.9.5.dev30}/astropop.egg-info/SOURCES.txt +6 -0
- {astropop-0.9.5.dev26 → astropop-0.9.5.dev30}/astropop.egg-info/scm_file_list.json +6 -0
- {astropop-0.9.5.dev26 → astropop-0.9.5.dev30}/astropop.egg-info/scm_version.json +2 -2
- {astropop-0.9.5.dev26 → astropop-0.9.5.dev30}/.codacy.yml +0 -0
- {astropop-0.9.5.dev26 → astropop-0.9.5.dev30}/.github/workflows/build-n-publish.yml +0 -0
- {astropop-0.9.5.dev26 → astropop-0.9.5.dev30}/.github/workflows/ci_devdeps.yml +0 -0
- {astropop-0.9.5.dev26 → astropop-0.9.5.dev30}/.github/workflows/ci_workflows.yml +0 -0
- {astropop-0.9.5.dev26 → astropop-0.9.5.dev30}/.github/workflows/code_quality_analysis.yml +0 -0
- {astropop-0.9.5.dev26 → astropop-0.9.5.dev30}/.gitignore +0 -0
- {astropop-0.9.5.dev26 → astropop-0.9.5.dev30}/.readthedocs.yml +0 -0
- {astropop-0.9.5.dev26 → astropop-0.9.5.dev30}/MANIFEST.in +0 -0
- {astropop-0.9.5.dev26 → astropop-0.9.5.dev30}/README.rst +0 -0
- {astropop-0.9.5.dev26 → astropop-0.9.5.dev30}/astropop/__init__.py +0 -0
- {astropop-0.9.5.dev26 → astropop-0.9.5.dev30}/astropop/_unit_property.py +0 -0
- {astropop-0.9.5.dev26 → astropop-0.9.5.dev30}/astropop/astrometry/__init__.py +0 -0
- {astropop-0.9.5.dev26 → astropop-0.9.5.dev30}/astropop/astrometry/astrometrynet.py +0 -0
- {astropop-0.9.5.dev26 → astropop-0.9.5.dev30}/astropop/astrometry/coords_utils.py +0 -0
- {astropop-0.9.5.dev26 → astropop-0.9.5.dev30}/astropop/astrometry/manual_wcs.py +0 -0
- {astropop-0.9.5.dev26 → astropop-0.9.5.dev30}/astropop/catalogs/__init__.py +0 -0
- {astropop-0.9.5.dev26 → astropop-0.9.5.dev30}/astropop/catalogs/_online_tools.py +0 -0
- {astropop-0.9.5.dev26 → astropop-0.9.5.dev30}/astropop/catalogs/_sources_catalog.py +0 -0
- {astropop-0.9.5.dev26 → astropop-0.9.5.dev30}/astropop/catalogs/gaia.py +0 -0
- {astropop-0.9.5.dev26 → astropop-0.9.5.dev30}/astropop/catalogs/simbad.py +0 -0
- {astropop-0.9.5.dev26 → astropop-0.9.5.dev30}/astropop/catalogs/vizier.py +0 -0
- {astropop-0.9.5.dev26 → astropop-0.9.5.dev30}/astropop/catalogs/vizier_catalogs/allwise.yml +0 -0
- {astropop-0.9.5.dev26 → astropop-0.9.5.dev30}/astropop/catalogs/vizier_catalogs/apass9.yml +0 -0
- {astropop-0.9.5.dev26 → astropop-0.9.5.dev30}/astropop/catalogs/vizier_catalogs/denis.yml +0 -0
- {astropop-0.9.5.dev26 → astropop-0.9.5.dev30}/astropop/catalogs/vizier_catalogs/gsc242.yml +0 -0
- {astropop-0.9.5.dev26 → astropop-0.9.5.dev30}/astropop/catalogs/vizier_catalogs/hip.yml +0 -0
- {astropop-0.9.5.dev26 → astropop-0.9.5.dev30}/astropop/catalogs/vizier_catalogs/skymapper.yml +0 -0
- {astropop-0.9.5.dev26 → astropop-0.9.5.dev30}/astropop/catalogs/vizier_catalogs/twomass.yml +0 -0
- {astropop-0.9.5.dev26 → astropop-0.9.5.dev30}/astropop/catalogs/vizier_catalogs/tycho2.yml +0 -0
- {astropop-0.9.5.dev26 → astropop-0.9.5.dev30}/astropop/catalogs/vizier_catalogs/ucac4.yml +0 -0
- {astropop-0.9.5.dev26 → astropop-0.9.5.dev30}/astropop/catalogs/vizier_catalogs/ucac5.yml +0 -0
- {astropop-0.9.5.dev26 → astropop-0.9.5.dev30}/astropop/catalogs/vizier_catalogs/vsx.yml +0 -0
- {astropop-0.9.5.dev26 → astropop-0.9.5.dev30}/astropop/catalogs/vizier_catalogs/wise.yml +0 -0
- {astropop-0.9.5.dev26 → astropop-0.9.5.dev30}/astropop/file_collection.py +0 -0
- {astropop-0.9.5.dev26 → astropop-0.9.5.dev30}/astropop/fits_utils.py +0 -0
- {astropop-0.9.5.dev26 → astropop-0.9.5.dev30}/astropop/flags.py +0 -0
- {astropop-0.9.5.dev26 → astropop-0.9.5.dev30}/astropop/framedata/__init__.py +0 -0
- {astropop-0.9.5.dev26 → astropop-0.9.5.dev30}/astropop/framedata/_compat.py +0 -0
- {astropop-0.9.5.dev26 → astropop-0.9.5.dev30}/astropop/framedata/_memmap.py +0 -0
- {astropop-0.9.5.dev26 → astropop-0.9.5.dev30}/astropop/framedata/cache_manager.py +0 -0
- {astropop-0.9.5.dev26 → astropop-0.9.5.dev30}/astropop/framedata/framedata.py +0 -0
- {astropop-0.9.5.dev26 → astropop-0.9.5.dev30}/astropop/framedata/util.py +0 -0
- {astropop-0.9.5.dev26 → astropop-0.9.5.dev30}/astropop/image/__init__.py +0 -0
- {astropop-0.9.5.dev26 → astropop-0.9.5.dev30}/astropop/image/_tools.py +0 -0
- {astropop-0.9.5.dev26 → astropop-0.9.5.dev30}/astropop/image/imarith.py +0 -0
- {astropop-0.9.5.dev26 → astropop-0.9.5.dev30}/astropop/image/imcombine.py +0 -0
- {astropop-0.9.5.dev26 → astropop-0.9.5.dev30}/astropop/image/processing.py +0 -0
- {astropop-0.9.5.dev26 → astropop-0.9.5.dev30}/astropop/image/register.py +0 -0
- {astropop-0.9.5.dev26 → astropop-0.9.5.dev30}/astropop/logger.py +0 -0
- {astropop-0.9.5.dev26 → astropop-0.9.5.dev30}/astropop/math/__init__.py +0 -0
- {astropop-0.9.5.dev26 → astropop-0.9.5.dev30}/astropop/math/_deriv.py +0 -0
- {astropop-0.9.5.dev26 → astropop-0.9.5.dev30}/astropop/math/array.py +0 -0
- {astropop-0.9.5.dev26 → astropop-0.9.5.dev30}/astropop/math/hasher.py +0 -0
- {astropop-0.9.5.dev26 → astropop-0.9.5.dev30}/astropop/math/models.py +0 -0
- {astropop-0.9.5.dev26 → astropop-0.9.5.dev30}/astropop/math/physical.py +0 -0
- {astropop-0.9.5.dev26 → astropop-0.9.5.dev30}/astropop/photometry/__init__.py +0 -0
- {astropop-0.9.5.dev26 → astropop-0.9.5.dev30}/astropop/photometry/aperture.py +0 -0
- {astropop-0.9.5.dev26 → astropop-0.9.5.dev30}/astropop/photometry/background.py +0 -0
- {astropop-0.9.5.dev26 → astropop-0.9.5.dev30}/astropop/photometry/detection.py +0 -0
- {astropop-0.9.5.dev26 → astropop-0.9.5.dev30}/astropop/polarimetry/__init__.py +0 -0
- {astropop-0.9.5.dev26 → astropop-0.9.5.dev30}/astropop/py_utils.py +0 -0
- {astropop-0.9.5.dev26 → astropop-0.9.5.dev30}/astropop/testing.py +0 -0
- {astropop-0.9.5.dev26 → astropop-0.9.5.dev30}/astropop.egg-info/dependency_links.txt +0 -0
- {astropop-0.9.5.dev26 → astropop-0.9.5.dev30}/astropop.egg-info/requires.txt +0 -0
- {astropop-0.9.5.dev26 → astropop-0.9.5.dev30}/astropop.egg-info/top_level.txt +0 -0
- {astropop-0.9.5.dev26 → astropop-0.9.5.dev30}/codecov.yml +0 -0
- {astropop-0.9.5.dev26 → astropop-0.9.5.dev30}/docs/Makefile +0 -0
- {astropop-0.9.5.dev26 → astropop-0.9.5.dev30}/docs/_static/le2pol.jpeg +0 -0
- {astropop-0.9.5.dev26 → astropop-0.9.5.dev30}/docs/conf.py +0 -0
- {astropop-0.9.5.dev26 → astropop-0.9.5.dev30}/docs/data_structures/framedata.rst +0 -0
- {astropop-0.9.5.dev26 → astropop-0.9.5.dev30}/docs/data_structures/physical.rst +0 -0
- {astropop-0.9.5.dev26 → astropop-0.9.5.dev30}/docs/data_structures.rst +0 -0
- {astropop-0.9.5.dev26 → astropop-0.9.5.dev30}/docs/dev/pixel_convention.rst +0 -0
- {astropop-0.9.5.dev26 → astropop-0.9.5.dev30}/docs/index.rst +0 -0
- {astropop-0.9.5.dev26 → astropop-0.9.5.dev30}/docs/ipynb/astrometry_example.ipynb +0 -0
- {astropop-0.9.5.dev26 → astropop-0.9.5.dev30}/docs/ipynb/diy_reduction_script.ipynb +0 -0
- {astropop-0.9.5.dev26 → astropop-0.9.5.dev30}/docs/ipynb/online_catalogs.ipynb +0 -0
- {astropop-0.9.5.dev26 → astropop-0.9.5.dev30}/docs/make.bat +0 -0
- {astropop-0.9.5.dev26 → astropop-0.9.5.dev30}/docs/reducing.rst +0 -0
- {astropop-0.9.5.dev26 → astropop-0.9.5.dev30}/docs/reduction/astrometry.rst +0 -0
- {astropop-0.9.5.dev26 → astropop-0.9.5.dev30}/docs/reduction/ccdprocessing.rst +0 -0
- {astropop-0.9.5.dev26 → astropop-0.9.5.dev30}/docs/reduction/imarith.rst +0 -0
- {astropop-0.9.5.dev26 → astropop-0.9.5.dev30}/docs/reduction/photometry.rst +0 -0
- {astropop-0.9.5.dev26 → astropop-0.9.5.dev30}/docs/reduction/pipelines.rst +0 -0
- {astropop-0.9.5.dev26 → astropop-0.9.5.dev30}/docs/reduction/polarimetry.rst +0 -0
- {astropop-0.9.5.dev26 → astropop-0.9.5.dev30}/docs/reduction/registering.rst +0 -0
- {astropop-0.9.5.dev26 → astropop-0.9.5.dev30}/docs/references.txt +0 -0
- {astropop-0.9.5.dev26 → astropop-0.9.5.dev30}/docs/tools/catalog/gaia.rst +0 -0
- {astropop-0.9.5.dev26 → astropop-0.9.5.dev30}/docs/tools/catalog/simbad.rst +0 -0
- {astropop-0.9.5.dev26 → astropop-0.9.5.dev30}/docs/tools/catalog/vizier.rst +0 -0
- {astropop-0.9.5.dev26 → astropop-0.9.5.dev30}/docs/tools/catalogs.rst +0 -0
- {astropop-0.9.5.dev26 → astropop-0.9.5.dev30}/docs/tools/files.rst +0 -0
- {astropop-0.9.5.dev26 → astropop-0.9.5.dev30}/docs/tools/fits_utils.rst +0 -0
- {astropop-0.9.5.dev26 → astropop-0.9.5.dev30}/docs/tools/logger.rst +0 -0
- {astropop-0.9.5.dev26 → astropop-0.9.5.dev30}/docs/tools/py_utils.rst +0 -0
- {astropop-0.9.5.dev26 → astropop-0.9.5.dev30}/docs/tools/testing.rst +0 -0
- {astropop-0.9.5.dev26 → astropop-0.9.5.dev30}/docs/tools.rst +0 -0
- {astropop-0.9.5.dev26 → astropop-0.9.5.dev30}/docs/user_guide.rst +0 -0
- {astropop-0.9.5.dev26 → astropop-0.9.5.dev30}/licenses/LICENSE.rst +0 -0
- {astropop-0.9.5.dev26 → astropop-0.9.5.dev30}/licenses/TEMPLATE_LICENCE.rst +0 -0
- {astropop-0.9.5.dev26 → astropop-0.9.5.dev30}/pyproject.toml +0 -0
- {astropop-0.9.5.dev26 → astropop-0.9.5.dev30}/scripts/fitsheader_set +0 -0
- {astropop-0.9.5.dev26 → astropop-0.9.5.dev30}/setup.cfg +0 -0
- {astropop-0.9.5.dev26 → astropop-0.9.5.dev30}/setup.py +0 -0
- {astropop-0.9.5.dev26 → astropop-0.9.5.dev30}/tests/__init__.py +0 -0
- {astropop-0.9.5.dev26 → astropop-0.9.5.dev30}/tests/conftest.py +0 -0
- {astropop-0.9.5.dev26 → astropop-0.9.5.dev30}/tests/data/catalog_responses/README.md +0 -0
- {astropop-0.9.5.dev26 → astropop-0.9.5.dev30}/tests/data/catalog_responses/allwise.yaml +0 -0
- {astropop-0.9.5.dev26 → astropop-0.9.5.dev30}/tests/data/catalog_responses/apass9.yaml +0 -0
- {astropop-0.9.5.dev26 → astropop-0.9.5.dev30}/tests/data/catalog_responses/gaia.yaml +0 -0
- {astropop-0.9.5.dev26 → astropop-0.9.5.dev30}/tests/data/catalog_responses/gsc242.yaml +0 -0
- {astropop-0.9.5.dev26 → astropop-0.9.5.dev30}/tests/data/catalog_responses/simbad.yaml +0 -0
- {astropop-0.9.5.dev26 → astropop-0.9.5.dev30}/tests/data/catalog_responses/skymapper.yaml +0 -0
- {astropop-0.9.5.dev26 → astropop-0.9.5.dev30}/tests/data/catalog_responses/twomass.yaml +0 -0
- {astropop-0.9.5.dev26 → astropop-0.9.5.dev30}/tests/data/catalog_responses/tycho2.yaml +0 -0
- {astropop-0.9.5.dev26 → astropop-0.9.5.dev30}/tests/data/catalog_responses/ucac4.yaml +0 -0
- {astropop-0.9.5.dev26 → astropop-0.9.5.dev30}/tests/data/catalog_responses/ucac5.yaml +0 -0
- {astropop-0.9.5.dev26 → astropop-0.9.5.dev30}/tests/data/catalog_responses/vsx.yaml +0 -0
- {astropop-0.9.5.dev26 → astropop-0.9.5.dev30}/tests/data/catalog_responses/wise.yaml +0 -0
- {astropop-0.9.5.dev26 → astropop-0.9.5.dev30}/tests/test_aperture.py +0 -0
- {astropop-0.9.5.dev26 → astropop-0.9.5.dev30}/tests/test_astrometry.py +0 -0
- {astropop-0.9.5.dev26 → astropop-0.9.5.dev30}/tests/test_catalogs.py +0 -0
- {astropop-0.9.5.dev26 → astropop-0.9.5.dev30}/tests/test_catalogs_online.py +0 -0
- {astropop-0.9.5.dev26 → astropop-0.9.5.dev30}/tests/test_detection.py +0 -0
- {astropop-0.9.5.dev26 → astropop-0.9.5.dev30}/tests/test_filecollection.py +0 -0
- {astropop-0.9.5.dev26 → astropop-0.9.5.dev30}/tests/test_fits_utils.py +0 -0
- {astropop-0.9.5.dev26 → astropop-0.9.5.dev30}/tests/test_flags.py +0 -0
- {astropop-0.9.5.dev26 → astropop-0.9.5.dev30}/tests/test_framedata.py +0 -0
- {astropop-0.9.5.dev26 → astropop-0.9.5.dev30}/tests/test_framedata_cachemanager.py +0 -0
- {astropop-0.9.5.dev26 → astropop-0.9.5.dev30}/tests/test_framedata_compat.py +0 -0
- {astropop-0.9.5.dev26 → astropop-0.9.5.dev30}/tests/test_framedata_getset.py +0 -0
- {astropop-0.9.5.dev26 → astropop-0.9.5.dev30}/tests/test_framedata_io.py +0 -0
- {astropop-0.9.5.dev26 → astropop-0.9.5.dev30}/tests/test_framedata_memmap.py +0 -0
- {astropop-0.9.5.dev26 → astropop-0.9.5.dev30}/tests/test_framedata_meta.py +0 -0
- {astropop-0.9.5.dev26 → astropop-0.9.5.dev30}/tests/test_framedata_tools.py +0 -0
- {astropop-0.9.5.dev26 → astropop-0.9.5.dev30}/tests/test_framedata_utils.py +0 -0
- {astropop-0.9.5.dev26 → astropop-0.9.5.dev30}/tests/test_image_imarith.py +0 -0
- {astropop-0.9.5.dev26 → astropop-0.9.5.dev30}/tests/test_image_imcombine.py +0 -0
- {astropop-0.9.5.dev26 → astropop-0.9.5.dev30}/tests/test_image_mergers.py +0 -0
- {astropop-0.9.5.dev26 → astropop-0.9.5.dev30}/tests/test_image_processing.py +0 -0
- {astropop-0.9.5.dev26 → astropop-0.9.5.dev30}/tests/test_image_register.py +0 -0
- {astropop-0.9.5.dev26 → astropop-0.9.5.dev30}/tests/test_logger.py +0 -0
- {astropop-0.9.5.dev26 → astropop-0.9.5.dev30}/tests/test_math.py +0 -0
- {astropop-0.9.5.dev26 → astropop-0.9.5.dev30}/tests/test_math_models.py +0 -0
- {astropop-0.9.5.dev26 → astropop-0.9.5.dev30}/tests/test_physical.py +0 -0
- {astropop-0.9.5.dev26 → astropop-0.9.5.dev30}/tests/test_physical_numpyfuncs.py +0 -0
- {astropop-0.9.5.dev26 → astropop-0.9.5.dev30}/tests/test_polarimetry.py +0 -0
- {astropop-0.9.5.dev26 → astropop-0.9.5.dev30}/tests/test_pyutils.py +0 -0
- {astropop-0.9.5.dev26 → astropop-0.9.5.dev30}/tests/test_testing.py +0 -0
- {astropop-0.9.5.dev26 → astropop-0.9.5.dev30}/tests/test_unit_property.py +0 -0
- {astropop-0.9.5.dev26 → astropop-0.9.5.dev30}/tox.ini +0 -0
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
# Working on Astropop
|
|
2
|
+
|
|
3
|
+
Read [.agents/rules/development.md](rules/development.md) before changing this repository. These instructions apply throughout the checkout; explicit user instructions take precedence.
|
|
4
|
+
|
|
5
|
+
## Commit messages
|
|
6
|
+
|
|
7
|
+
Begin every commit subject with the module or area being changed, followed by a colon and a short description. Prefer a space after the colon:
|
|
8
|
+
|
|
9
|
+
- `catalogs: handle empty SIMBAD responses`
|
|
10
|
+
- `framedata: isolate cache shutdown tests`
|
|
11
|
+
- `image: exclude rejected samples from summed errors`
|
|
12
|
+
- `docs: explain FrameData conversion`
|
|
13
|
+
- `ci: run live catalog checks in a separate job`
|
|
14
|
+
- `agents: add repository skills`
|
|
15
|
+
|
|
16
|
+
Make small, coherent commits. Use the affected module for its tests too; reserve `ci:` for workflows, environments, dependencies, and cross-cutting test infrastructure. Split unrelated changes rather than hiding them behind a broad prefix. Do not rewrite existing commits solely to enforce this convention unless asked.
|
|
17
|
+
|
|
18
|
+
## Repository skills
|
|
19
|
+
|
|
20
|
+
Read the relevant skill when its workflow applies. Ordinary small edits do not require loading every skill.
|
|
21
|
+
|
|
22
|
+
| Skill | Use when |
|
|
23
|
+
| --- | --- |
|
|
24
|
+
| [astropop-ci](skills/astropop-ci/SKILL.md) | Diagnosing test, coverage, dependency, or GitHub Actions failures. |
|
|
25
|
+
| [astropop-catalogs](skills/astropop-catalogs/SKILL.md) | Changing SIMBAD, VizieR, Gaia, or recorded/live catalog tests. |
|
|
26
|
+
| [astropop-scientific-code](skills/astropop-scientific-code/SKILL.md) | Changing image reduction, FrameData, units, uncertainties, photometry, or polarimetry. |
|
|
27
|
+
| [astropop-docs](skills/astropop-docs/SKILL.md) | Editing API docs, scientific examples, or fixing Sphinx builds. |
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
# Development rules
|
|
2
|
+
|
|
3
|
+
## Scope and branches
|
|
4
|
+
|
|
5
|
+
- Inspect `git status`, the current branch, and nearby code/tests before editing. Preserve unrelated work.
|
|
6
|
+
- Keep independent fixes and features separate. A CI repair is not permission to redesign cache ownership, uncertainty semantics, or registration algorithms.
|
|
7
|
+
- When asked for a new independent branch, use the requested base; otherwise prefer local `main` and state the choice. Use a feature branch as a base only when the work depends on it. Do not silently reset, discard work, or rewrite history.
|
|
8
|
+
- Complete authorized local work without repeated confirmation. Local edits or commits do not themselves authorize a push, PR publication, merge, or release.
|
|
9
|
+
|
|
10
|
+
## Implementation
|
|
11
|
+
|
|
12
|
+
- Follow neighboring Python conventions and NumPy-style docstrings. Prefer the smallest change that fixes the cause while preserving public behavior.
|
|
13
|
+
- Preserve physical units, coordinate frames/epochs, masks, uncertainties, shapes, and in-place semantics unless the task explicitly changes them.
|
|
14
|
+
- Add regression coverage for behavioral fixes. Do not delete operations from exception or nonmutation tests just because their return values are unused.
|
|
15
|
+
- Use `tmp_path` for disposable files/directories. Never hand a shared directory such as the system temporary root to an object that deletes its cache directory.
|
|
16
|
+
- Test interpreter shutdown in a child process. Never call `atexit._run_exitfuncs()` inside pytest: it can stop coverage measurement and execute unrelated handlers.
|
|
17
|
+
- Keep helpers inside their owning test classes where practical. Put genuinely shared fixtures in `conftest.py`; avoid one-off test files when an existing module fits.
|
|
18
|
+
|
|
19
|
+
## Validation
|
|
20
|
+
|
|
21
|
+
- Treat `pyproject.toml`, `tox.ini`, and `.github/workflows/` in this checkout as authoritative. Do not assume a test option or feature from another branch exists here.
|
|
22
|
+
- Use an isolated Python environment with the appropriate test/docs extras. If using `XDG_CACHE_HOME` or `XDG_CONFIG_HOME`, create the directories first; Astropy may ignore nonexistent paths.
|
|
23
|
+
- Start with the affected tests and broaden to the relevant integration checks. Once checks pass, repeat them only for new changes, failures, or unresolved concerns.
|
|
24
|
+
- Keep ordinary CI offline and live catalog conformance in one explicit job when that infrastructure is present. Never make missing recorded responses silently fall through to the network.
|
|
25
|
+
- Report commands/results, skips, and outstanding checks accurately. A local Linux pass does not prove Windows, macOS, oldest dependencies, development dependencies, or remote CI passed.
|
|
26
|
+
- Do not globally suppress warnings or weaken tolerances to hide a failure. Expect deliberate warnings locally and fix unintended behavior at its source.
|
|
27
|
+
|
|
28
|
+
## Commits and handoff
|
|
29
|
+
|
|
30
|
+
Follow the module-prefix convention in [AGENTS.md](../AGENTS.md). Review the staged diff and commit in small batches, grouping implementation with its applicable tests. Stage named paths or hunks so unrelated changes are not included.
|
|
31
|
+
|
|
32
|
+
PR descriptions should explain the concrete failure and resulting behavior, then give relevant validation and known limitations. Distinguish implemented fixes from future work and verified service behavior from recordings or historical observations.
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: astropop-catalogs
|
|
3
|
+
description: Maintain Astropop SIMBAD, VizieR, and Gaia queries and their shared recorded/live tests, including schema changes, timeouts, and complete query results.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Astropop catalogs
|
|
7
|
+
|
|
8
|
+
Read the affected implementation in `astropop/catalogs/`, the corresponding tests in `tests/test_catalogs_online.py`, and the applicable VizieR YAML. Verify the installed Astroquery API and actual response shape before changing an endpoint or column name.
|
|
9
|
+
|
|
10
|
+
## Compatibility invariants
|
|
11
|
+
|
|
12
|
+
- SIMBAD can return degree-valued lowercase coordinates or legacy sexagesimal uppercase coordinates. Never infer hour-angle units from the semantic name RA alone. Handle both `None` and empty tables before indexing.
|
|
13
|
+
- TAP photometry may have multiple rows per source/filter. Preserve source identity, band case, masks, proper motions, and bibliographic information when normalizing it.
|
|
14
|
+
- Choose cone-search matches by separation rather than trusting response order. Identifier priority and prefix boundaries matter; substring matching can select a different catalog designation.
|
|
15
|
+
- VizieR column aliases must work in outgoing column selection and incoming response normalization without renaming an already normalized column twice. Check sort-column names and epoch values against the configured time format.
|
|
16
|
+
- Gaia asynchronous queue delays do not establish that a URL changed. Preserve the requested query mode and document timeout limitations honestly.
|
|
17
|
+
- Where synchronous Gaia pagination is implemented, preserve integer source IDs, magnitude/cone filters on every page, exact column matching, final angular-distance ordering, and failure rather than partial results. Include page boundaries and IDs above `2**53` in deterministic coverage.
|
|
18
|
+
- Keep timeout changes scoped to the client's connections, restore patched methods, close connections, and share a deadline across retries/pages. A socket timeout is not a hard deadline covering every DNS, streaming, or parsing step.
|
|
19
|
+
|
|
20
|
+
## Recorded and live tests
|
|
21
|
+
|
|
22
|
+
First check whether `tests/data/catalog_responses/README.md` and replay options exist on this branch. Read that README before recording. On branches without replay infrastructure, do not report skipped remote tests as offline conformance.
|
|
23
|
+
|
|
24
|
+
Where supported:
|
|
25
|
+
|
|
26
|
+
```sh
|
|
27
|
+
python -m pytest tests/test_catalogs_online.py --remote-data=none
|
|
28
|
+
python -m pytest tests/test_catalogs_online.py --remote-data=any
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
Keep assertions and collected test IDs shared between modes. Mock at the HTTP layer so Astroquery still builds queries and parses responses. Store compact fixtures per catalog, not per test. Offline mode must fail for unknown requests; live mode must bypass replay and result caches. Account for VizieR's explicit cache argument and import-time Gaia announcements.
|
|
32
|
+
|
|
33
|
+
Refresh fixtures only when needed, using the documented explicit recording mode in one process. Preserve strict matching of query criteria, coordinates, filters, and pagination cursors. Normalize ordering only where semantically harmless, such as simple SELECT column lists. Review recordings for credentials/cookies and unrelated changes; rerun offline after recording.
|
|
34
|
+
|
|
35
|
+
Keep deterministic edge-case tests alongside the catalog tests, with class-owned helpers where practical. Assert intentional no-result or proper-motion warnings around the precise call instead of suppressing them globally. A live Gaia skip option, if present, must leave offline and deterministic Gaia tests enabled and must not disable the dedicated conformance job's Gaia checks.
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: astropop-ci
|
|
3
|
+
description: Diagnose and fix Astropop test, coverage, dependency, tox, and GitHub Actions failures while keeping ordinary CI independent of live catalogs.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Astropop CI
|
|
7
|
+
|
|
8
|
+
Inspect the failing job, current configuration, and failing test before choosing a fix. Separate a collection/import failure, assertion failure, service outage, dependency incompatibility, and coverage-measurement failure; they need different remedies.
|
|
9
|
+
|
|
10
|
+
## Sources and checks
|
|
11
|
+
|
|
12
|
+
- Dependency bounds and pytest/coverage settings: `pyproject.toml`.
|
|
13
|
+
- Environment factors, extras, and commands: `tox.ini`.
|
|
14
|
+
- Runner/platform and live/offline topology: `.github/workflows/`.
|
|
15
|
+
- Catalog replay and custom options, if implemented: `tests/conftest.py` and `tests/data/catalog_responses/README.md`.
|
|
16
|
+
|
|
17
|
+
Use the environment actually named in the failing job. Inspect `tox list` and `tox config -e <environment>` before assuming factors expand correctly. Check Python support and oldest dependency compatibility together. A version pin should explain the concrete incompatible API; it is not a substitute for claiming a migration is complete.
|
|
18
|
+
|
|
19
|
+
Typical checks, adjusted to the installed tooling and changed files:
|
|
20
|
+
|
|
21
|
+
```sh
|
|
22
|
+
python -m pytest tests/test_affected_module.py
|
|
23
|
+
python -m pytest tests docs --remote-data=none --cov=astropop --cov-report=term-missing
|
|
24
|
+
python -m ruff check astropop tests
|
|
25
|
+
git diff --check
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
The first path is a placeholder for the actual test module. If Ruff is not configured/installed in this checkout, inspect the repository's lint configuration first.
|
|
29
|
+
|
|
30
|
+
## Coverage and resources
|
|
31
|
+
|
|
32
|
+
For a coverage collapse, inspect collection/skips and whether any test executes process-wide shutdown handlers. Preserve the existing cache API while repairing harness isolation unless cache redesign is explicitly in scope. Test exit behavior with a subprocess, not pytest's own exit handlers. Use per-test cache directories and close file handles, including on Windows.
|
|
33
|
+
|
|
34
|
+
## Catalog topology
|
|
35
|
+
|
|
36
|
+
When the replay infrastructure exists, regular Python/platform/dependency jobs and coverage use recordings. Keep exactly one separate live catalog conformance job, including Gaia; a fast/offline Python job must still exist alongside it. Inspect the YAML embedded inside reusable-workflow `envs` strings as well as the outer workflow.
|
|
37
|
+
|
|
38
|
+
Do not hide conformance failures by switching the live job to replay or silently skipping a service. Record an outage separately from a deterministic code failure. Use the catalog skill for query/schema and fixture changes.
|
|
39
|
+
|
|
40
|
+
Validate relevant local checks, then report which remote/platform jobs remain unrun. Check the staged diff for unrelated feature code before making a module-prefixed commit.
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: astropop-docs
|
|
3
|
+
description: Write or repair Astropop reStructuredText guides, NumPy-style API docstrings, and Sphinx examples using the behavior implemented on the current branch.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Astropop documentation
|
|
7
|
+
|
|
8
|
+
Read the implementation, nearby tests, and the relevant guide under `docs/`. Keep constructor APIs distinct from conversion helpers and describe actual defaults, mutation behavior, units, masks, and uncertainty semantics.
|
|
9
|
+
|
|
10
|
+
Use runnable examples for deterministic local behavior where the existing documentation tooling supports them. Use static Python blocks for live catalog examples so documentation builds do not depend on external catalog queries. Remove IPython-only options when converting a directive to `code-block`.
|
|
11
|
+
|
|
12
|
+
For FrameData guides, check shape/dtype constraints, copying and array sharing, metadata/WCS, FITS extension selection, overwrite defaults, and whether interchange preserves Boolean masks or full flag bits. Document only storage/configuration features available on this branch.
|
|
13
|
+
|
|
14
|
+
For build failures:
|
|
15
|
+
|
|
16
|
+
- Check reStructuredText section hierarchy, blank lines before lists, indentation, and balanced inline markup.
|
|
17
|
+
- Keep the local checkout first on the documentation import path so autodoc describes the changed source.
|
|
18
|
+
- Inspect `docs/conf.py` and docs extras rather than installing arbitrary extensions. Notebook rendering may require the Pandoc executable in addition to a Python package.
|
|
19
|
+
- Distinguish rendering/autodoc errors, external inventory/network failures, and existing warnings. Do not suppress warnings globally to produce a green build.
|
|
20
|
+
|
|
21
|
+
Validation depends on the change:
|
|
22
|
+
|
|
23
|
+
```sh
|
|
24
|
+
python -m pytest docs/path/to/changed-guide.rst
|
|
25
|
+
python -m sphinx -b html docs /tmp/astropop-docs-build
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
Replace the guide path with the actual file. Use the configured tox docs environment when reproducing CI. For a warning audit, add `-W --keep-going` and report its result separately from the ordinary build. Inspect relevant rendered examples when layout or generated API content changes.
|
|
29
|
+
|
|
30
|
+
Keep generated HTML, temporary images, and build caches out of commits. Use `docs:` for documentation commits and name the affected module when docstring updates are part of its implementation fix.
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: astropop-scientific-code
|
|
3
|
+
description: Implement and test Astropop scientific behavior in FrameData, image reduction, units and uncertainties, photometry, or polarimetry while preserving numerical and storage contracts.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Astropop scientific code
|
|
7
|
+
|
|
8
|
+
Locate the affected code in `astropop/framedata/`, `astropop/image/`, `astropop/math/`, `astropop/photometry/`, or `astropop/polarimetry/` and its existing tests. Read the current API and documentation; do not assume optional uncertainties, cache redesigns, or registration windows exist because they were discussed on another branch.
|
|
9
|
+
|
|
10
|
+
## Define observable behavior
|
|
11
|
+
|
|
12
|
+
Identify the expected data, units, shape/dtype, mask, uncertainty, metadata, and input-mutation behavior. Add a small numerical regression case with an independently derived result. Include compatible unit conversion and incompatible-unit errors when relevant.
|
|
13
|
+
|
|
14
|
+
- Missing uncertainty and zero uncertainty are different storage states. If an operation promises to skip uncertainty work, test that conversion/propagation helpers are not invoked, not merely that the final array is absent.
|
|
15
|
+
- In combining, apply rejection consistently to data and propagated errors. Check valid-sample counts and any normalization factor, including masked/all-rejected pixels. Preserve the existing estimator unless a statistical change is requested.
|
|
16
|
+
- Test in-place and copying paths when affected; non-inplace calls must preserve source arrays and metadata. Exercise RAM/memmap paths for storage changes, including cleanup after exceptions.
|
|
17
|
+
- Registration uses array row/column conventions and transform coordinate conventions that may differ. For a requested window feature, estimate from the window but test application to the full image and any necessary origin translation. Use sparse, deterministic synthetic sources to avoid ambiguous matches.
|
|
18
|
+
- Photometry fixtures should use seeded noise when noise is necessary. Verify scalar and array-valued parameters against each other when both are supported. Do not simply loosen a numerical tolerance to hide nondeterminism.
|
|
19
|
+
|
|
20
|
+
Use the existing test module for the affected subsystem. Restore global configuration changes with fixtures/monkeypatch. Keep regression cases small enough to diagnose and run routinely; use broader integration tests when the change crosses subsystem boundaries.
|
|
21
|
+
|
|
22
|
+
Document changed scientific assumptions and API behavior, and distinguish numerical correctness checks from performance measurements. Do not claim speed or memory improvements without measurements when those claims matter to the task.
|
|
@@ -18,7 +18,7 @@ version_tuple: tuple[int | str, ...]
|
|
|
18
18
|
commit_id: str | None
|
|
19
19
|
__commit_id__: str | None
|
|
20
20
|
|
|
21
|
-
__version__ = version = '0.9.5.
|
|
22
|
-
__version_tuple__ = version_tuple = (0, 9, 5, '
|
|
21
|
+
__version__ = version = '0.9.5.dev30'
|
|
22
|
+
__version_tuple__ = version_tuple = (0, 9, 5, 'dev30')
|
|
23
23
|
|
|
24
|
-
__commit_id__ = commit_id = '
|
|
24
|
+
__commit_id__ = commit_id = 'g308ffa913'
|
|
@@ -7,6 +7,12 @@ codecov.yml
|
|
|
7
7
|
pyproject.toml
|
|
8
8
|
setup.py
|
|
9
9
|
tox.ini
|
|
10
|
+
.agents/AGENTS.md
|
|
11
|
+
.agents/rules/development.md
|
|
12
|
+
.agents/skills/astropop-catalogs/SKILL.md
|
|
13
|
+
.agents/skills/astropop-ci/SKILL.md
|
|
14
|
+
.agents/skills/astropop-docs/SKILL.md
|
|
15
|
+
.agents/skills/astropop-scientific-code/SKILL.md
|
|
10
16
|
.github/workflows/build-n-publish.yml
|
|
11
17
|
.github/workflows/ci_devdeps.yml
|
|
12
18
|
.github/workflows/ci_workflows.yml
|
|
@@ -1,5 +1,11 @@
|
|
|
1
1
|
{
|
|
2
2
|
"files": [
|
|
3
|
+
".agents/AGENTS.md",
|
|
4
|
+
".agents/rules/development.md",
|
|
5
|
+
".agents/skills/astropop-catalogs/SKILL.md",
|
|
6
|
+
".agents/skills/astropop-ci/SKILL.md",
|
|
7
|
+
".agents/skills/astropop-docs/SKILL.md",
|
|
8
|
+
".agents/skills/astropop-scientific-code/SKILL.md",
|
|
3
9
|
".codacy.yml",
|
|
4
10
|
".github/workflows/build-n-publish.yml",
|
|
5
11
|
".github/workflows/ci_devdeps.yml",
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{astropop-0.9.5.dev26 → astropop-0.9.5.dev30}/astropop/catalogs/vizier_catalogs/skymapper.yml
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|