From 09c9444244b286a227bb3811e990ddfadab2dfdf Mon Sep 17 00:00:00 2001 From: igerber Date: Sat, 18 Apr 2026 16:16:48 -0400 Subject: [PATCH] Add Zenodo DOI auto-minting config for GitHub Releases Enables Zenodo to mint a concept DOI + per-version DOI on every future GitHub Release. Zenodo's GitHub App reads `.zenodo.json` at the tagged commit and publishes a software record. Changes: - `.zenodo.json` (new): upload_type=software, MIT license, creators block (Gerber, Isaac; ORCID 0009-0009-3275-5591), related_identifiers linking to the GitHub source (isSupplementTo) and ReadTheDocs (isDocumentedBy). - `LICENSE` (new): standard MIT text with single-holder copyright. - `CITATION.cff`: version 3.1.1 -> 3.1.2, date-released updated to the v3.1.2 release date. - `pyproject.toml`: add `LICENSE` to `[tool.maturin].include` so it lands in the sdist tarball (not only in PKG-INFO's License-File metadata). Manual one-time setup (done out-of-band): Zenodo account linked to GitHub, the igerber/diff-diff repo toggled ON at https://zenodo.org/account/settings/github/. The next release tag after v3.1.2 will trigger the Zenodo webhook and mint DOIs. A follow-up PR will add the concept-DOI badge to README and a `doi:` field to CITATION.cff once the first DOI has been minted. Co-Authored-By: Claude Opus 4.7 (1M context) --- .zenodo.json | 36 ++++++++++++++++++++++++++++++++++++ CITATION.cff | 4 ++-- LICENSE | 21 +++++++++++++++++++++ pyproject.toml | 2 +- 4 files changed, 60 insertions(+), 3 deletions(-) create mode 100644 .zenodo.json create mode 100644 LICENSE diff --git a/.zenodo.json b/.zenodo.json new file mode 100644 index 00000000..bf9932c3 --- /dev/null +++ b/.zenodo.json @@ -0,0 +1,36 @@ +{ + "upload_type": "software", + "title": "diff-diff: Difference-in-Differences Causal Inference for Python", + "description": "A Python library for Difference-in-Differences (DiD) causal inference analysis. Provides sklearn-like estimators for modern DiD methods including Callaway-Sant'Anna, Synthetic DiD, Honest DiD, event studies, and parallel trends testing. Validated against R packages (did, synthdid, fixest).", + "creators": [ + { + "name": "Gerber, Isaac", + "orcid": "0009-0009-3275-5591" + } + ], + "license": "MIT", + "access_right": "open", + "keywords": [ + "difference-in-differences", + "causal-inference", + "econometrics", + "python", + "treatment-effects", + "event-study", + "staggered-adoption", + "parallel-trends", + "synthetic-control", + "panel-data" + ], + "related_identifiers": [ + { + "relation": "isSupplementTo", + "identifier": "https://github.com/igerber/diff-diff", + "resource_type": "software" + }, + { + "relation": "isDocumentedBy", + "identifier": "https://diff-diff.readthedocs.io/en/stable/" + } + ] +} diff --git a/CITATION.cff b/CITATION.cff index a6148067..709342c7 100644 --- a/CITATION.cff +++ b/CITATION.cff @@ -7,8 +7,8 @@ authors: family-names: Gerber orcid: "https://orcid.org/0009-0009-3275-5591" license: MIT -version: "3.1.1" -date-released: "2026-04-16" +version: "3.1.2" +date-released: "2026-04-18" url: "https://github.com/igerber/diff-diff" repository-code: "https://github.com/igerber/diff-diff" keywords: diff --git a/LICENSE b/LICENSE new file mode 100644 index 00000000..4ae0fecb --- /dev/null +++ b/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2025-2026 Isaac Gerber + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/pyproject.toml b/pyproject.toml index f3749252..dac4122f 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -95,7 +95,7 @@ manifest-path = "rust/Cargo.toml" python-packages = ["diff_diff"] # Bundle LLM guide files (auto-inclusion varies across maturin 1.4-2.0; pin explicitly). # Bare-string glob form includes in both sdist and wheel. -include = ["diff_diff/guides/*.txt"] +include = ["diff_diff/guides/*.txt", "LICENSE"] [tool.pytest.ini_options] testpaths = ["tests"]