From 93c6f45b6f0b7da2079d9ad93a3b18622c1b6aeb Mon Sep 17 00:00:00 2001 From: kotolex Date: Thu, 12 Dec 2024 11:22:02 +0500 Subject: [PATCH] support for SDB 2.1.3 --- README.md | 4 ++-- ReleaseNotes.md | 3 +++ pyproject.toml | 2 +- src/surrealist/__init__.py | 4 ++-- src/surrealist/clients/http_client.py | 6 +++--- src/surrealist/clients/ws_client.py | 9 +++++---- src/surrealist/connections/connection.py | 9 +++++---- src/surrealist/connections/http_connection.py | 7 ++++--- src/surrealist/connections/pool.py | 2 +- src/surrealist/connections/ws_connection.py | 9 +++++---- src/surrealist/ql/database.py | 17 ++++++++++------- src/surrealist/ql/statements/alter.py | 3 ++- src/surrealist/ql/statements/define.py | 7 ++++--- src/surrealist/ql/statements/define_analyzer.py | 2 +- src/surrealist/ql/statements/define_config.py | 2 +- .../ql/statements/define_index_statements.py | 1 - src/surrealist/ql/statements/define_user.py | 3 ++- src/surrealist/ql/statements/delete.py | 1 + src/surrealist/ql/statements/insert.py | 2 +- src/surrealist/ql/statements/live.py | 2 +- src/surrealist/ql/statements/live_statements.py | 2 +- src/surrealist/ql/statements/permissions.py | 2 +- src/surrealist/ql/statements/rebuild_index.py | 1 + src/surrealist/ql/statements/select.py | 5 +++-- .../ql/statements/select_statements.py | 3 ++- src/surrealist/ql/statements/show.py | 1 + .../ql/statements/simple_statements.py | 1 + src/surrealist/ql/statements/statement.py | 2 +- src/surrealist/ql/statements/utils.py | 2 +- src/surrealist/ql/table.py | 2 +- src/surrealist/result.py | 6 +++--- src/surrealist/surreal.py | 7 ++++--- src/surrealist/utils.py | 2 +- 33 files changed, 75 insertions(+), 56 deletions(-) diff --git a/README.md b/README.md index b8a79a3..84283d8 100644 --- a/README.md +++ b/README.md @@ -11,7 +11,7 @@

-Surrealist is a Python tool to work with awesome [SurrealDB](https://docs.surrealdb.com/docs/intro) (support for latest version 2.1.2) +Surrealist is a Python tool to work with awesome [SurrealDB](https://docs.surrealdb.com/docs/intro) (support for latest version 2.1.3) It is **synchronous** and **unofficial**, so if you need async AND/OR official client, go [here](https://github.com/surrealdb/surrealdb.py) @@ -22,7 +22,7 @@ Works and tested on Ubuntu, macOS, Windows 10, can use python 3.8+ (including py * only one small dependency (websocket-client), no need to pull a lot of libraries to your project * fully documented * well tested (on the latest Ubuntu, macOS and Windows 10) - * fully compatible with the latest version of SurrealDB (2.1.2), including [live queries](https://surrealdb.com/products/lq) and [change feeds](https://surrealdb.com/products/cf) + * fully compatible with the latest version of SurrealDB (2.1.3), including [live queries](https://surrealdb.com/products/lq) and [change feeds](https://surrealdb.com/products/cf) * debug mode to see all that goes in and out if you need (using standard logging) * iterator to handle big select queries * QL-builder to explore, generate and use SurrealDB queries (explain, transaction etc.) diff --git a/ReleaseNotes.md b/ReleaseNotes.md index d958869..a028f3e 100644 --- a/ReleaseNotes.md +++ b/ReleaseNotes.md @@ -1,4 +1,7 @@ ## Release Notes ## +**Version 1.0.8 (compatible with SurrealDB version 2.1.3):** +- minor fixes + **Version 1.0.7 (compatible with SurrealDB version 2.1.2):** - fix tests and examples diff --git a/pyproject.toml b/pyproject.toml index 20496a0..a971eb9 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta" [project] name = "surrealist" -version = "1.0.7" +version = "1.0.8" description = "Python client for SurrealDB, latest SurrealDB version compatible, all features supported" readme = "README.md" authors = [{ name = "kotolex", email = "farofwell@gmail.com" }] diff --git a/src/surrealist/__init__.py b/src/surrealist/__init__.py index a36285d..5923e71 100644 --- a/src/surrealist/__init__.py +++ b/src/surrealist/__init__.py @@ -1,11 +1,11 @@ -from .connections import WebSocketConnection, HttpConnection, Connection +from .connections import Connection, HttpConnection, WebSocketConnection from .enums import Algorithm, AutoOrNone from .errors import * from .ql import Database, DatabaseConnectionsPool, Table, Where from .record_id import RecordId from .result import SurrealResult from .surreal import Surreal -from .utils import get_uuid, to_surreal_datetime_str, to_datetime, LOG_FORMAT +from .utils import LOG_FORMAT, get_uuid, to_datetime, to_surreal_datetime_str __all__ = ("Surreal", "SurrealResult", "WebSocketConnection", "HttpConnection", "PySurrealError", "HttpConnectionError", "HttpClientError", "SurrealConnectionError", "WebSocketConnectionError", "WebSocketConnectionClosedError", diff --git a/src/surrealist/clients/http_client.py b/src/surrealist/clients/http_client.py index f95c6ff..d9bdac3 100644 --- a/src/surrealist/clients/http_client.py +++ b/src/surrealist/clients/http_client.py @@ -3,11 +3,11 @@ import urllib.request from http.client import HTTPResponse, RemoteDisconnected from logging import getLogger -from typing import Optional, Tuple, Dict, Union, BinaryIO -from urllib.error import URLError, HTTPError +from typing import BinaryIO, Dict, Optional, Tuple, Union +from urllib.error import HTTPError, URLError from surrealist.errors import HttpClientError, TooManyNestedLevelsError -from surrealist.utils import ENCODING, DEFAULT_TIMEOUT, mask_pass, NS, DB, AC +from surrealist.utils import AC, DB, DEFAULT_TIMEOUT, ENCODING, NS, mask_pass logger = getLogger("surrealist.clients.http") diff --git a/src/surrealist/clients/ws_client.py b/src/surrealist/clients/ws_client.py index 4bdc603..9aa1f70 100644 --- a/src/surrealist/clients/ws_client.py +++ b/src/surrealist/clients/ws_client.py @@ -3,13 +3,14 @@ import time from json import JSONDecodeError from logging import getLogger -from queue import Queue, Empty -from typing import Dict, Callable, Optional +from queue import Empty, Queue +from typing import Callable, Dict, Optional import websocket -from surrealist.errors import WebSocketConnectionClosedError, TooManyNestedLevelsError -from surrealist.result import to_result, SurrealResult +from surrealist.errors import (TooManyNestedLevelsError, + WebSocketConnectionClosedError) +from surrealist.result import SurrealResult, to_result from surrealist.utils import DEFAULT_TIMEOUT, get_uuid, mask_pass logger = getLogger("surrealist.clients.websocket") diff --git a/src/surrealist/connections/connection.py b/src/surrealist/connections/connection.py index a6f132c..55f4164 100644 --- a/src/surrealist/connections/connection.py +++ b/src/surrealist/connections/connection.py @@ -1,14 +1,15 @@ from abc import ABC, abstractmethod from functools import wraps from logging import getLogger -from typing import Tuple, Dict, Optional, Union, List, Callable, Any +from typing import Any, Callable, Dict, List, Optional, Tuple, Union from surrealist.enums import Transport -from surrealist.errors import OperationOnClosedConnectionError, WrongParameterError +from surrealist.errors import (OperationOnClosedConnectionError, + WrongParameterError) from surrealist.record_id import RecordId from surrealist.result import SurrealResult -from surrealist.utils import (DEFAULT_TIMEOUT, NS, DB, AC, mask_pass, clean_dates, StrOrRecord, - get_table_or_record_id) +from surrealist.utils import (AC, DB, DEFAULT_TIMEOUT, NS, StrOrRecord, + clean_dates, get_table_or_record_id, mask_pass) logger = getLogger("surrealist.connection") LINK = "https://github.com/kotolex/surrealist?tab=readme-ov-file#recursion-and-json-in-python" diff --git a/src/surrealist/connections/http_connection.py b/src/surrealist/connections/http_connection.py index 0365cd8..c38b7aa 100644 --- a/src/surrealist/connections/http_connection.py +++ b/src/surrealist/connections/http_connection.py @@ -1,13 +1,14 @@ from logging import getLogger from pathlib import Path -from typing import Tuple, Dict, Optional, Union, Any, BinaryIO +from typing import Any, BinaryIO, Dict, Optional, Tuple, Union from surrealist.clients.http_client import HttpClient from surrealist.connections.connection import Connection, connected from surrealist.enums import Transport -from surrealist.errors import (CompatibilityError, HttpConnectionError, HttpClientError, SurrealConnectionError) +from surrealist.errors import (CompatibilityError, HttpClientError, + HttpConnectionError, SurrealConnectionError) from surrealist.result import SurrealResult, to_result -from surrealist.utils import (ENCODING, DEFAULT_TIMEOUT, HTTP_OK, NS, DB, AC) +from surrealist.utils import AC, DB, DEFAULT_TIMEOUT, ENCODING, HTTP_OK, NS logger = getLogger("surrealist.connections.http") diff --git a/src/surrealist/connections/pool.py b/src/surrealist/connections/pool.py index 8d9b1f2..db7401a 100644 --- a/src/surrealist/connections/pool.py +++ b/src/surrealist/connections/pool.py @@ -3,7 +3,7 @@ from os import cpu_count from queue import Queue from threading import Thread -from typing import Optional, Tuple, Dict, Callable, Any +from typing import Any, Callable, Dict, Optional, Tuple from surrealist.connections.connection import Connection from surrealist.enums import Transport diff --git a/src/surrealist/connections/ws_connection.py b/src/surrealist/connections/ws_connection.py index 49905b3..f0993e3 100644 --- a/src/surrealist/connections/ws_connection.py +++ b/src/surrealist/connections/ws_connection.py @@ -1,15 +1,16 @@ import urllib.parse from logging import getLogger from pathlib import Path -from typing import Optional, Tuple, Dict, Union, Callable, Any +from typing import Any, Callable, Dict, Optional, Tuple, Union from surrealist.clients.ws_client import WebSocketClient from surrealist.connections.connection import Connection, connected from surrealist.enums import Transport -from surrealist.errors import (SurrealConnectionError, WebSocketConnectionError, WebSocketConnectionClosedError, - CompatibilityError) +from surrealist.errors import (CompatibilityError, SurrealConnectionError, + WebSocketConnectionClosedError, + WebSocketConnectionError) from surrealist.result import SurrealResult -from surrealist.utils import DEFAULT_TIMEOUT, NS, DB, AC +from surrealist.utils import AC, DB, DEFAULT_TIMEOUT, NS logger = getLogger("surrealist.connections.websocket") diff --git a/src/surrealist/ql/database.py b/src/surrealist/ql/database.py index e9fc836..a35a1d6 100644 --- a/src/surrealist/ql/database.py +++ b/src/surrealist/ql/database.py @@ -1,15 +1,18 @@ import logging import warnings -from typing import Optional, Tuple, List, Dict, Union, Any, Callable +from typing import Any, Callable, Dict, List, Optional, Tuple, Union from surrealist.connections.connection import Connection -from surrealist.enums import AutoOrNone, Algorithm +from surrealist.enums import Algorithm, AutoOrNone from surrealist.errors import SurrealConnectionError -from surrealist.ql.statements import Select, Remove, Live +from surrealist.ql.statements import Live, Remove, Select from surrealist.ql.statements.alter import Alter -from surrealist.ql.statements.define import (DefineEvent, DefineParam, DefineScope, - DefineIndex, DefineToken, DefineTable, DefineField) -from surrealist.ql.statements.define_access import DefineAccessJwt, DefineAccessRecord +from surrealist.ql.statements.define import (DefineEvent, DefineField, + DefineIndex, DefineParam, + DefineScope, DefineTable, + DefineToken) +from surrealist.ql.statements.define_access import (DefineAccessJwt, + DefineAccessRecord) from surrealist.ql.statements.define_analyzer import DefineAnalyzer from surrealist.ql.statements.define_config import DefineConfig from surrealist.ql.statements.define_user import DefineUser @@ -21,7 +24,7 @@ from surrealist.ql.table import Table from surrealist.result import SurrealResult from surrealist.surreal import Surreal -from surrealist.utils import DEFAULT_TIMEOUT, NS, DB, AC +from surrealist.utils import AC, DB, DEFAULT_TIMEOUT, NS logger = logging.getLogger("surrealist.databaseQL") diff --git a/src/surrealist/ql/statements/alter.py b/src/surrealist/ql/statements/alter.py index 3780dc3..e182354 100644 --- a/src/surrealist/ql/statements/alter.py +++ b/src/surrealist/ql/statements/alter.py @@ -2,7 +2,8 @@ from surrealist.connections import Connection from surrealist.utils import OK -from .permissions import CanUsePermissions, CanUseComment + +from .permissions import CanUseComment, CanUsePermissions from .statement import Statement diff --git a/src/surrealist/ql/statements/define.py b/src/surrealist/ql/statements/define.py index 955f23c..7ec8d52 100644 --- a/src/surrealist/ql/statements/define.py +++ b/src/surrealist/ql/statements/define.py @@ -1,12 +1,13 @@ import json from abc import ABC -from typing import List, Union, Any, Optional, Tuple +from typing import Any, List, Optional, Tuple, Union from surrealist.connections import Connection from surrealist.enums import Algorithm -from surrealist.ql.statements.define_index_statements import CanUseIndexTypes, CanUseConcurrently +from surrealist.ql.statements.define_index_statements import ( + CanUseConcurrently, CanUseIndexTypes) from surrealist.ql.statements.permissions import CanUsePermissions -from surrealist.ql.statements.statement import Statement, FinishedStatement +from surrealist.ql.statements.statement import FinishedStatement, Statement from surrealist.utils import OK diff --git a/src/surrealist/ql/statements/define_analyzer.py b/src/surrealist/ql/statements/define_analyzer.py index 581f15b..af3c3c5 100644 --- a/src/surrealist/ql/statements/define_analyzer.py +++ b/src/surrealist/ql/statements/define_analyzer.py @@ -1,7 +1,7 @@ from typing import List -from .define import Define, Connection from ...utils import OK +from .define import Connection, Define ALLOWED_LANGUAGES = ('Arabic', 'Danish', 'Dutch', 'English', 'French', 'German', 'Greek', 'Hungarian', 'Italian', 'Norwegian', 'Portuguese', 'Romanian', 'Russian', 'Spanish', 'Swedish', diff --git a/src/surrealist/ql/statements/define_config.py b/src/surrealist/ql/statements/define_config.py index d50af61..0048e46 100644 --- a/src/surrealist/ql/statements/define_config.py +++ b/src/surrealist/ql/statements/define_config.py @@ -1,4 +1,4 @@ -from typing import Optional, List +from typing import List, Optional from surrealist.connections.connection import Connection from surrealist.enums import AutoOrNone diff --git a/src/surrealist/ql/statements/define_index_statements.py b/src/surrealist/ql/statements/define_index_statements.py index e65c6f7..048f651 100644 --- a/src/surrealist/ql/statements/define_index_statements.py +++ b/src/surrealist/ql/statements/define_index_statements.py @@ -3,7 +3,6 @@ from surrealist.ql.statements.common_statements import CanUseComment from surrealist.ql.statements.statement import FinishedStatement, Statement - # This module contains classes with duplicate code. This is made specifically for IDE hints class Concurrently(FinishedStatement): diff --git a/src/surrealist/ql/statements/define_user.py b/src/surrealist/ql/statements/define_user.py index e207788..9de058f 100644 --- a/src/surrealist/ql/statements/define_user.py +++ b/src/surrealist/ql/statements/define_user.py @@ -1,7 +1,8 @@ -from typing import List, Dict, Optional +from typing import Dict, List, Optional from surrealist.connections.connection import Connection from surrealist.utils import OK + from .define import Define diff --git a/src/surrealist/ql/statements/delete.py b/src/surrealist/ql/statements/delete.py index 37257a6..a2af0c1 100644 --- a/src/surrealist/ql/statements/delete.py +++ b/src/surrealist/ql/statements/delete.py @@ -2,6 +2,7 @@ from surrealist.connections import Connection from surrealist.utils import OK, StrOrRecord, get_table_or_record_id + from .common_statements import CanUseWhere from .statement import Statement diff --git a/src/surrealist/ql/statements/insert.py b/src/surrealist/ql/statements/insert.py index b65e176..61ebe28 100644 --- a/src/surrealist/ql/statements/insert.py +++ b/src/surrealist/ql/statements/insert.py @@ -1,4 +1,4 @@ -from typing import List, Dict +from typing import Dict, List from surrealist.connections import Connection from surrealist.ql.statements.insert_statements import InsertUseDuplicate diff --git a/src/surrealist/ql/statements/live.py b/src/surrealist/ql/statements/live.py index 7c94a50..9115fc6 100644 --- a/src/surrealist/ql/statements/live.py +++ b/src/surrealist/ql/statements/live.py @@ -1,4 +1,4 @@ -from typing import List, Callable, Optional +from typing import Callable, List, Optional from surrealist.connections import Connection from surrealist.ql.statements.live_statements import LiveUseWhere diff --git a/src/surrealist/ql/statements/live_statements.py b/src/surrealist/ql/statements/live_statements.py index 5ec4774..c3e881b 100644 --- a/src/surrealist/ql/statements/live_statements.py +++ b/src/surrealist/ql/statements/live_statements.py @@ -1,5 +1,5 @@ -from surrealist.result import SurrealResult from surrealist.ql.statements.statement import FinishedStatement, Statement +from surrealist.result import SurrealResult class Fetch(FinishedStatement): diff --git a/src/surrealist/ql/statements/permissions.py b/src/surrealist/ql/statements/permissions.py index 72d0fbc..5c916b4 100644 --- a/src/surrealist/ql/statements/permissions.py +++ b/src/surrealist/ql/statements/permissions.py @@ -1,7 +1,7 @@ from typing import Optional, Union -from surrealist.ql.statements.simple_statements import Where from surrealist.ql.statements.common_statements import CanUseComment +from surrealist.ql.statements.simple_statements import Where from surrealist.ql.statements.statement import FinishedStatement, Statement diff --git a/src/surrealist/ql/statements/rebuild_index.py b/src/surrealist/ql/statements/rebuild_index.py index a8534b9..456f68c 100644 --- a/src/surrealist/ql/statements/rebuild_index.py +++ b/src/surrealist/ql/statements/rebuild_index.py @@ -2,6 +2,7 @@ from surrealist.connections import Connection from surrealist.utils import OK + from .statement import Statement diff --git a/src/surrealist/ql/statements/select.py b/src/surrealist/ql/statements/select.py index a2a1d80..91f9c8b 100644 --- a/src/surrealist/ql/statements/select.py +++ b/src/surrealist/ql/statements/select.py @@ -1,9 +1,10 @@ -from typing import Optional, Tuple, Union, List +from typing import List, Optional, Tuple, Union from surrealist.connections import Connection from surrealist.utils import OK, StrOrRecord, get_table_or_record_id + from .select_statements import SelectUseIndex, SelectUseTempfiles -from .statement import Statement, IterableStatement +from .statement import IterableStatement, Statement class Select(IterableStatement, SelectUseIndex, SelectUseTempfiles): diff --git a/src/surrealist/ql/statements/select_statements.py b/src/surrealist/ql/statements/select_statements.py index 9df1c04..fb40959 100644 --- a/src/surrealist/ql/statements/select_statements.py +++ b/src/surrealist/ql/statements/select_statements.py @@ -1,6 +1,7 @@ from typing import Tuple -from surrealist.ql.statements.statement import Statement, FinishedStatement, IterableStatement +from surrealist.ql.statements.statement import (FinishedStatement, + IterableStatement, Statement) from surrealist.utils import OK diff --git a/src/surrealist/ql/statements/show.py b/src/surrealist/ql/statements/show.py index 34231cd..8da4ca0 100644 --- a/src/surrealist/ql/statements/show.py +++ b/src/surrealist/ql/statements/show.py @@ -2,6 +2,7 @@ from surrealist.connections import Connection from surrealist.utils import OK, StrOrInt + from .statement import Statement diff --git a/src/surrealist/ql/statements/simple_statements.py b/src/surrealist/ql/statements/simple_statements.py index 422008a..a7d94d7 100644 --- a/src/surrealist/ql/statements/simple_statements.py +++ b/src/surrealist/ql/statements/simple_statements.py @@ -1,4 +1,5 @@ from typing import Optional + from surrealist.ql.statements.utils import combine diff --git a/src/surrealist/ql/statements/statement.py b/src/surrealist/ql/statements/statement.py index 0701a6f..2cd7915 100644 --- a/src/surrealist/ql/statements/statement.py +++ b/src/surrealist/ql/statements/statement.py @@ -1,5 +1,5 @@ from abc import ABC, abstractmethod -from typing import List, Iterator +from typing import Iterator, List from surrealist.connections import Connection from surrealist.result import SurrealResult diff --git a/src/surrealist/ql/statements/utils.py b/src/surrealist/ql/statements/utils.py index d9385bf..719c126 100644 --- a/src/surrealist/ql/statements/utils.py +++ b/src/surrealist/ql/statements/utils.py @@ -1,4 +1,4 @@ -from typing import Optional, Dict +from typing import Dict, Optional from surrealist.utils import safe_dumps diff --git a/src/surrealist/ql/table.py b/src/surrealist/ql/table.py index acf0cc9..df3afc0 100644 --- a/src/surrealist/ql/table.py +++ b/src/surrealist/ql/table.py @@ -1,4 +1,4 @@ -from typing import Optional, Callable, Dict, Tuple, Union, List +from typing import Callable, Dict, List, Optional, Tuple, Union from surrealist.connections import Connection from surrealist.errors import WrongCallError diff --git a/src/surrealist/result.py b/src/surrealist/result.py index 7b8f397..33519f2 100644 --- a/src/surrealist/result.py +++ b/src/surrealist/result.py @@ -1,8 +1,8 @@ import json -from typing import Optional, Union, Dict, List, Any +from typing import Any, Dict, List, Optional, Union -from surrealist.errors import TooManyNestedLevelsError, ResultHasNoValuesError -from surrealist.utils import OK, ERR, HTTP_OK +from surrealist.errors import ResultHasNoValuesError, TooManyNestedLevelsError +from surrealist.utils import ERR, HTTP_OK, OK class SurrealResult: diff --git a/src/surrealist/surreal.py b/src/surrealist/surreal.py index aca2060..6998f49 100644 --- a/src/surrealist/surreal.py +++ b/src/surrealist/surreal.py @@ -1,13 +1,14 @@ import urllib.parse from logging import getLogger -from typing import Tuple, Optional +from typing import Optional, Tuple from surrealist.clients import HttpClient from surrealist.connections.connection import Connection from surrealist.connections.http_connection import HttpConnection from surrealist.connections.ws_connection import WebSocketConnection -from surrealist.errors import HttpClientError, SurrealConnectionError, ConnectionParametersError -from surrealist.utils import DEFAULT_TIMEOUT, ENCODING, OK, HTTP_OK, NS, DB, AC +from surrealist.errors import (ConnectionParametersError, HttpClientError, + SurrealConnectionError) +from surrealist.utils import AC, DB, DEFAULT_TIMEOUT, ENCODING, HTTP_OK, NS, OK logger = getLogger("surrealist") diff --git a/src/surrealist/utils.py b/src/surrealist/utils.py index 515dd84..0a1b064 100644 --- a/src/surrealist/utils.py +++ b/src/surrealist/utils.py @@ -2,7 +2,7 @@ import json import re import uuid -from typing import Union, Dict, Optional, List, Tuple, Any +from typing import Any, Dict, List, Optional, Tuple, Union from .errors import SurrealRecordIdError from .record_id import RecordId