python-arango 8.1.0__tar.gz → 8.1.2__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.0 → python_arango-8.1.2}/PKG-INFO +1 -1
  2. {python_arango-8.1.0 → python_arango-8.1.2}/arango/cluster.py +55 -0
  3. {python_arango-8.1.0 → python_arango-8.1.2}/arango/database.py +26 -3
  4. {python_arango-8.1.0 → python_arango-8.1.2}/arango/exceptions.py +4 -0
  5. {python_arango-8.1.0 → python_arango-8.1.2}/arango/formatter.py +8 -0
  6. {python_arango-8.1.0 → python_arango-8.1.2}/arango/request.py +1 -1
  7. {python_arango-8.1.0 → python_arango-8.1.2}/docs/admin.rst +1 -1
  8. {python_arango-8.1.0 → python_arango-8.1.2}/python_arango.egg-info/PKG-INFO +1 -1
  9. {python_arango-8.1.0 → python_arango-8.1.2}/.circleci/config.yml +0 -0
  10. {python_arango-8.1.0 → python_arango-8.1.2}/.github/workflows/codeql.yaml +0 -0
  11. {python_arango-8.1.0 → python_arango-8.1.2}/.github/workflows/docs.yaml +0 -0
  12. {python_arango-8.1.0 → python_arango-8.1.2}/.github/workflows/pypi.yaml +0 -0
  13. {python_arango-8.1.0 → python_arango-8.1.2}/.gitignore +0 -0
  14. {python_arango-8.1.0 → python_arango-8.1.2}/.pre-commit-config.yaml +0 -0
  15. {python_arango-8.1.0 → python_arango-8.1.2}/.readthedocs.yaml +0 -0
  16. {python_arango-8.1.0 → python_arango-8.1.2}/CONTRIBUTING.md +0 -0
  17. {python_arango-8.1.0 → python_arango-8.1.2}/LICENSE +0 -0
  18. {python_arango-8.1.0 → python_arango-8.1.2}/MANIFEST.in +0 -0
  19. {python_arango-8.1.0 → python_arango-8.1.2}/README.md +0 -0
  20. {python_arango-8.1.0 → python_arango-8.1.2}/arango/__init__.py +0 -0
  21. {python_arango-8.1.0 → python_arango-8.1.2}/arango/api.py +0 -0
  22. {python_arango-8.1.0 → python_arango-8.1.2}/arango/aql.py +0 -0
  23. {python_arango-8.1.0 → python_arango-8.1.2}/arango/backup.py +0 -0
  24. {python_arango-8.1.0 → python_arango-8.1.2}/arango/client.py +0 -0
  25. {python_arango-8.1.0 → python_arango-8.1.2}/arango/collection.py +0 -0
  26. {python_arango-8.1.0 → python_arango-8.1.2}/arango/connection.py +0 -0
  27. {python_arango-8.1.0 → python_arango-8.1.2}/arango/cursor.py +0 -0
  28. {python_arango-8.1.0 → python_arango-8.1.2}/arango/errno.py +0 -0
  29. {python_arango-8.1.0 → python_arango-8.1.2}/arango/executor.py +0 -0
  30. {python_arango-8.1.0 → python_arango-8.1.2}/arango/foxx.py +0 -0
  31. {python_arango-8.1.0 → python_arango-8.1.2}/arango/graph.py +0 -0
  32. {python_arango-8.1.0 → python_arango-8.1.2}/arango/http.py +0 -0
  33. {python_arango-8.1.0 → python_arango-8.1.2}/arango/job.py +0 -0
  34. {python_arango-8.1.0 → python_arango-8.1.2}/arango/pregel.py +0 -0
  35. {python_arango-8.1.0 → python_arango-8.1.2}/arango/py.typed +0 -0
  36. {python_arango-8.1.0 → python_arango-8.1.2}/arango/replication.py +0 -0
  37. {python_arango-8.1.0 → python_arango-8.1.2}/arango/resolver.py +0 -0
  38. {python_arango-8.1.0 → python_arango-8.1.2}/arango/response.py +0 -0
  39. {python_arango-8.1.0 → python_arango-8.1.2}/arango/result.py +0 -0
  40. {python_arango-8.1.0 → python_arango-8.1.2}/arango/typings.py +0 -0
  41. {python_arango-8.1.0 → python_arango-8.1.2}/arango/utils.py +0 -0
  42. {python_arango-8.1.0 → python_arango-8.1.2}/arango/wal.py +0 -0
  43. {python_arango-8.1.0 → python_arango-8.1.2}/docs/Makefile +0 -0
  44. {python_arango-8.1.0 → python_arango-8.1.2}/docs/analyzer.rst +0 -0
  45. {python_arango-8.1.0 → python_arango-8.1.2}/docs/aql.rst +0 -0
  46. {python_arango-8.1.0 → python_arango-8.1.2}/docs/async.rst +0 -0
  47. {python_arango-8.1.0 → python_arango-8.1.2}/docs/auth.rst +0 -0
  48. {python_arango-8.1.0 → python_arango-8.1.2}/docs/backup.rst +0 -0
  49. {python_arango-8.1.0 → python_arango-8.1.2}/docs/batch.rst +0 -0
  50. {python_arango-8.1.0 → python_arango-8.1.2}/docs/certificates.rst +0 -0
  51. {python_arango-8.1.0 → python_arango-8.1.2}/docs/cluster.rst +0 -0
  52. {python_arango-8.1.0 → python_arango-8.1.2}/docs/collection.rst +0 -0
  53. {python_arango-8.1.0 → python_arango-8.1.2}/docs/compression.rst +0 -0
  54. {python_arango-8.1.0 → python_arango-8.1.2}/docs/conf.py +0 -0
  55. {python_arango-8.1.0 → python_arango-8.1.2}/docs/contributing.rst +0 -0
  56. {python_arango-8.1.0 → python_arango-8.1.2}/docs/cursor.rst +0 -0
  57. {python_arango-8.1.0 → python_arango-8.1.2}/docs/database.rst +0 -0
  58. {python_arango-8.1.0 → python_arango-8.1.2}/docs/document.rst +0 -0
  59. {python_arango-8.1.0 → python_arango-8.1.2}/docs/errno.rst +0 -0
  60. {python_arango-8.1.0 → python_arango-8.1.2}/docs/errors.rst +0 -0
  61. {python_arango-8.1.0 → python_arango-8.1.2}/docs/foxx.rst +0 -0
  62. {python_arango-8.1.0 → python_arango-8.1.2}/docs/graph.rst +0 -0
  63. {python_arango-8.1.0 → python_arango-8.1.2}/docs/http.rst +0 -0
  64. {python_arango-8.1.0 → python_arango-8.1.2}/docs/index.rst +0 -0
  65. {python_arango-8.1.0 → python_arango-8.1.2}/docs/indexes.rst +0 -0
  66. {python_arango-8.1.0 → python_arango-8.1.2}/docs/logging.rst +0 -0
  67. {python_arango-8.1.0 → python_arango-8.1.2}/docs/make.bat +0 -0
  68. {python_arango-8.1.0 → python_arango-8.1.2}/docs/overload.rst +0 -0
  69. {python_arango-8.1.0 → python_arango-8.1.2}/docs/overview.rst +0 -0
  70. {python_arango-8.1.0 → python_arango-8.1.2}/docs/pregel.rst +0 -0
  71. {python_arango-8.1.0 → python_arango-8.1.2}/docs/replication.rst +0 -0
  72. {python_arango-8.1.0 → python_arango-8.1.2}/docs/requirements.txt +0 -0
  73. {python_arango-8.1.0 → python_arango-8.1.2}/docs/schema.rst +0 -0
  74. {python_arango-8.1.0 → python_arango-8.1.2}/docs/serializer.rst +0 -0
  75. {python_arango-8.1.0 → python_arango-8.1.2}/docs/simple.rst +0 -0
  76. {python_arango-8.1.0 → python_arango-8.1.2}/docs/specs.rst +0 -0
  77. {python_arango-8.1.0 → python_arango-8.1.2}/docs/static/logo.png +0 -0
  78. {python_arango-8.1.0 → python_arango-8.1.2}/docs/task.rst +0 -0
  79. {python_arango-8.1.0 → python_arango-8.1.2}/docs/threading.rst +0 -0
  80. {python_arango-8.1.0 → python_arango-8.1.2}/docs/transaction.rst +0 -0
  81. {python_arango-8.1.0 → python_arango-8.1.2}/docs/user.rst +0 -0
  82. {python_arango-8.1.0 → python_arango-8.1.2}/docs/view.rst +0 -0
  83. {python_arango-8.1.0 → python_arango-8.1.2}/docs/wal.rst +0 -0
  84. {python_arango-8.1.0 → python_arango-8.1.2}/pyproject.toml +0 -0
  85. {python_arango-8.1.0 → python_arango-8.1.2}/python_arango.egg-info/SOURCES.txt +0 -0
  86. {python_arango-8.1.0 → python_arango-8.1.2}/python_arango.egg-info/dependency_links.txt +0 -0
  87. {python_arango-8.1.0 → python_arango-8.1.2}/python_arango.egg-info/requires.txt +0 -0
  88. {python_arango-8.1.0 → python_arango-8.1.2}/python_arango.egg-info/top_level.txt +0 -0
  89. {python_arango-8.1.0 → python_arango-8.1.2}/setup.cfg +0 -0
  90. {python_arango-8.1.0 → python_arango-8.1.2}/setup.py +0 -0
  91. {python_arango-8.1.0 → python_arango-8.1.2}/starter.sh +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: python-arango
3
- Version: 8.1.0
3
+ Version: 8.1.2
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>
@@ -15,6 +15,7 @@ from arango.exceptions import (
15
15
  ClusterServerRoleError,
16
16
  ClusterServerStatisticsError,
17
17
  ClusterServerVersionError,
18
+ ClusterVpackSortMigrationError,
18
19
  )
19
20
  from arango.formatter import format_body
20
21
  from arango.request import Request
@@ -444,3 +445,57 @@ class Cluster(ApiGroup): # pragma: no cover
444
445
  return result
445
446
 
446
447
  return self._execute(request, response_handler)
448
+
449
+ def vpack_sort_migration_status(self) -> Result[Json]:
450
+ """Query the status of the vpack sorting migration.
451
+
452
+ :return: Status of the VPack sort migration.
453
+ :rtype: dict
454
+ """
455
+ request = Request(
456
+ method="get", endpoint="/_admin/cluster/vpackSortMigration/status"
457
+ )
458
+
459
+ def response_handler(resp: Response) -> Json:
460
+ if not resp.is_success:
461
+ raise ClusterVpackSortMigrationError(resp, request)
462
+ result: Json = resp.body["result"]
463
+ return result
464
+
465
+ return self._execute(request, response_handler)
466
+
467
+ def vpack_sort_migration_index_check(self) -> Result[Json]:
468
+ """Check for indexes impacted by the sorting behavior before 3.12.2.
469
+
470
+ :return: Status of indexes.
471
+ :rtype: dict
472
+ """
473
+ request = Request(
474
+ method="get", endpoint="/_admin/cluster/vpackSortMigration/check"
475
+ )
476
+
477
+ def response_handler(resp: Response) -> Json:
478
+ if not resp.is_success:
479
+ raise ClusterVpackSortMigrationError(resp, request)
480
+ result: Json = resp.body["result"]
481
+ return result
482
+
483
+ return self._execute(request, response_handler)
484
+
485
+ def migrate_vpack_sorting(self) -> Result[Json]:
486
+ """Migrate instances to the new VPack sorting behavior.
487
+
488
+ :return: Status of the VPack sort migration.
489
+ :rtype: dict
490
+ """
491
+ request = Request(
492
+ method="put", endpoint="/_admin/cluster/vpackSortMigration/migrate"
493
+ )
494
+
495
+ def response_handler(resp: Response) -> Json:
496
+ if not resp.is_success:
497
+ raise ClusterVpackSortMigrationError(resp, request)
498
+ result: Json = resp.body["result"]
499
+ return result
500
+
501
+ return self._execute(request, response_handler)
@@ -935,7 +935,9 @@ class Database(ApiGroup):
935
935
 
936
936
  return self._execute(request, response_handler)
937
937
 
938
- def log_levels(self, server_id: Optional[str] = None) -> Result[Json]:
938
+ def log_levels(
939
+ self, server_id: Optional[str] = None, with_appenders: Optional[bool] = None
940
+ ) -> Result[Json]:
939
941
  """Return current logging levels.
940
942
 
941
943
  :param server_id: Forward log level to a specific server. This makes it
@@ -943,12 +945,16 @@ class Database(ApiGroup):
943
945
  JWT authentication whereas Coordinators also support authentication
944
946
  using usernames and passwords.
945
947
  :type server_id: str
948
+ :param with_appenders: Include appenders in the response.
949
+ :type with_appenders: bool
946
950
  :return: Current logging levels.
947
951
  :rtype: dict
948
952
  """
949
953
  params: Params = {}
950
954
  if server_id is not None:
951
955
  params["serverId"] = server_id
956
+ if with_appenders is not None:
957
+ params["withAppenders"] = with_appenders
952
958
 
953
959
  request = Request(method="get", endpoint="/_admin/log/level", params=params)
954
960
 
@@ -961,7 +967,10 @@ class Database(ApiGroup):
961
967
  return self._execute(request, response_handler)
962
968
 
963
969
  def set_log_levels(
964
- self, server_id: Optional[str] = None, **kwargs: Dict[str, Any]
970
+ self,
971
+ server_id: Optional[str] = None,
972
+ with_appenders: Optional[bool] = None,
973
+ **kwargs: Dict[str, Any],
965
974
  ) -> Result[Json]:
966
975
  """Set the logging levels.
967
976
 
@@ -983,6 +992,8 @@ class Database(ApiGroup):
983
992
  JWT authentication whereas Coordinators also support authentication
984
993
  using usernames and passwords.
985
994
  :type server_id: str | None
995
+ :param with_appenders: Include appenders in the request.
996
+ :type with_appenders: bool | None
986
997
  :param kwargs: Logging levels.
987
998
  :type kwargs: Dict[str, Any]
988
999
  :return: New logging levels.
@@ -991,6 +1002,8 @@ class Database(ApiGroup):
991
1002
  params: Params = {}
992
1003
  if server_id is not None:
993
1004
  params["serverId"] = server_id
1005
+ if with_appenders is not None:
1006
+ params["withAppenders"] = with_appenders
994
1007
 
995
1008
  request = Request(
996
1009
  method="put", endpoint="/_admin/log/level", params=params, data=kwargs
@@ -1684,6 +1697,7 @@ class Database(ApiGroup):
1684
1697
  shard_count: Optional[int] = None,
1685
1698
  replication_factor: Optional[int] = None,
1686
1699
  write_concern: Optional[int] = None,
1700
+ satellite_collections: Optional[Sequence[str]] = None,
1687
1701
  ) -> Result[Graph]:
1688
1702
  """Create a new graph.
1689
1703
 
@@ -1708,7 +1722,8 @@ class Database(ApiGroup):
1708
1722
  :param smart_field: Document field used to shard the vertices of the
1709
1723
  graph. To use this, parameter **smart** must be set to True and
1710
1724
  every vertex in the graph must have the smart field. Applies only
1711
- to enterprise version of ArangoDB.
1725
+ to enterprise version of ArangoDB. NOTE: If this field is
1726
+ None and **smart** is True, an Enterprise Graph will be created.
1712
1727
  :type smart_field: str | None
1713
1728
  :param shard_count: Number of shards used for every collection in the
1714
1729
  graph. To use this, parameter **smart** must be set to True and
@@ -1731,6 +1746,12 @@ class Database(ApiGroup):
1731
1746
  parameter cannot be larger than that of **replication_factor**.
1732
1747
  Default value is 1. Used for clusters only.
1733
1748
  :type write_concern: int
1749
+ :param satellite_collections: An array of collection names that is
1750
+ used to create SatelliteCollections for a (Disjoint) SmartGraph
1751
+ using SatelliteCollections (Enterprise Edition only). Each array
1752
+ element must be a string and a valid collection name. The
1753
+ collection type cannot be modified later.
1754
+ :type satellite_collections: [str] | None
1734
1755
  :return: Graph API wrapper.
1735
1756
  :rtype: arango.graph.Graph
1736
1757
  :raise arango.exceptions.GraphCreateError: If create fails.
@@ -1771,6 +1792,8 @@ class Database(ApiGroup):
1771
1792
  data["options"]["replicationFactor"] = replication_factor
1772
1793
  if write_concern is not None: # pragma: no cover
1773
1794
  data["options"]["writeConcern"] = write_concern
1795
+ if satellite_collections is not None: # pragma: no cover
1796
+ data["options"]["satellites"] = satellite_collections
1774
1797
 
1775
1798
  request = Request(method="post", endpoint="/_api/gharial", data=data)
1776
1799
 
@@ -1047,6 +1047,10 @@ class ClusterRebalanceError(ArangoServerError):
1047
1047
  """Failed to execute cluster re-balancing operation (load/set)."""
1048
1048
 
1049
1049
 
1050
+ class ClusterVpackSortMigrationError(ArangoServerError):
1051
+ """Failed to execute vpack sort migration request."""
1052
+
1053
+
1050
1054
  ##################
1051
1055
  # JWT Exceptions #
1052
1056
  ##################
@@ -365,6 +365,12 @@ def format_aql_query(body: Json) -> Json:
365
365
  # New in 3.11
366
366
  if "peakMemoryUsage" in body:
367
367
  result["peak_memory_usage"] = body["peakMemoryUsage"]
368
+
369
+ # New in 3.12.2
370
+ if "modificationQuery" in body:
371
+ result["modification_query"] = body["modificationQuery"]
372
+ if "warnings" in body:
373
+ result["warnings"] = body["warnings"]
368
374
  return verify_format(body, result)
369
375
 
370
376
 
@@ -1255,6 +1261,8 @@ def format_graph_properties(body: Json) -> Json:
1255
1261
  }
1256
1262
  if "isSmart" in body:
1257
1263
  result["smart"] = body["isSmart"]
1264
+ if "isDisjoint" in body:
1265
+ result["disjoint"] = body["isDisjoint"]
1258
1266
  if "isSatellite" in body:
1259
1267
  result["is_satellite"] = body["isSatellite"]
1260
1268
  if "smartGraphAttribute" in body:
@@ -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.0"
15
+ driver_version = "8.1.1"
16
16
  driver_header = "python-arango/" + driver_version + " (" + flags + ")"
17
17
  normalized_headers: Headers = {
18
18
  "charset": "utf-8",
@@ -60,7 +60,7 @@ database.
60
60
  # Set the log .
61
61
  sys_db.set_log_levels(
62
62
  agency='DEBUG',
63
- collector='INFO',
63
+ deprecation='INFO',
64
64
  threads='WARNING'
65
65
  )
66
66
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: python-arango
3
- Version: 8.1.0
3
+ Version: 8.1.2
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>
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes