Skip to content

Commit

Permalink
support for SDB 2.1.3
Browse files Browse the repository at this point in the history
  • Loading branch information
kotolex committed Dec 12, 2024
1 parent d2320ac commit 93c6f45
Show file tree
Hide file tree
Showing 33 changed files with 75 additions and 56 deletions.
4 changes: 2 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@
<a href="https://pypi.org/project/surrealist/"><img src="https://img.shields.io/github/last-commit/kotolex/surrealist/master?style=flat-square"></a>
</p>

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)

Expand All @@ -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.)
Expand Down
3 changes: 3 additions & 0 deletions ReleaseNotes.md
Original file line number Diff line number Diff line change
@@ -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

Expand Down
2 changes: 1 addition & 1 deletion pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -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" }]
Expand Down
4 changes: 2 additions & 2 deletions src/surrealist/__init__.py
Original file line number Diff line number Diff line change
@@ -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",
Expand Down
6 changes: 3 additions & 3 deletions src/surrealist/clients/http_client.py
Original file line number Diff line number Diff line change
Expand Up @@ -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")

Expand Down
9 changes: 5 additions & 4 deletions src/surrealist/clients/ws_client.py
Original file line number Diff line number Diff line change
Expand Up @@ -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")
Expand Down
9 changes: 5 additions & 4 deletions src/surrealist/connections/connection.py
Original file line number Diff line number Diff line change
@@ -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"
Expand Down
7 changes: 4 additions & 3 deletions src/surrealist/connections/http_connection.py
Original file line number Diff line number Diff line change
@@ -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")

Expand Down
2 changes: 1 addition & 1 deletion src/surrealist/connections/pool.py
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
9 changes: 5 additions & 4 deletions src/surrealist/connections/ws_connection.py
Original file line number Diff line number Diff line change
@@ -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")

Expand Down
17 changes: 10 additions & 7 deletions src/surrealist/ql/database.py
Original file line number Diff line number Diff line change
@@ -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
Expand All @@ -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")

Expand Down
3 changes: 2 additions & 1 deletion src/surrealist/ql/statements/alter.py
Original file line number Diff line number Diff line change
Expand Up @@ -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


Expand Down
7 changes: 4 additions & 3 deletions src/surrealist/ql/statements/define.py
Original file line number Diff line number Diff line change
@@ -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


Expand Down
2 changes: 1 addition & 1 deletion src/surrealist/ql/statements/define_analyzer.py
Original file line number Diff line number Diff line change
@@ -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',
Expand Down
2 changes: 1 addition & 1 deletion src/surrealist/ql/statements/define_config.py
Original file line number Diff line number Diff line change
@@ -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
Expand Down
1 change: 0 additions & 1 deletion src/surrealist/ql/statements/define_index_statements.py
Original file line number Diff line number Diff line change
Expand Up @@ -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):
Expand Down
3 changes: 2 additions & 1 deletion src/surrealist/ql/statements/define_user.py
Original file line number Diff line number Diff line change
@@ -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


Expand Down
1 change: 1 addition & 0 deletions src/surrealist/ql/statements/delete.py
Original file line number Diff line number Diff line change
Expand Up @@ -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

Expand Down
2 changes: 1 addition & 1 deletion src/surrealist/ql/statements/insert.py
Original file line number Diff line number Diff line change
@@ -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
Expand Down
2 changes: 1 addition & 1 deletion src/surrealist/ql/statements/live.py
Original file line number Diff line number Diff line change
@@ -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
Expand Down
2 changes: 1 addition & 1 deletion src/surrealist/ql/statements/live_statements.py
Original file line number Diff line number Diff line change
@@ -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):
Expand Down
2 changes: 1 addition & 1 deletion src/surrealist/ql/statements/permissions.py
Original file line number Diff line number Diff line change
@@ -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


Expand Down
1 change: 1 addition & 0 deletions src/surrealist/ql/statements/rebuild_index.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@

from surrealist.connections import Connection
from surrealist.utils import OK

from .statement import Statement


Expand Down
5 changes: 3 additions & 2 deletions src/surrealist/ql/statements/select.py
Original file line number Diff line number Diff line change
@@ -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):
Expand Down
3 changes: 2 additions & 1 deletion src/surrealist/ql/statements/select_statements.py
Original file line number Diff line number Diff line change
@@ -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


Expand Down
1 change: 1 addition & 0 deletions src/surrealist/ql/statements/show.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@

from surrealist.connections import Connection
from surrealist.utils import OK, StrOrInt

from .statement import Statement


Expand Down
1 change: 1 addition & 0 deletions src/surrealist/ql/statements/simple_statements.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
from typing import Optional

from surrealist.ql.statements.utils import combine


Expand Down
2 changes: 1 addition & 1 deletion src/surrealist/ql/statements/statement.py
Original file line number Diff line number Diff line change
@@ -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
Expand Down
2 changes: 1 addition & 1 deletion src/surrealist/ql/statements/utils.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
from typing import Optional, Dict
from typing import Dict, Optional

from surrealist.utils import safe_dumps

Expand Down
2 changes: 1 addition & 1 deletion src/surrealist/ql/table.py
Original file line number Diff line number Diff line change
@@ -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
Expand Down
6 changes: 3 additions & 3 deletions src/surrealist/result.py
Original file line number Diff line number Diff line change
@@ -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:
Expand Down
7 changes: 4 additions & 3 deletions src/surrealist/surreal.py
Original file line number Diff line number Diff line change
@@ -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")

Expand Down
2 changes: 1 addition & 1 deletion src/surrealist/utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down

0 comments on commit 93c6f45

Please sign in to comment.