From 34551204c1e2a57670fb38d2a2527963d32dc208 Mon Sep 17 00:00:00 2001 From: ludwiglierhammer <73587842+ludwiglierhammer@users.noreply.github.com> Date: Thu, 30 Jul 2026 09:37:28 +0000 Subject: [PATCH 1/4] chore: accept new Cruft update --- .cruft.json | 72 +++--- .github/dependabot.yml.rej | 10 + {CI => .github}/requirements_ci.in | 0 .github/requirements_ci.in.rej | 13 + {CI => .github}/requirements_ci.txt | 5 +- .github/requirements_ci.txt.rej | 235 ++++++++++++++++++ .../workflows/auto-accept-ci-changes.yml.rej | 10 + .github/workflows/bump-version.yml.rej | 43 ++++ .github/workflows/cache-cleaner.yml.rej | 19 ++ .github/workflows/codeql.yml.rej | 17 ++ .github/workflows/dependency-review.yml.rej | 22 ++ .github/workflows/first-pull-request.yml.rej | 26 ++ .github/workflows/label.yml.rej | 10 + .github/workflows/publish-pypi.yml.rej | 37 +++ .github/workflows/scorecard.yml.rej | 19 ++ .github/workflows/tag-testpypi.yml.rej | 55 ++++ .github/workflows/workflow-warning.yml.rej | 125 ++++++++++ .pre-commit-config.yaml | 2 +- AGENTS.md | 35 +++ AI_POLICY.md | 59 +++++ CITATION.cff.rej | 10 + CONTRIBUTING.rst | 71 +++++- CONTRIBUTING.rst.rej | 26 ++ Makefile.rej | 10 + README.rst.rej | 21 ++ docs/Makefile | 3 + docs/conf.py.rej | 12 + docs/index.rst.rej | 32 +++ docs/releasing.rst | 17 +- environment-docs.yml.rej | 9 + pyproject.toml.rej | 169 +++++++++++++ 31 files changed, 1158 insertions(+), 36 deletions(-) create mode 100644 .github/dependabot.yml.rej rename {CI => .github}/requirements_ci.in (100%) create mode 100644 .github/requirements_ci.in.rej rename {CI => .github}/requirements_ci.txt (99%) create mode 100644 .github/requirements_ci.txt.rej create mode 100644 .github/workflows/auto-accept-ci-changes.yml.rej create mode 100644 .github/workflows/bump-version.yml.rej create mode 100644 .github/workflows/cache-cleaner.yml.rej create mode 100644 .github/workflows/codeql.yml.rej create mode 100644 .github/workflows/dependency-review.yml.rej create mode 100644 .github/workflows/first-pull-request.yml.rej create mode 100644 .github/workflows/label.yml.rej create mode 100644 .github/workflows/publish-pypi.yml.rej create mode 100644 .github/workflows/scorecard.yml.rej create mode 100644 .github/workflows/tag-testpypi.yml.rej create mode 100644 .github/workflows/workflow-warning.yml.rej create mode 100644 AGENTS.md create mode 100644 AI_POLICY.md create mode 100644 CITATION.cff.rej create mode 100644 CONTRIBUTING.rst.rej create mode 100644 Makefile.rej create mode 100644 README.rst.rej create mode 100644 docs/conf.py.rej create mode 100644 docs/index.rst.rej create mode 100644 environment-docs.yml.rej create mode 100644 pyproject.toml.rej diff --git a/.cruft.json b/.cruft.json index 14233f7a..9c53f411 100755 --- a/.cruft.json +++ b/.cruft.json @@ -1,30 +1,42 @@ -{ - "template": "https://github.com/Ouranosinc/cookiecutter-pypackage.git", - "commit": "cb8b26cb78a428f6ce447a0ab1b08c0c171ad5aa", - "checkout": null, - "context": { - "cookiecutter": { - "full_name": "Ludwig Lierhammer", - "email": "ludwig.lierhammer@dwd.de", - "github_username": "glamod", - "orcid_id": "0000-0002-7207-0003", - "project_name": "Common Data Model reader and mapper", - "project_slug": "cdm_reader_mapper", - "project_short_description": "This Python package is designed for reading data files compliant with a user specified data model, for mapping observed variables and its associated metadata from a data model or models combination to the C3S CDS Common Data Model (CDM) format, and for detecting and flagging or removing duplicated observations. It was developed to read the IMMA (International Maritime Meteorological Archive) data format, but it has been enhanced to account for meteorological data formats in the case of data that is stored in a human-readable manner (ASCII format), data that is stored in a Network Common Data Format (NetCDF format), data that is organized in single line reports, reports that have a coherent internal structure and can be modelised, reports that have a fixed width or field delimited types, and reports that can be organized in sections, in which case each section can be of different types (fixed width of delimited)", - "pypi_username": "ludwiglierhammer", - "version": "2.4.1", - "use_pytest": "y", - "use_conda": "n", - "make_docs": "y", - "add_translations": "n", - "command_line_interface": "Click", - "create_author_file": "y", - "open_source_license": "Apache Software License 2.0", - "generated_with_cruft": "n", - "__gh_slug": "https://github.com/glamod/cdm_reader_mapper", - "_template": "https://github.com/Ouranosinc/cookiecutter-pypackage.git", - "_commit": "cb8b26cb78a428f6ce447a0ab1b08c0c171ad5aa" - } - }, - "directory": null -} +{ + "template": "https://github.com/Ouranosinc/cookiecutter-pypackage.git", + "commit": "3c1f362148b15e97a7a7d252f39f40d4175dfcb2", + "checkout": null, + "context": { + "cookiecutter": { + "full_name": "Ludwig Lierhammer", + "email": "ludwig.lierhammer@dwd.de", + "github_username": "glamod", + "orcid_id": "0000-0002-7207-0003", + "project_name": "Common Data Model reader and mapper", + "project_slug": "cdm_reader_mapper", + "project_short_description": "This Python package is designed for reading data files compliant with a user specified data model, for mapping observed variables and its associated metadata from a data model or models combination to the C3S CDS Common Data Model (CDM) format, and for detecting and flagging or removing duplicated observations. It was developed to read the IMMA (International Maritime Meteorological Archive) data format, but it has been enhanced to account for meteorological data formats in the case of data that is stored in a human-readable manner (ASCII format), data that is stored in a Network Common Data Format (NetCDF format), data that is organized in single line reports, reports that have a coherent internal structure and can be modelised, reports that have a fixed width or field delimited types, and reports that can be organized in sections, in which case each section can be of different types (fixed width of delimited)", + "pypi_username": "ludwiglierhammer", + "version": "2.4.1", + "use_pytest": "y", + "use_conda": "n", + "make_docs": "y", + "add_translations": "n", + "command_line_interface": "Click", + "create_author_file": "y", + "open_source_license": "Apache Software License 2.0", + "ai_tools_policy": "Standard", + "generated_with_cruft": "n", + "__gh_slug": "https://github.com/glamod/cdm_reader_mapper", + "_copy_without_render": [ + ".github/workflows/auto-accept-ci-changes.yml", + ".github/workflows/cache-cleaner.yml", + ".github/workflows/codeql.yml", + ".github/workflows/dependency-review.yml", + ".github/workflows/label.yml", + ".github/workflows/publish-pypi.yml", + ".github/workflows/scorecard.yml", + ".github/workflows/tag-testpypi.yml", + ".github/workflows/workflow-warning.yml" + ], + "_template": "https://github.com/Ouranosinc/cookiecutter-pypackage.git", + "_commit": "3c1f362148b15e97a7a7d252f39f40d4175dfcb2" + } + }, + "directory": null +} diff --git a/.github/dependabot.yml.rej b/.github/dependabot.yml.rej new file mode 100644 index 00000000..a7fb1ce1 --- /dev/null +++ b/.github/dependabot.yml.rej @@ -0,0 +1,10 @@ +diff a/.github/dependabot.yml b/.github/dependabot.yml (rejected hunks) +@@ -19,7 +19,7 @@ updates: + default-days: 7 + + - package-ecosystem: pip +- directory: /CI ++ directory: /.github + schedule: + interval: "quarterly" + groups: diff --git a/CI/requirements_ci.in b/.github/requirements_ci.in similarity index 100% rename from CI/requirements_ci.in rename to .github/requirements_ci.in diff --git a/.github/requirements_ci.in.rej b/.github/requirements_ci.in.rej new file mode 100644 index 00000000..8dfeca4a --- /dev/null +++ b/.github/requirements_ci.in.rej @@ -0,0 +1,13 @@ +diff a/.github/requirements_ci.in b/.github/requirements_ci.in (rejected hunks) +@@ -1,8 +1,9 @@ ++bump-my-version==1.3.0 + deptry==0.24.0 + exceptiongroup==1.3.1 + flit==3.12.0 +-pip==26.0.1 ++pip==26.1.2 + pydantic==2.12.5 + pylint==4.0.1 + tox-gh==1.7.1 +-tox==4.49.1 ++tox==4.52.0 diff --git a/CI/requirements_ci.txt b/.github/requirements_ci.txt similarity index 99% rename from CI/requirements_ci.txt rename to .github/requirements_ci.txt index 81acea46..01eac720 100644 --- a/CI/requirements_ci.txt +++ b/.github/requirements_ci.txt @@ -31,7 +31,10 @@ cachetools==7.0.4 \ certifi==2024.7.4 \ --hash=sha256:5a1e7645bc0ec61a09e26c36f6106dd4cf40c6db3a1fb6352b0244e7fb057c7b \ --hash=sha256:c198e21b1289c2ab85ee4e67bb4b4ef3ead0892059901a8d5b622f24a1101e90 - # via requests + # via + # httpcore + # httpx + # requests charset-normalizer==3.3.2 \ --hash=sha256:06435b539f889b1f6f4ac1758871aae42dc3a8c0e24ac9e60c2384973ad73027 \ --hash=sha256:06a81e93cd441c56a9b65d8e1d043daeb97a3d0856d177d5c90ba85acb3db087 \ diff --git a/.github/requirements_ci.txt.rej b/.github/requirements_ci.txt.rej new file mode 100644 index 00000000..1e6bc407 --- /dev/null +++ b/.github/requirements_ci.txt.rej @@ -0,0 +1,235 @@ +diff a/.github/requirements_ci.txt b/.github/requirements_ci.txt (rejected hunks) +@@ -2,16 +2,28 @@ + # This file is autogenerated by pip-compile with Python 3.10 + # by the following command: + # +-# pip-compile --generate-hashes --output-file=CI/requirements_ci.txt CI/requirements_ci.in ++# pip-compile --generate-hashes --output-file=.github/requirements_ci.txt CI/requirements_ci.in + # + annotated-types==0.7.0 \ + --hash=sha256:1f02e8b43a8fbbc3f3e0d4f0f4bfc8131bcb4eebe8849b8e5c773f3a1c582a53 \ + --hash=sha256:aff07c09a53a08bc8cfccb9c85b05f1aa9a2a6f23728d790723543408344ce89 + # via pydantic ++anyio==4.13.0 \ ++ --hash=sha256:08b310f9e24a9594186fd75b4f73f4a4152069e3853f1ed8bfbf58369f4ad708 \ ++ --hash=sha256:334b70e641fd2221c1505b3890c69882fe4a2df910cba14d97019b90b24439dc ++ # via httpx + astroid==4.0.4 \ + --hash=sha256:52f39653876c7dec3e3afd4c2696920e05c83832b9737afc21928f2d2eb7a753 \ + --hash=sha256:986fed8bcf79fb82c78b18a53352a0b287a73817d6dbcfba3162da36667c49a0 + # via pylint ++bracex==2.6 \ ++ --hash=sha256:0b0049264e7340b3ec782b5cb99beb325f36c3782a32e36e876452fd49a09952 \ ++ --hash=sha256:98f1347cd77e22ee8d967a30ad4e310b233f7754dbf31ff3fceb76145ba47dc7 ++ # via wcmatch ++bump-my-version==1.3.0 \ ++ --hash=sha256:3cdaa54588d2443a29303b77e7539417187952c3d22f87bfdd32c0fe6af2f570 \ ++ --hash=sha256:5780137a8d93378af3839798fcba01c7e6cb28dcc5aa5a7ab4d8507787f1995c ++ # via -r requirements_ci.in + cachetools==7.0.5 \ + --hash=sha256:0cd042c24377200c1dcd225f8b7b12b0ca53cc2c961b43757e774ebe190fd990 \ + --hash=sha256:46bc8ebefbe485407621d0a4264b23c080cedd913921bad7ac3ed2f26c183114 +@@ -115,7 +130,10 @@ charset-normalizer==3.3.2 \ + click==8.1.7 \ + --hash=sha256:ae74fb96c20a0277a1d615f1e4d73c8414f5a98db8b799a7931d1582f3390c28 \ + --hash=sha256:ca9853ad459e787e2192211578cc907e7594e294c7ccc834310722b41b9ca6de +- # via deptry ++ # via ++ # bump-my-version ++ # deptry ++ # rich-click + colorama==0.4.6 \ + --hash=sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44 \ + --hash=sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6 +@@ -153,7 +171,9 @@ docutils==0.20.1 \ + exceptiongroup==1.3.1 \ + --hash=sha256:8b412432c6055b0b7d14c310000ae93352ed6754f70fa8f7c34141f91c4e3219 \ + --hash=sha256:a7a39a3bd276781e98394987d3a5701d0c4edffb633bb7a5144577f82c773598 +- # via -r requirements_ci.in ++ # via ++ # -r requirements_ci.in ++ # anyio + filelock==3.25.2 \ + --hash=sha256:b64ece2b38f4ca29dd3e810287aa8c48182bbecd1ae6e9ae126c9b35f1382694 \ + --hash=sha256:ca8afb0da15f229774c9ad1b455ed96e85a81373065fb10446672f64444ddf70 +@@ -169,18 +189,41 @@ flit-core==3.12.0 \ + --hash=sha256:18f63100d6f94385c6ed57a72073443e1a71a4acb4339491615d0f16d6ff01b2 \ + --hash=sha256:e7a0304069ea895172e3c7bb703292e992c5d1555dd1233ab7b5621b5b69e62c + # via flit +-idna==3.7 \ +- --hash=sha256:028ff3aadf0609c1fd278d8ea3089299412a7a8b9bd005dd08b9f8285bcb5cfc \ +- --hash=sha256:82fee1fc78add43492d3a1898bfa6d8a904cc97d8427f683ed8e798d07761aa0 +- # via requests ++h11==0.16.0 \ ++ --hash=sha256:4e35b956cf45792e4caa5885e69fba00bdbc6ffafbfa020300e549b208ee5ff1 \ ++ --hash=sha256:63cf8bbe7522de3bf65932fda1d9c2772064ffb3dae62d55932da54b31cb6c86 ++ # via httpcore ++httpcore==1.0.9 \ ++ --hash=sha256:2d400746a40668fc9dec9810239072b40b4484b640a8c38fd654a024c7a1bf55 \ ++ --hash=sha256:6e34463af53fd2ab5d807f399a9b45ea31c3dfa2276f15a2c3f00afff6e176e8 ++ # via httpx ++httpx==0.28.1 \ ++ --hash=sha256:75e98c5f16b0f35b567856f597f06ff2270a374470a5c2392242528e3e3e42fc \ ++ --hash=sha256:d909fcccc110f8c7faf814ca82a9a4d816bc5a6dbfea25d6591d6985b8ba59ad ++ # via bump-my-version ++idna==3.15 \ ++ --hash=sha256:048adeaf8c2d788c40fee287673ccaa74c24ffd8dcf09ffa555a2fbb59f10ac8 \ ++ --hash=sha256:ca962446ea538f7092a95e057da437618e886f4d349216d2b1e294abfdb65fdc ++ # via ++ # anyio ++ # httpx ++ # requests + isort==6.0.0 \ + --hash=sha256:567954102bb47bb12e0fae62606570faacddd441e45683968c8d1734fb1af892 \ + --hash=sha256:75d9d8a1438a9432a7d7b54f2d3b45cad9a4a0fdba43617d9873379704a8bdf1 + # via pylint ++markdown-it-py==4.0.0 \ ++ --hash=sha256:87327c59b172c5011896038353a81343b6754500a08cd7a4973bb48c6d578147 \ ++ --hash=sha256:cb0a2b4aa34f932c007117b194e945bd74e0ec24133ceb5bac59009cda1cb9f3 ++ # via rich + mccabe==0.7.0 \ + --hash=sha256:348e0240c33b60bbdf4e523192ef919f28cb2c3d7d5c7794f74009290f236325 \ + --hash=sha256:6c2d30ab6be0e4a46919781807b4f0d834ebdd6c6e3dca0bda5a15f863427b6e + # via pylint ++mdurl==0.1.2 \ ++ --hash=sha256:84008a41e51615a49fc9966191ff91509e3c40b939176e643fd50a5c2196b8f8 \ ++ --hash=sha256:bb413d29f5eea38f31dd4754dd7377d4465116fb207585f97bf925588687c1ba ++ # via markdown-it-py + packaging==26.0 \ + --hash=sha256:00243ae351a257117b6a241061796684b084ed1c516a08c48a3f7e147a9d80b4 \ + --hash=sha256:b36f1fef9334a5588b4166f8bcd26a14e521f2b55e6b9de3aaa80d3ff7a37529 +@@ -201,10 +244,17 @@ pluggy==1.6.0 \ + --hash=sha256:7dcc130b76258d33b90f61b658791dede3486c3e6bfb003ee5c9bfb396dd22f3 \ + --hash=sha256:e920276dd6813095e9377c0bc5566d94c932c33b27a3e3945d8389c374dd4746 + # via tox ++prompt-toolkit==3.0.52 \ ++ --hash=sha256:28cde192929c8e7321de85de1ddbe736f1375148b02f2e17edd840042b1be855 \ ++ --hash=sha256:9aac639a3bbd33284347de5ad8d68ecc044b91a762dc39b7c21095fcd6a19955 ++ # via questionary + pydantic==2.12.5 \ + --hash=sha256:4d351024c75c0f085a9febbb665ce8c0c6ec5d30e903bdb6394b7ede26aebb49 \ + --hash=sha256:e561593fccf61e8a20fc46dfc2dfe075b8be7d0188df33f221ad1f0139180f9d +- # via -r requirements_ci.in ++ # via ++ # -r requirements_ci.in ++ # bump-my-version ++ # pydantic-settings + pydantic-core==2.41.5 \ + --hash=sha256:0177272f88ab8312479336e1d777f6b124537d47f2123f89cb37e0accea97f90 \ + --hash=sha256:01a3d0ab748ee531f4ea6c3e48ad9dac84ddba4b0d82291f87248f2f9de8d740 \ +@@ -328,6 +378,14 @@ pydantic-core==2.41.5 \ + --hash=sha256:f41eb9797986d6ebac5e8edff36d5cef9de40def462311b3eb3eeded1431e425 \ + --hash=sha256:f547144f2966e1e16ae626d8ce72b4cfa0caedc7fa28052001c94fb2fcaa1c52 + # via pydantic ++pydantic-settings==2.14.2 \ ++ --hash=sha256:a20c97b37910b6550d5ea50fbcc2d4187defe58cd57070b73863d069419c9440 \ ++ --hash=sha256:c19dd64b19097f1de80184f0cc7b0272a13ae6e170cbf240a3e27e381ed14a5f ++ # via bump-my-version ++pygments==2.20.0 \ ++ --hash=sha256:6757cd03768053ff99f3039c1a36d6c0aa0b263438fcab17520b30a303a82b5f \ ++ --hash=sha256:81a9e26dd42fd28a23a2d169d86d7ac03b46e2f8b59ed4698fb4785f946d0176 ++ # via rich + pylint==4.0.1 \ + --hash=sha256:06db6a1fda3cedbd7aee58f09d241e40e5f14b382fd035ed97be320f11728a84 \ + --hash=sha256:6077ac21d01b7361eae6ed0f38d9024c02732fdc635d9e154d4fe6063af8ac56 +@@ -336,10 +394,20 @@ pyproject-api==1.10.0 \ + --hash=sha256:40c6f2d82eebdc4afee61c773ed208c04c19db4c4a60d97f8d7be3ebc0bbb330 \ + --hash=sha256:8757c41a79c0f4ab71b99abed52b97ecf66bd20b04fa59da43b5840bac105a09 + # via tox +-python-discovery==1.1.3 \ +- --hash=sha256:7acca36e818cd88e9b2ba03e045ad7e93e1713e29c6bbfba5d90202310b7baa5 \ +- --hash=sha256:90e795f0121bc84572e737c9aa9966311b9fde44ffb88a5953b3ec9b31c6945e +- # via virtualenv ++python-discovery==1.2.2 \ ++ --hash=sha256:876e9c57139eb757cb5878cbdd9ae5379e5d96266c99ef731119e04fffe533bb \ ++ --hash=sha256:e1ae95d9af875e78f15e19aed0c6137ab1bb49c200f21f5061786490c9585c7a ++ # via ++ # tox ++ # virtualenv ++python-dotenv==1.2.2 \ ++ --hash=sha256:1d8214789a24de455a8b8bd8ae6fe3c6b69a5e3d64aa8a8e5d68e694bbcb285a \ ++ --hash=sha256:2c371a91fbd7ba082c2c1dc1f8bf89ca22564a087c2c287cd9b662adde799cf3 ++ # via pydantic-settings ++questionary==2.1.1 \ ++ --hash=sha256:3d7e980292bb0107abaa79c68dd3eee3c561b83a0f89ae482860b181c8bd412d \ ++ --hash=sha256:a51af13f345f1cdea62347589fbb6df3b290306ab8930713bfae4d475a7d4a59 ++ # via bump-my-version + requests==2.33.0 \ + --hash=sha256:3324635456fa185245e24865e810cecec7b4caf933d7eb133dcde67d48cee69b \ + --hash=sha256:c7ebc5e8b0f21837386ad0e1c8fe8b829fa5f544d8df3b2253bff14ef29d7652 +@@ -348,6 +416,16 @@ requirements-parser==0.11.0 \ + --hash=sha256:35f36dc969d14830bf459803da84f314dc3d17c802592e9e970f63d0359e5920 \ + --hash=sha256:50379eb50311834386c2568263ae5225d7b9d0867fb55cf4ecc93959de2c2684 + # via deptry ++rich==15.0.0 \ ++ --hash=sha256:33bd4ef74232fb73fe9279a257718407f169c09b78a87ad3d296f548e27de0bb \ ++ --hash=sha256:edd07a4824c6b40189fb7ac9bc4c52536e9780fbbfbddf6f1e2502c31b068c36 ++ # via ++ # bump-my-version ++ # rich-click ++rich-click==1.9.7 \ ++ --hash=sha256:022997c1e30731995bdbc8ec2f82819340d42543237f033a003c7b1f843fc5dc \ ++ --hash=sha256:2f99120fca78f536e07b114d3b60333bc4bb2a0969053b1250869bcdc1b5351b ++ # via bump-my-version + tomli==2.4.0 \ + --hash=sha256:0408e3de5ec77cc7f81960c362543cbbd91ef883e3138e81b729fc3eea5b9729 \ + --hash=sha256:0dc56fef0e2c1c470aeac5b6ca8cc7b640bb93e92d9803ddaf9ea03e198f5b0b \ +@@ -410,10 +488,12 @@ tomli-w==1.2.0 \ + tomlkit==0.13.0 \ + --hash=sha256:08ad192699734149f5b97b45f1f18dad7eb1b6d16bc72ad0c2335772650d7b72 \ + --hash=sha256:7075d3042d03b80f603482d69bf0c8f345c2b30e41699fd8883227f89972b264 +- # via pylint +-tox==4.49.1 \ +- --hash=sha256:4130d02e1d53648d7107d121ed79f69a27b717817c5e9da521d50319dd261212 \ +- --hash=sha256:6dd2d7d4e4fd5895ce4ea20e258fce0d4b81e914b697d116a5ab0365f8303bad ++ # via ++ # bump-my-version ++ # pylint ++tox==4.52.0 \ ++ --hash=sha256:6054abf5c8b61d58776fbec991f9bf0d34bb883862beb93d2fe55601ef3977c9 \ ++ --hash=sha256:624d8ea4a8c6d5e8d168eedf0e318d736fb22e83ca83137d001ac65ffdec46fd + # via + # -r requirements_ci.in + # tox-gh +@@ -429,25 +509,37 @@ typing-extensions==4.15.0 \ + --hash=sha256:0cea48d173cc12fa28ecabc3b837ea3cf6f38c6d1136f85cbaaf598984861466 \ + --hash=sha256:f0fa19c6845758ab08074a0cfa8b7aecb71c999ca73d62883bc25cc018c4e548 + # via ++ # anyio + # astroid + # exceptiongroup + # pydantic + # pydantic-core ++ # rich-click + # tox + # typing-inspection + # virtualenv + typing-inspection==0.4.2 \ + --hash=sha256:4ed1cacbdc298c220f1bd249ed5287caa16f34d44ef4e9c3d0cbad5b521545e7 \ + --hash=sha256:ba561c48a67c5958007083d386c3295464928b01faa735ab8547c5692e87f464 +- # via pydantic +-urllib3==2.6.3 \ +- --hash=sha256:1b62b6884944a57dbe321509ab94fd4d3b307075e0c2eae991ac71ee15ad38ed \ +- --hash=sha256:bf272323e553dfb2e87d9bfd225ca7b0f467b919d7bbd355436d3fd37cb0acd4 ++ # via ++ # pydantic ++ # pydantic-settings ++urllib3==2.7.0 \ ++ --hash=sha256:231e0ec3b63ceb14667c67be60f2f2c40a518cb38b03af60abc813da26505f4c \ ++ --hash=sha256:9fb4c81ebbb1ce9531cce37674bbc6f1360472bc18ca9a553ede278ef7276897 + # via requests + virtualenv==21.2.0 \ + --hash=sha256:1720dc3a62ef5b443092e3f499228599045d7fea4c79199770499df8becf9098 \ + --hash=sha256:1bd755b504931164a5a496d217c014d098426cddc79363ad66ac78125f9d908f + # via tox ++wcmatch==10.1 \ ++ --hash=sha256:5848ace7dbb0476e5e55ab63c6bbd529745089343427caa5537f230cc01beb8a \ ++ --hash=sha256:f11f94208c8c8484a16f4f48638a85d771d9513f4ab3f37595978801cb9465af ++ # via bump-my-version ++wcwidth==0.6.0 \ ++ --hash=sha256:1a3a1e510b553315f8e146c54764f4fb6264ffad731b3d78088cdb1478ffbdad \ ++ --hash=sha256:cdc4e4262d6ef9a1a57e018384cbeb1208d8abbc64176027e2c2455c81313159 ++ # via prompt-toolkit + + # WARNING: The following packages were not pinned, but pip requires them to be + # pinned when the requirements file includes hashes and the requirement is not diff --git a/.github/workflows/auto-accept-ci-changes.yml.rej b/.github/workflows/auto-accept-ci-changes.yml.rej new file mode 100644 index 00000000..b18c5a4f --- /dev/null +++ b/.github/workflows/auto-accept-ci-changes.yml.rej @@ -0,0 +1,10 @@ +diff a/.github/workflows/auto-accept-ci-changes.yml b/.github/workflows/auto-accept-ci-changes.yml (rejected hunks) +@@ -23,7 +23,7 @@ jobs: + pull-requests: write + steps: + - name: Harden Runner +- uses: step-security/harden-runner@20cf305ff2072d973412fa9b1e3a4f227bda3c76 # v2.14.0 ++ uses: step-security/harden-runner@9af89fc71515a100421586dfdb3dc9c984fbf411 # v2.19.4 + with: + disable-sudo: true + egress-policy: audit diff --git a/.github/workflows/bump-version.yml.rej b/.github/workflows/bump-version.yml.rej new file mode 100644 index 00000000..e3532071 --- /dev/null +++ b/.github/workflows/bump-version.yml.rej @@ -0,0 +1,43 @@ +diff a/.github/workflows/bump-version.yml b/.github/workflows/bump-version.yml (rejected hunks) +@@ -46,14 +46,13 @@ jobs: + runs-on: ubuntu-latest + environment: automation + permissions: +- actions: read + contents: write + strategy: + matrix: + python-version: [ "3.13" ] + steps: + - name: Harden Runner +- uses: step-security/harden-runner@0634a2670c59f64b4a01f0f96f84700a4088b9f0 # v2.12.0 ++ uses: step-security/harden-runner@9af89fc71515a100421586dfdb3dc9c984fbf411 # v2.19.4 + with: + disable-sudo: true + egress-policy: block +@@ -63,13 +62,13 @@ jobs: + pypi.org:443 + + - name: Checkout Repository (no persist-credentials) +- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 ++ uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 + with: + persist-credentials: false + fetch-depth: 0 + +- - name: Set up Python3 +- uses: actions/setup-python@a26af69be951a213d495a4c3e4e4022e16d87065 # v5.6.0 ++ - name: Set up Python${{ matrix.python-version }} ++ uses: actions/setup-python@ece7cb06caefa5fff74198d8649806c4678c61a1 # v6.3.0 + with: + python-version: ${{ matrix.python-version }} + +@@ -80,7 +79,7 @@ jobs: + + - name: Install CI libraries + run: | +- python -m pip install --require-hashes -r CI/requirements_ci.txt ++ python -m pip install --require-hashes -r .github/requirements_ci.txt + + - name: Conditional Bump Version + run: | diff --git a/.github/workflows/cache-cleaner.yml.rej b/.github/workflows/cache-cleaner.yml.rej new file mode 100644 index 00000000..a0210ebb --- /dev/null +++ b/.github/workflows/cache-cleaner.yml.rej @@ -0,0 +1,19 @@ +diff a/.github/workflows/cache-cleaner.yml b/.github/workflows/cache-cleaner.yml (rejected hunks) +@@ -16,7 +16,7 @@ jobs: + actions: write + steps: + - name: Harden Runner +- uses: step-security/harden-runner@0634a2670c59f64b4a01f0f96f84700a4088b9f0 # v2.12.0 ++ uses: step-security/harden-runner@9af89fc71515a100421586dfdb3dc9c984fbf411 # v2.19.4 + with: + disable-sudo: true + egress-policy: block +@@ -27,7 +27,7 @@ jobs: + release-assets.githubusercontent.com:443 + + - name: Checkout Repository +- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 ++ uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 + with: + persist-credentials: false + diff --git a/.github/workflows/codeql.yml.rej b/.github/workflows/codeql.yml.rej new file mode 100644 index 00000000..bba6bf55 --- /dev/null +++ b/.github/workflows/codeql.yml.rej @@ -0,0 +1,17 @@ +diff a/.github/workflows/codeql.yml b/.github/workflows/codeql.yml (rejected hunks) +@@ -53,13 +53,13 @@ jobs: + # your codebase is analyzed, see https://docs.github.com/en/code-security/code-scanning/creating-an-advanced-setup-for-code-scanning/codeql-code-scanning-for-compiled-languages + steps: + - name: Harden Runner +- uses: step-security/harden-runner@0634a2670c59f64b4a01f0f96f84700a4088b9f0 # v2.12.0 ++ uses: step-security/harden-runner@9af89fc71515a100421586dfdb3dc9c984fbf411 # v2.19.4 + with: + disable-sudo: true + egress-policy: audit + + - name: Checkout Repository +- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 ++ uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 + with: + persist-credentials: false + diff --git a/.github/workflows/dependency-review.yml.rej b/.github/workflows/dependency-review.yml.rej new file mode 100644 index 00000000..aa03e4dd --- /dev/null +++ b/.github/workflows/dependency-review.yml.rej @@ -0,0 +1,22 @@ +diff a/.github/workflows/dependency-review.yml b/.github/workflows/dependency-review.yml (rejected hunks) +@@ -17,7 +17,7 @@ jobs: + runs-on: ubuntu-latest + steps: + - name: Harden Runner +- uses: step-security/harden-runner@0634a2670c59f64b4a01f0f96f84700a4088b9f0 # v2.12.0 ++ uses: step-security/harden-runner@9af89fc71515a100421586dfdb3dc9c984fbf411 # v2.19.4 + with: + disable-sudo: true + egress-policy: block +@@ -27,9 +27,9 @@ jobs: + github.com:443 + + - name: Checkout Repository +- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 ++ uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 + with: + persist-credentials: false + + - name: Dependency Review +- uses: actions/dependency-review-action@3b139cfc5fae8b618d3eae3675e383bb1769c019 # v4.5.0 ++ uses: actions/dependency-review-action@a1d282b36b6f3519aa1f3fc636f609c47dddb294 # v5.0.0 diff --git a/.github/workflows/first-pull-request.yml.rej b/.github/workflows/first-pull-request.yml.rej new file mode 100644 index 00000000..d86bcddb --- /dev/null +++ b/.github/workflows/first-pull-request.yml.rej @@ -0,0 +1,26 @@ +diff a/.github/workflows/first-pull-request.yml b/.github/workflows/first-pull-request.yml (rejected hunks) +@@ -16,7 +16,7 @@ jobs: + pull-requests: write + steps: + - name: Harden Runner +- uses: step-security/harden-runner@0634a2670c59f64b4a01f0f96f84700a4088b9f0 # v2.12.0 ++ uses: step-security/harden-runner@9af89fc71515a100421586dfdb3dc9c984fbf411 # v2.19.4 + with: + disable-sudo: true + egress-policy: block +@@ -24,7 +24,7 @@ jobs: + api.github.com:443 + + - name: Verify Pull Request Opener +- uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea # v7.0.1 ++ uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0 + with: + script: | + // Get a list of all issues created by the PR opener +@@ -56,5 +56,5 @@ jobs: + It appears that this is your first Pull Request. To give credit where it's due, we ask that you add your information to the \`AUTHORS.rst\` and \`.zenodo.json\`: + - [ ] The relevant author information has been added to \`AUTHORS.rst\` and \`.zenodo.json\`. + +- Please make sure you've read our [contributing guide](https://github.com/glamod/Common-Data-Model-reader-and-mapper/blob/main/CONTRIBUTING.rst). We look forward to reviewing your Pull Request shortly ✨` ++ Please make sure you've read our [contributing guide](https://github.com/glamod/cdm_reader_mapper/blob/main/CONTRIBUTING.rst). We look forward to reviewing your Pull Request shortly ✨` + }) diff --git a/.github/workflows/label.yml.rej b/.github/workflows/label.yml.rej new file mode 100644 index 00000000..9c34c2ac --- /dev/null +++ b/.github/workflows/label.yml.rej @@ -0,0 +1,10 @@ +diff a/.github/workflows/label.yml b/.github/workflows/label.yml (rejected hunks) +@@ -23,7 +23,7 @@ jobs: + pull-requests: write + steps: + - name: Harden Runner +- uses: step-security/harden-runner@0634a2670c59f64b4a01f0f96f84700a4088b9f0 # v2.12.0 ++ uses: step-security/harden-runner@9af89fc71515a100421586dfdb3dc9c984fbf411 # v2.19.4 + with: + disable-sudo: true + egress-policy: block diff --git a/.github/workflows/publish-pypi.yml.rej b/.github/workflows/publish-pypi.yml.rej new file mode 100644 index 00000000..db9e92ca --- /dev/null +++ b/.github/workflows/publish-pypi.yml.rej @@ -0,0 +1,37 @@ +diff a/.github/workflows/publish-pypi.yml b/.github/workflows/publish-pypi.yml (rejected hunks) +@@ -21,30 +21,24 @@ jobs: + python-version: [ "3.13" ] + steps: + - name: Harden Runner +- uses: step-security/harden-runner@0634a2670c59f64b4a01f0f96f84700a4088b9f0 # v2.12.0 ++ uses: step-security/harden-runner@9af89fc71515a100421586dfdb3dc9c984fbf411 # v2.19.4 + with: + disable-sudo: true +- egress-policy: block +- allowed-endpoints: > +- files.pythonhosted.org:443 +- github.com:443 +- pypi.org:443 +- ruf-repo-cdn.sigstore.dev:443 +- upload.pypi.org:443 ++ egress-policy: audit + + - name: Checkout Repository +- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 ++ uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 + with: + persist-credentials: false + + - name: Set up Python${{ matrix.python-version }} +- uses: actions/setup-python@a26af69be951a213d495a4c3e4e4022e16d87065 # v5.6.0 ++ uses: actions/setup-python@ece7cb06caefa5fff74198d8649806c4678c61a1 # v6.3.0 + with: + python-version: ${{ matrix.python-version }} + + - name: Install CI libraries + run: | +- python -m pip install --require-hashes -r CI/requirements_ci.txt ++ python -m pip install --require-hashes -r .github/requirements_ci.txt + + - name: Build a binary wheel and a source tarball + run: | diff --git a/.github/workflows/scorecard.yml.rej b/.github/workflows/scorecard.yml.rej new file mode 100644 index 00000000..c7422322 --- /dev/null +++ b/.github/workflows/scorecard.yml.rej @@ -0,0 +1,19 @@ +diff a/.github/workflows/scorecard.yml b/.github/workflows/scorecard.yml (rejected hunks) +@@ -34,7 +34,7 @@ jobs: + id-token: write + steps: + - name: Harden Runner +- uses: step-security/harden-runner@0634a2670c59f64b4a01f0f96f84700a4088b9f0 # v2.12.0 ++ uses: step-security/harden-runner@9af89fc71515a100421586dfdb3dc9c984fbf411 # v2.19.4 + with: + disable-sudo: true + egress-policy: block +@@ -52,7 +52,7 @@ jobs: + www.bestpractices.dev:443 + + - name: Checkout Repository +- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 ++ uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 + with: + persist-credentials: false + diff --git a/.github/workflows/tag-testpypi.yml.rej b/.github/workflows/tag-testpypi.yml.rej new file mode 100644 index 00000000..97540e80 --- /dev/null +++ b/.github/workflows/tag-testpypi.yml.rej @@ -0,0 +1,55 @@ +diff a/.github/workflows/tag-testpypi.yml b/.github/workflows/tag-testpypi.yml (rejected hunks) +@@ -17,7 +17,7 @@ jobs: + contents: write + steps: + - name: Harden Runner +- uses: step-security/harden-runner@0634a2670c59f64b4a01f0f96f84700a4088b9f0 # v2.12.0 ++ uses: step-security/harden-runner@9af89fc71515a100421586dfdb3dc9c984fbf411 # v2.19.4 + with: + egress-policy: block + allowed-endpoints: > +@@ -27,7 +27,7 @@ jobs: + test.pypi.org:443 + + - name: Checkout Repository +- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 ++ uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 + with: + persist-credentials: false + +@@ -53,30 +53,24 @@ jobs: + python-version: [ "3.13" ] + steps: + - name: Harden Runner +- uses: step-security/harden-runner@0634a2670c59f64b4a01f0f96f84700a4088b9f0 # v2.12.0 ++ uses: step-security/harden-runner@9af89fc71515a100421586dfdb3dc9c984fbf411 # v2.19.4 + with: + disable-sudo: true +- egress-policy: block +- allowed-endpoints: > +- files.pythonhosted.org:443 +- github.com:443 +- pypi.org:443 +- ruf-repo-cdn.sigstore.dev:443 +- test.pypi.org:443 ++ egress-policy: audit + + - name: Checkout Repository +- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 ++ uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 + with: + persist-credentials: false + + - name: Set up Python${{ matrix.python-version }} +- uses: actions/setup-python@a26af69be951a213d495a4c3e4e4022e16d87065 # v5.6.0 ++ uses: actions/setup-python@ece7cb06caefa5fff74198d8649806c4678c61a1 # v6.3.0 + with: + python-version: ${{ matrix.python-version }} + + - name: Install CI libraries + run: | +- python -m pip install --require-hashes -r CI/requirements_ci.txt ++ python -m pip install --require-hashes -r .github/requirements_ci.txt + + - name: Build a binary wheel and a source tarball + run: | diff --git a/.github/workflows/workflow-warning.yml.rej b/.github/workflows/workflow-warning.yml.rej new file mode 100644 index 00000000..509336d3 --- /dev/null +++ b/.github/workflows/workflow-warning.yml.rej @@ -0,0 +1,125 @@ +diff a/.github/workflows/workflow-warning.yml b/.github/workflows/workflow-warning.yml (rejected hunks) +@@ -15,77 +15,78 @@ on: + permissions: + contents: read + ++concurrency: ++ group: workflow-warning-${{ github.event.pull_request.number }} ++ cancel-in-progress: true ++ + jobs: + comment-concerning-workflow-changes: + name: Comment Concerning Workflow Changes + runs-on: ubuntu-latest +- if: | +- (github.event.pull_request.head.repo.full_name != github.event.pull_request.base.repo.full_name) ++ if: github.event.pull_request.head.repo.full_name != github.event.pull_request.base.repo.full_name + permissions: + pull-requests: write + steps: + - name: Harden Runner +- uses: step-security/harden-runner@0634a2670c59f64b4a01f0f96f84700a4088b9f0 # v2.12.0 ++ uses: step-security/harden-runner@9af89fc71515a100421586dfdb3dc9c984fbf411 # v2.19.4 + with: + disable-sudo: true + egress-policy: block + allowed-endpoints: > + api.github.com:443 + +- - name: Manage Warning / Note Comments ++ - name: Create or Update Warning Comment + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} +- APPROVED: ${{ contains(github.event.pull_request.labels.*.name, 'approved') }} +- PR_NUMBER: ${{ github.event.pull_request.number }} + REPO: ${{ github.repository }} ++ PR_NUMBER: ${{ github.event.pull_request.number }} + run: | +- WARNING_TEXT="This Pull Request modifies GitHub workflows and is coming from a fork." +- NOTE_TEXT="Workflow changes in this Pull Request have been approved!" ++ set -euo pipefail + +- # Fetch existing comments +- COMMENTS=$(gh api repos/$REPO/issues/$PR_NUMBER/comments) ++ MARKER="" + +- # Find warning comment ID +- WARNING_COMMENT_ID=$(echo "$COMMENTS" | jq -r \ +- '.[] | select(.user.login=="github-actions[bot]") | select(.body | contains("'"$WARNING_TEXT"'")) | .id' | head -n 1) ++ BODY=$(cat < [!WARNING] ++ > This pull request modifies GitHub Actions workflows and originates from a fork. ++ > ++ > Review the workflow changes carefully before approving or merging. ++ EOF ++ ) + +- if [ "$APPROVED" = "true" ]; then +- BODY="> [!NOTE] +- > Workflow changes in this Pull Request have been approved!" ++ COMMENTS=$(gh api repos/$REPO/issues/$PR_NUMBER/comments) + +- if [ -n "$NOTE_COMMENT_ID" ] && [ "$NOTE_COMMENT_ID" != "null" ]; then +- # Append to existing note comment +- EXISTING=$(gh api repos/$REPO/issues/comments/$NOTE_COMMENT_ID --jq .body) +- gh api \ +- --method PATCH \ +- repos/$REPO/issues/comments/$NOTE_COMMENT_ID \ +- -f body="$EXISTING ++ mapfile -t IDS < <( ++ echo "$COMMENTS" | ++ jq -r ' ++ .[] ++ | select(.body | contains("")) ++ | .id ++ ' ++ ) ++ ++ COMMENT_ID="" + +- $BODY" +- else +- # Create new note comment +- gh pr comment "$PR_NUMBER" --body "$BODY" +- fi ++ if [ "${#IDS[@]}" -gt 0 ]; then ++ COMMENT_ID="${IDS[0]}" + +- # Add reaction (hooray) +- if [ -n "$NOTE_COMMENT_ID" ] && [ "$NOTE_COMMENT_ID" != "null" ]; then ++ # Remove duplicate managed comments if they exist. ++ for id in "${IDS[@]:1}"; do + gh api \ +- --method POST \ +- repos/$REPO/issues/comments/$NOTE_COMMENT_ID/reactions \ +- -f content='hooray' \ +- -H "Accept: application/vnd.github+json" +- fi ++ --method DELETE \ ++ repos/$REPO/issues/comments/$id ++ done ++ fi + ++ if [ -n "$COMMENT_ID" ]; then ++ gh api \ ++ --method PATCH \ ++ repos/$REPO/issues/comments/$COMMENT_ID \ ++ -f body="$BODY" + else +- BODY="> [!WARNING] +- > This Pull Request modifies GitHub Workflows and is coming from a fork. +- **It is very important for the reviewer to ensure that the workflow changes are appropriate.**" +- +- if [ -z "$WARNING_COMMENT_ID" ] || [ "$WARNING_COMMENT_ID" = "null" ]; then +- gh pr comment "$PR_NUMBER" --body "$BODY" +- fi ++ gh api \ ++ --method POST \ ++ repos/$REPO/issues/$PR_NUMBER/comments \ ++ -f body="$BODY" + fi diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index a4f578b5..e9ea3c7a 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -85,7 +85,7 @@ repos: - id: check-github-workflows - id: check-readthedocs - repo: https://github.com/woodruffw/zizmor-pre-commit - rev: v1.23.1 + rev: v1.24.1 hooks: - id: zizmor args: [ '--config=.zizmor.yml' ] diff --git a/AGENTS.md b/AGENTS.md new file mode 100644 index 00000000..c8b512ea --- /dev/null +++ b/AGENTS.md @@ -0,0 +1,35 @@ +# Agents + +Rules for AI coding agents working in this repository. + +## General + +- Follow existing code conventions and patterns +- Do not modify files outside the scope of the current task +- Prefer editing existing files over creating new ones +- Do not add dependencies without explicit approval +- Keep changes atomic -- one concern per commit +- Ask for clarification when requirements are ambiguous +- Do not generate PR descriptions or review comments on others' code + +## Setup + +> Add your project's setup commands here (npm install, go build, make, etc.) + +## Testing + +Write tests for new functionality. Run the full suite before submitting. + +## Commits + +- Use clear, descriptive commit messages +- One logical change per commit +- Reference relevant issues when applicable +- Include `Assisted-by: ` trailer on AI-assisted commits + +## Review + +Changes touching more than one module or any security-relevant code require human review. Minor fixes and doc updates follow the standard process. + +--- +*Generated by [aipolicy.1mb.dev](https://aipolicy.1mb.dev) · v1.0* diff --git a/AI_POLICY.md b/AI_POLICY.md new file mode 100644 index 00000000..d3a1000f --- /dev/null +++ b/AI_POLICY.md @@ -0,0 +1,59 @@ +# AI Policy + +## Accountability + +You are responsible for every line of code you submit, regardless of how it was produced. If you use AI tools, review and verify all output before committing. + +## AI Tool Usage + +AI tools are permitted. Standard review process applies to all contributions. + +## AI-Generated Code + +AI-generated code must be reviewed by a human maintainer before merging. Keep changes atomic -- you must be able to explain any line on request. + +## Disclosure + +Mark AI involvement in commit messages with a trailer: + +```text +Assisted-by: +``` + +Code changes from less sophisticated phrase-completion tools do not require an AI disclosure. + +## Prohibited Uses + +- Submitting AI output you have not read and understood +- Using AI to generate code that circumvents tests or CI checks +- Feeding reviewer feedback back into AI without understanding it first +- Using AI to respond to reviewer feedback +- AI-generated PR descriptions -- describe your own work +- AI-generated reviews on other contributors' PRs + +## AI in CI/CD + +AI tools may be used in CI/CD pipelines for code analysis, test generation, and deployment. + +## Training Data + +This project requests that its code not be used for AI model training. We ask that AI tool providers honor this preference. + +## Low Effort Contributions + +AI-generated low-effort contributions are unacceptable; Human and AI contributors must be capable of explaining their changes, responding to review comments, and precisely adapting their contributions as requested. + +## Licensing + +AI-generated contributions must be compatible with this project's license. Contributors must be able to certify their submissions under the project's contribution terms. + +## Enforcement + +Maintainers may close AI-generated PRs that do not meet these standards without detailed feedback. + +## Policy Evolution + +This policy will evolve as tooling and conventions change. Contributions to the policy itself are welcome. + +--- +*Generated by [aipolicy.1mb.dev](https://aipolicy.1mb.dev) · v1.0* diff --git a/CITATION.cff.rej b/CITATION.cff.rej new file mode 100644 index 00000000..1ba6c510 --- /dev/null +++ b/CITATION.cff.rej @@ -0,0 +1,10 @@ +diff a/CITATION.cff b/CITATION.cff (rejected hunks) +@@ -17,7 +17,7 @@ contact: + family-names: 'Lierhammer' + email: 'ludwig.lierhammer@dwd.de' + orcid: "https://orcid.org/0000-0002-7207-0003" +-repository-code: "https://github.com/glamod/Common-Data-Model-reader-and-mapper" ++repository-code: "https://github.com/glamod/cdm_reader_mapper" + abstract: "This Python package is designed for reading data files compliant with a user specified data model, for mapping observed variables and its associated metadata from a data model or models combination to the C3S CDS Common Data Model (CDM) format, and for detecting and flagging or removing duplicated observations. It was developed to read the IMMA (International Maritime Meteorological Archive) data format, but it has been enhanced to account for meteorological data formats in the case of data that is stored in a human-readable manner (ASCII format), data that is stored in a Network Common Data Format (NetCDF format), data that is organized in single line reports, reports that have a coherent internal structure and can be modelised, reports that have a fixed width or field delimited types, and reports that can be organized in sections, in which case each section can be of different types (fixed width of delimited)" + license: "Apache-2.0" + version: "2.4.1" diff --git a/CONTRIBUTING.rst b/CONTRIBUTING.rst index 563d1950..e95cd042 100644 --- a/CONTRIBUTING.rst +++ b/CONTRIBUTING.rst @@ -191,7 +191,7 @@ Before you submit a pull request, check that it meets these guidelines: #. The pull request should work for all currently supported Python versions. Check the `pyproject.toml` or `tox.ini` files for the list of supported versions. -#. If you haven't already, ensure that you have read and agreed to the `Developer Certificate of Origin (DCO) `_, and that you have signed your commits using: +#. If you haven't already, ensure that you have read and agreed to the `Developer Certificate of Origin (DCO) `_, and that you have signed off on your commits using: .. code-block:: bash @@ -199,6 +199,75 @@ Before you submit a pull request, check that it meets these guidelines: This will add a `Signed-off-by:` line to your commit message, which indicates that you agree to the DCO. +AI Assistance Notice +-------------------- + +.. note:: + + The following information has been adapted from AI assistance usage policies developed by `Avocado `_ and `ghostty `_ + with suggestions from software developers and maintainers at Ouranos Inc. + +What is AI Assistance ? +~~~~~~~~~~~~~~~~~~~~~~~ + +Within the context of Common Data Model reader and mapper development, AI assistance constitutess any code, code snippets, configurations, documentation, or other programmatic assets produced, suggested, or significantly modified by an artificial intelligence model, tool, or service. + +AI assistance can also include code that is heavily adapted from or influenced by outputs from prompts made to generative artificial intelligence models, tools, or services. + +Usage Disclosure +~~~~~~~~~~~~~~~~ + +If you are using any kind of AI assistance while contributing to Common Data Model reader and mapper, **this must be disclosed in the pull request**, along with the extent to which AI assistance was used (e.g. documentation, code generation, review comments). +Using AI to help draft responses is allowed only if the contributor meaningfully reviews, edits, and takes full responsibility for the content. +Submitting AI-generated replies without human verification or understanding is not permitted. +Misrepresenting AI-generated content as purely human-authored is considered a violation of the contribution guidelines. + +Some example disclosures: + +.. admonition:: Pull Request Description + + ### Other information: + + * This PR was primarily written using a combination of OpenClaw (Kimi K2.5) and ChatGPT (GPT-o4-mini). After using these tools, I reviewed the content. + + + + * This PR was primarily written by me with small code snippets copy-pasted from chats with Claude (Sonnet 4.6). + + + + * I asked GitHub Copilot to clean up and improve code I had written. I then reviewed the final product. + +As a small exception, trivial tab-completion doesn't need to be disclosed, so long as it is limited to single keywords or short phrases. + +For commits originating exclusively from AI, we also ask that their commits are signed with "Assisted-by: " disclosure (this demand is repeated in `AGENTS.md`): + +.. admonition:: Commit Message + + Added new method that implements the ReallyCoolNewFeature algorithm. + + Assisted-by: Claude Opus 4.5 + +Failing to disclose the use of artificial intelligence models, tools, or services is disrespectful to the developers and maintainers of open source software projects. +We ask that contributors are forthcoming with this information so that the effort and scrutiny applied to Pull Request reviews can be adjusted accordingly. + +Code Review +~~~~~~~~~~~ + +All AI-assisted code contributions should be reviewed by the contributor before opening a Pull Request, except for minor or marginal changes, which may not require that step. +All contributions should still be reviewed by at least one human reviewer before approval and merging into the `main` branch. + +Low Effort Contributions +~~~~~~~~~~~~~~~~~~~~~~~~ + +AI-generated low-effort contributions are unacceptable; Human contributors must be capable of explaining their changes, responding to review comments, and precisely adapting their contributions as requested. + +Disclaimer +~~~~~~~~~~ + +The Common Data Model reader and mapper maintainers reserve the right to reject Pull Requests and contributions for many different reasons (functionality out-of-scope, code quality issues, non-adherence to code of conduct, etc.) +and this extends to code that has not been adequately disclosed as being assisted by artificial intelligence models, tools, or services. + Tips ---- diff --git a/CONTRIBUTING.rst.rej b/CONTRIBUTING.rst.rej new file mode 100644 index 00000000..ddac894c --- /dev/null +++ b/CONTRIBUTING.rst.rej @@ -0,0 +1,26 @@ +diff a/CONTRIBUTING.rst b/CONTRIBUTING.rst (rejected hunks) +@@ -12,7 +12,7 @@ Types of Contributions + Report Bugs + ~~~~~~~~~~~ + +-Report bugs at https://github.com/glamod/Common-Data-Model-reader-and-mapper/issues. ++Report bugs at https://github.com/glamod/cdm_reader_mapper/issues. + + If you are reporting a bug, please include: + +@@ -38,7 +38,7 @@ Common Data Model reader and mapper could always use more documentation, whether + Submit Feedback + ~~~~~~~~~~~~~~~ + +-The best way to send feedback is to file an issue at https://github.com/glamod/Common-Data-Model-reader-and-mapper/issues. ++The best way to send feedback is to file an issue at https://github.com/glamod/cdm_reader_mapper/issues. + + If you are proposing a feature: + +@@ -230,5 +299,5 @@ This will create or update the French translation files in the `docs/locales/fr/ + Code of Conduct + --------------- + +-Please note that this project is released with a `Contributor Code of Conduct `_. ++Please note that this project is released with a `Contributor Code of Conduct `_. + By participating in this project you agree to abide by its terms. diff --git a/Makefile.rej b/Makefile.rej new file mode 100644 index 00000000..6ee470d2 --- /dev/null +++ b/Makefile.rej @@ -0,0 +1,10 @@ +diff a/Makefile b/Makefile (rejected hunks) +@@ -100,7 +100,7 @@ ifndef READTHEDOCS + endif + + servedocs: autodoc ## compile the docs while watching for changes +- watchmedo shell-command -p '*.rst' -c '$(MAKE) -C docs html' -R -D . ++ $(MAKE) -C docs livehtml + + dist: clean ## builds source and wheel package + python -m flit build diff --git a/README.rst.rej b/README.rst.rej new file mode 100644 index 00000000..f6ae379d --- /dev/null +++ b/README.rst.rej @@ -0,0 +1,21 @@ +diff a/README.rst b/README.rst (rejected hunks) +@@ -32,8 +32,8 @@ This package was created with Cookiecutter_ and the `Ouranosinc/cookiecutter-pyp + .. _Cookiecutter: https://github.com/cookiecutter/cookiecutter + .. _`Ouranosinc/cookiecutter-pypackage`: https://github.com/Ouranosinc/cookiecutter-pypackage + +-.. |build| image:: https://github.com/glamod/Common-Data-Model-reader-and-mapper/actions/workflows/main.yml/badge.svg +- :target: https://github.com/glamod/Common-Data-Model-reader-and-mapper/actions ++.. |build| image:: https://github.com/glamod/cdm_reader_mapper/actions/workflows/main.yml/badge.svg ++ :target: https://github.com/glamod/cdm_reader_mapper/actions + :alt: Build Status + + .. |coveralls| image:: https://coveralls.io/repos/github/glamod/Common-Data-Model-reader-and-mapper/badge.svg +@@ -45,7 +45,7 @@ This package was created with Cookiecutter_ and the `Ouranosinc/cookiecutter-pyp + :alt: Documentation Status + + .. |license| image:: https://img.shields.io/github/license/glamod/Common-Data-Model-reader-and-mapper.svg +- :target: https://github.com/glamod/Common-Data-Model-reader-and-mapper/blob/main/LICENSE ++ :target: https://github.com/glamod/cdm_reader_mapper/blob/main/LICENSE + :alt: License + + .. diff --git a/docs/Makefile b/docs/Makefile index ceff7df3..7c277a38 100755 --- a/docs/Makefile +++ b/docs/Makefile @@ -19,3 +19,6 @@ help: # "make mode" option. $(O) is meant as a shortcut for $(SPHINXOPTS). %: Makefile @$(SPHINXBUILD) -M $@ "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O) + +livehtml: + sphinx-autobuild --port 54345 --open-browser --delay 3 --re-ignore "$(BUILDDIR)|apidoc|Makefile|__pycache__" "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O) diff --git a/docs/conf.py.rej b/docs/conf.py.rej new file mode 100644 index 00000000..65b51fec --- /dev/null +++ b/docs/conf.py.rej @@ -0,0 +1,12 @@ +diff a/docs/conf.py b/docs/conf.py (rejected hunks) +@@ -55,8 +55,8 @@ autodoc_default_options = { + } + + extlinks = { +- "issue": ("https://github.com/glamod/Common-Data-Model-reader-and-mapper/issues/%s", "GH/%s"), +- "pull": ("https://github.com/glamod/Common-Data-Model-reader-and-mapper/pull/%s", "PR/%s"), ++ "issue": ("https://github.com/glamod/cdm_reader_mapper/issues/%s", "GH/%s"), ++ "pull": ("https://github.com/glamod/cdm_reader_mapper/pull/%s", "PR/%s"), + "user": ("https://github.com/%s", "@%s"), + } + diff --git a/docs/index.rst.rej b/docs/index.rst.rej new file mode 100644 index 00000000..dd3d2fa4 --- /dev/null +++ b/docs/index.rst.rej @@ -0,0 +1,32 @@ +diff a/docs/index.rst b/docs/index.rst (rejected hunks) +@@ -1,9 +1,20 @@ + Welcome to Common Data Model reader and mapper's documentation! + =============================================================== + ++**Common Data Model reader and mapper**: This Python package is designed for reading data files compliant with a user specified data model, for mapping observed variables and its associated metadata from a data model or models combination to the C3S CDS Common Data Model (CDM) format, and for detecting and flagging or removing duplicated observations. It was developed to read the IMMA (International Maritime Meteorological Archive) data format, but it has been enhanced to account for meteorological data formats in the case of data that is stored in a human-readable manner (ASCII format), data that is stored in a Network Common Data Format (NetCDF format), data that is organized in single line reports, reports that have a coherent internal structure and can be modelised, reports that have a fixed width or field delimited types, and reports that can be organized in sections, in which case each section can be of different types (fixed width of delimited) ++ ++Need help? ++^^^^^^^^^^ ++ ++* If you encounter any errors or problems with `Common Data Model reader and mapper`, please let us know! Open an issue at the `GitHub main repository `_. ++* To be aware of changes in `Common Data Model reader and mapper`, feel free to “watch” the GitHub repository. You can customize the watch function to notify you of new releases or more. ++ ++Navigation ++========== ++ + .. toctree:: + :maxdepth: 2 +- :caption: Contents: ++ :caption: Table of Contents + + readme + installation +@@ -22,7 +33,7 @@ Welcome to Common Data Model reader and mapper's documentation! + .. toctree:: + :caption: GitHub Repository + +- glamod/Common-Data-Model-reader-and-mapper ++ glamod/Common-Data-Model-reader-and-mapper + + Indices and tables + ================== diff --git a/docs/releasing.rst b/docs/releasing.rst index d8139b12..ca56a8ed 100755 --- a/docs/releasing.rst +++ b/docs/releasing.rst @@ -11,6 +11,13 @@ A reminder for the **maintainers** on how to deploy. This section is only releva It is important to be aware that any changes to files found within the ``src/cdm_reader_mapper`` folder (with the exception of ``src/cdm_reader_mapper/__init__.py``) will trigger the ``bump-version.yml`` workflow. Be careful not to commit changes to files in this folder when preparing a new release. +.. note:: + + Before beginning, it is a good idea to practice `commit signing`_ at the very least for _tags_ and _releases_. This is a method of cryptographically signing your work to ensure that packages can verifiably be traced to a known and trusted developer. + Once a GPG key has been `created`_ and `added`_ to your GitHub profile, you can enable GPG signing for all commits by launching `$ git config --local/--global commit.gpgsign true` within a shell running in your local clone (or anywhere if `--global`). + +For creating tags and releases, we **strongly recommend** enabling the "release immutability" option in the repository settings. This prevents _tags_ and _releases_ from being modified of GitHub after they have been published. + #. Create a new branch from `main` (e.g. `release-0.2.0`). #. Update the `CHANGELOG.rst` file to change the `Unreleased` section to the current date. #. Bump the version in your branch to the next version (e.g. `v0.1.0 -> v0.2.0`): @@ -26,16 +33,20 @@ A reminder for the **maintainers** on how to deploy. This section is only releva .. code-block:: console - git tag v0.2.0 + git tag -s/--sign "v0.2.0" -m "Release v0.2.0" git push --tags This will trigger a GitHub workflow to build the package and upload it to TestPyPI. At the same time, the GitHub workflow will create a draft release on GitHub. Assuming that the workflow passes, the final release can then be published on GitHub by finalizing the draft release. -#. Once the release is published, the `publish-pypi.yml` workflow will go into an `awaiting approval` mode on Github Actions. Only authorized users may approve this workflow (notifications will be sent) to trigger the upload to PyPI. +#. Once the release is **published**, the `publish-pypi.yml` workflow will go into an `awaiting approval` mode on Github Actions. Only authorized users may approve this workflow (notifications will be sent) to trigger the upload to PyPI. .. warning:: - Uploads to PyPI can **never** be overwritten. If you make a mistake, you will need to bump the version and re-release the package. If the package uploaded to PyPI is broken, you should modify the GitHub release to mark the package as broken, as well as yank the package (mark the version "broken") on PyPI. + Uploads to PyPI (and releases on GitHub if using release immutability) can **never** be overwritten. If you make a mistake, you will need to bump the version and re-release the package. If the package uploaded to GitHub and PyPI is broken, you should modify the GitHub release to mark the package as broken, as well as yank the package (mark the version "broken") on PyPI. + +.. _`commit signing`: https://git-scm.com/book/en/v2/Git-Tools-Signing-Your-Work +.. _created: https://docs.github.com/en/authentication/managing-commit-signature-verification/generating-a-new-gpg-key +.. _added: https://docs.github.com/en/authentication/managing-commit-signature-verification/adding-a-gpg-key-to-your-github-account Packaging --------- diff --git a/environment-docs.yml.rej b/environment-docs.yml.rej new file mode 100644 index 00000000..1e5c66d9 --- /dev/null +++ b/environment-docs.yml.rej @@ -0,0 +1,9 @@ +diff a/environment-docs.yml b/environment-docs.yml (rejected hunks) +@@ -7,6 +7,7 @@ dependencies: + # Docs + - click >=8.3.1 + - sphinx >=8.2 ++ - sphinx-autobuild >=2024.4.16 + - sphinx-click + - sphinx-codeautolink >=0.16.2 + - sphinx-copybutton >=0.5.2 diff --git a/pyproject.toml.rej b/pyproject.toml.rej new file mode 100644 index 00000000..a2f5be2c --- /dev/null +++ b/pyproject.toml.rej @@ -0,0 +1,169 @@ +diff a/pyproject.toml b/pyproject.toml (rejected hunks) +@@ -2,6 +2,53 @@ + requires = ["flit_core >=3.12.0,<4"] + build-backend = "flit_core.buildapi" + ++[project] ++name = "cdm_reader_mapper" ++authors = [ ++ {name = "Ludwig Lierhammer", email = "ludwig.lierhammer@dwd.de"} ++] ++maintainers = [ ++ {name = "Ludwig Lierhammer", email = "ludwig.lierhammer@dwd.de"} ++] ++readme = {file = "README.rst", content-type = "text/x-rst"} ++requires-python = ">=3.10.0" ++keywords = ["Common Data Model reader and mapper"] ++license = "Apache-2.0" ++license-files = ["LICENSE"] ++classifiers = [ ++ "Development Status :: 2 - Pre-Alpha", ++ "Intended Audience :: Developers", ++ "Natural Language :: English", ++ "Operating System :: OS Independent", ++ "Programming Language :: Python :: 3", ++ "Programming Language :: Python :: 3 :: Only", ++ "Programming Language :: Python :: 3.10", ++ "Programming Language :: Python :: 3.11", ++ "Programming Language :: Python :: 3.12", ++ "Programming Language :: Python :: 3.13", ++ "Programming Language :: Python :: 3.14", ++ "Programming Language :: Python :: Implementation :: CPython", ++ "Typing :: Typed" ++] ++dynamic = ["description", "version"] ++dependencies = [ ++ "click >=8.3.1" ++ ++] ++ ++[project.optional-dependencies] ++extras = [] ++ ++[project.scripts] ++cdm_reader_mapper = "cdm_reader_mapper.cli:app" ++ ++[project.urls] ++# "Homepage" = "https://Common-Data-Model-reader-and-mapper.readthedocs.io/" ++# "Changelog" = "https://Common-Data-Model-reader-and-mapper.readthedocs.io/en/stable/changelog.html" ++# "About Ouranos" = "https://ouranos.ca/en/" ++"Issue tracker" = "https://github.com/glamod/cdm_reader_mapper/issues" ++"Source" = "https://github.com/glamod/cdm_reader_mapper" ++ + [dependency-groups] + lint = [ + # Linting tools +@@ -29,6 +76,7 @@ docs = [ + "jupyter_client", + "nbsphinx >=0.9.8", + "sphinx >=8.2.0", ++ "sphinx-autobuild >=2024.4.16", + "sphinx-click", + "sphinx-codeautolink >=0.16.2", + "sphinx-copybutton >=0.5.2", +@@ -50,53 +98,6 @@ dev = [ + {include-group = "tox"} + ] + +-[project] +-name = "cdm_reader_mapper" +-authors = [ +- {name = "Ludwig Lierhammer", email = "ludwig.lierhammer@dwd.de"} +-] +-maintainers = [ +- {name = "Ludwig Lierhammer", email = "ludwig.lierhammer@dwd.de"} +-] +-readme = {file = "README.rst", content-type = "text/x-rst"} +-requires-python = ">=3.10.0" +-keywords = ["Common Data Model reader and mapper"] +-license = "Apache-2.0" +-license-files = ["LICENSE"] +-classifiers = [ +- "Development Status :: 2 - Pre-Alpha", +- "Intended Audience :: Developers", +- "Natural Language :: English", +- "Operating System :: OS Independent", +- "Programming Language :: Python :: 3", +- "Programming Language :: Python :: 3 :: Only", +- "Programming Language :: Python :: 3.10", +- "Programming Language :: Python :: 3.11", +- "Programming Language :: Python :: 3.12", +- "Programming Language :: Python :: 3.13", +- "Programming Language :: Python :: 3.14", +- "Programming Language :: Python :: Implementation :: CPython", +- "Typing :: Typed" +-] +-dynamic = ["description", "version"] +-dependencies = [ +- "click >=8.3.1" +- +-] +- +-[project.optional-dependencies] +-extras = [] +- +-[project.scripts] +-cdm_reader_mapper = "cdm_reader_mapper.cli:app" +- +-[project.urls] +-# "Homepage" = "https://Common-Data-Model-reader-and-mapper.readthedocs.io/" +-# "Changelog" = "https://Common-Data-Model-reader-and-mapper.readthedocs.io/en/stable/changelog.html" +-# "About Ouranos" = "https://ouranos.ca/en/" +-"Issue tracker" = "https://github.com/glamod/Common-Data-Model-reader-and-mapper/issues" +-"Source" = "https://github.com/glamod/Common-Data-Model-reader-and-mapper" +- + [tool] + + [tool.bumpversion] +@@ -187,18 +188,19 @@ include = [ + ".zenodo.json", + "AUTHORS.rst", + "CHANGELOG.rst", ++ "CITATION.cff", ++ "CODE_OF_CONDUCT.md", + "CONTRIBUTING.rst", + "LICENSE", + "Makefile", + "README.rst", + "environment-docs.yml", +- "docs/_static/_images/*.gif", +- "docs/_static/_images/*.jpg", +- "docs/_static/_images/*.png", +- "docs/_static/_images/*.rst", +- "docs/Makefile", ++ "docs/_static/*", ++ "docs/*.rst", + "docs/conf.py", + "docs/make.bat", ++ "docs/Makefile", ++ "pyproject.toml", + "src/cdm_reader_mapper", + "tests/*.py", + "tox.toml" +@@ -206,14 +208,15 @@ include = [ + exclude = [ + "*.py[co]", + "__pycache__", +- ".coveralls.yml", + ".editorconfig", + ".flake8", ++ ".github", + ".gitignore", + ".pre-commit-config.yaml", + ".readthedocs.yml", + ".yamllint.yaml", + ".zizmor.yml", ++ "CI/requirements_ci.*", + "docs/_*", + "docs/apidoc/modules.rst", + "docs/apidoc/cdm_reader_mapper*.rst" +@@ -344,6 +347,9 @@ max-doc-length = 180 + [tool.ruff.lint.pydocstyle] + convention = "numpy" + ++[tool.tomlsort] ++sort_first = ["build-system", "project"] ++ + [tool.vulture] + exclude = [] + ignore_decorators = ["@pytest.fixture"] From 7786988cd6e9424fd0e472e9292d5511ffe3a714 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Fri, 31 Jul 2026 04:47:43 +0000 Subject: [PATCH 2/4] [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --- .github/dependabot.yml.rej | 2 +- .github/requirements_ci.txt.rej | 2 +- .github/workflows/bump-version.yml.rej | 10 +++++----- .github/workflows/cache-cleaner.yml.rej | 4 ++-- .github/workflows/codeql.yml.rej | 4 ++-- .github/workflows/dependency-review.yml.rej | 4 ++-- .github/workflows/first-pull-request.yml.rej | 4 ++-- .github/workflows/publish-pypi.yml.rej | 8 ++++---- .github/workflows/scorecard.yml.rej | 4 ++-- .github/workflows/tag-testpypi.yml.rej | 12 ++++++------ .github/workflows/workflow-warning.yml.rej | 20 ++++++++++---------- CONTRIBUTING.rst.rej | 14 +++++++------- Makefile.rej | 4 ++-- README.rst.rej | 8 ++++---- docs/conf.py.rej | 4 ++-- docs/index.rst.rej | 8 ++++---- pyproject.toml.rej | 12 ++++++------ 17 files changed, 62 insertions(+), 62 deletions(-) diff --git a/.github/dependabot.yml.rej b/.github/dependabot.yml.rej index a7fb1ce1..2d57d291 100644 --- a/.github/dependabot.yml.rej +++ b/.github/dependabot.yml.rej @@ -1,7 +1,7 @@ diff a/.github/dependabot.yml b/.github/dependabot.yml (rejected hunks) @@ -19,7 +19,7 @@ updates: default-days: 7 - + - package-ecosystem: pip - directory: /CI + directory: /.github diff --git a/.github/requirements_ci.txt.rej b/.github/requirements_ci.txt.rej index 1e6bc407..247defdc 100644 --- a/.github/requirements_ci.txt.rej +++ b/.github/requirements_ci.txt.rej @@ -230,6 +230,6 @@ diff a/.github/requirements_ci.txt b/.github/requirements_ci.txt (rejected hunks + --hash=sha256:1a3a1e510b553315f8e146c54764f4fb6264ffad731b3d78088cdb1478ffbdad \ + --hash=sha256:cdc4e4262d6ef9a1a57e018384cbeb1208d8abbc64176027e2c2455c81313159 + # via prompt-toolkit - + # WARNING: The following packages were not pinned, but pip requires them to be # pinned when the requirements file includes hashes and the requirement is not diff --git a/.github/workflows/bump-version.yml.rej b/.github/workflows/bump-version.yml.rej index e3532071..7d750981 100644 --- a/.github/workflows/bump-version.yml.rej +++ b/.github/workflows/bump-version.yml.rej @@ -17,27 +17,27 @@ diff a/.github/workflows/bump-version.yml b/.github/workflows/bump-version.yml ( egress-policy: block @@ -63,13 +62,13 @@ jobs: pypi.org:443 - + - name: Checkout Repository (no persist-credentials) - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 + uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 with: persist-credentials: false fetch-depth: 0 - + - - name: Set up Python3 - uses: actions/setup-python@a26af69be951a213d495a4c3e4e4022e16d87065 # v5.6.0 + - name: Set up Python${{ matrix.python-version }} + uses: actions/setup-python@ece7cb06caefa5fff74198d8649806c4678c61a1 # v6.3.0 with: python-version: ${{ matrix.python-version }} - + @@ -80,7 +79,7 @@ jobs: - + - name: Install CI libraries run: | - python -m pip install --require-hashes -r CI/requirements_ci.txt + python -m pip install --require-hashes -r .github/requirements_ci.txt - + - name: Conditional Bump Version run: | diff --git a/.github/workflows/cache-cleaner.yml.rej b/.github/workflows/cache-cleaner.yml.rej index a0210ebb..70f3cdfa 100644 --- a/.github/workflows/cache-cleaner.yml.rej +++ b/.github/workflows/cache-cleaner.yml.rej @@ -10,10 +10,10 @@ diff a/.github/workflows/cache-cleaner.yml b/.github/workflows/cache-cleaner.yml egress-policy: block @@ -27,7 +27,7 @@ jobs: release-assets.githubusercontent.com:443 - + - name: Checkout Repository - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 + uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 with: persist-credentials: false - + diff --git a/.github/workflows/codeql.yml.rej b/.github/workflows/codeql.yml.rej index bba6bf55..8b0053ad 100644 --- a/.github/workflows/codeql.yml.rej +++ b/.github/workflows/codeql.yml.rej @@ -8,10 +8,10 @@ diff a/.github/workflows/codeql.yml b/.github/workflows/codeql.yml (rejected hun with: disable-sudo: true egress-policy: audit - + - name: Checkout Repository - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 + uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 with: persist-credentials: false - + diff --git a/.github/workflows/dependency-review.yml.rej b/.github/workflows/dependency-review.yml.rej index aa03e4dd..9d4e4cda 100644 --- a/.github/workflows/dependency-review.yml.rej +++ b/.github/workflows/dependency-review.yml.rej @@ -10,13 +10,13 @@ diff a/.github/workflows/dependency-review.yml b/.github/workflows/dependency-re egress-policy: block @@ -27,9 +27,9 @@ jobs: github.com:443 - + - name: Checkout Repository - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 + uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 with: persist-credentials: false - + - name: Dependency Review - uses: actions/dependency-review-action@3b139cfc5fae8b618d3eae3675e383bb1769c019 # v4.5.0 + uses: actions/dependency-review-action@a1d282b36b6f3519aa1f3fc636f609c47dddb294 # v5.0.0 diff --git a/.github/workflows/first-pull-request.yml.rej b/.github/workflows/first-pull-request.yml.rej index d86bcddb..511a4504 100644 --- a/.github/workflows/first-pull-request.yml.rej +++ b/.github/workflows/first-pull-request.yml.rej @@ -10,7 +10,7 @@ diff a/.github/workflows/first-pull-request.yml b/.github/workflows/first-pull-r egress-policy: block @@ -24,7 +24,7 @@ jobs: api.github.com:443 - + - name: Verify Pull Request Opener - uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea # v7.0.1 + uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0 @@ -20,7 +20,7 @@ diff a/.github/workflows/first-pull-request.yml b/.github/workflows/first-pull-r @@ -56,5 +56,5 @@ jobs: It appears that this is your first Pull Request. To give credit where it's due, we ask that you add your information to the \`AUTHORS.rst\` and \`.zenodo.json\`: - [ ] The relevant author information has been added to \`AUTHORS.rst\` and \`.zenodo.json\`. - + - Please make sure you've read our [contributing guide](https://github.com/glamod/Common-Data-Model-reader-and-mapper/blob/main/CONTRIBUTING.rst). We look forward to reviewing your Pull Request shortly ✨` + Please make sure you've read our [contributing guide](https://github.com/glamod/cdm_reader_mapper/blob/main/CONTRIBUTING.rst). We look forward to reviewing your Pull Request shortly ✨` }) diff --git a/.github/workflows/publish-pypi.yml.rej b/.github/workflows/publish-pypi.yml.rej index db9e92ca..a0b69346 100644 --- a/.github/workflows/publish-pypi.yml.rej +++ b/.github/workflows/publish-pypi.yml.rej @@ -15,23 +15,23 @@ diff a/.github/workflows/publish-pypi.yml b/.github/workflows/publish-pypi.yml ( - ruf-repo-cdn.sigstore.dev:443 - upload.pypi.org:443 + egress-policy: audit - + - name: Checkout Repository - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 + uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 with: persist-credentials: false - + - name: Set up Python${{ matrix.python-version }} - uses: actions/setup-python@a26af69be951a213d495a4c3e4e4022e16d87065 # v5.6.0 + uses: actions/setup-python@ece7cb06caefa5fff74198d8649806c4678c61a1 # v6.3.0 with: python-version: ${{ matrix.python-version }} - + - name: Install CI libraries run: | - python -m pip install --require-hashes -r CI/requirements_ci.txt + python -m pip install --require-hashes -r .github/requirements_ci.txt - + - name: Build a binary wheel and a source tarball run: | diff --git a/.github/workflows/scorecard.yml.rej b/.github/workflows/scorecard.yml.rej index c7422322..2e80fa8d 100644 --- a/.github/workflows/scorecard.yml.rej +++ b/.github/workflows/scorecard.yml.rej @@ -10,10 +10,10 @@ diff a/.github/workflows/scorecard.yml b/.github/workflows/scorecard.yml (reject egress-policy: block @@ -52,7 +52,7 @@ jobs: www.bestpractices.dev:443 - + - name: Checkout Repository - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 + uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 with: persist-credentials: false - + diff --git a/.github/workflows/tag-testpypi.yml.rej b/.github/workflows/tag-testpypi.yml.rej index 97540e80..2127530d 100644 --- a/.github/workflows/tag-testpypi.yml.rej +++ b/.github/workflows/tag-testpypi.yml.rej @@ -10,13 +10,13 @@ diff a/.github/workflows/tag-testpypi.yml b/.github/workflows/tag-testpypi.yml ( allowed-endpoints: > @@ -27,7 +27,7 @@ jobs: test.pypi.org:443 - + - name: Checkout Repository - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 + uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 with: persist-credentials: false - + @@ -53,30 +53,24 @@ jobs: python-version: [ "3.13" ] steps: @@ -33,23 +33,23 @@ diff a/.github/workflows/tag-testpypi.yml b/.github/workflows/tag-testpypi.yml ( - ruf-repo-cdn.sigstore.dev:443 - test.pypi.org:443 + egress-policy: audit - + - name: Checkout Repository - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 + uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 with: persist-credentials: false - + - name: Set up Python${{ matrix.python-version }} - uses: actions/setup-python@a26af69be951a213d495a4c3e4e4022e16d87065 # v5.6.0 + uses: actions/setup-python@ece7cb06caefa5fff74198d8649806c4678c61a1 # v6.3.0 with: python-version: ${{ matrix.python-version }} - + - name: Install CI libraries run: | - python -m pip install --require-hashes -r CI/requirements_ci.txt + python -m pip install --require-hashes -r .github/requirements_ci.txt - + - name: Build a binary wheel and a source tarball run: | diff --git a/.github/workflows/workflow-warning.yml.rej b/.github/workflows/workflow-warning.yml.rej index 509336d3..556af8ea 100644 --- a/.github/workflows/workflow-warning.yml.rej +++ b/.github/workflows/workflow-warning.yml.rej @@ -2,7 +2,7 @@ diff a/.github/workflows/workflow-warning.yml b/.github/workflows/workflow-warni @@ -15,77 +15,78 @@ on: permissions: contents: read - + +concurrency: + group: workflow-warning-${{ github.event.pull_request.number }} + cancel-in-progress: true @@ -25,7 +25,7 @@ diff a/.github/workflows/workflow-warning.yml b/.github/workflows/workflow-warni egress-policy: block allowed-endpoints: > api.github.com:443 - + - - name: Manage Warning / Note Comments + - name: Create or Update Warning Comment env: @@ -38,17 +38,17 @@ diff a/.github/workflows/workflow-warning.yml b/.github/workflows/workflow-warni - WARNING_TEXT="This Pull Request modifies GitHub workflows and is coming from a fork." - NOTE_TEXT="Workflow changes in this Pull Request have been approved!" + set -euo pipefail - + - # Fetch existing comments - COMMENTS=$(gh api repos/$REPO/issues/$PR_NUMBER/comments) + MARKER="" - + - # Find warning comment ID - WARNING_COMMENT_ID=$(echo "$COMMENTS" | jq -r \ - '.[] | select(.user.login=="github-actions[bot]") | select(.body | contains("'"$WARNING_TEXT"'")) | .id' | head -n 1) + BODY=$(cat < Review the workflow changes carefully before approving or merging. + EOF + ) - + - if [ "$APPROVED" = "true" ]; then - BODY="> [!NOTE] - > Workflow changes in this Pull Request have been approved!" + COMMENTS=$(gh api repos/$REPO/issues/$PR_NUMBER/comments) - + - if [ -n "$NOTE_COMMENT_ID" ] && [ "$NOTE_COMMENT_ID" != "null" ]; then - # Append to existing note comment - EXISTING=$(gh api repos/$REPO/issues/comments/$NOTE_COMMENT_ID --jq .body) @@ -81,7 +81,7 @@ diff a/.github/workflows/workflow-warning.yml b/.github/workflows/workflow-warni + ) + + COMMENT_ID="" - + - $BODY" - else - # Create new note comment @@ -89,7 +89,7 @@ diff a/.github/workflows/workflow-warning.yml b/.github/workflows/workflow-warni - fi + if [ "${#IDS[@]}" -gt 0 ]; then + COMMENT_ID="${IDS[0]}" - + - # Add reaction (hooray) - if [ -n "$NOTE_COMMENT_ID" ] && [ "$NOTE_COMMENT_ID" != "null" ]; then + # Remove duplicate managed comments if they exist. @@ -104,7 +104,7 @@ diff a/.github/workflows/workflow-warning.yml b/.github/workflows/workflow-warni + repos/$REPO/issues/comments/$id + done + fi - + + if [ -n "$COMMENT_ID" ]; then + gh api \ + --method PATCH \ diff --git a/CONTRIBUTING.rst.rej b/CONTRIBUTING.rst.rej index ddac894c..895055fd 100644 --- a/CONTRIBUTING.rst.rej +++ b/CONTRIBUTING.rst.rej @@ -2,25 +2,25 @@ diff a/CONTRIBUTING.rst b/CONTRIBUTING.rst (rejected hunks) @@ -12,7 +12,7 @@ Types of Contributions Report Bugs ~~~~~~~~~~~ - + -Report bugs at https://github.com/glamod/Common-Data-Model-reader-and-mapper/issues. +Report bugs at https://github.com/glamod/cdm_reader_mapper/issues. - + If you are reporting a bug, please include: - + @@ -38,7 +38,7 @@ Common Data Model reader and mapper could always use more documentation, whether Submit Feedback ~~~~~~~~~~~~~~~ - + -The best way to send feedback is to file an issue at https://github.com/glamod/Common-Data-Model-reader-and-mapper/issues. +The best way to send feedback is to file an issue at https://github.com/glamod/cdm_reader_mapper/issues. - + If you are proposing a feature: - + @@ -230,5 +299,5 @@ This will create or update the French translation files in the `docs/locales/fr/ Code of Conduct --------------- - + -Please note that this project is released with a `Contributor Code of Conduct `_. +Please note that this project is released with a `Contributor Code of Conduct `_. By participating in this project you agree to abide by its terms. diff --git a/Makefile.rej b/Makefile.rej index 6ee470d2..461226eb 100644 --- a/Makefile.rej +++ b/Makefile.rej @@ -1,10 +1,10 @@ diff a/Makefile b/Makefile (rejected hunks) @@ -100,7 +100,7 @@ ifndef READTHEDOCS endif - + servedocs: autodoc ## compile the docs while watching for changes - watchmedo shell-command -p '*.rst' -c '$(MAKE) -C docs html' -R -D . + $(MAKE) -C docs livehtml - + dist: clean ## builds source and wheel package python -m flit build diff --git a/README.rst.rej b/README.rst.rej index f6ae379d..0af21963 100644 --- a/README.rst.rej +++ b/README.rst.rej @@ -2,20 +2,20 @@ diff a/README.rst b/README.rst (rejected hunks) @@ -32,8 +32,8 @@ This package was created with Cookiecutter_ and the `Ouranosinc/cookiecutter-pyp .. _Cookiecutter: https://github.com/cookiecutter/cookiecutter .. _`Ouranosinc/cookiecutter-pypackage`: https://github.com/Ouranosinc/cookiecutter-pypackage - + -.. |build| image:: https://github.com/glamod/Common-Data-Model-reader-and-mapper/actions/workflows/main.yml/badge.svg - :target: https://github.com/glamod/Common-Data-Model-reader-and-mapper/actions +.. |build| image:: https://github.com/glamod/cdm_reader_mapper/actions/workflows/main.yml/badge.svg + :target: https://github.com/glamod/cdm_reader_mapper/actions :alt: Build Status - + .. |coveralls| image:: https://coveralls.io/repos/github/glamod/Common-Data-Model-reader-and-mapper/badge.svg @@ -45,7 +45,7 @@ This package was created with Cookiecutter_ and the `Ouranosinc/cookiecutter-pyp :alt: Documentation Status - + .. |license| image:: https://img.shields.io/github/license/glamod/Common-Data-Model-reader-and-mapper.svg - :target: https://github.com/glamod/Common-Data-Model-reader-and-mapper/blob/main/LICENSE + :target: https://github.com/glamod/cdm_reader_mapper/blob/main/LICENSE :alt: License - + .. diff --git a/docs/conf.py.rej b/docs/conf.py.rej index 65b51fec..54098692 100644 --- a/docs/conf.py.rej +++ b/docs/conf.py.rej @@ -1,7 +1,7 @@ diff a/docs/conf.py b/docs/conf.py (rejected hunks) @@ -55,8 +55,8 @@ autodoc_default_options = { } - + extlinks = { - "issue": ("https://github.com/glamod/Common-Data-Model-reader-and-mapper/issues/%s", "GH/%s"), - "pull": ("https://github.com/glamod/Common-Data-Model-reader-and-mapper/pull/%s", "PR/%s"), @@ -9,4 +9,4 @@ diff a/docs/conf.py b/docs/conf.py (rejected hunks) + "pull": ("https://github.com/glamod/cdm_reader_mapper/pull/%s", "PR/%s"), "user": ("https://github.com/%s", "@%s"), } - + diff --git a/docs/index.rst.rej b/docs/index.rst.rej index dd3d2fa4..ccc2a3c0 100644 --- a/docs/index.rst.rej +++ b/docs/index.rst.rej @@ -2,7 +2,7 @@ diff a/docs/index.rst b/docs/index.rst (rejected hunks) @@ -1,9 +1,20 @@ Welcome to Common Data Model reader and mapper's documentation! =============================================================== - + +**Common Data Model reader and mapper**: This Python package is designed for reading data files compliant with a user specified data model, for mapping observed variables and its associated metadata from a data model or models combination to the C3S CDS Common Data Model (CDM) format, and for detecting and flagging or removing duplicated observations. It was developed to read the IMMA (International Maritime Meteorological Archive) data format, but it has been enhanced to account for meteorological data formats in the case of data that is stored in a human-readable manner (ASCII format), data that is stored in a Network Common Data Format (NetCDF format), data that is organized in single line reports, reports that have a coherent internal structure and can be modelised, reports that have a fixed width or field delimited types, and reports that can be organized in sections, in which case each section can be of different types (fixed width of delimited) + +Need help? @@ -18,15 +18,15 @@ diff a/docs/index.rst b/docs/index.rst (rejected hunks) :maxdepth: 2 - :caption: Contents: + :caption: Table of Contents - + readme installation @@ -22,7 +33,7 @@ Welcome to Common Data Model reader and mapper's documentation! .. toctree:: :caption: GitHub Repository - + - glamod/Common-Data-Model-reader-and-mapper + glamod/Common-Data-Model-reader-and-mapper - + Indices and tables ================== diff --git a/pyproject.toml.rej b/pyproject.toml.rej index a2f5be2c..950c5573 100644 --- a/pyproject.toml.rej +++ b/pyproject.toml.rej @@ -2,7 +2,7 @@ diff a/pyproject.toml b/pyproject.toml (rejected hunks) @@ -2,6 +2,53 @@ requires = ["flit_core >=3.12.0,<4"] build-backend = "flit_core.buildapi" - + +[project] +name = "cdm_reader_mapper" +authors = [ @@ -34,7 +34,7 @@ diff a/pyproject.toml b/pyproject.toml (rejected hunks) +dynamic = ["description", "version"] +dependencies = [ + "click >=8.3.1" -+ ++ +] + +[project.optional-dependencies] @@ -64,7 +64,7 @@ diff a/pyproject.toml b/pyproject.toml (rejected hunks) @@ -50,53 +98,6 @@ dev = [ {include-group = "tox"} ] - + -[project] -name = "cdm_reader_mapper" -authors = [ @@ -96,7 +96,7 @@ diff a/pyproject.toml b/pyproject.toml (rejected hunks) -dynamic = ["description", "version"] -dependencies = [ - "click >=8.3.1" -- +- -] - -[project.optional-dependencies] @@ -113,7 +113,7 @@ diff a/pyproject.toml b/pyproject.toml (rejected hunks) -"Source" = "https://github.com/glamod/Common-Data-Model-reader-and-mapper" - [tool] - + [tool.bumpversion] @@ -187,18 +188,19 @@ include = [ ".zenodo.json", @@ -160,7 +160,7 @@ diff a/pyproject.toml b/pyproject.toml (rejected hunks) @@ -344,6 +347,9 @@ max-doc-length = 180 [tool.ruff.lint.pydocstyle] convention = "numpy" - + +[tool.tomlsort] +sort_first = ["build-system", "project"] + From 485ac3ac662938f4d6c78028f77034c23e086058 Mon Sep 17 00:00:00 2001 From: Ludwig Lierhammer Date: Fri, 31 Jul 2026 07:42:54 +0200 Subject: [PATCH 3/4] fix rejected files --- .github/dependabot.yml | 2 +- .github/dependabot.yml.rej | 10 - .github/requirements_ci.in.rej | 13 - .github/requirements_ci.txt | 7 +- .github/requirements_ci.txt.rej | 235 ------------------ .../workflows/auto-accept-ci-changes.yml.rej | 10 - .github/workflows/bump-version.yml | 7 +- .github/workflows/bump-version.yml.rej | 43 ---- .github/workflows/cache-cleaner.yml.rej | 19 -- .github/workflows/codeql.yml.rej | 17 -- .github/workflows/dependency-review.yml.rej | 22 -- .github/workflows/first-pull-request.yml | 3 +- .github/workflows/first-pull-request.yml.rej | 26 -- .github/workflows/label.yml.rej | 10 - .github/workflows/publish-pypi.yml | 2 +- .github/workflows/publish-pypi.yml.rej | 37 --- .github/workflows/scorecard.yml.rej | 19 -- .github/workflows/tag-testpypi.yml | 2 +- .github/workflows/tag-testpypi.yml.rej | 55 ---- .github/workflows/workflow-warning.yml | 92 +++---- .github/workflows/workflow-warning.yml.rej | 125 ---------- AGENTS.md | 33 ++- AI_POLICY.md | 6 +- CITATION.cff.rej | 10 - CONTRIBUTING.rst.rej | 26 -- Makefile | 2 +- Makefile.rej | 10 - README.rst.rej | 21 -- docs/conf.py.rej | 12 - docs/index.rst | 2 +- docs/index.rst.rej | 32 --- environment-docs.yml | 5 +- environment-docs.yml.rej | 9 - pyproject.toml | 123 +++++---- pyproject.toml.rej | 169 ------------- 35 files changed, 163 insertions(+), 1053 deletions(-) delete mode 100644 .github/dependabot.yml.rej delete mode 100644 .github/requirements_ci.in.rej delete mode 100644 .github/requirements_ci.txt.rej delete mode 100644 .github/workflows/auto-accept-ci-changes.yml.rej delete mode 100644 .github/workflows/bump-version.yml.rej delete mode 100644 .github/workflows/cache-cleaner.yml.rej delete mode 100644 .github/workflows/codeql.yml.rej delete mode 100644 .github/workflows/dependency-review.yml.rej delete mode 100644 .github/workflows/first-pull-request.yml.rej delete mode 100644 .github/workflows/label.yml.rej delete mode 100644 .github/workflows/publish-pypi.yml.rej delete mode 100644 .github/workflows/scorecard.yml.rej delete mode 100644 .github/workflows/tag-testpypi.yml.rej delete mode 100644 .github/workflows/workflow-warning.yml.rej delete mode 100644 CITATION.cff.rej delete mode 100644 CONTRIBUTING.rst.rej delete mode 100644 Makefile.rej delete mode 100644 README.rst.rej delete mode 100644 docs/conf.py.rej delete mode 100644 docs/index.rst.rej delete mode 100644 environment-docs.yml.rej delete mode 100644 pyproject.toml.rej diff --git a/.github/dependabot.yml b/.github/dependabot.yml index 6780251a..cf504a8d 100644 --- a/.github/dependabot.yml +++ b/.github/dependabot.yml @@ -20,7 +20,7 @@ updates: default-days: 7 - package-ecosystem: pip - directory: /CI + directory: /.github schedule: interval: daily time: '12:00' diff --git a/.github/dependabot.yml.rej b/.github/dependabot.yml.rej deleted file mode 100644 index 2d57d291..00000000 --- a/.github/dependabot.yml.rej +++ /dev/null @@ -1,10 +0,0 @@ -diff a/.github/dependabot.yml b/.github/dependabot.yml (rejected hunks) -@@ -19,7 +19,7 @@ updates: - default-days: 7 - - - package-ecosystem: pip -- directory: /CI -+ directory: /.github - schedule: - interval: "quarterly" - groups: diff --git a/.github/requirements_ci.in.rej b/.github/requirements_ci.in.rej deleted file mode 100644 index 8dfeca4a..00000000 --- a/.github/requirements_ci.in.rej +++ /dev/null @@ -1,13 +0,0 @@ -diff a/.github/requirements_ci.in b/.github/requirements_ci.in (rejected hunks) -@@ -1,8 +1,9 @@ -+bump-my-version==1.3.0 - deptry==0.24.0 - exceptiongroup==1.3.1 - flit==3.12.0 --pip==26.0.1 -+pip==26.1.2 - pydantic==2.12.5 - pylint==4.0.1 - tox-gh==1.7.1 --tox==4.49.1 -+tox==4.52.0 diff --git a/.github/requirements_ci.txt b/.github/requirements_ci.txt index e5cccd64..b6c938ab 100644 --- a/.github/requirements_ci.txt +++ b/.github/requirements_ci.txt @@ -601,12 +601,7 @@ tomli==2.4.1 \ --hash=sha256:fd0409a3653af6c147209d267a0e4243f0ae46b011aa978b1080359fddc9b6cf \ --hash=sha256:ff18e6a727ee0ab0388507b89d1bc6a22b138d1e2fa56d1ad494586d61d2eae9 \ --hash=sha256:ff2983983d34813c1aeb0fa89091e76c3a22889ee83ab27c5eeb45100560c049 - # via - # -r requirements_ci.in - # deptry - # pylint - # pyproject-api - # tox + # via requests tomli-w==1.2.0 \ --hash=sha256:188306098d013b691fcadc011abd66727d3c414c571bb01b1a174ba8c983cf90 \ --hash=sha256:2dd14fac5a47c27be9cd4c976af5a12d87fb1f0b4512f81d69cce3b35ae25021 diff --git a/.github/requirements_ci.txt.rej b/.github/requirements_ci.txt.rej deleted file mode 100644 index 247defdc..00000000 --- a/.github/requirements_ci.txt.rej +++ /dev/null @@ -1,235 +0,0 @@ -diff a/.github/requirements_ci.txt b/.github/requirements_ci.txt (rejected hunks) -@@ -2,16 +2,28 @@ - # This file is autogenerated by pip-compile with Python 3.10 - # by the following command: - # --# pip-compile --generate-hashes --output-file=CI/requirements_ci.txt CI/requirements_ci.in -+# pip-compile --generate-hashes --output-file=.github/requirements_ci.txt CI/requirements_ci.in - # - annotated-types==0.7.0 \ - --hash=sha256:1f02e8b43a8fbbc3f3e0d4f0f4bfc8131bcb4eebe8849b8e5c773f3a1c582a53 \ - --hash=sha256:aff07c09a53a08bc8cfccb9c85b05f1aa9a2a6f23728d790723543408344ce89 - # via pydantic -+anyio==4.13.0 \ -+ --hash=sha256:08b310f9e24a9594186fd75b4f73f4a4152069e3853f1ed8bfbf58369f4ad708 \ -+ --hash=sha256:334b70e641fd2221c1505b3890c69882fe4a2df910cba14d97019b90b24439dc -+ # via httpx - astroid==4.0.4 \ - --hash=sha256:52f39653876c7dec3e3afd4c2696920e05c83832b9737afc21928f2d2eb7a753 \ - --hash=sha256:986fed8bcf79fb82c78b18a53352a0b287a73817d6dbcfba3162da36667c49a0 - # via pylint -+bracex==2.6 \ -+ --hash=sha256:0b0049264e7340b3ec782b5cb99beb325f36c3782a32e36e876452fd49a09952 \ -+ --hash=sha256:98f1347cd77e22ee8d967a30ad4e310b233f7754dbf31ff3fceb76145ba47dc7 -+ # via wcmatch -+bump-my-version==1.3.0 \ -+ --hash=sha256:3cdaa54588d2443a29303b77e7539417187952c3d22f87bfdd32c0fe6af2f570 \ -+ --hash=sha256:5780137a8d93378af3839798fcba01c7e6cb28dcc5aa5a7ab4d8507787f1995c -+ # via -r requirements_ci.in - cachetools==7.0.5 \ - --hash=sha256:0cd042c24377200c1dcd225f8b7b12b0ca53cc2c961b43757e774ebe190fd990 \ - --hash=sha256:46bc8ebefbe485407621d0a4264b23c080cedd913921bad7ac3ed2f26c183114 -@@ -115,7 +130,10 @@ charset-normalizer==3.3.2 \ - click==8.1.7 \ - --hash=sha256:ae74fb96c20a0277a1d615f1e4d73c8414f5a98db8b799a7931d1582f3390c28 \ - --hash=sha256:ca9853ad459e787e2192211578cc907e7594e294c7ccc834310722b41b9ca6de -- # via deptry -+ # via -+ # bump-my-version -+ # deptry -+ # rich-click - colorama==0.4.6 \ - --hash=sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44 \ - --hash=sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6 -@@ -153,7 +171,9 @@ docutils==0.20.1 \ - exceptiongroup==1.3.1 \ - --hash=sha256:8b412432c6055b0b7d14c310000ae93352ed6754f70fa8f7c34141f91c4e3219 \ - --hash=sha256:a7a39a3bd276781e98394987d3a5701d0c4edffb633bb7a5144577f82c773598 -- # via -r requirements_ci.in -+ # via -+ # -r requirements_ci.in -+ # anyio - filelock==3.25.2 \ - --hash=sha256:b64ece2b38f4ca29dd3e810287aa8c48182bbecd1ae6e9ae126c9b35f1382694 \ - --hash=sha256:ca8afb0da15f229774c9ad1b455ed96e85a81373065fb10446672f64444ddf70 -@@ -169,18 +189,41 @@ flit-core==3.12.0 \ - --hash=sha256:18f63100d6f94385c6ed57a72073443e1a71a4acb4339491615d0f16d6ff01b2 \ - --hash=sha256:e7a0304069ea895172e3c7bb703292e992c5d1555dd1233ab7b5621b5b69e62c - # via flit --idna==3.7 \ -- --hash=sha256:028ff3aadf0609c1fd278d8ea3089299412a7a8b9bd005dd08b9f8285bcb5cfc \ -- --hash=sha256:82fee1fc78add43492d3a1898bfa6d8a904cc97d8427f683ed8e798d07761aa0 -- # via requests -+h11==0.16.0 \ -+ --hash=sha256:4e35b956cf45792e4caa5885e69fba00bdbc6ffafbfa020300e549b208ee5ff1 \ -+ --hash=sha256:63cf8bbe7522de3bf65932fda1d9c2772064ffb3dae62d55932da54b31cb6c86 -+ # via httpcore -+httpcore==1.0.9 \ -+ --hash=sha256:2d400746a40668fc9dec9810239072b40b4484b640a8c38fd654a024c7a1bf55 \ -+ --hash=sha256:6e34463af53fd2ab5d807f399a9b45ea31c3dfa2276f15a2c3f00afff6e176e8 -+ # via httpx -+httpx==0.28.1 \ -+ --hash=sha256:75e98c5f16b0f35b567856f597f06ff2270a374470a5c2392242528e3e3e42fc \ -+ --hash=sha256:d909fcccc110f8c7faf814ca82a9a4d816bc5a6dbfea25d6591d6985b8ba59ad -+ # via bump-my-version -+idna==3.15 \ -+ --hash=sha256:048adeaf8c2d788c40fee287673ccaa74c24ffd8dcf09ffa555a2fbb59f10ac8 \ -+ --hash=sha256:ca962446ea538f7092a95e057da437618e886f4d349216d2b1e294abfdb65fdc -+ # via -+ # anyio -+ # httpx -+ # requests - isort==6.0.0 \ - --hash=sha256:567954102bb47bb12e0fae62606570faacddd441e45683968c8d1734fb1af892 \ - --hash=sha256:75d9d8a1438a9432a7d7b54f2d3b45cad9a4a0fdba43617d9873379704a8bdf1 - # via pylint -+markdown-it-py==4.0.0 \ -+ --hash=sha256:87327c59b172c5011896038353a81343b6754500a08cd7a4973bb48c6d578147 \ -+ --hash=sha256:cb0a2b4aa34f932c007117b194e945bd74e0ec24133ceb5bac59009cda1cb9f3 -+ # via rich - mccabe==0.7.0 \ - --hash=sha256:348e0240c33b60bbdf4e523192ef919f28cb2c3d7d5c7794f74009290f236325 \ - --hash=sha256:6c2d30ab6be0e4a46919781807b4f0d834ebdd6c6e3dca0bda5a15f863427b6e - # via pylint -+mdurl==0.1.2 \ -+ --hash=sha256:84008a41e51615a49fc9966191ff91509e3c40b939176e643fd50a5c2196b8f8 \ -+ --hash=sha256:bb413d29f5eea38f31dd4754dd7377d4465116fb207585f97bf925588687c1ba -+ # via markdown-it-py - packaging==26.0 \ - --hash=sha256:00243ae351a257117b6a241061796684b084ed1c516a08c48a3f7e147a9d80b4 \ - --hash=sha256:b36f1fef9334a5588b4166f8bcd26a14e521f2b55e6b9de3aaa80d3ff7a37529 -@@ -201,10 +244,17 @@ pluggy==1.6.0 \ - --hash=sha256:7dcc130b76258d33b90f61b658791dede3486c3e6bfb003ee5c9bfb396dd22f3 \ - --hash=sha256:e920276dd6813095e9377c0bc5566d94c932c33b27a3e3945d8389c374dd4746 - # via tox -+prompt-toolkit==3.0.52 \ -+ --hash=sha256:28cde192929c8e7321de85de1ddbe736f1375148b02f2e17edd840042b1be855 \ -+ --hash=sha256:9aac639a3bbd33284347de5ad8d68ecc044b91a762dc39b7c21095fcd6a19955 -+ # via questionary - pydantic==2.12.5 \ - --hash=sha256:4d351024c75c0f085a9febbb665ce8c0c6ec5d30e903bdb6394b7ede26aebb49 \ - --hash=sha256:e561593fccf61e8a20fc46dfc2dfe075b8be7d0188df33f221ad1f0139180f9d -- # via -r requirements_ci.in -+ # via -+ # -r requirements_ci.in -+ # bump-my-version -+ # pydantic-settings - pydantic-core==2.41.5 \ - --hash=sha256:0177272f88ab8312479336e1d777f6b124537d47f2123f89cb37e0accea97f90 \ - --hash=sha256:01a3d0ab748ee531f4ea6c3e48ad9dac84ddba4b0d82291f87248f2f9de8d740 \ -@@ -328,6 +378,14 @@ pydantic-core==2.41.5 \ - --hash=sha256:f41eb9797986d6ebac5e8edff36d5cef9de40def462311b3eb3eeded1431e425 \ - --hash=sha256:f547144f2966e1e16ae626d8ce72b4cfa0caedc7fa28052001c94fb2fcaa1c52 - # via pydantic -+pydantic-settings==2.14.2 \ -+ --hash=sha256:a20c97b37910b6550d5ea50fbcc2d4187defe58cd57070b73863d069419c9440 \ -+ --hash=sha256:c19dd64b19097f1de80184f0cc7b0272a13ae6e170cbf240a3e27e381ed14a5f -+ # via bump-my-version -+pygments==2.20.0 \ -+ --hash=sha256:6757cd03768053ff99f3039c1a36d6c0aa0b263438fcab17520b30a303a82b5f \ -+ --hash=sha256:81a9e26dd42fd28a23a2d169d86d7ac03b46e2f8b59ed4698fb4785f946d0176 -+ # via rich - pylint==4.0.1 \ - --hash=sha256:06db6a1fda3cedbd7aee58f09d241e40e5f14b382fd035ed97be320f11728a84 \ - --hash=sha256:6077ac21d01b7361eae6ed0f38d9024c02732fdc635d9e154d4fe6063af8ac56 -@@ -336,10 +394,20 @@ pyproject-api==1.10.0 \ - --hash=sha256:40c6f2d82eebdc4afee61c773ed208c04c19db4c4a60d97f8d7be3ebc0bbb330 \ - --hash=sha256:8757c41a79c0f4ab71b99abed52b97ecf66bd20b04fa59da43b5840bac105a09 - # via tox --python-discovery==1.1.3 \ -- --hash=sha256:7acca36e818cd88e9b2ba03e045ad7e93e1713e29c6bbfba5d90202310b7baa5 \ -- --hash=sha256:90e795f0121bc84572e737c9aa9966311b9fde44ffb88a5953b3ec9b31c6945e -- # via virtualenv -+python-discovery==1.2.2 \ -+ --hash=sha256:876e9c57139eb757cb5878cbdd9ae5379e5d96266c99ef731119e04fffe533bb \ -+ --hash=sha256:e1ae95d9af875e78f15e19aed0c6137ab1bb49c200f21f5061786490c9585c7a -+ # via -+ # tox -+ # virtualenv -+python-dotenv==1.2.2 \ -+ --hash=sha256:1d8214789a24de455a8b8bd8ae6fe3c6b69a5e3d64aa8a8e5d68e694bbcb285a \ -+ --hash=sha256:2c371a91fbd7ba082c2c1dc1f8bf89ca22564a087c2c287cd9b662adde799cf3 -+ # via pydantic-settings -+questionary==2.1.1 \ -+ --hash=sha256:3d7e980292bb0107abaa79c68dd3eee3c561b83a0f89ae482860b181c8bd412d \ -+ --hash=sha256:a51af13f345f1cdea62347589fbb6df3b290306ab8930713bfae4d475a7d4a59 -+ # via bump-my-version - requests==2.33.0 \ - --hash=sha256:3324635456fa185245e24865e810cecec7b4caf933d7eb133dcde67d48cee69b \ - --hash=sha256:c7ebc5e8b0f21837386ad0e1c8fe8b829fa5f544d8df3b2253bff14ef29d7652 -@@ -348,6 +416,16 @@ requirements-parser==0.11.0 \ - --hash=sha256:35f36dc969d14830bf459803da84f314dc3d17c802592e9e970f63d0359e5920 \ - --hash=sha256:50379eb50311834386c2568263ae5225d7b9d0867fb55cf4ecc93959de2c2684 - # via deptry -+rich==15.0.0 \ -+ --hash=sha256:33bd4ef74232fb73fe9279a257718407f169c09b78a87ad3d296f548e27de0bb \ -+ --hash=sha256:edd07a4824c6b40189fb7ac9bc4c52536e9780fbbfbddf6f1e2502c31b068c36 -+ # via -+ # bump-my-version -+ # rich-click -+rich-click==1.9.7 \ -+ --hash=sha256:022997c1e30731995bdbc8ec2f82819340d42543237f033a003c7b1f843fc5dc \ -+ --hash=sha256:2f99120fca78f536e07b114d3b60333bc4bb2a0969053b1250869bcdc1b5351b -+ # via bump-my-version - tomli==2.4.0 \ - --hash=sha256:0408e3de5ec77cc7f81960c362543cbbd91ef883e3138e81b729fc3eea5b9729 \ - --hash=sha256:0dc56fef0e2c1c470aeac5b6ca8cc7b640bb93e92d9803ddaf9ea03e198f5b0b \ -@@ -410,10 +488,12 @@ tomli-w==1.2.0 \ - tomlkit==0.13.0 \ - --hash=sha256:08ad192699734149f5b97b45f1f18dad7eb1b6d16bc72ad0c2335772650d7b72 \ - --hash=sha256:7075d3042d03b80f603482d69bf0c8f345c2b30e41699fd8883227f89972b264 -- # via pylint --tox==4.49.1 \ -- --hash=sha256:4130d02e1d53648d7107d121ed79f69a27b717817c5e9da521d50319dd261212 \ -- --hash=sha256:6dd2d7d4e4fd5895ce4ea20e258fce0d4b81e914b697d116a5ab0365f8303bad -+ # via -+ # bump-my-version -+ # pylint -+tox==4.52.0 \ -+ --hash=sha256:6054abf5c8b61d58776fbec991f9bf0d34bb883862beb93d2fe55601ef3977c9 \ -+ --hash=sha256:624d8ea4a8c6d5e8d168eedf0e318d736fb22e83ca83137d001ac65ffdec46fd - # via - # -r requirements_ci.in - # tox-gh -@@ -429,25 +509,37 @@ typing-extensions==4.15.0 \ - --hash=sha256:0cea48d173cc12fa28ecabc3b837ea3cf6f38c6d1136f85cbaaf598984861466 \ - --hash=sha256:f0fa19c6845758ab08074a0cfa8b7aecb71c999ca73d62883bc25cc018c4e548 - # via -+ # anyio - # astroid - # exceptiongroup - # pydantic - # pydantic-core -+ # rich-click - # tox - # typing-inspection - # virtualenv - typing-inspection==0.4.2 \ - --hash=sha256:4ed1cacbdc298c220f1bd249ed5287caa16f34d44ef4e9c3d0cbad5b521545e7 \ - --hash=sha256:ba561c48a67c5958007083d386c3295464928b01faa735ab8547c5692e87f464 -- # via pydantic --urllib3==2.6.3 \ -- --hash=sha256:1b62b6884944a57dbe321509ab94fd4d3b307075e0c2eae991ac71ee15ad38ed \ -- --hash=sha256:bf272323e553dfb2e87d9bfd225ca7b0f467b919d7bbd355436d3fd37cb0acd4 -+ # via -+ # pydantic -+ # pydantic-settings -+urllib3==2.7.0 \ -+ --hash=sha256:231e0ec3b63ceb14667c67be60f2f2c40a518cb38b03af60abc813da26505f4c \ -+ --hash=sha256:9fb4c81ebbb1ce9531cce37674bbc6f1360472bc18ca9a553ede278ef7276897 - # via requests - virtualenv==21.2.0 \ - --hash=sha256:1720dc3a62ef5b443092e3f499228599045d7fea4c79199770499df8becf9098 \ - --hash=sha256:1bd755b504931164a5a496d217c014d098426cddc79363ad66ac78125f9d908f - # via tox -+wcmatch==10.1 \ -+ --hash=sha256:5848ace7dbb0476e5e55ab63c6bbd529745089343427caa5537f230cc01beb8a \ -+ --hash=sha256:f11f94208c8c8484a16f4f48638a85d771d9513f4ab3f37595978801cb9465af -+ # via bump-my-version -+wcwidth==0.6.0 \ -+ --hash=sha256:1a3a1e510b553315f8e146c54764f4fb6264ffad731b3d78088cdb1478ffbdad \ -+ --hash=sha256:cdc4e4262d6ef9a1a57e018384cbeb1208d8abbc64176027e2c2455c81313159 -+ # via prompt-toolkit - - # WARNING: The following packages were not pinned, but pip requires them to be - # pinned when the requirements file includes hashes and the requirement is not diff --git a/.github/workflows/auto-accept-ci-changes.yml.rej b/.github/workflows/auto-accept-ci-changes.yml.rej deleted file mode 100644 index b18c5a4f..00000000 --- a/.github/workflows/auto-accept-ci-changes.yml.rej +++ /dev/null @@ -1,10 +0,0 @@ -diff a/.github/workflows/auto-accept-ci-changes.yml b/.github/workflows/auto-accept-ci-changes.yml (rejected hunks) -@@ -23,7 +23,7 @@ jobs: - pull-requests: write - steps: - - name: Harden Runner -- uses: step-security/harden-runner@20cf305ff2072d973412fa9b1e3a4f227bda3c76 # v2.14.0 -+ uses: step-security/harden-runner@9af89fc71515a100421586dfdb3dc9c984fbf411 # v2.19.4 - with: - disable-sudo: true - egress-policy: audit diff --git a/.github/workflows/bump-version.yml b/.github/workflows/bump-version.yml index 677e730c..d43e2a5a 100644 --- a/.github/workflows/bump-version.yml +++ b/.github/workflows/bump-version.yml @@ -14,14 +14,14 @@ on: - .cruft.json - .editorconfig - .github/**.yml + - .github/*.in + - .github/*.txt - .gitignore - .pre-commit-config.yaml - .yamllint.yaml - .zenodo.json - AUTHORS.rst - CHANGELOG.rst - - CI/**/*.in - - CI/**/*.txt - CITATION.cff - CODE_OF_CONDUCT.md - CONTRIBUTING.rst @@ -45,7 +45,6 @@ jobs: runs-on: ubuntu-latest environment: automation permissions: - actions: read contents: write strategy: matrix: @@ -76,7 +75,7 @@ jobs: git config --local user.name "bumpversion[bot]" - name: Install CI libraries run: | - python -m pip install --require-hashes -r CI/requirements_ci.txt + python -m pip install --require-hashes -r .github/requirements_ci.txt - name: Conditional Bump Version run: | CURRENT_VERSION=$(bump-my-version show current_version) diff --git a/.github/workflows/bump-version.yml.rej b/.github/workflows/bump-version.yml.rej deleted file mode 100644 index 7d750981..00000000 --- a/.github/workflows/bump-version.yml.rej +++ /dev/null @@ -1,43 +0,0 @@ -diff a/.github/workflows/bump-version.yml b/.github/workflows/bump-version.yml (rejected hunks) -@@ -46,14 +46,13 @@ jobs: - runs-on: ubuntu-latest - environment: automation - permissions: -- actions: read - contents: write - strategy: - matrix: - python-version: [ "3.13" ] - steps: - - name: Harden Runner -- uses: step-security/harden-runner@0634a2670c59f64b4a01f0f96f84700a4088b9f0 # v2.12.0 -+ uses: step-security/harden-runner@9af89fc71515a100421586dfdb3dc9c984fbf411 # v2.19.4 - with: - disable-sudo: true - egress-policy: block -@@ -63,13 +62,13 @@ jobs: - pypi.org:443 - - - name: Checkout Repository (no persist-credentials) -- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 -+ uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 - with: - persist-credentials: false - fetch-depth: 0 - -- - name: Set up Python3 -- uses: actions/setup-python@a26af69be951a213d495a4c3e4e4022e16d87065 # v5.6.0 -+ - name: Set up Python${{ matrix.python-version }} -+ uses: actions/setup-python@ece7cb06caefa5fff74198d8649806c4678c61a1 # v6.3.0 - with: - python-version: ${{ matrix.python-version }} - -@@ -80,7 +79,7 @@ jobs: - - - name: Install CI libraries - run: | -- python -m pip install --require-hashes -r CI/requirements_ci.txt -+ python -m pip install --require-hashes -r .github/requirements_ci.txt - - - name: Conditional Bump Version - run: | diff --git a/.github/workflows/cache-cleaner.yml.rej b/.github/workflows/cache-cleaner.yml.rej deleted file mode 100644 index 70f3cdfa..00000000 --- a/.github/workflows/cache-cleaner.yml.rej +++ /dev/null @@ -1,19 +0,0 @@ -diff a/.github/workflows/cache-cleaner.yml b/.github/workflows/cache-cleaner.yml (rejected hunks) -@@ -16,7 +16,7 @@ jobs: - actions: write - steps: - - name: Harden Runner -- uses: step-security/harden-runner@0634a2670c59f64b4a01f0f96f84700a4088b9f0 # v2.12.0 -+ uses: step-security/harden-runner@9af89fc71515a100421586dfdb3dc9c984fbf411 # v2.19.4 - with: - disable-sudo: true - egress-policy: block -@@ -27,7 +27,7 @@ jobs: - release-assets.githubusercontent.com:443 - - - name: Checkout Repository -- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 -+ uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 - with: - persist-credentials: false - diff --git a/.github/workflows/codeql.yml.rej b/.github/workflows/codeql.yml.rej deleted file mode 100644 index 8b0053ad..00000000 --- a/.github/workflows/codeql.yml.rej +++ /dev/null @@ -1,17 +0,0 @@ -diff a/.github/workflows/codeql.yml b/.github/workflows/codeql.yml (rejected hunks) -@@ -53,13 +53,13 @@ jobs: - # your codebase is analyzed, see https://docs.github.com/en/code-security/code-scanning/creating-an-advanced-setup-for-code-scanning/codeql-code-scanning-for-compiled-languages - steps: - - name: Harden Runner -- uses: step-security/harden-runner@0634a2670c59f64b4a01f0f96f84700a4088b9f0 # v2.12.0 -+ uses: step-security/harden-runner@9af89fc71515a100421586dfdb3dc9c984fbf411 # v2.19.4 - with: - disable-sudo: true - egress-policy: audit - - - name: Checkout Repository -- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 -+ uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 - with: - persist-credentials: false - diff --git a/.github/workflows/dependency-review.yml.rej b/.github/workflows/dependency-review.yml.rej deleted file mode 100644 index 9d4e4cda..00000000 --- a/.github/workflows/dependency-review.yml.rej +++ /dev/null @@ -1,22 +0,0 @@ -diff a/.github/workflows/dependency-review.yml b/.github/workflows/dependency-review.yml (rejected hunks) -@@ -17,7 +17,7 @@ jobs: - runs-on: ubuntu-latest - steps: - - name: Harden Runner -- uses: step-security/harden-runner@0634a2670c59f64b4a01f0f96f84700a4088b9f0 # v2.12.0 -+ uses: step-security/harden-runner@9af89fc71515a100421586dfdb3dc9c984fbf411 # v2.19.4 - with: - disable-sudo: true - egress-policy: block -@@ -27,9 +27,9 @@ jobs: - github.com:443 - - - name: Checkout Repository -- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 -+ uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 - with: - persist-credentials: false - - - name: Dependency Review -- uses: actions/dependency-review-action@3b139cfc5fae8b618d3eae3675e383bb1769c019 # v4.5.0 -+ uses: actions/dependency-review-action@a1d282b36b6f3519aa1f3fc636f609c47dddb294 # v5.0.0 diff --git a/.github/workflows/first-pull-request.yml b/.github/workflows/first-pull-request.yml index 84e699f4..201df90e 100644 --- a/.github/workflows/first-pull-request.yml +++ b/.github/workflows/first-pull-request.yml @@ -57,6 +57,5 @@ jobs: we ask that you add your information to the \`AUTHORS.rst\` and \`.zenodo.json\`: - [ ] The relevant author information has been added to \`AUTHORS.rst\` and \`.zenodo.json\` - Please make sure you've read our [contributing guide](CONTRIBUTING.rst). - We look forward to reviewing your Pull Request shortly ✨` + Please make sure you've read our [contributing guide](https://github.com/glamod/cdm_reader_mapper/blob/main/CONTRIBUTING.rst). We look forward to reviewing your Pull Request shortly ✨` }) diff --git a/.github/workflows/first-pull-request.yml.rej b/.github/workflows/first-pull-request.yml.rej deleted file mode 100644 index 511a4504..00000000 --- a/.github/workflows/first-pull-request.yml.rej +++ /dev/null @@ -1,26 +0,0 @@ -diff a/.github/workflows/first-pull-request.yml b/.github/workflows/first-pull-request.yml (rejected hunks) -@@ -16,7 +16,7 @@ jobs: - pull-requests: write - steps: - - name: Harden Runner -- uses: step-security/harden-runner@0634a2670c59f64b4a01f0f96f84700a4088b9f0 # v2.12.0 -+ uses: step-security/harden-runner@9af89fc71515a100421586dfdb3dc9c984fbf411 # v2.19.4 - with: - disable-sudo: true - egress-policy: block -@@ -24,7 +24,7 @@ jobs: - api.github.com:443 - - - name: Verify Pull Request Opener -- uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea # v7.0.1 -+ uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0 - with: - script: | - // Get a list of all issues created by the PR opener -@@ -56,5 +56,5 @@ jobs: - It appears that this is your first Pull Request. To give credit where it's due, we ask that you add your information to the \`AUTHORS.rst\` and \`.zenodo.json\`: - - [ ] The relevant author information has been added to \`AUTHORS.rst\` and \`.zenodo.json\`. - -- Please make sure you've read our [contributing guide](https://github.com/glamod/Common-Data-Model-reader-and-mapper/blob/main/CONTRIBUTING.rst). We look forward to reviewing your Pull Request shortly ✨` -+ Please make sure you've read our [contributing guide](https://github.com/glamod/cdm_reader_mapper/blob/main/CONTRIBUTING.rst). We look forward to reviewing your Pull Request shortly ✨` - }) diff --git a/.github/workflows/label.yml.rej b/.github/workflows/label.yml.rej deleted file mode 100644 index 9c34c2ac..00000000 --- a/.github/workflows/label.yml.rej +++ /dev/null @@ -1,10 +0,0 @@ -diff a/.github/workflows/label.yml b/.github/workflows/label.yml (rejected hunks) -@@ -23,7 +23,7 @@ jobs: - pull-requests: write - steps: - - name: Harden Runner -- uses: step-security/harden-runner@0634a2670c59f64b4a01f0f96f84700a4088b9f0 # v2.12.0 -+ uses: step-security/harden-runner@9af89fc71515a100421586dfdb3dc9c984fbf411 # v2.19.4 - with: - disable-sudo: true - egress-policy: block diff --git a/.github/workflows/publish-pypi.yml b/.github/workflows/publish-pypi.yml index bc288a2e..53a5df29 100644 --- a/.github/workflows/publish-pypi.yml +++ b/.github/workflows/publish-pypi.yml @@ -41,7 +41,7 @@ jobs: python-version: ${{ matrix.python-version }} - name: Install packaging libraries run: | - python -m pip install -r CI/requirements_ci.txt + python -m pip install -r .github/requirements_ci.txt - name: Build a binary wheel and a source tarball run: | python -m flit build diff --git a/.github/workflows/publish-pypi.yml.rej b/.github/workflows/publish-pypi.yml.rej deleted file mode 100644 index a0b69346..00000000 --- a/.github/workflows/publish-pypi.yml.rej +++ /dev/null @@ -1,37 +0,0 @@ -diff a/.github/workflows/publish-pypi.yml b/.github/workflows/publish-pypi.yml (rejected hunks) -@@ -21,30 +21,24 @@ jobs: - python-version: [ "3.13" ] - steps: - - name: Harden Runner -- uses: step-security/harden-runner@0634a2670c59f64b4a01f0f96f84700a4088b9f0 # v2.12.0 -+ uses: step-security/harden-runner@9af89fc71515a100421586dfdb3dc9c984fbf411 # v2.19.4 - with: - disable-sudo: true -- egress-policy: block -- allowed-endpoints: > -- files.pythonhosted.org:443 -- github.com:443 -- pypi.org:443 -- ruf-repo-cdn.sigstore.dev:443 -- upload.pypi.org:443 -+ egress-policy: audit - - - name: Checkout Repository -- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 -+ uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 - with: - persist-credentials: false - - - name: Set up Python${{ matrix.python-version }} -- uses: actions/setup-python@a26af69be951a213d495a4c3e4e4022e16d87065 # v5.6.0 -+ uses: actions/setup-python@ece7cb06caefa5fff74198d8649806c4678c61a1 # v6.3.0 - with: - python-version: ${{ matrix.python-version }} - - - name: Install CI libraries - run: | -- python -m pip install --require-hashes -r CI/requirements_ci.txt -+ python -m pip install --require-hashes -r .github/requirements_ci.txt - - - name: Build a binary wheel and a source tarball - run: | diff --git a/.github/workflows/scorecard.yml.rej b/.github/workflows/scorecard.yml.rej deleted file mode 100644 index 2e80fa8d..00000000 --- a/.github/workflows/scorecard.yml.rej +++ /dev/null @@ -1,19 +0,0 @@ -diff a/.github/workflows/scorecard.yml b/.github/workflows/scorecard.yml (rejected hunks) -@@ -34,7 +34,7 @@ jobs: - id-token: write - steps: - - name: Harden Runner -- uses: step-security/harden-runner@0634a2670c59f64b4a01f0f96f84700a4088b9f0 # v2.12.0 -+ uses: step-security/harden-runner@9af89fc71515a100421586dfdb3dc9c984fbf411 # v2.19.4 - with: - disable-sudo: true - egress-policy: block -@@ -52,7 +52,7 @@ jobs: - www.bestpractices.dev:443 - - - name: Checkout Repository -- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 -+ uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 - with: - persist-credentials: false - diff --git a/.github/workflows/tag-testpypi.yml b/.github/workflows/tag-testpypi.yml index d10af39b..07d46437 100644 --- a/.github/workflows/tag-testpypi.yml +++ b/.github/workflows/tag-testpypi.yml @@ -74,7 +74,7 @@ jobs: - name: Install CI libraries run: | - python -m pip install --require-hashes -r CI/requirements_ci.txt + python -m pip install --require-hashes -r .github/requirements_ci.txt - name: Build a binary wheel and a source tarball run: | python -m flit build diff --git a/.github/workflows/tag-testpypi.yml.rej b/.github/workflows/tag-testpypi.yml.rej deleted file mode 100644 index 2127530d..00000000 --- a/.github/workflows/tag-testpypi.yml.rej +++ /dev/null @@ -1,55 +0,0 @@ -diff a/.github/workflows/tag-testpypi.yml b/.github/workflows/tag-testpypi.yml (rejected hunks) -@@ -17,7 +17,7 @@ jobs: - contents: write - steps: - - name: Harden Runner -- uses: step-security/harden-runner@0634a2670c59f64b4a01f0f96f84700a4088b9f0 # v2.12.0 -+ uses: step-security/harden-runner@9af89fc71515a100421586dfdb3dc9c984fbf411 # v2.19.4 - with: - egress-policy: block - allowed-endpoints: > -@@ -27,7 +27,7 @@ jobs: - test.pypi.org:443 - - - name: Checkout Repository -- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 -+ uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 - with: - persist-credentials: false - -@@ -53,30 +53,24 @@ jobs: - python-version: [ "3.13" ] - steps: - - name: Harden Runner -- uses: step-security/harden-runner@0634a2670c59f64b4a01f0f96f84700a4088b9f0 # v2.12.0 -+ uses: step-security/harden-runner@9af89fc71515a100421586dfdb3dc9c984fbf411 # v2.19.4 - with: - disable-sudo: true -- egress-policy: block -- allowed-endpoints: > -- files.pythonhosted.org:443 -- github.com:443 -- pypi.org:443 -- ruf-repo-cdn.sigstore.dev:443 -- test.pypi.org:443 -+ egress-policy: audit - - - name: Checkout Repository -- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 -+ uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 - with: - persist-credentials: false - - - name: Set up Python${{ matrix.python-version }} -- uses: actions/setup-python@a26af69be951a213d495a4c3e4e4022e16d87065 # v5.6.0 -+ uses: actions/setup-python@ece7cb06caefa5fff74198d8649806c4678c61a1 # v6.3.0 - with: - python-version: ${{ matrix.python-version }} - - - name: Install CI libraries - run: | -- python -m pip install --require-hashes -r CI/requirements_ci.txt -+ python -m pip install --require-hashes -r .github/requirements_ci.txt - - - name: Build a binary wheel and a source tarball - run: | diff --git a/.github/workflows/workflow-warning.yml b/.github/workflows/workflow-warning.yml index 4b5d10e6..35c5669a 100644 --- a/.github/workflows/workflow-warning.yml +++ b/.github/workflows/workflow-warning.yml @@ -15,12 +15,16 @@ on: permissions: contents: read +concurrency: + group: workflow-warning-${{ github.event.pull_request.number }} + cancel-in-progress: true + + jobs: comment-concerning-workflow-changes: name: Comment Concerning Workflow Changes runs-on: ubuntu-latest - if: | - (github.event.pull_request.head.repo.full_name != github.event.pull_request.base.repo.full_name) + if: github.event.pull_request.head.repo.full_name != github.event.pull_request.base.repo.full_name permissions: contents: read pull-requests: write @@ -33,60 +37,58 @@ jobs: allowed-endpoints: > api.github.com:443 - - name: Manage Warning / Note Comments + - name: Create or Update Warning Comment env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - APPROVED: ${{ contains(github.event.pull_request.labels.*.name, 'approved') }} - PR_NUMBER: ${{ github.event.pull_request.number }} REPO: ${{ github.repository }} + PR_NUMBER: ${{ github.event.pull_request.number }} run: | - WARNING_TEXT="This Pull Request modifies GitHub workflows and is coming from a fork." - NOTE_TEXT="Workflow changes in this Pull Request have been approved!" + set -euo pipefail - # Fetch existing comments - COMMENTS=$(gh api repos/$REPO/issues/$PR_NUMBER/comments) + MARKER="" - # Find warning comment ID - WARNING_COMMENT_ID=$(echo "$COMMENTS" | jq -r \ - '.[] | select(.user.login=="github-actions[bot]") | select(.body | contains("'"$WARNING_TEXT"'")) | .id' | head -n 1) + BODY=$(cat < [!WARNING] + > This pull request modifies GitHub Actions workflows and originates from a fork. + > + > Review the workflow changes carefully before approving or merging. + EOF + ) - if [ "$APPROVED" = "true" ]; then - BODY="> [!NOTE] - > Workflow changes in this Pull Request have been approved!" + COMMENTS=$(gh api repos/$REPO/issues/$PR_NUMBER/comments) - if [ -n "$NOTE_COMMENT_ID" ] && [ "$NOTE_COMMENT_ID" != "null" ]; then - # Append to existing note comment - EXISTING=$(gh api repos/$REPO/issues/comments/$NOTE_COMMENT_ID --jq .body) - gh api \ - --method PATCH \ - repos/$REPO/issues/comments/$NOTE_COMMENT_ID \ - -f body="$EXISTING + mapfile -t IDS < <( + echo "$COMMENTS" | + jq -r ' + .[] + | select(.body | contains("")) + | .id + ' + ) + + COMMENT_ID="" - $BODY" - else - # Create new note comment - gh pr comment "$PR_NUMBER" --body "$BODY" - fi + if [ "${#IDS[@]}" -gt 0 ]; then + COMMENT_ID="${IDS[0]}" - # Add reaction (hooray) - if [ -n "$NOTE_COMMENT_ID" ] && [ "$NOTE_COMMENT_ID" != "null" ]; then + # Remove duplicate managed comments if they exist. + for id in "${IDS[@]:1}"; do gh api \ - --method POST \ - repos/$REPO/issues/comments/$NOTE_COMMENT_ID/reactions \ - -f content='hooray' \ - -H "Accept: application/vnd.github+json" - fi + --method DELETE \ + repos/$REPO/issues/comments/$id + done + fi + if [ -n "$COMMENT_ID" ]; then + gh api \ + --method PATCH \ + repos/$REPO/issues/comments/$COMMENT_ID \ + -f body="$BODY" else - BODY="> [!WARNING] - > This Pull Request modifies GitHub Workflows and is coming from a fork. - **It is very important for the reviewer to ensure that the workflow changes are appropriate.**" - - if [ -z "$WARNING_COMMENT_ID" ] || [ "$WARNING_COMMENT_ID" = "null" ]; then - gh pr comment "$PR_NUMBER" --body "$BODY" - fi - fi + gh api \ + --method POST \ + repos/$REPO/issues/$PR_NUMBER/comments \ + -f body="$BODY" + fi diff --git a/.github/workflows/workflow-warning.yml.rej b/.github/workflows/workflow-warning.yml.rej deleted file mode 100644 index 556af8ea..00000000 --- a/.github/workflows/workflow-warning.yml.rej +++ /dev/null @@ -1,125 +0,0 @@ -diff a/.github/workflows/workflow-warning.yml b/.github/workflows/workflow-warning.yml (rejected hunks) -@@ -15,77 +15,78 @@ on: - permissions: - contents: read - -+concurrency: -+ group: workflow-warning-${{ github.event.pull_request.number }} -+ cancel-in-progress: true -+ - jobs: - comment-concerning-workflow-changes: - name: Comment Concerning Workflow Changes - runs-on: ubuntu-latest -- if: | -- (github.event.pull_request.head.repo.full_name != github.event.pull_request.base.repo.full_name) -+ if: github.event.pull_request.head.repo.full_name != github.event.pull_request.base.repo.full_name - permissions: - pull-requests: write - steps: - - name: Harden Runner -- uses: step-security/harden-runner@0634a2670c59f64b4a01f0f96f84700a4088b9f0 # v2.12.0 -+ uses: step-security/harden-runner@9af89fc71515a100421586dfdb3dc9c984fbf411 # v2.19.4 - with: - disable-sudo: true - egress-policy: block - allowed-endpoints: > - api.github.com:443 - -- - name: Manage Warning / Note Comments -+ - name: Create or Update Warning Comment - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} -- APPROVED: ${{ contains(github.event.pull_request.labels.*.name, 'approved') }} -- PR_NUMBER: ${{ github.event.pull_request.number }} - REPO: ${{ github.repository }} -+ PR_NUMBER: ${{ github.event.pull_request.number }} - run: | -- WARNING_TEXT="This Pull Request modifies GitHub workflows and is coming from a fork." -- NOTE_TEXT="Workflow changes in this Pull Request have been approved!" -+ set -euo pipefail - -- # Fetch existing comments -- COMMENTS=$(gh api repos/$REPO/issues/$PR_NUMBER/comments) -+ MARKER="" - -- # Find warning comment ID -- WARNING_COMMENT_ID=$(echo "$COMMENTS" | jq -r \ -- '.[] | select(.user.login=="github-actions[bot]") | select(.body | contains("'"$WARNING_TEXT"'")) | .id' | head -n 1) -+ BODY=$(cat < [!WARNING] -+ > This pull request modifies GitHub Actions workflows and originates from a fork. -+ > -+ > Review the workflow changes carefully before approving or merging. -+ EOF -+ ) - -- if [ "$APPROVED" = "true" ]; then -- BODY="> [!NOTE] -- > Workflow changes in this Pull Request have been approved!" -+ COMMENTS=$(gh api repos/$REPO/issues/$PR_NUMBER/comments) - -- if [ -n "$NOTE_COMMENT_ID" ] && [ "$NOTE_COMMENT_ID" != "null" ]; then -- # Append to existing note comment -- EXISTING=$(gh api repos/$REPO/issues/comments/$NOTE_COMMENT_ID --jq .body) -- gh api \ -- --method PATCH \ -- repos/$REPO/issues/comments/$NOTE_COMMENT_ID \ -- -f body="$EXISTING -+ mapfile -t IDS < <( -+ echo "$COMMENTS" | -+ jq -r ' -+ .[] -+ | select(.body | contains("")) -+ | .id -+ ' -+ ) -+ -+ COMMENT_ID="" - -- $BODY" -- else -- # Create new note comment -- gh pr comment "$PR_NUMBER" --body "$BODY" -- fi -+ if [ "${#IDS[@]}" -gt 0 ]; then -+ COMMENT_ID="${IDS[0]}" - -- # Add reaction (hooray) -- if [ -n "$NOTE_COMMENT_ID" ] && [ "$NOTE_COMMENT_ID" != "null" ]; then -+ # Remove duplicate managed comments if they exist. -+ for id in "${IDS[@]:1}"; do - gh api \ -- --method POST \ -- repos/$REPO/issues/comments/$NOTE_COMMENT_ID/reactions \ -- -f content='hooray' \ -- -H "Accept: application/vnd.github+json" -- fi -+ --method DELETE \ -+ repos/$REPO/issues/comments/$id -+ done -+ fi - -+ if [ -n "$COMMENT_ID" ]; then -+ gh api \ -+ --method PATCH \ -+ repos/$REPO/issues/comments/$COMMENT_ID \ -+ -f body="$BODY" - else -- BODY="> [!WARNING] -- > This Pull Request modifies GitHub Workflows and is coming from a fork. -- **It is very important for the reviewer to ensure that the workflow changes are appropriate.**" -- -- if [ -z "$WARNING_COMMENT_ID" ] || [ "$WARNING_COMMENT_ID" = "null" ]; then -- gh pr comment "$PR_NUMBER" --body "$BODY" -- fi -+ gh api \ -+ --method POST \ -+ repos/$REPO/issues/$PR_NUMBER/comments \ -+ -f body="$BODY" - fi diff --git a/AGENTS.md b/AGENTS.md index c8b512ea..7d08de51 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -12,24 +12,51 @@ Rules for AI coding agents working in this repository. - Ask for clarification when requirements are ambiguous - Do not generate PR descriptions or review comments on others' code +## Code Style + +- Follow the linting patterns provided via `$ make lint` in the `Makefile` alongside the configurations found in the top-level `pyproject.toml` and `.pre-commit-config.yaml` files. +- All functions should be typed and new functions must have `numpydoc`-like docstrings. + ## Setup -> Add your project's setup commands here (npm install, go build, make, etc.) +The package can be installed in developer mode in Python using the `$ make develop` recipe. ## Testing -Write tests for new functionality. Run the full suite before submitting. +- Write tests for new functionality. +- Any `pytest` fixtures common to tests across multiple `test_*.py` files should be found within `conftest.py`. +- Run the full suite before submitting. +- Test coverage must not significantly drop between PRs and main. + +## Restricted Paths + +Do not modify: + +- `.*` +- `.github` +- `docs` +- `tox.toml` + +## Changelog + +- Changes must be summarized in one or two sentences within the `CHANGELOG.rst` file. +- New additions must be placed under the section labelled "(unreleased)". +- Acceptable category types are all previously categories found in `CHANGELOG.rst` +- Entries must end with the issue number and PR number appended to the end: "(:issue:`#`, :pull:`#`)". ## Commits - Use clear, descriptive commit messages - One logical change per commit +- Do not bundle unrelated changes - Reference relevant issues when applicable +- Never push directly to main +- Always use a PR branch and get human approval before merging - Include `Assisted-by: ` trailer on AI-assisted commits ## Review -Changes touching more than one module or any security-relevant code require human review. Minor fixes and doc updates follow the standard process. +All changes to code require human review. --- *Generated by [aipolicy.1mb.dev](https://aipolicy.1mb.dev) · v1.0* diff --git a/AI_POLICY.md b/AI_POLICY.md index d3a1000f..f9cc811e 100644 --- a/AI_POLICY.md +++ b/AI_POLICY.md @@ -4,6 +4,11 @@ You are responsible for every line of code you submit, regardless of how it was produced. If you use AI tools, review and verify all output before committing. +## Pull Requests + +Pull Requests descriptions must be drafted by a human and adhere to the template selected on creation. +Summaries of changes posted by AI are not accepted in Pull Requests. + ## AI Tool Usage AI tools are permitted. Standard review process applies to all contributions. @@ -27,7 +32,6 @@ Code changes from less sophisticated phrase-completion tools do not require an A - Submitting AI output you have not read and understood - Using AI to generate code that circumvents tests or CI checks - Feeding reviewer feedback back into AI without understanding it first -- Using AI to respond to reviewer feedback - AI-generated PR descriptions -- describe your own work - AI-generated reviews on other contributors' PRs diff --git a/CITATION.cff.rej b/CITATION.cff.rej deleted file mode 100644 index 1ba6c510..00000000 --- a/CITATION.cff.rej +++ /dev/null @@ -1,10 +0,0 @@ -diff a/CITATION.cff b/CITATION.cff (rejected hunks) -@@ -17,7 +17,7 @@ contact: - family-names: 'Lierhammer' - email: 'ludwig.lierhammer@dwd.de' - orcid: "https://orcid.org/0000-0002-7207-0003" --repository-code: "https://github.com/glamod/Common-Data-Model-reader-and-mapper" -+repository-code: "https://github.com/glamod/cdm_reader_mapper" - abstract: "This Python package is designed for reading data files compliant with a user specified data model, for mapping observed variables and its associated metadata from a data model or models combination to the C3S CDS Common Data Model (CDM) format, and for detecting and flagging or removing duplicated observations. It was developed to read the IMMA (International Maritime Meteorological Archive) data format, but it has been enhanced to account for meteorological data formats in the case of data that is stored in a human-readable manner (ASCII format), data that is stored in a Network Common Data Format (NetCDF format), data that is organized in single line reports, reports that have a coherent internal structure and can be modelised, reports that have a fixed width or field delimited types, and reports that can be organized in sections, in which case each section can be of different types (fixed width of delimited)" - license: "Apache-2.0" - version: "2.4.1" diff --git a/CONTRIBUTING.rst.rej b/CONTRIBUTING.rst.rej deleted file mode 100644 index 895055fd..00000000 --- a/CONTRIBUTING.rst.rej +++ /dev/null @@ -1,26 +0,0 @@ -diff a/CONTRIBUTING.rst b/CONTRIBUTING.rst (rejected hunks) -@@ -12,7 +12,7 @@ Types of Contributions - Report Bugs - ~~~~~~~~~~~ - --Report bugs at https://github.com/glamod/Common-Data-Model-reader-and-mapper/issues. -+Report bugs at https://github.com/glamod/cdm_reader_mapper/issues. - - If you are reporting a bug, please include: - -@@ -38,7 +38,7 @@ Common Data Model reader and mapper could always use more documentation, whether - Submit Feedback - ~~~~~~~~~~~~~~~ - --The best way to send feedback is to file an issue at https://github.com/glamod/Common-Data-Model-reader-and-mapper/issues. -+The best way to send feedback is to file an issue at https://github.com/glamod/cdm_reader_mapper/issues. - - If you are proposing a feature: - -@@ -230,5 +299,5 @@ This will create or update the French translation files in the `docs/locales/fr/ - Code of Conduct - --------------- - --Please note that this project is released with a `Contributor Code of Conduct `_. -+Please note that this project is released with a `Contributor Code of Conduct `_. - By participating in this project you agree to abide by its terms. diff --git a/Makefile b/Makefile index db40cc0f..c1e5563c 100644 --- a/Makefile +++ b/Makefile @@ -100,7 +100,7 @@ ifndef READTHEDOCS endif servedocs: autodoc ## compile the docs while watching for changes - watchmedo shell-command -p '*.rst' -c '$(MAKE) -C docs html' -R -D . + $(MAKE) -C docs livehtml dist: clean ## builds source and wheel package python -m flint build diff --git a/Makefile.rej b/Makefile.rej deleted file mode 100644 index 461226eb..00000000 --- a/Makefile.rej +++ /dev/null @@ -1,10 +0,0 @@ -diff a/Makefile b/Makefile (rejected hunks) -@@ -100,7 +100,7 @@ ifndef READTHEDOCS - endif - - servedocs: autodoc ## compile the docs while watching for changes -- watchmedo shell-command -p '*.rst' -c '$(MAKE) -C docs html' -R -D . -+ $(MAKE) -C docs livehtml - - dist: clean ## builds source and wheel package - python -m flit build diff --git a/README.rst.rej b/README.rst.rej deleted file mode 100644 index 0af21963..00000000 --- a/README.rst.rej +++ /dev/null @@ -1,21 +0,0 @@ -diff a/README.rst b/README.rst (rejected hunks) -@@ -32,8 +32,8 @@ This package was created with Cookiecutter_ and the `Ouranosinc/cookiecutter-pyp - .. _Cookiecutter: https://github.com/cookiecutter/cookiecutter - .. _`Ouranosinc/cookiecutter-pypackage`: https://github.com/Ouranosinc/cookiecutter-pypackage - --.. |build| image:: https://github.com/glamod/Common-Data-Model-reader-and-mapper/actions/workflows/main.yml/badge.svg -- :target: https://github.com/glamod/Common-Data-Model-reader-and-mapper/actions -+.. |build| image:: https://github.com/glamod/cdm_reader_mapper/actions/workflows/main.yml/badge.svg -+ :target: https://github.com/glamod/cdm_reader_mapper/actions - :alt: Build Status - - .. |coveralls| image:: https://coveralls.io/repos/github/glamod/Common-Data-Model-reader-and-mapper/badge.svg -@@ -45,7 +45,7 @@ This package was created with Cookiecutter_ and the `Ouranosinc/cookiecutter-pyp - :alt: Documentation Status - - .. |license| image:: https://img.shields.io/github/license/glamod/Common-Data-Model-reader-and-mapper.svg -- :target: https://github.com/glamod/Common-Data-Model-reader-and-mapper/blob/main/LICENSE -+ :target: https://github.com/glamod/cdm_reader_mapper/blob/main/LICENSE - :alt: License - - .. diff --git a/docs/conf.py.rej b/docs/conf.py.rej deleted file mode 100644 index 54098692..00000000 --- a/docs/conf.py.rej +++ /dev/null @@ -1,12 +0,0 @@ -diff a/docs/conf.py b/docs/conf.py (rejected hunks) -@@ -55,8 +55,8 @@ autodoc_default_options = { - } - - extlinks = { -- "issue": ("https://github.com/glamod/Common-Data-Model-reader-and-mapper/issues/%s", "GH/%s"), -- "pull": ("https://github.com/glamod/Common-Data-Model-reader-and-mapper/pull/%s", "PR/%s"), -+ "issue": ("https://github.com/glamod/cdm_reader_mapper/issues/%s", "GH/%s"), -+ "pull": ("https://github.com/glamod/cdm_reader_mapper/pull/%s", "PR/%s"), - "user": ("https://github.com/%s", "@%s"), - } - diff --git a/docs/index.rst b/docs/index.rst index fc623f00..ad7b2aef 100755 --- a/docs/index.rst +++ b/docs/index.rst @@ -38,7 +38,7 @@ In addition, the **cdm_reader_mapper.DataBundle** object has several main method .. toctree:: :maxdepth: 2 :hidden: - :caption: Contents: + :caption: Table of Contents: About tool-set-up diff --git a/docs/index.rst.rej b/docs/index.rst.rej deleted file mode 100644 index ccc2a3c0..00000000 --- a/docs/index.rst.rej +++ /dev/null @@ -1,32 +0,0 @@ -diff a/docs/index.rst b/docs/index.rst (rejected hunks) -@@ -1,9 +1,20 @@ - Welcome to Common Data Model reader and mapper's documentation! - =============================================================== - -+**Common Data Model reader and mapper**: This Python package is designed for reading data files compliant with a user specified data model, for mapping observed variables and its associated metadata from a data model or models combination to the C3S CDS Common Data Model (CDM) format, and for detecting and flagging or removing duplicated observations. It was developed to read the IMMA (International Maritime Meteorological Archive) data format, but it has been enhanced to account for meteorological data formats in the case of data that is stored in a human-readable manner (ASCII format), data that is stored in a Network Common Data Format (NetCDF format), data that is organized in single line reports, reports that have a coherent internal structure and can be modelised, reports that have a fixed width or field delimited types, and reports that can be organized in sections, in which case each section can be of different types (fixed width of delimited) -+ -+Need help? -+^^^^^^^^^^ -+ -+* If you encounter any errors or problems with `Common Data Model reader and mapper`, please let us know! Open an issue at the `GitHub main repository `_. -+* To be aware of changes in `Common Data Model reader and mapper`, feel free to “watch” the GitHub repository. You can customize the watch function to notify you of new releases or more. -+ -+Navigation -+========== -+ - .. toctree:: - :maxdepth: 2 -- :caption: Contents: -+ :caption: Table of Contents - - readme - installation -@@ -22,7 +33,7 @@ Welcome to Common Data Model reader and mapper's documentation! - .. toctree:: - :caption: GitHub Repository - -- glamod/Common-Data-Model-reader-and-mapper -+ glamod/Common-Data-Model-reader-and-mapper - - Indices and tables - ================== diff --git a/environment-docs.yml b/environment-docs.yml index b9676e4f..c0407cc2 100755 --- a/environment-docs.yml +++ b/environment-docs.yml @@ -47,9 +47,10 @@ dependencies: - myst-nb >=1.2.0 - nbconvert >=7.16.4 - numpydoc >=1.8.0 - - sphinx >=7.0.0 + - sphinx >=8.2.0 - sphinx-autodoc-typehints - - sphinx-copybutton + - sphinx-codeautolink >=0.16.2 + - sphinx-copybutton >=0.5.2 - furo >=2023.9.10 #from pypi diff --git a/environment-docs.yml.rej b/environment-docs.yml.rej deleted file mode 100644 index 1e5c66d9..00000000 --- a/environment-docs.yml.rej +++ /dev/null @@ -1,9 +0,0 @@ -diff a/environment-docs.yml b/environment-docs.yml (rejected hunks) -@@ -7,6 +7,7 @@ dependencies: - # Docs - - click >=8.3.1 - - sphinx >=8.2 -+ - sphinx-autobuild >=2024.4.16 - - sphinx-click - - sphinx-codeautolink >=0.16.2 - - sphinx-copybutton >=0.5.2 diff --git a/pyproject.toml b/pyproject.toml index f4e4acfc..c595452d 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -2,57 +2,6 @@ requires = ["flit_core >=3.12.0,<4"] build-backend = "flit_core.buildapi" -[dependency-groups] -lint = [ - # Linting tools - "codespell >=2.4.2", - "deptry >=0.25.1", - "flake8 >=7.3.0", - "flake8-rst-docstrings >=0.4.0", - "mypy >=1.20.0", - "numpydoc >=1.10.0", - "pylint >=4.0.4", - "ruff >=0.15.11", - "vulture >=2.14", - "yamllint >=1.38.0" -] -test = [ - # Base testing support - "coverage[toml] >=7.13.4", - "pytest >=9.0.2", - "pytest-cov >=7.0.0", - "pytest-env >=1.1.5" -] -docs = [ - # Documentation and example support - "ipykernel", - "ipython >=8.10.0", - "jupyter_client", - "myst-nb >=1.2.0", - "nbconvert >=7.16.4", - "sphinx >=8.0.0", - "sphinx-autodoc-typehints", - "sphinx-codeautolink >=0.16.2", - "sphinx-copybutton >=0.5.2", - "furo >=2023.9.10" -] -tox = [ - "tox >=4.53.0", - "tox-gh >=1.7.1" -] -dev = [ - # Development and testing tools - "bump-my-version >=1.3.0", - "notebook", - "pip >=26.0.1", - "prek >=0.3.0", - "watchdog >=6.0.0", - {include-group = "docs"}, - {include-group = "lint"}, - {include-group = "test"}, - {include-group = "tox"} -] - [project] name = "cdm_reader_mapper" authors = [ @@ -71,9 +20,9 @@ maintainers = [ ] readme = {file = "README.rst", content-type = "text/x-rst"} requires-python = ">=3.11.0" +keywords = ["cdm_reader_mapper"] license = "Apache-2.0" license-files = ["LICENSE"] -keywords = ["cdm_reader_mapper"] classifiers = [ "Development Status :: 5 - Production/Stable", "Intended Audience :: Developers", @@ -103,9 +52,60 @@ dependencies = [ [project.urls] "Homepage" = "https://cdm-reader-mapper.readthedocs.io" -"Source" = "https://github.com/glamod/cdm_reader_mapper" "Changelog" = "https://cdm_reader_mapper.readthedocs.io/en/latest/changelog.html" "Issue tracker" = "https://github.com/glamod/cdm_reader_mapper" +"Source" = "https://github.com/glamod/cdm_reader_mapper" + +[dependency-groups] +lint = [ + # Linting tools + "codespell >=2.4.2", + "deptry >=0.25.1", + "flake8 >=7.3.0", + "flake8-rst-docstrings >=0.4.0", + "mypy >=1.20.0", + "numpydoc >=1.10.0", + "pylint >=4.0.4", + "ruff >=0.15.11", + "vulture >=2.14", + "yamllint >=1.38.0" +] +test = [ + # Base testing support + "coverage[toml] >=7.13.4", + "pytest >=9.0.2", + "pytest-cov >=7.0.0", + "pytest-env >=1.1.5" +] +docs = [ + # Documentation and example support + "ipykernel", + "ipython >=8.10.0", + "jupyter_client", + "myst-nb >=1.2.0", + "nbconvert >=7.16.4", + "sphinx >=8.0.0", + "sphinx-autodoc-typehints", + "sphinx-codeautolink >=0.16.2", + "sphinx-copybutton >=0.5.2", + "furo >=2023.9.10" +] +tox = [ + "tox >=4.53.0", + "tox-gh >=1.7.1" +] +dev = [ + # Development and testing tools + "bump-my-version >=1.3.0", + "notebook", + "pip >=26.0.1", + "prek >=0.3.0", + "watchdog >=6.0.0", + {include-group = "docs"}, + {include-group = "lint"}, + {include-group = "test"}, + {include-group = "tox"} +] [tool] @@ -171,17 +171,20 @@ include = [ ".zenodo.json", "AUTHORS.rst", "CHANGELOG.rst", + "CITATION.cff", + "CODE_OF_CONDUCT.md", "CONTRIBUTING.rst", "LICENSE", "Makefile", "README.rst", "environment-docs.yml", + "docs/_static/*", "docs/**/*.png", "docs/**/*.rst", "docs/**/*.txt", - "docs/Makefile", "docs/conf.py", "docs/make.bat", + "docs/Makefile", "cdm_reader_mapper/**/*.json", "cdm_reader_mapper/**/*.py", "cdm_reader_mapper/**/*.txt", @@ -192,9 +195,16 @@ include = [ exclude = [ "*.py[co]", "__pycache__", - ".*", + ".editorconfig", + ".flake8", + ".github", + ".gitignore", + ".readthedocs.yml", + ".yamllint.yaml", + ".zizmor.yml", "docs/_*", "docs/modules.rst", + "pre-commit-config.yaml", "pylintrc" ] @@ -340,6 +350,9 @@ max-doc-length = 180 [tool.ruff.lint.pydocstyle] convention = "numpy" +[tool.tomlsort] +sort_first = ["build-system", "project"] + [tool.vulture] exclude = [] ignore_decorators = ["@pytest.fixture"] diff --git a/pyproject.toml.rej b/pyproject.toml.rej deleted file mode 100644 index 950c5573..00000000 --- a/pyproject.toml.rej +++ /dev/null @@ -1,169 +0,0 @@ -diff a/pyproject.toml b/pyproject.toml (rejected hunks) -@@ -2,6 +2,53 @@ - requires = ["flit_core >=3.12.0,<4"] - build-backend = "flit_core.buildapi" - -+[project] -+name = "cdm_reader_mapper" -+authors = [ -+ {name = "Ludwig Lierhammer", email = "ludwig.lierhammer@dwd.de"} -+] -+maintainers = [ -+ {name = "Ludwig Lierhammer", email = "ludwig.lierhammer@dwd.de"} -+] -+readme = {file = "README.rst", content-type = "text/x-rst"} -+requires-python = ">=3.10.0" -+keywords = ["Common Data Model reader and mapper"] -+license = "Apache-2.0" -+license-files = ["LICENSE"] -+classifiers = [ -+ "Development Status :: 2 - Pre-Alpha", -+ "Intended Audience :: Developers", -+ "Natural Language :: English", -+ "Operating System :: OS Independent", -+ "Programming Language :: Python :: 3", -+ "Programming Language :: Python :: 3 :: Only", -+ "Programming Language :: Python :: 3.10", -+ "Programming Language :: Python :: 3.11", -+ "Programming Language :: Python :: 3.12", -+ "Programming Language :: Python :: 3.13", -+ "Programming Language :: Python :: 3.14", -+ "Programming Language :: Python :: Implementation :: CPython", -+ "Typing :: Typed" -+] -+dynamic = ["description", "version"] -+dependencies = [ -+ "click >=8.3.1" -+ -+] -+ -+[project.optional-dependencies] -+extras = [] -+ -+[project.scripts] -+cdm_reader_mapper = "cdm_reader_mapper.cli:app" -+ -+[project.urls] -+# "Homepage" = "https://Common-Data-Model-reader-and-mapper.readthedocs.io/" -+# "Changelog" = "https://Common-Data-Model-reader-and-mapper.readthedocs.io/en/stable/changelog.html" -+# "About Ouranos" = "https://ouranos.ca/en/" -+"Issue tracker" = "https://github.com/glamod/cdm_reader_mapper/issues" -+"Source" = "https://github.com/glamod/cdm_reader_mapper" -+ - [dependency-groups] - lint = [ - # Linting tools -@@ -29,6 +76,7 @@ docs = [ - "jupyter_client", - "nbsphinx >=0.9.8", - "sphinx >=8.2.0", -+ "sphinx-autobuild >=2024.4.16", - "sphinx-click", - "sphinx-codeautolink >=0.16.2", - "sphinx-copybutton >=0.5.2", -@@ -50,53 +98,6 @@ dev = [ - {include-group = "tox"} - ] - --[project] --name = "cdm_reader_mapper" --authors = [ -- {name = "Ludwig Lierhammer", email = "ludwig.lierhammer@dwd.de"} --] --maintainers = [ -- {name = "Ludwig Lierhammer", email = "ludwig.lierhammer@dwd.de"} --] --readme = {file = "README.rst", content-type = "text/x-rst"} --requires-python = ">=3.10.0" --keywords = ["Common Data Model reader and mapper"] --license = "Apache-2.0" --license-files = ["LICENSE"] --classifiers = [ -- "Development Status :: 2 - Pre-Alpha", -- "Intended Audience :: Developers", -- "Natural Language :: English", -- "Operating System :: OS Independent", -- "Programming Language :: Python :: 3", -- "Programming Language :: Python :: 3 :: Only", -- "Programming Language :: Python :: 3.10", -- "Programming Language :: Python :: 3.11", -- "Programming Language :: Python :: 3.12", -- "Programming Language :: Python :: 3.13", -- "Programming Language :: Python :: 3.14", -- "Programming Language :: Python :: Implementation :: CPython", -- "Typing :: Typed" --] --dynamic = ["description", "version"] --dependencies = [ -- "click >=8.3.1" -- --] -- --[project.optional-dependencies] --extras = [] -- --[project.scripts] --cdm_reader_mapper = "cdm_reader_mapper.cli:app" -- --[project.urls] --# "Homepage" = "https://Common-Data-Model-reader-and-mapper.readthedocs.io/" --# "Changelog" = "https://Common-Data-Model-reader-and-mapper.readthedocs.io/en/stable/changelog.html" --# "About Ouranos" = "https://ouranos.ca/en/" --"Issue tracker" = "https://github.com/glamod/Common-Data-Model-reader-and-mapper/issues" --"Source" = "https://github.com/glamod/Common-Data-Model-reader-and-mapper" -- - [tool] - - [tool.bumpversion] -@@ -187,18 +188,19 @@ include = [ - ".zenodo.json", - "AUTHORS.rst", - "CHANGELOG.rst", -+ "CITATION.cff", -+ "CODE_OF_CONDUCT.md", - "CONTRIBUTING.rst", - "LICENSE", - "Makefile", - "README.rst", - "environment-docs.yml", -- "docs/_static/_images/*.gif", -- "docs/_static/_images/*.jpg", -- "docs/_static/_images/*.png", -- "docs/_static/_images/*.rst", -- "docs/Makefile", -+ "docs/_static/*", -+ "docs/*.rst", - "docs/conf.py", - "docs/make.bat", -+ "docs/Makefile", -+ "pyproject.toml", - "src/cdm_reader_mapper", - "tests/*.py", - "tox.toml" -@@ -206,14 +208,15 @@ include = [ - exclude = [ - "*.py[co]", - "__pycache__", -- ".coveralls.yml", - ".editorconfig", - ".flake8", -+ ".github", - ".gitignore", - ".pre-commit-config.yaml", - ".readthedocs.yml", - ".yamllint.yaml", - ".zizmor.yml", -+ "CI/requirements_ci.*", - "docs/_*", - "docs/apidoc/modules.rst", - "docs/apidoc/cdm_reader_mapper*.rst" -@@ -344,6 +347,9 @@ max-doc-length = 180 - [tool.ruff.lint.pydocstyle] - convention = "numpy" - -+[tool.tomlsort] -+sort_first = ["build-system", "project"] -+ - [tool.vulture] - exclude = [] - ignore_decorators = ["@pytest.fixture"] From 182b9067e749c53511e7448da9430096922cc2a5 Mon Sep 17 00:00:00 2001 From: Ludwig Lierhammer Date: Fri, 31 Jul 2026 07:46:38 +0200 Subject: [PATCH 4/4] CI -> .gihutb --- .github/workflows/testing-suite.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/testing-suite.yml b/.github/workflows/testing-suite.yml index e280979e..6da8fc31 100644 --- a/.github/workflows/testing-suite.yml +++ b/.github/workflows/testing-suite.yml @@ -39,7 +39,7 @@ jobs: cache: pip - name: Install CI libraries run: | - python -m pip install --require-hashes -r CI/requirements_ci.txt + python -m pip install --require-hashes -r .github/requirements_ci.txt - name: Environment Caching uses: actions/cache@55cc8345863c7cc4c66a329aec7e433d2d1c52a9 # v6.1.0 with: