diff --git a/.github/actions/setup-project/action.yml b/.github/actions/setup-project/action.yml index fc422c6e1..f9ca756b9 100644 --- a/.github/actions/setup-project/action.yml +++ b/.github/actions/setup-project/action.yml @@ -9,10 +9,10 @@ runs: sudo apt-get update \ && sudo apt-get install -y --no-install-recommends \ libcurl4-openssl-dev - - name: Set up Python 3.12.9 + - name: Set up Python 3.13.2 uses: actions/setup-python@v4 with: - python-version: "3.12.9" + python-version: "3.13.2" - name: Install poetry shell: bash run: pip install poetry==2.1.3 diff --git a/README.md b/README.md index 1f1efe468..a4d4f0c38 100644 --- a/README.md +++ b/README.md @@ -39,7 +39,7 @@ You will need the following items: This project currently works with these major versions of the following main components: -- Python 3.12.x +- Python 3.13.x - PostgreSQL 15.x (version 12.x is used in the hosted environments) These instructions will walk you through how to set your machine up with all of @@ -178,12 +178,12 @@ session to make the changes take effect. Now we're ready to install the Python version we need with `pyenv`, like so: ```sh -pyenv install 3.12 +pyenv install 3.13 ``` -This will install the latest version of Python 3.12. +This will install the latest version of Python 3.13. -_NOTE: This project currently runs on Python 3.12.x._ +_NOTE: This project currently runs on Python 3.13.x._ #### Python Dependency Installation @@ -264,12 +264,12 @@ git clone git@github.com:GSA/notifications-api.git Now go into the project directory (`notifications-api` by default), create a virtual environment, and set the local Python version to point to the virtual -environment (assumes version Python `3.12.9` is what is installed on your +environment (assumes version Python `3.13.2` is what is installed on your machine): ```sh cd notifications-api -pyenv virtualenv 3.12.9 notify-api +pyenv virtualenv 3.13.2 notify-api pyenv local notify-api ``` @@ -317,10 +317,10 @@ If you're upgrading an existing project to a newer version of Python, you can follow these steps to get yourself up-to-date. First, use `pyenv` to install the newer version of Python you'd like to use; -we'll use `3.12` in our example here since we recently upgraded to this version: +we'll use `3.13` in our example here since we recently upgraded to this version: ```sh -pyenv install 3.12 +pyenv install 3.13 ``` Next, delete the virtual environment you previously had set up. If you followed @@ -335,7 +335,7 @@ environment with the newer version of Python you just installed: ```sh cd notifications-api -pyenv virtualenv 3.12.9 notify-api +pyenv virtualenv 3.13.2 notify-api pyenv local notify-api ``` diff --git a/poetry.lock b/poetry.lock index c4943cefe..d4a204504 100644 --- a/poetry.lock +++ b/poetry.lock @@ -1,4 +1,4 @@ -# This file is automatically @generated by Poetry 2.1.1 and should not be changed by hand. +# This file is automatically @generated by Poetry 2.1.3 and should not be changed by hand. [[package]] name = "aiohappyeyeballs" @@ -134,7 +134,6 @@ files = [ [package.dependencies] frozenlist = ">=1.1.0" -typing-extensions = {version = ">=4.2", markers = "python_version < \"3.13\""} [[package]] name = "alembic" @@ -186,7 +185,6 @@ files = [ [package.dependencies] idna = ">=2.8" sniffio = ">=1.1" -typing_extensions = {version = ">=4.5", markers = "python_version < \"3.13\""} [package.extras] trio = ["trio (>=0.26.1)"] @@ -245,18 +243,18 @@ tests-mypy = ["mypy (>=1.11.1) ; platform_python_implementation == \"CPython\" a [[package]] name = "awscli" -version = "1.42.21" +version = "1.42.22" description = "Universal Command Line Environment for AWS." optional = false python-versions = ">=3.9" groups = ["main", "dev"] files = [ - {file = "awscli-1.42.21-py3-none-any.whl", hash = "sha256:efe81866de02357961fa332194333e2b974ecee24725b3194d09150350261246"}, - {file = "awscli-1.42.21.tar.gz", hash = "sha256:371a60901cd3858e7da9943fc40a992dca560d01b6da126b902e992be30dcb4d"}, + {file = "awscli-1.42.22-py3-none-any.whl", hash = "sha256:47e35d6cde75c9f9e9ff284cbade347df37b80c105c831771281bb9e6a976775"}, + {file = "awscli-1.42.22.tar.gz", hash = "sha256:b76756c8bf7dca6e7d576afdac4b2b5b868a5de3a2efc8c9a05f8eda7515ec76"}, ] [package.dependencies] -botocore = "1.40.21" +botocore = "1.40.22" colorama = ">=0.2.5,<0.4.7" docutils = ">=0.18.1,<=0.19" PyYAML = ">=3.10,<6.1" @@ -495,18 +493,18 @@ testing = ["pytest (>=6,!=7.0.0)", "pytest-xdist (>=2)"] [[package]] name = "boto3" -version = "1.40.21" +version = "1.40.22" description = "The AWS SDK for Python" optional = false python-versions = ">=3.9" groups = ["main", "dev"] files = [ - {file = "boto3-1.40.21-py3-none-any.whl", hash = "sha256:3772fb828864d3b7046c8bdf2f4860aaca4a79f25b7b060206c6a5f4944ea7f9"}, - {file = "boto3-1.40.21.tar.gz", hash = "sha256:876ccc0b25517b992bd27976282510773a11ebc771aa5b836a238ea426c82187"}, + {file = "boto3-1.40.22-py3-none-any.whl", hash = "sha256:ecc468266a018f77869fd9cc3564500c3c1b658eb6d8e20351ec88cc06258dbf"}, + {file = "boto3-1.40.22.tar.gz", hash = "sha256:9972752b50fd376576a6e04a7d6afc69762a368f29b85314598edb62c1894663"}, ] [package.dependencies] -botocore = ">=1.40.21,<1.41.0" +botocore = ">=1.40.22,<1.41.0" jmespath = ">=0.7.1,<2.0.0" s3transfer = ">=0.13.0,<0.14.0" @@ -515,14 +513,14 @@ crt = ["botocore[crt] (>=1.21.0,<2.0a0)"] [[package]] name = "botocore" -version = "1.40.21" +version = "1.40.22" description = "Low-level, data-driven core of boto 3." optional = false python-versions = ">=3.9" groups = ["main", "dev"] files = [ - {file = "botocore-1.40.21-py3-none-any.whl", hash = "sha256:574ecf9b68c1721650024a27e00e0080b6f141c281ebfce49e0d302969270ef4"}, - {file = "botocore-1.40.21.tar.gz", hash = "sha256:f77e9c199df0252b14ea739a9ac99723940f6bde90f4c2e7802701553a62827b"}, + {file = "botocore-1.40.22-py3-none-any.whl", hash = "sha256:df50788fc71250dd884a4e2b60931103416bfba5baa85d2e150b8434ded7e61e"}, + {file = "botocore-1.40.22.tar.gz", hash = "sha256:eb800ece2cd67777ebb09a67a0d1628db3aea4f2ccbf1d8bf7dbf8504d1f3b71"}, ] [package.dependencies] @@ -1163,7 +1161,6 @@ license-expression = ">=30,<31" packageurl-python = ">=0.11,<2" py-serializable = ">=2.1.0,<3.0.0" sortedcontainers = ">=2.4.0,<3.0.0" -typing_extensions = {version = ">=4.6,<5.0", markers = "python_version < \"3.13\""} [package.extras] json-validation = ["jsonschema[format-nongpl] (>=4.25,<5.0)", "referencing (>=0.28.4)"] @@ -1323,9 +1320,6 @@ files = [ {file = "exceptiongroup-1.3.0.tar.gz", hash = "sha256:b241f5885f560bc56a59ee63ca4c6a8bfa46ae4ad651af316d4e81817bb9fd88"}, ] -[package.dependencies] -typing-extensions = {version = ">=4.6.0", markers = "python_version < \"3.13\""} - [package.extras] test = ["pytest (>=6)"] @@ -2708,14 +2702,14 @@ files = [ [[package]] name = "more-itertools" -version = "10.7.0" +version = "10.8.0" description = "More routines for operating on iterables, beyond itertools" optional = false python-versions = ">=3.9" groups = ["main", "dev"] files = [ - {file = "more_itertools-10.7.0-py3-none-any.whl", hash = "sha256:d43980384673cb07d2f7d2d918c616b30c659c089ee23953f601d6609c67510e"}, - {file = "more_itertools-10.7.0.tar.gz", hash = "sha256:9fddd5403be01a94b204faadcff459ec3568cf110265d3c54323e1e866ad29d3"}, + {file = "more_itertools-10.8.0-py3-none-any.whl", hash = "sha256:52d4362373dcf7c52546bc4af9a86ee7c4579df9a8dc268be0a2f949d376cc9b"}, + {file = "more_itertools-10.8.0.tar.gz", hash = "sha256:f638ddf8a1a0d134181275fb5d58b086ead7c6a72429ad725c67503f13ba30bd"}, ] [[package]] @@ -3177,14 +3171,14 @@ files = [ [[package]] name = "pbs-installer" -version = "2025.8.28" +version = "2025.9.2" description = "Installer for Python Build Standalone" optional = false python-versions = ">=3.8" groups = ["main", "dev"] files = [ - {file = "pbs_installer-2025.8.28-py3-none-any.whl", hash = "sha256:a42cd2532dbac5dc836db41cf1bc5ed26ef275214e8e30e35aff961883997048"}, - {file = "pbs_installer-2025.8.28.tar.gz", hash = "sha256:3accb1a184a048e657323c17d1c48b2969e49501b165e7200a520af7022d9bb0"}, + {file = "pbs_installer-2025.9.2-py3-none-any.whl", hash = "sha256:659a5399278c810761c1e7bc54095f38af11a5b593ce8d45c41a3a9d6759d8f1"}, + {file = "pbs_installer-2025.9.2.tar.gz", hash = "sha256:0da1d59bb5c4d8cfb5aee29ac2a37b37d651a45ab5ede19d1331df9a92464b5d"}, ] [package.dependencies] @@ -4184,7 +4178,6 @@ files = [ [package.dependencies] attrs = ">=22.2.0" rpds-py = ">=0.7.0" -typing-extensions = {version = ">=4.4.0", markers = "python_version < \"3.13\""} [[package]] name = "regex" @@ -5674,5 +5667,5 @@ cffi = ["cffi (>=1.17) ; python_version >= \"3.13\" and platform_python_implemen [metadata] lock-version = "2.1" -python-versions = "^3.12.9" -content-hash = "b345327e64022acd1cada147dd9a4f90724ebb1d163a8e093e1c285c3a9cd26e" +python-versions = "^3.13.2" +content-hash = "b9b24e4b14f64163f8d087bc5f6bf94b2ed6ff81ff9bd3565e2ccbeb5a2508b5" diff --git a/pyproject.toml b/pyproject.toml index 3d0199b5e..4f312d4be 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -8,7 +8,7 @@ readme = "README.md" [tool.poetry.dependencies] -python = "^3.12.9" +python = "^3.13.2" alembic = "==1.16.5" amqp = "==5.3.1" beautifulsoup4 = "==4.13.5" diff --git a/runtime.txt b/runtime.txt index 64f28603a..c94f67640 100644 --- a/runtime.txt +++ b/runtime.txt @@ -1 +1 @@ -python-3.12.x +python-3.13.x