From ba5c15473bcd4d0517437efae7c7256c4ce9dc5f Mon Sep 17 00:00:00 2001
From: Brett Holt <brett@usepatch.com>
Date: Mon, 7 Apr 2025 10:25:15 -0700
Subject: [PATCH 1/6] Remove /estimates/ecommerce endpoint calls

---
 patch_api/__init__.py          |   2 +-
 patch_api/api/estimates_api.py | 201 ---------------------------------
 patch_api/api_client.py        |  18 +--
 patch_api/configuration.py     |   2 +-
 patch_api/models/__init__.py   |   3 -
 setup.py                       |   2 +-
 test/test_estimates_api.py     |  31 +----
 7 files changed, 17 insertions(+), 242 deletions(-)

diff --git a/patch_api/__init__.py b/patch_api/__init__.py
index 005dbef..1a30ab7 100644
--- a/patch_api/__init__.py
+++ b/patch_api/__init__.py
@@ -15,7 +15,7 @@
 
 from __future__ import absolute_import
 
-__version__ = "2.3.0"
+__version__ = "2.3.1"
 
 # import ApiClient
 from patch_api.api_client import ApiClient
diff --git a/patch_api/api/estimates_api.py b/patch_api/api/estimates_api.py
index 2fa3321..fea9c0f 100644
--- a/patch_api/api/estimates_api.py
+++ b/patch_api/api/estimates_api.py
@@ -485,207 +485,6 @@ def create_bitcoin_estimate_with_http_info(
             collection_formats=collection_formats,
         )
 
-    def create_ecommerce_estimate(
-        self, create_ecommerce_estimate_request={}, **kwargs
-    ):  # noqa: E501
-        """Create an e-commerce estimate given the distance traveled in meters, package weight, and transportation method.  # noqa: E501
-
-        Creates a e-commerce estimate for the amount of CO2 to be compensated. An order in the `draft` state may be created based on the parameters.   # noqa: E501
-        This method makes a synchronous HTTP request by default. To make an
-        asynchronous HTTP request, please pass async_req=True
-        >>> thread = api.create_ecommerce_estimate(create_ecommerce_estimate_request, async_req=True)
-        >>> result = thread.get()
-
-        :param async_req bool: execute request asynchronously
-        :param CreateEcommerceEstimateRequest create_ecommerce_estimate_request: (required)
-        :param int patch_version:
-        :param _preload_content: if False, the urllib3.HTTPResponse object will
-                                 be returned without reading/decoding response
-                                 data. Default is True.
-        :param _request_timeout: timeout setting for this request. If one
-                                 number provided, it will be total request
-                                 timeout. It can also be a pair (tuple) of
-                                 (connection, read) timeouts.
-        :return: EstimateResponse
-                 If the method is called asynchronously,
-                 returns the request thread.
-        """
-        kwargs["_return_http_data_only"] = True
-        return self.create_ecommerce_estimate_with_http_info(
-            create_ecommerce_estimate_request, **kwargs
-        )  # noqa: E501
-
-    def create_ecommerce_estimate_with_http_info(
-        self, create_ecommerce_estimate_request, **kwargs
-    ):  # noqa: E501
-        """Create an e-commerce estimate given the distance traveled in meters, package weight, and transportation method.  # noqa: E501
-
-        Creates a e-commerce estimate for the amount of CO2 to be compensated. An order in the `draft` state may be created based on the parameters.   # noqa: E501
-        This method makes a synchronous HTTP request by default. To make an
-        asynchronous HTTP request, please pass async_req=True
-        >>> thread = api.create_ecommerce_estimate_with_http_info(create_ecommerce_estimate_request, async_req=True)
-        >>> result = thread.get()
-
-        :param async_req bool: execute request asynchronously
-        :param CreateEcommerceEstimateRequest create_ecommerce_estimate_request: (required)
-        :param int patch_version:
-        :param _return_http_data_only: response data without head status code
-                                       and headers
-        :param _preload_content: if False, the urllib3.HTTPResponse object will
-                                 be returned without reading/decoding response
-                                 data. Default is True.
-        :param _request_timeout: timeout setting for this request. If one
-                                 number provided, it will be total request
-                                 timeout. It can also be a pair (tuple) of
-                                 (connection, read) timeouts.
-        :return: tuple(EstimateResponse, status_code(int), headers(HTTPHeaderDict))
-                 If the method is called asynchronously,
-                 returns the request thread.
-        """
-
-        local_var_params = locals()
-
-        all_params = [
-            "create_ecommerce_estimate_request",
-            "patch_version",
-        ]  # noqa: E501
-        all_params.append("async_req")
-        all_params.append("_return_http_data_only")
-        all_params.append("_preload_content")
-        all_params.append("_request_timeout")
-        all_params.append("mass_g")
-        all_params.append("total_price_cents_usd")
-        all_params.append("project_id")
-        all_params.append("metadata")
-        all_params.append("distance_m")
-        all_params.append("transportation_method")
-        all_params.append("package_mass_g")
-        all_params.append("create_order")
-        all_params.append("make")
-        all_params.append("model")
-        all_params.append("year")
-        all_params.append("transaction_value_btc_sats")
-        all_params.append("transaction_value_eth_gwei")
-        all_params.append("gas_used")
-        all_params.append("transaction_value_btc_sats")
-        all_params.append("average_daily_balance_btc_sats")
-        all_params.append("average_daily_balance_eth_gwei")
-        all_params.append("timestamp")
-        all_params.append("origin_airport")
-        all_params.append("destination_airport")
-        all_params.append("aircraft_code")
-        all_params.append("cabin_class")
-        all_params.append("passenger_count")
-        all_params.append("state")
-        all_params.append("country_code")
-        all_params.append("city")
-        all_params.append("region")
-        all_params.append("star_rating")
-        all_params.append("number_of_nights")
-        all_params.append("number_of_rooms")
-        all_params.append("vintage_year")
-        all_params.append("total_price")
-        all_params.append("currency")
-        all_params.append("amount")
-        all_params.append("unit")
-        all_params.append("issued_to")
-        all_params.append("cargo_type")
-        all_params.append("container_size_code")
-        all_params.append("destination_country_code")
-        all_params.append("destination_locode")
-        all_params.append("destination_postal_code")
-        all_params.append("emissions_scope")
-        all_params.append("freight_mass_g")
-        all_params.append("freight_volume_cubic_m")
-        all_params.append("fuel_type")
-        all_params.append("number_of_containers")
-        all_params.append("origin_country_code")
-        all_params.append("origin_locode")
-        all_params.append("origin_postal_code")
-        all_params.append("truck_weight_t")
-        all_params.append("vessel_imo")
-        all_params.append("vintage_start_year")
-        all_params.append("vintage_end_year")
-
-        for key, val in six.iteritems(local_var_params["kwargs"]):
-            if key not in all_params:
-                raise ApiTypeError(
-                    "Got an unexpected keyword argument '%s'"
-                    " to method create_ecommerce_estimate" % key
-                )
-            local_var_params[key] = val
-        del local_var_params["kwargs"]
-        # verify the required parameter 'create_ecommerce_estimate_request' is set
-        if (
-            "create_ecommerce_estimate_request" not in local_var_params
-            or local_var_params["create_ecommerce_estimate_request"] is None
-        ):
-            raise ApiValueError(
-                "Missing the required parameter `create_ecommerce_estimate_request` when calling `create_ecommerce_estimate`"
-            )  # noqa: E501
-
-        collection_formats = {}
-
-        path_params = {}
-
-        query_params = []
-
-        # do not add duplicate keys to query_params list
-        existing_keys = []
-        for param in query_params:
-            existing_keys.append(param[0])
-
-        for key in kwargs:
-            if key not in existing_keys:
-                query_params.append([key, kwargs.get(key)])
-
-        header_params = {}
-        if "patch_version" in local_var_params:
-            header_params["Patch-Version"] = local_var_params[
-                "patch_version"
-            ]  # noqa: E501
-
-        form_params = []
-        local_var_files = {}
-
-        body_params = None
-        if "create_ecommerce_estimate_request" in local_var_params:
-            body_params = local_var_params["create_ecommerce_estimate_request"]
-        # HTTP header `Accept`
-        header_params["Accept"] = self.api_client.select_header_accept(
-            ["application/json"]
-        )  # noqa: E501
-
-        # HTTP header `Content-Type`
-        header_params["Content-Type"] = (
-            self.api_client.select_header_content_type(  # noqa: E501
-                ["application/json"]
-            )
-        )  # noqa: E501
-
-        # Authentication setting
-        auth_settings = ["bearer_auth"]  # noqa: E501
-
-        return self.api_client.call_api(
-            "/v1/estimates/ecommerce",
-            "POST",
-            path_params,
-            query_params,
-            header_params,
-            body=body_params,
-            post_params=form_params,
-            files=local_var_files,
-            response_type="EstimateResponse",  # noqa: E501
-            auth_settings=auth_settings,
-            async_req=local_var_params.get("async_req"),
-            _return_http_data_only=local_var_params.get(
-                "_return_http_data_only"
-            ),  # noqa: E501
-            _preload_content=local_var_params.get("_preload_content", True),
-            _request_timeout=local_var_params.get("_request_timeout"),
-            collection_formats=collection_formats,
-        )
-
     def create_flight_estimate(
         self, create_flight_estimate_request={}, **kwargs
     ):  # noqa: E501
diff --git a/patch_api/api_client.py b/patch_api/api_client.py
index 50a1412..325bb1d 100644
--- a/patch_api/api_client.py
+++ b/patch_api/api_client.py
@@ -1,12 +1,12 @@
 # coding: utf-8
 """
-    Patch API V2
+Patch API V2
 
-    The core API used to integrate with Patch's service  # noqa: E501
+The core API used to integrate with Patch's service  # noqa: E501
 
-    The version of the OpenAPI document: 2
-    Contact: engineering@usepatch.com
-    Generated by: https://openapi-generator.tech
+The version of the OpenAPI document: 2
+Contact: engineering@usepatch.com
+Generated by: https://openapi-generator.tech
 """
 
 from __future__ import absolute_import
@@ -92,7 +92,7 @@ def __init__(
             self.default_headers[header_name] = header_value
         self.cookie = cookie
         # Set default User-Agent.
-        self.user_agent = "patch-python/2.3.0"
+        self.user_agent = "patch-python/2.3.1"
         # Set default Patch-Version
         self.patch_version = 2
 
@@ -130,9 +130,6 @@ def user_agent(self):
     def user_agent(self, value):
         self.default_headers["User-Agent"] = value
 
-    def set_default_header(self, header_name, header_value):
-        self.default_headers[header_name] = header_value
-
     @property
     def patch_version(self):
         """API version for this API client"""
@@ -142,6 +139,9 @@ def patch_version(self):
     def patch_version(self, value):
         self.default_headers["Patch-Version"] = value
 
+    def set_default_header(self, header_name, header_value):
+        self.default_headers[header_name] = header_value
+
     def __call_api(
         self,
         resource_path,
diff --git a/patch_api/configuration.py b/patch_api/configuration.py
index 48e1a11..08c270a 100644
--- a/patch_api/configuration.py
+++ b/patch_api/configuration.py
@@ -341,7 +341,7 @@ def to_debug_report(self):
             "OS: {env}\n"
             "Python Version: {pyversion}\n"
             "Version of the API: 2\n"
-            "SDK Package Version: 2.3.0".format(env=sys.platform, pyversion=sys.version)
+            "SDK Package Version: 2.3.1".format(env=sys.platform, pyversion=sys.version)
         )
 
     def get_host_settings(self):
diff --git a/patch_api/models/__init__.py b/patch_api/models/__init__.py
index 5fe200a..0d61121 100644
--- a/patch_api/models/__init__.py
+++ b/patch_api/models/__init__.py
@@ -21,9 +21,6 @@
 from patch_api.models.create_bitcoin_estimate_request import (
     CreateBitcoinEstimateRequest,
 )
-from patch_api.models.create_ecommerce_estimate_request import (
-    CreateEcommerceEstimateRequest,
-)
 from patch_api.models.create_flight_estimate_request import CreateFlightEstimateRequest
 from patch_api.models.create_hotel_estimate_request import CreateHotelEstimateRequest
 from patch_api.models.create_mass_estimate_request import CreateMassEstimateRequest
diff --git a/setup.py b/setup.py
index 062c744..cf1db65 100644
--- a/setup.py
+++ b/setup.py
@@ -11,7 +11,7 @@
 from setuptools import setup, find_packages  # noqa: H301
 
 NAME = "patch-api"
-VERSION = "2.3.0"
+VERSION = "2.3.1"
 # To install the library, run the following
 #
 # python setup.py install
diff --git a/test/test_estimates_api.py b/test/test_estimates_api.py
index 4dfec00..25149c2 100644
--- a/test/test_estimates_api.py
+++ b/test/test_estimates_api.py
@@ -1,13 +1,13 @@
 # coding: utf-8
 
 """
-    Patch API V1
+Patch API V1
 
-    The core API used to integrate with Patch's service  # noqa: E501
+The core API used to integrate with Patch's service  # noqa: E501
 
-    The version of the OpenAPI document: v1
-    Contact: developers@usepatch.com
-    Generated by: https://openapi-generator.tech
+The version of the OpenAPI document: v1
+Contact: developers@usepatch.com
+Generated by: https://openapi-generator.tech
 """
 
 
@@ -113,27 +113,6 @@ def test_create_hotel_estimate(self):
             estimate.data.mass_g, 15_000
         )  # not setting an exact value since this is changing daily
 
-    def test_create_and_retrieve_ecommerce_estimate(self):
-        """Test case for create_ecommerce_estimate
-
-        Create an estimate based on the shipping distance, transportation method, and package mass  # noqa: E501
-        """
-        distance_m = 10000000
-        package_mass_g = 1000
-        transportation_method = "sea"
-        estimate = self.api.create_ecommerce_estimate(
-            distance_m=distance_m,
-            package_mass_g=package_mass_g,
-            transportation_method=transportation_method,
-            create_order=False,
-        )
-        self.assertEqual(estimate.data.order, None)
-        self.assertEqual(estimate.data.type, "ecommerce")
-        self.assertGreater(estimate.data.mass_g, 200)
-
-        retrieved_estimate = self.api.retrieve_estimate(id=estimate.data.id)
-        self.assertTrue(retrieved_estimate)
-
     def test_create_air_shipping_estimate_airport_iatas(self):
         """Test case for create_air_shipping_estimate
 

From 1f6caec47909386baf0821eeacaf112e33df81c5 Mon Sep 17 00:00:00 2001
From: Paul Cothenet <pcothenet@gmail.com>
Date: Mon, 28 Apr 2025 18:20:28 -0700
Subject: [PATCH 2/6] Pin the version of black being used

---
 .DS_Store                  | Bin 0 -> 8196 bytes
 .github/workflows/test.yml |   6 ++++--
 .pre-commit-config.yaml    |   2 +-
 Dockerfile                 |   6 +++---
 4 files changed, 8 insertions(+), 6 deletions(-)
 create mode 100644 .DS_Store

diff --git a/.DS_Store b/.DS_Store
new file mode 100644
index 0000000000000000000000000000000000000000..7c57d70f4748e1afcfc814a3a087543367396b22
GIT binary patch
literal 8196
zcmeHMJ#Q015PchL;fTg06h@*rBt!*<G>8W2uuMgRl#&8)>^K&7&N4}V5~84^gC<gH
z{sNGOk0MnhT7;mZMeqZ7v%5IEIXiL+2okf>?mO?y+`N6azVn;`n8s#%38(?6unSgC
zahTA=F1^s^{LDF`VLbZXrR9}uFf4fLgess4r~;~hDxeDdD+=(LEv+);x$mqxssgIO
zf2n}n9};%K)MM_@-a0tg5`b9Zv~4`D$^kL)n0m||(!yq3DA9!)Ut$;+&iTaqr5<yK
zE*!=eAI4`kzCtlJJI|k3cbL?nj;eqvP*gx__Y&&pqKA#Be!n=k6WRt@v)SrrEzVWe
zcjvEP{qo^vY;PZGAFc)O1|B|RC{F&)i#2Sb6=lcbx1vYLq5Ns@$CI<~gu{XJ46=PD
z)4d`-_V$Ja^2snn2kUr1?BOzXkxw0rII}_PC}vsy$ow<Kh1_4QzP|l_^j5gf7`wls
zqsGSTOqdd7w5WFveYB(1oWAiUwuYQPS1(<weYbiC@uAj}J)-<)QprD0ZAHx$UiW)W
z>4-=5N`10d$me|hdF|&5y9XznFXVN&XT)!DTlg&$`Eh4-xEH$I5k2mQRb&xkRCZ^L
z3)f(FzFv5|<@Z5BlVZ+rRY#4D)`>f^&JwRd2agVX@A33*Xbbr^UXC>%$A+9H+2g!>
z?$?Aq|3!aos=#q7aKa_8N&SCo`uqRmq^P-70af4+D_}~^<z|CPd~IDwC$)CMexF^M
o_~j052nTVId0UPX$A1{|IPtdBWA2a^HhmFbWzazt_^S&10(&$JUH||9

literal 0
HcmV?d00001

diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml
index aae6846..578901d 100644
--- a/.github/workflows/test.yml
+++ b/.github/workflows/test.yml
@@ -12,7 +12,9 @@ jobs:
       - uses: actions/checkout@ee0669bd1cc54295c223e0bb666b733df41de1c5 # v2.7.0
       - uses: actions/setup-python@e9aba2c848f5ebd159c070c61ea2c4e2b122355e # v2.3.4
       - uses: psf/black@stable
-      
+        with:
+          version: "24.10.0"
+
   build-and-test:
     # 03/27/23: it looks like there are issues with the tarballs for all python 3.6 versions
     # that are on ubuntu-22.04 (ubuntu-latest at the time). To maintain python compatibility
@@ -29,7 +31,7 @@ jobs:
       - name: Setup Python
         uses: actions/setup-python@e9aba2c848f5ebd159c070c61ea2c4e2b122355e # v2.3.4
         with:
-          python-version: '3.6'
+          python-version: "3.6"
 
       - name: Run tests
         env:
diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml
index 31622f1..65c6539 100644
--- a/.pre-commit-config.yaml
+++ b/.pre-commit-config.yaml
@@ -12,6 +12,6 @@ repos:
       - id: flake8
         args: ["--config=.flake8"]
   - repo: https://github.com/psf/black
-    rev: 24.10.0
+    rev: 24.4.2
     hooks:
       - id: black
diff --git a/Dockerfile b/Dockerfile
index fbbde8d..766475c 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -3,7 +3,7 @@ FROM python:3.8.6 AS base
 
 FROM base AS lint
 
-RUN pip install black
+RUN pip install black==24.4.2
 
 WORKDIR /data
 ENTRYPOINT ["black"]
@@ -24,9 +24,9 @@ ENTRYPOINT [ "python", "setup.py", "install" ]
 
 FROM dependencies as test
 
-COPY test-requirements.txt . 
+COPY test-requirements.txt .
 RUN pip install -r test-requirements.txt
 
 COPY . .
 
-ENTRYPOINT ["python", "-m", "unittest", "discover", "test/"]
\ No newline at end of file
+ENTRYPOINT ["python", "-m", "unittest", "discover", "test/"]

From f7ec16aa3484873ad99850d3b0cd6326b1edcba1 Mon Sep 17 00:00:00 2001
From: Paul Cothenet <pcothenet@gmail.com>
Date: Mon, 28 Apr 2025 18:22:39 -0700
Subject: [PATCH 3/6] Latest ubuntu?

---
 .DS_Store                  | Bin 8196 -> 8196 bytes
 .github/workflows/test.yml |   2 +-
 2 files changed, 1 insertion(+), 1 deletion(-)

diff --git a/.DS_Store b/.DS_Store
index 7c57d70f4748e1afcfc814a3a087543367396b22..678ff571fe6e310c0472c23bc1b9f1cf5fd133c5 100644
GIT binary patch
delta 112
zcmZp1XmQw}CJ@X2g@J*Ag+Y%YogtH<Bsbs1B`GIA2`I*~d{=0Z!GmLtsPZXz<qI+l
bgOl@f3xIkU7;*$AHw!2+zTCV_AdVjZun`_~

delta 112
zcmZp1XmQw}CJ@WCkAZ=Kg+Y%YogtH<Bsbs1B`GIA2`I*qcZ$=(;K4CRRQVLV@&y@&
b!O8i#1wcIv4A~PVHw!2+zSz7>AdVjZNTeN6

diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml
index 578901d..20e6eae 100644
--- a/.github/workflows/test.yml
+++ b/.github/workflows/test.yml
@@ -22,7 +22,7 @@ jobs:
     #
     # As soon as this issue is addressed, we should put the image back to ubuntu-latest:
     # https://github.com/actions/setup-python/issues/544
-    runs-on: ubuntu-20.04
+    runs-on: ubuntu-latest
     name: Python Library tests
     steps:
       - name: Check out code

From 16bdc4deb65960ada82017c73015469919d554cf Mon Sep 17 00:00:00 2001
From: Paul Cothenet <pcothenet@gmail.com>
Date: Mon, 28 Apr 2025 18:24:13 -0700
Subject: [PATCH 4/6] Bump test version

---
 .DS_Store                  | Bin 8196 -> 8196 bytes
 .github/workflows/test.yml |   8 +-------
 2 files changed, 1 insertion(+), 7 deletions(-)

diff --git a/.DS_Store b/.DS_Store
index 678ff571fe6e310c0472c23bc1b9f1cf5fd133c5..39e0b01c325080d5396e54383c73e3bdf2aad65f 100644
GIT binary patch
delta 106
zcmZp1XmQw}CJ-z2m4ShQg+Y%YogtH<Bsbs1B`GIA2`I+#`@Yczg9pbPQRP$c$`@o9
V1}Ep|76A1yFys_$ZWd_d2LMGJ9o7H<

delta 106
zcmZp1XmQw}CJ@X2g@J*Ag+Y%YogtH<Bsbs1B`GIA2`I*~d{=0Z!GmLtsPZXz<qI+l
VgOl@f3xIkU7;*$QHw!fK0|5T096|s9

diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml
index 20e6eae..1ca4c72 100644
--- a/.github/workflows/test.yml
+++ b/.github/workflows/test.yml
@@ -16,12 +16,6 @@ jobs:
           version: "24.10.0"
 
   build-and-test:
-    # 03/27/23: it looks like there are issues with the tarballs for all python 3.6 versions
-    # that are on ubuntu-22.04 (ubuntu-latest at the time). To maintain python compatibility
-    # we're pinning ubuntu-20.04 so that we can properly run install python 3.6.
-    #
-    # As soon as this issue is addressed, we should put the image back to ubuntu-latest:
-    # https://github.com/actions/setup-python/issues/544
     runs-on: ubuntu-latest
     name: Python Library tests
     steps:
@@ -31,7 +25,7 @@ jobs:
       - name: Setup Python
         uses: actions/setup-python@e9aba2c848f5ebd159c070c61ea2c4e2b122355e # v2.3.4
         with:
-          python-version: "3.6"
+          python-version: "3.8"
 
       - name: Run tests
         env:

From e0860817afc91979f6877faba56e74ac2ffb324d Mon Sep 17 00:00:00 2001
From: Paul Cothenet <pcothenet@gmail.com>
Date: Mon, 28 Apr 2025 18:25:29 -0700
Subject: [PATCH 5/6] Do we even need to set up Python?

---
 .DS_Store                  | Bin 8196 -> 8196 bytes
 .github/workflows/test.yml |   5 -----
 2 files changed, 5 deletions(-)

diff --git a/.DS_Store b/.DS_Store
index 39e0b01c325080d5396e54383c73e3bdf2aad65f..5d11f598a1a5abd6ebc29df1ee65162e51a35f26 100644
GIT binary patch
delta 113
zcmZp1XmQw}CJ?J?&%nUI!l1{H&XCDalAG`1l9ZF51Qg?VE&b-6!GmLtsPZXz<qI+l
cgOl@f3xIkU7;-L5ZWd5v5?sD{nLr#r0OI%`v;Y7A

delta 113
zcmZp1XmQw}CJ-z2m4ShQg+Y%YogtH<Bsbs1B`GIA2`I+#`@Yczg9pbPQRP$c$`@o9
c1}Ep|76A1yFys_WZWd5v5`MXPnLr#r03FI88vp<R

diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml
index 1ca4c72..4a45c64 100644
--- a/.github/workflows/test.yml
+++ b/.github/workflows/test.yml
@@ -22,11 +22,6 @@ jobs:
       - name: Check out code
         uses: actions/checkout@ee0669bd1cc54295c223e0bb666b733df41de1c5 # v2.7.0
 
-      - name: Setup Python
-        uses: actions/setup-python@e9aba2c848f5ebd159c070c61ea2c4e2b122355e # v2.3.4
-        with:
-          python-version: "3.8"
-
       - name: Run tests
         env:
           SANDBOX_API_KEY: ${{ secrets.SANDBOX_API_KEY }}

From 59a0b8a6f1cbd62ee60eebf0196180e511b10307 Mon Sep 17 00:00:00 2001
From: Paul Cothenet <pcothenet@gmail.com>
Date: Mon, 28 Apr 2025 18:27:15 -0700
Subject: [PATCH 6/6] Clean up .DS_Store

---
 .DS_Store | Bin 8196 -> 8196 bytes
 1 file changed, 0 insertions(+), 0 deletions(-)

diff --git a/.DS_Store b/.DS_Store
index 5d11f598a1a5abd6ebc29df1ee65162e51a35f26..cd7e69eb56c81684e4e8f0523f498772b8a7fd15 100644
GIT binary patch
delta 106
zcmZp1XmQw}CJ?Ld&cMLH!l1{H&XCDalAG`1l9ZF51Qg@gnZC!!@WC-hRQVLRd}{4=
a7IgW748!2${M-Vd9tMV7gU!tXjr;(!N*hxE

delta 106
zcmZp1XmQw}CJ?J?&%nUI!l1{H&XCDalAG`1l9ZF51Qg?VE&b-6!GmLtsPZXz<qI+l
VgOl@f3xIkU7;-LbZWd_d2LKG{9kT!c