python-arango 8.1.2__tar.gz → 8.1.4__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (91) hide show
  1. {python_arango-8.1.2 → python_arango-8.1.4}/PKG-INFO +3 -3
  2. {python_arango-8.1.2 → python_arango-8.1.4}/README.md +2 -2
  3. {python_arango-8.1.2 → python_arango-8.1.4}/arango/aql.py +7 -3
  4. {python_arango-8.1.2 → python_arango-8.1.4}/arango/connection.py +1 -0
  5. {python_arango-8.1.2 → python_arango-8.1.4}/arango/cursor.py +19 -0
  6. {python_arango-8.1.2 → python_arango-8.1.4}/arango/database.py +4 -3
  7. {python_arango-8.1.2 → python_arango-8.1.4}/arango/request.py +1 -1
  8. {python_arango-8.1.2 → python_arango-8.1.4}/arango/utils.py +5 -1
  9. {python_arango-8.1.2 → python_arango-8.1.4}/python_arango.egg-info/PKG-INFO +3 -3
  10. {python_arango-8.1.2 → python_arango-8.1.4}/.circleci/config.yml +0 -0
  11. {python_arango-8.1.2 → python_arango-8.1.4}/.github/workflows/codeql.yaml +0 -0
  12. {python_arango-8.1.2 → python_arango-8.1.4}/.github/workflows/docs.yaml +0 -0
  13. {python_arango-8.1.2 → python_arango-8.1.4}/.github/workflows/pypi.yaml +0 -0
  14. {python_arango-8.1.2 → python_arango-8.1.4}/.gitignore +0 -0
  15. {python_arango-8.1.2 → python_arango-8.1.4}/.pre-commit-config.yaml +0 -0
  16. {python_arango-8.1.2 → python_arango-8.1.4}/.readthedocs.yaml +0 -0
  17. {python_arango-8.1.2 → python_arango-8.1.4}/CONTRIBUTING.md +0 -0
  18. {python_arango-8.1.2 → python_arango-8.1.4}/LICENSE +0 -0
  19. {python_arango-8.1.2 → python_arango-8.1.4}/MANIFEST.in +0 -0
  20. {python_arango-8.1.2 → python_arango-8.1.4}/arango/__init__.py +0 -0
  21. {python_arango-8.1.2 → python_arango-8.1.4}/arango/api.py +0 -0
  22. {python_arango-8.1.2 → python_arango-8.1.4}/arango/backup.py +0 -0
  23. {python_arango-8.1.2 → python_arango-8.1.4}/arango/client.py +0 -0
  24. {python_arango-8.1.2 → python_arango-8.1.4}/arango/cluster.py +0 -0
  25. {python_arango-8.1.2 → python_arango-8.1.4}/arango/collection.py +0 -0
  26. {python_arango-8.1.2 → python_arango-8.1.4}/arango/errno.py +0 -0
  27. {python_arango-8.1.2 → python_arango-8.1.4}/arango/exceptions.py +0 -0
  28. {python_arango-8.1.2 → python_arango-8.1.4}/arango/executor.py +0 -0
  29. {python_arango-8.1.2 → python_arango-8.1.4}/arango/formatter.py +0 -0
  30. {python_arango-8.1.2 → python_arango-8.1.4}/arango/foxx.py +0 -0
  31. {python_arango-8.1.2 → python_arango-8.1.4}/arango/graph.py +0 -0
  32. {python_arango-8.1.2 → python_arango-8.1.4}/arango/http.py +0 -0
  33. {python_arango-8.1.2 → python_arango-8.1.4}/arango/job.py +0 -0
  34. {python_arango-8.1.2 → python_arango-8.1.4}/arango/pregel.py +0 -0
  35. {python_arango-8.1.2 → python_arango-8.1.4}/arango/py.typed +0 -0
  36. {python_arango-8.1.2 → python_arango-8.1.4}/arango/replication.py +0 -0
  37. {python_arango-8.1.2 → python_arango-8.1.4}/arango/resolver.py +0 -0
  38. {python_arango-8.1.2 → python_arango-8.1.4}/arango/response.py +0 -0
  39. {python_arango-8.1.2 → python_arango-8.1.4}/arango/result.py +0 -0
  40. {python_arango-8.1.2 → python_arango-8.1.4}/arango/typings.py +0 -0
  41. {python_arango-8.1.2 → python_arango-8.1.4}/arango/wal.py +0 -0
  42. {python_arango-8.1.2 → python_arango-8.1.4}/docs/Makefile +0 -0
  43. {python_arango-8.1.2 → python_arango-8.1.4}/docs/admin.rst +0 -0
  44. {python_arango-8.1.2 → python_arango-8.1.4}/docs/analyzer.rst +0 -0
  45. {python_arango-8.1.2 → python_arango-8.1.4}/docs/aql.rst +0 -0
  46. {python_arango-8.1.2 → python_arango-8.1.4}/docs/async.rst +0 -0
  47. {python_arango-8.1.2 → python_arango-8.1.4}/docs/auth.rst +0 -0
  48. {python_arango-8.1.2 → python_arango-8.1.4}/docs/backup.rst +0 -0
  49. {python_arango-8.1.2 → python_arango-8.1.4}/docs/batch.rst +0 -0
  50. {python_arango-8.1.2 → python_arango-8.1.4}/docs/certificates.rst +0 -0
  51. {python_arango-8.1.2 → python_arango-8.1.4}/docs/cluster.rst +0 -0
  52. {python_arango-8.1.2 → python_arango-8.1.4}/docs/collection.rst +0 -0
  53. {python_arango-8.1.2 → python_arango-8.1.4}/docs/compression.rst +0 -0
  54. {python_arango-8.1.2 → python_arango-8.1.4}/docs/conf.py +0 -0
  55. {python_arango-8.1.2 → python_arango-8.1.4}/docs/contributing.rst +0 -0
  56. {python_arango-8.1.2 → python_arango-8.1.4}/docs/cursor.rst +0 -0
  57. {python_arango-8.1.2 → python_arango-8.1.4}/docs/database.rst +0 -0
  58. {python_arango-8.1.2 → python_arango-8.1.4}/docs/document.rst +0 -0
  59. {python_arango-8.1.2 → python_arango-8.1.4}/docs/errno.rst +0 -0
  60. {python_arango-8.1.2 → python_arango-8.1.4}/docs/errors.rst +0 -0
  61. {python_arango-8.1.2 → python_arango-8.1.4}/docs/foxx.rst +0 -0
  62. {python_arango-8.1.2 → python_arango-8.1.4}/docs/graph.rst +0 -0
  63. {python_arango-8.1.2 → python_arango-8.1.4}/docs/http.rst +0 -0
  64. {python_arango-8.1.2 → python_arango-8.1.4}/docs/index.rst +0 -0
  65. {python_arango-8.1.2 → python_arango-8.1.4}/docs/indexes.rst +0 -0
  66. {python_arango-8.1.2 → python_arango-8.1.4}/docs/logging.rst +0 -0
  67. {python_arango-8.1.2 → python_arango-8.1.4}/docs/make.bat +0 -0
  68. {python_arango-8.1.2 → python_arango-8.1.4}/docs/overload.rst +0 -0
  69. {python_arango-8.1.2 → python_arango-8.1.4}/docs/overview.rst +0 -0
  70. {python_arango-8.1.2 → python_arango-8.1.4}/docs/pregel.rst +0 -0
  71. {python_arango-8.1.2 → python_arango-8.1.4}/docs/replication.rst +0 -0
  72. {python_arango-8.1.2 → python_arango-8.1.4}/docs/requirements.txt +0 -0
  73. {python_arango-8.1.2 → python_arango-8.1.4}/docs/schema.rst +0 -0
  74. {python_arango-8.1.2 → python_arango-8.1.4}/docs/serializer.rst +0 -0
  75. {python_arango-8.1.2 → python_arango-8.1.4}/docs/simple.rst +0 -0
  76. {python_arango-8.1.2 → python_arango-8.1.4}/docs/specs.rst +0 -0
  77. {python_arango-8.1.2 → python_arango-8.1.4}/docs/static/logo.png +0 -0
  78. {python_arango-8.1.2 → python_arango-8.1.4}/docs/task.rst +0 -0
  79. {python_arango-8.1.2 → python_arango-8.1.4}/docs/threading.rst +0 -0
  80. {python_arango-8.1.2 → python_arango-8.1.4}/docs/transaction.rst +0 -0
  81. {python_arango-8.1.2 → python_arango-8.1.4}/docs/user.rst +0 -0
  82. {python_arango-8.1.2 → python_arango-8.1.4}/docs/view.rst +0 -0
  83. {python_arango-8.1.2 → python_arango-8.1.4}/docs/wal.rst +0 -0
  84. {python_arango-8.1.2 → python_arango-8.1.4}/pyproject.toml +0 -0
  85. {python_arango-8.1.2 → python_arango-8.1.4}/python_arango.egg-info/SOURCES.txt +0 -0
  86. {python_arango-8.1.2 → python_arango-8.1.4}/python_arango.egg-info/dependency_links.txt +0 -0
  87. {python_arango-8.1.2 → python_arango-8.1.4}/python_arango.egg-info/requires.txt +0 -0
  88. {python_arango-8.1.2 → python_arango-8.1.4}/python_arango.egg-info/top_level.txt +0 -0
  89. {python_arango-8.1.2 → python_arango-8.1.4}/setup.cfg +0 -0
  90. {python_arango-8.1.2 → python_arango-8.1.4}/setup.py +0 -0
  91. {python_arango-8.1.2 → python_arango-8.1.4}/starter.sh +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: python-arango
3
- Version: 8.1.2
3
+ Version: 8.1.4
4
4
  Summary: Python Driver for ArangoDB
5
5
  Author-email: Joohwan Oh <joohwan.oh@outlook.com>
6
6
  Maintainer-email: Joohwan Oh <joohwan.oh@outlook.com>, Alexandru Petenchea <alex.petenchea@gmail.com>, Anthony Mahanna <anthony.mahanna@arangodb.com>
@@ -70,12 +70,12 @@ Requires-Dist: types-setuptools; extra == "dev"
70
70
  [![CodeQL](https://github.com/arangodb/python-arango/actions/workflows/codeql.yaml/badge.svg)](https://github.com/arangodb/python-arango/actions/workflows/codeql.yaml)
71
71
  [![Docs](https://github.com/arangodb/python-arango/actions/workflows/docs.yaml/badge.svg)](https://github.com/arangodb/python-arango/actions/workflows/docs.yaml)
72
72
  [![Coverage Status](https://codecov.io/gh/arangodb/python-arango/branch/main/graph/badge.svg?token=M8zrjrzsUY)](https://codecov.io/gh/arangodb/python-arango)
73
- [![Last commit](https://img.shields.io/github/last-commit/arangodb/python-arango)](https://github.com/arangodb/python-arango/commits/master)
73
+ [![Last commit](https://img.shields.io/github/last-commit/arangodb/python-arango)](https://github.com/arangodb/python-arango/commits/main)
74
74
 
75
75
  [![PyPI version badge](https://img.shields.io/pypi/v/python-arango?color=3775A9&style=for-the-badge&logo=pypi&logoColor=FFD43B)](https://pypi.org/project/python-arango/)
76
76
  [![Python versions badge](https://img.shields.io/badge/3.8%2B-3776AB?style=for-the-badge&logo=python&logoColor=FFD43B&label=Python)](https://pypi.org/project/python-arango/)
77
77
 
78
- [![License](https://img.shields.io/github/license/arangodb/python-arango?color=9E2165&style=for-the-badge)](https://github.com/arangodb/python-arango/blob/master/LICENSE)
78
+ [![License](https://img.shields.io/github/license/arangodb/python-arango?color=9E2165&style=for-the-badge)](https://github.com/arangodb/python-arango/blob/main/LICENSE)
79
79
  [![Code style: black](https://img.shields.io/static/v1?style=for-the-badge&label=code%20style&message=black&color=black)](https://github.com/psf/black)
80
80
  [![Downloads](https://img.shields.io/pepy/dt/python-arango?style=for-the-badge&color=282661
81
81
  )](https://pepy.tech/project/python-arango)
@@ -4,12 +4,12 @@
4
4
  [![CodeQL](https://github.com/arangodb/python-arango/actions/workflows/codeql.yaml/badge.svg)](https://github.com/arangodb/python-arango/actions/workflows/codeql.yaml)
5
5
  [![Docs](https://github.com/arangodb/python-arango/actions/workflows/docs.yaml/badge.svg)](https://github.com/arangodb/python-arango/actions/workflows/docs.yaml)
6
6
  [![Coverage Status](https://codecov.io/gh/arangodb/python-arango/branch/main/graph/badge.svg?token=M8zrjrzsUY)](https://codecov.io/gh/arangodb/python-arango)
7
- [![Last commit](https://img.shields.io/github/last-commit/arangodb/python-arango)](https://github.com/arangodb/python-arango/commits/master)
7
+ [![Last commit](https://img.shields.io/github/last-commit/arangodb/python-arango)](https://github.com/arangodb/python-arango/commits/main)
8
8
 
9
9
  [![PyPI version badge](https://img.shields.io/pypi/v/python-arango?color=3775A9&style=for-the-badge&logo=pypi&logoColor=FFD43B)](https://pypi.org/project/python-arango/)
10
10
  [![Python versions badge](https://img.shields.io/badge/3.8%2B-3776AB?style=for-the-badge&logo=python&logoColor=FFD43B&label=Python)](https://pypi.org/project/python-arango/)
11
11
 
12
- [![License](https://img.shields.io/github/license/arangodb/python-arango?color=9E2165&style=for-the-badge)](https://github.com/arangodb/python-arango/blob/master/LICENSE)
12
+ [![License](https://img.shields.io/github/license/arangodb/python-arango?color=9E2165&style=for-the-badge)](https://github.com/arangodb/python-arango/blob/main/LICENSE)
13
13
  [![Code style: black](https://img.shields.io/static/v1?style=for-the-badge&label=code%20style&message=black&color=black)](https://github.com/psf/black)
14
14
  [![Downloads](https://img.shields.io/pepy/dt/python-arango?style=for-the-badge&color=282661
15
15
  )](https://pepy.tech/project/python-arango)
@@ -264,7 +264,7 @@ class AQL(ApiGroup):
264
264
  cache: Optional[bool] = None,
265
265
  memory_limit: int = 0,
266
266
  fail_on_warning: Optional[bool] = None,
267
- profile: Optional[bool] = None,
267
+ profile: Optional[Union[bool, int]] = None,
268
268
  max_transaction_size: Optional[int] = None,
269
269
  max_warning_count: Optional[int] = None,
270
270
  intermediate_commit_count: Optional[int] = None,
@@ -317,8 +317,12 @@ class AQL(ApiGroup):
317
317
  this behaviour, so it does not need to be set per-query.
318
318
  :type fail_on_warning: bool
319
319
  :param profile: Return additional profiling details in the cursor,
320
- unless the query cache is used.
321
- :type profile: bool
320
+ unless the query cache is used. If set to True or 1, then query profiling
321
+ information can be fetched with `cursor.profile()`. If set to 2, additional
322
+ execution stats per query plan node are included via "nodes" in
323
+ `cursor.statistics()`, as well as a the query plan which can be fetched
324
+ with `cursor.plan()`.
325
+ :type profile: bool | int
322
326
  :param max_transaction_size: Transaction size limit in bytes.
323
327
  :type max_transaction_size: int
324
328
  :param max_warning_count: Max number of warnings returned.
@@ -47,6 +47,7 @@ class BaseConnection:
47
47
  request_compression: Optional[RequestCompression] = None,
48
48
  response_compression: Optional[str] = None,
49
49
  ) -> None:
50
+ self._hosts = hosts
50
51
  self._url_prefixes = [f"{host}/_db/{db_name}" for host in hosts]
51
52
  self._host_resolver = host_resolver
52
53
  self._sessions = sessions
@@ -40,6 +40,7 @@ class Cursor:
40
40
  "_count",
41
41
  "_cached",
42
42
  "_stats",
43
+ "_plan",
43
44
  "_profile",
44
45
  "_warnings",
45
46
  "_has_more",
@@ -63,6 +64,7 @@ class Cursor:
63
64
  self._count: Optional[int] = None
64
65
  self._cached = None
65
66
  self._stats = None
67
+ self._plan = None
66
68
  self._profile = None
67
69
  self._warnings = None
68
70
  self._next_batch_id: Optional[str] = None
@@ -132,12 +134,18 @@ class Cursor:
132
134
  self._warnings = extra["warnings"]
133
135
  result["warnings"] = extra["warnings"]
134
136
 
137
+ if "plan" in extra:
138
+ self._plan = extra["plan"]
139
+ result["plan"] = extra["plan"]
140
+
135
141
  if "stats" in extra:
136
142
  stats = extra["stats"]
137
143
  if "writesExecuted" in stats:
138
144
  stats["modified"] = stats.pop("writesExecuted")
139
145
  if "writesIgnored" in stats:
140
146
  stats["ignored"] = stats.pop("writesIgnored")
147
+ if "documentLookups" in stats:
148
+ stats["lookups"] = stats.pop("documentLookups")
141
149
  if "scannedFull" in stats:
142
150
  stats["scanned_full"] = stats.pop("scannedFull")
143
151
  if "scannedIndex" in stats:
@@ -159,6 +167,9 @@ class Cursor:
159
167
  if "peakMemoryUsage" in stats:
160
168
  stats["peak_memory_usage"] = stats.pop("peakMemoryUsage")
161
169
 
170
+ if "intermediateCommits" in stats:
171
+ stats["intermediate_commits"] = stats.pop("intermediateCommits")
172
+
162
173
  self._stats = stats
163
174
  result["statistics"] = stats
164
175
 
@@ -239,6 +250,14 @@ class Cursor:
239
250
  """
240
251
  return self._warnings
241
252
 
253
+ def plan(self) -> Optional[Json]:
254
+ """Return query execution plan.
255
+
256
+ :return: Query execution plan.
257
+ :rtype: dict
258
+ """
259
+ return self._plan
260
+
242
261
  def empty(self) -> bool:
243
262
  """Check if the current batch is empty.
244
263
 
@@ -436,7 +436,7 @@ class Database(ApiGroup):
436
436
  instance. Can be called on single servers, Coordinators,
437
437
  and DB-Servers.
438
438
 
439
- :param license: The Base64-encoded license string.
439
+ :param license: The Base64-encoded license string, wrapped in double-quotes.
440
440
  :type license: str
441
441
  :param force: If set to True, the new license will be set even if
442
442
  it expires sooner than the current license.
@@ -1284,8 +1284,9 @@ class Database(ApiGroup):
1284
1284
  :type name: str
1285
1285
  :param users: List of users with access to the new database, where each
1286
1286
  user is a dictionary with fields "username", "password", "active"
1287
- and "extra" (see below for example). If not set, only the admin and
1288
- current user are granted access.
1287
+ and "extra" (see below for example). If not set, the default user root
1288
+ will be used to ensure that the new database will be accessible after
1289
+ it is created.
1289
1290
  :type users: [dict]
1290
1291
  :param replication_factor: Default replication factor for collections
1291
1292
  created in this database. Special values include "satellite" which
@@ -12,7 +12,7 @@ def normalize_headers(
12
12
  if driver_flags is not None:
13
13
  for flag in driver_flags:
14
14
  flags = flags + flag + ";"
15
- driver_version = "8.1.1"
15
+ driver_version = "8.1.4"
16
16
  driver_header = "python-arango/" + driver_version + " (" + flags + ")"
17
17
  normalized_headers: Headers = {
18
18
  "charset": "utf-8",
@@ -120,5 +120,9 @@ def build_filter_conditions(filters: Json) -> str:
120
120
  if not filters:
121
121
  return ""
122
122
 
123
- conditions = [f"doc.`{k}` == {json.dumps(v)}" for k, v in filters.items()]
123
+ conditions = []
124
+ for k, v in filters.items():
125
+ field = k if "." in k else f"`{k}`"
126
+ conditions.append(f"doc.{field} == {json.dumps(v)}")
127
+
124
128
  return "FILTER " + " AND ".join(conditions)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: python-arango
3
- Version: 8.1.2
3
+ Version: 8.1.4
4
4
  Summary: Python Driver for ArangoDB
5
5
  Author-email: Joohwan Oh <joohwan.oh@outlook.com>
6
6
  Maintainer-email: Joohwan Oh <joohwan.oh@outlook.com>, Alexandru Petenchea <alex.petenchea@gmail.com>, Anthony Mahanna <anthony.mahanna@arangodb.com>
@@ -70,12 +70,12 @@ Requires-Dist: types-setuptools; extra == "dev"
70
70
  [![CodeQL](https://github.com/arangodb/python-arango/actions/workflows/codeql.yaml/badge.svg)](https://github.com/arangodb/python-arango/actions/workflows/codeql.yaml)
71
71
  [![Docs](https://github.com/arangodb/python-arango/actions/workflows/docs.yaml/badge.svg)](https://github.com/arangodb/python-arango/actions/workflows/docs.yaml)
72
72
  [![Coverage Status](https://codecov.io/gh/arangodb/python-arango/branch/main/graph/badge.svg?token=M8zrjrzsUY)](https://codecov.io/gh/arangodb/python-arango)
73
- [![Last commit](https://img.shields.io/github/last-commit/arangodb/python-arango)](https://github.com/arangodb/python-arango/commits/master)
73
+ [![Last commit](https://img.shields.io/github/last-commit/arangodb/python-arango)](https://github.com/arangodb/python-arango/commits/main)
74
74
 
75
75
  [![PyPI version badge](https://img.shields.io/pypi/v/python-arango?color=3775A9&style=for-the-badge&logo=pypi&logoColor=FFD43B)](https://pypi.org/project/python-arango/)
76
76
  [![Python versions badge](https://img.shields.io/badge/3.8%2B-3776AB?style=for-the-badge&logo=python&logoColor=FFD43B&label=Python)](https://pypi.org/project/python-arango/)
77
77
 
78
- [![License](https://img.shields.io/github/license/arangodb/python-arango?color=9E2165&style=for-the-badge)](https://github.com/arangodb/python-arango/blob/master/LICENSE)
78
+ [![License](https://img.shields.io/github/license/arangodb/python-arango?color=9E2165&style=for-the-badge)](https://github.com/arangodb/python-arango/blob/main/LICENSE)
79
79
  [![Code style: black](https://img.shields.io/static/v1?style=for-the-badge&label=code%20style&message=black&color=black)](https://github.com/psf/black)
80
80
  [![Downloads](https://img.shields.io/pepy/dt/python-arango?style=for-the-badge&color=282661
81
81
  )](https://pepy.tech/project/python-arango)
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes