From 30bd116e7fd577d4efbab7b2452ca285e2846c43 Mon Sep 17 00:00:00 2001 From: Sergey Vasilyev Date: Tue, 15 Aug 2023 11:03:07 +0200 Subject: [PATCH 1/2] Switch from `cx_Oracle` to `oracledb` `cx_Oracle` is officially deprecated since 2021 (2 years go) and no new released were made. The new official library is `oracledb`. This warning is the first sentence in cx_Oracle's docs. New projects, such as data-diff, should use the new library. Luckily, `oracledb` is mostly a drop-in replacement for `cx_Oracle`, so no code changes are needed. Besides, `oracledb` provides 2 modes: the "thin" mode and the "thick" mode. The latter (`"thick") one requires binary libraries, the former one ("thin") works in pure Python. This simplifies the Oracle usage for users. --- README.md | 12 +- data_diff/sqeleton/databases/oracle.py | 4 +- poetry.lock | 181 ++++++------------------- pyproject.toml | 4 +- 4 files changed, 53 insertions(+), 148 deletions(-) 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

dbt

- +
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 84aac426..3d514e93 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.0" 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 = [ @@ -2100,7 +2028,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 +2039,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 +2054,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 +2065,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 +2081,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 +2092,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 +2151,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 +2162,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 +2173,6 @@ files = [ name = "tabulate" version = "0.9.0" description = "Pretty-print tabular data" -category = "main" optional = false python-versions = ">=3.7" files = [ @@ -2268,7 +2187,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 +2198,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 +2209,6 @@ files = [ name = "tomli" version = "2.0.1" description = "A lil' TOML parser" -category = "main" optional = false python-versions = ">=3.7" files = [ @@ -2304,7 +2220,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 +2242,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 +2275,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 +2286,6 @@ files = [ name = "tzdata" version = "2022.7" description = "Provider of IANA time zone data" -category = "main" optional = false python-versions = ">=2" files = [ @@ -2385,7 +2297,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 +2317,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 +2331,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 +2347,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 +2362,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 +2373,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 +2387,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 +2402,7 @@ testing = ["flake8 (<5)", "func-timeout", "jaraco.functools", "jaraco.itertools" clickhouse = ["clickhouse-driver"] duckdb = ["duckdb"] mysql = ["mysql-connector-python"] -oracle = ["cx_Oracle"] +oracle = [] postgresql = ["psycopg2"] preql = ["preql"] presto = ["presto-python-client"] @@ -2509,4 +2414,4 @@ vertica = ["vertica-python"] [metadata] lock-version = "2.0" python-versions = "^3.7.2" -content-hash = "8941299115381d6f0837432b40cf102964368b88a700f547439587a498241951" +content-hash = "81425e15d28995e9e199d99ad1b8e39dc3ca66265eb085835108afc5aed7daf0" diff --git a/pyproject.toml b/pyproject.toml index 8483594b..7c1e1448 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"] From ca0089c6e0eb782f114aff7e8939eab0170dc169 Mon Sep 17 00:00:00 2001 From: Dan Date: Tue, 22 Aug 2023 15:41:55 -0600 Subject: [PATCH 2/2] update lock post merge --- poetry.lock | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/poetry.lock b/poetry.lock index 29a5498a..0c728f8c 100644 --- a/poetry.lock +++ b/poetry.lock @@ -1993,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"}, @@ -2402,7 +2403,7 @@ testing = ["flake8 (<5)", "func-timeout", "jaraco.functools", "jaraco.itertools" clickhouse = ["clickhouse-driver"] duckdb = ["duckdb"] mysql = ["mysql-connector-python"] -oracle = [] +oracle = ["oracledb"] postgresql = ["psycopg2"] preql = ["preql"] presto = ["presto-python-client"] @@ -2414,4 +2415,4 @@ vertica = ["vertica-python"] [metadata] lock-version = "2.0" python-versions = "^3.7.2" -content-hash = "81425e15d28995e9e199d99ad1b8e39dc3ca66265eb085835108afc5aed7daf0" +content-hash = "8e437f479e7e82cdf74aba56e0d4dbc0a69d03de11cd38bef98e3bc9b6346020"