diff --git a/conda-environment.yml b/conda-environment.yml index 66f401673..55b9edf87 100644 --- a/conda-environment.yml +++ b/conda-environment.yml @@ -22,7 +22,7 @@ dependencies: - dask - pyproj >=2.5 - shapely >=2.0 - - jsonschema + - jsonschema <4.18 - lark - netcdf4 - numpy diff --git a/datacube/drivers/postgis/_core.py b/datacube/drivers/postgis/_core.py index d7a8c81e8..9a6dfa864 100644 --- a/datacube/drivers/postgis/_core.py +++ b/datacube/drivers/postgis/_core.py @@ -11,6 +11,7 @@ from sqlalchemy import MetaData, inspect, text from sqlalchemy.engine import Engine from sqlalchemy.schema import CreateSchema +from sqlalchemy.sql.ddl import DropSchema from datacube.drivers.postgis.sql import (INSTALL_TRIGGER_SQL_TEMPLATE, SCHEMA_NAME, TYPES_INIT_SQL, @@ -220,7 +221,9 @@ def has_schema(engine): def drop_db(connection): - connection.execute(text(f'drop schema if exists {SCHEMA_NAME} cascade')) + # if_exists parameter seems to not be working in SQLA1.4? + if has_schema(connection.engine): + connection.execute(DropSchema(SCHEMA_NAME, cascade=True, if_exists=True)) def to_pg_role(role): diff --git a/datacube/drivers/postgres/_core.py b/datacube/drivers/postgres/_core.py index 7971019b6..68ffc799c 100644 --- a/datacube/drivers/postgres/_core.py +++ b/datacube/drivers/postgres/_core.py @@ -17,7 +17,7 @@ pg_column_exists) from sqlalchemy import MetaData, inspect, text from sqlalchemy.engine import Engine -from sqlalchemy.schema import CreateSchema +from sqlalchemy.schema import CreateSchema, DropSchema USER_ROLES = ('agdc_user', 'agdc_ingest', 'agdc_manage', 'agdc_admin') @@ -233,7 +233,9 @@ def has_schema(engine): def drop_db(connection): - connection.execute(text(f'drop schema if exists {SCHEMA_NAME} cascade;')) + # if_exists parameter seems to not be working in SQLA1.4? + if has_schema(connection.engine): + connection.execute(DropSchema(SCHEMA_NAME, cascade=True, if_exists=True)) def to_pg_role(role): diff --git a/docker/constraints.in b/docker/constraints.in index d10366cda..fc561ce98 100644 --- a/docker/constraints.in +++ b/docker/constraints.in @@ -14,7 +14,7 @@ dask>=2021.10.1 distributed>=2021.10.0 fiona geoalchemy2 -jsonschema +jsonschema<4.18 # Was lark-parser>=0.6.7 lark matplotlib diff --git a/docs/about/whats_new.rst b/docs/about/whats_new.rst index 4c09aa578..4007cfbd8 100644 --- a/docs/about/whats_new.rst +++ b/docs/about/whats_new.rst @@ -27,6 +27,7 @@ v1.8.next - Improve error message for mismatch between dataset metadata and product signature (:pull:`1472`) - Mark ``--confirm-ignore-lineage``, ``--auto-add-lineage``, and ``--verify-lineage`` as deprecated or to be deprecated (:pull:`1472`) - Default delta values in ``archive_less_mature`` and ``find_less_mature`` (:pull:`1472`) +- Fix SQLAlchemy calls and pin jsonschema version to suppress deprecation warnings (:pull:`1476`) v1.8.15 (11th July 2023) ======================== diff --git a/setup.py b/setup.py index 9ed64dc39..b50617711 100755 --- a/setup.py +++ b/setup.py @@ -98,7 +98,7 @@ 'cloudpickle>=0.4', 'dask[array]', 'distributed', - 'jsonschema', + 'jsonschema<4.18', 'numpy', 'psycopg2', 'lark', @@ -114,6 +114,7 @@ 'packaging', 'odc-geo', 'deprecat', + 'importlib_metadata>3.5;python_version<"3.10"', ], extras_require=extras_require, tests_require=tests_require, diff --git a/wordlist.txt b/wordlist.txt index 4cd2ffb99..cdc5f2940 100644 --- a/wordlist.txt +++ b/wordlist.txt @@ -223,6 +223,7 @@ jfEZEOkxRXgNsAsHEC jpg JSON jsonify +jsonschema Jupyter jupyter JupyterLab