Repository: nchammas/flintrock (language: python)

Issue:
chore: bump pyyaml to build with py3.13
This PR makes the following changes:
*  bump pyyaml to build with py3.13

relates to https://github.com/Homebrew/homebrew-core/pull/194055



Discussion / hints:

Fix patch:
diff --git a/.github/workflows/flintrock.yaml b/.github/workflows/flintrock.yaml
index 71ad8cf..e8d8ba8 100644
--- a/.github/workflows/flintrock.yaml
+++ b/.github/workflows/flintrock.yaml
@@ -19,11 +19,11 @@ jobs:
         python-version:
           # Update the artifact upload steps below if modifying
           # this list of Python versions.
-          - "3.8"
           - "3.9"
           - "3.10"
           - "3.11"
           - "3.12"
+          - "3.13"
     name: ${{ matrix.os }} / Python ${{ matrix.python-version }}
     steps:
       - uses: actions/checkout@v3
@@ -36,13 +36,13 @@ jobs:
       - run: python -m build
       - uses: actions/upload-artifact@v3
         # Use the latest supported Python to build a standalone package.
-        if: ${{ matrix.python-version == '3.12' }}
+        if: ${{ matrix.python-version == '3.13' }}
         with:
           name: Flintrock Standalone - ${{ matrix.os }}
           path: dist/Flintrock-*-standalone-*.zip
       - uses: actions/upload-artifact@v3
         # Use the oldest supported Python to build a wheel.
-        if: ${{ matrix.os == 'ubuntu-20.04' && matrix.python-version == '3.8' }}
+        if: ${{ matrix.os == 'ubuntu-20.04' && matrix.python-version == '3.9' }}
         with:
           name: Flintrock Wheel
           path: dist/Flintrock-*.whl
diff --git a/CHANGES.md b/CHANGES.md
index 8d07769..e121c08 100644
--- a/CHANGES.md
+++ b/CHANGES.md
@@ -4,7 +4,11 @@
 
 [Unreleased]: https://github.com/nchammas/flintrock/compare/v2.1.0...master
 
-Nothing notable yet.
+### Changed
+
+* [#383]: Dropped support for Python 3.8 and added CI build for Python 3.13.
+
+[#383]: https://github.com/nchammas/flintrock/pull/383
 
 ## [2.1.0] - 2023-11-26
 
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
index 08531a4..f494c3e 100644
--- a/CONTRIBUTING.md
+++ b/CONTRIBUTING.md
@@ -78,7 +78,7 @@ There are a few things you should do before diving in to write a new feature or
 
 ### Changing dependencies
 
-If you are changing anything about Flintrock's dependencies, be sure to update the compiled requirements using [pip-tools] and the lowest version of Python that Flintrock supports (Python 3.8):
+If you are changing anything about Flintrock's dependencies, be sure to update the compiled requirements using [pip-tools] and the lowest version of Python that Flintrock supports (Python 3.9):
 
 [pip-tools]: https://github.com/jazzband/pip-tools
 
diff --git a/README.md b/README.md
index 9a58e0a..a8bae5c 100644
--- a/README.md
+++ b/README.md
@@ -114,7 +114,7 @@ Before using Flintrock, take a quick look at the
 notice and [license](https://github.com/nchammas/flintrock/blob/master/LICENSE)
 and make sure you're OK with their terms.
 
-**Flintrock requires Python 3.8 or newer**, unless you are using one
+**Flintrock requires Python 3.9 or newer**, unless you are using one
 of our **standalone packages**. Flintrock has been thoroughly tested
 only on OS X, but it should run on all POSIX systems.
 A motivated contributor should be able to add
diff --git a/requirements/developer.pip b/requirements/developer.pip
index b4baf7d..2a32038 100644
--- a/requirements/developer.pip
+++ b/requirements/developer.pip
@@ -1,43 +1,43 @@
 #
-# This file is autogenerated by pip-compile with Python 3.8
+# This file is autogenerated by pip-compile with Python 3.9
 # by the following command:
 #
 #    pip-compile --output-file=requirements/developer.pip requirements/developer.in
 #
 -e file:.#egg=Flintrock
-    # via -r requirements/user.pip
-bcrypt==4.1.2
+    # via -r /Users/nicholaschammas/Projects/nchammas/flintrock/requirements/user.pip
+bcrypt==4.2.1
     # via
-    #   -r requirements/user.pip
+    #   -r /Users/nicholaschammas/Projects/nchammas/flintrock/requirements/user.pip
     #   paramiko
 boto3==1.29.4
     # via
-    #   -r requirements/user.pip
+    #   -r /Users/nicholaschammas/Projects/nchammas/flintrock/requirements/user.pip
     #   flintrock
 botocore==1.32.4
     # via
-    #   -r requirements/user.pip
+    #   -r /Users/nicholaschammas/Projects/nchammas/flintrock/requirements/user.pip
     #   boto3
     #   flintrock
     #   s3transfer
-cffi==1.16.0
+cffi==1.17.1
     # via
-    #   -r requirements/user.pip
+    #   -r /Users/nicholaschammas/Projects/nchammas/flintrock/requirements/user.pip
     #   cryptography
     #   pynacl
 click==8.1.7
     # via
-    #   -r requirements/user.pip
+    #   -r /Users/nicholaschammas/Projects/nchammas/flintrock/requirements/user.pip
     #   flintrock
-coverage[toml]==7.4.3
+coverage[toml]==7.6.9
     # via
     #   coverage
     #   pytest-cov
-cryptography==42.0.5
+cryptography==44.0.0
     # via
-    #   -r requirements/user.pip
+    #   -r /Users/nicholaschammas/Projects/nchammas/flintrock/requirements/user.pip
     #   paramiko
-exceptiongroup==1.2.0
+exceptiongroup==1.2.2
     # via pytest
 flake8==6.1.0
     # via -r requirements/developer.in
@@ -45,58 +45,58 @@ iniconfig==2.0.0
     # via pytest
 jmespath==1.0.1
     # via
-    #   -r requirements/user.pip
+    #   -r /Users/nicholaschammas/Projects/nchammas/flintrock/requirements/user.pip
     #   boto3
     #   botocore
 mccabe==0.7.0
     # via flake8
-packaging==23.2
+packaging==24.2
     # via pytest
 paramiko==3.4.0
     # via
-    #   -r requirements/user.pip
+    #   -r /Users/nicholaschammas/Projects/nchammas/flintrock/requirements/user.pip
     #   flintrock
-pluggy==1.4.0
+pluggy==1.5.0
     # via pytest
 pycodestyle==2.11.1
     # via flake8
-pycparser==2.21
+pycparser==2.22
     # via
-    #   -r requirements/user.pip
+    #   -r /Users/nicholaschammas/Projects/nchammas/flintrock/requirements/user.pip
     #   cffi
 pyflakes==3.1.0
     # via flake8
 pynacl==1.5.0
     # via
-    #   -r requirements/user.pip
+    #   -r /Users/nicholaschammas/Projects/nchammas/flintrock/requirements/user.pip
     #   paramiko
-pytest==8.0.1
+pytest==8.3.4
     # via
     #   -r requirements/developer.in
     #   pytest-cov
-pytest-cov==4.1.0
+pytest-cov==6.0.0
     # via -r requirements/developer.in
-python-dateutil==2.8.2
+python-dateutil==2.9.0.post0
     # via
-    #   -r requirements/user.pip
+    #   -r /Users/nicholaschammas/Projects/nchammas/flintrock/requirements/user.pip
     #   botocore
-pyyaml==6.0.1
+pyyaml==6.0.2
     # via
-    #   -r requirements/user.pip
+    #   -r /Users/nicholaschammas/Projects/nchammas/flintrock/requirements/user.pip
     #   flintrock
 s3transfer==0.7.0
     # via
-    #   -r requirements/user.pip
+    #   -r /Users/nicholaschammas/Projects/nchammas/flintrock/requirements/user.pip
     #   boto3
-six==1.16.0
+six==1.17.0
     # via
-    #   -r requirements/user.pip
+    #   -r /Users/nicholaschammas/Projects/nchammas/flintrock/requirements/user.pip
     #   python-dateutil
-tomli==2.0.1
+tomli==2.2.1
     # via
     #   coverage
     #   pytest
-urllib3==1.26.18
+urllib3==1.26.20
     # via
-    #   -r requirements/user.pip
+    #   -r /Users/nicholaschammas/Projects/nchammas/flintrock/requirements/user.pip
     #   botocore
diff --git a/requirements/maintainer.in b/requirements/maintainer.in
index b72956b..e4786ce 100644
--- a/requirements/maintainer.in
+++ b/requirements/maintainer.in
@@ -1,5 +1,5 @@
 -r developer.pip
 wheel >= 0.31.0
 twine == 4.0.2
-PyInstaller == 6.2.0
+PyInstaller == 6.11.1
 build >= 1.0.3, < 2.0.0
diff --git a/requirements/maintainer.pip b/requirements/maintainer.pip
index 0bcdee8..be8dfcd 100644
--- a/requirements/maintainer.pip
+++ b/requirements/maintainer.pip
@@ -1,84 +1,88 @@
 #
-# This file is autogenerated by pip-compile with Python 3.8
+# This file is autogenerated by pip-compile with Python 3.9
 # by the following command:
 #
 #    pip-compile --output-file=requirements/maintainer.pip requirements/maintainer.in
 #
 -e file:.#egg=Flintrock
-    # via -r requirements/developer.pip
+    # via -r /Users/nicholaschammas/Projects/nchammas/flintrock/requirements/developer.pip
 altgraph==0.17.4
     # via
     #   macholib
     #   pyinstaller
-bcrypt==4.1.2
+backports-tarfile==1.2.0
+    # via jaraco-context
+bcrypt==4.2.1
     # via
-    #   -r requirements/developer.pip
+    #   -r /Users/nicholaschammas/Projects/nchammas/flintrock/requirements/developer.pip
     #   paramiko
 boto3==1.29.4
     # via
-    #   -r requirements/developer.pip
+    #   -r /Users/nicholaschammas/Projects/nchammas/flintrock/requirements/developer.pip
     #   flintrock
 botocore==1.32.4
     # via
-    #   -r requirements/developer.pip
+    #   -r /Users/nicholaschammas/Projects/nchammas/flintrock/requirements/developer.pip
     #   boto3
     #   flintrock
     #   s3transfer
-build==1.0.3
+build==1.2.2.post1
     # via -r requirements/maintainer.in
-certifi==2024.2.2
+certifi==2024.8.30
     # via requests
-cffi==1.16.0
+cffi==1.17.1
     # via
-    #   -r requirements/developer.pip
+    #   -r /Users/nicholaschammas/Projects/nchammas/flintrock/requirements/developer.pip
     #   cryptography
     #   pynacl
-charset-normalizer==3.3.2
+charset-normalizer==3.4.0
     # via requests
 click==8.1.7
     # via
-    #   -r requirements/developer.pip
+    #   -r /Users/nicholaschammas/Projects/nchammas/flintrock/requirements/developer.pip
     #   flintrock
-coverage[toml]==7.4.3
+coverage[toml]==7.6.9
     # via
-    #   -r requirements/developer.pip
+    #   -r /Users/nicholaschammas/Projects/nchammas/flintrock/requirements/developer.pip
     #   coverage
     #   pytest-cov
-cryptography==42.0.5
+cryptography==44.0.0
     # via
-    #   -r requirements/developer.pip
+    #   -r /Users/nicholaschammas/Projects/nchammas/flintrock/requirements/developer.pip
     #   paramiko
-docutils==0.20.1
+docutils==0.21.2
     # via readme-renderer
-exceptiongroup==1.2.0
+exceptiongroup==1.2.2
     # via
-    #   -r requirements/developer.pip
+    #   -r /Users/nicholaschammas/Projects/nchammas/flintrock/requirements/developer.pip
     #   pytest
 flake8==6.1.0
-    # via -r requirements/developer.pip
-idna==3.6
+    # via -r /Users/nicholaschammas/Projects/nchammas/flintrock/requirements/developer.pip
+idna==3.10
     # via requests
-importlib-metadata==7.0.1
+importlib-metadata==8.5.0
     # via
     #   build
     #   keyring
     #   pyinstaller
     #   pyinstaller-hooks-contrib
     #   twine
-importlib-resources==6.1.1
-    # via keyring
 iniconfig==2.0.0
     # via
-    #   -r requirements/developer.pip
+    #   -r /Users/nicholaschammas/Projects/nchammas/flintrock/requirements/developer.pip
     #   pytest
-jaraco-classes==3.3.1
+jaraco-classes==3.4.0
+    # via keyring
+jaraco-context==6.0.1
+    # via keyring
+jaraco-functools==4.1.0
     # via keyring
 jmespath==1.0.1
     # via
-    #   -r requirements/developer.pip
+    #   -r /Users/nicholaschammas/Projects/nchammas/flintrock/requirements/developer.pip
     #   boto3
     #   botocore
-keyring==24.3.0
+keyring==25.5.0
     # via twine
 macholib==1.16.3
     # via pyinstaller
@@ -86,74 +90,76 @@ markdown-it-py==3.0.0
     # via rich
 mccabe==0.7.0
     # via
-    #   -r requirements/developer.pip
+    #   -r /Users/nicholaschammas/Projects/nchammas/flintrock/requirements/developer.pip
     #   flake8
 mdurl==0.1.2
     # via markdown-it-py
-more-itertools==10.2.0
-    # via jaraco-classes
-nh3==0.2.15
+more-itertools==10.5.0
+    # via
+    #   jaraco-classes
+    #   jaraco-functools
+nh3==0.2.19
     # via readme-renderer
-packaging==23.2
+packaging==24.2
     # via
-    #   -r requirements/developer.pip
+    #   -r /Users/nicholaschammas/Projects/nchammas/flintrock/requirements/developer.pip
     #   build
     #   pyinstaller
     #   pyinstaller-hooks-contrib
     #   pytest
 paramiko==3.4.0
     # via
-    #   -r requirements/developer.pip
+    #   -r /Users/nicholaschammas/Projects/nchammas/flintrock/requirements/developer.pip
     #   flintrock
-pkginfo==1.9.6
+pkginfo==1.12.0
     # via twine
-pluggy==1.4.0
+pluggy==1.5.0
     # via
-    #   -r requirements/developer.pip
+    #   -r /Users/nicholaschammas/Projects/nchammas/flintrock/requirements/developer.pip
     #   pytest
 pycodestyle==2.11.1
     # via
-    #   -r requirements/developer.pip
+    #   -r /Users/nicholaschammas/Projects/nchammas/flintrock/requirements/developer.pip
     #   flake8
-pycparser==2.21
+pycparser==2.22
     # via
-    #   -r requirements/developer.pip
+    #   -r /Users/nicholaschammas/Projects/nchammas/flintrock/requirements/developer.pip
     #   cffi
 pyflakes==3.1.0
     # via
-    #   -r requirements/developer.pip
+    #   -r /Users/nicholaschammas/Projects/nchammas/flintrock/requirements/developer.pip
     #   flake8
-pygments==2.17.2
+pygments==2.18.0
     # via
     #   readme-renderer
     #   rich
-pyinstaller==6.2.0
+pyinstaller==6.11.1
     # via -r requirements/maintainer.in
-pyinstaller-hooks-contrib==2024.1
+pyinstaller-hooks-contrib==2024.10
     # via pyinstaller
 pynacl==1.5.0
     # via
-    #   -r requirements/developer.pip
+    #   -r /Users/nicholaschammas/Projects/nchammas/flintrock/requirements/developer.pip
     #   paramiko
-pyproject-hooks==1.0.0
+pyproject-hooks==1.2.0
     # via build
-pytest==8.0.1
+pytest==8.3.4
     # via
-    #   -r requirements/developer.pip
+    #   -r /Users/nicholaschammas/Projects/nchammas/flintrock/requirements/developer.pip
     #   pytest-cov
-pytest-cov==4.1.0
-    # via -r requirements/developer.pip
-python-dateutil==2.8.2
+pytest-cov==6.0.0
+    # via -r /Users/nicholaschammas/Projects/nchammas/flintrock/requirements/developer.pip
+python-dateutil==2.9.0.post0
     # via
-    #   -r requirements/developer.pip
+    #   -r /Users/nicholaschammas/Projects/nchammas/flintrock/requirements/developer.pip
     #   botocore
-pyyaml==6.0.1
+pyyaml==6.0.2
     # via
-    #   -r requirements/developer.pip
+    #   -r /Users/nicholaschammas/Projects/nchammas/flintrock/requirements/developer.pip
     #   flintrock
-readme-renderer==42.0
+readme-renderer==44.0
     # via twine
-requests==2.31.0
+requests==2.32.3
     # via
     #   requests-toolbelt
     #   twine
@@ -161,39 +167,36 @@ requests-toolbelt==1.0.0
     # via twine
 rfc3986==2.0.0
     # via twine
-rich==13.7.0
+rich==13.9.4
     # via twine
 s3transfer==0.7.0
     # via
-    #   -r requirements/developer.pip
+    #   -r /Users/nicholaschammas/Projects/nchammas/flintrock/requirements/developer.pip
     #   boto3
-six==1.16.0
+six==1.17.0
     # via
-    #   -r requirements/developer.pip
+    #   -r /Users/nicholaschammas/Projects/nchammas/flintrock/requirements/developer.pip
     #   python-dateutil
-tomli==2.0.1
+tomli==2.2.1
     # via
-    #   -r requirements/developer.pip
+    #   -r /Users/nicholaschammas/Projects/nchammas/flintrock/requirements/developer.pip
     #   build
     #   coverage
-    #   pyproject-hooks
     #   pytest
 twine==4.0.2
     # via -r requirements/maintainer.in
-typing-extensions==4.9.0
+typing-extensions==4.12.2
     # via rich
-urllib3==1.26.18
+urllib3==1.26.20
     # via
-    #   -r requirements/developer.pip
+    #   -r /Users/nicholaschammas/Projects/nchammas/flintrock/requirements/developer.pip
     #   botocore
     #   requests
     #   twine
-wheel==0.42.0
+wheel==0.45.1
     # via -r requirements/maintainer.in
-zipp==3.17.0
-    # via
-    #   importlib-metadata
-    #   importlib-resources
+zipp==3.21.0
+    # via importlib-metadata
 
 # The following packages are considered to be unsafe in a requirements file:
 # setuptools
diff --git a/requirements/user.pip b/requirements/user.pip
index eed3afe..b3a525c 100644
--- a/requirements/user.pip
+++ b/requirements/user.pip
@@ -1,12 +1,12 @@
 #
-# This file is autogenerated by pip-compile with Python 3.8
+# This file is autogenerated by pip-compile with Python 3.9
 # by the following command:
 #
 #    pip-compile --output-file=requirements/user.pip requirements/user.in
 #
 -e file:.#egg=Flintrock
     # via -r requirements/user.in
-bcrypt==4.1.2
+bcrypt==4.2.1
     # via paramiko
 boto3==1.29.4
     # via flintrock
@@ -15,13 +15,13 @@ botocore==1.32.4
     #   boto3
     #   flintrock
     #   s3transfer
-cffi==1.16.0
+cffi==1.17.1
     # via
     #   cryptography
     #   pynacl
 click==8.1.7
     # via flintrock
-cryptography==42.0.5
+cryptography==44.0.0
     # via paramiko
 jmespath==1.0.1
     # via
@@ -29,17 +29,17 @@ jmespath==1.0.1
     #   botocore
 paramiko==3.4.0
     # via flintrock
-pycparser==2.21
+pycparser==2.22
     # via cffi
 pynacl==1.5.0
     # via paramiko
-python-dateutil==2.8.2
+python-dateutil==2.9.0.post0
     # via botocore
-pyyaml==6.0.1
+pyyaml==6.0.2
     # via flintrock
 s3transfer==0.7.0
     # via boto3
-six==1.16.0
+six==1.17.0
     # via python-dateutil
-urllib3==1.26.18
+urllib3==1.26.20
     # via botocore
diff --git a/setup.py b/setup.py
index 0b2db9b..d234e7c 100644
--- a/setup.py
+++ b/setup.py
@@ -18,7 +18,7 @@
     author='Nicholas Chammas',
     author_email='nicholas.chammas@gmail.com',
     license='Apache License 2.0',
-    python_requires='>= 3.8',
+    python_requires='>= 3.9',
 
     # See: https://pypi.python.org/pypi?%3Aaction=list_classifiers
     classifiers=[
@@ -53,7 +53,7 @@
         'botocore == 1.32.4',
         'click == 8.1.7',
         'paramiko == 3.4.0',
-        'PyYAML == 6.0.1',
+        'PyYAML == 6.0.2',
     ],
 
     entry_points={


Test patch:
diff --git a/test-infra/bastion.tf b/test-infra/bastion.tf
index b040cca..d5b04ff 100644
--- a/test-infra/bastion.tf
+++ b/test-infra/bastion.tf
@@ -77,8 +77,8 @@ resource "aws_instance" "bastion" {
       "sudo yum install -y git",
       "sudo yum install -y gcc make patch zlib-devel bzip2 bzip2-devel readline-devel sqlite sqlite-devel openssl11-devel tk-devel libffi-devel xz-devel",
       "curl https://pyenv.run | bash",
-      ".pyenv/bin/pyenv install 3.8",
-      ".pyenv/bin/pyenv global 3.8",
+      ".pyenv/bin/pyenv install 3.9",
+      ".pyenv/bin/pyenv global 3.9",
       ".pyenv/bin/pyenv exec python -m venv /home/ec2-user/venv",
       "/home/ec2-user/venv/bin/pip install PyYAML",
     ]
diff --git a/tests/README.md b/tests/README.md
index b740858..241289a 100644
--- a/tests/README.md
+++ b/tests/README.md
@@ -6,7 +6,7 @@ The instructions here assume the following things:
 
 1. You've read through our [guide on contributing code](../CONTRIBUTING.md#contributing-code) and installed Flintrock's development dependencies.
 2. You're working from Flintrock's root directory.
-3. You're running Python 3.8+.
+3. You're running Python 3.9+.
 4. You've already setup your Flintrock config file and can launch clusters.
 
 To run all of Flintrock's tests that don't require AWS credentials, just run: