From a149f8bfa03cbe1de886e715e33a82e09782d099 Mon Sep 17 00:00:00 2001
From: Corie Watson <watson.corie@gmail.com>
Date: Mon, 2 Dec 2024 10:03:13 +0000
Subject: [PATCH 1/2] fix: FloatParam marked private as unsupported in CLI

---
 .pylintrc                                  |  1 +
 src/firebase_functions/params.py           |  8 ++++++--
 src/firebase_functions/private/manifest.py |  2 +-
 tests/test_manifest.py                     |  2 +-
 tests/test_params.py                       | 18 +++++++++---------
 5 files changed, 18 insertions(+), 13 deletions(-)

diff --git a/.pylintrc b/.pylintrc
index 0f0f4e2..0b758b1 100644
--- a/.pylintrc
+++ b/.pylintrc
@@ -147,6 +147,7 @@ disable=abstract-method,
         xrange-builtin,
         zip-builtin-not-iterating,
         import-outside-toplevel,
+        protected-access,
 
 
 [REPORTS]
diff --git a/src/firebase_functions/params.py b/src/firebase_functions/params.py
index 3a5d201..4aa7406 100644
--- a/src/firebase_functions/params.py
+++ b/src/firebase_functions/params.py
@@ -344,8 +344,12 @@ def value(self) -> int:
 
 
 @_dataclasses.dataclass(frozen=True)
-class FloatParam(Param[float]):
-    """A parameter as a float value."""
+class _FloatParam(Param[float]):
+    """
+    A parameter as a float value.
+    Marked as private because it is not supported by firebase-tools yet.
+    Unmark when it is supported.
+    """
 
     @property
     def value(self) -> float:
diff --git a/src/firebase_functions/private/manifest.py b/src/firebase_functions/private/manifest.py
index 15227d5..7ebeac2 100644
--- a/src/firebase_functions/private/manifest.py
+++ b/src/firebase_functions/private/manifest.py
@@ -241,7 +241,7 @@ def _param_to_spec(
         spec_dict["type"] = "boolean"
     elif isinstance(param, _params.IntParam):
         spec_dict["type"] = "int"
-    elif isinstance(param, _params.FloatParam):
+    elif isinstance(param, _params._FloatParam):
         spec_dict["type"] = "float"
     elif isinstance(param, _params.SecretParam):
         spec_dict["type"] = "secret"
diff --git a/tests/test_manifest.py b/tests/test_manifest.py
index dc0db9c..f948b66 100644
--- a/tests/test_manifest.py
+++ b/tests/test_manifest.py
@@ -65,7 +65,7 @@
     params=[
         _params.BoolParam("BOOL_TEST", default=False),
         _params.IntParam("INT_TEST", description="int_description"),
-        _params.FloatParam("FLOAT_TEST", immutable=True),
+        _params._FloatParam("FLOAT_TEST", immutable=True),
         _params.SecretParam("SECRET_TEST"),
         _params.StringParam("STRING_TEST"),
         _params.ListParam("LIST_TEST", default=["1", "2", "3"]),
diff --git a/tests/test_params.py b/tests/test_params.py
index b367bf6..92e8103 100644
--- a/tests/test_params.py
+++ b/tests/test_params.py
@@ -58,28 +58,28 @@ class TestFloatParams:
     def test_float_param_value(self):
         """Testing if float params correctly returns a value."""
         environ["FLOAT_VALUE_TEST"] = "123.456"
-        assert params.FloatParam("FLOAT_VALUE_TEST",).value == 123.456, \
+        assert params._FloatParam("FLOAT_VALUE_TEST",).value == 123.456, \
             "Failure, params value != 123.456"
 
     def test_float_param_empty_default(self):
         """Testing if float params defaults to empty float if no value and no default."""
-        assert params.FloatParam("FLOAT_DEFAULT_TEST1").value == float(), \
+        assert params._FloatParam("FLOAT_DEFAULT_TEST1").value == float(), \
             "Failure, params value is not float"
 
     def test_float_param_default(self):
         """Testing if float param defaults to provided default value."""
-        assert params.FloatParam("FLOAT_DEFAULT_TEST2",
+        assert params._FloatParam("FLOAT_DEFAULT_TEST2", \
         default=float(456.789)).value == 456.789, \
             "Failure, params default value != 456.789"
 
     def test_float_param_equality(self):
         """Test float equality."""
-        assert (params.FloatParam("FLOAT_TEST1",
-                                  default=123.456).equals(123.456).value
-                is True), "Failure, equality check returned False"
-        assert (params.FloatParam("FLOAT_TEST2",
-                                  default=456.789).equals(123.456).value
-                is False), "Failure, equality check returned False"
+        assert (params._FloatParam("FLOAT_TEST1", \
+        default=123.456).equals(123.456).value \
+            is True), "Failure, equality check returned False"
+        assert (params._FloatParam("FLOAT_TEST2", \
+        default=456.789).equals(123.456).value \
+            is False), "Failure, equality check returned False"
 
 
 class TestIntParams:

From 3e456b85a8a729c883df828ec05a1b5bbd53a242 Mon Sep 17 00:00:00 2001
From: Corie Watson <watson.corie@gmail.com>
Date: Mon, 2 Dec 2024 14:29:43 +0000
Subject: [PATCH 2/2] fix: use specifically 0.5.0 google-events as breaking api
 changes with >=

---
 setup.py | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/setup.py b/setup.py
index 3294bc5..b1d4a27 100644
--- a/setup.py
+++ b/setup.py
@@ -20,7 +20,7 @@
 install_requires = [
     'flask>=2.1.2', 'functions-framework>=3.0.0', 'firebase-admin>=6.0.0',
     'pyyaml>=6.0', 'typing-extensions>=4.4.0', 'cloudevents==1.9.0',
-    'flask-cors>=3.0.10', 'pyjwt[crypto]>=2.5.0', 'google-events>=0.5.0',
+    'flask-cors>=3.0.10', 'pyjwt[crypto]>=2.5.0', 'google-events==0.5.0',
     'google-cloud-firestore>=2.11.0'
 ]