From e8945d751c5409732ad612f2d84529377afa5041 Mon Sep 17 00:00:00 2001
From: Caleb <calebkendra7@gmail.com>
Date: Fri, 29 Sep 2023 09:37:06 -0400
Subject: [PATCH] fix: restore lock file

---
 poetry.lock | 163 ++++++++++++++++++++++++++++++++++++++++++++--------
 1 file changed, 138 insertions(+), 25 deletions(-)

diff --git a/poetry.lock b/poetry.lock
index 13063a0e..64c8a1b5 100644
--- a/poetry.lock
+++ b/poetry.lock
@@ -1,9 +1,10 @@
-# This file is automatically @generated by Poetry 1.6.1 and should not be changed by hand.
+# This file is automatically @generated by Poetry 1.4.0 and should not be changed by hand.
 
 [[package]]
 name = "aiofiles"
 version = "23.2.1"
 description = "File support for asyncio."
+category = "main"
 optional = false
 python-versions = ">=3.7"
 files = [
@@ -15,6 +16,7 @@ files = [
 name = "annotated-types"
 version = "0.5.0"
 description = "Reusable constraint types to use with typing.Annotated"
+category = "main"
 optional = false
 python-versions = ">=3.7"
 files = [
@@ -26,6 +28,7 @@ files = [
 name = "ansi2html"
 version = "1.8.0"
 description = ""
+category = "dev"
 optional = false
 python-versions = ">=3.6"
 files = [
@@ -41,6 +44,7 @@ test = ["pytest", "pytest-cov"]
 name = "anyio"
 version = "3.7.1"
 description = "High level compatibility layer for multiple asynchronous event loop implementations"
+category = "main"
 optional = false
 python-versions = ">=3.7"
 files = [
@@ -61,6 +65,7 @@ trio = ["trio (<0.22)"]
 name = "asgi-csrf"
 version = "0.9"
 description = "ASGI middleware for protecting against CSRF attacks"
+category = "main"
 optional = false
 python-versions = "*"
 files = [
@@ -79,6 +84,7 @@ test = ["asgi-lifespan", "httpx (>=0.16)", "pytest", "pytest-asyncio", "pytest-c
 name = "asgiref"
 version = "3.7.2"
 description = "ASGI specs, helper code, and adapters"
+category = "main"
 optional = false
 python-versions = ">=3.7"
 files = [
@@ -93,6 +99,7 @@ tests = ["mypy (>=0.800)", "pytest", "pytest-asyncio"]
 name = "astpretty"
 version = "3.0.0"
 description = "Pretty print the output of python stdlib `ast.parse`."
+category = "main"
 optional = false
 python-versions = ">=3.8"
 files = [
@@ -104,6 +111,7 @@ files = [
 name = "attrs"
 version = "23.1.0"
 description = "Classes Without Boilerplate"
+category = "main"
 optional = false
 python-versions = ">=3.7"
 files = [
@@ -122,6 +130,7 @@ tests-no-zope = ["cloudpickle", "hypothesis", "mypy (>=1.1.1)", "pympler", "pyte
 name = "black"
 version = "23.3.0"
 description = "The uncompromising code formatter."
+category = "dev"
 optional = false
 python-versions = ">=3.7"
 files = [
@@ -169,6 +178,7 @@ uvloop = ["uvloop (>=0.15.2)"]
 name = "certifi"
 version = "2023.5.7"
 description = "Python package for providing Mozilla's CA Bundle."
+category = "main"
 optional = false
 python-versions = ">=3.6"
 files = [
@@ -180,6 +190,7 @@ files = [
 name = "charset-normalizer"
 version = "3.2.0"
 description = "The Real First Universal Charset Detector. Open, modern and actively maintained alternative to Chardet."
+category = "dev"
 optional = false
 python-versions = ">=3.7.0"
 files = [
@@ -264,6 +275,7 @@ files = [
 name = "click"
 version = "8.1.4"
 description = "Composable command line interface toolkit"
+category = "main"
 optional = false
 python-versions = ">=3.7"
 files = [
@@ -278,6 +290,7 @@ colorama = {version = "*", markers = "platform_system == \"Windows\""}
 name = "click-default-group-wheel"
 version = "1.2.2"
 description = "Extends click.Group to invoke a command without explicit subcommand name (packaged as a wheel)"
+category = "main"
 optional = false
 python-versions = "*"
 files = [
@@ -292,6 +305,7 @@ click = "*"
 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 = [
@@ -303,6 +317,7 @@ files = [
 name = "coverage"
 version = "7.2.7"
 description = "Code coverage measurement for Python"
+category = "dev"
 optional = false
 python-versions = ">=3.7"
 files = [
@@ -375,6 +390,7 @@ toml = ["tomli"]
 name = "cssselect"
 version = "1.2.0"
 description = "cssselect parses CSS3 Selectors and translates them to XPath 1.0"
+category = "main"
 optional = false
 python-versions = ">=3.7"
 files = [
@@ -386,6 +402,7 @@ files = [
 name = "dash"
 version = "2.11.1"
 description = "A Python framework for building reactive web-apps. Developed by Plotly."
+category = "dev"
 optional = false
 python-versions = ">=3.6"
 files = [
@@ -418,6 +435,7 @@ testing = ["beautifulsoup4 (>=4.8.2)", "cryptography (<3.4)", "dash-testing-stub
 name = "dash-core-components"
 version = "2.0.0"
 description = "Core component suite for Dash"
+category = "dev"
 optional = false
 python-versions = "*"
 files = [
@@ -429,6 +447,7 @@ files = [
 name = "dash-html-components"
 version = "2.0.0"
 description = "Vanilla HTML components for Dash"
+category = "dev"
 optional = false
 python-versions = "*"
 files = [
@@ -440,6 +459,7 @@ files = [
 name = "dash-table"
 version = "5.0.0"
 description = "Dash table"
+category = "dev"
 optional = false
 python-versions = "*"
 files = [
@@ -451,6 +471,7 @@ files = [
 name = "datasette"
 version = "0.64.3"
 description = "An open source multi-tool for exploring and publishing data"
+category = "main"
 optional = false
 python-versions = ">=3.7"
 files = [
@@ -486,6 +507,7 @@ test = ["beautifulsoup4 (>=4.8.1)", "black (==22.10.0)", "blacken-docs (==1.12.1
 name = "datasette-copyable"
 version = "0.3.2"
 description = "Datasette plugin for outputting tables in formats suitable for copy and paste"
+category = "main"
 optional = false
 python-versions = ">=3.7"
 files = [
@@ -504,6 +526,7 @@ test = ["httpx", "pytest", "pytest-asyncio", "sqlite-utils"]
 name = "datasette-export-notebook"
 version = "1.0"
 description = "Datasette plugin providing instructions for exporting data to Jupyter or Observable"
+category = "main"
 optional = false
 python-versions = ">=3.6"
 files = [
@@ -521,6 +544,7 @@ test = ["pytest", "pytest-asyncio", "sqlite-utils"]
 name = "datasette-publish-fly"
 version = "1.3"
 description = "Datasette plugin for publishing data using Fly"
+category = "main"
 optional = false
 python-versions = "*"
 files = [
@@ -538,6 +562,7 @@ test = ["cogapp", "pytest", "pytest-mock"]
 name = "datasette-publish-vercel"
 version = "0.14.2"
 description = "Datasette plugin for publishing data using Vercel"
+category = "main"
 optional = false
 python-versions = "*"
 files = [
@@ -555,6 +580,7 @@ test = ["pytest"]
 name = "datasette-search-all"
 version = "1.1.1"
 description = "Datasette plugin for searching all searchable tables at once"
+category = "main"
 optional = false
 python-versions = ">=3.7"
 files = [
@@ -572,6 +598,7 @@ test = ["pytest", "pytest-asyncio", "sqlite-utils"]
 name = "datasette-sqlite-regex"
 version = "0.2.3"
 description = ""
+category = "main"
 optional = false
 python-versions = ">=3.7"
 files = [
@@ -589,6 +616,7 @@ test = ["pytest"]
 name = "elementpath"
 version = "4.1.4"
 description = "XPath 1.0/2.0/3.0/3.1 parsers and selectors for ElementTree and lxml"
+category = "main"
 optional = false
 python-versions = ">=3.7"
 files = [
@@ -603,6 +631,7 @@ dev = ["Sphinx", "coverage", "flake8", "lxml", "lxml-stubs", "memory-profiler",
 name = "execnet"
 version = "2.0.2"
 description = "execnet: rapid multi-Python deployment"
+category = "dev"
 optional = false
 python-versions = ">=3.7"
 files = [
@@ -617,6 +646,7 @@ testing = ["hatch", "pre-commit", "pytest", "tox"]
 name = "flask"
 version = "2.2.5"
 description = "A simple framework for building complex web applications."
+category = "dev"
 optional = false
 python-versions = ">=3.7"
 files = [
@@ -638,6 +668,7 @@ dotenv = ["python-dotenv"]
 name = "flatterer"
 version = "0.19.8"
 description = "Opinionated JSON to CSV converter"
+category = "main"
 optional = false
 python-versions = "*"
 files = [
@@ -678,6 +709,7 @@ pandas = "*"
 name = "h11"
 version = "0.14.0"
 description = "A pure-Python, bring-your-own-I/O implementation of HTTP/1.1"
+category = "main"
 optional = false
 python-versions = ">=3.7"
 files = [
@@ -689,6 +721,7 @@ files = [
 name = "httpcore"
 version = "0.17.3"
 description = "A minimal low-level HTTP client."
+category = "main"
 optional = false
 python-versions = ">=3.7"
 files = [
@@ -700,16 +733,17 @@ files = [
 anyio = ">=3.0,<5.0"
 certifi = "*"
 h11 = ">=0.13,<0.15"
-sniffio = "==1.*"
+sniffio = ">=1.0.0,<2.0.0"
 
 [package.extras]
 http2 = ["h2 (>=3,<5)"]
-socks = ["socksio (==1.*)"]
+socks = ["socksio (>=1.0.0,<2.0.0)"]
 
 [[package]]
 name = "httpx"
 version = "0.24.1"
 description = "The next generation HTTP client."
+category = "main"
 optional = false
 python-versions = ">=3.7"
 files = [
@@ -725,14 +759,15 @@ sniffio = "*"
 
 [package.extras]
 brotli = ["brotli", "brotlicffi"]
-cli = ["click (==8.*)", "pygments (==2.*)", "rich (>=10,<14)"]
+cli = ["click (>=8.0.0,<9.0.0)", "pygments (>=2.0.0,<3.0.0)", "rich (>=10,<14)"]
 http2 = ["h2 (>=3,<5)"]
-socks = ["socksio (==1.*)"]
+socks = ["socksio (>=1.0.0,<2.0.0)"]
 
 [[package]]
 name = "hupper"
 version = "1.12"
 description = "Integrated process monitor for developing and reloading daemons."
+category = "main"
 optional = false
 python-versions = ">=3.7"
 files = [
@@ -748,6 +783,7 @@ testing = ["mock", "pytest", "pytest-cov", "watchdog"]
 name = "hypofuzz"
 version = "23.7.1"
 description = "Adaptive fuzzing for property-based tests"
+category = "dev"
 optional = false
 python-versions = ">=3.8"
 files = [
@@ -773,6 +809,7 @@ pytrace = ["flask-cors (>=3.0.10)", "pycrunch-trace (>=0.1.6)"]
 name = "hypothesis"
 version = "6.81.1"
 description = "A library for property-based testing"
+category = "dev"
 optional = false
 python-versions = ">=3.8"
 files = [
@@ -807,6 +844,7 @@ zoneinfo = ["backports.zoneinfo (>=0.2.1)", "tzdata (>=2023.3)"]
 name = "hypothesis-jsonschema"
 version = "0.22.1"
 description = "Generate test data from JSON schemata with Hypothesis"
+category = "dev"
 optional = false
 python-versions = ">=3.7"
 files = [
@@ -822,6 +860,7 @@ jsonschema = ">=4.0.0"
 name = "idna"
 version = "3.4"
 description = "Internationalized Domain Names in Applications (IDNA)"
+category = "main"
 optional = false
 python-versions = ">=3.5"
 files = [
@@ -833,6 +872,7 @@ files = [
 name = "ijson"
 version = "3.2.3"
 description = "Iterative JSON parser with standard Python iterator interfaces"
+category = "main"
 optional = false
 python-versions = "*"
 files = [
@@ -920,6 +960,7 @@ files = [
 name = "importlib-metadata"
 version = "6.8.0"
 description = "Read metadata from Python packages"
+category = "main"
 optional = false
 python-versions = ">=3.8"
 files = [
@@ -939,6 +980,7 @@ testing = ["flufl.flake8", "importlib-resources (>=1.3)", "packaging", "pyfakefs
 name = "iniconfig"
 version = "2.0.0"
 description = "brain-dead simple config-ini parsing"
+category = "dev"
 optional = false
 python-versions = ">=3.7"
 files = [
@@ -950,6 +992,7 @@ files = [
 name = "isort"
 version = "5.12.0"
 description = "A Python utility / library to sort Python imports."
+category = "dev"
 optional = false
 python-versions = ">=3.8.0"
 files = [
@@ -967,6 +1010,7 @@ requirements-deprecated-finder = ["pip-api", "pipreqs"]
 name = "itsdangerous"
 version = "2.1.2"
 description = "Safely pass data to untrusted environments and back."
+category = "main"
 optional = false
 python-versions = ">=3.7"
 files = [
@@ -978,6 +1022,7 @@ files = [
 name = "janus"
 version = "1.0.0"
 description = "Mixed sync-async queue to interoperate between asyncio tasks and classic threads"
+category = "main"
 optional = false
 python-versions = ">=3.7"
 files = [
@@ -992,6 +1037,7 @@ typing-extensions = ">=3.7.4.3"
 name = "jinja2"
 version = "3.1.2"
 description = "A very fast and expressive template engine."
+category = "main"
 optional = false
 python-versions = ">=3.7"
 files = [
@@ -1009,6 +1055,7 @@ i18n = ["Babel (>=2.7)"]
 name = "jsonschema"
 version = "4.18.3"
 description = "An implementation of JSON Schema validation for Python"
+category = "main"
 optional = false
 python-versions = ">=3.8"
 files = [
@@ -1030,6 +1077,7 @@ format-nongpl = ["fqdn", "idna", "isoduration", "jsonpointer (>1.13)", "rfc3339-
 name = "jsonschema-specifications"
 version = "2023.6.1"
 description = "The JSON Schema meta-schemas and vocabularies, exposed as a Registry"
+category = "main"
 optional = false
 python-versions = ">=3.8"
 files = [
@@ -1044,6 +1092,7 @@ referencing = ">=0.28.0"
 name = "levenshtein"
 version = "0.21.1"
 description = "Python extension for computing string edit distances and similarities."
+category = "main"
 optional = false
 python-versions = ">=3.6"
 files = [
@@ -1158,6 +1207,7 @@ rapidfuzz = ">=2.3.0,<4.0.0"
 name = "libcst"
 version = "1.0.1"
 description = "A concrete syntax tree with AST-like properties for Python 3.5, 3.6, 3.7, 3.8, 3.9, and 3.10 programs."
+category = "dev"
 optional = false
 python-versions = ">=3.7"
 files = [
@@ -1205,6 +1255,7 @@ dev = ["Sphinx (>=5.1.1)", "black (==23.3.0)", "build (>=0.10.0)", "coverage (>=
 name = "linkify-it-py"
 version = "2.0.2"
 description = "Links recognition library with FULL unicode support."
+category = "main"
 optional = false
 python-versions = ">=3.7"
 files = [
@@ -1225,14 +1276,13 @@ test = ["coverage", "pytest", "pytest-cov"]
 name = "lxml"
 version = "4.9.3"
 description = "Powerful and Pythonic XML processing library combining libxml2/libxslt with the ElementTree API."
+category = "main"
 optional = false
 python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, != 3.4.*"
 files = [
     {file = "lxml-4.9.3-cp27-cp27m-macosx_11_0_x86_64.whl", hash = "sha256:b0a545b46b526d418eb91754565ba5b63b1c0b12f9bd2f808c852d9b4b2f9b5c"},
     {file = "lxml-4.9.3-cp27-cp27m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:075b731ddd9e7f68ad24c635374211376aa05a281673ede86cbe1d1b3455279d"},
     {file = "lxml-4.9.3-cp27-cp27m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:1e224d5755dba2f4a9498e150c43792392ac9b5380aa1b845f98a1618c94eeef"},
-    {file = "lxml-4.9.3-cp27-cp27m-win32.whl", hash = "sha256:2c74524e179f2ad6d2a4f7caf70e2d96639c0954c943ad601a9e146c76408ed7"},
-    {file = "lxml-4.9.3-cp27-cp27m-win_amd64.whl", hash = "sha256:4f1026bc732b6a7f96369f7bfe1a4f2290fb34dce00d8644bc3036fb351a4ca1"},
     {file = "lxml-4.9.3-cp27-cp27mu-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:c0781a98ff5e6586926293e59480b64ddd46282953203c76ae15dbbbf302e8bb"},
     {file = "lxml-4.9.3-cp27-cp27mu-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:cef2502e7e8a96fe5ad686d60b49e1ab03e438bd9123987994528febd569868e"},
     {file = "lxml-4.9.3-cp310-cp310-macosx_11_0_x86_64.whl", hash = "sha256:b86164d2cff4d3aaa1f04a14685cbc072efd0b4f99ca5708b2ad1b9b5988a991"},
@@ -1332,6 +1382,7 @@ source = ["Cython (>=0.29.35)"]
 name = "markdown-it-py"
 version = "3.0.0"
 description = "Python port of markdown-it. Markdown parsing, done right!"
+category = "main"
 optional = false
 python-versions = ">=3.8"
 files = [
@@ -1358,6 +1409,7 @@ testing = ["coverage", "pytest", "pytest-cov", "pytest-regressions"]
 name = "markupsafe"
 version = "2.1.3"
 description = "Safely add untrusted strings to HTML/XML markup."
+category = "main"
 optional = false
 python-versions = ">=3.7"
 files = [
@@ -1381,16 +1433,6 @@ files = [
     {file = "MarkupSafe-2.1.3-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:5bbe06f8eeafd38e5d0a4894ffec89378b6c6a625ff57e3028921f8ff59318ac"},
     {file = "MarkupSafe-2.1.3-cp311-cp311-win32.whl", hash = "sha256:dd15ff04ffd7e05ffcb7fe79f1b98041b8ea30ae9234aed2a9168b5797c3effb"},
     {file = "MarkupSafe-2.1.3-cp311-cp311-win_amd64.whl", hash = "sha256:134da1eca9ec0ae528110ccc9e48041e0828d79f24121a1a146161103c76e686"},
-    {file = "MarkupSafe-2.1.3-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:f698de3fd0c4e6972b92290a45bd9b1536bffe8c6759c62471efaa8acb4c37bc"},
-    {file = "MarkupSafe-2.1.3-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:aa57bd9cf8ae831a362185ee444e15a93ecb2e344c8e52e4d721ea3ab6ef1823"},
-    {file = "MarkupSafe-2.1.3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ffcc3f7c66b5f5b7931a5aa68fc9cecc51e685ef90282f4a82f0f5e9b704ad11"},
-    {file = "MarkupSafe-2.1.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:47d4f1c5f80fc62fdd7777d0d40a2e9dda0a05883ab11374334f6c4de38adffd"},
-    {file = "MarkupSafe-2.1.3-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1f67c7038d560d92149c060157d623c542173016c4babc0c1913cca0564b9939"},
-    {file = "MarkupSafe-2.1.3-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:9aad3c1755095ce347e26488214ef77e0485a3c34a50c5a5e2471dff60b9dd9c"},
-    {file = "MarkupSafe-2.1.3-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:14ff806850827afd6b07a5f32bd917fb7f45b046ba40c57abdb636674a8b559c"},
-    {file = "MarkupSafe-2.1.3-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:8f9293864fe09b8149f0cc42ce56e3f0e54de883a9de90cd427f191c346eb2e1"},
-    {file = "MarkupSafe-2.1.3-cp312-cp312-win32.whl", hash = "sha256:715d3562f79d540f251b99ebd6d8baa547118974341db04f5ad06d5ea3eb8007"},
-    {file = "MarkupSafe-2.1.3-cp312-cp312-win_amd64.whl", hash = "sha256:1b8dd8c3fd14349433c79fa8abeb573a55fc0fdd769133baac1f5e07abf54aeb"},
     {file = "MarkupSafe-2.1.3-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:8e254ae696c88d98da6555f5ace2279cf7cd5b3f52be2b5cf97feafe883b58d2"},
     {file = "MarkupSafe-2.1.3-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cb0932dc158471523c9637e807d9bfb93e06a95cbf010f1a38b98623b929ef2b"},
     {file = "MarkupSafe-2.1.3-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9402b03f1a1b4dc4c19845e5c749e3ab82d5078d16a2a4c2cd2df62d57bb0707"},
@@ -1427,6 +1469,7 @@ files = [
 name = "mdit-py-plugins"
 version = "0.4.0"
 description = "Collection of plugins for markdown-it-py"
+category = "main"
 optional = false
 python-versions = ">=3.8"
 files = [
@@ -1446,6 +1489,7 @@ testing = ["coverage", "pytest", "pytest-cov", "pytest-regressions"]
 name = "mdurl"
 version = "0.1.2"
 description = "Markdown URL utilities"
+category = "main"
 optional = false
 python-versions = ">=3.7"
 files = [
@@ -1457,6 +1501,7 @@ files = [
 name = "mergedeep"
 version = "1.3.4"
 description = "A deep merge function for 🐍."
+category = "main"
 optional = false
 python-versions = ">=3.6"
 files = [
@@ -1468,6 +1513,7 @@ files = [
 name = "mslex"
 version = "0.3.0"
 description = "shlex for windows"
+category = "dev"
 optional = false
 python-versions = ">=3.5"
 files = [
@@ -1479,6 +1525,7 @@ files = [
 name = "mypy"
 version = "1.4.1"
 description = "Optional static typing for Python"
+category = "dev"
 optional = false
 python-versions = ">=3.7"
 files = [
@@ -1524,6 +1571,7 @@ reports = ["lxml"]
 name = "mypy-extensions"
 version = "1.0.0"
 description = "Type system extensions for programs checked with the mypy type checker."
+category = "dev"
 optional = false
 python-versions = ">=3.5"
 files = [
@@ -1535,6 +1583,7 @@ files = [
 name = "nest-asyncio"
 version = "1.5.6"
 description = "Patch asyncio to allow nested event loops"
+category = "dev"
 optional = false
 python-versions = ">=3.5"
 files = [
@@ -1546,6 +1595,7 @@ files = [
 name = "numpy"
 version = "1.25.1"
 description = "Fundamental package for array computing in Python"
+category = "main"
 optional = false
 python-versions = ">=3.9"
 files = [
@@ -1580,6 +1630,7 @@ files = [
 name = "orjson"
 version = "3.9.4"
 description = "Fast, correct Python JSON library supporting dataclasses, datetimes, and numpy"
+category = "main"
 optional = false
 python-versions = ">=3.7"
 files = [
@@ -1645,6 +1696,7 @@ files = [
 name = "packaging"
 version = "23.1"
 description = "Core utilities for Python packages"
+category = "dev"
 optional = false
 python-versions = ">=3.7"
 files = [
@@ -1656,6 +1708,7 @@ files = [
 name = "pandas"
 version = "2.0.3"
 description = "Powerful data structures for data analysis, time series, and statistics"
+category = "main"
 optional = false
 python-versions = ">=3.8"
 files = [
@@ -1687,7 +1740,10 @@ files = [
 ]
 
 [package.dependencies]
-numpy = {version = ">=1.23.2", markers = "python_version >= \"3.11\""}
+numpy = [
+    {version = ">=1.21.0", markers = "python_version >= \"3.10\""},
+    {version = ">=1.23.2", markers = "python_version >= \"3.11\""},
+]
 python-dateutil = ">=2.8.2"
 pytz = ">=2020.1"
 tzdata = ">=2022.1"
@@ -1719,6 +1775,7 @@ xml = ["lxml (>=4.6.3)"]
 name = "pathspec"
 version = "0.11.1"
 description = "Utility library for gitignore style pattern matching of file paths."
+category = "main"
 optional = false
 python-versions = ">=3.7"
 files = [
@@ -1730,6 +1787,7 @@ files = [
 name = "pint"
 version = "0.22"
 description = "Physical quantities module"
+category = "main"
 optional = false
 python-versions = ">=3.9"
 files = [
@@ -1754,6 +1812,7 @@ xarray = ["xarray"]
 name = "pip"
 version = "23.2.1"
 description = "The PyPA recommended tool for installing Python packages."
+category = "main"
 optional = false
 python-versions = ">=3.7"
 files = [
@@ -1765,6 +1824,7 @@ files = [
 name = "platformdirs"
 version = "3.8.1"
 description = "A small Python package for determining appropriate platform-specific dirs, e.g. a \"user data dir\"."
+category = "main"
 optional = false
 python-versions = ">=3.7"
 files = [
@@ -1780,6 +1840,7 @@ test = ["appdirs (==1.4.4)", "covdefaults (>=2.3)", "pytest (>=7.3.1)", "pytest-
 name = "plotly"
 version = "5.15.0"
 description = "An open-source, interactive data visualization library for Python"
+category = "dev"
 optional = false
 python-versions = ">=3.6"
 files = [
@@ -1795,6 +1856,7 @@ tenacity = ">=6.2.0"
 name = "pluggy"
 version = "1.2.0"
 description = "plugin and hook calling mechanisms for python"
+category = "main"
 optional = false
 python-versions = ">=3.7"
 files = [
@@ -1810,6 +1872,7 @@ testing = ["pytest", "pytest-benchmark"]
 name = "pprintpp"
 version = "0.4.0"
 description = "A drop-in replacement for pprint that's actually pretty"
+category = "dev"
 optional = false
 python-versions = "*"
 files = [
@@ -1821,6 +1884,7 @@ files = [
 name = "psutil"
 version = "5.9.5"
 description = "Cross-platform lib for process and system monitoring in Python."
+category = "dev"
 optional = false
 python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*"
 files = [
@@ -1847,6 +1911,7 @@ test = ["enum34", "ipaddress", "mock", "pywin32", "wmi"]
 name = "pyastgrep"
 version = "1.2.2"
 description = "A query tool for Python abstract syntax trees"
+category = "main"
 optional = false
 python-versions = ">=3.8"
 files = [
@@ -1865,6 +1930,7 @@ pathspec = "*"
 name = "pydantic"
 version = "2.0.3"
 description = "Data validation using Python type hints"
+category = "main"
 optional = false
 python-versions = ">=3.7"
 files = [
@@ -1884,6 +1950,7 @@ email = ["email-validator (>=2.0.0)"]
 name = "pydantic-core"
 version = "2.3.0"
 description = ""
+category = "main"
 optional = false
 python-versions = ">=3.7"
 files = [
@@ -1997,6 +2064,7 @@ typing-extensions = ">=4.6.0,<4.7.0 || >4.7.0"
 name = "pygments"
 version = "2.15.1"
 description = "Pygments is a syntax highlighting package written in Python."
+category = "main"
 optional = false
 python-versions = ">=3.7"
 files = [
@@ -2022,6 +2090,7 @@ files = [
 name = "pytest"
 version = "7.4.0"
 description = "pytest: simple powerful testing with Python"
+category = "dev"
 optional = false
 python-versions = ">=3.7"
 files = [
@@ -2042,6 +2111,7 @@ testing = ["argcomplete", "attrs (>=19.2.0)", "hypothesis (>=3.56)", "mock", "no
 name = "pytest-clarity"
 version = "1.0.1"
 description = "A plugin providing an alternative, colourful diff output for failing assertions."
+category = "dev"
 optional = false
 python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*"
 files = [
@@ -2057,6 +2127,7 @@ rich = ">=8.0.0"
 name = "pytest-cov"
 version = "4.1.0"
 description = "Pytest plugin for measuring coverage."
+category = "dev"
 optional = false
 python-versions = ">=3.7"
 files = [
@@ -2075,6 +2146,7 @@ testing = ["fields", "hunter", "process-tests", "pytest-xdist", "six", "virtuale
 name = "pytest-pretty"
 version = "1.2.0"
 description = "pytest plugin for printing summary data as I want it"
+category = "dev"
 optional = false
 python-versions = ">=3.7"
 files = [
@@ -2090,6 +2162,7 @@ rich = ">=12"
 name = "pytest-randomly"
 version = "3.13.0"
 description = "Pytest plugin to randomly order tests and control random.seed."
+category = "dev"
 optional = false
 python-versions = ">=3.8"
 files = [
@@ -2104,6 +2177,7 @@ pytest = "*"
 name = "pytest-xdist"
 version = "3.3.1"
 description = "pytest xdist plugin for distributed testing, most importantly across multiple CPUs"
+category = "dev"
 optional = false
 python-versions = ">=3.7"
 files = [
@@ -2124,6 +2198,7 @@ testing = ["filelock"]
 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 = [
@@ -2138,6 +2213,7 @@ six = ">=1.5"
 name = "python-levenshtein"
 version = "0.21.1"
 description = "Python extension for computing string edit distances and similarities."
+category = "main"
 optional = false
 python-versions = ">=3.6"
 files = [
@@ -2152,6 +2228,7 @@ Levenshtein = "0.21.1"
 name = "python-multipart"
 version = "0.0.6"
 description = "A streaming multipart parser for Python"
+category = "main"
 optional = false
 python-versions = ">=3.7"
 files = [
@@ -2166,6 +2243,7 @@ dev = ["atomicwrites (==1.2.1)", "attrs (==19.2.0)", "coverage (==6.5.0)", "hatc
 name = "pytz"
 version = "2023.3"
 description = "World timezone definitions, modern and historical"
+category = "main"
 optional = false
 python-versions = "*"
 files = [
@@ -2177,6 +2255,7 @@ files = [
 name = "pyyaml"
 version = "6.0"
 description = "YAML parser and emitter for Python"
+category = "main"
 optional = false
 python-versions = ">=3.6"
 files = [
@@ -2226,6 +2305,7 @@ files = [
 name = "rapidfuzz"
 version = "3.1.2"
 description = "rapid fuzzy string matching"
+category = "main"
 optional = false
 python-versions = ">=3.7"
 files = [
@@ -2330,6 +2410,7 @@ full = ["numpy"]
 name = "referencing"
 version = "0.29.1"
 description = "JSON Referencing + Python"
+category = "main"
 optional = false
 python-versions = ">=3.8"
 files = [
@@ -2345,6 +2426,7 @@ rpds-py = ">=0.7.0"
 name = "requests"
 version = "2.31.0"
 description = "Python HTTP for Humans."
+category = "dev"
 optional = false
 python-versions = ">=3.7"
 files = [
@@ -2366,6 +2448,7 @@ use-chardet-on-py3 = ["chardet (>=3.0.2,<6)"]
 name = "retrying"
 version = "1.3.4"
 description = "Retrying"
+category = "dev"
 optional = false
 python-versions = "*"
 files = [
@@ -2380,6 +2463,7 @@ six = ">=1.7.0"
 name = "rich"
 version = "13.4.2"
 description = "Render rich text, tables, progress bars, syntax highlighting, markdown and more to the terminal"
+category = "main"
 optional = false
 python-versions = ">=3.7.0"
 files = [
@@ -2398,6 +2482,7 @@ jupyter = ["ipywidgets (>=7.5.1,<9)"]
 name = "rpds-py"
 version = "0.8.11"
 description = "Python bindings to Rust's persistent data structures (rpds)"
+category = "main"
 optional = false
 python-versions = ">=3.8"
 files = [
@@ -2504,6 +2589,7 @@ files = [
 name = "ruff"
 version = "0.0.277"
 description = "An extremely fast Python linter, written in Rust."
+category = "dev"
 optional = false
 python-versions = ">=3.7"
 files = [
@@ -2528,24 +2614,26 @@ files = [
 
 [[package]]
 name = "setuptools"
-version = "68.2.2"
+version = "68.0.0"
 description = "Easily download, build, install, upgrade, and uninstall Python packages"
+category = "main"
 optional = false
-python-versions = ">=3.8"
+python-versions = ">=3.7"
 files = [
-    {file = "setuptools-68.2.2-py3-none-any.whl", hash = "sha256:b454a35605876da60632df1a60f736524eb73cc47bbc9f3f1ef1b644de74fd2a"},
-    {file = "setuptools-68.2.2.tar.gz", hash = "sha256:4ac1475276d2f1c48684874089fefcd83bd7162ddaafb81fac866ba0db282a87"},
+    {file = "setuptools-68.0.0-py3-none-any.whl", hash = "sha256:11e52c67415a381d10d6b462ced9cfb97066179f0e871399e006c4ab101fc85f"},
+    {file = "setuptools-68.0.0.tar.gz", hash = "sha256:baf1fdb41c6da4cd2eae722e135500da913332ab3f2f5c7d33af9b492acb5235"},
 ]
 
 [package.extras]
-docs = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "pygments-github-lexers (==0.0.5)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-favicon", "sphinx-hoverxref (<2)", "sphinx-inline-tabs", "sphinx-lint", "sphinx-notfound-page (>=1,<2)", "sphinx-reredirects", "sphinxcontrib-towncrier"]
-testing = ["build[virtualenv]", "filelock (>=3.4.0)", "flake8-2020", "ini2toml[lite] (>=0.9)", "jaraco.develop (>=7.21)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "pip (>=19.1)", "pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-mypy (>=0.9.1)", "pytest-perf", "pytest-ruff", "pytest-timeout", "pytest-xdist", "tomli-w (>=1.0.0)", "virtualenv (>=13.0.0)", "wheel"]
-testing-integration = ["build[virtualenv] (>=1.0.3)", "filelock (>=3.4.0)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "packaging (>=23.1)", "pytest", "pytest-enabler", "pytest-xdist", "tomli", "virtualenv (>=13.0.0)", "wheel"]
+docs = ["furo", "jaraco.packaging (>=9)", "jaraco.tidelift (>=1.4)", "pygments-github-lexers (==0.0.5)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-favicon", "sphinx-hoverxref (<2)", "sphinx-inline-tabs", "sphinx-lint", "sphinx-notfound-page (==0.8.3)", "sphinx-reredirects", "sphinxcontrib-towncrier"]
+testing = ["build[virtualenv]", "filelock (>=3.4.0)", "flake8-2020", "ini2toml[lite] (>=0.9)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "pip (>=19.1)", "pip-run (>=8.8)", "pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=1.3)", "pytest-mypy (>=0.9.1)", "pytest-perf", "pytest-ruff", "pytest-timeout", "pytest-xdist", "tomli-w (>=1.0.0)", "virtualenv (>=13.0.0)", "wheel"]
+testing-integration = ["build[virtualenv]", "filelock (>=3.4.0)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "pytest", "pytest-enabler", "pytest-xdist", "tomli", "virtualenv (>=13.0.0)", "wheel"]
 
 [[package]]
 name = "shellingham"
 version = "1.5.0.post1"
 description = "Tool to Detect Surrounding Shell"
+category = "main"
 optional = false
 python-versions = ">=3.7"
 files = [
@@ -2557,6 +2645,7 @@ files = [
 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 = [
@@ -2568,6 +2657,7 @@ files = [
 name = "sniffio"
 version = "1.3.0"
 description = "Sniff out which async library your code is running under"
+category = "main"
 optional = false
 python-versions = ">=3.7"
 files = [
@@ -2579,6 +2669,7 @@ files = [
 name = "sortedcontainers"
 version = "2.4.0"
 description = "Sorted Containers -- Sorted List, Sorted Dict, Sorted Set"
+category = "dev"
 optional = false
 python-versions = "*"
 files = [
@@ -2590,6 +2681,7 @@ files = [
 name = "sqlean-py"
 version = "0.21.5.3"
 description = "sqlite3 with extensions"
+category = "main"
 optional = false
 python-versions = "*"
 files = [
@@ -2618,6 +2710,7 @@ files = [
 name = "sqlite-fts4"
 version = "1.0.3"
 description = "Python functions for working with SQLite FTS4 search"
+category = "main"
 optional = false
 python-versions = "*"
 files = [
@@ -2632,6 +2725,7 @@ test = ["pytest"]
 name = "sqlite-regex"
 version = "0.2.3"
 description = ""
+category = "main"
 optional = false
 python-versions = ">=3.7"
 files = [
@@ -2648,6 +2742,7 @@ test = ["pytest"]
 name = "sqlite-utils"
 version = "3.34"
 description = "CLI tool and Python library for manipulating SQLite databases"
+category = "main"
 optional = false
 python-versions = ">=3.7"
 files = [
@@ -2674,6 +2769,7 @@ tui = ["trogon"]
 name = "tabulate"
 version = "0.9.0"
 description = "Pretty-print tabular data"
+category = "main"
 optional = false
 python-versions = ">=3.7"
 files = [
@@ -2688,6 +2784,7 @@ widechars = ["wcwidth"]
 name = "taskipy"
 version = "1.11.0"
 description = "tasks runner for python projects"
+category = "dev"
 optional = false
 python-versions = ">=3.6,<4.0"
 files = [
@@ -2705,6 +2802,7 @@ tomli = {version = ">=2.0.1,<3.0.0", markers = "python_version >= \"3.7\" and py
 name = "tenacity"
 version = "8.2.2"
 description = "Retry code until it succeeds"
+category = "dev"
 optional = false
 python-versions = ">=3.6"
 files = [
@@ -2719,6 +2817,7 @@ doc = ["reno", "sphinx", "tornado (>=4.5)"]
 name = "textual"
 version = "0.29.0"
 description = "Modern Text User Interface framework"
+category = "main"
 optional = false
 python-versions = ">=3.7,<4.0"
 files = [
@@ -2736,6 +2835,7 @@ typing-extensions = ">=4.4.0,<5.0.0"
 name = "thefuzz"
 version = "0.19.0"
 description = "Fuzzy string matching in python"
+category = "main"
 optional = false
 python-versions = "*"
 files = [
@@ -2750,6 +2850,7 @@ speedup = ["python-levenshtein (>=0.12)"]
 name = "tomli"
 version = "2.0.1"
 description = "A lil' TOML parser"
+category = "dev"
 optional = false
 python-versions = ">=3.7"
 files = [
@@ -2761,6 +2862,7 @@ files = [
 name = "trogon"
 version = "0.5.0"
 description = "Automatically generate a Textual TUI for your Click CLI"
+category = "main"
 optional = false
 python-versions = ">=3.7,<4.0"
 files = [
@@ -2776,6 +2878,7 @@ textual = ">=0.26.0"
 name = "typer"
 version = "0.9.0"
 description = "Typer, build great CLIs. Easy to code. Based on Python type hints."
+category = "main"
 optional = false
 python-versions = ">=3.6"
 files = [
@@ -2800,6 +2903,7 @@ test = ["black (>=22.3.0,<23.0.0)", "coverage (>=6.2,<7.0)", "isort (>=5.0.6,<6.
 name = "types-jsonschema"
 version = "4.17.0.9"
 description = "Typing stubs for jsonschema"
+category = "dev"
 optional = false
 python-versions = "*"
 files = [
@@ -2811,6 +2915,7 @@ files = [
 name = "types-pyyaml"
 version = "6.0.12.10"
 description = "Typing stubs for PyYAML"
+category = "dev"
 optional = false
 python-versions = "*"
 files = [
@@ -2822,6 +2927,7 @@ files = [
 name = "typing-extensions"
 version = "4.7.1"
 description = "Backported and Experimental Type Hints for Python 3.7+"
+category = "main"
 optional = false
 python-versions = ">=3.7"
 files = [
@@ -2833,6 +2939,7 @@ files = [
 name = "typing-inspect"
 version = "0.9.0"
 description = "Runtime inspection utilities for typing module."
+category = "dev"
 optional = false
 python-versions = "*"
 files = [
@@ -2848,6 +2955,7 @@ typing-extensions = ">=3.7.4"
 name = "tzdata"
 version = "2023.3"
 description = "Provider of IANA time zone data"
+category = "main"
 optional = false
 python-versions = ">=2"
 files = [
@@ -2859,6 +2967,7 @@ files = [
 name = "uc-micro-py"
 version = "1.0.2"
 description = "Micro subset of unicode data files for linkify-it-py projects."
+category = "main"
 optional = false
 python-versions = ">=3.7"
 files = [
@@ -2873,6 +2982,7 @@ test = ["coverage", "pytest", "pytest-cov"]
 name = "urllib3"
 version = "2.0.3"
 description = "HTTP library with thread-safe connection pooling, file post, and more."
+category = "dev"
 optional = false
 python-versions = ">=3.7"
 files = [
@@ -2890,6 +3000,7 @@ zstd = ["zstandard (>=0.18.0)"]
 name = "uvicorn"
 version = "0.23.2"
 description = "The lightning-fast ASGI server."
+category = "main"
 optional = false
 python-versions = ">=3.8"
 files = [
@@ -2908,6 +3019,7 @@ standard = ["colorama (>=0.4)", "httptools (>=0.5.0)", "python-dotenv (>=0.13)",
 name = "werkzeug"
 version = "2.2.3"
 description = "The comprehensive WSGI web application library."
+category = "dev"
 optional = false
 python-versions = ">=3.7"
 files = [
@@ -2925,6 +3037,7 @@ watchdog = ["watchdog"]
 name = "zipp"
 version = "3.15.0"
 description = "Backport of pathlib-compatible object wrapper for zip files"
+category = "main"
 optional = false
 python-versions = ">=3.7"
 files = [