From a0f2de22960284316270dfcf762d7312a7658cc0 Mon Sep 17 00:00:00 2001 From: Yong Sheng Date: Thu, 12 Feb 2026 15:56:15 -0400 Subject: [PATCH 1/4] Adjust project strtucture; add enviromemt.yml for reproducing the same working env; add ci.yml to run check on GitHub; add .pre-commit-config.yaml for pre-push checks; add pyproject.toml just for smoke test markers. --- .github/workflows/ci.yml | 49 ++++++++++ .pre-commit-config.yaml | 87 ++++++++++++++++++ ...late_MgII_none_Detection_Probability.ipynb | 0 .../Optical_depth_EBL_Model/Code_documentated | 0 .../optical_depth_calculation.ipynb | 0 .../tau_saldana-lopez21.txt | 0 .../Plot_Model_SED/MARA23032010.zip | Bin .../MARA23032010/CB1_0_LOIII4.sed | 0 .../MARA23032010/I22491_40_TQSO1_60.sed | 0 .../MARA23032010/I22491_50_TQSO1_50.sed | 0 .../MARA23032010/I22491_60_TQSO1_40.sed | 0 .../MARA23032010/I22491_70_TQSO1_30.sed | 0 .../MARA23032010/I22491_80_TQSO1_20.sed | 0 .../MARA23032010/I22491_90_TQSO1_10.sed | 0 .../I22491_template_norm.sed.save | 0 .../MARA23032010/M82_template_norm.sed | 0 .../MARA23032010/Mrk231_template_norm.sed | 0 .../MARA23032010/S0_10_QSO2_90.sed | 0 .../MARA23032010/S0_20_QSO2_80.sed | 0 .../MARA23032010/S0_30_QSO2_70.sed | 0 .../MARA23032010/S0_40_QSO2_60.sed | 0 .../MARA23032010/S0_50_QSO2_50.sed | 0 .../MARA23032010/S0_60_QSO2_40.sed | 0 .../MARA23032010/S0_70_QSO2_30.sed | 0 .../MARA23032010/S0_80_QSO2_20.sed | 0 .../MARA23032010/S0_90_QSO2_10.sed | 0 .../MARA23032010/S0_template_norm.sed | 0 .../MARA23032010/Sb_template_norm.sed | 0 .../MARA23032010/Sey18_template_norm.sed | 0 .../MARA23032010/Sey2_template_norm.sed | 0 .../MARA23032010/Spi4_template_norm.sed | 0 .../MARA23032010/pl_I22491_10_TQSO1_90.sed | 0 .../MARA23032010/pl_I22491_20_TQSO1_80.sed | 0 .../MARA23032010/pl_I22491_30_TQSO1_70.sed | 0 .../MARA23032010/pl_QSOH_template_norm.sed | 0 .../MARA23032010/pl_QSO_DR2_029_t0.spec | 0 .../MARA23032010/pl_TQSO1_template_norm.sed | 0 .../Plot_Model_SED/MARA23032010/readme | 0 .../Plot_Model_SED/S0_70_QSO2_30.sed | 0 .../Plot_Model_SED/Untitled.ipynb | 0 .../Plot_Model_SED/pl_QSOH_template_norm.sed | 0 .../Plot_Model_SED/pl_QSO_DR2_029_t0.spec | 0 .../Compare_power_law_indices.ipynb | 0 .../apj458112t3_mrt.txt | 0 .../Reproduce_nucleus_magnitudes.ipynb | 0 environment.yml | 29 ++++++ pyproject.toml | 7 ++ 47 files changed, 172 insertions(+) create mode 100644 .github/workflows/ci.yml create mode 100644 .pre-commit-config.yaml rename {Photoz => Projects/Photoz}/Paper_Revision/Photoz_paper/Calculate_MgII_none_Detection_Probability/Calculate_MgII_none_Detection_Probability.ipynb (100%) rename {Photoz => Projects/Photoz}/Paper_Revision/Photoz_paper/Optical_depth_EBL_Model/Code_documentated (100%) rename {Photoz => Projects/Photoz}/Paper_Revision/Photoz_paper/Optical_depth_EBL_Model/optical_depth_calculation.ipynb (100%) rename {Photoz => Projects/Photoz}/Paper_Revision/Photoz_paper/Optical_depth_EBL_Model/tau_saldana-lopez21.txt (100%) rename {Photoz => Projects/Photoz}/Paper_Revision/Photoz_paper/Plot_Model_SED/MARA23032010.zip (100%) rename {Photoz => Projects/Photoz}/Paper_Revision/Photoz_paper/Plot_Model_SED/MARA23032010/CB1_0_LOIII4.sed (100%) rename {Photoz => Projects/Photoz}/Paper_Revision/Photoz_paper/Plot_Model_SED/MARA23032010/I22491_40_TQSO1_60.sed (100%) rename {Photoz => Projects/Photoz}/Paper_Revision/Photoz_paper/Plot_Model_SED/MARA23032010/I22491_50_TQSO1_50.sed (100%) rename {Photoz => Projects/Photoz}/Paper_Revision/Photoz_paper/Plot_Model_SED/MARA23032010/I22491_60_TQSO1_40.sed (100%) rename {Photoz => Projects/Photoz}/Paper_Revision/Photoz_paper/Plot_Model_SED/MARA23032010/I22491_70_TQSO1_30.sed (100%) rename {Photoz => Projects/Photoz}/Paper_Revision/Photoz_paper/Plot_Model_SED/MARA23032010/I22491_80_TQSO1_20.sed (100%) rename {Photoz => Projects/Photoz}/Paper_Revision/Photoz_paper/Plot_Model_SED/MARA23032010/I22491_90_TQSO1_10.sed (100%) rename {Photoz => Projects/Photoz}/Paper_Revision/Photoz_paper/Plot_Model_SED/MARA23032010/I22491_template_norm.sed.save (100%) rename {Photoz => Projects/Photoz}/Paper_Revision/Photoz_paper/Plot_Model_SED/MARA23032010/M82_template_norm.sed (100%) rename {Photoz => Projects/Photoz}/Paper_Revision/Photoz_paper/Plot_Model_SED/MARA23032010/Mrk231_template_norm.sed (100%) rename {Photoz => Projects/Photoz}/Paper_Revision/Photoz_paper/Plot_Model_SED/MARA23032010/S0_10_QSO2_90.sed (100%) rename {Photoz => Projects/Photoz}/Paper_Revision/Photoz_paper/Plot_Model_SED/MARA23032010/S0_20_QSO2_80.sed (100%) rename {Photoz => Projects/Photoz}/Paper_Revision/Photoz_paper/Plot_Model_SED/MARA23032010/S0_30_QSO2_70.sed (100%) rename {Photoz => Projects/Photoz}/Paper_Revision/Photoz_paper/Plot_Model_SED/MARA23032010/S0_40_QSO2_60.sed (100%) rename {Photoz => Projects/Photoz}/Paper_Revision/Photoz_paper/Plot_Model_SED/MARA23032010/S0_50_QSO2_50.sed (100%) rename {Photoz => Projects/Photoz}/Paper_Revision/Photoz_paper/Plot_Model_SED/MARA23032010/S0_60_QSO2_40.sed (100%) rename {Photoz => Projects/Photoz}/Paper_Revision/Photoz_paper/Plot_Model_SED/MARA23032010/S0_70_QSO2_30.sed (100%) rename {Photoz => Projects/Photoz}/Paper_Revision/Photoz_paper/Plot_Model_SED/MARA23032010/S0_80_QSO2_20.sed (100%) rename {Photoz => Projects/Photoz}/Paper_Revision/Photoz_paper/Plot_Model_SED/MARA23032010/S0_90_QSO2_10.sed (100%) rename {Photoz => Projects/Photoz}/Paper_Revision/Photoz_paper/Plot_Model_SED/MARA23032010/S0_template_norm.sed (100%) rename {Photoz => Projects/Photoz}/Paper_Revision/Photoz_paper/Plot_Model_SED/MARA23032010/Sb_template_norm.sed (100%) rename {Photoz => Projects/Photoz}/Paper_Revision/Photoz_paper/Plot_Model_SED/MARA23032010/Sey18_template_norm.sed (100%) rename {Photoz => Projects/Photoz}/Paper_Revision/Photoz_paper/Plot_Model_SED/MARA23032010/Sey2_template_norm.sed (100%) rename {Photoz => Projects/Photoz}/Paper_Revision/Photoz_paper/Plot_Model_SED/MARA23032010/Spi4_template_norm.sed (100%) rename {Photoz => Projects/Photoz}/Paper_Revision/Photoz_paper/Plot_Model_SED/MARA23032010/pl_I22491_10_TQSO1_90.sed (100%) rename {Photoz => Projects/Photoz}/Paper_Revision/Photoz_paper/Plot_Model_SED/MARA23032010/pl_I22491_20_TQSO1_80.sed (100%) rename {Photoz => Projects/Photoz}/Paper_Revision/Photoz_paper/Plot_Model_SED/MARA23032010/pl_I22491_30_TQSO1_70.sed (100%) rename {Photoz => Projects/Photoz}/Paper_Revision/Photoz_paper/Plot_Model_SED/MARA23032010/pl_QSOH_template_norm.sed (100%) rename {Photoz => Projects/Photoz}/Paper_Revision/Photoz_paper/Plot_Model_SED/MARA23032010/pl_QSO_DR2_029_t0.spec (100%) rename {Photoz => Projects/Photoz}/Paper_Revision/Photoz_paper/Plot_Model_SED/MARA23032010/pl_TQSO1_template_norm.sed (100%) rename {Photoz => Projects/Photoz}/Paper_Revision/Photoz_paper/Plot_Model_SED/MARA23032010/readme (100%) rename {Photoz => Projects/Photoz}/Paper_Revision/Photoz_paper/Plot_Model_SED/S0_70_QSO2_30.sed (100%) rename {Photoz => Projects/Photoz}/Paper_Revision/Photoz_paper/Plot_Model_SED/Untitled.ipynb (100%) rename {Photoz => Projects/Photoz}/Paper_Revision/Photoz_paper/Plot_Model_SED/pl_QSOH_template_norm.sed (100%) rename {Photoz => Projects/Photoz}/Paper_Revision/Photoz_paper/Plot_Model_SED/pl_QSO_DR2_029_t0.spec (100%) rename {Photoz => Projects/Photoz}/Paper_Revision/Photoz_paper/Power_indices_comparison/Compare_power_law_indices.ipynb (100%) rename {Photoz => Projects/Photoz}/Paper_Revision/Photoz_paper/Power_indices_comparison/apj458112t3_mrt.txt (100%) rename {Photoz => Projects/Photoz}/Paper_Revision/Photoz_paper/Reproduce_nucleus_magnitudes/Reproduce_nucleus_magnitudes.ipynb (100%) create mode 100644 environment.yml create mode 100644 pyproject.toml diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 0000000..13bcbef --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,49 @@ +name: CI + +on: + push: + pull_request: + workflow_dispatch: + +jobs: + precommit: + name: pre-commit hooks + runs-on: ubuntu-latest + steps: + - name: Check out code + uses: actions/checkout@v4 + + - name: Set up Python + uses: actions/setup-python@v5 + with: + python-version: "3.11" + + - name: Run pre-commit (skip pytest-smoke here) + uses: pre-commit/action@v3.0.1 + env: + SKIP: pytest-smoke + with: + extra_args: --all-files --hook-stage pre-push + + smoke: + name: smoke import test + runs-on: ubuntu-latest + steps: + - name: Check out code + uses: actions/checkout@v4 + + - name: Set up micromamba environment + uses: mamba-org/setup-micromamba@v2 + with: + environment-file: environment.yml + environment-name: ci + cache-environment: true + condarc: | + channels: + - conda-forge + - defaults + + - name: Run smoke tests + shell: micromamba-shell {0} + run: | + pytest -q -m smoke -x -ra diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml new file mode 100644 index 0000000..a61b432 --- /dev/null +++ b/.pre-commit-config.yaml @@ -0,0 +1,87 @@ +# .pre-commit-config.yaml (example with exclude) +default_install_hook_types: [pre-push] +default_stages: [pre-push] # 影响的是没有内置 stages、且你自己没写 stages 的那些 hook + # 对于有内置stages,这个默认stage不会起效,需要在下面的hook + # 中显式定义,比如trailing-whitespace +default_language_version: + python: python3.11 + +exclude: | + (?x)^( + docs/_build/| + build/| + dist/| + \.venv/| + \.mypy_cache/| + \.pytest_cache/| + __pycache__/| + .*\.ipynb + )$ + + +# Categories: +# - Format: keep code style consistent +# - Lint: catch bugs and style issues early +# - Typing (optional): static type checks +# - Hygiene/Safety: catch common repo issues +# - Notebooks (optional): keep outputs clean or skip notebooks +# - Pre-push smoke tests (optional): run a tiny subset before pushing + +repos: + + # ---------- Lint (ruff lint only, no formatter) ---------- + - repo: https://github.com/astral-sh/ruff-pre-commit + rev: v0.13.1 + hooks: + - id: ruff + stages: [pre-push] + args: ["--select", "E9,F"] # only check: E9=syntax/parse errors, + # F=pyflakes correctness (undefined/unused), + # S=security (bandit); avoid style rules + + + # ---------- Hygiene / Safety ---------- + - repo: https://github.com/pre-commit/pre-commit-hooks + rev: v6.0.0 + hooks: + - id: trailing-whitespace + stages: [pre-push] + - id: end-of-file-fixer # 确保文件末尾只有 1 个换行 + stages: [pre-push] + - id: check-merge-conflict # prevent committing conflict markers + stages: [pre-push] + - id: check-yaml # validate .yml/.yaml + stages: [pre-push] + - id: check-json # validate JSON files + stages: [pre-push] + - id: check-toml # validate TOML files (if any) + stages: [pre-push] + - id: check-case-conflict # warn about case-insensitive FS collisiois + stages: [pre-push] + - id: mixed-line-ending # 统一换行风格 + stages: [pre-push] + args: ["--fix=lf"] # 统一 LF(推荐 macOS/Linux) + stages: [pre-push] + - id: check-added-large-files # 给「大文件」阈值一个你能接受的上限(默认 5MB) + stages: [pre-push] + args: ["--maxkb=10000"] # 10MB;或换成你项目想要的大小 + + - repo: https://github.com/codespell-project/codespell + rev: v2.3.0 + hooks: + - id: codespell + files: \.(py|md|rst|yml|yaml|toml)$ + args: ["--ignore-words-list", "nd,teh,mjd,ra,dec,fwhm,psf,skycoords,skycoord"] + + + # ---------- Pre-push smoke tests (optional) ---------- + # This does NOT replace full CI tests; it just runs a tiny, fast subset before push. + # You can comment this whole block out if you don't want tests in pre-commit. + - repo: local + hooks: + - id: pytest-smoke + name: "pytest -m smoke (pre-push)" + entry: bash -c 'pytest -q -m smoke -x --disable-warnings' + language: system + pass_filenames: false + always_run: true diff --git a/Photoz/Paper_Revision/Photoz_paper/Calculate_MgII_none_Detection_Probability/Calculate_MgII_none_Detection_Probability.ipynb b/Projects/Photoz/Paper_Revision/Photoz_paper/Calculate_MgII_none_Detection_Probability/Calculate_MgII_none_Detection_Probability.ipynb similarity index 100% rename from Photoz/Paper_Revision/Photoz_paper/Calculate_MgII_none_Detection_Probability/Calculate_MgII_none_Detection_Probability.ipynb rename to Projects/Photoz/Paper_Revision/Photoz_paper/Calculate_MgII_none_Detection_Probability/Calculate_MgII_none_Detection_Probability.ipynb diff --git a/Photoz/Paper_Revision/Photoz_paper/Optical_depth_EBL_Model/Code_documentated b/Projects/Photoz/Paper_Revision/Photoz_paper/Optical_depth_EBL_Model/Code_documentated similarity index 100% rename from Photoz/Paper_Revision/Photoz_paper/Optical_depth_EBL_Model/Code_documentated rename to Projects/Photoz/Paper_Revision/Photoz_paper/Optical_depth_EBL_Model/Code_documentated diff --git a/Photoz/Paper_Revision/Photoz_paper/Optical_depth_EBL_Model/optical_depth_calculation.ipynb b/Projects/Photoz/Paper_Revision/Photoz_paper/Optical_depth_EBL_Model/optical_depth_calculation.ipynb similarity index 100% rename from Photoz/Paper_Revision/Photoz_paper/Optical_depth_EBL_Model/optical_depth_calculation.ipynb rename to Projects/Photoz/Paper_Revision/Photoz_paper/Optical_depth_EBL_Model/optical_depth_calculation.ipynb diff --git a/Photoz/Paper_Revision/Photoz_paper/Optical_depth_EBL_Model/tau_saldana-lopez21.txt b/Projects/Photoz/Paper_Revision/Photoz_paper/Optical_depth_EBL_Model/tau_saldana-lopez21.txt similarity index 100% rename from Photoz/Paper_Revision/Photoz_paper/Optical_depth_EBL_Model/tau_saldana-lopez21.txt rename to Projects/Photoz/Paper_Revision/Photoz_paper/Optical_depth_EBL_Model/tau_saldana-lopez21.txt diff --git a/Photoz/Paper_Revision/Photoz_paper/Plot_Model_SED/MARA23032010.zip b/Projects/Photoz/Paper_Revision/Photoz_paper/Plot_Model_SED/MARA23032010.zip similarity index 100% rename from Photoz/Paper_Revision/Photoz_paper/Plot_Model_SED/MARA23032010.zip rename to Projects/Photoz/Paper_Revision/Photoz_paper/Plot_Model_SED/MARA23032010.zip diff --git a/Photoz/Paper_Revision/Photoz_paper/Plot_Model_SED/MARA23032010/CB1_0_LOIII4.sed b/Projects/Photoz/Paper_Revision/Photoz_paper/Plot_Model_SED/MARA23032010/CB1_0_LOIII4.sed similarity index 100% rename from Photoz/Paper_Revision/Photoz_paper/Plot_Model_SED/MARA23032010/CB1_0_LOIII4.sed rename to Projects/Photoz/Paper_Revision/Photoz_paper/Plot_Model_SED/MARA23032010/CB1_0_LOIII4.sed diff --git a/Photoz/Paper_Revision/Photoz_paper/Plot_Model_SED/MARA23032010/I22491_40_TQSO1_60.sed b/Projects/Photoz/Paper_Revision/Photoz_paper/Plot_Model_SED/MARA23032010/I22491_40_TQSO1_60.sed similarity index 100% rename from Photoz/Paper_Revision/Photoz_paper/Plot_Model_SED/MARA23032010/I22491_40_TQSO1_60.sed rename to Projects/Photoz/Paper_Revision/Photoz_paper/Plot_Model_SED/MARA23032010/I22491_40_TQSO1_60.sed diff --git a/Photoz/Paper_Revision/Photoz_paper/Plot_Model_SED/MARA23032010/I22491_50_TQSO1_50.sed b/Projects/Photoz/Paper_Revision/Photoz_paper/Plot_Model_SED/MARA23032010/I22491_50_TQSO1_50.sed similarity index 100% rename from Photoz/Paper_Revision/Photoz_paper/Plot_Model_SED/MARA23032010/I22491_50_TQSO1_50.sed rename to Projects/Photoz/Paper_Revision/Photoz_paper/Plot_Model_SED/MARA23032010/I22491_50_TQSO1_50.sed diff --git a/Photoz/Paper_Revision/Photoz_paper/Plot_Model_SED/MARA23032010/I22491_60_TQSO1_40.sed b/Projects/Photoz/Paper_Revision/Photoz_paper/Plot_Model_SED/MARA23032010/I22491_60_TQSO1_40.sed similarity index 100% rename from Photoz/Paper_Revision/Photoz_paper/Plot_Model_SED/MARA23032010/I22491_60_TQSO1_40.sed rename to Projects/Photoz/Paper_Revision/Photoz_paper/Plot_Model_SED/MARA23032010/I22491_60_TQSO1_40.sed diff --git a/Photoz/Paper_Revision/Photoz_paper/Plot_Model_SED/MARA23032010/I22491_70_TQSO1_30.sed b/Projects/Photoz/Paper_Revision/Photoz_paper/Plot_Model_SED/MARA23032010/I22491_70_TQSO1_30.sed similarity index 100% rename from Photoz/Paper_Revision/Photoz_paper/Plot_Model_SED/MARA23032010/I22491_70_TQSO1_30.sed rename to Projects/Photoz/Paper_Revision/Photoz_paper/Plot_Model_SED/MARA23032010/I22491_70_TQSO1_30.sed diff --git a/Photoz/Paper_Revision/Photoz_paper/Plot_Model_SED/MARA23032010/I22491_80_TQSO1_20.sed b/Projects/Photoz/Paper_Revision/Photoz_paper/Plot_Model_SED/MARA23032010/I22491_80_TQSO1_20.sed similarity index 100% rename from Photoz/Paper_Revision/Photoz_paper/Plot_Model_SED/MARA23032010/I22491_80_TQSO1_20.sed rename to Projects/Photoz/Paper_Revision/Photoz_paper/Plot_Model_SED/MARA23032010/I22491_80_TQSO1_20.sed diff --git a/Photoz/Paper_Revision/Photoz_paper/Plot_Model_SED/MARA23032010/I22491_90_TQSO1_10.sed b/Projects/Photoz/Paper_Revision/Photoz_paper/Plot_Model_SED/MARA23032010/I22491_90_TQSO1_10.sed similarity index 100% rename from Photoz/Paper_Revision/Photoz_paper/Plot_Model_SED/MARA23032010/I22491_90_TQSO1_10.sed rename to Projects/Photoz/Paper_Revision/Photoz_paper/Plot_Model_SED/MARA23032010/I22491_90_TQSO1_10.sed diff --git a/Photoz/Paper_Revision/Photoz_paper/Plot_Model_SED/MARA23032010/I22491_template_norm.sed.save b/Projects/Photoz/Paper_Revision/Photoz_paper/Plot_Model_SED/MARA23032010/I22491_template_norm.sed.save similarity index 100% rename from Photoz/Paper_Revision/Photoz_paper/Plot_Model_SED/MARA23032010/I22491_template_norm.sed.save rename to Projects/Photoz/Paper_Revision/Photoz_paper/Plot_Model_SED/MARA23032010/I22491_template_norm.sed.save diff --git a/Photoz/Paper_Revision/Photoz_paper/Plot_Model_SED/MARA23032010/M82_template_norm.sed b/Projects/Photoz/Paper_Revision/Photoz_paper/Plot_Model_SED/MARA23032010/M82_template_norm.sed similarity index 100% rename from Photoz/Paper_Revision/Photoz_paper/Plot_Model_SED/MARA23032010/M82_template_norm.sed rename to Projects/Photoz/Paper_Revision/Photoz_paper/Plot_Model_SED/MARA23032010/M82_template_norm.sed diff --git a/Photoz/Paper_Revision/Photoz_paper/Plot_Model_SED/MARA23032010/Mrk231_template_norm.sed b/Projects/Photoz/Paper_Revision/Photoz_paper/Plot_Model_SED/MARA23032010/Mrk231_template_norm.sed similarity index 100% rename from Photoz/Paper_Revision/Photoz_paper/Plot_Model_SED/MARA23032010/Mrk231_template_norm.sed rename to Projects/Photoz/Paper_Revision/Photoz_paper/Plot_Model_SED/MARA23032010/Mrk231_template_norm.sed diff --git a/Photoz/Paper_Revision/Photoz_paper/Plot_Model_SED/MARA23032010/S0_10_QSO2_90.sed b/Projects/Photoz/Paper_Revision/Photoz_paper/Plot_Model_SED/MARA23032010/S0_10_QSO2_90.sed similarity index 100% rename from Photoz/Paper_Revision/Photoz_paper/Plot_Model_SED/MARA23032010/S0_10_QSO2_90.sed rename to Projects/Photoz/Paper_Revision/Photoz_paper/Plot_Model_SED/MARA23032010/S0_10_QSO2_90.sed diff --git a/Photoz/Paper_Revision/Photoz_paper/Plot_Model_SED/MARA23032010/S0_20_QSO2_80.sed b/Projects/Photoz/Paper_Revision/Photoz_paper/Plot_Model_SED/MARA23032010/S0_20_QSO2_80.sed similarity index 100% rename from Photoz/Paper_Revision/Photoz_paper/Plot_Model_SED/MARA23032010/S0_20_QSO2_80.sed rename to Projects/Photoz/Paper_Revision/Photoz_paper/Plot_Model_SED/MARA23032010/S0_20_QSO2_80.sed diff --git a/Photoz/Paper_Revision/Photoz_paper/Plot_Model_SED/MARA23032010/S0_30_QSO2_70.sed b/Projects/Photoz/Paper_Revision/Photoz_paper/Plot_Model_SED/MARA23032010/S0_30_QSO2_70.sed similarity index 100% rename from Photoz/Paper_Revision/Photoz_paper/Plot_Model_SED/MARA23032010/S0_30_QSO2_70.sed rename to Projects/Photoz/Paper_Revision/Photoz_paper/Plot_Model_SED/MARA23032010/S0_30_QSO2_70.sed diff --git a/Photoz/Paper_Revision/Photoz_paper/Plot_Model_SED/MARA23032010/S0_40_QSO2_60.sed b/Projects/Photoz/Paper_Revision/Photoz_paper/Plot_Model_SED/MARA23032010/S0_40_QSO2_60.sed similarity index 100% rename from Photoz/Paper_Revision/Photoz_paper/Plot_Model_SED/MARA23032010/S0_40_QSO2_60.sed rename to Projects/Photoz/Paper_Revision/Photoz_paper/Plot_Model_SED/MARA23032010/S0_40_QSO2_60.sed diff --git a/Photoz/Paper_Revision/Photoz_paper/Plot_Model_SED/MARA23032010/S0_50_QSO2_50.sed b/Projects/Photoz/Paper_Revision/Photoz_paper/Plot_Model_SED/MARA23032010/S0_50_QSO2_50.sed similarity index 100% rename from Photoz/Paper_Revision/Photoz_paper/Plot_Model_SED/MARA23032010/S0_50_QSO2_50.sed rename to Projects/Photoz/Paper_Revision/Photoz_paper/Plot_Model_SED/MARA23032010/S0_50_QSO2_50.sed diff --git a/Photoz/Paper_Revision/Photoz_paper/Plot_Model_SED/MARA23032010/S0_60_QSO2_40.sed b/Projects/Photoz/Paper_Revision/Photoz_paper/Plot_Model_SED/MARA23032010/S0_60_QSO2_40.sed similarity index 100% rename from Photoz/Paper_Revision/Photoz_paper/Plot_Model_SED/MARA23032010/S0_60_QSO2_40.sed rename to Projects/Photoz/Paper_Revision/Photoz_paper/Plot_Model_SED/MARA23032010/S0_60_QSO2_40.sed diff --git a/Photoz/Paper_Revision/Photoz_paper/Plot_Model_SED/MARA23032010/S0_70_QSO2_30.sed b/Projects/Photoz/Paper_Revision/Photoz_paper/Plot_Model_SED/MARA23032010/S0_70_QSO2_30.sed similarity index 100% rename from Photoz/Paper_Revision/Photoz_paper/Plot_Model_SED/MARA23032010/S0_70_QSO2_30.sed rename to Projects/Photoz/Paper_Revision/Photoz_paper/Plot_Model_SED/MARA23032010/S0_70_QSO2_30.sed diff --git a/Photoz/Paper_Revision/Photoz_paper/Plot_Model_SED/MARA23032010/S0_80_QSO2_20.sed b/Projects/Photoz/Paper_Revision/Photoz_paper/Plot_Model_SED/MARA23032010/S0_80_QSO2_20.sed similarity index 100% rename from Photoz/Paper_Revision/Photoz_paper/Plot_Model_SED/MARA23032010/S0_80_QSO2_20.sed rename to Projects/Photoz/Paper_Revision/Photoz_paper/Plot_Model_SED/MARA23032010/S0_80_QSO2_20.sed diff --git a/Photoz/Paper_Revision/Photoz_paper/Plot_Model_SED/MARA23032010/S0_90_QSO2_10.sed b/Projects/Photoz/Paper_Revision/Photoz_paper/Plot_Model_SED/MARA23032010/S0_90_QSO2_10.sed similarity index 100% rename from Photoz/Paper_Revision/Photoz_paper/Plot_Model_SED/MARA23032010/S0_90_QSO2_10.sed rename to Projects/Photoz/Paper_Revision/Photoz_paper/Plot_Model_SED/MARA23032010/S0_90_QSO2_10.sed diff --git a/Photoz/Paper_Revision/Photoz_paper/Plot_Model_SED/MARA23032010/S0_template_norm.sed b/Projects/Photoz/Paper_Revision/Photoz_paper/Plot_Model_SED/MARA23032010/S0_template_norm.sed similarity index 100% rename from Photoz/Paper_Revision/Photoz_paper/Plot_Model_SED/MARA23032010/S0_template_norm.sed rename to Projects/Photoz/Paper_Revision/Photoz_paper/Plot_Model_SED/MARA23032010/S0_template_norm.sed diff --git a/Photoz/Paper_Revision/Photoz_paper/Plot_Model_SED/MARA23032010/Sb_template_norm.sed b/Projects/Photoz/Paper_Revision/Photoz_paper/Plot_Model_SED/MARA23032010/Sb_template_norm.sed similarity index 100% rename from Photoz/Paper_Revision/Photoz_paper/Plot_Model_SED/MARA23032010/Sb_template_norm.sed rename to Projects/Photoz/Paper_Revision/Photoz_paper/Plot_Model_SED/MARA23032010/Sb_template_norm.sed diff --git a/Photoz/Paper_Revision/Photoz_paper/Plot_Model_SED/MARA23032010/Sey18_template_norm.sed b/Projects/Photoz/Paper_Revision/Photoz_paper/Plot_Model_SED/MARA23032010/Sey18_template_norm.sed similarity index 100% rename from Photoz/Paper_Revision/Photoz_paper/Plot_Model_SED/MARA23032010/Sey18_template_norm.sed rename to Projects/Photoz/Paper_Revision/Photoz_paper/Plot_Model_SED/MARA23032010/Sey18_template_norm.sed diff --git a/Photoz/Paper_Revision/Photoz_paper/Plot_Model_SED/MARA23032010/Sey2_template_norm.sed b/Projects/Photoz/Paper_Revision/Photoz_paper/Plot_Model_SED/MARA23032010/Sey2_template_norm.sed similarity index 100% rename from Photoz/Paper_Revision/Photoz_paper/Plot_Model_SED/MARA23032010/Sey2_template_norm.sed rename to Projects/Photoz/Paper_Revision/Photoz_paper/Plot_Model_SED/MARA23032010/Sey2_template_norm.sed diff --git a/Photoz/Paper_Revision/Photoz_paper/Plot_Model_SED/MARA23032010/Spi4_template_norm.sed b/Projects/Photoz/Paper_Revision/Photoz_paper/Plot_Model_SED/MARA23032010/Spi4_template_norm.sed similarity index 100% rename from Photoz/Paper_Revision/Photoz_paper/Plot_Model_SED/MARA23032010/Spi4_template_norm.sed rename to Projects/Photoz/Paper_Revision/Photoz_paper/Plot_Model_SED/MARA23032010/Spi4_template_norm.sed diff --git a/Photoz/Paper_Revision/Photoz_paper/Plot_Model_SED/MARA23032010/pl_I22491_10_TQSO1_90.sed b/Projects/Photoz/Paper_Revision/Photoz_paper/Plot_Model_SED/MARA23032010/pl_I22491_10_TQSO1_90.sed similarity index 100% rename from Photoz/Paper_Revision/Photoz_paper/Plot_Model_SED/MARA23032010/pl_I22491_10_TQSO1_90.sed rename to Projects/Photoz/Paper_Revision/Photoz_paper/Plot_Model_SED/MARA23032010/pl_I22491_10_TQSO1_90.sed diff --git a/Photoz/Paper_Revision/Photoz_paper/Plot_Model_SED/MARA23032010/pl_I22491_20_TQSO1_80.sed b/Projects/Photoz/Paper_Revision/Photoz_paper/Plot_Model_SED/MARA23032010/pl_I22491_20_TQSO1_80.sed similarity index 100% rename from Photoz/Paper_Revision/Photoz_paper/Plot_Model_SED/MARA23032010/pl_I22491_20_TQSO1_80.sed rename to Projects/Photoz/Paper_Revision/Photoz_paper/Plot_Model_SED/MARA23032010/pl_I22491_20_TQSO1_80.sed diff --git a/Photoz/Paper_Revision/Photoz_paper/Plot_Model_SED/MARA23032010/pl_I22491_30_TQSO1_70.sed b/Projects/Photoz/Paper_Revision/Photoz_paper/Plot_Model_SED/MARA23032010/pl_I22491_30_TQSO1_70.sed similarity index 100% rename from Photoz/Paper_Revision/Photoz_paper/Plot_Model_SED/MARA23032010/pl_I22491_30_TQSO1_70.sed rename to Projects/Photoz/Paper_Revision/Photoz_paper/Plot_Model_SED/MARA23032010/pl_I22491_30_TQSO1_70.sed diff --git a/Photoz/Paper_Revision/Photoz_paper/Plot_Model_SED/MARA23032010/pl_QSOH_template_norm.sed b/Projects/Photoz/Paper_Revision/Photoz_paper/Plot_Model_SED/MARA23032010/pl_QSOH_template_norm.sed similarity index 100% rename from Photoz/Paper_Revision/Photoz_paper/Plot_Model_SED/MARA23032010/pl_QSOH_template_norm.sed rename to Projects/Photoz/Paper_Revision/Photoz_paper/Plot_Model_SED/MARA23032010/pl_QSOH_template_norm.sed diff --git a/Photoz/Paper_Revision/Photoz_paper/Plot_Model_SED/MARA23032010/pl_QSO_DR2_029_t0.spec b/Projects/Photoz/Paper_Revision/Photoz_paper/Plot_Model_SED/MARA23032010/pl_QSO_DR2_029_t0.spec similarity index 100% rename from Photoz/Paper_Revision/Photoz_paper/Plot_Model_SED/MARA23032010/pl_QSO_DR2_029_t0.spec rename to Projects/Photoz/Paper_Revision/Photoz_paper/Plot_Model_SED/MARA23032010/pl_QSO_DR2_029_t0.spec diff --git a/Photoz/Paper_Revision/Photoz_paper/Plot_Model_SED/MARA23032010/pl_TQSO1_template_norm.sed b/Projects/Photoz/Paper_Revision/Photoz_paper/Plot_Model_SED/MARA23032010/pl_TQSO1_template_norm.sed similarity index 100% rename from Photoz/Paper_Revision/Photoz_paper/Plot_Model_SED/MARA23032010/pl_TQSO1_template_norm.sed rename to Projects/Photoz/Paper_Revision/Photoz_paper/Plot_Model_SED/MARA23032010/pl_TQSO1_template_norm.sed diff --git a/Photoz/Paper_Revision/Photoz_paper/Plot_Model_SED/MARA23032010/readme b/Projects/Photoz/Paper_Revision/Photoz_paper/Plot_Model_SED/MARA23032010/readme similarity index 100% rename from Photoz/Paper_Revision/Photoz_paper/Plot_Model_SED/MARA23032010/readme rename to Projects/Photoz/Paper_Revision/Photoz_paper/Plot_Model_SED/MARA23032010/readme diff --git a/Photoz/Paper_Revision/Photoz_paper/Plot_Model_SED/S0_70_QSO2_30.sed b/Projects/Photoz/Paper_Revision/Photoz_paper/Plot_Model_SED/S0_70_QSO2_30.sed similarity index 100% rename from Photoz/Paper_Revision/Photoz_paper/Plot_Model_SED/S0_70_QSO2_30.sed rename to Projects/Photoz/Paper_Revision/Photoz_paper/Plot_Model_SED/S0_70_QSO2_30.sed diff --git a/Photoz/Paper_Revision/Photoz_paper/Plot_Model_SED/Untitled.ipynb b/Projects/Photoz/Paper_Revision/Photoz_paper/Plot_Model_SED/Untitled.ipynb similarity index 100% rename from Photoz/Paper_Revision/Photoz_paper/Plot_Model_SED/Untitled.ipynb rename to Projects/Photoz/Paper_Revision/Photoz_paper/Plot_Model_SED/Untitled.ipynb diff --git a/Photoz/Paper_Revision/Photoz_paper/Plot_Model_SED/pl_QSOH_template_norm.sed b/Projects/Photoz/Paper_Revision/Photoz_paper/Plot_Model_SED/pl_QSOH_template_norm.sed similarity index 100% rename from Photoz/Paper_Revision/Photoz_paper/Plot_Model_SED/pl_QSOH_template_norm.sed rename to Projects/Photoz/Paper_Revision/Photoz_paper/Plot_Model_SED/pl_QSOH_template_norm.sed diff --git a/Photoz/Paper_Revision/Photoz_paper/Plot_Model_SED/pl_QSO_DR2_029_t0.spec b/Projects/Photoz/Paper_Revision/Photoz_paper/Plot_Model_SED/pl_QSO_DR2_029_t0.spec similarity index 100% rename from Photoz/Paper_Revision/Photoz_paper/Plot_Model_SED/pl_QSO_DR2_029_t0.spec rename to Projects/Photoz/Paper_Revision/Photoz_paper/Plot_Model_SED/pl_QSO_DR2_029_t0.spec diff --git a/Photoz/Paper_Revision/Photoz_paper/Power_indices_comparison/Compare_power_law_indices.ipynb b/Projects/Photoz/Paper_Revision/Photoz_paper/Power_indices_comparison/Compare_power_law_indices.ipynb similarity index 100% rename from Photoz/Paper_Revision/Photoz_paper/Power_indices_comparison/Compare_power_law_indices.ipynb rename to Projects/Photoz/Paper_Revision/Photoz_paper/Power_indices_comparison/Compare_power_law_indices.ipynb diff --git a/Photoz/Paper_Revision/Photoz_paper/Power_indices_comparison/apj458112t3_mrt.txt b/Projects/Photoz/Paper_Revision/Photoz_paper/Power_indices_comparison/apj458112t3_mrt.txt similarity index 100% rename from Photoz/Paper_Revision/Photoz_paper/Power_indices_comparison/apj458112t3_mrt.txt rename to Projects/Photoz/Paper_Revision/Photoz_paper/Power_indices_comparison/apj458112t3_mrt.txt diff --git a/Photoz/Paper_Revision/Photoz_paper/Reproduce_nucleus_magnitudes/Reproduce_nucleus_magnitudes.ipynb b/Projects/Photoz/Paper_Revision/Photoz_paper/Reproduce_nucleus_magnitudes/Reproduce_nucleus_magnitudes.ipynb similarity index 100% rename from Photoz/Paper_Revision/Photoz_paper/Reproduce_nucleus_magnitudes/Reproduce_nucleus_magnitudes.ipynb rename to Projects/Photoz/Paper_Revision/Photoz_paper/Reproduce_nucleus_magnitudes/Reproduce_nucleus_magnitudes.ipynb diff --git a/environment.yml b/environment.yml new file mode 100644 index 0000000..c70af30 --- /dev/null +++ b/environment.yml @@ -0,0 +1,29 @@ +name: researchcode +channels: + - conda-forge +dependencies: + - python=3.11 + - pip + + # notebooks + - jupyterlab + - ipykernel + + # core scientific stack + - numpy + - scipy + - pandas + - matplotlib + + # astronomy stack (按你需求可删减) + - astropy + - astroquery + + # dev tools + - pytest + - pre-commit + - ruff + + # optional: nice-to-have + - rich + - tqdm diff --git a/pyproject.toml b/pyproject.toml new file mode 100644 index 0000000..3f619df --- /dev/null +++ b/pyproject.toml @@ -0,0 +1,7 @@ +[tool.pytest.ini_options] +minversion = "6.0" +markers = [ + "smoke: fast checks to run before push", +] +addopts = "-ra" +testpaths = ["tests"] From 76a37e85ffb3cea9a03135d9fd674b52d633fdc0 Mon Sep 17 00:00:00 2001 From: Yong Sheng Date: Thu, 12 Feb 2026 16:10:37 -0400 Subject: [PATCH 2/4] excluding data files of .spec and .sed; fix duplicated stages argument. --- .pre-commit-config.yaml | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index a61b432..3711e3b 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -18,6 +18,8 @@ exclude: | .*\.ipynb )$ +code_files: &code_files '\.(py|md|rst|yml|yaml|toml|json)$' + # Categories: # - Format: keep code style consistent @@ -46,8 +48,10 @@ repos: hooks: - id: trailing-whitespace stages: [pre-push] + files: *code_files - id: end-of-file-fixer # 确保文件末尾只有 1 个换行 stages: [pre-push] + files: *code_files - id: check-merge-conflict # prevent committing conflict markers stages: [pre-push] - id: check-yaml # validate .yml/.yaml @@ -59,9 +63,9 @@ repos: - id: check-case-conflict # warn about case-insensitive FS collisiois stages: [pre-push] - id: mixed-line-ending # 统一换行风格 - stages: [pre-push] + stages: [pre-push] + files: *code_files args: ["--fix=lf"] # 统一 LF(推荐 macOS/Linux) - stages: [pre-push] - id: check-added-large-files # 给「大文件」阈值一个你能接受的上限(默认 5MB) stages: [pre-push] args: ["--maxkb=10000"] # 10MB;或换成你项目想要的大小 From 5f588c51b6b27b7545bdb0adabd462486c773733 Mon Sep 17 00:00:00 2001 From: Yong Sheng Date: Thu, 12 Feb 2026 16:17:42 -0400 Subject: [PATCH 3/4] chore: fix pre-commit yaml and limit auto-fix hooks to code files --- .pre-commit-config.yaml | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 3711e3b..dd65b3f 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -18,8 +18,7 @@ exclude: | .*\.ipynb )$ -code_files: &code_files '\.(py|md|rst|yml|yaml|toml|json)$' - + # Categories: # - Format: keep code style consistent @@ -48,7 +47,7 @@ repos: hooks: - id: trailing-whitespace stages: [pre-push] - files: *code_files + files: &code_files '\.(py|md|rst|yml|yaml|toml|json)$' - id: end-of-file-fixer # 确保文件末尾只有 1 个换行 stages: [pre-push] files: *code_files @@ -57,14 +56,14 @@ repos: - id: check-yaml # validate .yml/.yaml stages: [pre-push] - id: check-json # validate JSON files - stages: [pre-push] + stages: [pre-push] - id: check-toml # validate TOML files (if any) - stages: [pre-push] + stages: [pre-push] - id: check-case-conflict # warn about case-insensitive FS collisiois - stages: [pre-push] + stages: [pre-push] - id: mixed-line-ending # 统一换行风格 - stages: [pre-push] - files: *code_files + stages: [pre-push] + files: *code_files args: ["--fix=lf"] # 统一 LF(推荐 macOS/Linux) - id: check-added-large-files # 给「大文件」阈值一个你能接受的上限(默认 5MB) stages: [pre-push] From 2568cd313f49c2c36ddb06a7a61b826a3d442714 Mon Sep 17 00:00:00 2001 From: Yong Sheng Date: Thu, 12 Feb 2026 16:27:20 -0400 Subject: [PATCH 4/4] chore: stop ignoring tests; simplify gitignore --- .gitignore | 24 ++++++++++------ tests/test_smoke_imports.py | 55 +++++++++++++++++++++++++++++++++++++ 2 files changed, 71 insertions(+), 8 deletions(-) create mode 100644 tests/test_smoke_imports.py diff --git a/.gitignore b/.gitignore index e8cfea1..988d1b5 100755 --- a/.gitignore +++ b/.gitignore @@ -1,9 +1,17 @@ -*checkpoints -*egg_info/* -.gitingore -photozpy.egg-info/ -*__pycache__ -*.DS_Store* -tests/ -src/photozpy/calibration/testing_files/ +# Jupyter / notebooks +.ipynb_checkpoints/ +# Python caches +__pycache__/ +*.py[cod] + +# pytest +.pytest_cache/ + +# packaging artifacts +*.egg-info/ +build/ +dist/ + +# macOS +.DS_Store diff --git a/tests/test_smoke_imports.py b/tests/test_smoke_imports.py new file mode 100644 index 0000000..d0962b6 --- /dev/null +++ b/tests/test_smoke_imports.py @@ -0,0 +1,55 @@ +from __future__ import annotations + +import importlib.util +import sys +from pathlib import Path + +import pytest + +REPO_ROOT = Path(__file__).resolve().parents[1] +PROJECTS_ROOT = REPO_ROOT / "Projects" + +# 你可以按需要继续加 +SKIP_DIRS = { + "__pycache__", + ".ipynb_checkpoints", + ".pytest_cache", + ".mypy_cache", +} + +@pytest.mark.smoke +def test_import_all_py_files_under_projects(): + assert PROJECTS_ROOT.exists(), f"Expected folder not found: {PROJECTS_ROOT}" + + # 让 Projects 内部如果有绝对导入(比如 import some_utils)更容易找到 + sys.path.insert(0, str(PROJECTS_ROOT)) + sys.path.insert(0, str(REPO_ROOT)) + + py_files = [] + for p in PROJECTS_ROOT.rglob("*.py"): + parts = set(p.relative_to(PROJECTS_ROOT).parts) + if parts & SKIP_DIRS: + continue + py_files.append(p) + + failures = [] + for p in sorted(py_files): + # 给每个文件一个唯一的“假模块名”,避免冲突 + mod_name = ( + "smoke_projects_" + + p.relative_to(PROJECTS_ROOT).with_suffix("").as_posix().replace("/", "_").replace("-", "_") + ) + + try: + spec = importlib.util.spec_from_file_location(mod_name, p) + if spec is None or spec.loader is None: + raise RuntimeError(f"Cannot create import spec for {p}") + mod = importlib.util.module_from_spec(spec) + sys.modules[mod_name] = mod + spec.loader.exec_module(mod) + except Exception as e: + failures.append((str(p.relative_to(PROJECTS_ROOT)), repr(e))) + + if failures: + msg = "\n".join([f"- {relpath}: {err}" for relpath, err in failures]) + raise AssertionError(f"Import smoke failed for some .py files under Projects:\n{msg}\n")