diff --git a/poetry.lock b/poetry.lock
index e0ceaaa..0e0b017 100644
--- a/poetry.lock
+++ b/poetry.lock
@@ -1,10 +1,9 @@
-# This file is automatically @generated by Poetry and should not be changed by hand.
+# This file is automatically @generated by Poetry 1.7.1 and should not be changed by hand.
 
 [[package]]
 name = "appdirs"
 version = "1.4.4"
 description = "A small Python module for determining appropriate platform-specific dirs, e.g. a \"user data dir\"."
-category = "main"
 optional = false
 python-versions = "*"
 files = [
@@ -16,7 +15,6 @@ files = [
 name = "attrs"
 version = "23.2.0"
 description = "Classes Without Boilerplate"
-category = "main"
 optional = false
 python-versions = ">=3.7"
 files = [
@@ -36,7 +34,6 @@ tests-no-zope = ["attrs[tests-mypy]", "cloudpickle", "hypothesis", "pympler", "p
 name = "backoff"
 version = "2.2.1"
 description = "Function decoration for backoff and retry"
-category = "main"
 optional = false
 python-versions = ">=3.7,<4.0"
 files = [
@@ -48,7 +45,6 @@ files = [
 name = "backports-datetime-fromisoformat"
 version = "2.0.1"
 description = "Backport of Python 3.11's datetime.fromisoformat"
-category = "main"
 optional = false
 python-versions = ">3"
 files = [
@@ -89,7 +85,6 @@ files = [
 name = "backports-zoneinfo"
 version = "0.2.1"
 description = "Backport of the standard library zoneinfo module"
-category = "main"
 optional = false
 python-versions = ">=3.6"
 files = [
@@ -118,7 +113,6 @@ tzdata = ["tzdata"]
 name = "boto3"
 version = "1.34.37"
 description = "The AWS SDK for Python"
-category = "main"
 optional = true
 python-versions = ">= 3.8"
 files = [
@@ -138,7 +132,6 @@ crt = ["botocore[crt] (>=1.21.0,<2.0a0)"]
 name = "botocore"
 version = "1.34.37"
 description = "Low-level, data-driven core of boto 3."
-category = "main"
 optional = true
 python-versions = ">= 3.8"
 files = [
@@ -161,7 +154,6 @@ crt = ["awscrt (==0.19.19)"]
 name = "certifi"
 version = "2024.2.2"
 description = "Python package for providing Mozilla's CA Bundle."
-category = "main"
 optional = false
 python-versions = ">=3.6"
 files = [
@@ -173,7 +165,6 @@ files = [
 name = "cffi"
 version = "1.16.0"
 description = "Foreign Function Interface for Python calling C code."
-category = "main"
 optional = false
 python-versions = ">=3.8"
 files = [
@@ -238,7 +229,6 @@ pycparser = "*"
 name = "charset-normalizer"
 version = "3.3.2"
 description = "The Real First Universal Charset Detector. Open, modern and actively maintained alternative to Chardet."
-category = "main"
 optional = false
 python-versions = ">=3.7.0"
 files = [
@@ -338,7 +328,6 @@ files = [
 name = "click"
 version = "8.1.7"
 description = "Composable command line interface toolkit"
-category = "main"
 optional = false
 python-versions = ">=3.7"
 files = [
@@ -353,7 +342,6 @@ colorama = {version = "*", markers = "platform_system == \"Windows\""}
 name = "colorama"
 version = "0.4.6"
 description = "Cross-platform colored terminal text."
-category = "main"
 optional = false
 python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*,>=2.7"
 files = [
@@ -365,7 +353,6 @@ files = [
 name = "cryptography"
 version = "42.0.2"
 description = "cryptography is a package which provides cryptographic recipes and primitives to Python developers."
-category = "main"
 optional = false
 python-versions = ">=3.7"
 files = [
@@ -420,7 +407,6 @@ test-randomorder = ["pytest-randomly"]
 name = "exceptiongroup"
 version = "1.2.0"
 description = "Backport of PEP 654 (exception groups)"
-category = "dev"
 optional = false
 python-versions = ">=3.7"
 files = [
@@ -435,7 +421,6 @@ test = ["pytest (>=6)"]
 name = "faker"
 version = "22.7.0"
 description = "Faker is a Python package that generates fake data for you."
-category = "main"
 optional = false
 python-versions = ">=3.8"
 files = [
@@ -451,7 +436,6 @@ typing-extensions = {version = ">=3.10.0.1", markers = "python_version <= \"3.8\
 name = "fs"
 version = "2.4.16"
 description = "Python's filesystem abstraction layer"
-category = "main"
 optional = false
 python-versions = "*"
 files = [
@@ -471,7 +455,6 @@ scandir = ["scandir (>=1.5,<2.0)"]
 name = "fs-s3fs"
 version = "1.1.1"
 description = "Amazon S3 filesystem for PyFilesystem2"
-category = "main"
 optional = true
 python-versions = "*"
 files = [
@@ -488,7 +471,6 @@ six = ">=1.10,<2.0"
 name = "greenlet"
 version = "3.0.3"
 description = "Lightweight in-process concurrent programming"
-category = "main"
 optional = false
 python-versions = ">=3.7"
 files = [
@@ -560,7 +542,6 @@ test = ["objgraph", "psutil"]
 name = "idna"
 version = "3.6"
 description = "Internationalized Domain Names in Applications (IDNA)"
-category = "main"
 optional = false
 python-versions = ">=3.5"
 files = [
@@ -572,7 +553,6 @@ files = [
 name = "importlib-metadata"
 version = "7.0.1"
 description = "Read metadata from Python packages"
-category = "main"
 optional = false
 python-versions = ">=3.8"
 files = [
@@ -592,7 +572,6 @@ testing = ["flufl.flake8", "importlib-resources (>=1.3)", "packaging", "pyfakefs
 name = "importlib-resources"
 version = "6.1.1"
 description = "Read resources from Python packages"
-category = "main"
 optional = false
 python-versions = ">=3.8"
 files = [
@@ -611,7 +590,6 @@ testing = ["pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)",
 name = "inflection"
 version = "0.5.1"
 description = "A port of Ruby on Rails inflector to Python"
-category = "main"
 optional = false
 python-versions = ">=3.5"
 files = [
@@ -623,7 +601,6 @@ files = [
 name = "iniconfig"
 version = "2.0.0"
 description = "brain-dead simple config-ini parsing"
-category = "dev"
 optional = false
 python-versions = ">=3.7"
 files = [
@@ -635,7 +612,6 @@ files = [
 name = "jmespath"
 version = "1.0.1"
 description = "JSON Matching Expressions"
-category = "main"
 optional = true
 python-versions = ">=3.7"
 files = [
@@ -647,7 +623,6 @@ files = [
 name = "joblib"
 version = "1.3.2"
 description = "Lightweight pipelining with Python functions"
-category = "main"
 optional = false
 python-versions = ">=3.7"
 files = [
@@ -659,7 +634,6 @@ files = [
 name = "jsonpath-ng"
 version = "1.6.1"
 description = "A final implementation of JSONPath for Python that aims to be standard compliant, including arithmetic and binary comparison operators and providing clear AST for metaprogramming."
-category = "main"
 optional = false
 python-versions = "*"
 files = [
@@ -674,7 +648,6 @@ ply = "*"
 name = "jsonschema"
 version = "4.21.1"
 description = "An implementation of JSON Schema validation for Python"
-category = "main"
 optional = false
 python-versions = ">=3.8"
 files = [
@@ -698,7 +671,6 @@ format-nongpl = ["fqdn", "idna", "isoduration", "jsonpointer (>1.13)", "rfc3339-
 name = "jsonschema-specifications"
 version = "2023.12.1"
 description = "The JSON Schema meta-schemas and vocabularies, exposed as a Registry"
-category = "main"
 optional = false
 python-versions = ">=3.8"
 files = [
@@ -714,7 +686,6 @@ referencing = ">=0.31.0"
 name = "packaging"
 version = "23.2"
 description = "Core utilities for Python packages"
-category = "main"
 optional = false
 python-versions = ">=3.7"
 files = [
@@ -726,7 +697,6 @@ files = [
 name = "pendulum"
 version = "3.0.0"
 description = "Python datetimes made easy"
-category = "main"
 optional = false
 python-versions = ">=3.8"
 files = [
@@ -828,7 +798,6 @@ test = ["time-machine (>=2.6.0)"]
 name = "pkgutil-resolve-name"
 version = "1.3.10"
 description = "Resolve a name to an object."
-category = "main"
 optional = false
 python-versions = ">=3.6"
 files = [
@@ -840,7 +809,6 @@ files = [
 name = "pluggy"
 version = "1.4.0"
 description = "plugin and hook calling mechanisms for python"
-category = "dev"
 optional = false
 python-versions = ">=3.8"
 files = [
@@ -856,7 +824,6 @@ testing = ["pytest", "pytest-benchmark"]
 name = "ply"
 version = "3.11"
 description = "Python Lex & Yacc"
-category = "main"
 optional = false
 python-versions = "*"
 files = [
@@ -868,7 +835,6 @@ files = [
 name = "pycparser"
 version = "2.21"
 description = "C parser in Python"
-category = "main"
 optional = false
 python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*"
 files = [
@@ -880,7 +846,6 @@ files = [
 name = "pyjwt"
 version = "2.8.0"
 description = "JSON Web Token implementation in Python"
-category = "main"
 optional = false
 python-versions = ">=3.7"
 files = [
@@ -896,14 +861,13 @@ tests = ["coverage[toml] (==5.0.4)", "pytest (>=6.0.0,<7.0.0)"]
 
 [[package]]
 name = "pytest"
-version = "8.0.0"
+version = "8.0.2"
 description = "pytest: simple powerful testing with Python"
-category = "dev"
 optional = false
 python-versions = ">=3.8"
 files = [
-    {file = "pytest-8.0.0-py3-none-any.whl", hash = "sha256:50fb9cbe836c3f20f0dfa99c565201fb75dc54c8d76373cd1bde06b06657bdb6"},
-    {file = "pytest-8.0.0.tar.gz", hash = "sha256:249b1b0864530ba251b7438274c4d251c58d868edaaec8762893ad4a0d71c36c"},
+    {file = "pytest-8.0.2-py3-none-any.whl", hash = "sha256:edfaaef32ce5172d5466b5127b42e0d6d35ebbe4453f0e3505d96afd93f6b096"},
+    {file = "pytest-8.0.2.tar.gz", hash = "sha256:d4051d623a2e0b7e51960ba963193b09ce6daeb9759a451844a21e4ddedfc1bd"},
 ]
 
 [package.dependencies]
@@ -921,7 +885,6 @@ testing = ["argcomplete", "attrs (>=19.2.0)", "hypothesis (>=3.56)", "mock", "no
 name = "pytest-dotenv"
 version = "0.5.2"
 description = "A py.test plugin that parses environment files before running tests"
-category = "dev"
 optional = false
 python-versions = "*"
 files = [
@@ -937,7 +900,6 @@ python-dotenv = ">=0.9.1"
 name = "pytest-durations"
 version = "1.2.0"
 description = "Pytest plugin reporting fixtures and test functions execution time."
-category = "dev"
 optional = false
 python-versions = ">=3.6.2"
 files = [
@@ -952,7 +914,6 @@ pytest = ">=4.6"
 name = "python-dateutil"
 version = "2.8.2"
 description = "Extensions to the standard Python datetime module"
-category = "main"
 optional = false
 python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,>=2.7"
 files = [
@@ -967,7 +928,6 @@ six = ">=1.5"
 name = "python-dotenv"
 version = "1.0.1"
 description = "Read key-value pairs from a .env file and set them as environment variables"
-category = "main"
 optional = false
 python-versions = ">=3.8"
 files = [
@@ -982,7 +942,6 @@ cli = ["click (>=5.0)"]
 name = "pyyaml"
 version = "6.0.1"
 description = "YAML parser and emitter for Python"
-category = "main"
 optional = false
 python-versions = ">=3.6"
 files = [
@@ -1043,7 +1002,6 @@ files = [
 name = "referencing"
 version = "0.33.0"
 description = "JSON Referencing + Python"
-category = "main"
 optional = false
 python-versions = ">=3.8"
 files = [
@@ -1059,7 +1017,6 @@ rpds-py = ">=0.7.0"
 name = "requests"
 version = "2.31.0"
 description = "Python HTTP for Humans."
-category = "main"
 optional = false
 python-versions = ">=3.7"
 files = [
@@ -1081,7 +1038,6 @@ use-chardet-on-py3 = ["chardet (>=3.0.2,<6)"]
 name = "requests-mock"
 version = "1.11.0"
 description = "Mock out responses from the requests package"
-category = "dev"
 optional = false
 python-versions = "*"
 files = [
@@ -1101,7 +1057,6 @@ test = ["fixtures", "mock", "purl", "pytest", "requests-futures", "sphinx", "tes
 name = "rpds-py"
 version = "0.17.1"
 description = "Python bindings to Rust's persistent data structures (rpds)"
-category = "main"
 optional = false
 python-versions = ">=3.8"
 files = [
@@ -1210,7 +1165,6 @@ files = [
 name = "s3transfer"
 version = "0.10.0"
 description = "An Amazon S3 Transfer Manager"
-category = "main"
 optional = true
 python-versions = ">= 3.8"
 files = [
@@ -1228,7 +1182,6 @@ crt = ["botocore[crt] (>=1.33.2,<2.0a.0)"]
 name = "setuptools"
 version = "69.0.3"
 description = "Easily download, build, install, upgrade, and uninstall Python packages"
-category = "main"
 optional = false
 python-versions = ">=3.8"
 files = [
@@ -1245,7 +1198,6 @@ testing-integration = ["build[virtualenv] (>=1.0.3)", "filelock (>=3.4.0)", "jar
 name = "simpleeval"
 version = "0.9.13"
 description = "A simple, safe single expression evaluator library."
-category = "main"
 optional = false
 python-versions = "*"
 files = [
@@ -1257,7 +1209,6 @@ files = [
 name = "simplejson"
 version = "3.19.2"
 description = "Simple, fast, extensible JSON encoder/decoder for Python"
-category = "main"
 optional = false
 python-versions = ">=2.5, !=3.0.*, !=3.1.*, !=3.2.*"
 files = [
@@ -1365,7 +1316,6 @@ files = [
 name = "singer-sdk"
 version = "0.35.0"
 description = "A framework for building Singer taps"
-category = "main"
 optional = false
 python-versions = ">=3.8"
 files = [
@@ -1413,7 +1363,6 @@ testing = ["pytest (>=7.2.1)", "pytest-durations (>=1.2.0)"]
 name = "six"
 version = "1.16.0"
 description = "Python 2 and 3 compatibility utilities"
-category = "main"
 optional = false
 python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*"
 files = [
@@ -1425,7 +1374,6 @@ files = [
 name = "sqlalchemy"
 version = "2.0.25"
 description = "Database Abstraction Library"
-category = "main"
 optional = false
 python-versions = ">=3.7"
 files = [
@@ -1513,7 +1461,6 @@ sqlcipher = ["sqlcipher3_binary"]
 name = "tomli"
 version = "2.0.1"
 description = "A lil' TOML parser"
-category = "dev"
 optional = false
 python-versions = ">=3.7"
 files = [
@@ -1525,7 +1472,6 @@ files = [
 name = "typing-extensions"
 version = "4.9.0"
 description = "Backported and Experimental Type Hints for Python 3.8+"
-category = "main"
 optional = false
 python-versions = ">=3.8"
 files = [
@@ -1537,7 +1483,6 @@ files = [
 name = "tzdata"
 version = "2023.4"
 description = "Provider of IANA time zone data"
-category = "main"
 optional = false
 python-versions = ">=2"
 files = [
@@ -1549,7 +1494,6 @@ files = [
 name = "urllib3"
 version = "1.26.18"
 description = "HTTP library with thread-safe connection pooling, file post, and more."
-category = "main"
 optional = false
 python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, !=3.5.*"
 files = [
@@ -1566,7 +1510,6 @@ socks = ["PySocks (>=1.5.6,!=1.5.7,<2.0)"]
 name = "zipp"
 version = "3.17.0"
 description = "Backport of pathlib-compatible object wrapper for zip files"
-category = "main"
 optional = false
 python-versions = ">=3.8"
 files = [