diff --git a/CATALOG.md b/CATALOG.md
index 1bed80c..af812cc 100644
--- a/CATALOG.md
+++ b/CATALOG.md
@@ -13,35 +13,35 @@ The dataset registry, **auto-generated** from the sidecar manifests (`lectures/*
| [**NEWQDATA.csv**](https://github.com/QuantEcon/data-lectures/raw/main/lectures/NEWQDATA.csv)
Cogley-Sargent (2005) "Drifts and Volatilities" — quarterly US inflation, unemployment and T-bill rate | constructed | [Cogley and Sargent (2005), "Drifts and Volatilities" — the authors' NEWQDATA.MAT](https://doi.org/10.1016/j.red.2004.10.009) | | ✅ permitted | ✅ verified | ✅ committed | 13.4 KB | [lecture-python.myst · phillips_drifts_volatilities.md](https://github.com/QuantEcon/lecture-python.myst/blob/main/lectures/phillips_drifts_volatilities.md)
[lecture-python.zh-cn · phillips_drifts_volatilities.md](https://github.com/QuantEcon/lecture-python.zh-cn/blob/main/lectures/phillips_drifts_volatilities.md) |
| [**SCF_plus_mini.csv**](https://github.com/QuantEcon/data-lectures/raw/main/lectures/SCF_plus_mini.csv)
SCF+ mini — net wealth, income and survey weights, 1950-2016 | constructed | [SCF+ (Kuhn, Schularick and Steins) — an extension of the Survey of Consumer Finances](https://www.journals.uchicago.edu/doi/10.1086/708815) | | ✅ permitted | ⚠️ unverifiable | committed-frozen | 31.3 MB | [lecture-python-intro · inequality.md](https://github.com/QuantEcon/lecture-python-intro/blob/main/lectures/inequality.md)
[lecture-wasm · inequality.md](https://github.com/QuantEcon/lecture-wasm/blob/main/lectures/inequality.md)
[lecture-intro.zh-cn · inequality.md](https://github.com/QuantEcon/lecture-intro.zh-cn/blob/main/lectures/inequality.md)
[test-actions-lecture-intro · inequality.md](https://github.com/QuantEcon/test-actions-lecture-intro/blob/main/lectures/inequality.md) |
| [**SCF_plus_mini_no_weights.csv**](https://github.com/QuantEcon/data-lectures/raw/main/lectures/SCF_plus_mini_no_weights.csv)
SCF+ mini, weight-expanded — net wealth and income, 1950-2016 | constructed | [SCF+ (Kuhn, Schularick and Steins) — an extension of the Survey of Consumer Finances](https://www.journals.uchicago.edu/doi/10.1086/708815) | | ✅ permitted | ⚠️ unverifiable | committed-frozen | 72.4 MB | [lecture-python-intro · mle.md](https://github.com/QuantEcon/lecture-python-intro/blob/main/lectures/mle.md)
[lecture-wasm · mle.md](https://github.com/QuantEcon/lecture-wasm/blob/main/lectures/mle.md)
[lecture-intro.zh-cn · mle.md](https://github.com/QuantEcon/lecture-intro.zh-cn/blob/main/lectures/mle.md)
[test-actions-lecture-intro · mle.md](https://github.com/QuantEcon/test-actions-lecture-intro/blob/main/lectures/mle.md) |
-| [**ames_house_prices.csv**](https://github.com/QuantEcon/data-lectures/raw/main/lectures/ames_house_prices.csv)
Ames, Iowa — residential house sales, 2006-2010 | constructed | [Ames Housing data (De Cock 2011), Journal of Statistics Education](http://jse.amstat.org/v19n3/decock.pdf) | | ✅ permitted | ✅ verified | ✅ committed | 75.2 KB | [lecture-python-intro · observed_distributions.md](https://github.com/QuantEcon/lecture-python-intro/blob/main/lectures/observed_distributions.md)
[lecture-python-intro · fitting_distributions.md](https://github.com/QuantEcon/lecture-python-intro/blob/main/lectures/fitting_distributions.md) |
-| [**assignat.xlsx**](https://github.com/QuantEcon/data-lectures/raw/main/lectures/assignat.xlsx)
French Revolution — assignat issues, budgets and seigniorage (Sargent-Velde) | verbatim | [Sargent and Velde, "Macroeconomic Features of the French Revolution" — supporting spreadsheets](https://www.journals.uchicago.edu/doi/10.1086/261992) | | ✅ permitted | ⚠️ unverifiable | n/a (verbatim) | 204.6 KB | [lecture-python-intro · french_rev.md](https://github.com/QuantEcon/lecture-python-intro/blob/main/lectures/french_rev.md)
[lecture-wasm · french_rev.md](https://github.com/QuantEcon/lecture-wasm/blob/main/lectures/french_rev.md) |
-| [**caron.npy**](https://github.com/QuantEcon/data-lectures/raw/main/lectures/caron.npy)
French Revolution — monthly specie value of the assignat, 1791-1796 | constructed | unrecorded | | ✅ permitted | ⚠️ unverifiable | ⚠️ unrecovered | 1.1 KB | [lecture-python-intro · french_rev.md](https://github.com/QuantEcon/lecture-python-intro/blob/main/lectures/french_rev.md)
[lecture-wasm · french_rev.md](https://github.com/QuantEcon/lecture-wasm/blob/main/lectures/french_rev.md) |
-| [**chapter_3.xlsx**](https://github.com/QuantEcon/data-lectures/raw/main/lectures/chapter_3.xlsx)
The Ends of Four Big Inflations — appendix tables, transcribed | constructed | [Sargent, "Rational Expectations and Inflation", chapter 3 appendix tables](https://press.princeton.edu/books/paperback/9780691158709/rational-expectations-and-inflation) | | ✅ permitted | ⚠️ unverifiable | ⚠️ unrecovered | 71.6 KB | [lecture-python-intro · inflation_history.md](https://github.com/QuantEcon/lecture-python-intro/blob/main/lectures/inflation_history.md)
[lecture-wasm · inflation_history.md](https://github.com/QuantEcon/lecture-wasm/blob/main/lectures/inflation_history.md) |
+| [**ames_house_prices.csv**](https://github.com/QuantEcon/data-lectures/raw/main/lectures/ames_house_prices.csv)
Ames, Iowa — residential house sales, 2006-2010 | constructed | [Ames Housing data (De Cock 2011), Journal of Statistics Education](http://jse.amstat.org/v19n3/decock.pdf) | | ✅ permitted | ✅ verified | ✅ committed | 75.2 KB | [lecture-python-intro · observed_distributions.md](https://github.com/QuantEcon/lecture-python-intro/blob/main/lectures/observed_distributions.md)
[lecture-python-intro · fitting_distributions.md](https://github.com/QuantEcon/lecture-python-intro/blob/main/lectures/fitting_distributions.md)
[lecture-intro.zh-cn · fitting_distributions.md](https://github.com/QuantEcon/lecture-intro.zh-cn/blob/main/lectures/fitting_distributions.md)
[lecture-intro.zh-cn · observed_distributions.md](https://github.com/QuantEcon/lecture-intro.zh-cn/blob/main/lectures/observed_distributions.md) |
+| [**assignat.xlsx**](https://github.com/QuantEcon/data-lectures/raw/main/lectures/assignat.xlsx)
French Revolution — assignat issues, budgets and seigniorage (Sargent-Velde) | verbatim | [Sargent and Velde, "Macroeconomic Features of the French Revolution" — supporting spreadsheets](https://www.journals.uchicago.edu/doi/10.1086/261992) | | ✅ permitted | ⚠️ unverifiable | n/a (verbatim) | 204.6 KB | [lecture-python-intro · french_rev.md](https://github.com/QuantEcon/lecture-python-intro/blob/main/lectures/french_rev.md)
[lecture-wasm · french_rev.md](https://github.com/QuantEcon/lecture-wasm/blob/main/lectures/french_rev.md)
[lecture-intro.zh-cn · french_rev.md](https://github.com/QuantEcon/lecture-intro.zh-cn/blob/main/lectures/french_rev.md)
[test-actions-lecture-intro · french_rev.md](https://github.com/QuantEcon/test-actions-lecture-intro/blob/main/lectures/french_rev.md) |
+| [**caron.npy**](https://github.com/QuantEcon/data-lectures/raw/main/lectures/caron.npy)
French Revolution — monthly specie value of the assignat, 1791-1796 | constructed | unrecorded | | ✅ permitted | ⚠️ unverifiable | ⚠️ unrecovered | 1.1 KB | [lecture-python-intro · french_rev.md](https://github.com/QuantEcon/lecture-python-intro/blob/main/lectures/french_rev.md)
[lecture-wasm · french_rev.md](https://github.com/QuantEcon/lecture-wasm/blob/main/lectures/french_rev.md)
[lecture-intro.zh-cn · french_rev.md](https://github.com/QuantEcon/lecture-intro.zh-cn/blob/main/lectures/french_rev.md)
[test-actions-lecture-intro · french_rev.md](https://github.com/QuantEcon/test-actions-lecture-intro/blob/main/lectures/french_rev.md)
⚠️ Reads a local `datasets/` copy, not this file |
+| [**chapter_3.xlsx**](https://github.com/QuantEcon/data-lectures/raw/main/lectures/chapter_3.xlsx)
The Ends of Four Big Inflations — appendix tables, transcribed | constructed | [Sargent, "Rational Expectations and Inflation", chapter 3 appendix tables](https://press.princeton.edu/books/paperback/9780691158709/rational-expectations-and-inflation) | | ✅ permitted | ⚠️ unverifiable | ⚠️ unrecovered | 71.6 KB | [lecture-python-intro · inflation_history.md](https://github.com/QuantEcon/lecture-python-intro/blob/main/lectures/inflation_history.md)
[lecture-wasm · inflation_history.md](https://github.com/QuantEcon/lecture-wasm/blob/main/lectures/inflation_history.md)
[lecture-intro.zh-cn · inflation_history.md](https://github.com/QuantEcon/lecture-intro.zh-cn/blob/main/lectures/inflation_history.md)
[test-actions-lecture-intro · inflation_history.md](https://github.com/QuantEcon/test-actions-lecture-intro/blob/main/lectures/inflation_history.md) |
| [**cities_brazil.csv**](https://github.com/QuantEcon/data-lectures/raw/main/lectures/cities_brazil.csv)
World Population Review — Brazilian city populations, 2023 | verbatim | [World Population Review — cities in Brazil](https://worldpopulationreview.com/countries/cities/brazil) | | ⚠️ restricted | ⚠️ unverifiable | n/a (verbatim) | 17.5 KB | [lecture-python-intro · heavy_tails.md](https://github.com/QuantEcon/lecture-python-intro/blob/main/lectures/heavy_tails.md)
[lecture-wasm · heavy_tails.md](https://github.com/QuantEcon/lecture-wasm/blob/main/lectures/heavy_tails.md)
[lecture-intro.zh-cn · heavy_tails.md](https://github.com/QuantEcon/lecture-intro.zh-cn/blob/main/lectures/heavy_tails.md)
[test-actions-lecture-intro · heavy_tails.md](https://github.com/QuantEcon/test-actions-lecture-intro/blob/main/lectures/heavy_tails.md) |
| [**cities_us.csv**](https://github.com/QuantEcon/data-lectures/raw/main/lectures/cities_us.csv)
World Population Review — US city populations, 2023 | verbatim | [World Population Review — US cities](https://worldpopulationreview.com/us-cities) | | ⚠️ restricted | ⚠️ unverifiable | n/a (verbatim) | 47.0 KB | [lecture-python-intro · heavy_tails.md](https://github.com/QuantEcon/lecture-python-intro/blob/main/lectures/heavy_tails.md)
[lecture-wasm · heavy_tails.md](https://github.com/QuantEcon/lecture-wasm/blob/main/lectures/heavy_tails.md)
[lecture-intro.zh-cn · heavy_tails.md](https://github.com/QuantEcon/lecture-intro.zh-cn/blob/main/lectures/heavy_tails.md)
[test-actions-lecture-intro · heavy_tails.md](https://github.com/QuantEcon/test-actions-lecture-intro/blob/main/lectures/heavy_tails.md) |
-| [**countries.csv**](https://github.com/QuantEcon/data-lectures/raw/main/lectures/countries.csv)
WorldData.info country reference table | verbatim | [WorldData.info — country data downloads](https://www.worlddata.info/downloads/) | Proprietary — © WorldData.info, all rights reserved | ⚠️ restricted | ⚠️ unverifiable | n/a (verbatim) | 48.4 KB | [lecture-python-programming · pandas_panel.md](https://github.com/QuantEcon/lecture-python-programming/blob/main/lectures/pandas_panel.md)
[lecture-python.myst · pandas_panel.md](https://github.com/QuantEcon/lecture-python.myst/blob/main/lectures/pandas_panel.md) |
-| [**dette.xlsx**](https://github.com/QuantEcon/data-lectures/raw/main/lectures/dette.xlsx)
French Revolution — public debt, military spending and revenues (Sargent-Velde) | verbatim | [Sargent and Velde, "Macroeconomic Features of the French Revolution" — supporting spreadsheets](https://www.journals.uchicago.edu/doi/10.1086/261992) | | ✅ permitted | ⚠️ unverifiable | n/a (verbatim) | 617.2 KB | [lecture-python-intro · french_rev.md](https://github.com/QuantEcon/lecture-python-intro/blob/main/lectures/french_rev.md)
[lecture-wasm · french_rev.md](https://github.com/QuantEcon/lecture-wasm/blob/main/lectures/french_rev.md) |
-| [**employ.csv**](https://github.com/QuantEcon/data-lectures/raw/main/lectures/employ.csv)
Eurostat employment in Europe — by age and sex, 2007–2016 | constructed | [Eurostat — Employment database](https://ec.europa.eu/eurostat/data/database) | Eurostat reuse (Commission Decision 2011/833/EU) | ✅ permitted | ⚠️ unverifiable | ⚠️ unrecovered | 1.6 MB | [lecture-python-programming · pandas_panel.md](https://github.com/QuantEcon/lecture-python-programming/blob/main/lectures/pandas_panel.md)
[lecture-python.myst · pandas_panel.md](https://github.com/QuantEcon/lecture-python.myst/blob/main/lectures/pandas_panel.md) |
-| [**epl_match_goals.csv**](https://github.com/QuantEcon/data-lectures/raw/main/lectures/epl_match_goals.csv)
English Premier League — full-time scores, 2015-16 to 2024-25 | constructed | [openfootball / football.json](https://github.com/openfootball/football.json) | Public domain | ✅ permitted | ✅ verified | ✅ committed | 203.2 KB | [lecture-python-intro · fitting_distributions.md](https://github.com/QuantEcon/lecture-python-intro/blob/main/lectures/fitting_distributions.md) |
-| [**fig_3.xlsx**](https://github.com/QuantEcon/data-lectures/raw/main/lectures/fig_3.xlsx)
French Revolution — figure 3 series (Sargent-Velde) | verbatim | [Sargent and Velde, "Macroeconomic Features of the French Revolution" — supporting spreadsheets](https://www.journals.uchicago.edu/doi/10.1086/261992) | | ✅ permitted | ⚠️ unverifiable | n/a (verbatim) | 9.2 KB | [lecture-python-intro · french_rev.md](https://github.com/QuantEcon/lecture-python-intro/blob/main/lectures/french_rev.md)
[lecture-wasm · french_rev.md](https://github.com/QuantEcon/lecture-wasm/blob/main/lectures/french_rev.md) |
+| [**countries.csv**](https://github.com/QuantEcon/data-lectures/raw/main/lectures/countries.csv)
WorldData.info country reference table | verbatim | [WorldData.info — country data downloads](https://www.worlddata.info/downloads/) | Proprietary — © WorldData.info, all rights reserved | ⚠️ restricted | ⚠️ unverifiable | n/a (verbatim) | 48.4 KB | [lecture-python-programming · pandas_panel.md](https://github.com/QuantEcon/lecture-python-programming/blob/main/lectures/pandas_panel.md)
[lecture-python.myst · pandas_panel.md](https://github.com/QuantEcon/lecture-python.myst/blob/main/lectures/pandas_panel.md)
[lecture-python.zh-cn · pandas_panel.md](https://github.com/QuantEcon/lecture-python.zh-cn/blob/main/lectures/pandas_panel.md) |
+| [**dette.xlsx**](https://github.com/QuantEcon/data-lectures/raw/main/lectures/dette.xlsx)
French Revolution — public debt, military spending and revenues (Sargent-Velde) | verbatim | [Sargent and Velde, "Macroeconomic Features of the French Revolution" — supporting spreadsheets](https://www.journals.uchicago.edu/doi/10.1086/261992) | | ✅ permitted | ⚠️ unverifiable | n/a (verbatim) | 617.2 KB | [lecture-python-intro · french_rev.md](https://github.com/QuantEcon/lecture-python-intro/blob/main/lectures/french_rev.md)
[lecture-wasm · french_rev.md](https://github.com/QuantEcon/lecture-wasm/blob/main/lectures/french_rev.md)
[lecture-intro.zh-cn · french_rev.md](https://github.com/QuantEcon/lecture-intro.zh-cn/blob/main/lectures/french_rev.md)
[test-actions-lecture-intro · french_rev.md](https://github.com/QuantEcon/test-actions-lecture-intro/blob/main/lectures/french_rev.md) |
+| [**employ.csv**](https://github.com/QuantEcon/data-lectures/raw/main/lectures/employ.csv)
Eurostat employment in Europe — by age and sex, 2007–2016 | constructed | [Eurostat — Employment database](https://ec.europa.eu/eurostat/data/database) | Eurostat reuse (Commission Decision 2011/833/EU) | ✅ permitted | ⚠️ unverifiable | ⚠️ unrecovered | 1.6 MB | [lecture-python-programming · pandas_panel.md](https://github.com/QuantEcon/lecture-python-programming/blob/main/lectures/pandas_panel.md)
[lecture-python.myst · pandas_panel.md](https://github.com/QuantEcon/lecture-python.myst/blob/main/lectures/pandas_panel.md)
[lecture-python.zh-cn · pandas_panel.md](https://github.com/QuantEcon/lecture-python.zh-cn/blob/main/lectures/pandas_panel.md) |
+| [**epl_match_goals.csv**](https://github.com/QuantEcon/data-lectures/raw/main/lectures/epl_match_goals.csv)
English Premier League — full-time scores, 2015-16 to 2024-25 | constructed | [openfootball / football.json](https://github.com/openfootball/football.json) | Public domain | ✅ permitted | ✅ verified | ✅ committed | 203.2 KB | [lecture-python-intro · fitting_distributions.md](https://github.com/QuantEcon/lecture-python-intro/blob/main/lectures/fitting_distributions.md)
[lecture-intro.zh-cn · fitting_distributions.md](https://github.com/QuantEcon/lecture-intro.zh-cn/blob/main/lectures/fitting_distributions.md) |
+| [**fig_3.xlsx**](https://github.com/QuantEcon/data-lectures/raw/main/lectures/fig_3.xlsx)
French Revolution — figure 3 series (Sargent-Velde) | verbatim | [Sargent and Velde, "Macroeconomic Features of the French Revolution" — supporting spreadsheets](https://www.journals.uchicago.edu/doi/10.1086/261992) | | ✅ permitted | ⚠️ unverifiable | n/a (verbatim) | 9.2 KB | [lecture-python-intro · french_rev.md](https://github.com/QuantEcon/lecture-python-intro/blob/main/lectures/french_rev.md)
[lecture-wasm · french_rev.md](https://github.com/QuantEcon/lecture-wasm/blob/main/lectures/french_rev.md)
[lecture-intro.zh-cn · french_rev.md](https://github.com/QuantEcon/lecture-intro.zh-cn/blob/main/lectures/french_rev.md)
[test-actions-lecture-intro · french_rev.md](https://github.com/QuantEcon/test-actions-lecture-intro/blob/main/lectures/french_rev.md) |
| [**forbes-billionaires.csv**](https://github.com/QuantEcon/data-lectures/raw/main/lectures/forbes-billionaires.csv)
Forbes Billionaires — individual net worth | constructed | [Forbes Billionaires](https://www.forbes.com/billionaires/) | | ⚠️ restricted | ⚠️ unverifiable | committed-frozen | 775.7 KB | [lecture-python-intro · heavy_tails.md](https://github.com/QuantEcon/lecture-python-intro/blob/main/lectures/heavy_tails.md)
[lecture-wasm · heavy_tails.md](https://github.com/QuantEcon/lecture-wasm/blob/main/lectures/heavy_tails.md)
[lecture-intro.zh-cn · heavy_tails.md](https://github.com/QuantEcon/lecture-intro.zh-cn/blob/main/lectures/heavy_tails.md)
[test-actions-lecture-intro · heavy_tails.md](https://github.com/QuantEcon/test-actions-lecture-intro/blob/main/lectures/heavy_tails.md) |
| [**forbes-global2000.csv**](https://github.com/QuantEcon/data-lectures/raw/main/lectures/forbes-global2000.csv)
Forbes Global 2000 — firm size measures | constructed | [Forbes Global 2000](https://www.forbes.com/lists/global2000/) | | ⚠️ restricted | ⚠️ unverifiable | committed-frozen | 115.6 KB | [lecture-python-intro · heavy_tails.md](https://github.com/QuantEcon/lecture-python-intro/blob/main/lectures/heavy_tails.md)
[lecture-wasm · heavy_tails.md](https://github.com/QuantEcon/lecture-wasm/blob/main/lectures/heavy_tails.md)
[lecture-intro.zh-cn · heavy_tails.md](https://github.com/QuantEcon/lecture-intro.zh-cn/blob/main/lectures/heavy_tails.md)
[test-actions-lecture-intro · heavy_tails.md](https://github.com/QuantEcon/test-actions-lecture-intro/blob/main/lectures/heavy_tails.md) |
| [**fp.dta**](https://github.com/QuantEcon/data-lectures/raw/main/lectures/fp.dta)
Treisman (2016) Russia's Billionaires — country-year panel of billionaire counts and covariates | verbatim | [Replication package for Treisman (2016), "Russia's Billionaires" (AER Papers & Proceedings)](https://www.aeaweb.org/articles?id=10.1257/aer.p20161068) | | ✅ permitted | ✅ verified | n/a (verbatim) | 1000.1 KB | [lecture-python.myst · mle.md](https://github.com/QuantEcon/lecture-python.myst/blob/main/lectures/mle.md)
[lecture-python.zh-cn · mle.md](https://github.com/QuantEcon/lecture-python.zh-cn/blob/main/lectures/mle.md)
[lecture-stats · mle.md](https://github.com/QuantEcon/lecture-stats/blob/main/lectures/mle.md) |
| [**hansen_singleton_1982_data.csv**](https://github.com/QuantEcon/data-lectures/raw/main/lectures/hansen_singleton_1982_data.csv)
Hansen-Singleton (1982) replication — monthly US gross real market return and consumption growth, 1959-1978 | constructed | [FRED (BEA and BLS monthly series) and the Ken French data library (F-F_Research_Data_Factors)](https://mba.tuck.dartmouth.edu/pages/faculty/ken.french/data_library.html) | | ✅ permitted | ✅ verified | ✅ committed | 11.4 KB | [lecture-python.myst · hansen_singleton_1982.md](https://github.com/QuantEcon/lecture-python.myst/blob/main/lectures/hansen_singleton_1982.md)
[lecture-python.zh-cn · hansen_singleton_1982.md](https://github.com/QuantEcon/lecture-python.zh-cn/blob/main/lectures/hansen_singleton_1982.md) |
| [**hansen_singleton_1983_data.csv**](https://github.com/QuantEcon/data-lectures/raw/main/lectures/hansen_singleton_1983_data.csv)
Hansen-Singleton (1983) replication — monthly US returns, consumption and inflation, 1959-1978 | constructed | [FRED (BEA and BLS monthly series) and the Ken French data library (F-F_Research_Data_Factors)](https://mba.tuck.dartmouth.edu/pages/faculty/ken.french/data_library.html) | | ✅ permitted | ✅ verified | ✅ committed | 25.5 KB | [lecture-python.myst · hansen_singleton_1983.md](https://github.com/QuantEcon/lecture-python.myst/blob/main/lectures/hansen_singleton_1983.md)
[lecture-python.zh-cn · hansen_singleton_1983.md](https://github.com/QuantEcon/lecture-python.zh-cn/blob/main/lectures/hansen_singleton_1983.md) |
-| [**japan_deaths_by_age.csv**](https://github.com/QuantEcon/data-lectures/raw/main/lectures/japan_deaths_by_age.csv)
Japan — deaths by single year of age, 2023 | constructed | [United Nations, Department of Economic and Social Affairs, Population Division — World Population Prospects 2024](https://population.un.org/wpp/downloads) | CC BY 3.0 IGO | ✅ permitted | ✅ verified | ✅ committed | 1.7 KB | [lecture-python-intro · observed_distributions.md](https://github.com/QuantEcon/lecture-python-intro/blob/main/lectures/observed_distributions.md)
[lecture-python-intro · fitting_distributions.md](https://github.com/QuantEcon/lecture-python-intro/blob/main/lectures/fitting_distributions.md) |
-| [**japan_earthquakes.csv**](https://github.com/QuantEcon/data-lectures/raw/main/lectures/japan_earthquakes.csv)
Japan region — earthquakes of magnitude 5 and above, 2000-2024 | constructed | [Advanced National Seismic System (ANSS) Comprehensive Earthquake Catalog (ComCat), US Geological Survey](https://earthquake.usgs.gov/earthquakes/search/) | US Government work — public domain | ✅ permitted | ✅ verified | ✅ committed | 172.8 KB | [lecture-python-intro · fitting_distributions.md](https://github.com/QuantEcon/lecture-python-intro/blob/main/lectures/fitting_distributions.md) |
+| [**japan_deaths_by_age.csv**](https://github.com/QuantEcon/data-lectures/raw/main/lectures/japan_deaths_by_age.csv)
Japan — deaths by single year of age, 2023 | constructed | [United Nations, Department of Economic and Social Affairs, Population Division — World Population Prospects 2024](https://population.un.org/wpp/downloads) | CC BY 3.0 IGO | ✅ permitted | ✅ verified | ✅ committed | 1.7 KB | [lecture-python-intro · observed_distributions.md](https://github.com/QuantEcon/lecture-python-intro/blob/main/lectures/observed_distributions.md)
[lecture-python-intro · fitting_distributions.md](https://github.com/QuantEcon/lecture-python-intro/blob/main/lectures/fitting_distributions.md)
[lecture-intro.zh-cn · fitting_distributions.md](https://github.com/QuantEcon/lecture-intro.zh-cn/blob/main/lectures/fitting_distributions.md)
[lecture-intro.zh-cn · observed_distributions.md](https://github.com/QuantEcon/lecture-intro.zh-cn/blob/main/lectures/observed_distributions.md) |
+| [**japan_earthquakes.csv**](https://github.com/QuantEcon/data-lectures/raw/main/lectures/japan_earthquakes.csv)
Japan region — earthquakes of magnitude 5 and above, 2000-2024 | constructed | [Advanced National Seismic System (ANSS) Comprehensive Earthquake Catalog (ComCat), US Geological Survey](https://earthquake.usgs.gov/earthquakes/search/) | US Government work — public domain | ✅ permitted | ✅ verified | ✅ committed | 172.8 KB | [lecture-python-intro · fitting_distributions.md](https://github.com/QuantEcon/lecture-python-intro/blob/main/lectures/fitting_distributions.md)
[lecture-intro.zh-cn · fitting_distributions.md](https://github.com/QuantEcon/lecture-intro.zh-cn/blob/main/lectures/fitting_distributions.md) |
| [**japan_population_by_age.csv**](https://github.com/QuantEcon/data-lectures/raw/main/lectures/japan_population_by_age.csv)
Japan — population by single year of age, 2024 | constructed | [Population Estimates, Statistics Bureau of Japan, Ministry of Internal Affairs and Communications](https://www.stat.go.jp/english/data/jinsui/index.html) | Japan Statistics Bureau terms of use | ✅ permitted | ✅ verified | ✅ committed | 1.3 KB | [lecture-python-intro · prob_dist.md](https://github.com/QuantEcon/lecture-python-intro/blob/main/lectures/prob_dist.md) |
| [**life-expectancy-vs-gdp-per-capita.csv**](https://github.com/QuantEcon/data-lectures/raw/main/lectures/life-expectancy-vs-gdp-per-capita.csv)
Life expectancy vs GDP per capita — Our World in Data grapher export | verbatim | [Our World in Data — "Life expectancy vs. GDP per capita" grapher](https://ourworldindata.org/grapher/life-expectancy-vs-gdp-per-capita) | | ✅ permitted | ⇄ diverged | n/a (verbatim) | 2.0 MB | [lecture-python-intro · simple_linear_regression.md](https://github.com/QuantEcon/lecture-python-intro/blob/main/lectures/simple_linear_regression.md)
[lecture-wasm · simple_linear_regression.md](https://github.com/QuantEcon/lecture-wasm/blob/main/lectures/simple_linear_regression.md)
[lecture-intro.zh-cn · simple_linear_regression.md](https://github.com/QuantEcon/lecture-intro.zh-cn/blob/main/lectures/simple_linear_regression.md)
[test-actions-lecture-intro · simple_linear_regression.md](https://github.com/QuantEcon/test-actions-lecture-intro/blob/main/lectures/simple_linear_regression.md) |
| [**lingcod_msy_recovery.csv**](https://github.com/QuantEcon/data-lectures/raw/main/lectures/lingcod_msy_recovery.csv)
Pacific Coast lingcod — biomass and fishing pressure relative to MSY | constructed | [RAM Legacy Stock Assessment Database](https://www.ramlegacy.org/) | CC BY 4.0 | ✅ permitted | ⚠️ unverifiable | ⚠️ unrecovered | 2.3 KB | [lecture-python-intro · msy_fishery.md](https://github.com/QuantEcon/lecture-python-intro/blob/main/lectures/msy_fishery.md) |
-| [**longprices.xls**](https://github.com/QuantEcon/data-lectures/raw/main/lectures/longprices.xls)
Price levels in four hard-currency countries, 1600-2000 | verbatim | [Sargent and Velde, "The Big Problem of Small Change" — supporting data](https://press.princeton.edu/books/hardcover/9780691116358/the-big-problem-of-small-change) | | ✅ permitted | ⚠️ unverifiable | n/a (verbatim) | 379.5 KB | [lecture-python-intro · inflation_history.md](https://github.com/QuantEcon/lecture-python-intro/blob/main/lectures/inflation_history.md)
[lecture-wasm · inflation_history.md](https://github.com/QuantEcon/lecture-wasm/blob/main/lectures/inflation_history.md) |
+| [**longprices.xls**](https://github.com/QuantEcon/data-lectures/raw/main/lectures/longprices.xls)
Price levels in four hard-currency countries, 1600-2000 | verbatim | [Sargent and Velde, "The Big Problem of Small Change" — supporting data](https://press.princeton.edu/books/hardcover/9780691116358/the-big-problem-of-small-change) | | ✅ permitted | ⚠️ unverifiable | n/a (verbatim) | 379.5 KB | [lecture-python-intro · inflation_history.md](https://github.com/QuantEcon/lecture-python-intro/blob/main/lectures/inflation_history.md)
[lecture-wasm · inflation_history.md](https://github.com/QuantEcon/lecture-wasm/blob/main/lectures/inflation_history.md)
[lecture-intro.zh-cn · inflation_history.md](https://github.com/QuantEcon/lecture-intro.zh-cn/blob/main/lectures/inflation_history.md)
[test-actions-lecture-intro · inflation_history.md](https://github.com/QuantEcon/test-actions-lecture-intro/blob/main/lectures/inflation_history.md) |
| [**maketable1.dta**](https://github.com/QuantEcon/data-lectures/raw/main/lectures/maketable1.dta)
Acemoglu-Johnson-Robinson (2001) colonial origins — table 1 replication data | verbatim | [Daron Acemoglu data archive — "The Colonial Origins of Comparative Development", table 1 (program and data files)](https://economics.mit.edu/people/faculty/daron-acemoglu/data-archive) | | ✅ permitted | ✅ verified | n/a (verbatim) | 14.1 KB | [lecture-python.myst · ols.md](https://github.com/QuantEcon/lecture-python.myst/blob/main/lectures/ols.md)
[lecture-python.zh-cn · ols.md](https://github.com/QuantEcon/lecture-python.zh-cn/blob/main/lectures/ols.md) |
| [**maketable2.dta**](https://github.com/QuantEcon/data-lectures/raw/main/lectures/maketable2.dta)
Acemoglu-Johnson-Robinson (2001) colonial origins — table 2 replication data | verbatim | [Daron Acemoglu data archive — "The Colonial Origins of Comparative Development", table 2 (program and data files)](https://economics.mit.edu/people/faculty/daron-acemoglu/data-archive) | | ✅ permitted | ✅ verified | n/a (verbatim) | 10.9 KB | [lecture-python.myst · ols.md](https://github.com/QuantEcon/lecture-python.myst/blob/main/lectures/ols.md)
[lecture-python.zh-cn · ols.md](https://github.com/QuantEcon/lecture-python.zh-cn/blob/main/lectures/ols.md) |
| [**maketable4.dta**](https://github.com/QuantEcon/data-lectures/raw/main/lectures/maketable4.dta)
Acemoglu-Johnson-Robinson (2001) colonial origins — table 4 replication data | verbatim | [Daron Acemoglu data archive — "The Colonial Origins of Comparative Development", table 4 (program and data files)](https://economics.mit.edu/people/faculty/daron-acemoglu/data-archive) | | ✅ permitted | ✅ verified | n/a (verbatim) | 11.7 KB | [lecture-python.myst · ols.md](https://github.com/QuantEcon/lecture-python.myst/blob/main/lectures/ols.md)
[lecture-python.zh-cn · ols.md](https://github.com/QuantEcon/lecture-python.zh-cn/blob/main/lectures/ols.md) |
-| [**mpd2020.xlsx**](https://github.com/QuantEcon/data-lectures/raw/main/lectures/mpd2020.xlsx)
Maddison Project Database 2020 — GDP per capita and population, 1 CE to 2018 | constructed | [Maddison Project Database, version 2020](https://www.rug.nl/ggdc/historicaldevelopment/maddison/releases/maddison-project-database-2020) | CC BY 4.0 | ✅ permitted | ⇄ diverged | ⚠️ unrecovered | 1.7 MB | [lecture-python-intro · long_run_growth.md](https://github.com/QuantEcon/lecture-python-intro/blob/main/lectures/long_run_growth.md)
[lecture-wasm · long_run_growth.md](https://github.com/QuantEcon/lecture-wasm/blob/main/lectures/long_run_growth.md) |
-| [**nom_balances.npy**](https://github.com/QuantEcon/data-lectures/raw/main/lectures/nom_balances.npy)
French Revolution — monthly nominal assignat balances, 1789-1796 | constructed | unrecorded | | ✅ permitted | ⚠️ unverifiable | ⚠️ unrecovered | 1.4 KB | [lecture-python-intro · french_rev.md](https://github.com/QuantEcon/lecture-python-intro/blob/main/lectures/french_rev.md)
[lecture-wasm · french_rev.md](https://github.com/QuantEcon/lecture-wasm/blob/main/lectures/french_rev.md) |
-| [**realwage.csv**](https://github.com/QuantEcon/data-lectures/raw/main/lectures/realwage.csv)
OECD real minimum wages — 32 countries, 2006–2016 | constructed | [OECD — Real minimum wages (RMW)](https://stats.oecd.org/Index.aspx?DataSetCode=RMW) | CC BY 4.0 | ✅ permitted | ⚠️ unverifiable | ⚠️ unrecovered | 118.7 KB | [lecture-python-programming · pandas_panel.md](https://github.com/QuantEcon/lecture-python-programming/blob/main/lectures/pandas_panel.md)
[lecture-python.myst · pandas_panel.md](https://github.com/QuantEcon/lecture-python.myst/blob/main/lectures/pandas_panel.md) |
-| [**us_adult_heights.csv**](https://github.com/QuantEcon/data-lectures/raw/main/lectures/us_adult_heights.csv)
United States — adult standing height by sex, NHANES 2015-2018 | constructed | [National Health and Nutrition Examination Survey (NHANES), US Centers for Disease Control and Prevention, National Center for Health Statistics](https://www.cdc.gov/nchs/nhanes/index.htm) | US Government work — public domain | ✅ permitted | ✅ verified | ✅ committed | 123.1 KB | [lecture-python-intro · prob_dist.md](https://github.com/QuantEcon/lecture-python-intro/blob/main/lectures/prob_dist.md)
[lecture-python-intro · observed_distributions.md](https://github.com/QuantEcon/lecture-python-intro/blob/main/lectures/observed_distributions.md)
[lecture-python-intro · fitting_distributions.md](https://github.com/QuantEcon/lecture-python-intro/blob/main/lectures/fitting_distributions.md) |
+| [**mpd2020.xlsx**](https://github.com/QuantEcon/data-lectures/raw/main/lectures/mpd2020.xlsx)
Maddison Project Database 2020 — GDP per capita and population, 1 CE to 2018 | constructed | [Maddison Project Database, version 2020](https://www.rug.nl/ggdc/historicaldevelopment/maddison/releases/maddison-project-database-2020) | CC BY 4.0 | ✅ permitted | ⇄ diverged | ⚠️ unrecovered | 1.7 MB | [lecture-python-intro · long_run_growth.md](https://github.com/QuantEcon/lecture-python-intro/blob/main/lectures/long_run_growth.md)
[lecture-wasm · long_run_growth.md](https://github.com/QuantEcon/lecture-wasm/blob/main/lectures/long_run_growth.md)
[lecture-intro.zh-cn · long_run_growth.md](https://github.com/QuantEcon/lecture-intro.zh-cn/blob/main/lectures/long_run_growth.md)
[test-actions-lecture-intro · long_run_growth.md](https://github.com/QuantEcon/test-actions-lecture-intro/blob/main/lectures/long_run_growth.md) |
+| [**nom_balances.npy**](https://github.com/QuantEcon/data-lectures/raw/main/lectures/nom_balances.npy)
French Revolution — monthly nominal assignat balances, 1789-1796 | constructed | unrecorded | | ✅ permitted | ⚠️ unverifiable | ⚠️ unrecovered | 1.4 KB | [lecture-python-intro · french_rev.md](https://github.com/QuantEcon/lecture-python-intro/blob/main/lectures/french_rev.md)
[lecture-wasm · french_rev.md](https://github.com/QuantEcon/lecture-wasm/blob/main/lectures/french_rev.md)
[lecture-intro.zh-cn · french_rev.md](https://github.com/QuantEcon/lecture-intro.zh-cn/blob/main/lectures/french_rev.md)
[test-actions-lecture-intro · french_rev.md](https://github.com/QuantEcon/test-actions-lecture-intro/blob/main/lectures/french_rev.md)
⚠️ Reads a local `datasets/` copy, not this file |
+| [**realwage.csv**](https://github.com/QuantEcon/data-lectures/raw/main/lectures/realwage.csv)
OECD real minimum wages — 32 countries, 2006–2016 | constructed | [OECD — Real minimum wages (RMW)](https://stats.oecd.org/Index.aspx?DataSetCode=RMW) | CC BY 4.0 | ✅ permitted | ⚠️ unverifiable | ⚠️ unrecovered | 118.7 KB | [lecture-python-programming · pandas_panel.md](https://github.com/QuantEcon/lecture-python-programming/blob/main/lectures/pandas_panel.md)
[lecture-python.myst · pandas_panel.md](https://github.com/QuantEcon/lecture-python.myst/blob/main/lectures/pandas_panel.md)
[lecture-python.zh-cn · pandas_panel.md](https://github.com/QuantEcon/lecture-python.zh-cn/blob/main/lectures/pandas_panel.md) |
+| [**us_adult_heights.csv**](https://github.com/QuantEcon/data-lectures/raw/main/lectures/us_adult_heights.csv)
United States — adult standing height by sex, NHANES 2015-2018 | constructed | [National Health and Nutrition Examination Survey (NHANES), US Centers for Disease Control and Prevention, National Center for Health Statistics](https://www.cdc.gov/nchs/nhanes/index.htm) | US Government work — public domain | ✅ permitted | ✅ verified | ✅ committed | 123.1 KB | [lecture-python-intro · prob_dist.md](https://github.com/QuantEcon/lecture-python-intro/blob/main/lectures/prob_dist.md)
[lecture-python-intro · observed_distributions.md](https://github.com/QuantEcon/lecture-python-intro/blob/main/lectures/observed_distributions.md)
[lecture-python-intro · fitting_distributions.md](https://github.com/QuantEcon/lecture-python-intro/blob/main/lectures/fitting_distributions.md)
[lecture-intro.zh-cn · fitting_distributions.md](https://github.com/QuantEcon/lecture-intro.zh-cn/blob/main/lectures/fitting_distributions.md)
[lecture-intro.zh-cn · observed_distributions.md](https://github.com/QuantEcon/lecture-intro.zh-cn/blob/main/lectures/observed_distributions.md)
[lecture-intro.zh-cn · prob_dist.md](https://github.com/QuantEcon/lecture-intro.zh-cn/blob/main/lectures/prob_dist.md)
⚠️ Reads a local `_static/lecture_specific/prob_dist/` copy, not this file, under a comment that still says to switch once the datasets repo exists |
| [**usa-gini-nwealth-tincome-lincome.csv**](https://github.com/QuantEcon/data-lectures/raw/main/lectures/usa-gini-nwealth-tincome-lincome.csv)
US Gini coefficients — net wealth, total income and labour income, 1950-2016 | constructed | [Derived from SCF_plus_mini.csv (this repo), an extract of the SCF+ panel](https://github.com/QuantEcon/data-lectures/blob/main/lectures/SCF_plus_mini.csv) | | ✅ permitted | ⚠️ unverifiable | committed-frozen | 1.2 KB | [lecture-python-intro · inequality.md](https://github.com/QuantEcon/lecture-python-intro/blob/main/lectures/inequality.md)
[lecture-wasm · inequality.md](https://github.com/QuantEcon/lecture-wasm/blob/main/lectures/inequality.md)
[lecture-intro.zh-cn · inequality.md](https://github.com/QuantEcon/lecture-intro.zh-cn/blob/main/lectures/inequality.md)
[test-actions-lecture-intro · inequality.md](https://github.com/QuantEcon/test-actions-lecture-intro/blob/main/lectures/inequality.md) |
---
diff --git a/lectures/ames_house_prices.csv.yml b/lectures/ames_house_prices.csv.yml
index 20d8fca..43d69af 100644
--- a/lectures/ames_house_prices.csv.yml
+++ b/lectures/ames_house_prices.csv.yml
@@ -70,6 +70,10 @@ consumers:
file: lectures/observed_distributions.md
- repo: QuantEcon/lecture-python-intro
file: lectures/fitting_distributions.md
+ - repo: QuantEcon/lecture-intro.zh-cn
+ file: lectures/fitting_distributions.md
+ - repo: QuantEcon/lecture-intro.zh-cn
+ file: lectures/observed_distributions.md
builder: builders/ames_house_prices.py
builder_status: committed
diff --git a/lectures/assignat.xlsx.yml b/lectures/assignat.xlsx.yml
index e7451fe..f5f1730 100644
--- a/lectures/assignat.xlsx.yml
+++ b/lectures/assignat.xlsx.yml
@@ -103,15 +103,21 @@ schema:
row_count_floor: null # per-range, declared above
known_nulls: {}
-# Every lecture that reads this file FROM THIS REPO. Empty does not mean the
-# file is unused -- it may still be consumed from a lecture repo's own copy,
-# which is exactly what a repoint moves. Populated in the repoint PR, at the
-# same time migration.yml flips to `repointed` (PLAN, "Repoint rules").
+# Every lecture that CONSUMES this dataset. The list answers "what must be
+# rebuilt if these bytes change", so it also names a consumer that still reads
+# a local copy rather than this repo -- such an entry carries a `note` saying
+# so, and is the only machine-readable trace of that divergence. Empty means
+# nothing consumes it yet. Populated in the repoint PR, at the same time
+# migration.yml flips to `repointed` (PLAN, "Repoint rules").
consumers:
- repo: QuantEcon/lecture-python-intro
file: lectures/french_rev.md
- repo: QuantEcon/lecture-wasm
file: lectures/french_rev.md
+ - repo: QuantEcon/lecture-intro.zh-cn
+ file: lectures/french_rev.md
+ - repo: QuantEcon/test-actions-lecture-intro
+ file: lectures/french_rev.md
builder: null
builder_status: not-applicable # verbatim republication -- nothing to build
diff --git a/lectures/caron.npy.yml b/lectures/caron.npy.yml
index 2f1293d..4a7944f 100644
--- a/lectures/caron.npy.yml
+++ b/lectures/caron.npy.yml
@@ -90,15 +90,26 @@ schema:
of this array with rows 14:77 of nom_balances.npy. Changing the length of
either silently misaligns the other.
-# Every lecture that reads this file FROM THIS REPO. Empty does not mean the
-# file is unused -- it may still be consumed from a lecture repo's own copy,
-# which is exactly what a repoint moves. Populated in the repoint PR, at the
-# same time migration.yml flips to `repointed` (PLAN, "Repoint rules").
+# Every lecture that CONSUMES this dataset. The list answers "what must be
+# rebuilt if these bytes change", so it also names a consumer that still reads
+# a local copy rather than this repo -- such an entry carries a `note` saying
+# so, and is the only machine-readable trace of that divergence. Empty means
+# nothing consumes it yet. Populated in the repoint PR, at the same time
+# migration.yml flips to `repointed` (PLAN, "Repoint rules").
consumers:
- repo: QuantEcon/lecture-python-intro
file: lectures/french_rev.md
- repo: QuantEcon/lecture-wasm
file: lectures/french_rev.md
+ - repo: QuantEcon/lecture-intro.zh-cn
+ file: lectures/french_rev.md
+ - repo: QuantEcon/test-actions-lecture-intro
+ file: lectures/french_rev.md
+ note: >
+ Reads a local `datasets/` copy, not this file. A PARTIAL repoint: the
+ three .xlsx reads in the same lecture were repointed and these two .npy
+ reads were not, and the lecture is outside the canary's build set so
+ nothing fails. Tracked in QuantEcon/workspace-lectures#46.
# ---------------------------------------------------------------------------
# Builder
diff --git a/lectures/chapter_3.xlsx.yml b/lectures/chapter_3.xlsx.yml
index 6015398..7374b9a 100644
--- a/lectures/chapter_3.xlsx.yml
+++ b/lectures/chapter_3.xlsx.yml
@@ -90,15 +90,21 @@ schema:
map to strip whitespace and handle footnote markers), so dtypes are not
stable across sheets and are deliberately not asserted here.
-# Every lecture that reads this file FROM THIS REPO. Empty does not mean the
-# file is unused -- it may still be consumed from a lecture repo's own copy,
-# which is exactly what a repoint moves. Populated in the repoint PR, at the
-# same time migration.yml flips to `repointed` (PLAN, "Repoint rules").
+# Every lecture that CONSUMES this dataset. The list answers "what must be
+# rebuilt if these bytes change", so it also names a consumer that still reads
+# a local copy rather than this repo -- such an entry carries a `note` saying
+# so, and is the only machine-readable trace of that divergence. Empty means
+# nothing consumes it yet. Populated in the repoint PR, at the same time
+# migration.yml flips to `repointed` (PLAN, "Repoint rules").
consumers:
- repo: QuantEcon/lecture-python-intro
file: lectures/inflation_history.md
- repo: QuantEcon/lecture-wasm
file: lectures/inflation_history.md
+ - repo: QuantEcon/lecture-intro.zh-cn
+ file: lectures/inflation_history.md
+ - repo: QuantEcon/test-actions-lecture-intro
+ file: lectures/inflation_history.md
# ---------------------------------------------------------------------------
# Builder
diff --git a/lectures/countries.csv.yml b/lectures/countries.csv.yml
index dd66a7b..f916dc3 100644
--- a/lectures/countries.csv.yml
+++ b/lectures/countries.csv.yml
@@ -89,6 +89,8 @@ consumers:
file: lectures/pandas_panel.md
- repo: QuantEcon/lecture-python.myst
file: lectures/pandas_panel.md
+ - repo: QuantEcon/lecture-python.zh-cn
+ file: lectures/pandas_panel.md
# verbatim — no builder
builder_status: not-applicable
diff --git a/lectures/dette.xlsx.yml b/lectures/dette.xlsx.yml
index 5c1a733..92b660e 100644
--- a/lectures/dette.xlsx.yml
+++ b/lectures/dette.xlsx.yml
@@ -108,15 +108,21 @@ schema:
sparse layouts in a working spreadsheet, and the lecture indexes specific
columns out of them rather than consuming the block whole.
-# Every lecture that reads this file FROM THIS REPO. Empty does not mean the
-# file is unused -- it may still be consumed from a lecture repo's own copy,
-# which is exactly what a repoint moves. Populated in the repoint PR, at the
-# same time migration.yml flips to `repointed` (PLAN, "Repoint rules").
+# Every lecture that CONSUMES this dataset. The list answers "what must be
+# rebuilt if these bytes change", so it also names a consumer that still reads
+# a local copy rather than this repo -- such an entry carries a `note` saying
+# so, and is the only machine-readable trace of that divergence. Empty means
+# nothing consumes it yet. Populated in the repoint PR, at the same time
+# migration.yml flips to `repointed` (PLAN, "Repoint rules").
consumers:
- repo: QuantEcon/lecture-python-intro
file: lectures/french_rev.md
- repo: QuantEcon/lecture-wasm
file: lectures/french_rev.md
+ - repo: QuantEcon/lecture-intro.zh-cn
+ file: lectures/french_rev.md
+ - repo: QuantEcon/test-actions-lecture-intro
+ file: lectures/french_rev.md
builder: null
builder_status: not-applicable # verbatim republication -- nothing to build
diff --git a/lectures/employ.csv.yml b/lectures/employ.csv.yml
index 26f1668..bb0d88f 100644
--- a/lectures/employ.csv.yml
+++ b/lectures/employ.csv.yml
@@ -75,6 +75,8 @@ consumers:
file: lectures/pandas_panel.md
- repo: QuantEcon/lecture-python.myst
file: lectures/pandas_panel.md
+ - repo: QuantEcon/lecture-python.zh-cn
+ file: lectures/pandas_panel.md
builder: null
builder_status: unrecovered # inherited constructed file (PLAN Phase 9)
diff --git a/lectures/epl_match_goals.csv.yml b/lectures/epl_match_goals.csv.yml
index 864bc2d..41d983d 100644
--- a/lectures/epl_match_goals.csv.yml
+++ b/lectures/epl_match_goals.csv.yml
@@ -64,6 +64,8 @@ schema:
consumers:
- repo: QuantEcon/lecture-python-intro
file: lectures/fitting_distributions.md
+ - repo: QuantEcon/lecture-intro.zh-cn
+ file: lectures/fitting_distributions.md
builder: builders/epl_match_goals.py
builder_status: committed
diff --git a/lectures/fig_3.xlsx.yml b/lectures/fig_3.xlsx.yml
index 7d22047..467405a 100644
--- a/lectures/fig_3.xlsx.yml
+++ b/lectures/fig_3.xlsx.yml
@@ -83,15 +83,21 @@ schema:
row_count_floor: 30 # exact by design -- a frozen 30-row block
known_nulls: {} # declared per column above
-# Every lecture that reads this file FROM THIS REPO. Empty does not mean the
-# file is unused -- it may still be consumed from a lecture repo's own copy,
-# which is exactly what a repoint moves. Populated in the repoint PR, at the
-# same time migration.yml flips to `repointed` (PLAN, "Repoint rules").
+# Every lecture that CONSUMES this dataset. The list answers "what must be
+# rebuilt if these bytes change", so it also names a consumer that still reads
+# a local copy rather than this repo -- such an entry carries a `note` saying
+# so, and is the only machine-readable trace of that divergence. Empty means
+# nothing consumes it yet. Populated in the repoint PR, at the same time
+# migration.yml flips to `repointed` (PLAN, "Repoint rules").
consumers:
- repo: QuantEcon/lecture-python-intro
file: lectures/french_rev.md
- repo: QuantEcon/lecture-wasm
file: lectures/french_rev.md
+ - repo: QuantEcon/lecture-intro.zh-cn
+ file: lectures/french_rev.md
+ - repo: QuantEcon/test-actions-lecture-intro
+ file: lectures/french_rev.md
builder: null
builder_status: not-applicable # verbatim republication -- nothing to build
diff --git a/lectures/japan_deaths_by_age.csv.yml b/lectures/japan_deaths_by_age.csv.yml
index e70b399..4a61774 100644
--- a/lectures/japan_deaths_by_age.csv.yml
+++ b/lectures/japan_deaths_by_age.csv.yml
@@ -73,6 +73,10 @@ consumers:
file: lectures/observed_distributions.md
- repo: QuantEcon/lecture-python-intro
file: lectures/fitting_distributions.md
+ - repo: QuantEcon/lecture-intro.zh-cn
+ file: lectures/fitting_distributions.md
+ - repo: QuantEcon/lecture-intro.zh-cn
+ file: lectures/observed_distributions.md
builder: builders/japan_deaths_by_age.py
builder_status: committed
diff --git a/lectures/japan_earthquakes.csv.yml b/lectures/japan_earthquakes.csv.yml
index 140a2f3..33b73f1 100644
--- a/lectures/japan_earthquakes.csv.yml
+++ b/lectures/japan_earthquakes.csv.yml
@@ -74,6 +74,8 @@ schema:
consumers:
- repo: QuantEcon/lecture-python-intro
file: lectures/fitting_distributions.md
+ - repo: QuantEcon/lecture-intro.zh-cn
+ file: lectures/fitting_distributions.md
builder: builders/japan_earthquakes.py
builder_status: committed
diff --git a/lectures/longprices.xls.yml b/lectures/longprices.xls.yml
index 5843c62..73ca313 100644
--- a/lectures/longprices.xls.yml
+++ b/lectures/longprices.xls.yml
@@ -88,15 +88,21 @@ schema:
row_count_floor: 401 # frozen historical extract: exact by design
known_nulls: {} # declared per sheet above
-# Every lecture that reads this file FROM THIS REPO. Empty does not mean the
-# file is unused -- it may still be consumed from a lecture repo's own copy,
-# which is exactly what a repoint moves. Populated in the repoint PR, at the
-# same time migration.yml flips to `repointed` (PLAN, "Repoint rules").
+# Every lecture that CONSUMES this dataset. The list answers "what must be
+# rebuilt if these bytes change", so it also names a consumer that still reads
+# a local copy rather than this repo -- such an entry carries a `note` saying
+# so, and is the only machine-readable trace of that divergence. Empty means
+# nothing consumes it yet. Populated in the repoint PR, at the same time
+# migration.yml flips to `repointed` (PLAN, "Repoint rules").
consumers:
- repo: QuantEcon/lecture-python-intro
file: lectures/inflation_history.md
- repo: QuantEcon/lecture-wasm
file: lectures/inflation_history.md
+ - repo: QuantEcon/lecture-intro.zh-cn
+ file: lectures/inflation_history.md
+ - repo: QuantEcon/test-actions-lecture-intro
+ file: lectures/inflation_history.md
builder: null
builder_status: not-applicable # verbatim republication -- nothing to build
diff --git a/lectures/mpd2020.xlsx.yml b/lectures/mpd2020.xlsx.yml
index 80f6201..5dfbf2d 100644
--- a/lectures/mpd2020.xlsx.yml
+++ b/lectures/mpd2020.xlsx.yml
@@ -134,16 +134,22 @@ schema:
# ---------------------------------------------------------------------------
# Consumers -- how a correction knows what to rebuild
# ---------------------------------------------------------------------------
-# Every lecture that reads this file FROM THIS REPO. Empty does not mean the
-# file is unused -- it may still be consumed from a lecture repo's own copy,
-# which is exactly what a repoint moves. Populated in the repoint PR, at the
-# same time migration.yml flips to `repointed` (PLAN, "Repoint rules").
+# Every lecture that CONSUMES this dataset. The list answers "what must be
+# rebuilt if these bytes change", so it also names a consumer that still reads
+# a local copy rather than this repo -- such an entry carries a `note` saying
+# so, and is the only machine-readable trace of that divergence. Empty means
+# nothing consumes it yet. Populated in the repoint PR, at the same time
+# migration.yml flips to `repointed` (PLAN, "Repoint rules").
consumers:
- repo: QuantEcon/lecture-python-intro
file: lectures/long_run_growth.md
- repo: QuantEcon/lecture-wasm
file: lectures/long_run_growth.md
+ - repo: QuantEcon/lecture-intro.zh-cn
+ file: lectures/long_run_growth.md
+ - repo: QuantEcon/test-actions-lecture-intro
+ file: lectures/long_run_growth.md
# ---------------------------------------------------------------------------
# Builder
diff --git a/lectures/nom_balances.npy.yml b/lectures/nom_balances.npy.yml
index e0ba2ff..2e3852e 100644
--- a/lectures/nom_balances.npy.yml
+++ b/lectures/nom_balances.npy.yml
@@ -85,15 +85,26 @@ schema:
(late 1789 through 1790) exist to extend the circulation series before the
price series begins, and must not be trimmed.
-# Every lecture that reads this file FROM THIS REPO. Empty does not mean the
-# file is unused -- it may still be consumed from a lecture repo's own copy,
-# which is exactly what a repoint moves. Populated in the repoint PR, at the
-# same time migration.yml flips to `repointed` (PLAN, "Repoint rules").
+# Every lecture that CONSUMES this dataset. The list answers "what must be
+# rebuilt if these bytes change", so it also names a consumer that still reads
+# a local copy rather than this repo -- such an entry carries a `note` saying
+# so, and is the only machine-readable trace of that divergence. Empty means
+# nothing consumes it yet. Populated in the repoint PR, at the same time
+# migration.yml flips to `repointed` (PLAN, "Repoint rules").
consumers:
- repo: QuantEcon/lecture-python-intro
file: lectures/french_rev.md
- repo: QuantEcon/lecture-wasm
file: lectures/french_rev.md
+ - repo: QuantEcon/lecture-intro.zh-cn
+ file: lectures/french_rev.md
+ - repo: QuantEcon/test-actions-lecture-intro
+ file: lectures/french_rev.md
+ note: >
+ Reads a local `datasets/` copy, not this file. A PARTIAL repoint: the
+ three .xlsx reads in the same lecture were repointed and these two .npy
+ reads were not, and the lecture is outside the canary's build set so
+ nothing fails. Tracked in QuantEcon/workspace-lectures#46.
# ---------------------------------------------------------------------------
# Builder
diff --git a/lectures/realwage.csv.yml b/lectures/realwage.csv.yml
index 3b1379a..d692763 100644
--- a/lectures/realwage.csv.yml
+++ b/lectures/realwage.csv.yml
@@ -67,6 +67,8 @@ consumers:
file: lectures/pandas_panel.md
- repo: QuantEcon/lecture-python.myst
file: lectures/pandas_panel.md
+ - repo: QuantEcon/lecture-python.zh-cn
+ file: lectures/pandas_panel.md
builder: null
builder_status: unrecovered # inherited constructed file (PLAN Phase 9)
diff --git a/lectures/us_adult_heights.csv.yml b/lectures/us_adult_heights.csv.yml
index 5d2bd40..b61f210 100644
--- a/lectures/us_adult_heights.csv.yml
+++ b/lectures/us_adult_heights.csv.yml
@@ -81,6 +81,17 @@ consumers:
file: lectures/observed_distributions.md
- repo: QuantEcon/lecture-python-intro
file: lectures/fitting_distributions.md
+ - repo: QuantEcon/lecture-intro.zh-cn
+ file: lectures/fitting_distributions.md
+ - repo: QuantEcon/lecture-intro.zh-cn
+ file: lectures/observed_distributions.md
+ - repo: QuantEcon/lecture-intro.zh-cn
+ file: lectures/prob_dist.md
+ note: >
+ Reads a local `_static/lecture_specific/prob_dist/` copy, not this file,
+ under a comment that still says to switch once the datasets repo exists.
+ The same repo's other two reads of this dataset WERE repointed. The copy
+ is byte-identical. Tracked in QuantEcon/workspace-lectures#46.
builder: builders/us_adult_heights.py
builder_status: committed
diff --git a/manifest-schema.yml b/manifest-schema.yml
index 0b7e84f..fd9529b 100644
--- a/manifest-schema.yml
+++ b/manifest-schema.yml
@@ -192,6 +192,24 @@ schema:
consumers: []
# - repo: QuantEcon/lecture-python-intro
# file: lectures/business_cycle.md
+ #
+ # A consumer that does NOT yet read this repo — one still pointing at a local
+ # copy — is listed anyway, because the question this field answers is "what
+ # must be rebuilt if these bytes change", not "who is repointed". Say so in a
+ # `note`, which is what makes the divergence machine-readable rather than a
+ # YAML comment nobody can check, and cite the issue tracking the repoint with
+ # a FULLY QUALIFIED reference, since a bare `#N` or a workspace shorthand
+ # means nothing when read from this repo:
+ #
+ # - repo: QuantEcon/test-actions-lecture-intro
+ # file: lectures/french_rev.md
+ # note: >
+ # Reads a local `datasets/` copy, not this file.
+ # Tracked in QuantEcon/workspace-lectures#46.
+ #
+ # The generated catalog surfaces `note` beside the consumer, so a reader of
+ # CATALOG.md's "Used by" column cannot mistake a local-copy reader for a
+ # repointed one.
# ---------------------------------------------------------------------------
# Builder — required for constructed and dynamic-snapshot; omit for verbatim
diff --git a/scripts/build_catalog.py b/scripts/build_catalog.py
index 7fd9e0c..8ab9fe3 100644
--- a/scripts/build_catalog.py
+++ b/scripts/build_catalog.py
@@ -67,6 +67,13 @@ def load_manifests():
def fmt_consumers(consumers) -> str:
+ """Render the "Used by" cell.
+
+ A consumer may carry a `note` — it is listed because a correction to these
+ bytes must reach it, but it does not necessarily read THIS repo yet. Without
+ surfacing the note, the column reads as "these lectures fetch this file",
+ which is exactly the wrong inference for a consumer still on a local copy.
+ """
if not consumers:
return "—"
parts = []
@@ -76,9 +83,16 @@ def fmt_consumers(consumers) -> str:
file = c.get("file", "")
stem = file.split("/")[-1] if file else ""
if repo and file:
- parts.append(f"[{short} · {stem}](https://github.com/{repo}/blob/main/{file})")
+ label = f"[{short} · {stem}](https://github.com/{repo}/blob/main/{file})"
else:
- parts.append(f"{short} · {stem}".strip(" ·"))
+ label = f"{short} · {stem}".strip(" ·")
+ note = " ".join((c.get("note") or "").split())
+ if note:
+ # First sentence only: enough to stop the wrong inference, short
+ # enough not to blow out a table cell. The manifest holds the rest.
+ head = note.split(". ")[0].rstrip(".")
+ label += f"
⚠️ {head}"
+ parts.append(label)
return "
".join(parts)