Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Allow for compatibility with Python 3.12 #969

Merged
merged 13 commits into from
Aug 20, 2024
2 changes: 1 addition & 1 deletion .github/workflows/build_and_test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ jobs:
strategy:
matrix:
os: [ubuntu-latest, macos-latest, windows-latest]
python-version: ["3.10", "3.11"]
python-version: ["3.11", "3.12"]

steps:
- name: Checkout
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/deploy_docs.yml
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ jobs:
miniforge-variant: Mambaforge
activate-environment: ogcore-dev
environment-file: environment.yml
python-version: "3.11"
python-version: "3.12"
auto-activate-base: false

- name: Build # Build Jupyter Book
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/docs_check.yml
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ jobs:
miniforge-variant: Mambaforge
activate-environment: ogcore-dev
environment-file: environment.yml
python-version: "3.11"
python-version: "3.12"
auto-activate-base: false

- name: Build # Build Jupyter Book
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/publish_to_pypi.yml
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ jobs:
- name: Setup Python
uses: actions/setup-python@v5
with:
python-version: "3.11"
python-version: "3.12"
- name: Build package
run: make pip-package
- name: Publish a Python distribution to PyPI
Expand Down
7 changes: 7 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,12 @@ 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.12.0] - 2024-08-20 12:00:00

### Added

- Support for Python 3.12

## [0.11.17] - 2024-08-18 12:00:00

### Added
Expand Down Expand Up @@ -302,6 +308,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
- 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.12.0]: https://github.com/PSLmodels/OG-Core/compare/v0.11.17...v0.12.0
[0.11.17]: https://github.com/PSLmodels/OG-Core/compare/v0.11.16...v0.11.17
[0.11.16]: https://github.com/PSLmodels/OG-Core/compare/v0.11.15...v0.11.16
[0.11.15]: https://github.com/PSLmodels/OG-Core/compare/v0.11.14...v0.11.15
Expand Down
2 changes: 1 addition & 1 deletion environment.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ name: ogcore-dev
channels:
- conda-forge
dependencies:
- python>=3.7.7, <3.12
- python>=3.7.7, <3.13
- numpy
- ipython
- setuptools
Expand Down
2 changes: 1 addition & 1 deletion ogcore/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -20,4 +20,4 @@
from ogcore.txfunc import *
from ogcore.utils import *

__version__ = "0.11.17"
__version__ = "0.12.0"
4 changes: 2 additions & 2 deletions setup.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@

setuptools.setup(
name="ogcore",
version="0.11.17",
version="0.12.0",
author="Jason DeBacker and Richard W. Evans",
license="CC0 1.0 Universal (CC0 1.0) Public Domain Dedication",
description="A general equilibrium overlapping generations model for fiscal policy analysis",
Expand All @@ -21,7 +21,7 @@
"ogcore": ["default_parameters.json", "OGcorePlots.mplstyle"]
},
include_packages=True,
python_requires=">=3.7.7, <3.12",
python_requires=">=3.7.7, <3.13",
install_requires=[
"numpy",
"scipy>=1.7.1",
Expand Down
Binary file added tests/test_io_data/model_params_baseline_v312.pkl
Binary file not shown.
47 changes: 33 additions & 14 deletions tests/test_output_plots.py
Original file line number Diff line number Diff line change
Expand Up @@ -22,12 +22,18 @@
base_params = utils.safe_read_pickle(
os.path.join(CUR_PATH, "test_io_data", "model_params_baseline.pkl")
)
else:
elif sys.version_info[1] == 11:
base_params = utils.safe_read_pickle(
os.path.join(
CUR_PATH, "test_io_data", "model_params_baseline_v311.pkl"
)
)
else:
base_params = utils.safe_read_pickle(
os.path.join(
CUR_PATH, "test_io_data", "model_params_baseline_v312.pkl"
)
)
reform_ss = utils.safe_read_pickle(
os.path.join(CUR_PATH, "test_io_data", "SS_vars_reform.pkl")
)
Expand All @@ -38,10 +44,16 @@
reform_params = utils.safe_read_pickle(
os.path.join(CUR_PATH, "test_io_data", "model_params_reform.pkl")
)
else:
elif sys.version_info[1] == 11:
reform_params = utils.safe_read_pickle(
os.path.join(CUR_PATH, "test_io_data", "model_params_reform_v311.pkl")
)
else:
reform_params = utils.safe_read_pickle(
os.path.join(
CUR_PATH, "test_io_data", "model_params_baseline_v312.pkl"
)
)
reform_taxfunctions = utils.safe_read_pickle(
os.path.join(CUR_PATH, "test_io_data", "TxFuncEst_reform.pkl")
)
Expand Down Expand Up @@ -147,7 +159,7 @@ def test_plot_aggregates(
plot_type=plot_type,
stationarized=stationarized,
num_years_to_plot=20,
start_year=2023,
start_year=int(base_params.start_year),
forecast_data=np.ones(20),
forecast_units="ones",
vertical_line_years=vertical_line_years,
Expand Down Expand Up @@ -198,7 +210,7 @@ def test_plot_industry_aggregates(
var_list=["Y_vec"],
plot_type=plot_type,
num_years_to_plot=20,
start_year=2023,
start_year=int(base_params.start_year),
forecast_data=np.ones(20),
forecast_units="ones",
vertical_line_years=vertical_line_years,
Expand All @@ -218,7 +230,11 @@ def test_plot_industry_aggregates(
def test_plot_aggregates_save_fig(tmpdir):
path = os.path.join(tmpdir, "test_plot.png")
output_plots.plot_aggregates(
base_tpi, base_params, start_year=2023, plot_type="levels", path=path
base_tpi,
base_params,
start_year=int(base_params.start_year),
plot_type="levels",
path=path,
)
img = mpimg.imread(path)

Expand All @@ -228,7 +244,10 @@ def test_plot_aggregates_save_fig(tmpdir):
def test_plot_aggregates_not_a_type(tmpdir):
with pytest.raises(AssertionError):
output_plots.plot_aggregates(
base_tpi, base_params, start_year=2023, plot_type="levels2"
base_tpi,
base_params,
start_year=int(base_params.start_year),
plot_type="levels2",
)


Expand Down Expand Up @@ -275,7 +294,7 @@ def test_plot_gdp_ratio(
base_params,
reform_tpi=reform_tpi,
reform_params=reform_params,
start_year=2023,
start_year=int(base_params.start_year),
plot_type=plot_type,
vertical_line_years=vertical_line_years,
plot_title=plot_title,
Expand All @@ -289,7 +308,7 @@ def test_plot_gdp_ratio_save_fig(tmpdir):
base_tpi,
base_params,
reform_tpi=reform_tpi,
start_year=2023,
start_year=int(base_params.start_year),
reform_params=reform_params,
path=path,
)
Expand All @@ -304,7 +323,7 @@ def test_ability_bar():
base_params,
reform_tpi,
reform_params,
start_year=2023,
start_year=int(base_params.start_year),
plot_title=" Test Plot Title",
)
assert fig
Expand All @@ -317,7 +336,7 @@ def test_ability_bar_save_fig(tmpdir):
base_params,
reform_tpi,
reform_params,
start_year=2023,
start_year=int(base_params.start_year),
path=path,
)
img = mpimg.imread(path)
Expand Down Expand Up @@ -374,7 +393,7 @@ def test_tpi_profiles(by_j):
base_params,
reform_tpi,
reform_params,
start_year=2023,
start_year=int(base_params.start_year),
by_j=by_j,
plot_title=" Test Plot Title",
)
Expand Down Expand Up @@ -404,7 +423,7 @@ def test_tpi_profiles_save_fig(tmpdir):
base_params,
reform_tpi,
reform_params,
start_year=2023,
start_year=int(base_params.start_year),
path=path,
)
img = mpimg.imread(path)
Expand Down Expand Up @@ -515,7 +534,7 @@ def test_inequality_plot(
base_params,
reform_tpi=reform_tpi,
reform_params=reform_params,
start_year=2023,
start_year=int(base_params.start_year),
ineq_measure=ineq_measure,
pctiles=pctiles,
plot_type=plot_type,
Expand All @@ -530,7 +549,7 @@ def test_inequality_plot_save_fig(tmpdir):
base_params,
reform_tpi=reform_tpi,
reform_params=reform_params,
start_year=2023,
start_year=int(base_params.start_year),
path=path,
)
img = mpimg.imread(path)
Expand Down
20 changes: 16 additions & 4 deletions tests/test_output_tables.py
Original file line number Diff line number Diff line change
Expand Up @@ -22,12 +22,18 @@
base_params = utils.safe_read_pickle(
os.path.join(CUR_PATH, "test_io_data", "model_params_baseline.pkl")
)
else:
elif sys.version_info[1] == 11:
base_params = utils.safe_read_pickle(
os.path.join(
CUR_PATH, "test_io_data", "model_params_baseline_v311.pkl"
)
)
else:
base_params = utils.safe_read_pickle(
os.path.join(
CUR_PATH, "test_io_data", "model_params_baseline_v312.pkl"
)
)
reform_ss = utils.safe_read_pickle(
os.path.join(CUR_PATH, "test_io_data", "SS_vars_reform.pkl")
)
Expand All @@ -38,10 +44,16 @@
reform_params = utils.safe_read_pickle(
os.path.join(CUR_PATH, "test_io_data", "model_params_reform.pkl")
)
else:
elif sys.version_info[1] == 11:
reform_params = utils.safe_read_pickle(
os.path.join(CUR_PATH, "test_io_data", "model_params_reform_v311.pkl")
)
else:
reform_params = utils.safe_read_pickle(
os.path.join(
CUR_PATH, "test_io_data", "model_params_baseline_v312.pkl"
)
)
# add investment tax credit parameter that not in cached parameters
base_params.inv_tax_credit = np.zeros(
(base_params.T + base_params.S, base_params.M)
Expand Down Expand Up @@ -76,7 +88,7 @@ def test_macro_table(
base_params,
reform_tpi=reform_tpi,
reform_params=reform_params,
start_year=2023,
start_year=int(base_params.start_year),
output_type=output_type,
stationarized=stationarized,
include_SS=True,
Expand Down Expand Up @@ -176,7 +188,7 @@ def test_dynamic_revenue_decomposition(include_business_tax, full_break_out):
reform_params,
reform_tpi,
reform_ss,
start_year=2023,
start_year=int(base_params.start_year),
include_business_tax=include_business_tax,
full_break_out=full_break_out,
)
Expand Down
23 changes: 16 additions & 7 deletions tests/test_parameter_plots.py
Original file line number Diff line number Diff line change
Expand Up @@ -17,12 +17,18 @@
base_params = utils.safe_read_pickle(
os.path.join(CUR_PATH, "test_io_data", "model_params_baseline.pkl")
)
else:
elif sys.version_info[1] == 11:
base_params = utils.safe_read_pickle(
os.path.join(
CUR_PATH, "test_io_data", "model_params_baseline_v311.pkl"
)
)
else:
base_params = utils.safe_read_pickle(
os.path.join(
CUR_PATH, "test_io_data", "model_params_baseline_v312.pkl"
)
)
base_taxfunctions = utils.safe_read_pickle(
os.path.join(CUR_PATH, "test_io_data", "TxFuncEst_baseline.pkl")
)
Expand All @@ -36,10 +42,11 @@
micro_data = utils.safe_read_pickle(
os.path.join(CUR_PATH, "test_io_data", "micro_data_dict_for_tests.pkl")
)
base_params.rho = np.tile(
base_params.rho.reshape(1, base_params.S),
(base_params.T + base_params.S, 1),
)
if base_params.rho.ndim == 1:
base_params.rho = np.tile(
base_params.rho.reshape(1, base_params.S),
(base_params.T + base_params.S, 1),
)


def test_plot_imm_rates():
Expand Down Expand Up @@ -94,13 +101,15 @@ def test_plot_surv_rates_save_fig(tmpdir):

def test_plot_pop_growth():
fig = parameter_plots.plot_pop_growth(
base_params, start_year=2023, include_title=True
base_params, start_year=int(base_params.start_year), include_title=True
)
assert fig


def test_plot_pop_growth_rates_save_fig(tmpdir):
parameter_plots.plot_pop_growth(base_params, start_year=2023, path=tmpdir)
parameter_plots.plot_pop_growth(
base_params, start_year=int(base_params.start_year), path=tmpdir
)
img = mpimg.imread(os.path.join(tmpdir, "pop_growth_rates.png"))

assert isinstance(img, np.ndarray)
Expand Down
8 changes: 7 additions & 1 deletion tests/test_parameter_tables.py
Original file line number Diff line number Diff line change
Expand Up @@ -16,12 +16,18 @@
base_params = utils.safe_read_pickle(
os.path.join(CUR_PATH, "test_io_data", "model_params_baseline.pkl")
)
else:
elif sys.version_info[1] == 11:
base_params = utils.safe_read_pickle(
os.path.join(
CUR_PATH, "test_io_data", "model_params_baseline_v311.pkl"
)
)
else:
base_params = utils.safe_read_pickle(
os.path.join(
CUR_PATH, "test_io_data", "model_params_baseline_v312.pkl"
)
)
base_taxfunctions = utils.safe_read_pickle(
os.path.join(CUR_PATH, "test_io_data", "TxFuncEst_baseline.pkl")
)
Expand Down
Loading