diff --git a/.github/workflows/cache.yml b/.github/workflows/cache.yml index f3e8aef9d..661354c05 100644 --- a/.github/workflows/cache.yml +++ b/.github/workflows/cache.yml @@ -17,7 +17,7 @@ jobs: auto-update-conda: true auto-activate-base: true miniconda-version: 'latest' - python-version: "3.12" + python-version: "3.13" environment-file: environment.yml activate-environment: quantecon - name: Install JAX, Numpyro, PyTorch diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index b559f4501..258e56ee1 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -15,7 +15,7 @@ jobs: auto-update-conda: true auto-activate-base: true miniconda-version: 'latest' - python-version: "3.12" + python-version: "3.13" environment-file: environment.yml activate-environment: quantecon - name: Install JAX, Numpyro, PyTorch diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index c2ac51874..1631f1da7 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -16,7 +16,7 @@ jobs: auto-update-conda: true auto-activate-base: true miniconda-version: 'latest' - python-version: "3.12" + python-version: "3.13" environment-file: environment.yml activate-environment: quantecon - name: Install JAX, Numpyro, PyTorch diff --git a/environment.yml b/environment.yml index 203de148f..c7bcae32d 100644 --- a/environment.yml +++ b/environment.yml @@ -2,17 +2,18 @@ name: quantecon channels: - default dependencies: - - python=3.12 - - anaconda=2024.10 + - python=3.13 + - anaconda=2025.06 - pip - pip: - - jupyter-book==1.0.3 - - quantecon-book-theme==0.7.6 - - sphinx-tojupyter==0.3.0 + - jupyter-book==1.0.4post1 + - quantecon-book-theme==0.9.0 + - sphinx-tojupyter==0.3.1 - sphinxext-rediraffe==0.2.7 - - sphinx-reredirects==0.1.4 - sphinx-exercise==1.0.1 - - sphinx-proof==0.2.0 - - ghp-import==1.1.0 - - sphinxcontrib-youtube==1.3.0 #Version 1.3.0 is required as quantecon-book-theme is only compatible with sphinx<=5 + - sphinx-proof==0.2.1 + - sphinxcontrib-youtube==1.4.1 - sphinx-togglebutton==0.3.2 + - sphinx-reredirects==0.1.4 + + diff --git a/lectures/career.md b/lectures/career.md index c2f8ef252..f2e216123 100644 --- a/lectures/career.md +++ b/lectures/career.md @@ -370,7 +370,8 @@ when the worker follows the optimal policy. In particular, modulo randomness, reproduce the following figure (where the horizontal axis represents time) -```{figure} /_static/lecture_specific/career/career_solutions_ex1_py.png +```{image} /_static/lecture_specific/career/career_solutions_ex1_py.png +:align: center ``` ```{hint} diff --git a/lectures/finite_markov.md b/lectures/finite_markov.md index 0ed914162..ba4c7bf3c 100644 --- a/lectures/finite_markov.md +++ b/lectures/finite_markov.md @@ -1113,7 +1113,8 @@ is known as [PageRank](https://en.wikipedia.org/wiki/PageRank). To illustrate the idea, consider the following diagram -```{figure} /_static/lecture_specific/finite_markov/web_graph.png +```{image} /_static/lecture_specific/finite_markov/web_graph.png +:align: center ``` Imagine that this is a miniature version of the WWW, with diff --git a/lectures/ifp.md b/lectures/ifp.md index 6b4906db3..e67865b2e 100644 --- a/lectures/ifp.md +++ b/lectures/ifp.md @@ -548,7 +548,8 @@ Let's consider how the interest rate affects consumption. Reproduce the following figure, which shows (approximately) optimal consumption policies for different interest rates -```{figure} /_static/lecture_specific/ifp/ifp_policies.png +```{image} /_static/lecture_specific/ifp/ifp_policies.png +:align: center ``` * Other than `r`, all parameters are at their default values. diff --git a/lectures/kalman.md b/lectures/kalman.md index 20c59cebc..a516a8eb2 100644 --- a/lectures/kalman.md +++ b/lectures/kalman.md @@ -565,7 +565,8 @@ In the simulation, take $\theta = 10$, $\hat x_0 = 8$ and $\Sigma_0 = 1$. Your figure should -- modulo randomness -- look something like this -```{figure} /_static/lecture_specific/kalman/kl_ex1_fig.png +```{image} /_static/lecture_specific/kalman/kl_ex1_fig.png +:align: center ``` ```{exercise-end} @@ -629,7 +630,8 @@ Plot $z_t$ against $T$, setting $\epsilon = 0.1$ and $T = 600$. Your figure should show error erratically declining something like this -```{figure} /_static/lecture_specific/kalman/kl_ex2_fig.png +```{image} /_static/lecture_specific/kalman/kl_ex2_fig.png +:align: center ``` ```{exercise-end} @@ -732,7 +734,8 @@ Finally, set $x_0 = (0, 0)$. You should end up with a figure similar to the following (modulo randomness) -```{figure} /_static/lecture_specific/kalman/kalman_ex3.png +```{image} /_static/lecture_specific/kalman/kalman_ex3.png +:align: center ``` Observe how, after an initial learning period, the Kalman filter performs quite well, even relative to the competitor who predicts optimally with knowledge of the latent state. diff --git a/lectures/markov_perf.md b/lectures/markov_perf.md index a50f5048b..c7b99c7ad 100644 --- a/lectures/markov_perf.md +++ b/lectures/markov_perf.md @@ -722,7 +722,8 @@ c1 = c2 = np.array([1, -2, 1]) e1 = e2 = np.array([10, 10, 3]) ``` -```{figure} /_static/lecture_specific/markov_perf/judd_fig2.png +```{image} /_static/lecture_specific/markov_perf/judd_fig2.png +:align: center ``` Inventories trend to a common steady state. @@ -731,7 +732,8 @@ If we increase the depreciation rate to $\delta = 0.05$, then we expect steady s This is indeed the case, as the next figure shows -```{figure} /_static/lecture_specific/markov_perf/judd_fig1.png +```{image} /_static/lecture_specific/markov_perf/judd_fig1.png +:align: center ``` In this exercise, reproduce the figure when $\delta = 0.02$. diff --git a/lectures/ols.md b/lectures/ols.md index 51497a664..736cbcf19 100644 --- a/lectures/ols.md +++ b/lectures/ols.md @@ -604,7 +604,7 @@ results. ```{code-cell} python3 # Load in data -df4 = pd.read_stata('https://github.com/QuantEcon/lecture-python/blob/master/source/_static/lecture_specific/ols/maketable4.dta?raw=true') +df4 = pd.read_stata('https://github.com/QuantEcon/lecture-python.myst/raw/refs/heads/main/lectures/_static/lecture_specific/ols/maketable4.dta') # Add a constant term df4['const'] = 1 @@ -677,7 +677,7 @@ using `numpy` - your results should be the same as those in the ```{code-cell} python3 # Load in data -df1 = pd.read_stata('https://github.com/QuantEcon/lecture-python/blob/master/source/_static/lecture_specific/ols/maketable1.dta?raw=true') +df1 = pd.read_stata('https://github.com/QuantEcon/lecture-python.myst/raw/refs/heads/main/lectures/_static/lecture_specific/ols/maketable1.dta') df1 = df1.dropna(subset=['logpgp95', 'avexpr']) # Add a constant term diff --git a/lectures/optgrowth_fast.md b/lectures/optgrowth_fast.md index 514fa12b6..c63bf9038 100644 --- a/lectures/optgrowth_fast.md +++ b/lectures/optgrowth_fast.md @@ -344,7 +344,8 @@ $$ The next figure shows a simulation of 100 elements of this sequence for three different discount factors (and hence three different policies). -```{figure} /_static/lecture_specific/optgrowth/solution_og_ex2.png +```{image} /_static/lecture_specific/optgrowth/solution_og_ex2.png +:align: center ``` In each sequence, the initial condition is $y_0 = 0.1$. diff --git a/lectures/pandas_panel.md b/lectures/pandas_panel.md index 664545b81..39c678478 100644 --- a/lectures/pandas_panel.md +++ b/lectures/pandas_panel.md @@ -502,7 +502,7 @@ in Europe by age and sex from [Eurostat](https://ec.europa.eu/eurostat/data/data The dataset can be accessed with the following link: ```{code-cell} ipython3 -url3 = 'https://raw.githubusercontent.com/QuantEcon/lecture-python/master/source/_static/lecture_specific/pandas_panel/employ.csv' +url3 = 'https://github.com/QuantEcon/lecture-python.myst/raw/refs/heads/main/lectures/_static/lecture_specific/pandas_panel/employ.csv' ``` Reading in the CSV file returns a panel dataset in long format. Use `.pivot_table()` to construct