From b23cc22473117f37fcce769ad5f48a5644d38f3f Mon Sep 17 00:00:00 2001 From: Richard Evans Date: Tue, 6 Feb 2024 14:48:35 -0700 Subject: [PATCH 01/12] Update version --- CHANGELOG.md | 51 ++++++++++++++++++++++++++++++++++++++++++++++ ogcore/__init__.py | 2 +- setup.py | 2 +- 3 files changed, 53 insertions(+), 2 deletions(-) create mode 100644 CHANGELOG.md diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 000000000..d8acdda01 --- /dev/null +++ b/CHANGELOG.md @@ -0,0 +1,51 @@ +# Changelog + +All notable changes to this project will be documented in this file. + +The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), +and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). + +## [0.1.2] - 2023-10-26 15:00:00 + +### Added + +- Simple update of version in `setup.py` and `cs-config/cs_config/functions.py` to make sure that the `publish_to_pypi.yml` GitHub Action works +- Removes Windows OS tests from `build_and_test.yml`, which are not working right now for some reason. + +## [0.1.1] - 2023-10-25 17:00:00 + +### Added + +- Updates `README.md` +- Changes `check_black.yml` to `check_format.yml` +- Updates other GH Action files: `build_and_test.yml`, `docs_check.yml`, and `deploy_docs.yml` +- Updates `publish_to_pypi.yml` +- Adds changes from PRs [#73](https://github.com/PSLmodels/OG-USA/pull/73) and [#67](https://github.com/PSLmodels/OG-USA/pull/67) + +## [0.1.0] - 2023-07-19 12:00:00 + +### Added + +- Restarts the release numbering to follow semantic versioning and the OG-USA version numbering as separate from the OG-Core version numbering. +- Adds restriction `python<3.11` to `environment.yml` and `setup.py`. +- Changes the format of `setup.py`. +- Updates `build_and_test.yml` to test Python 3.9 and 3.10. +- Updates some GH Action script versions in `check_black.yml`. +- Updates the Python version to 3.10 in `docs_check.yml` and `deploy_docs.yml`. +- Updated the `LICENSE` file to one that GitHub recognizes. +- Updates the `run_og_usa.py` run script. +- Updates some tests and associated data. +- Pins the version of `rpy2` package in `environment.yml` and `setup.py` + + +## Previous versions + +### Summary + +- Version [0.7.0] on August 30, 2021 was the first time that the OG-USA repository was detached from all of the core model logic, which was named OG-Core. Before this version, OG-USA was part of what is now the [`OG-Core`](https://github.com/PSLmodels/OG-Core) repository. In the next version of OG-USA, we adjusted the version numbering to begin with 0.1.0. This initial version of 0.7.0, was sequential from what OG-USA used to be when the OG-Core project was called OG-USA. +- Any earlier versions of OG-USA can be found in the [`OG-Core`](https://github.com/PSLmodels/OG-Core) repository [release history](https://github.com/PSLmodels/OG-Core/releases) from [v.0.6.4](https://github.com/PSLmodels/OG-Core/releases/tag/v0.6.4) (Jul. 20, 2021) or earlier. + + + +[0.1.2]: https://github.com/PSLmodels/OG-USA/compare/v0.1.1...v0.1.2 +[0.1.1]: https://github.com/PSLmodels/OG-USA/compare/v0.1.0...v0.1.1 diff --git a/ogcore/__init__.py b/ogcore/__init__.py index fee4d8cbb..a31f23e4f 100644 --- a/ogcore/__init__.py +++ b/ogcore/__init__.py @@ -20,4 +20,4 @@ from ogcore.txfunc import * from ogcore.utils import * -__version__ = "0.10.10" +__version__ = "0.11.0" diff --git a/setup.py b/setup.py index 724ff9f8c..d91ad4607 100755 --- a/setup.py +++ b/setup.py @@ -5,7 +5,7 @@ setuptools.setup( name="ogcore", - version="0.10.10", + version="0.11.0", author="Jason DeBacker and Richard W. Evans", license="CC0 1.0 Universal (CC0 1.0) Public Domain Dedication", description="A general equilibribum overlapping generations model for fiscal policy analysis", From 6e1bb1675bfed40b880070709769b790abb8fe0c Mon Sep 17 00:00:00 2001 From: Richard Evans Date: Tue, 6 Feb 2024 14:48:51 -0700 Subject: [PATCH 02/12] Update copyright year --- docs/book/_config.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/book/_config.yml b/docs/book/_config.yml index dd200c9d4..bebd85ef3 100644 --- a/docs/book/_config.yml +++ b/docs/book/_config.yml @@ -2,7 +2,7 @@ # Book settings title : OG-Core author : Jason DeBacker and Richard W. Evans -copyright : '2022' +copyright : '2024' logo : '..//OG-Core_logo.png' #################################################### From b18be461982c12c0ea895cd71a93f8d14d0e2f4e Mon Sep 17 00:00:00 2001 From: Richard Evans Date: Tue, 6 Feb 2024 15:31:17 -0700 Subject: [PATCH 03/12] Updated CHANGELOG.md --- CHANGELOG.md | 188 +++++++++++++++++++++++++++++++++++++++++++++------ 1 file changed, 166 insertions(+), 22 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index d8acdda01..1439b39f3 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,37 +5,165 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). -## [0.1.2] - 2023-10-26 15:00:00 +## [0.11.0] - 2024-02-06 15:00:00 ### Added -- Simple update of version in `setup.py` and `cs-config/cs_config/functions.py` to make sure that the `publish_to_pypi.yml` GitHub Action works -- Removes Windows OS tests from `build_and_test.yml`, which are not working right now for some reason. +- Allow `chi_n` parameter to vary over the time path (PR #897) +- Create a demographics module in OG-Core (PR #896) +- Create a time varying ability matrix (PR # 895) +- Simplify the extrapolation of arrays over the time path (PR #891) -## [0.1.1] - 2023-10-25 17:00:00 + +## [0.10.10] - 2023-10-25 17:00:00 + +### Added + +- Remove `surve_rate` parameter (PR #886) +- Updates to `plot_2D_taxfunc` (PR #881) + + +## [0.10.9] - 2023-09-08 12:00:00 + +### Added + +- PR #880 standardize the time path output length +- PR #878 fix tax function indexing, dimensions, and plotting. This PR also enables Python 3.11. +- PR #875 remove unused dependency + + +## [0.10.8] - 2023-04-22 12:00:00 + +### Added + +- Adds a 2D monotonic smoothing spline tax function estimation to `txfunc.py` +- Changes the tax function parameters objects from NumPy arrays to lists in order to accomodate the nonparametric functions that get passed with the `mono` and `mono2D` options + + +## [0.10.7] - 2023-03-31 12:00:00 + +### Added + +- Uses lists to pass and access effective tax rate objects `etr_params` and marginal tax rate objects `mtrx_params` and `mtry_params` + + +## [0.10.6] - 2023-02-15 12:00:00 + +### Added + +- Uses 300 dpi when saving plots to disk +- Better labels of the `plot_industry_aggregates` plots + + +## [0.10.5] - 2023-02-14 12:00:00 + +### Added + +- Fix to `SS.py` to use baseline solution on reform run if dimensions match +- Fix to `test_basic.py` dimensions for `r_gov_scale` + + +## [0.10.4] - 2023-02-06 12:00:00 + +### Added + +- New calibration section to documentation (PR #850) +- Allow government risk premia to vary across time path for parameters `r_gov_shift` and `r_gov_scale` (PR #852) + + +## [0.10.3] - 2023-01-21 12:00:00 + +### Added + +- Bug fixes for new tax function parameter estimation + + +## [0.10.2] - 2023-01-12 12:00:00 ### Added -- Updates `README.md` -- Changes `check_black.yml` to `check_format.yml` -- Updates other GH Action files: `build_and_test.yml`, `docs_check.yml`, and `deploy_docs.yml` -- Updates `publish_to_pypi.yml` -- Adds changes from PRs [#73](https://github.com/PSLmodels/OG-USA/pull/73) and [#67](https://github.com/PSLmodels/OG-USA/pull/67) +- Adds a new minimum value to the `r_gov_shift` parameter of -0.3 + + +## [0.10.1] - 2023-01-05 12:00:00 + +### Added + +- Removes hard coded year label in parameter_plots.plot_population_path() (PR #825) +- Fixes documentation (PR # 827) +- Adds "mono" specification to default_parameter.json and test_parameters.py (PR #830) +- Restricts Python version to be < 3.11 and removes the mkl dependency in environment.yml and setup.py (PR #833 and #840) +- Updates CI testing to include Mac, Windows, and Linux operating systems and Python 3.9 and 3.10, and solves some CI test issues (PR #836) +- Increases the maximum values for r_gov_shift and r_gov_scale in default_parameters.json (PR #838) +- Removes the mkl dependency from environment.yml and setup.py (PR #840) + + +## [0.10.0] - 2022-09-27 12:00:00 + +### Added + +- Adds matrix of tax noncompliance parameters to households (PR #816) +- Incorporate input/output matrix mapping production goods to consumption goods (PR #818) +- Adds a new monotonic tax function estimation method to txfunc.py (PR #819) + + +## [0.9.2] - 2022-08-21 12:00:00 + +### Added + +- Updates the form of the investments tax credit to be on a proxy for investment (depreciated capital) in order to satisfy theoretical requirements of static firms in each industry. +- Update the documentation +- Update the requirement for the m_wealth parameter in the wealth tax function to be strictly greater than zero. + + +## [0.9.1] - 2022-07-22 12:00:00 + +### Added + +- Adds an investment tax credit parameter to the model +- Adds a boolean that allows the option to compute a reform using a stored baseline solution rather than recomputing the baseline + + +## [0.9.0] - 2022-06-30 12:00:00 + +### Added + +- Adds multiple production industries to the model + + +## [0.8.2] - 2022-06-01 12:00:00 + +### Added + +- Formatting of source code with black +- Last tag before extension of model to include multiple industries + + +## [0.8.1] - 2022-04-01 12:00:00 + +### Added + +- Updates PyPI.org packaging setup and includes auto-publishing GH Action (PRs #790, #795, and #797) +- Cleans up documentation issues and old erroneous references to ogusa package (PR #797) + + +## [0.8.0] - 2022-02-18 12:00:00 + +### Added + +- Adds a public capital good (i.e., infrastructure) used to produce private goods and services +- Adds a financial intermediary that links domestic and foreign savings to investment +- Improves multiprocessing with Dask +- Updates documentation +- Moves testing files outside of the ogcore package source files directory +- Tests functionality with Python 3.10. + -## [0.1.0] - 2023-07-19 12:00:00 +## [0.7.0] - 2021-08-30 12:00:00 ### Added -- Restarts the release numbering to follow semantic versioning and the OG-USA version numbering as separate from the OG-Core version numbering. -- Adds restriction `python<3.11` to `environment.yml` and `setup.py`. -- Changes the format of `setup.py`. -- Updates `build_and_test.yml` to test Python 3.9 and 3.10. -- Updates some GH Action script versions in `check_black.yml`. -- Updates the Python version to 3.10 in `docs_check.yml` and `deploy_docs.yml`. -- Updated the `LICENSE` file to one that GitHub recognizes. -- Updates the `run_og_usa.py` run script. -- Updates some tests and associated data. -- Pins the version of `rpy2` package in `environment.yml` and `setup.py` +- This is the first release of the OG-Core model (formerly the OG-USA model) ## Previous versions @@ -47,5 +175,21 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 -[0.1.2]: https://github.com/PSLmodels/OG-USA/compare/v0.1.1...v0.1.2 -[0.1.1]: https://github.com/PSLmodels/OG-USA/compare/v0.1.0...v0.1.1 +[0.11.0]: https://github.com/PSLmodels/OG-Core/compare/v0.10.10...v0.11.0 +[0.10.10]: https://github.com/PSLmodels/OG-Core/compare/v0.10.9...v0.10.10 +[0.10.9]: https://github.com/PSLmodels/OG-Core/compare/v0.10.8...v0.10.9 +[0.10.8]: https://github.com/PSLmodels/OG-Core/compare/v0.10.7...v0.10.8 +[0.10.7]: https://github.com/PSLmodels/OG-Core/compare/v0.10.6...v0.10.7 +[0.10.6]: https://github.com/PSLmodels/OG-Core/compare/v0.10.5...v0.10.6 +[0.10.5]: https://github.com/PSLmodels/OG-Core/compare/v0.10.4...v0.10.5 +[0.10.4]: https://github.com/PSLmodels/OG-Core/compare/v0.10.3...v0.10.4 +[0.10.3]: https://github.com/PSLmodels/OG-Core/compare/v0.10.2...v0.10.3 +[0.10.2]: https://github.com/PSLmodels/OG-Core/compare/v0.10.1...v0.10.2 +[0.10.1]: https://github.com/PSLmodels/OG-Core/compare/v0.10.0...v0.10.1 +[0.10.0]: https://github.com/PSLmodels/OG-Core/compare/v0.9.2...v0.10.0 +[0.9.2]: https://github.com/PSLmodels/OG-Core/compare/v0.9.1...v0.9.2 +[0.9.1]: https://github.com/PSLmodels/OG-Core/compare/v0.9.0...v0.9.1 +[0.9.0]: https://github.com/PSLmodels/OG-Core/compare/v0.8.2...v0.9.0 +[0.8.2]: https://github.com/PSLmodels/OG-Core/compare/v0.8.1...v0.8.2 +[0.8.1]: https://github.com/PSLmodels/OG-Core/compare/v0.8.0...v0.8.1 +[0.8.0]: https://github.com/PSLmodels/OG-Core/compare/v0.7.0...v0.8.0 From 6d278b2246fd1a0ed36b63c8923e2ede50756f56 Mon Sep 17 00:00:00 2001 From: Richard Evans Date: Tue, 6 Feb 2024 15:36:23 -0700 Subject: [PATCH 04/12] Updates the CHANGELOG.md file --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 1439b39f3..a6ee68707 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -13,6 +13,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Create a demographics module in OG-Core (PR #896) - Create a time varying ability matrix (PR # 895) - Simplify the extrapolation of arrays over the time path (PR #891) +- Update the copyright year of documentation to 2024 ## [0.10.10] - 2023-10-25 17:00:00 From d65cc5d19810891cce9c9649f9585ed61b1448d9 Mon Sep 17 00:00:00 2001 From: Richard Evans Date: Tue, 6 Feb 2024 15:40:21 -0700 Subject: [PATCH 05/12] Black formatted firm.py and txfunc.py --- ogcore/firm.py | 22 ++++++++++++++++++---- ogcore/txfunc.py | 18 +++++++++--------- 2 files changed, 27 insertions(+), 13 deletions(-) diff --git a/ogcore/firm.py b/ogcore/firm.py index 5d454f679..d134f5528 100644 --- a/ogcore/firm.py +++ b/ogcore/firm.py @@ -96,7 +96,12 @@ def get_Y(K, K_g, L, p, method, m=-1): * (L ** ((epsilon - 1) / epsilon)) ) ) ** (epsilon / (epsilon - 1)) - Y2 = Z * (K**gamma) * (K_g**gamma_g) * (L ** (1 - gamma - gamma_g)) + Y2 = ( + Z + * (K**gamma) + * (K_g**gamma_g) + * (L ** (1 - gamma - gamma_g)) + ) Y[epsilon == 1] = Y2[epsilon == 1] else: # TPI case if m is not None: @@ -152,7 +157,12 @@ def get_Y(K, K_g, L, p, method, m=-1): * (L ** ((epsilon - 1) / epsilon)) ) ) ** (epsilon / (epsilon - 1)) - Y2 = Z * (K**gamma) * (K_g**gamma_g) * (L ** (1 - gamma - gamma_g)) + Y2 = ( + Z + * (K**gamma) + * (K_g**gamma_g) + * (L ** (1 - gamma - gamma_g)) + ) Y[:, epsilon == 1] = Y2[:, epsilon == 1] return Y @@ -453,7 +463,9 @@ def get_L_from_Y(w, Y, p, method): Z = p.Z[-1] else: Z = p.Z[: p.T] - L = ((1 - p.gamma - p.gamma_g) * Z ** (p.epsilon - 1) * Y) / (w**p.epsilon) + L = ((1 - p.gamma - p.gamma_g) * Z ** (p.epsilon - 1) * Y) / ( + w**p.epsilon + ) return L @@ -654,7 +666,9 @@ def solve_L(Y, K, K_g, p, method, m=-1): K_g[K_g == 0] = 1.0 gamma_g = 0 if epsilon == 1.0: - L = (Y / (Z * K**gamma * K_g**gamma_g)) ** (1 / (1 - gamma - gamma_g)) + L = (Y / (Z * K**gamma * K_g**gamma_g)) ** ( + 1 / (1 - gamma - gamma_g) + ) else: L = ( ( diff --git a/ogcore/txfunc.py b/ogcore/txfunc.py index 42a568816..0d57802e0 100644 --- a/ogcore/txfunc.py +++ b/ogcore/txfunc.py @@ -1308,15 +1308,15 @@ def tax_func_loop( (NoData_cnt, 1) ) * (x1_mtry - x0_mtry) for s_ind in range(NoData_cnt): - etrparam_list[s - NoData_cnt - min_age + s_ind] = ( - lin_int_etr[s_ind, :] - ) - mtrxparam_list[s - NoData_cnt - min_age + s_ind] = ( - lin_int_mtrx[s_ind, :] - ) - mtryparam_list[s - NoData_cnt - min_age + s_ind] = ( - lin_int_mtry[s_ind, :] - ) + etrparam_list[ + s - NoData_cnt - min_age + s_ind + ] = lin_int_etr[s_ind, :] + mtrxparam_list[ + s - NoData_cnt - min_age + s_ind + ] = lin_int_mtrx[s_ind, :] + mtryparam_list[ + s - NoData_cnt - min_age + s_ind + ] = lin_int_mtry[s_ind, :] elif ( (NoData_cnt > 0) From 982c71496862c1e7500c1b888d01e7262c199b44 Mon Sep 17 00:00:00 2001 From: Richard Evans Date: Tue, 6 Feb 2024 16:27:50 -0700 Subject: [PATCH 06/12] Updated TJs OG-USA example script change in run_ogcore_example.py --- run_examples/run_ogcore_example.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/run_examples/run_ogcore_example.py b/run_examples/run_ogcore_example.py index 878da9e2b..d905b3bfc 100644 --- a/run_examples/run_ogcore_example.py +++ b/run_examples/run_ogcore_example.py @@ -25,9 +25,9 @@ def main(): # Define parameters to use for multiprocessing - client = Client() num_workers = min(multiprocessing.cpu_count(), 7) print("Number of workers = ", num_workers) + client = Client(n_workers=num_workers) run_start_time = time.time() # Directories to save data From fad720cb065723015348424be6f3d50f12d533c5 Mon Sep 17 00:00:00 2001 From: Richard Evans Date: Tue, 6 Feb 2024 16:32:47 -0700 Subject: [PATCH 07/12] Revert formatting of firm.py and txfunc.py --- ogcore/firm.py | 22 ++++------------------ ogcore/txfunc.py | 18 +++++++++--------- 2 files changed, 13 insertions(+), 27 deletions(-) diff --git a/ogcore/firm.py b/ogcore/firm.py index d134f5528..5d454f679 100644 --- a/ogcore/firm.py +++ b/ogcore/firm.py @@ -96,12 +96,7 @@ def get_Y(K, K_g, L, p, method, m=-1): * (L ** ((epsilon - 1) / epsilon)) ) ) ** (epsilon / (epsilon - 1)) - Y2 = ( - Z - * (K**gamma) - * (K_g**gamma_g) - * (L ** (1 - gamma - gamma_g)) - ) + Y2 = Z * (K**gamma) * (K_g**gamma_g) * (L ** (1 - gamma - gamma_g)) Y[epsilon == 1] = Y2[epsilon == 1] else: # TPI case if m is not None: @@ -157,12 +152,7 @@ def get_Y(K, K_g, L, p, method, m=-1): * (L ** ((epsilon - 1) / epsilon)) ) ) ** (epsilon / (epsilon - 1)) - Y2 = ( - Z - * (K**gamma) - * (K_g**gamma_g) - * (L ** (1 - gamma - gamma_g)) - ) + Y2 = Z * (K**gamma) * (K_g**gamma_g) * (L ** (1 - gamma - gamma_g)) Y[:, epsilon == 1] = Y2[:, epsilon == 1] return Y @@ -463,9 +453,7 @@ def get_L_from_Y(w, Y, p, method): Z = p.Z[-1] else: Z = p.Z[: p.T] - L = ((1 - p.gamma - p.gamma_g) * Z ** (p.epsilon - 1) * Y) / ( - w**p.epsilon - ) + L = ((1 - p.gamma - p.gamma_g) * Z ** (p.epsilon - 1) * Y) / (w**p.epsilon) return L @@ -666,9 +654,7 @@ def solve_L(Y, K, K_g, p, method, m=-1): K_g[K_g == 0] = 1.0 gamma_g = 0 if epsilon == 1.0: - L = (Y / (Z * K**gamma * K_g**gamma_g)) ** ( - 1 / (1 - gamma - gamma_g) - ) + L = (Y / (Z * K**gamma * K_g**gamma_g)) ** (1 / (1 - gamma - gamma_g)) else: L = ( ( diff --git a/ogcore/txfunc.py b/ogcore/txfunc.py index 0d57802e0..42a568816 100644 --- a/ogcore/txfunc.py +++ b/ogcore/txfunc.py @@ -1308,15 +1308,15 @@ def tax_func_loop( (NoData_cnt, 1) ) * (x1_mtry - x0_mtry) for s_ind in range(NoData_cnt): - etrparam_list[ - s - NoData_cnt - min_age + s_ind - ] = lin_int_etr[s_ind, :] - mtrxparam_list[ - s - NoData_cnt - min_age + s_ind - ] = lin_int_mtrx[s_ind, :] - mtryparam_list[ - s - NoData_cnt - min_age + s_ind - ] = lin_int_mtry[s_ind, :] + etrparam_list[s - NoData_cnt - min_age + s_ind] = ( + lin_int_etr[s_ind, :] + ) + mtrxparam_list[s - NoData_cnt - min_age + s_ind] = ( + lin_int_mtrx[s_ind, :] + ) + mtryparam_list[s - NoData_cnt - min_age + s_ind] = ( + lin_int_mtry[s_ind, :] + ) elif ( (NoData_cnt > 0) From 58660f3543b5bad430069252d23967797eed0b13 Mon Sep 17 00:00:00 2001 From: Richard Evans Date: Tue, 6 Feb 2024 16:45:45 -0700 Subject: [PATCH 08/12] Replace LICENSE.md with LICENSE file --- LICENSE | 121 +++++++++++++++++++++++++++++++++++++++++++++++++++++ LICENSE.md | 31 -------------- 2 files changed, 121 insertions(+), 31 deletions(-) create mode 100644 LICENSE delete mode 100644 LICENSE.md diff --git a/LICENSE b/LICENSE new file mode 100644 index 000000000..0e259d42c --- /dev/null +++ b/LICENSE @@ -0,0 +1,121 @@ +Creative Commons Legal Code + +CC0 1.0 Universal + + CREATIVE COMMONS CORPORATION IS NOT A LAW FIRM AND DOES NOT PROVIDE + LEGAL SERVICES. DISTRIBUTION OF THIS DOCUMENT DOES NOT CREATE AN + ATTORNEY-CLIENT RELATIONSHIP. CREATIVE COMMONS PROVIDES THIS + INFORMATION ON AN "AS-IS" BASIS. CREATIVE COMMONS MAKES NO WARRANTIES + REGARDING THE USE OF THIS DOCUMENT OR THE INFORMATION OR WORKS + PROVIDED HEREUNDER, AND DISCLAIMS LIABILITY FOR DAMAGES RESULTING FROM + THE USE OF THIS DOCUMENT OR THE INFORMATION OR WORKS PROVIDED + HEREUNDER. + +Statement of Purpose + +The laws of most jurisdictions throughout the world automatically confer +exclusive Copyright and Related Rights (defined below) upon the creator +and subsequent owner(s) (each and all, an "owner") of an original work of +authorship and/or a database (each, a "Work"). + +Certain owners wish to permanently relinquish those rights to a Work for +the purpose of contributing to a commons of creative, cultural and +scientific works ("Commons") that the public can reliably and without fear +of later claims of infringement build upon, modify, incorporate in other +works, reuse and redistribute as freely as possible in any form whatsoever +and for any purposes, including without limitation commercial purposes. +These owners may contribute to the Commons to promote the ideal of a free +culture and the further production of creative, cultural and scientific +works, or to gain reputation or greater distribution for their Work in +part through the use and efforts of others. + +For these and/or other purposes and motivations, and without any +expectation of additional consideration or compensation, the person +associating CC0 with a Work (the "Affirmer"), to the extent that he or she +is an owner of Copyright and Related Rights in the Work, voluntarily +elects to apply CC0 to the Work and publicly distribute the Work under its +terms, with knowledge of his or her Copyright and Related Rights in the +Work and the meaning and intended legal effect of CC0 on those rights. + +1. Copyright and Related Rights. A Work made available under CC0 may be +protected by copyright and related or neighboring rights ("Copyright and +Related Rights"). Copyright and Related Rights include, but are not +limited to, the following: + + i. the right to reproduce, adapt, distribute, perform, display, + communicate, and translate a Work; + ii. moral rights retained by the original author(s) and/or performer(s); +iii. publicity and privacy rights pertaining to a person's image or + likeness depicted in a Work; + iv. rights protecting against unfair competition in regards to a Work, + subject to the limitations in paragraph 4(a), below; + v. rights protecting the extraction, dissemination, use and reuse of data + in a Work; + vi. database rights (such as those arising under Directive 96/9/EC of the + European Parliament and of the Council of 11 March 1996 on the legal + protection of databases, and under any national implementation + thereof, including any amended or successor version of such + directive); and +vii. other similar, equivalent or corresponding rights throughout the + world based on applicable law or treaty, and any national + implementations thereof. + +2. Waiver. To the greatest extent permitted by, but not in contravention +of, applicable law, Affirmer hereby overtly, fully, permanently, +irrevocably and unconditionally waives, abandons, and surrenders all of +Affirmer's Copyright and Related Rights and associated claims and causes +of action, whether now known or unknown (including existing as well as +future claims and causes of action), in the Work (i) in all territories +worldwide, (ii) for the maximum duration provided by applicable law or +treaty (including future time extensions), (iii) in any current or future +medium and for any number of copies, and (iv) for any purpose whatsoever, +including without limitation commercial, advertising or promotional +purposes (the "Waiver"). Affirmer makes the Waiver for the benefit of each +member of the public at large and to the detriment of Affirmer's heirs and +successors, fully intending that such Waiver shall not be subject to +revocation, rescission, cancellation, termination, or any other legal or +equitable action to disrupt the quiet enjoyment of the Work by the public +as contemplated by Affirmer's express Statement of Purpose. + +3. Public License Fallback. Should any part of the Waiver for any reason +be judged legally invalid or ineffective under applicable law, then the +Waiver shall be preserved to the maximum extent permitted taking into +account Affirmer's express Statement of Purpose. In addition, to the +extent the Waiver is so judged Affirmer hereby grants to each affected +person a royalty-free, non transferable, non sublicensable, non exclusive, +irrevocable and unconditional license to exercise Affirmer's Copyright and +Related Rights in the Work (i) in all territories worldwide, (ii) for the +maximum duration provided by applicable law or treaty (including future +time extensions), (iii) in any current or future medium and for any number +of copies, and (iv) for any purpose whatsoever, including without +limitation commercial, advertising or promotional purposes (the +"License"). The License shall be deemed effective as of the date CC0 was +applied by Affirmer to the Work. Should any part of the License for any +reason be judged legally invalid or ineffective under applicable law, such +partial invalidity or ineffectiveness shall not invalidate the remainder +of the License, and in such case Affirmer hereby affirms that he or she +will not (i) exercise any of his or her remaining Copyright and Related +Rights in the Work or (ii) assert any associated claims and causes of +action with respect to the Work, in either case contrary to Affirmer's +express Statement of Purpose. + +4. Limitations and Disclaimers. + + a. No trademark or patent rights held by Affirmer are waived, abandoned, + surrendered, licensed or otherwise affected by this document. + b. Affirmer offers the Work as-is and makes no representations or + warranties of any kind concerning the Work, express, implied, + statutory or otherwise, including without limitation warranties of + title, merchantability, fitness for a particular purpose, non + infringement, or the absence of latent or other defects, accuracy, or + the present or absence of errors, whether or not discoverable, all to + the greatest extent permissible under applicable law. + c. Affirmer disclaims responsibility for clearing rights of other persons + that may apply to the Work or any use thereof, including without + limitation any person's Copyright and Related Rights in the Work. + Further, Affirmer disclaims responsibility for obtaining any necessary + consents, permissions or other rights required for any use of the + Work. + d. Affirmer understands and acknowledges that Creative Commons is not a + party to this document and has no duty or obligation with respect to + this CC0 or use of the Work. diff --git a/LICENSE.md b/LICENSE.md deleted file mode 100644 index f06099e2d..000000000 --- a/LICENSE.md +++ /dev/null @@ -1,31 +0,0 @@ -This project is in the -public domain within the United States. - -Additionally, we waive copyright and related rights in the work -worldwide through the CC0 1.0 Universal public domain dedication. - -## CC0 1.0 Universal Summary - -This is a human-readable summary of the [Legal Code (read the full text)](https://creativecommons.org/publicdomain/zero/1.0/legalcode). - -### No Copyright - -The person who associated a work with this deed has dedicated the work to -the public domain by waiving all of his or her rights to the work worldwide -under copyright law, including all related and neighboring rights, to the -extent allowed by law. - -You can copy, modify, distribute and perform the work, even for commercial -purposes, all without asking permission. - -### Other Information - -In no way are the patent or trademark rights of any person affected by CC0, -nor are the rights that other persons may have in the work or in how the -work is used, such as publicity or privacy rights. - -Unless expressly stated otherwise, the person who associated a work with -this deed makes no warranties about the work, and disclaims liability for -all uses of the work, to the fullest extent permitted by applicable law. -When using or citing the work, you should not imply endorsement by the -author or the affirmer. From 51e6f65194ab4eb9de76d36d71095342bda126da Mon Sep 17 00:00:00 2001 From: Richard Evans Date: Tue, 6 Feb 2024 16:59:57 -0700 Subject: [PATCH 09/12] Updated tags in README.md --- README.md | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/README.md b/README.md index b2af3b196..9d4da5716 100644 --- a/README.md +++ b/README.md @@ -1,12 +1,15 @@ -[![PSL cataloged](https://img.shields.io/badge/PSL-cataloged-a0a0a0.svg)](https://www.PSLmodels.org) -[![Python 3.9](https://img.shields.io/badge/python-3.9-blue.svg)](https://www.python.org/downloads/release/python-3916/) -[![Python 3.10](https://img.shields.io/badge/python-3.10-blue.svg)](https://www.python.org/downloads/release/python-3108/) -![example event parameter](https://github.com/PSLmodels/OG-Core/actions/workflows/build_and_test.yml/badge.svg?branch=master) +# OG-Core + +| | | +| --- | --- | +| Oreg | [![PSL cataloged](https://img.shields.io/badge/PSL-cataloged-a0a0a0.svg)](https://www.PSLmodels.org) [![OS License: CCO-1.0](https://img.shields.io/badge/OS%20License-CCO%201.0-yellow)](https://github.com/PSLmodels/OG-Core/blob/master/LICENSE) | +| Package | [![Python 3.9](https://img.shields.io/badge/python-3.9-blue.svg)](https://www.python.org/downloads/release/python-3916/) +[![Python 3.10](https://img.shields.io/badge/python-3.10-blue.svg)](https://www.python.org/downloads/release/python-3108/) [![Python 3.11](https://img.shields.io/badge/python-3.10-blue.svg)](https://www.python.org/downloads/release/python-3118/) [![PyPI Latest Release](https://img.shields.io/pypi/v/ogcore.svg)](https://pypi.org/project/ogcore/) [![PyPI Downloads](https://img.shields.io/pypi/dm/ogcore.svg?label=PyPI%20downloads)](https://pypi.org/project/ogcore/) [![Code style: black](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/psf/black) | +| Testing | ![example event parameter](https://github.com/PSLmodels/OG-Core/actions/workflows/build_and_test.yml/badge.svg?branch=master) ![example event parameter](https://github.com/PSLmodels/OG-Core/actions/workflows/deploy_docs.yml/badge.svg?branch=master) ![example event parameter](https://github.com/PSLmodels/OG-Core/actions/workflows/check_black.yml/badge.svg?branch=master) -[![Codecov](https://codecov.io/gh/PSLmodels/OG-Core/branch/master/graph/badge.svg)](https://codecov.io/gh/PSLmodels/OG-Core) +[![Codecov](https://codecov.io/gh/PSLmodels/OG-Core/branch/master/graph/badge.svg)](https://codecov.io/gh/PSLmodels/OG-Core) | -# OG-Core OG-Core is an overlapping-generations (OG) model core theory, logic, and solution method algorithms that allow for dynamic general equilibrium analysis of fiscal policy. OG-Core provides a general framework and is a dependency of several country-specific OG models, such as [OG-USA](https://github.com/PSLmodels/OG-USA) and [OG-UK](https://github.com/PSLmodels/OG-UK). The model output includes changes in macroeconomic aggregates (GDP, investment, consumption), wages, interest rates, and the stream of tax revenues over time. Regularly updated documentation of the model theory--its output, and solution method--and the Python API is available [here](https://pslmodels.github.io/OG-Core). From 5d24d98b2fe08b0721ac81ef1610da38a61c3486 Mon Sep 17 00:00:00 2001 From: Richard Evans Date: Tue, 6 Feb 2024 17:07:18 -0700 Subject: [PATCH 10/12] Added tags in README.md and intro.md --- README.md | 2 +- docs/book/content/intro/intro.md | 10 ++++++++++ 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 9d4da5716..a956058b5 100644 --- a/README.md +++ b/README.md @@ -2,7 +2,7 @@ | | | | --- | --- | -| Oreg | [![PSL cataloged](https://img.shields.io/badge/PSL-cataloged-a0a0a0.svg)](https://www.PSLmodels.org) [![OS License: CCO-1.0](https://img.shields.io/badge/OS%20License-CCO%201.0-yellow)](https://github.com/PSLmodels/OG-Core/blob/master/LICENSE) | +| Oreg | [![PSL cataloged](https://img.shields.io/badge/PSL-cataloged-a0a0a0.svg)](https://www.PSLmodels.org) [![OS License: CCO-1.0](https://img.shields.io/badge/OS%20License-CCO%201.0-yellow)](https://github.com/PSLmodels/OG-Core/blob/master/LICENSE) [![Jupyter Book Badge](https://jupyterbook.org/badge.svg)](https://pslmodels.github.io/OG-Core/) | | Package | [![Python 3.9](https://img.shields.io/badge/python-3.9-blue.svg)](https://www.python.org/downloads/release/python-3916/) [![Python 3.10](https://img.shields.io/badge/python-3.10-blue.svg)](https://www.python.org/downloads/release/python-3108/) [![Python 3.11](https://img.shields.io/badge/python-3.10-blue.svg)](https://www.python.org/downloads/release/python-3118/) [![PyPI Latest Release](https://img.shields.io/pypi/v/ogcore.svg)](https://pypi.org/project/ogcore/) [![PyPI Downloads](https://img.shields.io/pypi/dm/ogcore.svg?label=PyPI%20downloads)](https://pypi.org/project/ogcore/) [![Code style: black](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/psf/black) | | Testing | ![example event parameter](https://github.com/PSLmodels/OG-Core/actions/workflows/build_and_test.yml/badge.svg?branch=master) diff --git a/docs/book/content/intro/intro.md b/docs/book/content/intro/intro.md index 47f54d9bc..1c9861844 100644 --- a/docs/book/content/intro/intro.md +++ b/docs/book/content/intro/intro.md @@ -1,6 +1,16 @@ (Chap_Intro)= # OG-Core +| | | +| --- | --- | +| Oreg | [![PSL cataloged](https://img.shields.io/badge/PSL-cataloged-a0a0a0.svg)](https://www.PSLmodels.org) [![OS License: CCO-1.0](https://img.shields.io/badge/OS%20License-CCO%201.0-yellow)](https://github.com/PSLmodels/OG-Core/blob/master/LICENSE) [![Jupyter Book Badge](https://jupyterbook.org/badge.svg)](https://pslmodels.github.io/OG-Core/) | +| Package | [![Python 3.9](https://img.shields.io/badge/python-3.9-blue.svg)](https://www.python.org/downloads/release/python-3916/) +[![Python 3.10](https://img.shields.io/badge/python-3.10-blue.svg)](https://www.python.org/downloads/release/python-3108/) [![Python 3.11](https://img.shields.io/badge/python-3.10-blue.svg)](https://www.python.org/downloads/release/python-3118/) [![PyPI Latest Release](https://img.shields.io/pypi/v/ogcore.svg)](https://pypi.org/project/ogcore/) [![PyPI Downloads](https://img.shields.io/pypi/dm/ogcore.svg?label=PyPI%20downloads)](https://pypi.org/project/ogcore/) [![Code style: black](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/psf/black) | +| Testing | ![example event parameter](https://github.com/PSLmodels/OG-Core/actions/workflows/build_and_test.yml/badge.svg?branch=master) +![example event parameter](https://github.com/PSLmodels/OG-Core/actions/workflows/deploy_docs.yml/badge.svg?branch=master) +![example event parameter](https://github.com/PSLmodels/OG-Core/actions/workflows/check_black.yml/badge.svg?branch=master) +[![Codecov](https://codecov.io/gh/PSLmodels/OG-Core/branch/master/graph/badge.svg)](https://codecov.io/gh/PSLmodels/OG-Core) | + `OG-Core` is the core logic for a country-agnostic overlapping-generations (OG) model of an economy that allows for dynamic general equilibrium analysis of fiscal policy. The source code is openly available for download or collaboration at the GitHub repository [www.github.com/PSLmodels/OG-Core](https://github.com/PSLmodels/OG-Core), or you can click on the GitHub icon at the top right of this page. The model output focuses changes in macroeconomic aggregates (GDP, investment, consumption), wages, interest rates, and the stream of tax revenues over time. Although `OG-Core` can be run independently based on default parameter values (currently representing something similar to the United States), it is meant to be a dependency of a country-specific calibration. This documentation contains the following major sections, which are regularly updated. From a6535f7140847630829ca968e51a3b73ca0a5dd7 Mon Sep 17 00:00:00 2001 From: Richard Evans Date: Tue, 6 Feb 2024 23:48:13 -0700 Subject: [PATCH 11/12] Updated black requirement in environment.yml --- environment.yml | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/environment.yml b/environment.yml index e90cd8f2b..e88c809fa 100644 --- a/environment.yml +++ b/environment.yml @@ -18,8 +18,7 @@ dependencies: - coverage - requests - openpyxl -- black +- black>=24.1.1 - pip - pip: - pygam - From 1c9f284bd3b46981c10339760725840633505d94 Mon Sep 17 00:00:00 2001 From: Richard Evans Date: Wed, 7 Feb 2024 00:39:08 -0700 Subject: [PATCH 12/12] Fixed typos in README.md and intro.md tags --- README.md | 10 +++------- docs/book/content/intro/intro.md | 10 +++------- 2 files changed, 6 insertions(+), 14 deletions(-) diff --git a/README.md b/README.md index a956058b5..ae96b2ae1 100644 --- a/README.md +++ b/README.md @@ -2,13 +2,9 @@ | | | | --- | --- | -| Oreg | [![PSL cataloged](https://img.shields.io/badge/PSL-cataloged-a0a0a0.svg)](https://www.PSLmodels.org) [![OS License: CCO-1.0](https://img.shields.io/badge/OS%20License-CCO%201.0-yellow)](https://github.com/PSLmodels/OG-Core/blob/master/LICENSE) [![Jupyter Book Badge](https://jupyterbook.org/badge.svg)](https://pslmodels.github.io/OG-Core/) | -| Package | [![Python 3.9](https://img.shields.io/badge/python-3.9-blue.svg)](https://www.python.org/downloads/release/python-3916/) -[![Python 3.10](https://img.shields.io/badge/python-3.10-blue.svg)](https://www.python.org/downloads/release/python-3108/) [![Python 3.11](https://img.shields.io/badge/python-3.10-blue.svg)](https://www.python.org/downloads/release/python-3118/) [![PyPI Latest Release](https://img.shields.io/pypi/v/ogcore.svg)](https://pypi.org/project/ogcore/) [![PyPI Downloads](https://img.shields.io/pypi/dm/ogcore.svg?label=PyPI%20downloads)](https://pypi.org/project/ogcore/) [![Code style: black](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/psf/black) | -| Testing | ![example event parameter](https://github.com/PSLmodels/OG-Core/actions/workflows/build_and_test.yml/badge.svg?branch=master) -![example event parameter](https://github.com/PSLmodels/OG-Core/actions/workflows/deploy_docs.yml/badge.svg?branch=master) -![example event parameter](https://github.com/PSLmodels/OG-Core/actions/workflows/check_black.yml/badge.svg?branch=master) -[![Codecov](https://codecov.io/gh/PSLmodels/OG-Core/branch/master/graph/badge.svg)](https://codecov.io/gh/PSLmodels/OG-Core) | +| Org | [![PSL cataloged](https://img.shields.io/badge/PSL-cataloged-a0a0a0.svg)](https://www.PSLmodels.org) [![OS License: CCO-1.0](https://img.shields.io/badge/OS%20License-CCO%201.0-yellow)](https://github.com/PSLmodels/OG-Core/blob/master/LICENSE) [![Jupyter Book Badge](https://jupyterbook.org/badge.svg)](https://pslmodels.github.io/OG-Core/) | +| Package | [![Python 3.9](https://img.shields.io/badge/python-3.9-blue.svg)](https://www.python.org/downloads/release/python-3916/) [![Python 3.10](https://img.shields.io/badge/python-3.10-blue.svg)](https://www.python.org/downloads/release/python-3108/) [![Python 3.11](https://img.shields.io/badge/python-3.10-blue.svg)](https://www.python.org/downloads/release/python-3118/) [![PyPI Latest Release](https://img.shields.io/pypi/v/ogcore.svg)](https://pypi.org/project/ogcore/) [![PyPI Downloads](https://img.shields.io/pypi/dm/ogcore.svg?label=PyPI%20downloads)](https://pypi.org/project/ogcore/) [![Code style: black](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/psf/black) | +| Testing | ![example event parameter](https://github.com/PSLmodels/OG-Core/actions/workflows/build_and_test.yml/badge.svg?branch=master) ![example event parameter](https://github.com/PSLmodels/OG-Core/actions/workflows/deploy_docs.yml/badge.svg?branch=master) ![example event parameter](https://github.com/PSLmodels/OG-Core/actions/workflows/check_black.yml/badge.svg?branch=master) [![Codecov](https://codecov.io/gh/PSLmodels/OG-Core/branch/master/graph/badge.svg)](https://codecov.io/gh/PSLmodels/OG-Core) | OG-Core is an overlapping-generations (OG) model core theory, logic, and solution method algorithms that allow for dynamic general equilibrium analysis of fiscal policy. OG-Core provides a general framework and is a dependency of several country-specific OG models, such as [OG-USA](https://github.com/PSLmodels/OG-USA) and [OG-UK](https://github.com/PSLmodels/OG-UK). The model output includes changes in macroeconomic aggregates (GDP, investment, consumption), wages, interest rates, and the stream of tax revenues over time. Regularly updated documentation of the model theory--its output, and solution method--and the Python API is available [here](https://pslmodels.github.io/OG-Core). diff --git a/docs/book/content/intro/intro.md b/docs/book/content/intro/intro.md index 1c9861844..6903b1430 100644 --- a/docs/book/content/intro/intro.md +++ b/docs/book/content/intro/intro.md @@ -3,13 +3,9 @@ | | | | --- | --- | -| Oreg | [![PSL cataloged](https://img.shields.io/badge/PSL-cataloged-a0a0a0.svg)](https://www.PSLmodels.org) [![OS License: CCO-1.0](https://img.shields.io/badge/OS%20License-CCO%201.0-yellow)](https://github.com/PSLmodels/OG-Core/blob/master/LICENSE) [![Jupyter Book Badge](https://jupyterbook.org/badge.svg)](https://pslmodels.github.io/OG-Core/) | -| Package | [![Python 3.9](https://img.shields.io/badge/python-3.9-blue.svg)](https://www.python.org/downloads/release/python-3916/) -[![Python 3.10](https://img.shields.io/badge/python-3.10-blue.svg)](https://www.python.org/downloads/release/python-3108/) [![Python 3.11](https://img.shields.io/badge/python-3.10-blue.svg)](https://www.python.org/downloads/release/python-3118/) [![PyPI Latest Release](https://img.shields.io/pypi/v/ogcore.svg)](https://pypi.org/project/ogcore/) [![PyPI Downloads](https://img.shields.io/pypi/dm/ogcore.svg?label=PyPI%20downloads)](https://pypi.org/project/ogcore/) [![Code style: black](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/psf/black) | -| Testing | ![example event parameter](https://github.com/PSLmodels/OG-Core/actions/workflows/build_and_test.yml/badge.svg?branch=master) -![example event parameter](https://github.com/PSLmodels/OG-Core/actions/workflows/deploy_docs.yml/badge.svg?branch=master) -![example event parameter](https://github.com/PSLmodels/OG-Core/actions/workflows/check_black.yml/badge.svg?branch=master) -[![Codecov](https://codecov.io/gh/PSLmodels/OG-Core/branch/master/graph/badge.svg)](https://codecov.io/gh/PSLmodels/OG-Core) | +| Org | [![PSL cataloged](https://img.shields.io/badge/PSL-cataloged-a0a0a0.svg)](https://www.PSLmodels.org) [![OS License: CCO-1.0](https://img.shields.io/badge/OS%20License-CCO%201.0-yellow)](https://github.com/PSLmodels/OG-Core/blob/master/LICENSE) [![Jupyter Book Badge](https://jupyterbook.org/badge.svg)](https://pslmodels.github.io/OG-Core/) | +| Package | [![Python 3.9](https://img.shields.io/badge/python-3.9-blue.svg)](https://www.python.org/downloads/release/python-3916/) [![Python 3.10](https://img.shields.io/badge/python-3.10-blue.svg)](https://www.python.org/downloads/release/python-3108/) [![Python 3.11](https://img.shields.io/badge/python-3.10-blue.svg)](https://www.python.org/downloads/release/python-3118/) [![PyPI Latest Release](https://img.shields.io/pypi/v/ogcore.svg)](https://pypi.org/project/ogcore/) [![PyPI Downloads](https://img.shields.io/pypi/dm/ogcore.svg?label=PyPI%20downloads)](https://pypi.org/project/ogcore/) [![Code style: black](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/psf/black) | +| Testing | ![example event parameter](https://github.com/PSLmodels/OG-Core/actions/workflows/build_and_test.yml/badge.svg?branch=master) ![example event parameter](https://github.com/PSLmodels/OG-Core/actions/workflows/deploy_docs.yml/badge.svg?branch=master) ![example event parameter](https://github.com/PSLmodels/OG-Core/actions/workflows/check_black.yml/badge.svg?branch=master) [![Codecov](https://codecov.io/gh/PSLmodels/OG-Core/branch/master/graph/badge.svg)](https://codecov.io/gh/PSLmodels/OG-Core) | `OG-Core` is the core logic for a country-agnostic overlapping-generations (OG) model of an economy that allows for dynamic general equilibrium analysis of fiscal policy. The source code is openly available for download or collaboration at the GitHub repository [www.github.com/PSLmodels/OG-Core](https://github.com/PSLmodels/OG-Core), or you can click on the GitHub icon at the top right of this page.