From 9e8362f5ada182ed3be9978749b246ee8e88aa51 Mon Sep 17 00:00:00 2001 From: Hugo Karas Date: Wed, 27 Nov 2024 10:42:47 +0100 Subject: [PATCH 1/7] Bump Version and update README --- README.md | 2 +- VERSION | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 2442dea3..133ed84b 100644 --- a/README.md +++ b/README.md @@ -16,7 +16,7 @@ The early versions of DeerLab (up to version 0.9.2) are written in MATLAB. The o ## Requirements -DeerLab is available for Windows, Mac and Linux systems and requires **Python 3.9**, **3.10**, **3.11**, or **3.12**. +DeerLab is available for Windows, Mac and Linux systems and requires **Python 3.9** to **3.13** All additional dependencies are automatically downloaded and installed during the setup. diff --git a/VERSION b/VERSION index c6412202..79127d85 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -v1.1.4 +v1.2.0 From e541f2e28e21985df7bdb43955f3028337b48d58 Mon Sep 17 00:00:00 2001 From: Hugo Karas Date: Wed, 27 Nov 2024 10:46:17 +0100 Subject: [PATCH 2/7] Update changelog --- docsrc/source/changelog.rst | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/docsrc/source/changelog.rst b/docsrc/source/changelog.rst index 08714a20..a702b2b8 100644 --- a/docsrc/source/changelog.rst +++ b/docsrc/source/changelog.rst @@ -24,6 +24,15 @@ Release Notes - |fix| : Something which was not working as expected or leading to errors has been fixed. - |api| : This will require changes in your scripts or code. + +Release ``v1.2`` - December 2024 +------------------------------------------ +- |feature| : `modelUncert` is now returned in the `FitResult` object +- |fix| : Fixes issues with bootrstrap uncertainties +- |api| : N bootstrap samples no longer produces N+1 samples +- |enhancement| : Support Python 3.13 +- |fix| : All gaussian models now normalise to 1 + Release ``v1.1.4`` - September 2024 ------------------------------------------ - |enhancement| : Expanded sophgrid to allow for closed phi integral. (:pr:`482`) From 385093e3f2f5066b7f4e5343cef6e6fcf74e819c Mon Sep 17 00:00:00 2001 From: Hugo Karas Date: Tue, 26 Nov 2024 11:08:10 +0100 Subject: [PATCH 3/7] Rename trapz to trapezoid --- deerlab/bg_models.py | 4 ++-- deerlab/classes.py | 8 ++++---- deerlab/dd_models.py | 4 ++-- deerlab/dipolarmodel.py | 4 ++-- deerlab/diststats.py | 8 ++++---- deerlab/solvers.py | 2 +- examples/advanced/ex_forcefield_fit.py | 2 +- examples/advanced/ex_global_twostates_parametric.py | 2 +- examples/advanced/ex_multigauss_fitting_4pdeer.py | 4 ++-- examples/advanced/ex_pseudotitration_parameter_free.py | 2 +- examples/basic/ex_fitting_4pdeer_gauss.py | 2 +- examples/basic/ex_restraints_4pdeer.py | 6 +++--- test/test_ddmodels.py | 2 +- test/test_dipolarmodel.py | 2 +- test/test_model_penalty.py | 4 ++-- test/test_snlls.py | 4 ++-- 16 files changed, 30 insertions(+), 30 deletions(-) diff --git a/deerlab/bg_models.py b/deerlab/bg_models.py index 037f61dc..c0a11c8f 100644 --- a/deerlab/bg_models.py +++ b/deerlab/bg_models.py @@ -188,7 +188,7 @@ def _hom3dex(t,conc,rex,lam): # Averaging integral z = np.linspace(0,1,1000)[np.newaxis,:] Dt = D*t[:,np.newaxis]*1e-6 - Is = 4*np.pi/3*np.trapz(Dt*(1-3*z**2)*sici((Dt*(1-3*z**2))/((rex*1e-9)**3))[0],z,axis=1) + Is = 4*np.pi/3*np.trapezoid(Dt*(1-3*z**2)*sici((Dt*(1-3*z**2))/((rex*1e-9)**3))[0],z,axis=1) # Background function C_k = -Vex + Is + np.squeeze(Vex*(dipolarkernel(t,rex,integralop=False))) @@ -242,7 +242,7 @@ def _hom3dex_phase(t,conc,rex,lam): ξ = 8*pi**2/9/np.sqrt(3)*(np.sqrt(3)+np.log(2-np.sqrt(3)))/np.pi*D z = np.linspace(0,1,1000)[np.newaxis,:] Dt = D*t[:,np.newaxis]*1e-6 - Ic = -ξ*(t*1e-6) + 4*np.pi/3*np.trapz(Dt*(1-3*z**2)*sici((Dt*np.abs(1-3*z**2))/((rex*1e-9)**3))[1],z,axis=1) + Ic = -ξ*(t*1e-6) + 4*np.pi/3*np.trapezoid(Dt*(1-3*z**2)*sici((Dt*np.abs(1-3*z**2))/((rex*1e-9)**3))[1],z,axis=1) # Background function C_k = - Ic - np.squeeze(Vex*(dipolarkernel(t,rex,integralop=False,complex=True)).imag) diff --git a/deerlab/classes.py b/deerlab/classes.py index 39063cbf..7c16d29c 100644 --- a/deerlab/classes.py +++ b/deerlab/classes.py @@ -151,8 +151,8 @@ def __init__(self,uqtype,data=None,covmat=None,lb=None,ub=None,threshold=None,pr elif uqtype == 'profile': xs = [self.pardist(n)[0] for n in range(nParam)] pardists = [self.pardist(n)[1] for n in range(nParam)] - means = [np.trapz(pardist*x,x) for x,pardist in zip(xs,pardists)] - std = [np.sqrt(np.trapz(pardist*(x-mean)**2,x)) for x,pardist,mean in zip(xs,pardists,means)] + means = [np.trapezoid(pardist*x,x) for x,pardist in zip(xs,pardists)] + std = [np.sqrt(np.trapezoid(pardist*(x-mean)**2,x)) for x,pardist,mean in zip(xs,pardists,means)] self.mean = means self.median = self.percentile(50) self.std = std @@ -342,8 +342,8 @@ def pardist(self,n=0): # Ensure normalization of the probability density function (if not a Dirac delta function) if not isdelta: - if np.trapz(pdf, x)!=0: - pdf = pdf/np.trapz(pdf, x) + if np.trapezoid(pdf, x)!=0: + pdf = pdf/np.trapezoid(pdf, x) return x, pdf #-------------------------------------------------------------------------------- diff --git a/deerlab/dd_models.py b/deerlab/dd_models.py index 1c4d6d3f..2293f090 100644 --- a/deerlab/dd_models.py +++ b/deerlab/dd_models.py @@ -99,7 +99,7 @@ def docstr_example(fcnstr): # ================================================================= def _normalize(r,P): if not all(P==0): - P = P/np.trapz(P,r) + P = P/np.trapezoid(P,r) return P # ================================================================= @@ -129,7 +129,7 @@ def _multirice3dfun(r,nu,sig): P[P<0] = 0 # Normalization - P = np.squeeze(P)/np.sum([np.trapz(c,np.squeeze(r)) for c in P.T]) + P = np.squeeze(P)/np.sum([np.trapezoid(c,np.squeeze(r)) for c in P.T]) return P # ================================================================= diff --git a/deerlab/dipolarmodel.py b/deerlab/dipolarmodel.py index 80035e5a..1f3f0a79 100644 --- a/deerlab/dipolarmodel.py +++ b/deerlab/dipolarmodel.py @@ -642,8 +642,8 @@ def dipolarpenalty(Pmodel, r, type, selection=None): def compactness_penalty(*args): P = Pmodel(*[r]*Nconstants,*args) if not np.all(P==0): - P = P/np.trapz(P,r) - return np.sqrt(P*(r - np.trapz(P*r,r))**2*np.mean(np.diff(r))) + P = P/np.trapezoid(P,r) + return np.sqrt(P*(r - np.trapezoid(P*r,r))**2*np.mean(np.diff(r))) # Add the penalty to the Pmodel penalty = Penalty(compactness_penalty,selection, signature = Pmodel._parameter_list(), diff --git a/deerlab/diststats.py b/deerlab/diststats.py index 22d5d022..23ca2744 100644 --- a/deerlab/diststats.py +++ b/deerlab/diststats.py @@ -103,7 +103,7 @@ def analyze_rmode(V): # Auxiliary functions # ------------------- - int = np.trapz(P,r) if not np.all(P==0) else 1 + int = np.trapezoid(P,r) if not np.all(P==0) else 1 def normalize(P): return P/int # Percentile function @@ -114,7 +114,7 @@ def pctile(r,P,p): return rpctile # Expectation operator function def E(x,P,r): - return np.trapz(x*normalize(P),r) + return np.trapezoid(x*normalize(P),r) # Location estimators # ------------------- @@ -125,7 +125,7 @@ def E(x,P,r): # Interquartile mean def iqmfcn(P): IQrange = (r>pctile(r,P,25)) & (r1: label=None plt.plot(r,2*n + Pfit,'k',label='Total contribution' if n<1 else None) plt.fill(r,2*n + xA*results.P_1,color=green,alpha=0.5,label='State A (natural)' if n<1 else None) diff --git a/examples/basic/ex_fitting_4pdeer_gauss.py b/examples/basic/ex_fitting_4pdeer_gauss.py index 225827c2..e110613e 100644 --- a/examples/basic/ex_fitting_4pdeer_gauss.py +++ b/examples/basic/ex_fitting_4pdeer_gauss.py @@ -52,7 +52,7 @@ # Extract fitted distance distribution Pfit = results.evaluate(Pmodel,r) -scale = np.trapz(Pfit,r) +scale = np.trapezoid(Pfit,r) Puncert = results.propagate(Pmodel,r,lb=np.zeros_like(r)) Pfit = Pfit/scale Pci95 = Puncert.ci(95)/scale diff --git a/examples/basic/ex_restraints_4pdeer.py b/examples/basic/ex_restraints_4pdeer.py index d58675f3..d3c71a10 100644 --- a/examples/basic/ex_restraints_4pdeer.py +++ b/examples/basic/ex_restraints_4pdeer.py @@ -70,9 +70,9 @@ # Plot distribution and confidence bands violet = '#4550e6' -Pci95 = fit.PUncert.ci(95)/np.trapz(fit.P,r) -Pci50 = fit.PUncert.ci(50)/np.trapz(fit.P,r) -plt.plot(r,fit.P/np.trapz(fit.P,r),linewidth=2,color=violet,label='Distance distribution fit') +Pci95 = fit.PUncert.ci(95)/np.trapezoid(fit.P,r) +Pci50 = fit.PUncert.ci(50)/np.trapezoid(fit.P,r) +plt.plot(r,fit.P/np.trapezoid(fit.P,r),linewidth=2,color=violet,label='Distance distribution fit') plt.fill_between(r,Pci95[:,0],Pci95[:,1],color=violet,alpha=0.3) plt.fill_between(r,Pci50[:,0],Pci50[:,1],color=violet,alpha=0.4) diff --git a/test/test_ddmodels.py b/test/test_ddmodels.py index d7cba548..a3bfd125 100644 --- a/test/test_ddmodels.py +++ b/test/test_ddmodels.py @@ -30,7 +30,7 @@ def assert_ddmodel(model): assert all(P1 >= 0) assert all(P1 >= 0) and all(P2 >= 0) assert all(~np.isnan(P1)) and all(~np.isnan(P2)) and all(~np.isnan(P3)) and all(~np.isnan(P4)) - assert np.round(np.trapz(P5,rnus),2) == 1 + assert np.round(np.trapezoid(P5,rnus),2) == 1 assert len(lower)==nParam assert len(upper)==nParam assert len(meta['names'])==nParam diff --git a/test/test_dipolarmodel.py b/test/test_dipolarmodel.py index 05fe7564..f7b987e0 100644 --- a/test/test_dipolarmodel.py +++ b/test/test_dipolarmodel.py @@ -320,7 +320,7 @@ def test_fit_Pnonparametric_normalization(V1path): result = fit(Vmodel,V1path,ftol=1e-5) - assert np.isclose(np.trapz(result.P,r),1) + assert np.isclose(np.trapezoid(result.P,r),1) # ====================================================================== # Fixtures diff --git a/test/test_model_penalty.py b/test/test_model_penalty.py index 3020843e..7919e89c 100644 --- a/test/test_model_penalty.py +++ b/test/test_model_penalty.py @@ -24,8 +24,8 @@ def mock_data(): def penalty_fcn(): def _penalty_fcn(mean,std): P = dd_gauss(x,mean,std) - P = P/np.trapz(P,x) - return np.sqrt(P*(x - np.trapz(P*x,x))**2*np.mean(np.diff(x))) + P = P/np.trapezoid(P,x) + return np.sqrt(P*(x - np.trapezoid(P*x,x))**2*np.mean(np.diff(x))) return _penalty_fcn # ----------------------------------------------------------------------- diff --git a/test/test_snlls.py b/test/test_snlls.py index 29cc45e0..39799218 100644 --- a/test/test_snlls.py +++ b/test/test_snlls.py @@ -207,7 +207,7 @@ def test_SNLLS_cost_value(mock_data,mock_Amodel): def test_SNLLS_fit_with_extra_penalty(mock_data,mock_Amodel): "Check that an additional penalty can be passed correctly to the SNLLS functional" beta = 0.05 - compactness_penalty = lambda _,plin: beta*np.sqrt(plin*(r - np.trapz(plin*r,r))**2*dr) + compactness_penalty = lambda _,plin: beta*np.sqrt(plin*(r - np.trapezoid(plin*r,r))**2*dr) fit = snlls(mock_data,mock_Amodel,nlpar0,lb,ub,lbl,extrapenalty=compactness_penalty) assert np.all(abs(lin_param - fit.lin) < 1e-1) and np.all(abs(nonlin_param - fit.nonlin[0]) < 1e-1) # ====================================================================== @@ -216,7 +216,7 @@ def test_SNLLS_fit_with_multiple_extra_penalties(mock_data,mock_Amodel): # ====================================================================== "Check that multiple additional penaltyies can be passed correctly to the SNLLS functional" beta = 0.05 - compactness_penalty = lambda _,plin: beta*np.sqrt(plin*(r - np.trapz(plin*r,r))**2*dr) + compactness_penalty = lambda _,plin: beta*np.sqrt(plin*(r - np.trapezoid(plin*r,r))**2*dr) fit = snlls(mock_data,mock_Amodel,nlpar0,lb,ub,lbl,extrapenalty=[compactness_penalty]) R = 0.5 radial_penalty = lambda pnonlin,_: 1/R**2*(np.linalg.norm((pnonlin-nonlin_param)/nonlin_param-R))**2 From e1f8723e0bf891eb1cec1e81d02fc51326dedefd Mon Sep 17 00:00:00 2001 From: Hugo Karas Date: Tue, 26 Nov 2024 11:10:34 +0100 Subject: [PATCH 4/7] Update github actions --- .github/workflows/ci_PR.yml | 2 +- .github/workflows/ci_scheduled.yml | 2 +- .github/workflows/deploy_ghpages.yml | 4 ++-- .github/workflows/docs_PR.yml | 4 ++-- .github/workflows/examples_PR.yml | 4 ++-- .github/workflows/package_upload.yml | 4 ++-- 6 files changed, 10 insertions(+), 10 deletions(-) diff --git a/.github/workflows/ci_PR.yml b/.github/workflows/ci_PR.yml index 88374ad6..344e3a7a 100644 --- a/.github/workflows/ci_PR.yml +++ b/.github/workflows/ci_PR.yml @@ -12,7 +12,7 @@ jobs: fail-fast: false matrix: os: [ubuntu-latest, macos-latest, windows-latest] - python-version: ['3.11','3.12'] + python-version: ['3.12','3.13'] steps: - uses: actions/checkout@v3 diff --git a/.github/workflows/ci_scheduled.yml b/.github/workflows/ci_scheduled.yml index 65542133..fc331730 100644 --- a/.github/workflows/ci_scheduled.yml +++ b/.github/workflows/ci_scheduled.yml @@ -12,7 +12,7 @@ jobs: fail-fast: false matrix: os: [ubuntu-latest, macos-latest, windows-latest] - python-version: [3.9, "3.10", "3.11", "3.12"] + python-version: ["3.10", "3.11", "3.12","3.13"] steps: - uses: actions/checkout@v3 diff --git a/.github/workflows/deploy_ghpages.yml b/.github/workflows/deploy_ghpages.yml index 195370c9..98173fd7 100644 --- a/.github/workflows/deploy_ghpages.yml +++ b/.github/workflows/deploy_ghpages.yml @@ -12,10 +12,10 @@ jobs: steps: - uses: actions/checkout@v3 - - name: Set up Python 3.10 + - name: Set up Python 3.12 uses: actions/setup-python@v4 with: - python-version: '3.10' + python-version: '3.12' cache: 'pip' cache-dependency-path: setup.py - name: Install dependencies diff --git a/.github/workflows/docs_PR.yml b/.github/workflows/docs_PR.yml index cd4f9f67..d5150a57 100644 --- a/.github/workflows/docs_PR.yml +++ b/.github/workflows/docs_PR.yml @@ -16,10 +16,10 @@ jobs: steps: - uses: actions/checkout@v3 - - name: Set up Python 3.10 + - name: Set up Python 3.12 uses: actions/setup-python@v4 with: - python-version: '3.10' + python-version: '3.12' cache: 'pip' cache-dependency-path: setup.py - name: Install dependencies diff --git a/.github/workflows/examples_PR.yml b/.github/workflows/examples_PR.yml index 94a5ddfc..2b54a30a 100644 --- a/.github/workflows/examples_PR.yml +++ b/.github/workflows/examples_PR.yml @@ -16,10 +16,10 @@ jobs: steps: - uses: actions/checkout@v3 - - name: Set up Python 3.10 + - name: Set up Python 3.12 uses: actions/setup-python@v4 with: - python-version: '3.10' + python-version: '3.12' cache: 'pip' cache-dependency-path: setup.py diff --git a/.github/workflows/package_upload.yml b/.github/workflows/package_upload.yml index 4a3b9977..09d146fe 100644 --- a/.github/workflows/package_upload.yml +++ b/.github/workflows/package_upload.yml @@ -11,10 +11,10 @@ jobs: steps: - name: Checkout uses: actions/checkout@v1 - - name: Set up Python 3.11 + - name: Set up Python 3.12 uses: actions/setup-python@v1 with: - python-version: "3.11" + python-version: "3.12" - name: Install pypa/build run: >- python -m pip install build --user From 6067f3eb015253b6ad43826a03424ac9cd3ac4aa Mon Sep 17 00:00:00 2001 From: Hugo Karas Date: Wed, 27 Nov 2024 15:27:07 +0100 Subject: [PATCH 5/7] revent gauss norm --- deerlab/dd_models.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/deerlab/dd_models.py b/deerlab/dd_models.py index 2293f090..27692032 100644 --- a/deerlab/dd_models.py +++ b/deerlab/dd_models.py @@ -197,7 +197,7 @@ def _gauss2(r,mean1,std1,mean2,std2): #======================================================================================= # dd_gauss3 #======================================================================================= -ntoes = r""" +notes = r""" **Model** :math:`P(r) = a_1\frac{1}{\sigma_1\sqrt{2\pi}}\exp\left(-\frac{(r-\left)^2}{2\sigma_1^2}\right) + a_2\frac{1}{\sigma_2\sqrt{2\pi}}\exp\left(-\frac{(r-\left)^2}{2\sigma_2^2}\right) + a_3\frac{1}{\sigma_3\sqrt{2\pi}}\exp\left(-\frac{(r-\left)^2}{2\sigma_3^2}\right)` From a7004e6eac6ed2a83a7ff69d170caadcff218f97 Mon Sep 17 00:00:00 2001 From: Hugo Karas Date: Wed, 27 Nov 2024 15:33:32 +0100 Subject: [PATCH 6/7] Add par0 to dockstring --- deerlab/dd_models.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/deerlab/dd_models.py b/deerlab/dd_models.py index 27692032..690c011c 100644 --- a/deerlab/dd_models.py +++ b/deerlab/dd_models.py @@ -50,16 +50,17 @@ def _dd_docstring(model,notes): string += '\n' string += '\n' table = [] - table.append(['Name','Lower','Upper','Type','Frozen','Unit','Description']) + table.append(['Name','Lower','Upper','par0','Type','Frozen','Unit','Description']) for n,paramname in enumerate(model._parameter_list(order='vector')): param_str = f'``{paramname}``' lb_str = f'{np.atleast_1d(getattr(model,paramname).lb)[0]:5.3g}' ub_str = f'{np.atleast_1d(getattr(model,paramname).ub)[0]:5.3g}' + par0_str = f'{np.atleast_1d(getattr(model,paramname).par0)[0]:5.3g}' linear_str = "linear" if np.all(getattr(model,paramname).linear) else "nonlin" frozen_str = "Yes" if np.all(getattr(model,paramname).frozen) else "No" unit_str = str(getattr(model,paramname).unit) desc_str = str(getattr(model,paramname).description) - table.append([param_str,lb_str,ub_str,linear_str,frozen_str,unit_str,desc_str]) + table.append([param_str,lb_str,ub_str,par0_str,linear_str,frozen_str,unit_str,desc_str]) string += formatted_table(table) string += f'\n{notes}' From f13a8702b1311c562b0835468360a779e32f15cc Mon Sep 17 00:00:00 2001 From: Hugo Karas Date: Thu, 9 Jan 2025 14:14:43 +0100 Subject: [PATCH 7/7] Updated github actions --- .github/workflows/ci_PR.yml | 4 ++-- .github/workflows/ci_scheduled.yml | 4 ++-- .github/workflows/deploy_ghpages.yml | 4 ++-- .github/workflows/docs_PR.yml | 4 ++-- .github/workflows/examples_PR.yml | 4 ++-- .github/workflows/package_upload.yml | 4 ++-- 6 files changed, 12 insertions(+), 12 deletions(-) diff --git a/.github/workflows/ci_PR.yml b/.github/workflows/ci_PR.yml index 344e3a7a..e220f780 100644 --- a/.github/workflows/ci_PR.yml +++ b/.github/workflows/ci_PR.yml @@ -15,10 +15,10 @@ jobs: python-version: ['3.12','3.13'] steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - name: Set up Python ${{ matrix.python-version }} - uses: actions/setup-python@v4 + uses: actions/setup-python@v5 with: python-version: ${{ matrix.python-version }} cache: 'pip' diff --git a/.github/workflows/ci_scheduled.yml b/.github/workflows/ci_scheduled.yml index fc331730..c39e6034 100644 --- a/.github/workflows/ci_scheduled.yml +++ b/.github/workflows/ci_scheduled.yml @@ -14,10 +14,10 @@ jobs: os: [ubuntu-latest, macos-latest, windows-latest] python-version: ["3.10", "3.11", "3.12","3.13"] steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - name: Set up Python ${{ matrix.python-version }} - uses: actions/setup-python@v4 + uses: actions/setup-python@v5 with: python-version: ${{ matrix.python-version }} cache: 'pip' diff --git a/.github/workflows/deploy_ghpages.yml b/.github/workflows/deploy_ghpages.yml index 98173fd7..7c0b068d 100644 --- a/.github/workflows/deploy_ghpages.yml +++ b/.github/workflows/deploy_ghpages.yml @@ -10,10 +10,10 @@ jobs: deploy: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - name: Set up Python 3.12 - uses: actions/setup-python@v4 + uses: actions/setup-python@v5 with: python-version: '3.12' cache: 'pip' diff --git a/.github/workflows/docs_PR.yml b/.github/workflows/docs_PR.yml index d5150a57..7469c572 100644 --- a/.github/workflows/docs_PR.yml +++ b/.github/workflows/docs_PR.yml @@ -14,10 +14,10 @@ jobs: docsbuild: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - name: Set up Python 3.12 - uses: actions/setup-python@v4 + uses: actions/setup-python@v5 with: python-version: '3.12' cache: 'pip' diff --git a/.github/workflows/examples_PR.yml b/.github/workflows/examples_PR.yml index 2b54a30a..8f5ee280 100644 --- a/.github/workflows/examples_PR.yml +++ b/.github/workflows/examples_PR.yml @@ -14,10 +14,10 @@ jobs: deploy: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - name: Set up Python 3.12 - uses: actions/setup-python@v4 + uses: actions/setup-python@v5 with: python-version: '3.12' cache: 'pip' diff --git a/.github/workflows/package_upload.yml b/.github/workflows/package_upload.yml index 09d146fe..a6114eb4 100644 --- a/.github/workflows/package_upload.yml +++ b/.github/workflows/package_upload.yml @@ -10,9 +10,9 @@ jobs: runs-on: ubuntu-latest steps: - name: Checkout - uses: actions/checkout@v1 + uses: actions/checkout@v4 - name: Set up Python 3.12 - uses: actions/setup-python@v1 + uses: actions/setup-python@v5 with: python-version: "3.12" - name: Install pypa/build