diff --git a/backend/pdm.lock b/backend/pdm.lock
index 371626ea0c..c1cb251976 100644
--- a/backend/pdm.lock
+++ b/backend/pdm.lock
@@ -7,6 +7,25 @@ strategy = ["cross_platform", "inherit_metadata"]
lock_version = "4.4.1"
content_hash = "sha256:9fb9cc53be1e2e98df6da5f2eee39151edd648e25a231d655be7d626b3e25746"
+[[package]]
+name = "adlfs"
+version = "2023.8.0"
+requires_python = ">=3.8"
+summary = "Access Azure Datalake Gen1 with fsspec and dask"
+groups = ["default"]
+dependencies = [
+ "aiohttp>=3.7.0",
+ "azure-core<2.0.0,>=1.23.1",
+ "azure-datalake-store<0.1,>=0.0.46",
+ "azure-identity",
+ "azure-storage-blob>=12.12.0",
+ "fsspec>=2021.10.1",
+]
+files = [
+ {file = "adlfs-2023.8.0-py3-none-any.whl", hash = "sha256:3eb248a3c2a30b419f1147bd7676d156b5219f96ef7f11d47166afd2a3bdb07e"},
+ {file = "adlfs-2023.8.0.tar.gz", hash = "sha256:07e804f6df4593acfcaf01025b162e30ac13e523d3570279c98b2d91a18026d9"},
+]
+
[[package]]
name = "aiobotocore"
version = "2.5.4"
@@ -386,6 +405,71 @@ files = [
{file = "Authlib-1.2.1.tar.gz", hash = "sha256:421f7c6b468d907ca2d9afede256f068f87e34d23dd221c07d13d4c234726afb"},
]
+[[package]]
+name = "azure-core"
+version = "1.30.0"
+requires_python = ">=3.7"
+summary = "Microsoft Azure Core Library for Python"
+groups = ["default"]
+dependencies = [
+ "requests>=2.21.0",
+ "six>=1.11.0",
+ "typing-extensions>=4.6.0",
+]
+files = [
+ {file = "azure-core-1.30.0.tar.gz", hash = "sha256:6f3a7883ef184722f6bd997262eddaf80cfe7e5b3e0caaaf8db1695695893d35"},
+ {file = "azure_core-1.30.0-py3-none-any.whl", hash = "sha256:3dae7962aad109610e68c9a7abb31d79720e1d982ddf61363038d175a5025e89"},
+]
+
+[[package]]
+name = "azure-datalake-store"
+version = "0.0.53"
+summary = "Azure Data Lake Store Filesystem Client Library for Python"
+groups = ["default"]
+dependencies = [
+ "cffi",
+ "msal<2,>=1.16.0",
+ "requests>=2.20.0",
+]
+files = [
+ {file = "azure-datalake-store-0.0.53.tar.gz", hash = "sha256:05b6de62ee3f2a0a6e6941e6933b792b800c3e7f6ffce2fc324bc19875757393"},
+ {file = "azure_datalake_store-0.0.53-py2.py3-none-any.whl", hash = "sha256:a30c902a6e360aa47d7f69f086b426729784e71c536f330b691647a51dc42b2b"},
+]
+
+[[package]]
+name = "azure-identity"
+version = "1.15.0"
+requires_python = ">=3.7"
+summary = "Microsoft Azure Identity Library for Python"
+groups = ["default"]
+dependencies = [
+ "azure-core<2.0.0,>=1.23.0",
+ "cryptography>=2.5",
+ "msal-extensions<2.0.0,>=0.3.0",
+ "msal<2.0.0,>=1.24.0",
+]
+files = [
+ {file = "azure-identity-1.15.0.tar.gz", hash = "sha256:4c28fc246b7f9265610eb5261d65931183d019a23d4b0e99357facb2e6c227c8"},
+ {file = "azure_identity-1.15.0-py3-none-any.whl", hash = "sha256:a14b1f01c7036f11f148f22cd8c16e05035293d714458d6b44ddf534d93eb912"},
+]
+
+[[package]]
+name = "azure-storage-blob"
+version = "12.19.0"
+requires_python = ">=3.7"
+summary = "Microsoft Azure Blob Storage Client Library for Python"
+groups = ["default"]
+dependencies = [
+ "azure-core<2.0.0,>=1.28.0",
+ "cryptography>=2.1.4",
+ "isodate>=0.6.1",
+ "typing-extensions>=4.3.0",
+]
+files = [
+ {file = "azure-storage-blob-12.19.0.tar.gz", hash = "sha256:26c0a4320a34a3c2a1b74528ba6812ebcb632a04cd67b1c7377232c4b01a5897"},
+ {file = "azure_storage_blob-12.19.0-py3-none-any.whl", hash = "sha256:7bbc2c9c16678f7a420367fef6b172ba8730a7e66df7f4d7a55d5b3c8216615b"},
+]
+
[[package]]
name = "backoff"
version = "2.2.1"
@@ -799,6 +883,17 @@ files = [
{file = "dataclasses_json-0.6.4.tar.gz", hash = "sha256:73696ebf24936560cca79a2430cbc4f3dd23ac7bf46ed17f38e5e5e7657a6377"},
]
+[[package]]
+name = "decorator"
+version = "5.1.1"
+requires_python = ">=3.5"
+summary = "Decorators for Humans"
+groups = ["default"]
+files = [
+ {file = "decorator-5.1.1-py3-none-any.whl", hash = "sha256:b8c3f85900b9dc423225913c5aace94729fe1fa9763b38939a95226f02d37186"},
+ {file = "decorator-5.1.1.tar.gz", hash = "sha256:637996211036b6385ef91435e4fae22989472f9d571faba8927ba8253acbc330"},
+]
+
[[package]]
name = "defusedxml"
version = "0.8.0rc2"
@@ -1231,6 +1326,26 @@ files = [
{file = "funcy-2.0.tar.gz", hash = "sha256:3963315d59d41c6f30c04bc910e10ab50a3ac4a225868bfa96feed133df075cb"},
]
+[[package]]
+name = "gcsfs"
+version = "2023.6.0"
+requires_python = ">=3.8"
+summary = "Convenient Filesystem interface over GCS"
+groups = ["default"]
+dependencies = [
+ "aiohttp!=4.0.0a0,!=4.0.0a1",
+ "decorator>4.1.2",
+ "fsspec==2023.6.0",
+ "google-auth-oauthlib",
+ "google-auth>=1.2",
+ "google-cloud-storage",
+ "requests",
+]
+files = [
+ {file = "gcsfs-2023.6.0-py2.py3-none-any.whl", hash = "sha256:3b3c7d8eddd4ec1380f3b49fbb861ee1e974adb223564401f10884b6260d406f"},
+ {file = "gcsfs-2023.6.0.tar.gz", hash = "sha256:30b14fccadb3b7f0d99b2cd03bd8507c40f3a9a7d05847edca571f642bedbdff"},
+]
+
[[package]]
name = "gitdb"
version = "4.0.11"
@@ -1361,6 +1476,21 @@ files = [
{file = "google_auth_httplib2-0.2.0-py2.py3-none-any.whl", hash = "sha256:b65a0a2123300dd71281a7bf6e64d65a0759287df52729bdd1ae2e47dc311a3d"},
]
+[[package]]
+name = "google-auth-oauthlib"
+version = "1.2.0"
+requires_python = ">=3.6"
+summary = "Google Authentication Library"
+groups = ["default"]
+dependencies = [
+ "google-auth>=2.15.0",
+ "requests-oauthlib>=0.7.0",
+]
+files = [
+ {file = "google-auth-oauthlib-1.2.0.tar.gz", hash = "sha256:292d2d3783349f2b0734a0a0207b1e1e322ac193c2c09d8f7c613fb7cc501ea8"},
+ {file = "google_auth_oauthlib-1.2.0-py2.py3-none-any.whl", hash = "sha256:297c1ce4cb13a99b5834c74a1fe03252e1e499716718b190f56bcb9c4abc4faf"},
+]
+
[[package]]
name = "google-cloud-aiplatform"
version = "1.40.0"
@@ -1986,6 +2116,19 @@ files = [
{file = "iniconfig-2.0.0.tar.gz", hash = "sha256:2d91e135bf72d31a410b17c16da610a82cb55f6b0477d1a902134b24a455b8b3"},
]
+[[package]]
+name = "isodate"
+version = "0.6.1"
+summary = "An ISO 8601 date/time/duration parser and formatter"
+groups = ["default"]
+dependencies = [
+ "six",
+]
+files = [
+ {file = "isodate-0.6.1-py2.py3-none-any.whl", hash = "sha256:0751eece944162659049d35f4f549ed815792b38793f07cf73381c1c87cbed96"},
+ {file = "isodate-0.6.1.tar.gz", hash = "sha256:48c5881de7e8b0a0d648cb024c8062dc84e7b840ed81e864c7614fd3c127bde9"},
+]
+
[[package]]
name = "jmespath"
version = "1.0.1"
@@ -2224,6 +2367,39 @@ files = [
{file = "mpmath-1.3.0.tar.gz", hash = "sha256:7a28eb2a9774d00c7bc92411c19a89209d5da7c4c9a9e227be8330a23a25b91f"},
]
+[[package]]
+name = "msal"
+version = "1.27.0"
+requires_python = ">=2.7"
+summary = "The Microsoft Authentication Library (MSAL) for Python library enables your app to access the Microsoft Cloud by supporting authentication of users with Microsoft Azure Active Directory accounts (AAD) and Microsoft Accounts (MSA) using industry standard OAuth2 and OpenID Connect."
+groups = ["default"]
+dependencies = [
+ "PyJWT[crypto]<3,>=1.0.0",
+ "cryptography<45,>=0.6",
+ "requests<3,>=2.0.0",
+]
+files = [
+ {file = "msal-1.27.0-py2.py3-none-any.whl", hash = "sha256:572d07149b83e7343a85a3bcef8e581167b4ac76befcbbb6eef0c0e19643cdc0"},
+ {file = "msal-1.27.0.tar.gz", hash = "sha256:3109503c038ba6b307152b0e8d34f98113f2e7a78986e28d0baf5b5303afda52"},
+]
+
+[[package]]
+name = "msal-extensions"
+version = "1.1.0"
+requires_python = ">=3.7"
+summary = "Microsoft Authentication Library extensions (MSAL EX) provides a persistence API that can save your data on disk, encrypted on Windows, macOS and Linux. Concurrent data access will be coordinated by a file lock mechanism."
+groups = ["default"]
+dependencies = [
+ "msal<2.0.0,>=0.4.1",
+ "packaging",
+ "portalocker<3,>=1.0; platform_system != \"Windows\"",
+ "portalocker<3,>=1.6; platform_system == \"Windows\"",
+]
+files = [
+ {file = "msal-extensions-1.1.0.tar.gz", hash = "sha256:6ab357867062db7b253d0bd2df6d411c7891a0ee7308d54d1e4317c1d1c54252"},
+ {file = "msal_extensions-1.1.0-py3-none-any.whl", hash = "sha256:01be9711b4c0b1a151450068eeb2c4f0997df3bba085ac299de3a66f585e382f"},
+]
+
[[package]]
name = "multidict"
version = "6.0.5"
@@ -2429,7 +2605,7 @@ files = [
[[package]]
name = "onnxruntime"
-version = "1.17.0"
+version = "1.17.1"
summary = "ONNX Runtime is a runtime accelerator for Machine Learning models"
groups = ["default"]
dependencies = [
@@ -2441,21 +2617,21 @@ dependencies = [
"sympy",
]
files = [
- {file = "onnxruntime-1.17.0-cp310-cp310-macosx_11_0_universal2.whl", hash = "sha256:d2b22a25a94109cc983443116da8d9805ced0256eb215c5e6bc6dcbabefeab96"},
- {file = "onnxruntime-1.17.0-cp310-cp310-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:b4c87d83c6f58d1af2675fc99e3dc810f2dbdb844bcefd0c1b7573632661f6fc"},
- {file = "onnxruntime-1.17.0-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:dba55723bf9b835e358f48c98a814b41692c393eb11f51e02ece0625c756b797"},
- {file = "onnxruntime-1.17.0-cp310-cp310-win32.whl", hash = "sha256:ee48422349cc500273beea7607e33c2237909f58468ae1d6cccfc4aecd158565"},
- {file = "onnxruntime-1.17.0-cp310-cp310-win_amd64.whl", hash = "sha256:f34cc46553359293854e38bdae2ab1be59543aad78a6317e7746d30e311110c3"},
- {file = "onnxruntime-1.17.0-cp311-cp311-macosx_11_0_universal2.whl", hash = "sha256:16d26badd092c8c257fa57c458bb600d96dc15282c647ccad0ed7b2732e6c03b"},
- {file = "onnxruntime-1.17.0-cp311-cp311-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:6f1273bebcdb47ed932d076c85eb9488bc4768fcea16d5f2747ca692fad4f9d3"},
- {file = "onnxruntime-1.17.0-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:cb60fd3c2c1acd684752eb9680e89ae223e9801a9b0e0dc7b28adabe45a2e380"},
- {file = "onnxruntime-1.17.0-cp311-cp311-win32.whl", hash = "sha256:4b038324586bc905299e435f7c00007e6242389c856b82fe9357fdc3b1ef2bdc"},
- {file = "onnxruntime-1.17.0-cp311-cp311-win_amd64.whl", hash = "sha256:93d39b3fa1ee01f034f098e1c7769a811a21365b4883f05f96c14a2b60c6028b"},
- {file = "onnxruntime-1.17.0-cp39-cp39-macosx_11_0_universal2.whl", hash = "sha256:5a06ab84eaa350bf64b1d747b33ccf10da64221ed1f38f7287f15eccbec81603"},
- {file = "onnxruntime-1.17.0-cp39-cp39-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:5d3d11db2c8242766212a68d0b139745157da7ce53bd96ba349a5c65e5a02357"},
- {file = "onnxruntime-1.17.0-cp39-cp39-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:5632077c3ab8b0cd4f74b0af9c4e924be012b1a7bcd7daa845763c6c6bf14b7d"},
- {file = "onnxruntime-1.17.0-cp39-cp39-win32.whl", hash = "sha256:61a12732cba869b3ad2d4e29ab6cb62c7a96f61b8c213f7fcb961ba412b70b37"},
- {file = "onnxruntime-1.17.0-cp39-cp39-win_amd64.whl", hash = "sha256:461fa0fc7d9c392c352b6cccdedf44d818430f3d6eacd924bb804fdea2dcfd02"},
+ {file = "onnxruntime-1.17.1-cp310-cp310-macosx_11_0_universal2.whl", hash = "sha256:d43ac17ac4fa3c9096ad3c0e5255bb41fd134560212dc124e7f52c3159af5d21"},
+ {file = "onnxruntime-1.17.1-cp310-cp310-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:55b5e92a4c76a23981c998078b9bf6145e4fb0b016321a8274b1607bd3c6bd35"},
+ {file = "onnxruntime-1.17.1-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:ebbcd2bc3a066cf54e6f18c75708eb4d309ef42be54606d22e5bdd78afc5b0d7"},
+ {file = "onnxruntime-1.17.1-cp310-cp310-win32.whl", hash = "sha256:5e3716b5eec9092e29a8d17aab55e737480487deabfca7eac3cd3ed952b6ada9"},
+ {file = "onnxruntime-1.17.1-cp310-cp310-win_amd64.whl", hash = "sha256:fbb98cced6782ae1bb799cc74ddcbbeeae8819f3ad1d942a74d88e72b6511337"},
+ {file = "onnxruntime-1.17.1-cp311-cp311-macosx_11_0_universal2.whl", hash = "sha256:36fd6f87a1ecad87e9c652e42407a50fb305374f9a31d71293eb231caae18784"},
+ {file = "onnxruntime-1.17.1-cp311-cp311-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:99a8bddeb538edabc524d468edb60ad4722cff8a49d66f4e280c39eace70500b"},
+ {file = "onnxruntime-1.17.1-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:fd7fddb4311deb5a7d3390cd8e9b3912d4d963efbe4dfe075edbaf18d01c024e"},
+ {file = "onnxruntime-1.17.1-cp311-cp311-win32.whl", hash = "sha256:606a7cbfb6680202b0e4f1890881041ffc3ac6e41760a25763bd9fe146f0b335"},
+ {file = "onnxruntime-1.17.1-cp311-cp311-win_amd64.whl", hash = "sha256:53e4e06c0a541696ebdf96085fd9390304b7b04b748a19e02cf3b35c869a1e76"},
+ {file = "onnxruntime-1.17.1-cp39-cp39-macosx_11_0_universal2.whl", hash = "sha256:7a9539935fb2d78ebf2cf2693cad02d9930b0fb23cdd5cf37a7df813e977674d"},
+ {file = "onnxruntime-1.17.1-cp39-cp39-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:45c6a384e9d9a29c78afff62032a46a993c477b280247a7e335df09372aedbe9"},
+ {file = "onnxruntime-1.17.1-cp39-cp39-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:4e19f966450f16863a1d6182a685ca33ae04d7772a76132303852d05b95411ea"},
+ {file = "onnxruntime-1.17.1-cp39-cp39-win32.whl", hash = "sha256:e2ae712d64a42aac29ed7a40a426cb1e624a08cfe9273dcfe681614aa65b07dc"},
+ {file = "onnxruntime-1.17.1-cp39-cp39-win_amd64.whl", hash = "sha256:f7e9f7fb049825cdddf4a923cfc7c649d84d63c0134315f8e0aa9e0c3004672c"},
]
[[package]]
@@ -3103,6 +3279,22 @@ files = [
{file = "PyJWT-2.8.0.tar.gz", hash = "sha256:57e28d156e3d5c10088e0c68abb90bfac3df82b40a71bd0daa20c65ccd5c23de"},
]
+[[package]]
+name = "pyjwt"
+version = "2.8.0"
+extras = ["crypto"]
+requires_python = ">=3.7"
+summary = "JSON Web Token implementation in Python"
+groups = ["default"]
+dependencies = [
+ "PyJWT==2.8.0",
+ "cryptography>=3.4.0",
+]
+files = [
+ {file = "PyJWT-2.8.0-py3-none-any.whl", hash = "sha256:59127c392cc44c2da5bb3192169a91f429924e17aff6534d70fdc02ab3e04320"},
+ {file = "PyJWT-2.8.0.tar.gz", hash = "sha256:57e28d156e3d5c10088e0c68abb90bfac3df82b40a71bd0daa20c65ccd5c23de"},
+]
+
[[package]]
name = "pymilvus"
version = "2.3.4"
@@ -3235,7 +3427,7 @@ files = [
[[package]]
name = "pytest"
-version = "8.0.1"
+version = "8.0.2"
requires_python = ">=3.8"
summary = "pytest: simple powerful testing with Python"
groups = ["test"]
@@ -3248,8 +3440,8 @@ dependencies = [
"tomli>=1.0.0; python_version < \"3.11\"",
]
files = [
- {file = "pytest-8.0.1-py3-none-any.whl", hash = "sha256:3e4f16fe1c0a9dc9d9389161c127c3edc5d810c38d6793042fb81d9f48a59fca"},
- {file = "pytest-8.0.1.tar.gz", hash = "sha256:267f6563751877d772019b13aacbe4e860d73fe8f651f28112e9ac37de7513ae"},
+ {file = "pytest-8.0.2-py3-none-any.whl", hash = "sha256:edfaaef32ce5172d5466b5127b42e0d6d35ebbe4453f0e3505d96afd93f6b096"},
+ {file = "pytest-8.0.2.tar.gz", hash = "sha256:d4051d623a2e0b7e51960ba963193b09ce6daeb9759a451844a21e4ddedfc1bd"},
]
[[package]]
@@ -3912,13 +4104,13 @@ files = [
[[package]]
name = "sniffio"
-version = "1.3.0"
+version = "1.3.1"
requires_python = ">=3.7"
summary = "Sniff out which async library your code is running under"
groups = ["default"]
files = [
- {file = "sniffio-1.3.0-py3-none-any.whl", hash = "sha256:eecefdce1e5bbfb7ad2eeaabf7c1eeb404d7757c379bd1f7e5cce9d8bf425384"},
- {file = "sniffio-1.3.0.tar.gz", hash = "sha256:e60305c5e5d314f5389259b7f22aaa33d8f7dee49763119234af3755c55b9101"},
+ {file = "sniffio-1.3.1-py3-none-any.whl", hash = "sha256:2f6da418d1f1e0fddd844478f41680e794e6051915791a034ff65e5f100525a2"},
+ {file = "sniffio-1.3.1.tar.gz", hash = "sha256:f4324edc670a0f49750a81b895f35c3adb843cca46f0530f79fc1babb23789dc"},
]
[[package]]
@@ -4476,13 +4668,13 @@ files = [
[[package]]
name = "typing-extensions"
-version = "4.9.0"
+version = "4.10.0"
requires_python = ">=3.8"
summary = "Backported and Experimental Type Hints for Python 3.8+"
groups = ["default"]
files = [
- {file = "typing_extensions-4.9.0-py3-none-any.whl", hash = "sha256:af72aea155e91adfc61c3ae9e0e342dbc0cba726d6cba4b6c72c1f34e47291cd"},
- {file = "typing_extensions-4.9.0.tar.gz", hash = "sha256:23478f88c37f27d76ac8aee6c905017a143b0b1b886c3c9f66bc2fd94f9f5783"},
+ {file = "typing_extensions-4.10.0-py3-none-any.whl", hash = "sha256:69b1a937c3a517342112fb4c6df7e72fc39a38e7891a5730ed4985b5214b5475"},
+ {file = "typing_extensions-4.10.0.tar.gz", hash = "sha256:b0abd7c89e8fb96f98db18d86106ff1d90ab692004eb746cf6eda2682f91b3cb"},
]
[[package]]
@@ -4622,8 +4814,10 @@ groups = ["default"]
dependencies = [
"PyDrive2[fsspec]==1.15.4",
"PyMySQL==1.1.0",
+ "adlfs==2023.8.0",
"boxfs==0.2.1",
"dropboxdrivefs==1.3.1",
+ "gcsfs==2023.6.0",
"google-auth==2.20.0",
"google-cloud-bigquery==3.11.4",
"google-cloud-secret-manager==2.16.1",
@@ -4697,7 +4891,7 @@ dependencies = [
"docker~=6.1.3",
"jsonschema~=4.18.2",
"unstract-adapters~=0.2.1",
- "unstract-tool-sandbox @ file:///home/chandru/zipstuff/Pandora/unstract/tool-registry/../tool-sandbox",
+ "unstract-tool-sandbox @ file:///home/kirtimanmishra/Zipstack/Repositories/unstract/unstract/tool-registry/../tool-sandbox",
]
[[package]]
diff --git a/backend/workflow_manager/endpoint/constants.py b/backend/workflow_manager/endpoint/constants.py
index c2ffe50720..7783cf3118 100644
--- a/backend/workflow_manager/endpoint/constants.py
+++ b/backend/workflow_manager/endpoint/constants.py
@@ -5,6 +5,7 @@ class TableColumns:
class DBConnectionClass:
SNOWFLAKE = "SnowflakeConnection"
+ BIGQUERY = "Client"
class Snowflake:
diff --git a/backend/workflow_manager/endpoint/database_utils.py b/backend/workflow_manager/endpoint/database_utils.py
index 234493bdaa..1f7ae37f27 100644
--- a/backend/workflow_manager/endpoint/database_utils.py
+++ b/backend/workflow_manager/endpoint/database_utils.py
@@ -60,58 +60,65 @@ def make_sql_values_for_query(
return sql_values
@staticmethod
- def get_column_types(
- engine: Any, table_name: str, cls: Any = None
- ) -> dict[str, str]:
- """Retrieve column types for a specified table from a database engine.
-
- Args:
- engine (Any): The database engine used to execute queries.
- table_name (str): The name of the table for which column types
- are retrieved.
- cls (Any, optional): The database connection class (e.g.,
- DBConnectionClass.SNOWFLAKE) for handling database-specific
- queries.
- Defaults to None.
-
- Returns:
- dict: A dictionary mapping column names to their respective data
- types.
-
- Raises:
- Exception: If there is an error while retrieving column types,
- an exception is raised. Exit.
+ def get_column_types_util(columns_with_types: Any) -> dict[str, str]:
+ column_types: dict[str, str] = {}
+ for column_name, data_type in columns_with_types:
+ column_types[column_name] = data_type
+ return column_types
- Note:
- - If `cls` is not provided or is None, the function assumes a
- Default SQL database and queries column types accordingly.
- - If `cls` is provided and matches DBConnectionClass.SNOWFLAKE,
- the function queries column types using Snowflake-specific
- syntax.
- """
+ @staticmethod
+ def get_column_types(
+ cls: Any,
+ table_name: str,
+ connector_id: str,
+ connector_settings: dict[str, Any],
+ ) -> Any:
+ column_types: dict[str, str] = {}
try:
- column_types: dict[str, str] = {}
- with engine.cursor() as cursor:
- if cls == DBConnectionClass.SNOWFLAKE:
- results = cursor.execute(f"describe table {table_name}")
- for column in results:
- column_types[column[0].lower()] = column[1].split("(")[
- 0
- ]
- else:
- # Default to Other SQL DBs
- # Postgresql treats the table names as in lowercase
- # tested only with Postgresql
- table_name = str.lower(table_name)
- columns_with_types_query = (
- "SELECT column_name, data_type FROM "
- "information_schema.columns WHERE "
- f"table_name = '{table_name}'"
+ if cls == DBConnectionClass.SNOWFLAKE:
+ query = f"describe table {table_name}"
+ results = DatabaseUtils.execute_and_fetch_data(
+ connector_id=connector_id,
+ connector_settings=connector_settings,
+ query=query,
+ )
+ for column in results:
+ column_types[column[0].lower()] = column[1].split("(")[0]
+ elif cls == DBConnectionClass.BIGQUERY:
+ table_name = str.lower(table_name)
+ table_list = table_name.split(".")
+ table_size = 3
+ if len(table_list) != table_size:
+ raise ValueError(
+ "Please enter project_name, dataset and table_name"
)
- cursor.execute(columns_with_types_query)
- columns_with_types = cursor.fetchall()
- for column_name, data_type in columns_with_types:
- column_types[column_name] = data_type
+ project_id = table_list[0]
+ dataset = table_list[1]
+ table_val = table_list[2]
+ query = (
+ "SELECT column_name, data_type FROM "
+ f"{project_id}.{dataset}.INFORMATION_SCHEMA.COLUMNS WHERE "
+ f"table_name = '{table_val}'"
+ )
+ results = DatabaseUtils.execute_and_fetch_data(
+ connector_id=connector_id,
+ connector_settings=connector_settings,
+ query=query,
+ )
+ column_types = DatabaseUtils.get_column_types_util(results)
+ else:
+ table_name = str.lower(table_name)
+ query = (
+ "SELECT column_name, data_type FROM "
+ "information_schema.columns WHERE "
+ f"table_name = '{table_name}'"
+ )
+ results = DatabaseUtils.execute_and_fetch_data(
+ connector_id=connector_id,
+ connector_settings=connector_settings,
+ query=query,
+ )
+ column_types = DatabaseUtils.get_column_types_util(results)
except Exception as e:
logger.error(
f"Error getting column types for {table_name}: {str(e)}"
@@ -180,13 +187,19 @@ def get_columns_and_values(
@staticmethod
def get_sql_values_for_query(
- engine: Any, table_name: str, values: dict[str, Any]
+ engine: Any,
+ connector_id: str,
+ connector_settings: dict[str, Any],
+ table_name: str,
+ values: dict[str, Any],
) -> list[str]:
"""Generate SQL values for an insert query based on the provided values
and table schema.
Args:
engine (Any): The database engine.
+ connector_id: The connector id of the connector provided
+ connector_settings: Connector settings provided by user
table_name (str): The name of the target table for the insert query.
values (dict[str, Any]): A dictionary containing column-value pairs
for the insert query.
@@ -202,24 +215,20 @@ def get_sql_values_for_query(
- For other SQL databases, it uses default SQL generation
based on column types.
"""
-
- if engine.__class__.__name__ == DBConnectionClass.SNOWFLAKE:
- # Handle Snowflake
- column_types: dict[str, str] = DatabaseUtils.get_column_types(
- engine=engine,
- table_name=table_name,
- cls=DBConnectionClass.SNOWFLAKE,
- )
+ class_name = engine.__class__.__name__
+ column_types: dict[str, str] = DatabaseUtils.get_column_types(
+ cls=class_name,
+ table_name=table_name,
+ connector_id=connector_id,
+ connector_settings=connector_settings,
+ )
+ if class_name == DBConnectionClass.SNOWFLAKE:
sql_values = DatabaseUtils.make_sql_values_for_query(
values=values,
column_types=column_types,
cls=DBConnectionClass.SNOWFLAKE,
)
else:
- # Default to Other SQL DBs
- column_types = DatabaseUtils.get_column_types(
- engine=engine, table_name=table_name
- )
sql_values = DatabaseUtils.make_sql_values_for_query(
values=values, column_types=column_types
)
@@ -248,11 +257,13 @@ def execute_write_query(
f"INSERT INTO {table_name} ({','.join(sql_keys)}) "
f"SELECT {','.join(sql_values)}"
)
-
try:
- with engine.cursor() as cursor:
- cursor.execute(sql)
- engine.commit()
+ if hasattr(engine, "cursor"):
+ with engine.cursor() as cursor:
+ cursor.execute(sql)
+ engine.commit()
+ else:
+ engine.query(sql)
except Exception as e:
logger.error(f"Error while writing data: {str(e)}")
raise e
@@ -266,3 +277,13 @@ def get_db_engine(
]
connector_class: UnstractDB = connector(connector_settings)
return connector_class.get_engine()
+
+ @staticmethod
+ def execute_and_fetch_data(
+ connector_id: str, connector_settings: dict[str, Any], query: str
+ ) -> Any:
+ connector = db_connectors[connector_id][Common.METADATA][
+ Common.CONNECTOR
+ ]
+ connector_class: UnstractDB = connector(connector_settings)
+ return connector_class.execute(query=query)
diff --git a/backend/workflow_manager/endpoint/destination.py b/backend/workflow_manager/endpoint/destination.py
index 2fb16eb039..39af1170bc 100644
--- a/backend/workflow_manager/endpoint/destination.py
+++ b/backend/workflow_manager/endpoint/destination.py
@@ -6,9 +6,7 @@
import fsspec
import magic
-from account.models import EncryptionSecret
from connector.models import ConnectorInstance
-from cryptography.fernet import Fernet
from django.db import connection
from fsspec.implementations.local import LocalFileSystem
from unstract.sdk.constants import ToolExecKey
@@ -77,17 +75,6 @@ def _get_endpoint_for_workflow(
workflow=workflow,
endpoint_type=WorkflowEndpoint.EndpointType.DESTINATION,
)
- if endpoint.connector_instance:
- encryption_secret: EncryptionSecret = EncryptionSecret.objects.get()
- f: Fernet = Fernet(encryption_secret.key.encode("utf-8"))
- endpoint.connector_instance.connector_metadata = json.loads(
- f.decrypt(
- bytes(endpoint.connector_instance.connector_metadata_b
- ).decode(
- "utf-8"
- )
- )
- )
return endpoint
def validate(self) -> None:
@@ -191,9 +178,9 @@ def copy_output_to_output_directory(self) -> None:
def insert_into_db(self, file_history: Optional[FileHistory]) -> None:
"""Insert data into the database."""
connector_instance: ConnectorInstance = self.endpoint.connector_instance
- connector_settings: dict[
- str, Any
- ] = connector_instance.connector_metadata
+ connector_settings: dict[str, Any] = (
+ connector_instance.connector_metadata
+ )
destination_configurations: dict[str, Any] = self.endpoint.configuration
table_name: str = str(
destination_configurations.get(DestinationKey.TABLE)
@@ -234,7 +221,11 @@ def insert_into_db(self, file_history: Optional[FileHistory]) -> None:
connector_settings=connector_settings,
)
sql_values = DatabaseUtils.get_sql_values_for_query(
- engine=engine, table_name=table_name, values=values
+ engine=engine,
+ connector_id=connector_instance.connector_id,
+ connector_settings=connector_settings,
+ table_name=table_name,
+ values=values,
)
DatabaseUtils.execute_write_query(
diff --git a/backend/workflow_manager/endpoint/source.py b/backend/workflow_manager/endpoint/source.py
index 7e9e3fd035..24df51a1e5 100644
--- a/backend/workflow_manager/endpoint/source.py
+++ b/backend/workflow_manager/endpoint/source.py
@@ -1,5 +1,4 @@
import fnmatch
-import json
import logging
import os
import shutil
@@ -8,10 +7,8 @@
from typing import Any, Optional
import fsspec
-from account.models import EncryptionSecret
from connector.models import ConnectorInstance
from connector_processor.constants import ConnectorKeys
-from cryptography.fernet import Fernet
from django.core.files.uploadedfile import UploadedFile
from django.db import connection
from unstract.workflow_execution.enums import LogState
@@ -92,18 +89,6 @@ def _get_endpoint_for_workflow(
workflow=workflow,
endpoint_type=WorkflowEndpoint.EndpointType.SOURCE,
)
- if endpoint.connector_instance:
- encryption_secret: EncryptionSecret = EncryptionSecret.objects.get()
- f: Fernet = Fernet(encryption_secret.key.encode("utf-8"))
- endpoint.connector_instance.connector_metadata = json.loads(
- f.decrypt(
- bytes(endpoint.connector_instance.connector_metadata_b
- ).decode(
- "utf-8"
- )
- )
- )
-
return endpoint
def validate(self) -> None:
@@ -173,7 +158,10 @@ def list_files_from_file_connector(self) -> list[str]:
input_directory = str(
source_configurations.get(SourceKey.ROOT_FOLDER, "")
)
- input_directory = str(Path(root_dir_path, input_directory.lstrip("/")))
+ if root_dir_path: # user needs to manually type the optional file path
+ input_directory = str(
+ Path(root_dir_path, input_directory.lstrip("/"))
+ )
if not isinstance(required_patterns, list):
required_patterns = [required_patterns]
diff --git a/frontend/src/components/agency/configure-connector-modal/ConfigureConnectorModal.jsx b/frontend/src/components/agency/configure-connector-modal/ConfigureConnectorModal.jsx
index 614956d832..49e9cc9593 100644
--- a/frontend/src/components/agency/configure-connector-modal/ConfigureConnectorModal.jsx
+++ b/frontend/src/components/agency/configure-connector-modal/ConfigureConnectorModal.jsx
@@ -21,9 +21,9 @@ function ConfigureConnectorModal({
formDataConfig,
setFormDataConfig,
isSpecConfigLoading,
+ connType,
}) {
const [activeKey, setActiveKey] = useState("1");
-
const tabItems = [
{
key: "1",
@@ -32,7 +32,7 @@ function ConfigureConnectorModal({
{
key: "2",
label: "File System",
- disabled: !connectorId,
+ disabled: !connectorId || connType === "DATABASE",
},
];
@@ -112,6 +112,7 @@ ConfigureConnectorModal.propTypes = {
formDataConfig: PropTypes.object,
setFormDataConfig: PropTypes.func.isRequired,
isSpecConfigLoading: PropTypes.bool.isRequired,
+ connType: PropTypes.string.isRequired,
};
export { ConfigureConnectorModal };
diff --git a/frontend/src/components/agency/ds-settings-card/DsSettingsCard.jsx b/frontend/src/components/agency/ds-settings-card/DsSettingsCard.jsx
index 1af2e68158..80b46e02b7 100644
--- a/frontend/src/components/agency/ds-settings-card/DsSettingsCard.jsx
+++ b/frontend/src/components/agency/ds-settings-card/DsSettingsCard.jsx
@@ -267,7 +267,7 @@ function DsSettingsCard({ type, endpointDetails, message }) {
- {connDetails?.icon ? (
+ {connDetails?.connector_name ? (
>
);
diff --git a/pdm.lock b/pdm.lock
index 812202c3f2..460fde61c3 100644
--- a/pdm.lock
+++ b/pdm.lock
@@ -18,6 +18,25 @@ files = [
{file = "absolufy_imports-0.3.1.tar.gz", hash = "sha256:c90638a6c0b66826d1fb4880ddc20ef7701af34192c94faf40b95d32b59f9793"},
]
+[[package]]
+name = "adlfs"
+version = "2023.8.0"
+requires_python = ">=3.8"
+summary = "Access Azure Datalake Gen1 with fsspec and dask"
+groups = ["hook-check-django-migrations"]
+dependencies = [
+ "aiohttp>=3.7.0",
+ "azure-core<2.0.0,>=1.23.1",
+ "azure-datalake-store<0.1,>=0.0.46",
+ "azure-identity",
+ "azure-storage-blob>=12.12.0",
+ "fsspec>=2021.10.1",
+]
+files = [
+ {file = "adlfs-2023.8.0-py3-none-any.whl", hash = "sha256:3eb248a3c2a30b419f1147bd7676d156b5219f96ef7f11d47166afd2a3bdb07e"},
+ {file = "adlfs-2023.8.0.tar.gz", hash = "sha256:07e804f6df4593acfcaf01025b162e30ac13e523d3570279c98b2d91a18026d9"},
+]
+
[[package]]
name = "aiobotocore"
version = "2.5.4"
@@ -413,6 +432,71 @@ files = [
{file = "autopep8-2.0.4.tar.gz", hash = "sha256:2913064abd97b3419d1cc83ea71f042cb821f87e45b9c88cad5ad3c4ea87fe0c"},
]
+[[package]]
+name = "azure-core"
+version = "1.30.0"
+requires_python = ">=3.7"
+summary = "Microsoft Azure Core Library for Python"
+groups = ["hook-check-django-migrations"]
+dependencies = [
+ "requests>=2.21.0",
+ "six>=1.11.0",
+ "typing-extensions>=4.6.0",
+]
+files = [
+ {file = "azure-core-1.30.0.tar.gz", hash = "sha256:6f3a7883ef184722f6bd997262eddaf80cfe7e5b3e0caaaf8db1695695893d35"},
+ {file = "azure_core-1.30.0-py3-none-any.whl", hash = "sha256:3dae7962aad109610e68c9a7abb31d79720e1d982ddf61363038d175a5025e89"},
+]
+
+[[package]]
+name = "azure-datalake-store"
+version = "0.0.53"
+summary = "Azure Data Lake Store Filesystem Client Library for Python"
+groups = ["hook-check-django-migrations"]
+dependencies = [
+ "cffi",
+ "msal<2,>=1.16.0",
+ "requests>=2.20.0",
+]
+files = [
+ {file = "azure-datalake-store-0.0.53.tar.gz", hash = "sha256:05b6de62ee3f2a0a6e6941e6933b792b800c3e7f6ffce2fc324bc19875757393"},
+ {file = "azure_datalake_store-0.0.53-py2.py3-none-any.whl", hash = "sha256:a30c902a6e360aa47d7f69f086b426729784e71c536f330b691647a51dc42b2b"},
+]
+
+[[package]]
+name = "azure-identity"
+version = "1.15.0"
+requires_python = ">=3.7"
+summary = "Microsoft Azure Identity Library for Python"
+groups = ["hook-check-django-migrations"]
+dependencies = [
+ "azure-core<2.0.0,>=1.23.0",
+ "cryptography>=2.5",
+ "msal-extensions<2.0.0,>=0.3.0",
+ "msal<2.0.0,>=1.24.0",
+]
+files = [
+ {file = "azure-identity-1.15.0.tar.gz", hash = "sha256:4c28fc246b7f9265610eb5261d65931183d019a23d4b0e99357facb2e6c227c8"},
+ {file = "azure_identity-1.15.0-py3-none-any.whl", hash = "sha256:a14b1f01c7036f11f148f22cd8c16e05035293d714458d6b44ddf534d93eb912"},
+]
+
+[[package]]
+name = "azure-storage-blob"
+version = "12.19.0"
+requires_python = ">=3.7"
+summary = "Microsoft Azure Blob Storage Client Library for Python"
+groups = ["hook-check-django-migrations"]
+dependencies = [
+ "azure-core<2.0.0,>=1.28.0",
+ "cryptography>=2.1.4",
+ "isodate>=0.6.1",
+ "typing-extensions>=4.3.0",
+]
+files = [
+ {file = "azure-storage-blob-12.19.0.tar.gz", hash = "sha256:26c0a4320a34a3c2a1b74528ba6812ebcb632a04cd67b1c7377232c4b01a5897"},
+ {file = "azure_storage_blob-12.19.0-py3-none-any.whl", hash = "sha256:7bbc2c9c16678f7a420367fef6b172ba8730a7e66df7f4d7a55d5b3c8216615b"},
+]
+
[[package]]
name = "backoff"
version = "2.2.1"
@@ -861,6 +945,17 @@ files = [
{file = "dataclasses_json-0.6.4.tar.gz", hash = "sha256:73696ebf24936560cca79a2430cbc4f3dd23ac7bf46ed17f38e5e5e7657a6377"},
]
+[[package]]
+name = "decorator"
+version = "5.1.1"
+requires_python = ">=3.5"
+summary = "Decorators for Humans"
+groups = ["hook-check-django-migrations"]
+files = [
+ {file = "decorator-5.1.1-py3-none-any.whl", hash = "sha256:b8c3f85900b9dc423225913c5aace94729fe1fa9763b38939a95226f02d37186"},
+ {file = "decorator-5.1.1.tar.gz", hash = "sha256:637996211036b6385ef91435e4fae22989472f9d571faba8927ba8253acbc330"},
+]
+
[[package]]
name = "defusedxml"
version = "0.8.0rc2"
@@ -1311,6 +1406,26 @@ files = [
{file = "funcy-2.0.tar.gz", hash = "sha256:3963315d59d41c6f30c04bc910e10ab50a3ac4a225868bfa96feed133df075cb"},
]
+[[package]]
+name = "gcsfs"
+version = "2023.6.0"
+requires_python = ">=3.8"
+summary = "Convenient Filesystem interface over GCS"
+groups = ["hook-check-django-migrations"]
+dependencies = [
+ "aiohttp!=4.0.0a0,!=4.0.0a1",
+ "decorator>4.1.2",
+ "fsspec==2023.6.0",
+ "google-auth-oauthlib",
+ "google-auth>=1.2",
+ "google-cloud-storage",
+ "requests",
+]
+files = [
+ {file = "gcsfs-2023.6.0-py2.py3-none-any.whl", hash = "sha256:3b3c7d8eddd4ec1380f3b49fbb861ee1e974adb223564401f10884b6260d406f"},
+ {file = "gcsfs-2023.6.0.tar.gz", hash = "sha256:30b14fccadb3b7f0d99b2cd03bd8507c40f3a9a7d05847edca571f642bedbdff"},
+]
+
[[package]]
name = "gitdb"
version = "4.0.11"
@@ -1393,7 +1508,7 @@ files = [
[[package]]
name = "google-api-python-client"
-version = "2.118.0"
+version = "2.119.0"
requires_python = ">=3.7"
summary = "Google API Client Library for Python"
groups = ["hook-check-django-migrations"]
@@ -1405,8 +1520,8 @@ dependencies = [
"uritemplate<5,>=3.0.1",
]
files = [
- {file = "google-api-python-client-2.118.0.tar.gz", hash = "sha256:ebf4927a3f5184096647be8f705d090e7f06d48ad82b0fa431a2fe80c2cbe182"},
- {file = "google_api_python_client-2.118.0-py2.py3-none-any.whl", hash = "sha256:9d83b178496b180e058fd206ebfb70ea1afab49f235dd326f557513f56f496d5"},
+ {file = "google-api-python-client-2.119.0.tar.gz", hash = "sha256:ff9ef7539eaf7e088a481b25d1af4704210b07863e1d51b5ee498b910a3a46a3"},
+ {file = "google_api_python_client-2.119.0-py2.py3-none-any.whl", hash = "sha256:84e43bdb58dd8d2301669513863996378ffe9a3bf6d23b5ccd4f1e021323dbeb"},
]
[[package]]
@@ -1441,6 +1556,21 @@ files = [
{file = "google_auth_httplib2-0.2.0-py2.py3-none-any.whl", hash = "sha256:b65a0a2123300dd71281a7bf6e64d65a0759287df52729bdd1ae2e47dc311a3d"},
]
+[[package]]
+name = "google-auth-oauthlib"
+version = "1.2.0"
+requires_python = ">=3.6"
+summary = "Google Authentication Library"
+groups = ["hook-check-django-migrations"]
+dependencies = [
+ "google-auth>=2.15.0",
+ "requests-oauthlib>=0.7.0",
+]
+files = [
+ {file = "google-auth-oauthlib-1.2.0.tar.gz", hash = "sha256:292d2d3783349f2b0734a0a0207b1e1e322ac193c2c09d8f7c613fb7cc501ea8"},
+ {file = "google_auth_oauthlib-1.2.0-py2.py3-none-any.whl", hash = "sha256:297c1ce4cb13a99b5834c74a1fe03252e1e499716718b190f56bcb9c4abc4faf"},
+]
+
[[package]]
name = "google-cloud-aiplatform"
version = "1.40.0"
@@ -1502,20 +1632,20 @@ files = [
[[package]]
name = "google-cloud-resource-manager"
-version = "1.12.1"
+version = "1.12.2"
requires_python = ">=3.7"
summary = "Google Cloud Resource Manager API client library"
groups = ["hook-check-django-migrations"]
dependencies = [
- "google-api-core[grpc]!=2.0.*,!=2.1.*,!=2.10.*,!=2.2.*,!=2.3.*,!=2.4.*,!=2.5.*,!=2.6.*,!=2.7.*,!=2.8.*,!=2.9.*,<3.0.0dev,>=1.34.0",
+ "google-api-core[grpc]!=2.0.*,!=2.1.*,!=2.10.*,!=2.2.*,!=2.3.*,!=2.4.*,!=2.5.*,!=2.6.*,!=2.7.*,!=2.8.*,!=2.9.*,<3.0.0dev,>=1.34.1",
"google-auth<3.0.0dev,>=2.14.1",
"grpc-google-iam-v1<1.0.0dev,>=0.12.4",
"proto-plus<2.0.0dev,>=1.22.3",
"protobuf!=3.20.0,!=3.20.1,!=4.21.0,!=4.21.1,!=4.21.2,!=4.21.3,!=4.21.4,!=4.21.5,<5.0.0dev,>=3.19.5",
]
files = [
- {file = "google-cloud-resource-manager-1.12.1.tar.gz", hash = "sha256:25b3112c984ef6a2569ca7047160b2341c528c70e1d2e72deb99686aa2e167dd"},
- {file = "google_cloud_resource_manager-1.12.1-py2.py3-none-any.whl", hash = "sha256:6a0b97886998fb076a71a7e9679a1187f6bed97519e0dff13352e7946513d458"},
+ {file = "google-cloud-resource-manager-1.12.2.tar.gz", hash = "sha256:2ede446a5087b236f0e1fb39cca3791bae97eb0d9125057401454b190d5572ee"},
+ {file = "google_cloud_resource_manager-1.12.2-py2.py3-none-any.whl", hash = "sha256:45abbb8911195cc831cc77c8e3be84decc271686579b332d4142af507f423ebf"},
]
[[package]]
@@ -2052,6 +2182,19 @@ files = [
{file = "inflection-0.5.1.tar.gz", hash = "sha256:1a29730d366e996aaacffb2f1f1cb9593dc38e2ddd30c91250c6dde09ea9b417"},
]
+[[package]]
+name = "isodate"
+version = "0.6.1"
+summary = "An ISO 8601 date/time/duration parser and formatter"
+groups = ["hook-check-django-migrations"]
+dependencies = [
+ "six",
+]
+files = [
+ {file = "isodate-0.6.1-py2.py3-none-any.whl", hash = "sha256:0751eece944162659049d35f4f549ed815792b38793f07cf73381c1c87cbed96"},
+ {file = "isodate-0.6.1.tar.gz", hash = "sha256:48c5881de7e8b0a0d648cb024c8062dc84e7b840ed81e864c7614fd3c127bde9"},
+]
+
[[package]]
name = "isort"
version = "5.12.0"
@@ -2312,6 +2455,39 @@ files = [
{file = "mpmath-1.3.0.tar.gz", hash = "sha256:7a28eb2a9774d00c7bc92411c19a89209d5da7c4c9a9e227be8330a23a25b91f"},
]
+[[package]]
+name = "msal"
+version = "1.27.0"
+requires_python = ">=2.7"
+summary = "The Microsoft Authentication Library (MSAL) for Python library enables your app to access the Microsoft Cloud by supporting authentication of users with Microsoft Azure Active Directory accounts (AAD) and Microsoft Accounts (MSA) using industry standard OAuth2 and OpenID Connect."
+groups = ["hook-check-django-migrations"]
+dependencies = [
+ "PyJWT[crypto]<3,>=1.0.0",
+ "cryptography<45,>=0.6",
+ "requests<3,>=2.0.0",
+]
+files = [
+ {file = "msal-1.27.0-py2.py3-none-any.whl", hash = "sha256:572d07149b83e7343a85a3bcef8e581167b4ac76befcbbb6eef0c0e19643cdc0"},
+ {file = "msal-1.27.0.tar.gz", hash = "sha256:3109503c038ba6b307152b0e8d34f98113f2e7a78986e28d0baf5b5303afda52"},
+]
+
+[[package]]
+name = "msal-extensions"
+version = "1.1.0"
+requires_python = ">=3.7"
+summary = "Microsoft Authentication Library extensions (MSAL EX) provides a persistence API that can save your data on disk, encrypted on Windows, macOS and Linux. Concurrent data access will be coordinated by a file lock mechanism."
+groups = ["hook-check-django-migrations"]
+dependencies = [
+ "msal<2.0.0,>=0.4.1",
+ "packaging",
+ "portalocker<3,>=1.0; platform_system != \"Windows\"",
+ "portalocker<3,>=1.6; platform_system == \"Windows\"",
+]
+files = [
+ {file = "msal-extensions-1.1.0.tar.gz", hash = "sha256:6ab357867062db7b253d0bd2df6d411c7891a0ee7308d54d1e4317c1d1c54252"},
+ {file = "msal_extensions-1.1.0-py3-none-any.whl", hash = "sha256:01be9711b4c0b1a151450068eeb2c4f0997df3bba085ac299de3a66f585e382f"},
+]
+
[[package]]
name = "multidict"
version = "6.0.5"
@@ -2562,7 +2738,7 @@ files = [
[[package]]
name = "onnxruntime"
-version = "1.17.0"
+version = "1.17.1"
summary = "ONNX Runtime is a runtime accelerator for Machine Learning models"
groups = ["hook-check-django-migrations"]
dependencies = [
@@ -2574,21 +2750,21 @@ dependencies = [
"sympy",
]
files = [
- {file = "onnxruntime-1.17.0-cp310-cp310-macosx_11_0_universal2.whl", hash = "sha256:d2b22a25a94109cc983443116da8d9805ced0256eb215c5e6bc6dcbabefeab96"},
- {file = "onnxruntime-1.17.0-cp310-cp310-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:b4c87d83c6f58d1af2675fc99e3dc810f2dbdb844bcefd0c1b7573632661f6fc"},
- {file = "onnxruntime-1.17.0-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:dba55723bf9b835e358f48c98a814b41692c393eb11f51e02ece0625c756b797"},
- {file = "onnxruntime-1.17.0-cp310-cp310-win32.whl", hash = "sha256:ee48422349cc500273beea7607e33c2237909f58468ae1d6cccfc4aecd158565"},
- {file = "onnxruntime-1.17.0-cp310-cp310-win_amd64.whl", hash = "sha256:f34cc46553359293854e38bdae2ab1be59543aad78a6317e7746d30e311110c3"},
- {file = "onnxruntime-1.17.0-cp311-cp311-macosx_11_0_universal2.whl", hash = "sha256:16d26badd092c8c257fa57c458bb600d96dc15282c647ccad0ed7b2732e6c03b"},
- {file = "onnxruntime-1.17.0-cp311-cp311-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:6f1273bebcdb47ed932d076c85eb9488bc4768fcea16d5f2747ca692fad4f9d3"},
- {file = "onnxruntime-1.17.0-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:cb60fd3c2c1acd684752eb9680e89ae223e9801a9b0e0dc7b28adabe45a2e380"},
- {file = "onnxruntime-1.17.0-cp311-cp311-win32.whl", hash = "sha256:4b038324586bc905299e435f7c00007e6242389c856b82fe9357fdc3b1ef2bdc"},
- {file = "onnxruntime-1.17.0-cp311-cp311-win_amd64.whl", hash = "sha256:93d39b3fa1ee01f034f098e1c7769a811a21365b4883f05f96c14a2b60c6028b"},
- {file = "onnxruntime-1.17.0-cp39-cp39-macosx_11_0_universal2.whl", hash = "sha256:5a06ab84eaa350bf64b1d747b33ccf10da64221ed1f38f7287f15eccbec81603"},
- {file = "onnxruntime-1.17.0-cp39-cp39-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:5d3d11db2c8242766212a68d0b139745157da7ce53bd96ba349a5c65e5a02357"},
- {file = "onnxruntime-1.17.0-cp39-cp39-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:5632077c3ab8b0cd4f74b0af9c4e924be012b1a7bcd7daa845763c6c6bf14b7d"},
- {file = "onnxruntime-1.17.0-cp39-cp39-win32.whl", hash = "sha256:61a12732cba869b3ad2d4e29ab6cb62c7a96f61b8c213f7fcb961ba412b70b37"},
- {file = "onnxruntime-1.17.0-cp39-cp39-win_amd64.whl", hash = "sha256:461fa0fc7d9c392c352b6cccdedf44d818430f3d6eacd924bb804fdea2dcfd02"},
+ {file = "onnxruntime-1.17.1-cp310-cp310-macosx_11_0_universal2.whl", hash = "sha256:d43ac17ac4fa3c9096ad3c0e5255bb41fd134560212dc124e7f52c3159af5d21"},
+ {file = "onnxruntime-1.17.1-cp310-cp310-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:55b5e92a4c76a23981c998078b9bf6145e4fb0b016321a8274b1607bd3c6bd35"},
+ {file = "onnxruntime-1.17.1-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:ebbcd2bc3a066cf54e6f18c75708eb4d309ef42be54606d22e5bdd78afc5b0d7"},
+ {file = "onnxruntime-1.17.1-cp310-cp310-win32.whl", hash = "sha256:5e3716b5eec9092e29a8d17aab55e737480487deabfca7eac3cd3ed952b6ada9"},
+ {file = "onnxruntime-1.17.1-cp310-cp310-win_amd64.whl", hash = "sha256:fbb98cced6782ae1bb799cc74ddcbbeeae8819f3ad1d942a74d88e72b6511337"},
+ {file = "onnxruntime-1.17.1-cp311-cp311-macosx_11_0_universal2.whl", hash = "sha256:36fd6f87a1ecad87e9c652e42407a50fb305374f9a31d71293eb231caae18784"},
+ {file = "onnxruntime-1.17.1-cp311-cp311-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:99a8bddeb538edabc524d468edb60ad4722cff8a49d66f4e280c39eace70500b"},
+ {file = "onnxruntime-1.17.1-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:fd7fddb4311deb5a7d3390cd8e9b3912d4d963efbe4dfe075edbaf18d01c024e"},
+ {file = "onnxruntime-1.17.1-cp311-cp311-win32.whl", hash = "sha256:606a7cbfb6680202b0e4f1890881041ffc3ac6e41760a25763bd9fe146f0b335"},
+ {file = "onnxruntime-1.17.1-cp311-cp311-win_amd64.whl", hash = "sha256:53e4e06c0a541696ebdf96085fd9390304b7b04b748a19e02cf3b35c869a1e76"},
+ {file = "onnxruntime-1.17.1-cp39-cp39-macosx_11_0_universal2.whl", hash = "sha256:7a9539935fb2d78ebf2cf2693cad02d9930b0fb23cdd5cf37a7df813e977674d"},
+ {file = "onnxruntime-1.17.1-cp39-cp39-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:45c6a384e9d9a29c78afff62032a46a993c477b280247a7e335df09372aedbe9"},
+ {file = "onnxruntime-1.17.1-cp39-cp39-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:4e19f966450f16863a1d6182a685ca33ae04d7772a76132303852d05b95411ea"},
+ {file = "onnxruntime-1.17.1-cp39-cp39-win32.whl", hash = "sha256:e2ae712d64a42aac29ed7a40a426cb1e624a08cfe9273dcfe681614aa65b07dc"},
+ {file = "onnxruntime-1.17.1-cp39-cp39-win_amd64.whl", hash = "sha256:f7e9f7fb049825cdddf4a923cfc7c649d84d63c0134315f8e0aa9e0c3004672c"},
]
[[package]]
@@ -2613,42 +2789,42 @@ files = [
[[package]]
name = "orjson"
-version = "3.9.14"
+version = "3.9.15"
requires_python = ">=3.8"
summary = "Fast, correct Python JSON library supporting dataclasses, datetimes, and numpy"
groups = ["hook-check-django-migrations"]
files = [
- {file = "orjson-3.9.14-cp310-cp310-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:793f6c9448ab6eb7d4974b4dde3f230345c08ca6c7995330fbceeb43a5c8aa5e"},
- {file = "orjson-3.9.14-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a6bc7928d161840096adc956703494b5c0193ede887346f028216cac0af87500"},
- {file = "orjson-3.9.14-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:58b36f54da759602d8e2f7dad958752d453dfe2c7122767bc7f765e17dc59959"},
- {file = "orjson-3.9.14-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:abcda41ecdc950399c05eff761c3de91485d9a70d8227cb599ad3a66afe93bcc"},
- {file = "orjson-3.9.14-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:df76ecd17b1b3627bddfd689faaf206380a1a38cc9f6c4075bd884eaedcf46c2"},
- {file = "orjson-3.9.14-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d450a8e0656efb5d0fcb062157b918ab02dcca73278975b4ee9ea49e2fcf5bd5"},
- {file = "orjson-3.9.14-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:95c03137b0cf66517c8baa65770507a756d3a89489d8ecf864ea92348e1beabe"},
- {file = "orjson-3.9.14-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:20837e10835c98973673406d6798e10f821e7744520633811a5a3d809762d8cc"},
- {file = "orjson-3.9.14-cp310-none-win32.whl", hash = "sha256:1f7b6f3ef10ae8e3558abb729873d033dbb5843507c66b1c0767e32502ba96bb"},
- {file = "orjson-3.9.14-cp310-none-win_amd64.whl", hash = "sha256:ea890e6dc1711aeec0a33b8520e395c2f3d59ead5b4351a788e06bf95fc7ba81"},
- {file = "orjson-3.9.14-cp311-cp311-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:c19009ff37f033c70acd04b636380379499dac2cba27ae7dfc24f304deabbc81"},
- {file = "orjson-3.9.14-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:19cdea0664aec0b7f385be84986d4defd3334e9c3c799407686ee1c26f7b8251"},
- {file = "orjson-3.9.14-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:135d518f73787ce323b1a5e21fb854fe22258d7a8ae562b81a49d6c7f826f2a3"},
- {file = "orjson-3.9.14-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d2cf1d0557c61c75e18cf7d69fb689b77896e95553e212c0cc64cf2087944b84"},
- {file = "orjson-3.9.14-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b7c11667421df2d8b18b021223505dcc3ee51be518d54e4dc49161ac88ac2b87"},
- {file = "orjson-3.9.14-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2eefc41ba42e75ed88bc396d8fe997beb20477f3e7efa000cd7a47eda452fbb2"},
- {file = "orjson-3.9.14-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:917311d6a64d1c327c0dfda1e41f3966a7fb72b11ca7aa2e7a68fcccc7db35d9"},
- {file = "orjson-3.9.14-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:4dc1c132259b38d12c6587d190cd09cd76e3b5273ce71fe1372437b4cbc65f6f"},
- {file = "orjson-3.9.14-cp311-none-win32.whl", hash = "sha256:6f39a10408478f4c05736a74da63727a1ae0e83e3533d07b19443400fe8591ca"},
- {file = "orjson-3.9.14-cp311-none-win_amd64.whl", hash = "sha256:26280a7fcb62d8257f634c16acebc3bec626454f9ab13558bbf7883b9140760e"},
- {file = "orjson-3.9.14-cp39-cp39-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:5bf597530544db27a8d76aced49cfc817ee9503e0a4ebf0109cd70331e7bbe0c"},
- {file = "orjson-3.9.14-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ac650d49366fa41fe702e054cb560171a8634e2865537e91f09a8d05ea5b1d37"},
- {file = "orjson-3.9.14-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:236230433a9a4968ab895140514c308fdf9f607cb8bee178a04372b771123860"},
- {file = "orjson-3.9.14-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3014ccbda9be0b1b5f8ea895121df7e6524496b3908f4397ff02e923bcd8f6dd"},
- {file = "orjson-3.9.14-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:ac0c7eae7ad3a223bde690565442f8a3d620056bd01196f191af8be58a5248e1"},
- {file = "orjson-3.9.14-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fca33fdd0b38839b01912c57546d4f412ba7bfa0faf9bf7453432219aec2df07"},
- {file = "orjson-3.9.14-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:f75823cc1674a840a151e999a7dfa0d86c911150dd6f951d0736ee9d383bf415"},
- {file = "orjson-3.9.14-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:6f52ac2eb49e99e7373f62e2a68428c6946cda52ce89aa8fe9f890c7278e2d3a"},
- {file = "orjson-3.9.14-cp39-none-win32.whl", hash = "sha256:0572f174f50b673b7df78680fb52cd0087a8585a6d06d295a5f790568e1064c6"},
- {file = "orjson-3.9.14-cp39-none-win_amd64.whl", hash = "sha256:ab90c02cb264250b8a58cedcc72ed78a4a257d956c8d3c8bebe9751b818dfad8"},
- {file = "orjson-3.9.14.tar.gz", hash = "sha256:06fb40f8e49088ecaa02f1162581d39e2cf3fd9dbbfe411eb2284147c99bad79"},
+ {file = "orjson-3.9.15-cp310-cp310-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:d61f7ce4727a9fa7680cd6f3986b0e2c732639f46a5e0156e550e35258aa313a"},
+ {file = "orjson-3.9.15-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4feeb41882e8aa17634b589533baafdceb387e01e117b1ec65534ec724023d04"},
+ {file = "orjson-3.9.15-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:fbbeb3c9b2edb5fd044b2a070f127a0ac456ffd079cb82746fc84af01ef021a4"},
+ {file = "orjson-3.9.15-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b66bcc5670e8a6b78f0313bcb74774c8291f6f8aeef10fe70e910b8040f3ab75"},
+ {file = "orjson-3.9.15-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2973474811db7b35c30248d1129c64fd2bdf40d57d84beed2a9a379a6f57d0ab"},
+ {file = "orjson-3.9.15-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9fe41b6f72f52d3da4db524c8653e46243c8c92df826ab5ffaece2dba9cccd58"},
+ {file = "orjson-3.9.15-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:4228aace81781cc9d05a3ec3a6d2673a1ad0d8725b4e915f1089803e9efd2b99"},
+ {file = "orjson-3.9.15-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:6f7b65bfaf69493c73423ce9db66cfe9138b2f9ef62897486417a8fcb0a92bfe"},
+ {file = "orjson-3.9.15-cp310-none-win32.whl", hash = "sha256:2d99e3c4c13a7b0fb3792cc04c2829c9db07838fb6973e578b85c1745e7d0ce7"},
+ {file = "orjson-3.9.15-cp310-none-win_amd64.whl", hash = "sha256:b725da33e6e58e4a5d27958568484aa766e825e93aa20c26c91168be58e08cbb"},
+ {file = "orjson-3.9.15-cp311-cp311-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:c8e8fe01e435005d4421f183038fc70ca85d2c1e490f51fb972db92af6e047c2"},
+ {file = "orjson-3.9.15-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:87f1097acb569dde17f246faa268759a71a2cb8c96dd392cd25c668b104cad2f"},
+ {file = "orjson-3.9.15-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:ff0f9913d82e1d1fadbd976424c316fbc4d9c525c81d047bbdd16bd27dd98cfc"},
+ {file = "orjson-3.9.15-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8055ec598605b0077e29652ccfe9372247474375e0e3f5775c91d9434e12d6b1"},
+ {file = "orjson-3.9.15-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d6768a327ea1ba44c9114dba5fdda4a214bdb70129065cd0807eb5f010bfcbb5"},
+ {file = "orjson-3.9.15-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:12365576039b1a5a47df01aadb353b68223da413e2e7f98c02403061aad34bde"},
+ {file = "orjson-3.9.15-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:71c6b009d431b3839d7c14c3af86788b3cfac41e969e3e1c22f8a6ea13139404"},
+ {file = "orjson-3.9.15-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:e18668f1bd39e69b7fed19fa7cd1cd110a121ec25439328b5c89934e6d30d357"},
+ {file = "orjson-3.9.15-cp311-none-win32.whl", hash = "sha256:62482873e0289cf7313461009bf62ac8b2e54bc6f00c6fabcde785709231a5d7"},
+ {file = "orjson-3.9.15-cp311-none-win_amd64.whl", hash = "sha256:b3d336ed75d17c7b1af233a6561cf421dee41d9204aa3cfcc6c9c65cd5bb69a8"},
+ {file = "orjson-3.9.15-cp39-cp39-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:6fc2fe4647927070df3d93f561d7e588a38865ea0040027662e3e541d592811e"},
+ {file = "orjson-3.9.15-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:34cbcd216e7af5270f2ffa63a963346845eb71e174ea530867b7443892d77180"},
+ {file = "orjson-3.9.15-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:f541587f5c558abd93cb0de491ce99a9ef8d1ae29dd6ab4dbb5a13281ae04cbd"},
+ {file = "orjson-3.9.15-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:92255879280ef9c3c0bcb327c5a1b8ed694c290d61a6a532458264f887f052cb"},
+ {file = "orjson-3.9.15-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:05a1f57fb601c426635fcae9ddbe90dfc1ed42245eb4c75e4960440cac667262"},
+ {file = "orjson-3.9.15-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ede0bde16cc6e9b96633df1631fbcd66491d1063667f260a4f2386a098393790"},
+ {file = "orjson-3.9.15-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:e88b97ef13910e5f87bcbc4dd7979a7de9ba8702b54d3204ac587e83639c0c2b"},
+ {file = "orjson-3.9.15-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:57d5d8cf9c27f7ef6bc56a5925c7fbc76b61288ab674eb352c26ac780caa5b10"},
+ {file = "orjson-3.9.15-cp39-none-win32.whl", hash = "sha256:001f4eb0ecd8e9ebd295722d0cbedf0748680fb9998d3993abaed2f40587257a"},
+ {file = "orjson-3.9.15-cp39-none-win_amd64.whl", hash = "sha256:ea0b183a5fe6b2b45f3b854b0d19c4e932d6f5934ae1f723b07cf9560edd4ec7"},
+ {file = "orjson-3.9.15.tar.gz", hash = "sha256:95cae920959d772f30ab36d3b25f83bb0f3be671e986c72ce22f8fa700dae061"},
]
[[package]]
@@ -3105,23 +3281,23 @@ files = [
[[package]]
name = "pydantic"
-version = "2.6.1"
+version = "2.6.2"
requires_python = ">=3.8"
summary = "Data validation using Python type hints"
groups = ["hook-check-django-migrations"]
dependencies = [
"annotated-types>=0.4.0",
- "pydantic-core==2.16.2",
+ "pydantic-core==2.16.3",
"typing-extensions>=4.6.1",
]
files = [
- {file = "pydantic-2.6.1-py3-none-any.whl", hash = "sha256:0b6a909df3192245cb736509a92ff69e4fef76116feffec68e93a567347bae6f"},
- {file = "pydantic-2.6.1.tar.gz", hash = "sha256:4fd5c182a2488dc63e6d32737ff19937888001e2a6d86e94b3f233104a5d1fa9"},
+ {file = "pydantic-2.6.2-py3-none-any.whl", hash = "sha256:37a5432e54b12fecaa1049c5195f3d860a10e01bdfd24f1840ef14bd0d3aeab3"},
+ {file = "pydantic-2.6.2.tar.gz", hash = "sha256:a09be1c3d28f3abe37f8a78af58284b236a92ce520105ddc91a6d29ea1176ba7"},
]
[[package]]
name = "pydantic-core"
-version = "2.16.2"
+version = "2.16.3"
requires_python = ">=3.8"
summary = ""
groups = ["hook-check-django-migrations"]
@@ -3129,60 +3305,60 @@ dependencies = [
"typing-extensions!=4.7.0,>=4.6.0",
]
files = [
- {file = "pydantic_core-2.16.2-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:3fab4e75b8c525a4776e7630b9ee48aea50107fea6ca9f593c98da3f4d11bf7c"},
- {file = "pydantic_core-2.16.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:8bde5b48c65b8e807409e6f20baee5d2cd880e0fad00b1a811ebc43e39a00ab2"},
- {file = "pydantic_core-2.16.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2924b89b16420712e9bb8192396026a8fbd6d8726224f918353ac19c4c043d2a"},
- {file = "pydantic_core-2.16.2-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:16aa02e7a0f539098e215fc193c8926c897175d64c7926d00a36188917717a05"},
- {file = "pydantic_core-2.16.2-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:936a787f83db1f2115ee829dd615c4f684ee48ac4de5779ab4300994d8af325b"},
- {file = "pydantic_core-2.16.2-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:459d6be6134ce3b38e0ef76f8a672924460c455d45f1ad8fdade36796df1ddc8"},
- {file = "pydantic_core-2.16.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4f9ee4febb249c591d07b2d4dd36ebcad0ccd128962aaa1801508320896575ef"},
- {file = "pydantic_core-2.16.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:40a0bd0bed96dae5712dab2aba7d334a6c67cbcac2ddfca7dbcc4a8176445990"},
- {file = "pydantic_core-2.16.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:870dbfa94de9b8866b37b867a2cb37a60c401d9deb4a9ea392abf11a1f98037b"},
- {file = "pydantic_core-2.16.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:308974fdf98046db28440eb3377abba274808bf66262e042c412eb2adf852731"},
- {file = "pydantic_core-2.16.2-cp310-none-win32.whl", hash = "sha256:a477932664d9611d7a0816cc3c0eb1f8856f8a42435488280dfbf4395e141485"},
- {file = "pydantic_core-2.16.2-cp310-none-win_amd64.whl", hash = "sha256:8f9142a6ed83d90c94a3efd7af8873bf7cefed2d3d44387bf848888482e2d25f"},
- {file = "pydantic_core-2.16.2-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:406fac1d09edc613020ce9cf3f2ccf1a1b2f57ab00552b4c18e3d5276c67eb11"},
- {file = "pydantic_core-2.16.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:ce232a6170dd6532096cadbf6185271e4e8c70fc9217ebe105923ac105da9978"},
- {file = "pydantic_core-2.16.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a90fec23b4b05a09ad988e7a4f4e081711a90eb2a55b9c984d8b74597599180f"},
- {file = "pydantic_core-2.16.2-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:8aafeedb6597a163a9c9727d8a8bd363a93277701b7bfd2749fbefee2396469e"},
- {file = "pydantic_core-2.16.2-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9957433c3a1b67bdd4c63717eaf174ebb749510d5ea612cd4e83f2d9142f3fc8"},
- {file = "pydantic_core-2.16.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b0d7a9165167269758145756db43a133608a531b1e5bb6a626b9ee24bc38a8f7"},
- {file = "pydantic_core-2.16.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dffaf740fe2e147fedcb6b561353a16243e654f7fe8e701b1b9db148242e1272"},
- {file = "pydantic_core-2.16.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:f8ed79883b4328b7f0bd142733d99c8e6b22703e908ec63d930b06be3a0e7113"},
- {file = "pydantic_core-2.16.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:cf903310a34e14651c9de056fcc12ce090560864d5a2bb0174b971685684e1d8"},
- {file = "pydantic_core-2.16.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:46b0d5520dbcafea9a8645a8164658777686c5c524d381d983317d29687cce97"},
- {file = "pydantic_core-2.16.2-cp311-none-win32.whl", hash = "sha256:70651ff6e663428cea902dac297066d5c6e5423fda345a4ca62430575364d62b"},
- {file = "pydantic_core-2.16.2-cp311-none-win_amd64.whl", hash = "sha256:98dc6f4f2095fc7ad277782a7c2c88296badcad92316b5a6e530930b1d475ebc"},
- {file = "pydantic_core-2.16.2-cp311-none-win_arm64.whl", hash = "sha256:ef6113cd31411eaf9b39fc5a8848e71c72656fd418882488598758b2c8c6dfa0"},
- {file = "pydantic_core-2.16.2-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:55749f745ebf154c0d63d46c8c58594d8894b161928aa41adbb0709c1fe78b77"},
- {file = "pydantic_core-2.16.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:b30b0dd58a4509c3bd7eefddf6338565c4905406aee0c6e4a5293841411a1286"},
- {file = "pydantic_core-2.16.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:18de31781cdc7e7b28678df7c2d7882f9692ad060bc6ee3c94eb15a5d733f8f7"},
- {file = "pydantic_core-2.16.2-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:5864b0242f74b9dd0b78fd39db1768bc3f00d1ffc14e596fd3e3f2ce43436a33"},
- {file = "pydantic_core-2.16.2-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b8f9186ca45aee030dc8234118b9c0784ad91a0bb27fc4e7d9d6608a5e3d386c"},
- {file = "pydantic_core-2.16.2-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:cc6f6c9be0ab6da37bc77c2dda5f14b1d532d5dbef00311ee6e13357a418e646"},
- {file = "pydantic_core-2.16.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:aa057095f621dad24a1e906747179a69780ef45cc8f69e97463692adbcdae878"},
- {file = "pydantic_core-2.16.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:6ad84731a26bcfb299f9eab56c7932d46f9cad51c52768cace09e92a19e4cf55"},
- {file = "pydantic_core-2.16.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:3b052c753c4babf2d1edc034c97851f867c87d6f3ea63a12e2700f159f5c41c3"},
- {file = "pydantic_core-2.16.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:e0f686549e32ccdb02ae6f25eee40cc33900910085de6aa3790effd391ae10c2"},
- {file = "pydantic_core-2.16.2-cp39-none-win32.whl", hash = "sha256:7afb844041e707ac9ad9acad2188a90bffce2c770e6dc2318be0c9916aef1469"},
- {file = "pydantic_core-2.16.2-cp39-none-win_amd64.whl", hash = "sha256:9da90d393a8227d717c19f5397688a38635afec89f2e2d7af0df037f3249c39a"},
- {file = "pydantic_core-2.16.2-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:5f60f920691a620b03082692c378661947d09415743e437a7478c309eb0e4f82"},
- {file = "pydantic_core-2.16.2-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:47924039e785a04d4a4fa49455e51b4eb3422d6eaacfde9fc9abf8fdef164e8a"},
- {file = "pydantic_core-2.16.2-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e6294e76b0380bb7a61eb8a39273c40b20beb35e8c87ee101062834ced19c545"},
- {file = "pydantic_core-2.16.2-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fe56851c3f1d6f5384b3051c536cc81b3a93a73faf931f404fef95217cf1e10d"},
- {file = "pydantic_core-2.16.2-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:9d776d30cde7e541b8180103c3f294ef7c1862fd45d81738d156d00551005784"},
- {file = "pydantic_core-2.16.2-pp310-pypy310_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:72f7919af5de5ecfaf1eba47bf9a5d8aa089a3340277276e5636d16ee97614d7"},
- {file = "pydantic_core-2.16.2-pp310-pypy310_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:4bfcbde6e06c56b30668a0c872d75a7ef3025dc3c1823a13cf29a0e9b33f67e8"},
- {file = "pydantic_core-2.16.2-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:ff7c97eb7a29aba230389a2661edf2e9e06ce616c7e35aa764879b6894a44b25"},
- {file = "pydantic_core-2.16.2-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:9b5f13857da99325dcabe1cc4e9e6a3d7b2e2c726248ba5dd4be3e8e4a0b6d0e"},
- {file = "pydantic_core-2.16.2-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:a7e41e3ada4cca5f22b478c08e973c930e5e6c7ba3588fb8e35f2398cdcc1545"},
- {file = "pydantic_core-2.16.2-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:60eb8ceaa40a41540b9acae6ae7c1f0a67d233c40dc4359c256ad2ad85bdf5e5"},
- {file = "pydantic_core-2.16.2-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7beec26729d496a12fd23cf8da9944ee338c8b8a17035a560b585c36fe81af20"},
- {file = "pydantic_core-2.16.2-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:22c5f022799f3cd6741e24f0443ead92ef42be93ffda0d29b2597208c94c3753"},
- {file = "pydantic_core-2.16.2-pp39-pypy39_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:eca58e319f4fd6df004762419612122b2c7e7d95ffafc37e890252f869f3fb2a"},
- {file = "pydantic_core-2.16.2-pp39-pypy39_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:ed957db4c33bc99895f3a1672eca7e80e8cda8bd1e29a80536b4ec2153fa9804"},
- {file = "pydantic_core-2.16.2-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:459c0d338cc55d099798618f714b21b7ece17eb1a87879f2da20a3ff4c7628e2"},
- {file = "pydantic_core-2.16.2.tar.gz", hash = "sha256:0ba503850d8b8dcc18391f10de896ae51d37fe5fe43dbfb6a35c5c5cad271a06"},
+ {file = "pydantic_core-2.16.3-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:75b81e678d1c1ede0785c7f46690621e4c6e63ccd9192af1f0bd9d504bbb6bf4"},
+ {file = "pydantic_core-2.16.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:9c865a7ee6f93783bd5d781af5a4c43dadc37053a5b42f7d18dc019f8c9d2bd1"},
+ {file = "pydantic_core-2.16.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:162e498303d2b1c036b957a1278fa0899d02b2842f1ff901b6395104c5554a45"},
+ {file = "pydantic_core-2.16.3-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:2f583bd01bbfbff4eaee0868e6fc607efdfcc2b03c1c766b06a707abbc856187"},
+ {file = "pydantic_core-2.16.3-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b926dd38db1519ed3043a4de50214e0d600d404099c3392f098a7f9d75029ff8"},
+ {file = "pydantic_core-2.16.3-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:716b542728d4c742353448765aa7cdaa519a7b82f9564130e2b3f6766018c9ec"},
+ {file = "pydantic_core-2.16.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fc4ad7f7ee1a13d9cb49d8198cd7d7e3aa93e425f371a68235f784e99741561f"},
+ {file = "pydantic_core-2.16.3-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:bd87f48924f360e5d1c5f770d6155ce0e7d83f7b4e10c2f9ec001c73cf475c99"},
+ {file = "pydantic_core-2.16.3-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:0df446663464884297c793874573549229f9eca73b59360878f382a0fc085979"},
+ {file = "pydantic_core-2.16.3-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:4df8a199d9f6afc5ae9a65f8f95ee52cae389a8c6b20163762bde0426275b7db"},
+ {file = "pydantic_core-2.16.3-cp310-none-win32.whl", hash = "sha256:456855f57b413f077dff513a5a28ed838dbbb15082ba00f80750377eed23d132"},
+ {file = "pydantic_core-2.16.3-cp310-none-win_amd64.whl", hash = "sha256:732da3243e1b8d3eab8c6ae23ae6a58548849d2e4a4e03a1924c8ddf71a387cb"},
+ {file = "pydantic_core-2.16.3-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:519ae0312616026bf4cedc0fe459e982734f3ca82ee8c7246c19b650b60a5ee4"},
+ {file = "pydantic_core-2.16.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:b3992a322a5617ded0a9f23fd06dbc1e4bd7cf39bc4ccf344b10f80af58beacd"},
+ {file = "pydantic_core-2.16.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8d62da299c6ecb04df729e4b5c52dc0d53f4f8430b4492b93aa8de1f541c4aac"},
+ {file = "pydantic_core-2.16.3-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:2acca2be4bb2f2147ada8cac612f8a98fc09f41c89f87add7256ad27332c2fda"},
+ {file = "pydantic_core-2.16.3-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1b662180108c55dfbf1280d865b2d116633d436cfc0bba82323554873967b340"},
+ {file = "pydantic_core-2.16.3-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e7c6ed0dc9d8e65f24f5824291550139fe6f37fac03788d4580da0d33bc00c97"},
+ {file = "pydantic_core-2.16.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a6b1bb0827f56654b4437955555dc3aeeebeddc47c2d7ed575477f082622c49e"},
+ {file = "pydantic_core-2.16.3-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:e56f8186d6210ac7ece503193ec84104da7ceb98f68ce18c07282fcc2452e76f"},
+ {file = "pydantic_core-2.16.3-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:936e5db01dd49476fa8f4383c259b8b1303d5dd5fb34c97de194560698cc2c5e"},
+ {file = "pydantic_core-2.16.3-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:33809aebac276089b78db106ee692bdc9044710e26f24a9a2eaa35a0f9fa70ba"},
+ {file = "pydantic_core-2.16.3-cp311-none-win32.whl", hash = "sha256:ded1c35f15c9dea16ead9bffcde9bb5c7c031bff076355dc58dcb1cb436c4721"},
+ {file = "pydantic_core-2.16.3-cp311-none-win_amd64.whl", hash = "sha256:d89ca19cdd0dd5f31606a9329e309d4fcbb3df860960acec32630297d61820df"},
+ {file = "pydantic_core-2.16.3-cp311-none-win_arm64.whl", hash = "sha256:6162f8d2dc27ba21027f261e4fa26f8bcb3cf9784b7f9499466a311ac284b5b9"},
+ {file = "pydantic_core-2.16.3-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:bda1ee3e08252b8d41fa5537413ffdddd58fa73107171a126d3b9ff001b9b820"},
+ {file = "pydantic_core-2.16.3-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:21b888c973e4f26b7a96491c0965a8a312e13be108022ee510248fe379a5fa23"},
+ {file = "pydantic_core-2.16.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:be0ec334369316fa73448cc8c982c01e5d2a81c95969d58b8f6e272884df0074"},
+ {file = "pydantic_core-2.16.3-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:b5b6079cc452a7c53dd378c6f881ac528246b3ac9aae0f8eef98498a75657805"},
+ {file = "pydantic_core-2.16.3-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:7ee8d5f878dccb6d499ba4d30d757111847b6849ae07acdd1205fffa1fc1253c"},
+ {file = "pydantic_core-2.16.3-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:7233d65d9d651242a68801159763d09e9ec96e8a158dbf118dc090cd77a104c9"},
+ {file = "pydantic_core-2.16.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c6119dc90483a5cb50a1306adb8d52c66e447da88ea44f323e0ae1a5fcb14256"},
+ {file = "pydantic_core-2.16.3-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:578114bc803a4c1ff9946d977c221e4376620a46cf78da267d946397dc9514a8"},
+ {file = "pydantic_core-2.16.3-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:d8f99b147ff3fcf6b3cc60cb0c39ea443884d5559a30b1481e92495f2310ff2b"},
+ {file = "pydantic_core-2.16.3-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:4ac6b4ce1e7283d715c4b729d8f9dab9627586dafce81d9eaa009dd7f25dd972"},
+ {file = "pydantic_core-2.16.3-cp39-none-win32.whl", hash = "sha256:e7774b570e61cb998490c5235740d475413a1f6de823169b4cf94e2fe9e9f6b2"},
+ {file = "pydantic_core-2.16.3-cp39-none-win_amd64.whl", hash = "sha256:9091632a25b8b87b9a605ec0e61f241c456e9248bfdcf7abdf344fdb169c81cf"},
+ {file = "pydantic_core-2.16.3-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:36fa178aacbc277bc6b62a2c3da95226520da4f4e9e206fdf076484363895d2c"},
+ {file = "pydantic_core-2.16.3-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:dcca5d2bf65c6fb591fff92da03f94cd4f315972f97c21975398bd4bd046854a"},
+ {file = "pydantic_core-2.16.3-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2a72fb9963cba4cd5793854fd12f4cfee731e86df140f59ff52a49b3552db241"},
+ {file = "pydantic_core-2.16.3-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b60cc1a081f80a2105a59385b92d82278b15d80ebb3adb200542ae165cd7d183"},
+ {file = "pydantic_core-2.16.3-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:cbcc558401de90a746d02ef330c528f2e668c83350f045833543cd57ecead1ad"},
+ {file = "pydantic_core-2.16.3-pp310-pypy310_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:fee427241c2d9fb7192b658190f9f5fd6dfe41e02f3c1489d2ec1e6a5ab1e04a"},
+ {file = "pydantic_core-2.16.3-pp310-pypy310_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:f4cb85f693044e0f71f394ff76c98ddc1bc0953e48c061725e540396d5c8a2e1"},
+ {file = "pydantic_core-2.16.3-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:b29eeb887aa931c2fcef5aa515d9d176d25006794610c264ddc114c053bf96fe"},
+ {file = "pydantic_core-2.16.3-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:a425479ee40ff021f8216c9d07a6a3b54b31c8267c6e17aa88b70d7ebd0e5e5b"},
+ {file = "pydantic_core-2.16.3-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:5c5cbc703168d1b7a838668998308018a2718c2130595e8e190220238addc96f"},
+ {file = "pydantic_core-2.16.3-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:99b6add4c0b39a513d323d3b93bc173dac663c27b99860dd5bf491b240d26137"},
+ {file = "pydantic_core-2.16.3-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:75f76ee558751746d6a38f89d60b6228fa174e5172d143886af0f85aa306fd89"},
+ {file = "pydantic_core-2.16.3-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:00ee1c97b5364b84cb0bd82e9bbf645d5e2871fb8c58059d158412fee2d33d8a"},
+ {file = "pydantic_core-2.16.3-pp39-pypy39_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:287073c66748f624be4cef893ef9174e3eb88fe0b8a78dc22e88eca4bc357ca6"},
+ {file = "pydantic_core-2.16.3-pp39-pypy39_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:ed25e1835c00a332cb10c683cd39da96a719ab1dfc08427d476bce41b92531fc"},
+ {file = "pydantic_core-2.16.3-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:86b3d0033580bd6bbe07590152007275bd7af95f98eaa5bd36f3da219dcd93da"},
+ {file = "pydantic_core-2.16.3.tar.gz", hash = "sha256:1cac689f80a3abab2d3c0048b29eea5751114054f032a941a32de4c852c59cad"},
]
[[package]]
@@ -3254,6 +3430,22 @@ files = [
{file = "PyJWT-2.8.0.tar.gz", hash = "sha256:57e28d156e3d5c10088e0c68abb90bfac3df82b40a71bd0daa20c65ccd5c23de"},
]
+[[package]]
+name = "pyjwt"
+version = "2.8.0"
+extras = ["crypto"]
+requires_python = ">=3.7"
+summary = "JSON Web Token implementation in Python"
+groups = ["hook-check-django-migrations"]
+dependencies = [
+ "PyJWT==2.8.0",
+ "cryptography>=3.4.0",
+]
+files = [
+ {file = "PyJWT-2.8.0-py3-none-any.whl", hash = "sha256:59127c392cc44c2da5bb3192169a91f429924e17aff6534d70fdc02ab3e04320"},
+ {file = "PyJWT-2.8.0.tar.gz", hash = "sha256:57e28d156e3d5c10088e0c68abb90bfac3df82b40a71bd0daa20c65ccd5c23de"},
+]
+
[[package]]
name = "pymilvus"
version = "2.3.4"
@@ -3923,13 +4115,13 @@ files = [
[[package]]
name = "setuptools"
-version = "69.1.0"
+version = "69.1.1"
requires_python = ">=3.8"
summary = "Easily download, build, install, upgrade, and uninstall Python packages"
groups = ["hook-check-django-migrations", "lint"]
files = [
- {file = "setuptools-69.1.0-py3-none-any.whl", hash = "sha256:c054629b81b946d63a9c6e732bc8b2513a7c3ea645f11d0139a2191d735c60c6"},
- {file = "setuptools-69.1.0.tar.gz", hash = "sha256:850894c4195f09c4ed30dba56213bf7c3f21d86ed6bdaafb5df5972593bfc401"},
+ {file = "setuptools-69.1.1-py3-none-any.whl", hash = "sha256:02fa291a0471b3a18b2b2481ed902af520c69e8ae0919c13da936542754b4c56"},
+ {file = "setuptools-69.1.1.tar.gz", hash = "sha256:5c0806c7d9af348e6dd3777b4f4dbb42c7ad85b190104837488eab9a7c945cf8"},
]
[[package]]
@@ -4001,13 +4193,13 @@ files = [
[[package]]
name = "sniffio"
-version = "1.3.0"
+version = "1.3.1"
requires_python = ">=3.7"
summary = "Sniff out which async library your code is running under"
groups = ["hook-check-django-migrations"]
files = [
- {file = "sniffio-1.3.0-py3-none-any.whl", hash = "sha256:eecefdce1e5bbfb7ad2eeaabf7c1eeb404d7757c379bd1f7e5cce9d8bf425384"},
- {file = "sniffio-1.3.0.tar.gz", hash = "sha256:e60305c5e5d314f5389259b7f22aaa33d8f7dee49763119234af3755c55b9101"},
+ {file = "sniffio-1.3.1-py3-none-any.whl", hash = "sha256:2f6da418d1f1e0fddd844478f41680e794e6051915791a034ff65e5f100525a2"},
+ {file = "sniffio-1.3.1.tar.gz", hash = "sha256:f4324edc670a0f49750a81b895f35c3adb843cca46f0530f79fc1babb23789dc"},
]
[[package]]
@@ -4642,13 +4834,13 @@ files = [
[[package]]
name = "typing-extensions"
-version = "4.9.0"
+version = "4.10.0"
requires_python = ">=3.8"
summary = "Backported and Experimental Type Hints for Python 3.8+"
groups = ["hook-check-django-migrations", "lint"]
files = [
- {file = "typing_extensions-4.9.0-py3-none-any.whl", hash = "sha256:af72aea155e91adfc61c3ae9e0e342dbc0cba726d6cba4b6c72c1f34e47291cd"},
- {file = "typing_extensions-4.9.0.tar.gz", hash = "sha256:23478f88c37f27d76ac8aee6c905017a143b0b1b886c3c9f66bc2fd94f9f5783"},
+ {file = "typing_extensions-4.10.0-py3-none-any.whl", hash = "sha256:69b1a937c3a517342112fb4c6df7e72fc39a38e7891a5730ed4985b5214b5475"},
+ {file = "typing_extensions-4.10.0.tar.gz", hash = "sha256:b0abd7c89e8fb96f98db18d86106ff1d90ab692004eb746cf6eda2682f91b3cb"},
]
[[package]]
@@ -4789,8 +4981,10 @@ groups = ["hook-check-django-migrations"]
dependencies = [
"PyDrive2[fsspec]==1.15.4",
"PyMySQL==1.1.0",
+ "adlfs==2023.8.0",
"boxfs==0.2.1",
"dropboxdrivefs==1.3.1",
+ "gcsfs==2023.6.0",
"google-auth==2.20.0",
"google-cloud-bigquery==3.11.4",
"google-cloud-secret-manager==2.16.1",
@@ -4954,7 +5148,7 @@ files = [
[[package]]
name = "virtualenv"
-version = "20.25.0"
+version = "20.25.1"
requires_python = ">=3.7"
summary = "Virtual Python Environment builder"
groups = ["lint"]
@@ -4964,8 +5158,8 @@ dependencies = [
"platformdirs<5,>=3.9.1",
]
files = [
- {file = "virtualenv-20.25.0-py3-none-any.whl", hash = "sha256:4238949c5ffe6876362d9c0180fc6c3a824a7b12b80604eeb8085f2ed7460de3"},
- {file = "virtualenv-20.25.0.tar.gz", hash = "sha256:bf51c0d9c7dd63ea8e44086fa1e4fb1093a31e963b86959257378aef020e1f1b"},
+ {file = "virtualenv-20.25.1-py3-none-any.whl", hash = "sha256:961c026ac520bac5f69acb8ea063e8a4f071bcc9457b9c1f28f6b085c511583a"},
+ {file = "virtualenv-20.25.1.tar.gz", hash = "sha256:e08e13ecdca7a0bd53798f356d5831434afa5b07b93f0abdf0797b7a06ffe197"},
]
[[package]]
diff --git a/unstract/connectors/pyproject.toml b/unstract/connectors/pyproject.toml
index 7273007073..abf53c275d 100644
--- a/unstract/connectors/pyproject.toml
+++ b/unstract/connectors/pyproject.toml
@@ -21,6 +21,8 @@ dependencies = [
"oauth2client==4.1.3", # For GDrive
"dropboxdrivefs==1.3.1", # For Dropbox
"boxfs==0.2.1", # For Box
+ "gcsfs==2023.6.0", # For GoogleCloudStorage
+ "adlfs==2023.8.0", # For AzureCloudStorage
# Database connectors
"psycopg2-binary==2.9.9", # For Postgres, Redshift
"snowflake-connector-python[pandas]~=3.6.0", # For Snowflake
diff --git a/unstract/connectors/src/unstract/connectors/databases/bigquery/bigquery.py b/unstract/connectors/src/unstract/connectors/databases/bigquery/bigquery.py
index 9b265a624b..c9cdfb9826 100644
--- a/unstract/connectors/src/unstract/connectors/databases/bigquery/bigquery.py
+++ b/unstract/connectors/src/unstract/connectors/databases/bigquery/bigquery.py
@@ -5,12 +5,15 @@
from google.cloud import bigquery
from google.cloud.bigquery import Client
from unstract.connectors.databases.unstract_db import UnstractDB
+from unstract.connectors.exceptions import ConnectorError
class BigQuery(UnstractDB):
def __init__(self, settings: dict[str, Any]):
super().__init__("BigQuery")
- self.json_credentials = json.loads(settings.get("json_credentials", "{}"))
+ self.json_credentials = json.loads(
+ settings.get("json_credentials", "{}")
+ )
@staticmethod
def get_id() -> str:
@@ -47,7 +50,13 @@ def can_read() -> bool:
return True
def get_engine(self) -> Client:
- con: Client = bigquery.Client.from_service_account_info( # type: ignore
+ return bigquery.Client.from_service_account_info( # type: ignore
info=self.json_credentials
)
- return con
+
+ def execute(self, query: str) -> Any:
+ try:
+ query_job = self.get_engine().query(query)
+ return query_job.result()
+ except Exception as e:
+ raise ConnectorError(str(e))
diff --git a/unstract/connectors/src/unstract/connectors/databases/bigquery/static/json_schema.json b/unstract/connectors/src/unstract/connectors/databases/bigquery/static/json_schema.json
index e809777526..4148b9aa17 100644
--- a/unstract/connectors/src/unstract/connectors/databases/bigquery/static/json_schema.json
+++ b/unstract/connectors/src/unstract/connectors/databases/bigquery/static/json_schema.json
@@ -14,6 +14,7 @@
},
"json_credentials": {
"type": "string",
+ "format": "password",
"title": "Credentials",
"default": "",
"description": "You can download credentials from Google Clouds's iam-admin/serviceaccounts/Keys. Click on Add keys."
diff --git a/unstract/connectors/src/unstract/connectors/databases/postgresql/static/json_schema.json b/unstract/connectors/src/unstract/connectors/databases/postgresql/static/json_schema.json
index 7812bc4593..3a2ba9ec3e 100644
--- a/unstract/connectors/src/unstract/connectors/databases/postgresql/static/json_schema.json
+++ b/unstract/connectors/src/unstract/connectors/databases/postgresql/static/json_schema.json
@@ -2,59 +2,79 @@
"title": "PostgreSQL database",
"description": "Designed with a patented new architecture to handle all aspects of data and analytics",
"type": "object",
- "required": [
- "connectorName",
- "connection_url"
- ],
- "properties": {
- "connectorName": {
- "type": "string",
- "title": "Name of the connector",
- "default": "Unstract's PostgreSQL connector"
- },
- "connection_url": {
- "type": "string",
- "title": "ConnectionURL",
- "description": "postgresql://username:password@localhost:5432/mydatabase",
- "default": ""
- },
- "host": {
- "type": "string",
- "title": "Host"
- }
- },
- "dependencies": {
- "host":{
- "properties":{
- "port": {
- "type": "string",
- "title": "Port",
- "default": "5432"
- },
- "database": {
- "type": "string",
- "title": "Database",
- "default": "postgres"
- },
- "schema": {
- "type": "string",
- "title": "Schema",
- "description": "Default schema: public (Optional)",
- "placeholder": "Enter schema (optional)"
- },
- "user": {
+ "allOf": [
+ {
+ "required": [
+ "connectorName"
+ ],
+ "properties": {
+ "connectorName": {
"type": "string",
- "title": "User",
- "default": "postgres"
+ "title": "Name of the connector",
+ "default": "Unstract's PostgreSQL connector"
+ }
+ }
+ },
+ {
+ "oneOf": [
+ {
+ "title": "Postgres URL",
+ "properties": {
+ "connection_url": {
+ "type": "string",
+ "title": "Connection URL",
+ "description": "postgresql://username:password@localhost:5432/mydatabase",
+ "default": ""
+ }
+ },
+ "required": [
+ "connection_url"
+ ]
},
- "password": {
- "type": "string",
- "title": "Password",
- "format": "password",
- "default": ""
+ {
+ "title": "Postgres Params",
+ "properties": {
+ "host": {
+ "type": "string",
+ "title": "Host"
+ },
+ "port": {
+ "type": "string",
+ "title": "Port",
+ "default": "5432"
+ },
+ "database": {
+ "type": "string",
+ "title": "Database",
+ "default": "postgres"
+ },
+ "schema": {
+ "type": "string",
+ "title": "Schema",
+ "description": "Default schema: public (Optional)",
+ "placeholder": "Enter schema (optional)"
+ },
+ "user": {
+ "type": "string",
+ "title": "User",
+ "default": "postgres"
+ },
+ "password": {
+ "type": "string",
+ "title": "Password",
+ "format": "password",
+ "default": ""
+ }
+ },
+ "required": [
+ "host",
+ "port",
+ "database",
+ "user",
+ "password"
+ ]
}
- },
- "required": ["port", "database", "user", "password"]
+ ]
}
- }
+ ]
}
diff --git a/unstract/connectors/src/unstract/connectors/databases/snowflake/static/json_schema.json b/unstract/connectors/src/unstract/connectors/databases/snowflake/static/json_schema.json
index 53d677c5d3..c3870457fc 100644
--- a/unstract/connectors/src/unstract/connectors/databases/snowflake/static/json_schema.json
+++ b/unstract/connectors/src/unstract/connectors/databases/snowflake/static/json_schema.json
@@ -9,7 +9,8 @@
"account",
"database",
"schema",
- "warehouse"
+ "warehouse",
+ "role"
],
"properties": {
"connectorName": {
diff --git a/unstract/connectors/src/unstract/connectors/databases/unstract_db.py b/unstract/connectors/src/unstract/connectors/databases/unstract_db.py
index f35edd62e7..af3435d8a9 100644
--- a/unstract/connectors/src/unstract/connectors/databases/unstract_db.py
+++ b/unstract/connectors/src/unstract/connectors/databases/unstract_db.py
@@ -69,3 +69,11 @@ def test_credentials(self) -> bool:
except Exception as e:
raise ConnectorError(str(e))
return True
+
+ def execute(self, query: str) -> Any:
+ try:
+ with self.get_engine().cursor() as cursor:
+ cursor.execute(query)
+ return cursor.fetchall()
+ except Exception as e:
+ raise ConnectorError(str(e))
diff --git a/unstract/connectors/src/unstract/connectors/filesystems/azure_cloud_storage/__init__.py b/unstract/connectors/src/unstract/connectors/filesystems/azure_cloud_storage/__init__.py
new file mode 100644
index 0000000000..c1982a9acc
--- /dev/null
+++ b/unstract/connectors/src/unstract/connectors/filesystems/azure_cloud_storage/__init__.py
@@ -0,0 +1,12 @@
+from .azure_cloud_storage import AzureCloudStorageFS
+
+__all__ = ["AzureCloudStorageFS"]
+
+
+metadata = {
+ "name": AzureCloudStorageFS.__name__,
+ "version": "1.0.0",
+ "connector": AzureCloudStorageFS,
+ "description": "AzureCloudStorageFS connector",
+ "is_active": True,
+}
diff --git a/unstract/connectors/src/unstract/connectors/filesystems/azure_cloud_storage/azure_cloud_storage.py b/unstract/connectors/src/unstract/connectors/filesystems/azure_cloud_storage/azure_cloud_storage.py
new file mode 100644
index 0000000000..45a2ce1f73
--- /dev/null
+++ b/unstract/connectors/src/unstract/connectors/filesystems/azure_cloud_storage/azure_cloud_storage.py
@@ -0,0 +1,76 @@
+import logging
+import os
+from typing import Any
+
+from adlfs import AzureBlobFileSystem
+
+from unstract.connectors.exceptions import ConnectorError
+from unstract.connectors.filesystems.unstract_file_system import (
+ UnstractFileSystem,
+)
+
+logger = logging.getLogger(__name__)
+
+
+class AzureCloudStorageFS(UnstractFileSystem):
+ def __init__(self, settings: dict[str, Any]):
+ super().__init__("AzureCloudStorageFS")
+ account_name = settings.get("account_name", "")
+ access_key = settings.get("access_key", "")
+ self.bucket = settings.get("bucket", "")
+ self.azure_fs = AzureBlobFileSystem(
+ account_name=account_name, credential=access_key
+ )
+
+ @staticmethod
+ def get_id() -> str:
+ return "azure_cloud_storage|1476a54a-ed17-4a01-9f8f-cb7e4cf91c8a"
+
+ @staticmethod
+ def get_name() -> str:
+ return "Azure Cloud Storage"
+
+ @staticmethod
+ def get_description() -> str:
+ return "Access files in your Azure Cloud Storage"
+
+ @staticmethod
+ def get_icon() -> str:
+ return (
+ "https://storage.googleapis.com/"
+ "pandora-static/connector-icons/azure_blob_storage.png"
+ )
+
+ @staticmethod
+ def get_json_schema() -> str:
+ f = open(f"{os.path.dirname(__file__)}/static/json_schema.json")
+ schema = f.read()
+ f.close()
+ return schema
+
+ @staticmethod
+ def requires_oauth() -> bool:
+ return False
+
+ @staticmethod
+ def python_social_auth_backend() -> str:
+ return ""
+
+ @staticmethod
+ def can_write() -> bool:
+ return True
+
+ @staticmethod
+ def can_read() -> bool:
+ return True
+
+ def get_fsspec_fs(self) -> AzureBlobFileSystem:
+ return self.azure_fs
+
+ def test_credentials(self) -> bool:
+ """To test credentials for Azure Cloud Storage."""
+ try:
+ self.get_fsspec_fs().ls(f"{self.bucket}")
+ except Exception as e:
+ raise ConnectorError(str(e))
+ return True
diff --git a/unstract/connectors/src/unstract/connectors/filesystems/azure_cloud_storage/static/json_schema.json b/unstract/connectors/src/unstract/connectors/filesystems/azure_cloud_storage/static/json_schema.json
new file mode 100644
index 0000000000..4e3ec1fc83
--- /dev/null
+++ b/unstract/connectors/src/unstract/connectors/filesystems/azure_cloud_storage/static/json_schema.json
@@ -0,0 +1,36 @@
+{
+ "title": "Azure Cloud Storage",
+ "description": "Access files in your Azure Cloud Storage with this connector",
+ "type": "object",
+ "required": [
+ "connectorName",
+ "account_name",
+ "access_key",
+ "bucket"
+ ],
+ "properties": {
+ "connectorName": {
+ "type": "string",
+ "title": "Name of the connector",
+ "default": "Unstract's Azure cloud storage"
+ },
+ "account_name": {
+ "type": "string",
+ "title": "Account Name",
+ "description": "Account name of azure cloud storage",
+ "default":""
+ },
+ "access_key": {
+ "type": "string",
+ "title": "Access Key",
+ "format": "password",
+ "description": "Access key of the corresponding account",
+ "default":""
+ },
+ "bucket": {
+ "type": "string",
+ "title": "Bucket Name",
+ "description": "Name of the bucket to be restricted to."
+ }
+ }
+}
diff --git a/unstract/connectors/src/unstract/connectors/filesystems/google_cloud_storage/__init__.py b/unstract/connectors/src/unstract/connectors/filesystems/google_cloud_storage/__init__.py
new file mode 100644
index 0000000000..c1eaeb26b2
--- /dev/null
+++ b/unstract/connectors/src/unstract/connectors/filesystems/google_cloud_storage/__init__.py
@@ -0,0 +1,12 @@
+from .google_cloud_storage import GoogleCloudStorageFS
+
+__all__ = ["GoogleCloudStorageFS"]
+
+
+metadata = {
+ "name": GoogleCloudStorageFS.__name__,
+ "version": "1.0.0",
+ "connector": GoogleCloudStorageFS,
+ "description": "GoogleCloudStorageFS connector",
+ "is_active": True,
+}
diff --git a/unstract/connectors/src/unstract/connectors/filesystems/google_cloud_storage/google_cloud_storage.py b/unstract/connectors/src/unstract/connectors/filesystems/google_cloud_storage/google_cloud_storage.py
new file mode 100644
index 0000000000..49f27e5c90
--- /dev/null
+++ b/unstract/connectors/src/unstract/connectors/filesystems/google_cloud_storage/google_cloud_storage.py
@@ -0,0 +1,75 @@
+import json
+import logging
+import os
+from typing import Any
+
+from gcsfs import GCSFileSystem
+
+from unstract.connectors.exceptions import ConnectorError
+from unstract.connectors.filesystems.unstract_file_system import (
+ UnstractFileSystem,
+)
+
+logger = logging.getLogger(__name__)
+
+
+class GoogleCloudStorageFS(UnstractFileSystem):
+ def __init__(self, settings: dict[str, Any]):
+ super().__init__("GoogleCloudStorage")
+ self.bucket = settings.get("bucket", "")
+ project_id = settings.get("project_id", "")
+ json_credentials = json.loads(settings.get("json_credentials", "{}"))
+ self.gcs_fs = GCSFileSystem(token=json_credentials, project=project_id)
+
+ @staticmethod
+ def get_id() -> str:
+ return "google_cloud_storage|109bbe7b-8861-45eb-8841-7244e833d97b"
+
+ @staticmethod
+ def get_name() -> str:
+ return "Google Cloud Storage"
+
+ @staticmethod
+ def get_description() -> str:
+ return "Access files in your Google Cloud Storage"
+
+ @staticmethod
+ def get_icon() -> str:
+ return (
+ "https://storage.googleapis.com/"
+ "pandora-static/connector-icons/google_cloud_storage.png"
+ )
+
+ @staticmethod
+ def get_json_schema() -> str:
+ f = open(f"{os.path.dirname(__file__)}/static/json_schema.json")
+ schema = f.read()
+ f.close()
+ return schema
+
+ @staticmethod
+ def requires_oauth() -> bool:
+ return False
+
+ @staticmethod
+ def python_social_auth_backend() -> str:
+ return ""
+
+ @staticmethod
+ def can_write() -> bool:
+ return True
+
+ @staticmethod
+ def can_read() -> bool:
+ return True
+
+ def get_fsspec_fs(self) -> GCSFileSystem:
+ return self.gcs_fs
+
+ def test_credentials(self) -> bool:
+ """To test credentials for Google Cloud Storage."""
+ try:
+ is_dir = bool(self.get_fsspec_fs().isdir(f"{self.bucket}"))
+ return is_dir
+ except Exception as e:
+ raise ConnectorError(str(e))
diff --git a/unstract/connectors/src/unstract/connectors/filesystems/google_cloud_storage/static/json_schema.json b/unstract/connectors/src/unstract/connectors/filesystems/google_cloud_storage/static/json_schema.json
new file mode 100644
index 0000000000..bd7e4f0bf8
--- /dev/null
+++ b/unstract/connectors/src/unstract/connectors/filesystems/google_cloud_storage/static/json_schema.json
@@ -0,0 +1,35 @@
+{
+ "title": "Google Cloud Storage",
+ "description": "Access files in your Google Cloud Storage with this connector",
+ "type": "object",
+ "required": [
+ "connectorName",
+ "json_credentials",
+ "project_id",
+ "bucket"
+ ],
+ "properties": {
+ "connectorName": {
+ "type": "string",
+ "title": "Name of the connector",
+ "default": "Unstract's google cloud storage"
+ },
+ "json_credentials": {
+ "type": "string",
+ "title": "Credentials",
+ "format": "password",
+ "default": "",
+ "description": "You can download credentials from Google Clouds's iam-admin/serviceaccounts/Keys. Click on Add keys."
+ },
+ "project_id": {
+ "type": "string",
+ "title": "Project Id",
+ "description": "Name of the project id."
+ },
+ "bucket": {
+ "type": "string",
+ "title": "Bucket Name",
+ "description": "Name of the bucket to be restricted to."
+ }
+ }
+}
diff --git a/unstract/connectors/src/unstract/connectors/filesystems/google_drive/static/json_schema.json b/unstract/connectors/src/unstract/connectors/filesystems/google_drive/static/json_schema.json
index 7a4e8545e6..79dc11fbd0 100644
--- a/unstract/connectors/src/unstract/connectors/filesystems/google_drive/static/json_schema.json
+++ b/unstract/connectors/src/unstract/connectors/filesystems/google_drive/static/json_schema.json
@@ -8,6 +8,7 @@
"properties": {
"connectorName": {
"type": "string",
+ "format": "password",
"title": "Name of the connector",
"default": "Unstract's google drive"
}
diff --git a/unstract/connectors/src/unstract/connectors/filesystems/zs_dropbox/exceptions.py b/unstract/connectors/src/unstract/connectors/filesystems/zs_dropbox/exceptions.py
index b1d65a5505..0c0d9cf2e5 100644
--- a/unstract/connectors/src/unstract/connectors/filesystems/zs_dropbox/exceptions.py
+++ b/unstract/connectors/src/unstract/connectors/filesystems/zs_dropbox/exceptions.py
@@ -6,8 +6,7 @@
def handle_dropbox_exception(e: DropboxException) -> ConnectorError:
- message = f"Error with the Dropbox connector: {e}"
- user_msg = None
+ user_msg = ""
if isinstance(e, ExcAuthError):
if isinstance(e.error, AuthError):
if e.error.is_expired_access_token():
@@ -19,4 +18,4 @@ def handle_dropbox_exception(e: DropboxException) -> ConnectorError:
elif isinstance(e, ApiError):
if e.user_message_text is not None:
user_msg = e.user_message_text
- return ConnectorError(message=message, user_message=user_msg)
+ return ConnectorError(message=user_msg, treat_as_user_message=True)
diff --git a/unstract/connectors/src/unstract/connectors/filesystems/zs_dropbox/zs_dropbox.py b/unstract/connectors/src/unstract/connectors/filesystems/zs_dropbox/zs_dropbox.py
index 53c321e37f..36e1476c95 100644
--- a/unstract/connectors/src/unstract/connectors/filesystems/zs_dropbox/zs_dropbox.py
+++ b/unstract/connectors/src/unstract/connectors/filesystems/zs_dropbox/zs_dropbox.py
@@ -5,7 +5,9 @@
from dropbox.exceptions import DropboxException
from dropboxdrivefs import DropboxDriveFileSystem
from unstract.connectors.exceptions import ConnectorError
-from unstract.connectors.filesystems.unstract_file_system import UnstractFileSystem
+from unstract.connectors.filesystems.unstract_file_system import (
+ UnstractFileSystem,
+)
from .exceptions import handle_dropbox_exception
@@ -34,7 +36,8 @@ def get_description() -> str:
def get_icon() -> str:
# TODO: Add an icon to GCS and serve it
return (
- "https://storage.googleapis.com/pandora-static/connector-icons/Dropbox.png"
+ "https://storage.googleapis.com"
+ "/pandora-static/connector-icons/Dropbox.png"
)
@staticmethod