From 30be14b9d96c0b0b7b4fa251099eceb5e64b3439 Mon Sep 17 00:00:00 2001
From: Wil T <wil.thieme@protonmail.com>
Date: Fri, 6 Sep 2024 12:25:22 -0400
Subject: [PATCH] circleci updates (#1122)

* use uv in circleci

* use python 3.12 in circleci
---
 .circleci/config.yml | 34 ++++++++++++++++++----------------
 1 file changed, 18 insertions(+), 16 deletions(-)

diff --git a/.circleci/config.yml b/.circleci/config.yml
index 69b7a43726..682c8b0ddb 100644
--- a/.circleci/config.yml
+++ b/.circleci/config.yml
@@ -20,46 +20,47 @@ jobs:
   # Documentation CI
   docs-build:
     docker:
-      - image: cimg/python:3.10
+      - image: cimg/python:3.12
     steps:
       - checkout
       # Download and cache dependencies
       - restore_cache:
           keys:
-            - v2-dependencies-python3.10-{{ checksum "./docs/requirements.txt" }}
+            - v2-dependencies-python3.12-{{ checksum "./docs/requirements.txt" }}
             # fallback to using the latest cache if no exact match is found
-            - v2-dependencies-python3.10-
+            - v2-dependencies-python3.12-
       - run:
           name: Install dependencies
           # Note that we the circleci node image installs stuff with a user "circleci", rather
           # than root. So we need to tell npm where to install stuff.
           command: |
-            python3 -m venv venv
-            . venv/bin/activate
-            pip install -r ./docs/requirements.txt
+            pip install uv
+            uv venv
+            source .venv/bin/activate
+            uv pip install -r ./docs/requirements.txt
       - save_cache:
           paths:
             - ./venv
-          key: v2-dependencies-python3.10-{{ checksum "./docs/requirements.txt" }}
+          key: v2-dependencies-python3.12-{{ checksum "./docs/requirements.txt" }}
       - run:
           name: Build docs
           command: |
-            . venv/bin/activate
+            source .venv/bin/activate
             cd docs/
             make deploy_docs
             cd ..
 
   docs-build-deploy:
     docker:
-      - image: cimg/python:3.10-node
+      - image: cimg/python:3.12-node
     steps:
       - checkout
       # Download and cache dependencies
       - restore_cache:
           keys:
-            - v2-dependencies-python3.10-{{ checksum "./docs/requirements.txt" }}
+            - v2-dependencies-python3.12-{{ checksum "./docs/requirements.txt" }}
             # fallback to using the latest cache if no exact match is found
-            - v2-dependencies-python3.10-
+            - v2-dependencies-python3.12-
       - run:
           name: Install dependencies
           # Note that we the circleci node image installs stuff with a user "circleci", rather
@@ -67,13 +68,14 @@ jobs:
           command: |
             npm set prefix=/home/circleci/npm
             npm install -g --silent gh-pages@2.0.1
-            python3 -m venv venv
-            . venv/bin/activate
-            pip install -r ./docs/requirements.txt
+            pip install uv
+            uv venv
+            source .venv/bin/activate
+            uv pip install -r ./docs/requirements.txt
       - save_cache:
           paths:
             - ./venv
-          key: v2-dependencies-python3.10-{{ checksum "./docs/requirements.txt" }}
+          key: v2-dependencies-python3.12-{{ checksum "./docs/requirements.txt" }}
       - add_ssh_keys:
           # This SSH key is "CircleCI Docs" in https://github.com/move-coop/parsons/settings/keys
           # We need write access to the Parsons repo, so we can push the "gh-pages" branch.
@@ -85,7 +87,7 @@ jobs:
           # (This file tell Github Pages that we want to include all files in docs/, including those
           # that start with an underscore like _static/).
           command: |
-            . venv/bin/activate
+            source .venv/bin/activate
             cd docs/
             make deploy_docs
             cd ..