diff --git a/README.md b/README.md
index 8e71fa39..f7eda3bd 100644
--- a/README.md
+++ b/README.md
@@ -27,7 +27,7 @@ Test SQL code and preview changes by comparing development/staging environment d
-
+
data-diff integrates with dbt Core to seamlessly compare local development to production datasets
@@ -58,7 +58,7 @@ When comparing the data, `data-diff` utilizes the resources of the underlying da
- Fully relies on the underlying database engine for computation
- Requires both datasets to be queryable with a single SQL query
- Time complexity approximates JOIN operation and is largely independent of the number of differences in the dataset
-
+
## `hashdiff`
- Recommended for comparing datasets across different databases
- Can also be helpful in diffing very large tables with few expected differences within the same database
@@ -99,14 +99,14 @@ Check out [documentation](https://docs.datafold.com/reference/open_source/cli) f
# Supported databases
-| Database | Status | Connection string |
-|---------------|-------------------------------------------------------------------------------------------------------------------------------------|--------|
-| PostgreSQL >=10 | 🟢 | `postgresql://:@:5432/` |
+| Database | Status | Connection string |
+|---------------|-------------------------------------------------------------------------------------------------------------------------------------|-------------------------------------------------------------------------------------------------------------------------------------|
+| PostgreSQL >=10 | 🟢 | `postgresql://:@:5432/` |
| MySQL | 🟢 | `mysql://:@:5432/` |
| Snowflake | 🟢 | `"snowflake://[:]@//?warehouse=&role=[&authenticator=externalbrowser]"` |
| BigQuery | 🟢 | `bigquery:///` |
| Redshift | 🟢 | `redshift://:@:5439/` |
-| Oracle | 🟡 | `oracle://:@/database` |
+| Oracle | 🟡 | `oracle://:@/servive_or_sid` |
| Presto | 🟡 | `presto://:@:8080/` |
| Databricks | 🟡 | `databricks://:@//` |
| Trino | 🟡 | `trino://:@:8080/` |
diff --git a/data_diff/sqeleton/databases/oracle.py b/data_diff/sqeleton/databases/oracle.py
index 8c749fe3..557759b3 100644
--- a/data_diff/sqeleton/databases/oracle.py
+++ b/data_diff/sqeleton/databases/oracle.py
@@ -33,9 +33,9 @@
@import_helper("oracle")
def import_oracle():
- import cx_Oracle
+ import oracledb
- return cx_Oracle
+ return oracledb
class Mixin_MD5(AbstractMixin_MD5):
diff --git a/poetry.lock b/poetry.lock
index 8d04ce71..0c728f8c 100644
--- a/poetry.lock
+++ b/poetry.lock
@@ -1,10 +1,9 @@
-# This file is automatically @generated by Poetry 1.4.1 and should not be changed by hand.
+# This file is automatically @generated by Poetry 1.5.1 and should not be changed by hand.
[[package]]
name = "agate"
version = "1.6.3"
description = "A data analysis library that is optimized for humans instead of machines."
-category = "main"
optional = false
python-versions = "*"
files = [
@@ -29,7 +28,6 @@ test = ["PyICU (>=2.4.2)", "coverage (>=3.7.1)", "cssselect (>=0.9.1)", "lxml (>
name = "argcomplete"
version = "2.0.0"
description = "Bash tab completion for argparse"
-category = "main"
optional = false
python-versions = ">=3.6"
files = [
@@ -47,7 +45,6 @@ test = ["coverage", "flake8", "pexpect", "wheel"]
name = "arrow"
version = "1.2.3"
description = "Better dates & times for Python"
-category = "main"
optional = false
python-versions = ">=3.6"
files = [
@@ -63,7 +60,6 @@ typing-extensions = {version = "*", markers = "python_version < \"3.8\""}
name = "asn1crypto"
version = "1.5.1"
description = "Fast ASN.1 parser and serializer with definitions for private keys, public keys, certificates, CRL, OCSP, CMS, PKCS#3, PKCS#7, PKCS#8, PKCS#12, PKCS#5, X.509 and TSP"
-category = "main"
optional = false
python-versions = "*"
files = [
@@ -75,7 +71,6 @@ files = [
name = "attrs"
version = "23.1.0"
description = "Classes Without Boilerplate"
-category = "main"
optional = false
python-versions = ">=3.7"
files = [
@@ -97,7 +92,6 @@ tests-no-zope = ["cloudpickle", "hypothesis", "mypy (>=1.1.1)", "pympler", "pyte
name = "babel"
version = "2.11.0"
description = "Internationalization utilities"
-category = "main"
optional = false
python-versions = ">=3.6"
files = [
@@ -112,7 +106,6 @@ pytz = ">=2015.7"
name = "backports.zoneinfo"
version = "0.2.1"
description = "Backport of the standard library zoneinfo module"
-category = "main"
optional = false
python-versions = ">=3.6"
files = [
@@ -141,7 +134,6 @@ tzdata = ["tzdata"]
name = "black"
version = "23.1a1"
description = "The uncompromising code formatter."
-category = "main"
optional = false
python-versions = ">=3.7"
files = [
@@ -178,7 +170,6 @@ uvloop = ["uvloop (>=0.15.2)"]
name = "certifi"
version = "2022.12.7"
description = "Python package for providing Mozilla's CA Bundle."
-category = "main"
optional = false
python-versions = ">=3.6"
files = [
@@ -190,7 +181,6 @@ files = [
name = "cffi"
version = "1.15.1"
description = "Foreign Function Interface for Python calling C code."
-category = "main"
optional = false
python-versions = "*"
files = [
@@ -267,7 +257,6 @@ pycparser = "*"
name = "chardet"
version = "4.0.0"
description = "Universal encoding detector for Python 2 and 3"
-category = "main"
optional = false
python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*"
files = [
@@ -279,7 +268,6 @@ files = [
name = "charset-normalizer"
version = "2.0.12"
description = "The Real First Universal Charset Detector. Open, modern and actively maintained alternative to Chardet."
-category = "main"
optional = false
python-versions = ">=3.5.0"
files = [
@@ -294,7 +282,6 @@ unicode-backport = ["unicodedata2"]
name = "click"
version = "8.1.3"
description = "Composable command line interface toolkit"
-category = "main"
optional = false
python-versions = ">=3.7"
files = [
@@ -310,7 +297,6 @@ importlib-metadata = {version = "*", markers = "python_version < \"3.8\""}
name = "clickhouse-driver"
version = "0.2.5"
description = "Python driver with native interface for ClickHouse"
-category = "main"
optional = false
python-versions = ">=3.6, <4"
files = [
@@ -423,7 +409,6 @@ zstd = ["clickhouse-cityhash (>=1.0.2.1)", "zstd"]
name = "colorama"
version = "0.4.4"
description = "Cross-platform colored terminal text."
-category = "main"
optional = false
python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*"
files = [
@@ -435,7 +420,6 @@ files = [
name = "commonmark"
version = "0.9.1"
description = "Python parser for the CommonMark Markdown spec"
-category = "main"
optional = false
python-versions = "*"
files = [
@@ -450,7 +434,6 @@ test = ["flake8 (==3.7.8)", "hypothesis (==3.55.3)"]
name = "coverage"
version = "6.5.0"
description = "Code coverage measurement for Python"
-category = "dev"
optional = false
python-versions = ">=3.7"
files = [
@@ -513,7 +496,6 @@ toml = ["tomli"]
name = "cryptography"
version = "36.0.2"
description = "cryptography is a package which provides cryptographic recipes and primitives to Python developers."
-category = "main"
optional = false
python-versions = ">=3.6"
files = [
@@ -550,37 +532,10 @@ sdist = ["setuptools-rust (>=0.11.4)"]
ssh = ["bcrypt (>=3.1.5)"]
test = ["hypothesis (>=1.11.4,!=3.79.2)", "iso8601", "pretend", "pytest (>=6.2.0)", "pytest-cov", "pytest-subtests", "pytest-xdist", "pytz"]
-[[package]]
-name = "cx-oracle"
-version = "8.3.0"
-description = "Python interface to Oracle"
-category = "main"
-optional = true
-python-versions = "*"
-files = [
- {file = "cx_Oracle-8.3.0-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:b6a23da225f03f50a81980c61dbd6a358c3575f212ca7f4c22bb65a9faf94f7f"},
- {file = "cx_Oracle-8.3.0-cp310-cp310-win32.whl", hash = "sha256:715a8bbda5982af484ded14d184304cc552c1096c82471dd2948298470e88a04"},
- {file = "cx_Oracle-8.3.0-cp310-cp310-win_amd64.whl", hash = "sha256:07f01608dfb6603a8f2a868fc7c7bdc951480f187df8dbc50f4d48c884874e6a"},
- {file = "cx_Oracle-8.3.0-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:4b3afe7a911cebaceda908228d36839f6441cbd38e5df491ec25960562bb01a0"},
- {file = "cx_Oracle-8.3.0-cp36-cp36m-win32.whl", hash = "sha256:076ffb71279d6b2dcbf7df028f62a01e18ce5bb73d8b01eab582bf14a62f4a61"},
- {file = "cx_Oracle-8.3.0-cp36-cp36m-win_amd64.whl", hash = "sha256:b82e4b165ffd807a2bd256259a6b81b0a2452883d39f987509e2292d494ea163"},
- {file = "cx_Oracle-8.3.0-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:b902db61dcdcbbf8dd981f5a46d72fef40c5150c7fc0eb0f0698b462d6eb834e"},
- {file = "cx_Oracle-8.3.0-cp37-cp37m-win32.whl", hash = "sha256:4c82ca74442c298ceec56d207450c192e06ecf8ad52eb4aaad0812e147ceabf7"},
- {file = "cx_Oracle-8.3.0-cp37-cp37m-win_amd64.whl", hash = "sha256:54164974d526b76fdefb0b66a42b68e1fca5df78713d0eeb8c1d0047b83f6bcf"},
- {file = "cx_Oracle-8.3.0-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:410747d542e5f94727f5f0e42e9706c772cf9094fb348ce965ab88b3a9e4d2d8"},
- {file = "cx_Oracle-8.3.0-cp38-cp38-win32.whl", hash = "sha256:3baa878597c5fadb2c72f359f548431c7be001e722ce4a4ebdf3d2293a1bb70b"},
- {file = "cx_Oracle-8.3.0-cp38-cp38-win_amd64.whl", hash = "sha256:de42bdc882abdc5cea54597da27a05593b44143728e5b629ad5d35decb1a2036"},
- {file = "cx_Oracle-8.3.0-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:df412238a9948340591beee9ec64fa62a2efacc0d91107034a7023e2991fba97"},
- {file = "cx_Oracle-8.3.0-cp39-cp39-win32.whl", hash = "sha256:70d3cf030aefd71f99b45beba77237b2af448adf5e26be0db3d0d3dee6ea4230"},
- {file = "cx_Oracle-8.3.0-cp39-cp39-win_amd64.whl", hash = "sha256:bf01ce87edb4ef663b2e5bd604e1e0154d2cc2f12b60301f788b569d9db8a900"},
- {file = "cx_Oracle-8.3.0.tar.gz", hash = "sha256:3b2d215af4441463c97ea469b9cc307460739f89fdfa8ea222ea3518f1a424d9"},
-]
-
[[package]]
name = "datamodel-code-generator"
version = "0.18.0"
description = "Datamodel Code Generator"
-category = "main"
optional = false
python-versions = ">=3.7,<4.0"
files = [
@@ -613,7 +568,6 @@ http = ["httpx"]
name = "dbt-artifacts-parser"
version = "0.4.2"
description = "A dbt artifacts parser in python"
-category = "main"
optional = false
python-versions = ">=3.7.0"
files = [
@@ -633,7 +587,6 @@ test = ["black (==21.9b0)", "flake8 (>=3.8.3,<4.0.0)", "isort (>=5.0.6,<6.0.0)",
name = "dbt-core"
version = "1.2.6"
description = "With dbt, data analysts and engineers can build analytics the way engineers build applications."
-category = "main"
optional = false
python-versions = ">=3.7.2"
files = [
@@ -670,7 +623,6 @@ werkzeug = ">=1,<3"
name = "dbt-extractor"
version = "0.4.1"
description = "A tool to analyze and extract information from Jinja used in dbt projects."
-category = "main"
optional = false
python-versions = ">=3.6.1"
files = [
@@ -696,7 +648,6 @@ files = [
name = "dnspython"
version = "2.2.1"
description = "DNS toolkit"
-category = "main"
optional = false
python-versions = ">=3.6,<4.0"
files = [
@@ -716,7 +667,6 @@ wmi = ["wmi (>=1.5.1,<2.0.0)"]
name = "dsnparse"
version = "0.1.15"
description = "parse dsn urls"
-category = "main"
optional = false
python-versions = "*"
files = [
@@ -727,7 +677,6 @@ files = [
name = "duckdb"
version = "0.7.1"
description = "DuckDB embedded database"
-category = "main"
optional = false
python-versions = "*"
files = [
@@ -784,7 +733,6 @@ files = [
name = "email-validator"
version = "2.0.0.post1"
description = "A robust email address syntax and deliverability validation library."
-category = "main"
optional = false
python-versions = ">=3.7"
files = [
@@ -800,7 +748,6 @@ idna = ">=2.0.0"
name = "filelock"
version = "3.12.2"
description = "A platform independent file lock."
-category = "main"
optional = false
python-versions = ">=3.7"
files = [
@@ -816,7 +763,6 @@ testing = ["covdefaults (>=2.3)", "coverage (>=7.2.7)", "diff-cover (>=7.5)", "p
name = "future"
version = "0.18.3"
description = "Clean single-source support for Python 3 and 2"
-category = "main"
optional = false
python-versions = ">=2.6, !=3.0.*, !=3.1.*, !=3.2.*"
files = [
@@ -827,7 +773,6 @@ files = [
name = "genson"
version = "1.2.2"
description = "GenSON is a powerful, user-friendly JSON Schema generator."
-category = "main"
optional = false
python-versions = "*"
files = [
@@ -838,7 +783,6 @@ files = [
name = "hologram"
version = "0.0.14"
description = "JSON schema generation from dataclasses"
-category = "main"
optional = false
python-versions = "*"
files = [
@@ -854,7 +798,6 @@ python-dateutil = ">=2.8,<2.9"
name = "idna"
version = "3.4"
description = "Internationalized Domain Names in Applications (IDNA)"
-category = "main"
optional = false
python-versions = ">=3.5"
files = [
@@ -866,7 +809,6 @@ files = [
name = "importlib-metadata"
version = "4.13.0"
description = "Read metadata from Python packages"
-category = "main"
optional = false
python-versions = ">=3.7"
files = [
@@ -887,7 +829,6 @@ testing = ["flake8 (<5)", "flufl.flake8", "importlib-resources (>=1.3)", "packag
name = "importlib-resources"
version = "5.12.0"
description = "Read resources from Python packages"
-category = "main"
optional = false
python-versions = ">=3.7"
files = [
@@ -906,7 +847,6 @@ testing = ["flake8 (<5)", "pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-chec
name = "inflect"
version = "5.6.2"
description = "Correctly generate plurals, singular nouns, ordinals, indefinite articles; convert numbers to words"
-category = "main"
optional = false
python-versions = ">=3.7"
files = [
@@ -922,7 +862,6 @@ testing = ["pygments", "pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdo
name = "isodate"
version = "0.6.1"
description = "An ISO 8601 date/time/duration parser and formatter"
-category = "main"
optional = false
python-versions = "*"
files = [
@@ -937,7 +876,6 @@ six = "*"
name = "isort"
version = "5.11.4"
description = "A Python utility / library to sort Python imports."
-category = "main"
optional = false
python-versions = ">=3.7.0"
files = [
@@ -955,7 +893,6 @@ requirements-deprecated-finder = ["pip-api", "pipreqs"]
name = "jaraco-classes"
version = "3.2.3"
description = "Utility functions for Python class constructs"
-category = "main"
optional = false
python-versions = ">=3.7"
files = [
@@ -974,7 +911,6 @@ testing = ["flake8 (<5)", "pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-chec
name = "jeepney"
version = "0.8.0"
description = "Low-level, pure Python DBus protocol wrapper."
-category = "main"
optional = false
python-versions = ">=3.7"
files = [
@@ -990,7 +926,6 @@ trio = ["async_generator", "trio"]
name = "jinja2"
version = "2.11.3"
description = "A very fast and expressive template engine."
-category = "main"
optional = false
python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*"
files = [
@@ -1008,7 +943,6 @@ i18n = ["Babel (>=0.8)"]
name = "jsonschema"
version = "3.1.1"
description = "An implementation of JSON Schema validation for Python"
-category = "main"
optional = false
python-versions = "*"
files = [
@@ -1030,7 +964,6 @@ format = ["idna", "jsonpointer (>1.13)", "rfc3987", "strict-rfc3339", "webcolors
name = "keyring"
version = "23.13.1"
description = "Store and access your passwords safely."
-category = "main"
optional = false
python-versions = ">=3.7"
files = [
@@ -1055,7 +988,6 @@ testing = ["flake8 (<5)", "pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-chec
name = "lark-parser"
version = "0.11.3"
description = "a modern parsing library"
-category = "main"
optional = false
python-versions = "*"
files = [
@@ -1071,7 +1003,6 @@ regex = ["regex"]
name = "leather"
version = "0.3.4"
description = "Python charting for 80% of humans."
-category = "main"
optional = false
python-versions = "*"
files = [
@@ -1086,7 +1017,6 @@ six = ">=1.6.1"
name = "logbook"
version = "1.5.3"
description = "A logging replacement for Python"
-category = "main"
optional = false
python-versions = "*"
files = [
@@ -1116,7 +1046,6 @@ zmq = ["pyzmq"]
name = "markupsafe"
version = "2.0.1"
description = "Safely add untrusted strings to HTML/XML markup."
-category = "main"
optional = false
python-versions = ">=3.6"
files = [
@@ -1195,7 +1124,6 @@ files = [
name = "mashumaro"
version = "2.9"
description = "Fast serialization framework on top of dataclasses"
-category = "main"
optional = false
python-versions = ">=3.6"
files = [
@@ -1212,7 +1140,6 @@ typing-extensions = "*"
name = "minimal-snowplow-tracker"
version = "0.0.2"
description = "A minimal snowplow event tracker for Python. Add analytics to your Python and Django apps, webapps and games"
-category = "main"
optional = false
python-versions = "*"
files = [
@@ -1227,7 +1154,6 @@ six = ">=1.9.0,<2.0"
name = "more-itertools"
version = "9.1.0"
description = "More routines for operating on iterables, beyond itertools"
-category = "main"
optional = false
python-versions = ">=3.7"
files = [
@@ -1239,7 +1165,6 @@ files = [
name = "msgpack"
version = "1.0.4"
description = "MessagePack serializer"
-category = "main"
optional = false
python-versions = "*"
files = [
@@ -1301,7 +1226,6 @@ files = [
name = "mypy-extensions"
version = "0.4.3"
description = "Experimental type system extensions for programs checked with the mypy typechecker."
-category = "main"
optional = false
python-versions = "*"
files = [
@@ -1313,7 +1237,6 @@ files = [
name = "mysql-connector-python"
version = "8.0.29"
description = "MySQL driver written in Python"
-category = "main"
optional = false
python-versions = "*"
files = [
@@ -1349,7 +1272,6 @@ gssapi = ["gssapi (>=1.6.9)"]
name = "networkx"
version = "2.6.3"
description = "Python package for creating and manipulating graphs and networks"
-category = "main"
optional = false
python-versions = ">=3.7"
files = [
@@ -1368,7 +1290,6 @@ test = ["codecov (>=2.1)", "pytest (>=6.2)", "pytest-cov (>=2.12)"]
name = "openapi-schema-validator"
version = "0.2.3"
description = "OpenAPI schema validation for Python"
-category = "main"
optional = false
python-versions = ">=3.7.0,<4.0.0"
files = [
@@ -1388,7 +1309,6 @@ strict-rfc3339 = ["strict-rfc3339"]
name = "openapi-spec-validator"
version = "0.3.1"
description = "OpenAPI 2.0 (aka Swagger) and OpenAPI 3.0 spec validator"
-category = "main"
optional = false
python-versions = ">= 2.7, != 3.0.*, != 3.1.*, != 3.2.*, != 3.3.*, != 3.4.*"
files = [
@@ -1407,11 +1327,50 @@ six = "*"
dev = ["pre-commit"]
requests = ["requests"]
+[[package]]
+name = "oracledb"
+version = "1.3.2"
+description = "Python interface to Oracle Database"
+optional = false
+python-versions = ">=3.6"
+files = [
+ {file = "oracledb-1.3.2-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:bee717f90118a95f0c661d27e7a65255eb5e400b95cbe4019b75014b3691ef90"},
+ {file = "oracledb-1.3.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:000c5a31ecc5569e6dec4dcaf4552509d88a19051e57deb0af96296f9937dc6a"},
+ {file = "oracledb-1.3.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c37c249c4323b61c3e333c2cf724e19e6416d35130acf0f684eefad17a73b040"},
+ {file = "oracledb-1.3.2-cp310-cp310-win32.whl", hash = "sha256:2680f460708904a2d2e4f853990bce10a963905205acf0e709c32cad353a5d2f"},
+ {file = "oracledb-1.3.2-cp310-cp310-win_amd64.whl", hash = "sha256:0fdfa5e119270332eab1ee5900a503423e87d1b8ae6da17c426dd34822217213"},
+ {file = "oracledb-1.3.2-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:de0ada0cbea8b1524f0798cedc38dabc9a8bfcb67f738b914e7a8eb873cc854a"},
+ {file = "oracledb-1.3.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:138904100c5218c33005ec5b07688ce68f40ea20c28b3b840738401ae2a862a1"},
+ {file = "oracledb-1.3.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:839f7a4d8d34130dd99a44c064bc9eea130a0d2406f723398ebb0b29b6d3a8cf"},
+ {file = "oracledb-1.3.2-cp311-cp311-win32.whl", hash = "sha256:8e37e2b41900a113894049f3c9d7b64e93f613ed52104f2f05ef3284e2e1bb8f"},
+ {file = "oracledb-1.3.2-cp311-cp311-win_amd64.whl", hash = "sha256:cedd48e7d107884d4a19c9ad449b3c3cb3b3e4d67a6eddacb966b1370cc1f35e"},
+ {file = "oracledb-1.3.2-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3a285f35edf435a7f60f54074d9925deb63146b4cc0f6998eba75a282c8ce497"},
+ {file = "oracledb-1.3.2-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9e86e5203767e1216ceeda6b7c087b804fa2f44041680d5099900c3cf5724915"},
+ {file = "oracledb-1.3.2-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:043d7d5fdda0ea43734cd4cf67771efddc9307eef10cc83afc19599d39a23d72"},
+ {file = "oracledb-1.3.2-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:08cff689d8117c817458a633859a35c21fc44f39bf56c9c8f62ec02789d0e1e0"},
+ {file = "oracledb-1.3.2-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2279f8550d80ed30315ef84e88b8ec5b533064e8a81ef96265647019ccee8e85"},
+ {file = "oracledb-1.3.2-cp37-cp37m-win32.whl", hash = "sha256:af8d8635453961556b84e37a1dd40c94e18d1b5d3b54020fafce0f3e67472b90"},
+ {file = "oracledb-1.3.2-cp37-cp37m-win_amd64.whl", hash = "sha256:6e8710cdb14c4510f65c11c02f1d97c079d20e0692a431a1af0e964064b7e32c"},
+ {file = "oracledb-1.3.2-cp38-cp38-macosx_11_0_universal2.whl", hash = "sha256:9808e4169e3f330f2ea6dd15376432886d7ed84344f447048d9305a520f31a7a"},
+ {file = "oracledb-1.3.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e0b760c58f73a262af01e093fc9b183de59516b618319fb53b281eedde1dccbc"},
+ {file = "oracledb-1.3.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7ea5a26481c798978210505a1252eec6814cf28005e18a80f935cbcf5b74dabb"},
+ {file = "oracledb-1.3.2-cp38-cp38-win32.whl", hash = "sha256:790798eb1e9b96639c02e91f3b3f00934d722d9de0ac375adcda37b83bba61a6"},
+ {file = "oracledb-1.3.2-cp38-cp38-win_amd64.whl", hash = "sha256:796b900fe85af572ff3d7227372ca3a2edd5f756e538e95ffbfc689df3881696"},
+ {file = "oracledb-1.3.2-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:5f669d7fa78a865d10ad9840a2cb6958b395c572c119ff51489a4a738302727e"},
+ {file = "oracledb-1.3.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d5e20ed24335c59f42003750be3063f3d75f371af35eff47cc9177e9a4193af2"},
+ {file = "oracledb-1.3.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:eb49ebd84d65080703ea8a2b2edde3ac27a6fdc9c491db2dbde0b960f40e3c10"},
+ {file = "oracledb-1.3.2-cp39-cp39-win32.whl", hash = "sha256:022a6631ac779f0d600870fea1f7600a03eabcb4609138e91ac77b8126a9373b"},
+ {file = "oracledb-1.3.2-cp39-cp39-win_amd64.whl", hash = "sha256:4fdeb8b2158d5fb93451d57152f9cfb25f0d876dcbb90305133267196c9efd84"},
+ {file = "oracledb-1.3.2.tar.gz", hash = "sha256:bb3c391c167b5778ddb15a7538a2b36db5c9b88a50c86c61781ca9ff302bb643"},
+]
+
+[package.dependencies]
+cryptography = ">=3.2.1"
+
[[package]]
name = "oscrypto"
version = "1.3.0"
description = "TLS (SSL) sockets, key generation, encryption, decryption, signing, verification and KDFs using the OS crypto libraries. Does not require a compiler, and relies on the OS for patching. Works on Windows, OS X and Linux/BSD."
-category = "main"
optional = false
python-versions = "*"
files = [
@@ -1426,7 +1385,6 @@ asn1crypto = ">=1.5.1"
name = "packaging"
version = "21.3"
description = "Core utilities for Python packages"
-category = "main"
optional = false
python-versions = ">=3.6"
files = [
@@ -1441,7 +1399,6 @@ pyparsing = ">=2.0.2,<3.0.5 || >3.0.5"
name = "parameterized"
version = "0.8.1"
description = "Parameterized testing with any Python test framework"
-category = "dev"
optional = false
python-versions = "*"
files = [
@@ -1456,7 +1413,6 @@ dev = ["jinja2"]
name = "parsedatetime"
version = "2.4"
description = "Parse human-readable date/time text."
-category = "main"
optional = false
python-versions = "*"
files = [
@@ -1471,7 +1427,6 @@ future = "*"
name = "pathspec"
version = "0.10.3"
description = "Utility library for gitignore style pattern matching of file paths."
-category = "main"
optional = false
python-versions = ">=3.7"
files = [
@@ -1483,7 +1438,6 @@ files = [
name = "platformdirs"
version = "2.6.1"
description = "A small Python package for determining appropriate platform-specific dirs, e.g. a \"user data dir\"."
-category = "main"
optional = false
python-versions = ">=3.7"
files = [
@@ -1499,7 +1453,6 @@ test = ["appdirs (==1.4.4)", "covdefaults (>=2.2.2)", "pytest (>=7.2)", "pytest-
name = "prance"
version = "0.22.11.4.0"
description = "Resolving Swagger/OpenAPI 2.0 and 3.0.0 Parser"
-category = "main"
optional = false
python-versions = ">=3.6"
files = [
@@ -1527,7 +1480,6 @@ ssv = ["swagger-spec-validator (>=2.4,<3.0)"]
name = "preql"
version = "0.2.19"
description = "An interpreted relational query language that compiles to SQL"
-category = "main"
optional = false
python-versions = ">=3.6,<4.0"
files = [
@@ -1553,7 +1505,6 @@ server = ["starlette"]
name = "presto-python-client"
version = "0.8.3"
description = "Client for the Presto distributed SQL Engine"
-category = "main"
optional = false
python-versions = "*"
files = [
@@ -1576,7 +1527,6 @@ tests = ["google-auth", "httpretty", "pytest", "pytest-runner", "requests-kerber
name = "prompt-toolkit"
version = "3.0.36"
description = "Library for building powerful interactive command lines in Python"
-category = "main"
optional = false
python-versions = ">=3.6.2"
files = [
@@ -1591,7 +1541,6 @@ wcwidth = "*"
name = "protobuf"
version = "4.22.3"
description = ""
-category = "main"
optional = false
python-versions = ">=3.7"
files = [
@@ -1614,7 +1563,6 @@ files = [
name = "psycopg2"
version = "2.9.5"
description = "psycopg2 - Python-PostgreSQL Database Adapter"
-category = "main"
optional = false
python-versions = ">=3.6"
files = [
@@ -1637,7 +1585,6 @@ files = [
name = "pycparser"
version = "2.21"
description = "C parser in Python"
-category = "main"
optional = false
python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*"
files = [
@@ -1649,7 +1596,6 @@ files = [
name = "pycryptodomex"
version = "3.16.0"
description = "Cryptographic library for Python"
-category = "main"
optional = false
python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*"
files = [
@@ -1685,7 +1631,6 @@ files = [
name = "pydantic"
version = "1.10.9"
description = "Data validation and settings management using python type hints"
-category = "main"
optional = false
python-versions = ">=3.7"
files = [
@@ -1739,7 +1684,6 @@ email = ["email-validator (>=1.0.3)"]
name = "pygments"
version = "2.15.1"
description = "Pygments is a syntax highlighting package written in Python."
-category = "main"
optional = false
python-versions = ">=3.7"
files = [
@@ -1754,7 +1698,6 @@ plugins = ["importlib-metadata"]
name = "PyJWT"
version = "2.6.0"
description = "JSON Web Token implementation in Python"
-category = "main"
optional = false
python-versions = ">=3.7"
files = [
@@ -1772,7 +1715,6 @@ tests = ["coverage[toml] (==5.0.4)", "pytest (>=6.0.0,<7.0.0)"]
name = "pyopenssl"
version = "22.0.0"
description = "Python wrapper module around the OpenSSL library"
-category = "main"
optional = false
python-versions = ">=3.6"
files = [
@@ -1791,7 +1733,6 @@ test = ["flaky", "pretend", "pytest (>=3.0.1)"]
name = "pyparsing"
version = "3.0.9"
description = "pyparsing module - Classes and methods to define and execute parsing grammars"
-category = "main"
optional = false
python-versions = ">=3.6.8"
files = [
@@ -1806,7 +1747,6 @@ diagrams = ["jinja2", "railroad-diagrams"]
name = "pyrsistent"
version = "0.19.3"
description = "Persistent/Functional/Immutable data structures"
-category = "main"
optional = false
python-versions = ">=3.7"
files = [
@@ -1843,7 +1783,6 @@ files = [
name = "pysnooper"
version = "1.1.1"
description = "A poor man's debugger for Python."
-category = "main"
optional = false
python-versions = "*"
files = [
@@ -1858,7 +1797,6 @@ tests = ["pytest"]
name = "python-dateutil"
version = "2.8.2"
description = "Extensions to the standard Python datetime module"
-category = "main"
optional = false
python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,>=2.7"
files = [
@@ -1873,7 +1811,6 @@ six = ">=1.5"
name = "python-slugify"
version = "7.0.0"
description = "A Python slugify application that also handles Unicode"
-category = "main"
optional = false
python-versions = ">=3.7"
files = [
@@ -1891,7 +1828,6 @@ unidecode = ["Unidecode (>=1.1.1)"]
name = "pytimeparse"
version = "1.1.8"
description = "Time expression parser"
-category = "main"
optional = false
python-versions = "*"
files = [
@@ -1903,7 +1839,6 @@ files = [
name = "pytz"
version = "2022.6"
description = "World timezone definitions, modern and historical"
-category = "main"
optional = false
python-versions = "*"
files = [
@@ -1915,7 +1850,6 @@ files = [
name = "pytz-deprecation-shim"
version = "0.1.0.post0"
description = "Shims to make deprecation of pytz easier"
-category = "main"
optional = false
python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,>=2.7"
files = [
@@ -1931,7 +1865,6 @@ tzdata = {version = "*", markers = "python_version >= \"3.6\""}
name = "pywin32-ctypes"
version = "0.2.0"
description = ""
-category = "main"
optional = false
python-versions = "*"
files = [
@@ -1943,7 +1876,6 @@ files = [
name = "pyyaml"
version = "6.0"
description = "YAML parser and emitter for Python"
-category = "main"
optional = false
python-versions = ">=3.6"
files = [
@@ -1993,7 +1925,6 @@ files = [
name = "requests"
version = "2.28.1"
description = "Python HTTP for Humans."
-category = "main"
optional = false
python-versions = ">=3.7, <4"
files = [
@@ -2015,7 +1946,6 @@ use-chardet-on-py3 = ["chardet (>=3.0.2,<6)"]
name = "rich"
version = "12.0.1"
description = "Render rich text, tables, progress bars, syntax highlighting, markdown and more to the terminal"
-category = "main"
optional = false
python-versions = ">=3.6.2,<4.0.0"
files = [
@@ -2035,7 +1965,6 @@ jupyter = ["ipywidgets (>=7.5.1,<8.0.0)"]
name = "ruamel-yaml"
version = "0.17.21"
description = "ruamel.yaml is a YAML parser/emitter that supports roundtrip preservation of comments, seq/map flow style, and map key order"
-category = "main"
optional = false
python-versions = ">=3"
files = [
@@ -2054,7 +1983,6 @@ jinja2 = ["ruamel.yaml.jinja2 (>=0.2)"]
name = "ruamel-yaml-clib"
version = "0.2.7"
description = "C version of reader, parser and emitter for ruamel.yaml derived from libyaml"
-category = "main"
optional = false
python-versions = ">=3.5"
files = [
@@ -2065,7 +1993,8 @@ files = [
{file = "ruamel.yaml.clib-0.2.7-cp310-cp310-win32.whl", hash = "sha256:763d65baa3b952479c4e972669f679fe490eee058d5aa85da483ebae2009d231"},
{file = "ruamel.yaml.clib-0.2.7-cp310-cp310-win_amd64.whl", hash = "sha256:d000f258cf42fec2b1bbf2863c61d7b8918d31ffee905da62dede869254d3b8a"},
{file = "ruamel.yaml.clib-0.2.7-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:045e0626baf1c52e5527bd5db361bc83180faaba2ff586e763d3d5982a876a9e"},
- {file = "ruamel.yaml.clib-0.2.7-cp311-cp311-macosx_12_6_arm64.whl", hash = "sha256:721bc4ba4525f53f6a611ec0967bdcee61b31df5a56801281027a3a6d1c2daf5"},
+ {file = "ruamel.yaml.clib-0.2.7-cp311-cp311-macosx_13_0_arm64.whl", hash = "sha256:1a6391a7cabb7641c32517539ca42cf84b87b667bad38b78d4d42dd23e957c81"},
+ {file = "ruamel.yaml.clib-0.2.7-cp311-cp311-manylinux2014_aarch64.whl", hash = "sha256:9c7617df90c1365638916b98cdd9be833d31d337dbcd722485597b43c4a215bf"},
{file = "ruamel.yaml.clib-0.2.7-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:41d0f1fa4c6830176eef5b276af04c89320ea616655d01327d5ce65e50575c94"},
{file = "ruamel.yaml.clib-0.2.7-cp311-cp311-win32.whl", hash = "sha256:f6d3d39611ac2e4f62c3128a9eed45f19a6608670c5a2f4f07f24e8de3441d38"},
{file = "ruamel.yaml.clib-0.2.7-cp311-cp311-win_amd64.whl", hash = "sha256:da538167284de58a52109a9b89b8f6a53ff8437dd6dc26d33b57bf6699153122"},
@@ -2100,7 +2029,6 @@ files = [
name = "runtype"
version = "0.2.7"
description = "Type dispatch and validation for run-time Python"
-category = "main"
optional = false
python-versions = ">=3.6,<4.0"
files = [
@@ -2112,7 +2040,6 @@ files = [
name = "secretstorage"
version = "3.3.3"
description = "Python bindings to FreeDesktop.org Secret Service API"
-category = "main"
optional = false
python-versions = ">=3.6"
files = [
@@ -2128,7 +2055,6 @@ jeepney = ">=0.6"
name = "semver"
version = "2.13.0"
description = "Python helper for Semantic Versioning (http://semver.org/)"
-category = "main"
optional = false
python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*"
files = [
@@ -2140,7 +2066,6 @@ files = [
name = "setuptools"
version = "65.6.3"
description = "Easily download, build, install, upgrade, and uninstall Python packages"
-category = "main"
optional = false
python-versions = ">=3.7"
files = [
@@ -2157,7 +2082,6 @@ testing-integration = ["build[virtualenv]", "filelock (>=3.4.0)", "jaraco.envs (
name = "six"
version = "1.16.0"
description = "Python 2 and 3 compatibility utilities"
-category = "main"
optional = false
python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*"
files = [
@@ -2169,7 +2093,6 @@ files = [
name = "snowflake-connector-python"
version = "3.0.4"
description = "Snowflake Connector for Python"
-category = "main"
optional = false
python-versions = ">=3.7"
files = [
@@ -2229,7 +2152,6 @@ secure-local-storage = ["keyring (!=16.1.0,<24.0.0)"]
name = "sortedcontainers"
version = "2.4.0"
description = "Sorted Containers -- Sorted List, Sorted Dict, Sorted Set"
-category = "main"
optional = false
python-versions = "*"
files = [
@@ -2241,7 +2163,6 @@ files = [
name = "sqlparse"
version = "0.4.3"
description = "A non-validating SQL parser."
-category = "main"
optional = false
python-versions = ">=3.5"
files = [
@@ -2253,7 +2174,6 @@ files = [
name = "tabulate"
version = "0.9.0"
description = "Pretty-print tabular data"
-category = "main"
optional = false
python-versions = ">=3.7"
files = [
@@ -2268,7 +2188,6 @@ widechars = ["wcwidth"]
name = "text-unidecode"
version = "1.3"
description = "The most basic Text::Unidecode port"
-category = "main"
optional = false
python-versions = "*"
files = [
@@ -2280,7 +2199,6 @@ files = [
name = "toml"
version = "0.10.2"
description = "Python Library for Tom's Obvious, Minimal Language"
-category = "main"
optional = false
python-versions = ">=2.6, !=3.0.*, !=3.1.*, !=3.2.*"
files = [
@@ -2292,7 +2210,6 @@ files = [
name = "tomli"
version = "2.0.1"
description = "A lil' TOML parser"
-category = "main"
optional = false
python-versions = ">=3.7"
files = [
@@ -2304,7 +2221,6 @@ files = [
name = "trino"
version = "0.314.0"
description = "Client for the Trino distributed SQL Engine"
-category = "main"
optional = false
python-versions = ">=3.7"
files = [
@@ -2327,7 +2243,6 @@ tests = ["click", "httpretty (<1.1)", "pytest", "pytest-runner", "requests-kerbe
name = "typed-ast"
version = "1.5.4"
description = "a fork of Python 2 and 3 ast modules with type comment support"
-category = "main"
optional = false
python-versions = ">=3.6"
files = [
@@ -2361,7 +2276,6 @@ files = [
name = "typing-extensions"
version = "4.6.3"
description = "Backported and Experimental Type Hints for Python 3.7+"
-category = "main"
optional = false
python-versions = ">=3.7"
files = [
@@ -2373,7 +2287,6 @@ files = [
name = "tzdata"
version = "2022.7"
description = "Provider of IANA time zone data"
-category = "main"
optional = false
python-versions = ">=2"
files = [
@@ -2385,7 +2298,6 @@ files = [
name = "tzlocal"
version = "4.2"
description = "tzinfo object for the local timezone"
-category = "main"
optional = false
python-versions = ">=3.6"
files = [
@@ -2406,7 +2318,6 @@ test = ["pytest (>=4.3)", "pytest-mock (>=3.3)"]
name = "unittest-parallel"
version = "1.5.3"
description = "Parallel unit test runner with coverage support"
-category = "dev"
optional = false
python-versions = "*"
files = [
@@ -2421,7 +2332,6 @@ coverage = ">=5.1"
name = "urllib3"
version = "1.26.13"
description = "HTTP library with thread-safe connection pooling, file post, and more."
-category = "main"
optional = false
python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, !=3.5.*"
files = [
@@ -2438,7 +2348,6 @@ socks = ["PySocks (>=1.5.6,!=1.5.7,<2.0)"]
name = "vertica-python"
version = "1.3.2"
description = "Official native Python client for the Vertica database."
-category = "main"
optional = false
python-versions = ">=3.7"
files = [
@@ -2454,7 +2363,6 @@ six = ">=1.10.0"
name = "wcwidth"
version = "0.2.5"
description = "Measures the displayed width of unicode strings in a terminal"
-category = "main"
optional = false
python-versions = "*"
files = [
@@ -2466,7 +2374,6 @@ files = [
name = "werkzeug"
version = "2.1.2"
description = "The comprehensive WSGI web application library."
-category = "main"
optional = false
python-versions = ">=3.7"
files = [
@@ -2481,7 +2388,6 @@ watchdog = ["watchdog"]
name = "zipp"
version = "3.11.0"
description = "Backport of pathlib-compatible object wrapper for zip files"
-category = "main"
optional = false
python-versions = ">=3.7"
files = [
@@ -2497,7 +2403,7 @@ testing = ["flake8 (<5)", "func-timeout", "jaraco.functools", "jaraco.itertools"
clickhouse = ["clickhouse-driver"]
duckdb = ["duckdb"]
mysql = ["mysql-connector-python"]
-oracle = ["cx_Oracle"]
+oracle = ["oracledb"]
postgresql = ["psycopg2"]
preql = ["preql"]
presto = ["presto-python-client"]
@@ -2509,4 +2415,4 @@ vertica = ["vertica-python"]
[metadata]
lock-version = "2.0"
python-versions = "^3.7.2"
-content-hash = "bbcfa3e77ed0a3044444f7e67dd0a9cf98047f2a352536d1308aec813f08dd0a"
+content-hash = "8e437f479e7e82cdf74aba56e0d4dbc0a69d03de11cd38bef98e3bc9b6346020"
diff --git a/pyproject.toml b/pyproject.toml
index 3841676f..03ba9a17 100755
--- a/pyproject.toml
+++ b/pyproject.toml
@@ -42,9 +42,9 @@ dbt-core = {version="^1.0.0"}
keyring = "*"
tabulate = "^0.9.0"
preql = {version="^0.2.19", optional=true}
-cx_Oracle = {version="*", optional=true}
vertica-python = {version="*", optional=true}
urllib3 = "<2"
+oracledb = {version = "*", extras = ["oracle"]}
[tool.poetry.dev-dependencies]
parameterized = "*"
@@ -72,7 +72,7 @@ postgresql = ["psycopg2"]
redshift = ["psycopg2"]
snowflake = ["snowflake-connector-python", "cryptography"]
presto = ["presto-python-client"]
-oracle = ["cx_Oracle"]
+oracle = ["oracledb"]
# databricks = ["databricks-sql-connector"]
trino = ["trino"]
clickhouse = ["clickhouse-driver"]