diff --git a/.gitignore b/.gitignore index 4fa6f46d..3494dcdb 100644 --- a/.gitignore +++ b/.gitignore @@ -119,9 +119,6 @@ node_modules/ .envrc .direnv/ -# setuptools_scm -arango/version.py - # test results *_results.txt diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 8098f23e..3da77633 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -18,7 +18,7 @@ repos: - id: trailing-whitespace - repo: https://github.com/psf/black - rev: 23.1.0 + rev: 26.1.0 hooks: - id: black @@ -29,7 +29,7 @@ repos: args: [ --profile, black ] - repo: https://github.com/PyCQA/flake8 - rev: 6.0.0 + rev: 7.3.0 hooks: - id: flake8 diff --git a/arango/client.py b/arango/client.py index b56755b0..627722e5 100644 --- a/arango/client.py +++ b/arango/client.py @@ -3,8 +3,6 @@ from json import dumps, loads from typing import Any, Callable, Optional, Sequence, Union -import importlib_metadata - from arango.connection import ( BasicConnection, Connection, @@ -27,6 +25,7 @@ RoundRobinHostResolver, SingleHostResolver, ) +from arango.version import __version__ def default_serializer(x: Any) -> str: @@ -175,8 +174,7 @@ def version(self) -> str: :return: Client version. :rtype: str """ - version: str = importlib_metadata.version("python-arango") - return version + return __version__ @property def request_timeout(self) -> Any: diff --git a/arango/collection.py b/arango/collection.py index 2b13884a..0f43f397 100644 --- a/arango/collection.py +++ b/arango/collection.py @@ -871,9 +871,7 @@ def find_near( query = """ FOR doc IN NEAR(@collection, @latitude, @longitude{}) RETURN doc - """.format( - "" if limit is None else ", @limit " - ) + """.format("" if limit is None else ", @limit ") bind_vars = { "collection": self._name, @@ -996,9 +994,7 @@ def find_in_radius( query = """ FOR doc IN WITHIN(@@collection, @latitude, @longitude, @radius{}) RETURN doc - """.format( - "" if distance_field is None else ", @distance" - ) + """.format("" if distance_field is None else ", @distance") bind_vars = { "@collection": self._name, @@ -1080,7 +1076,7 @@ def build_coord_str_from_index(index: Json) -> str: coord_str = "" if index is None: # Find the first geo index - for collection_index in self.indexes(): # type:ignore[union-attr] + for collection_index in self.indexes(): # type: ignore[union-attr] if collection_index["type"] == "geo": coord_str = build_coord_str_from_index(collection_index) break @@ -1168,9 +1164,7 @@ def find_by_text( aql = """ FOR doc IN FULLTEXT(@collection, @field, @query{}) RETURN doc - """.format( - "" if limit is None else ", @limit" - ) + """.format("" if limit is None else ", @limit") request = Request( method="post", diff --git a/arango/request.py b/arango/request.py index 66fb26ad..d9ddd83b 100644 --- a/arango/request.py +++ b/arango/request.py @@ -3,6 +3,7 @@ from typing import Any, MutableMapping, Optional from arango.typings import DriverFlags, Fields, Headers, Params +from arango.version import __version__ def normalize_headers( @@ -12,7 +13,7 @@ def normalize_headers( if driver_flags is not None: for flag in driver_flags: flags = flags + flag + ";" - driver_version = "8.2.5" + driver_version = __version__ driver_header = "python-arango/" + driver_version + " (" + flags + ")" normalized_headers: Headers = { "charset": "utf-8", diff --git a/arango/version.py b/arango/version.py new file mode 100644 index 00000000..a0c45555 --- /dev/null +++ b/arango/version.py @@ -0,0 +1 @@ +__version__ = "8.2.6" diff --git a/docs/requirements.txt b/docs/requirements.txt index 7d6d37d6..8f3bf12b 100644 --- a/docs/requirements.txt +++ b/docs/requirements.txt @@ -1,4 +1,3 @@ requests_toolbelt -importlib_metadata PyJWT sphinx_rtd_theme diff --git a/pyproject.toml b/pyproject.toml index c7bf486d..c4020c48 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -18,7 +18,7 @@ keywords = ["arangodb", "python", "driver"] readme = "README.md" dynamic = ["version"] license = { file = "LICENSE" } -requires-python = ">=3.9" +requires-python = ">=3.10" classifiers = [ "Intended Audience :: Developers", @@ -39,15 +39,16 @@ dependencies = [ "requests", "requests_toolbelt", "PyJWT", - "setuptools>=42", - "importlib_metadata>=4.7.1", "packaging>=23.1", ] +[tool.setuptools.dynamic] +version = { attr = "arango.version.__version__" } + [project.optional-dependencies] dev = [ - "black>=22.3.0", - "flake8>=4.0.1", + "black==26.1.0", + "flake8==7.3.0", "isort>=5.10.1", "mypy>=0.942", "mock", diff --git a/tests/test_aql.py b/tests/test_aql.py index 2672887c..b2defa01 100644 --- a/tests/test_aql.py +++ b/tests/test_aql.py @@ -110,9 +110,7 @@ def test_aql_query_management(db_version, db, sys_db, bad_db, col, docs): FOR d IN {col} UPDATE {{_key: d._key, _val: @val }} IN {col} RETURN NEW - """.format( - col=col.name - ), + """.format(col=col.name), count=True, # batch_size=1, ttl=10, diff --git a/tests/test_client.py b/tests/test_client.py index 4da61e47..22078d29 100644 --- a/tests/test_client.py +++ b/tests/test_client.py @@ -2,7 +2,6 @@ import pickle from typing import Union -import importlib_metadata import pytest from requests import Session @@ -11,6 +10,7 @@ from arango.exceptions import ArangoClientError, ServerConnectionError from arango.http import DefaultHTTPClient, DeflateRequestCompression from arango.resolver import FallbackHostResolver, RandomHostResolver, SingleHostResolver +from arango.version import __version__ from tests.helpers import ( generate_col_name, generate_db_name, @@ -23,7 +23,7 @@ def test_client_attributes(url): http_client = DefaultHTTPClient() client = ArangoClient(hosts=url, http_client=http_client) - assert client.version == importlib_metadata.version("python-arango") + assert client.version == __version__ assert client.hosts == [url] assert repr(client) == f"" @@ -38,7 +38,7 @@ def test_client_attributes(url): serializer=json.dumps, deserializer=json.loads, ) - assert client.version == importlib_metadata.version("python-arango") + assert client.version == __version__ assert client.hosts == client_hosts assert repr(client) == client_repr assert isinstance(client._host_resolver, FallbackHostResolver) @@ -50,7 +50,7 @@ def test_client_attributes(url): serializer=json.dumps, deserializer=json.loads, ) - assert client.version == importlib_metadata.version("python-arango") + assert client.version == __version__ assert client.hosts == client_hosts assert repr(client) == client_repr assert isinstance(client._host_resolver, RandomHostResolver) diff --git a/tests/test_cursor.py b/tests/test_cursor.py index 184d7ed8..6a0ad720 100644 --- a/tests/test_cursor.py +++ b/tests/test_cursor.py @@ -113,9 +113,7 @@ def test_cursor_write_query(db, col, docs): FOR d IN {col} FILTER d._key == @first OR d._key == @second UPDATE {{_key: d._key, _val: @val }} IN {col} RETURN NEW - """.format( - col=col.name - ), + """.format(col=col.name), bind_vars={"first": "1", "second": "2", "val": 42}, count=True, batch_size=1,