gremlinpython 3.7.2__tar.gz → 3.7.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 (42) hide show
  1. gremlinpython-3.7.4/NOTICE +5 -0
  2. {gremlinpython-3.7.2/gremlinpython.egg-info → gremlinpython-3.7.4}/PKG-INFO +5 -2
  3. {gremlinpython-3.7.2 → gremlinpython-3.7.4}/gremlin_python/__version__.py +2 -2
  4. {gremlinpython-3.7.2 → gremlinpython-3.7.4}/gremlin_python/driver/aiohttp/transport.py +7 -1
  5. {gremlinpython-3.7.2 → gremlinpython-3.7.4}/gremlin_python/driver/client.py +4 -2
  6. {gremlinpython-3.7.2 → gremlinpython-3.7.4}/gremlin_python/driver/connection.py +13 -3
  7. {gremlinpython-3.7.2 → gremlinpython-3.7.4}/gremlin_python/driver/driver_remote_connection.py +3 -1
  8. {gremlinpython-3.7.2 → gremlinpython-3.7.4}/gremlin_python/driver/useragent.py +1 -1
  9. {gremlinpython-3.7.2 → gremlinpython-3.7.4}/gremlin_python/process/graph_traversal.py +39 -6
  10. {gremlinpython-3.7.2 → gremlinpython-3.7.4}/gremlin_python/structure/io/graphbinaryV1.py +12 -3
  11. {gremlinpython-3.7.2 → gremlinpython-3.7.4/gremlinpython.egg-info}/PKG-INFO +5 -2
  12. {gremlinpython-3.7.2 → gremlinpython-3.7.4}/gremlinpython.egg-info/requires.txt +1 -1
  13. {gremlinpython-3.7.2 → gremlinpython-3.7.4}/setup.cfg +0 -3
  14. {gremlinpython-3.7.2 → gremlinpython-3.7.4}/setup.py +7 -9
  15. gremlinpython-3.7.2/NOTICE +0 -5
  16. {gremlinpython-3.7.2 → gremlinpython-3.7.4}/LICENSE +0 -0
  17. {gremlinpython-3.7.2 → gremlinpython-3.7.4}/MANIFEST.in +0 -0
  18. {gremlinpython-3.7.2 → gremlinpython-3.7.4}/README.rst +0 -0
  19. {gremlinpython-3.7.2 → gremlinpython-3.7.4}/gremlin_python/__init__.py +0 -0
  20. {gremlinpython-3.7.2 → gremlinpython-3.7.4}/gremlin_python/driver/__init__.py +0 -0
  21. {gremlinpython-3.7.2 → gremlinpython-3.7.4}/gremlin_python/driver/aiohttp/__init__.py +0 -0
  22. {gremlinpython-3.7.2 → gremlinpython-3.7.4}/gremlin_python/driver/protocol.py +0 -0
  23. {gremlinpython-3.7.2 → gremlinpython-3.7.4}/gremlin_python/driver/remote_connection.py +0 -0
  24. {gremlinpython-3.7.2 → gremlinpython-3.7.4}/gremlin_python/driver/request.py +0 -0
  25. {gremlinpython-3.7.2 → gremlinpython-3.7.4}/gremlin_python/driver/resultset.py +0 -0
  26. {gremlinpython-3.7.2 → gremlinpython-3.7.4}/gremlin_python/driver/serializer.py +0 -0
  27. {gremlinpython-3.7.2 → gremlinpython-3.7.4}/gremlin_python/driver/transport.py +0 -0
  28. {gremlinpython-3.7.2 → gremlinpython-3.7.4}/gremlin_python/process/__init__.py +0 -0
  29. {gremlinpython-3.7.2 → gremlinpython-3.7.4}/gremlin_python/process/anonymous_traversal.py +0 -0
  30. {gremlinpython-3.7.2 → gremlinpython-3.7.4}/gremlin_python/process/strategies.py +0 -0
  31. {gremlinpython-3.7.2 → gremlinpython-3.7.4}/gremlin_python/process/translator.py +0 -0
  32. {gremlinpython-3.7.2 → gremlinpython-3.7.4}/gremlin_python/process/traversal.py +0 -0
  33. {gremlinpython-3.7.2 → gremlinpython-3.7.4}/gremlin_python/statics.py +0 -0
  34. {gremlinpython-3.7.2 → gremlinpython-3.7.4}/gremlin_python/structure/__init__.py +0 -0
  35. {gremlinpython-3.7.2 → gremlinpython-3.7.4}/gremlin_python/structure/graph.py +0 -0
  36. {gremlinpython-3.7.2 → gremlinpython-3.7.4}/gremlin_python/structure/io/__init__.py +0 -0
  37. {gremlinpython-3.7.2 → gremlinpython-3.7.4}/gremlin_python/structure/io/graphsonV2d0.py +0 -0
  38. {gremlinpython-3.7.2 → gremlinpython-3.7.4}/gremlin_python/structure/io/graphsonV3d0.py +0 -0
  39. {gremlinpython-3.7.2 → gremlinpython-3.7.4}/gremlin_python/structure/io/util.py +0 -0
  40. {gremlinpython-3.7.2 → gremlinpython-3.7.4}/gremlinpython.egg-info/SOURCES.txt +0 -0
  41. {gremlinpython-3.7.2 → gremlinpython-3.7.4}/gremlinpython.egg-info/dependency_links.txt +0 -0
  42. {gremlinpython-3.7.2 → gremlinpython-3.7.4}/gremlinpython.egg-info/top_level.txt +0 -0
@@ -0,0 +1,5 @@
1
+ Apache TinkerPop
2
+ Copyright 2015-2025 The Apache Software Foundation.
3
+
4
+ This product includes software developed at
5
+ The Apache Software Foundation (http://www.apache.org/).
@@ -1,14 +1,17 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: gremlinpython
3
- Version: 3.7.2
3
+ Version: 3.7.4
4
4
  Summary: Gremlin-Python for Apache TinkerPop
5
- Home-page: http://tinkerpop.apache.org
5
+ Home-page: https://tinkerpop.apache.org
6
+ Maintainer: Apache TinkerPop
7
+ Maintainer-email: dev@tinkerpop.apache.org
6
8
  License: Apache 2
7
9
  Platform: UNKNOWN
8
10
  Classifier: Intended Audience :: Developers
9
11
  Classifier: License :: OSI Approved :: Apache Software License
10
12
  Classifier: Natural Language :: English
11
13
  Classifier: Programming Language :: Python :: 3
14
+ Requires-Python: >=3.9
12
15
  Description-Content-Type: text/x-rst
13
16
  Provides-Extra: kerberos
14
17
  Provides-Extra: ujson
@@ -16,5 +16,5 @@ KIND, either express or implied. See the License for the
16
16
  specific language governing permissions and limitations
17
17
  under the License.
18
18
  '''
19
- version = '3.7.2'
20
- timestamp = 1713201447
19
+ version = '3.7.4'
20
+ timestamp = 1754672102
@@ -29,7 +29,8 @@ __author__ = 'Lyndon Bauto (lyndonb@bitquilltech.com)'
29
29
  class AiohttpTransport(AbstractBaseTransport):
30
30
  nest_asyncio_applied = False
31
31
 
32
- def __init__(self, call_from_event_loop=None, read_timeout=None, write_timeout=None, **kwargs):
32
+ def __init__(self, call_from_event_loop=None, read_timeout=None, write_timeout=None, enable_compression=False,
33
+ **kwargs):
33
34
  if call_from_event_loop is not None and call_from_event_loop and not AiohttpTransport.nest_asyncio_applied:
34
35
  """
35
36
  The AiohttpTransport implementation uses the asyncio event loop. Because of this, it cannot be called
@@ -50,10 +51,15 @@ class AiohttpTransport(AbstractBaseTransport):
50
51
  self._aiohttp_kwargs = kwargs
51
52
  self._write_timeout = write_timeout
52
53
  self._read_timeout = read_timeout
54
+ self._enable_compression = enable_compression
53
55
  if "max_content_length" in self._aiohttp_kwargs:
54
56
  self._aiohttp_kwargs["max_msg_size"] = self._aiohttp_kwargs.pop("max_content_length")
57
+ if "max_msg_size" not in self._aiohttp_kwargs:
58
+ self._aiohttp_kwargs["max_msg_size"] = 10 * 1024 * 1024
55
59
  if "ssl_options" in self._aiohttp_kwargs:
56
60
  self._aiohttp_kwargs["ssl"] = self._aiohttp_kwargs.pop("ssl_options")
61
+ if self._enable_compression and "compress" not in self._aiohttp_kwargs:
62
+ self._aiohttp_kwargs["compress"] = 15 # enable per-message deflate compression with 32k sliding window size
57
63
 
58
64
  def __del__(self):
59
65
  # Close will only actually close if things are left open, so this is safe to call.
@@ -44,7 +44,8 @@ class Client:
44
44
  transport_factory=None, pool_size=None, max_workers=None,
45
45
  message_serializer=None, username="", password="",
46
46
  kerberized_service="", headers=None, session=None,
47
- enable_user_agent_on_connect=True, **transport_kwargs):
47
+ enable_user_agent_on_connect=True, enable_compression=False,
48
+ **transport_kwargs):
48
49
  log.info("Creating Client with url '%s'", url)
49
50
 
50
51
  # check via url that we are using http protocol
@@ -55,6 +56,7 @@ class Client:
55
56
  self._headers = headers
56
57
  self._enable_user_agent_on_connect = enable_user_agent_on_connect
57
58
  self._traversal_source = traversal_source
59
+ self._enable_compression = enable_compression
58
60
  if not self._use_http and "max_content_length" not in transport_kwargs:
59
61
  transport_kwargs["max_content_length"] = 10 * 1024 * 1024
60
62
  if message_serializer is None:
@@ -77,7 +79,7 @@ class Client:
77
79
  if self._use_http:
78
80
  return AiohttpHTTPTransport(**transport_kwargs)
79
81
  else:
80
- return AiohttpTransport(**transport_kwargs)
82
+ return AiohttpTransport(enable_compression=enable_compression, **transport_kwargs)
81
83
  self._transport_factory = transport_factory
82
84
  if protocol_factory is None:
83
85
  def protocol_factory():
@@ -39,9 +39,7 @@ class Connection:
39
39
  self._inited = False
40
40
  self._enable_user_agent_on_connect = enable_user_agent_on_connect
41
41
  if self._enable_user_agent_on_connect:
42
- if self._headers is None:
43
- self._headers = dict()
44
- self._headers[useragent.userAgentHeader] = useragent.userAgent
42
+ self.__add_header(useragent.userAgentHeader, useragent.userAgent)
45
43
 
46
44
  def connect(self):
47
45
  if self._transport:
@@ -94,3 +92,15 @@ class Connection:
94
92
  break
95
93
  finally:
96
94
  self._pool.put_nowait(self)
95
+
96
+ def __add_header(self, key, value):
97
+ if self._headers is None:
98
+ self._headers = dict()
99
+ # Headers may be a list of pairs
100
+ if isinstance(self._headers, list):
101
+ for pair in self._headers:
102
+ if pair[0] == key:
103
+ self._headers.remove(pair)
104
+ self._headers.append((key, value))
105
+ else:
106
+ self._headers[key] = value
@@ -39,7 +39,7 @@ class DriverRemoteConnection(RemoteConnection):
39
39
  username="", password="", kerberized_service='',
40
40
  message_serializer=None, graphson_reader=None,
41
41
  graphson_writer=None, headers=None, session=None,
42
- enable_user_agent_on_connect=True, **transport_kwargs):
42
+ enable_user_agent_on_connect=True, enable_compression=False, **transport_kwargs):
43
43
  log.info("Creating DriverRemoteConnection with url '%s'", str(url))
44
44
  self.__url = url
45
45
  self.__traversal_source = traversal_source
@@ -56,6 +56,7 @@ class DriverRemoteConnection(RemoteConnection):
56
56
  self.__headers = headers
57
57
  self.__session = session
58
58
  self.__enable_user_agent_on_connect = enable_user_agent_on_connect
59
+ self.__enable_compression = enable_compression
59
60
  self.__transport_kwargs = transport_kwargs
60
61
 
61
62
  # keeps a list of sessions that have been spawned from this DriverRemoteConnection
@@ -78,6 +79,7 @@ class DriverRemoteConnection(RemoteConnection):
78
79
  headers=headers,
79
80
  session=session,
80
81
  enable_user_agent_on_connect=enable_user_agent_on_connect,
82
+ enable_compression=enable_compression,
81
83
  **transport_kwargs)
82
84
  self._url = self._client._url
83
85
  self._traversal_source = self._client._traversal_source
@@ -18,7 +18,7 @@
18
18
  #
19
19
  import platform
20
20
 
21
- gremlin_version = "3.7.2" # DO NOT MODIFY - Configured automatically by Maven Replacer Plugin
21
+ gremlin_version = "3.7.4" # DO NOT MODIFY - Configured automatically by Maven Replacer Plugin
22
22
 
23
23
  def _generate_user_agent():
24
24
  application_name = "NotAvailable"
@@ -542,9 +542,16 @@ class GraphTraversal(Traversal):
542
542
  "gremlin_python.process.GraphTraversalSource.hasKey will be replaced by "
543
543
  "gremlin_python.process.GraphTraversalSource.has_key.",
544
544
  DeprecationWarning)
545
- return self.has_key_(*args)
545
+ return self.has_key(*args)
546
546
 
547
547
  def has_key_(self, *args):
548
+ warnings.warn(
549
+ "gremlin_python.process.GraphTraversalSource.has_key_ will be replaced by "
550
+ "gremlin_python.process.GraphTraversalSource.has_key.",
551
+ DeprecationWarning)
552
+ return self.has_key(*args)
553
+
554
+ def has_key(self, *args):
548
555
  self.bytecode.add_step("hasKey", *args)
549
556
  return self
550
557
 
@@ -1301,11 +1308,19 @@ class __(object, metaclass=MagicType):
1301
1308
  "gremlin_python.process.__.hasKey will be replaced by "
1302
1309
  "gremlin_python.process.__.has_key.",
1303
1310
  DeprecationWarning)
1304
- return cls.has_key_(*args)
1311
+ return cls.has_key(*args)
1305
1312
 
1306
1313
  @classmethod
1307
1314
  def has_key_(cls, *args):
1308
- return cls.graph_traversal(None, None, Bytecode()).has_key_(*args)
1315
+ warnings.warn(
1316
+ "gremlin_python.process.__.has_key_ will be replaced by "
1317
+ "gremlin_python.process.__.has_key.",
1318
+ DeprecationWarning)
1319
+ return cls.has_key(*args)
1320
+
1321
+ @classmethod
1322
+ def has_key (cls, *args):
1323
+ return cls.graph_traversal(None, None, Bytecode()).has_key(*args)
1309
1324
 
1310
1325
  @classmethod
1311
1326
  def hasLabel(cls, *args):
@@ -1467,6 +1482,10 @@ class __(object, metaclass=MagicType):
1467
1482
  def min_(cls, *args):
1468
1483
  return cls.graph_traversal(None, None, Bytecode()).min_(*args)
1469
1484
 
1485
+ @classmethod
1486
+ def none(cls, *args):
1487
+ return cls.graph_traversal(None, None, Bytecode()).none(*args)
1488
+
1470
1489
  @classmethod
1471
1490
  def not_(cls, *args):
1472
1491
  return cls.graph_traversal(None, None, Bytecode()).not_(*args)
@@ -1943,6 +1962,10 @@ def dedup(*args):
1943
1962
  return __.dedup(*args)
1944
1963
 
1945
1964
 
1965
+ def disjunct(*args):
1966
+ return __.disjunct(*args)
1967
+
1968
+
1946
1969
  def drop(*args):
1947
1970
  return __.drop(*args)
1948
1971
 
@@ -2012,12 +2035,14 @@ def has_id(*args):
2012
2035
 
2013
2036
 
2014
2037
  def hasKey(*args):
2015
- return __.has_key_(*args)
2038
+ return __.has_key(*args)
2016
2039
 
2017
2040
 
2018
2041
  def has_key_(*args):
2019
- return __.has_key_(*args)
2042
+ return __.has_key(*args)
2020
2043
 
2044
+ def has_key(*args):
2045
+ return __.has_key(*args)
2021
2046
 
2022
2047
  def hasLabel(*args):
2023
2048
  return __.has_label(*args)
@@ -2147,6 +2172,10 @@ def min_(*args):
2147
2172
  return __.min_(*args)
2148
2173
 
2149
2174
 
2175
+ def none(*args):
2176
+ return __.none(*args)
2177
+
2178
+
2150
2179
  def not_(*args):
2151
2180
  return __.not_(*args)
2152
2181
 
@@ -2435,6 +2464,8 @@ statics.add_static('date_diff', date_diff)
2435
2464
 
2436
2465
  statics.add_static('dedup', dedup)
2437
2466
 
2467
+ statics.add_static('disjunct', disjunct)
2468
+
2438
2469
  statics.add_static('drop', drop)
2439
2470
 
2440
2471
  statics.add_static('element', element)
@@ -2471,7 +2502,7 @@ statics.add_static('has_id', has_id)
2471
2502
 
2472
2503
  statics.add_static('hasKey', hasKey)
2473
2504
 
2474
- statics.add_static('has_key', has_key_)
2505
+ statics.add_static('has_key', has_key)
2475
2506
 
2476
2507
  statics.add_static('hasLabel', hasLabel)
2477
2508
 
@@ -2535,6 +2566,8 @@ statics.add_static('merge_v', merge_v)
2535
2566
 
2536
2567
  statics.add_static('min_', min_)
2537
2568
 
2569
+ statics.add_static('none', none)
2570
+
2538
2571
  statics.add_static('not_', not_)
2539
2572
 
2540
2573
  statics.add_static('optional', optional)
@@ -603,7 +603,9 @@ class EdgeIO(_GraphBinaryTypeIO):
603
603
  inv = Vertex(r.read_object(b), r.to_object(b, DataType.string, False))
604
604
  outv = Vertex(r.read_object(b), r.to_object(b, DataType.string, False))
605
605
  b.read(2)
606
- properties = r.read_object(b)
606
+ props = r.read_object(b)
607
+ # null properties are returned as empty lists
608
+ properties = [] if props is None else props
607
609
  edge = Edge(edgeid, outv, edgelbl, inv, properties)
608
610
  return edge
609
611
 
@@ -682,7 +684,12 @@ class VertexIO(_GraphBinaryTypeIO):
682
684
 
683
685
  @classmethod
684
686
  def _read_vertex(cls, b, r):
685
- vertex = Vertex(r.read_object(b), r.to_object(b, DataType.string, False), r.read_object(b))
687
+ vertex_id = r.read_object(b)
688
+ vertex_label = r.to_object(b, DataType.string, False)
689
+ props = r.read_object(b)
690
+ # null properties are returned as empty lists
691
+ properties = [] if props is None else props
692
+ vertex = Vertex(vertex_id, vertex_label, properties)
686
693
  return vertex
687
694
 
688
695
 
@@ -709,7 +716,9 @@ class VertexPropertyIO(_GraphBinaryTypeIO):
709
716
  def _read_vertexproperty(cls, b, r):
710
717
  vp = VertexProperty(r.read_object(b), r.to_object(b, DataType.string, False), r.read_object(b), None)
711
718
  b.read(2)
712
- vp.properties = r.read_object(b)
719
+ properties = r.read_object(b)
720
+ # null properties are returned as empty lists
721
+ vp.properties = [] if properties is None else properties
713
722
  return vp
714
723
 
715
724
 
@@ -1,14 +1,17 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: gremlinpython
3
- Version: 3.7.2
3
+ Version: 3.7.4
4
4
  Summary: Gremlin-Python for Apache TinkerPop
5
- Home-page: http://tinkerpop.apache.org
5
+ Home-page: https://tinkerpop.apache.org
6
+ Maintainer: Apache TinkerPop
7
+ Maintainer-email: dev@tinkerpop.apache.org
6
8
  License: Apache 2
7
9
  Platform: UNKNOWN
8
10
  Classifier: Intended Audience :: Developers
9
11
  Classifier: License :: OSI Approved :: Apache Software License
10
12
  Classifier: Natural Language :: English
11
13
  Classifier: Programming Language :: Python :: 3
14
+ Requires-Python: >=3.9
12
15
  Description-Content-Type: text/x-rst
13
16
  Provides-Extra: kerberos
14
17
  Provides-Extra: ujson
@@ -1,8 +1,8 @@
1
1
  nest_asyncio
2
2
  aiohttp<4.0.0,>=3.8.0
3
3
  aenum<4.0.0,>=1.4.5
4
- six<2.0.0,>=1.10.0
5
4
  isodate<1.0.0,>=0.6.0
5
+ async-timeout<5.0.0,>=4.0.3
6
6
 
7
7
  [kerberos]
8
8
  kerberos<2.0.0,>=1.3.0
@@ -1,6 +1,3 @@
1
- [bdist_wheel]
2
- universal = 1
3
-
4
1
  [aliases]
5
2
  test = pytest
6
3
 
@@ -18,7 +18,6 @@ under the License.
18
18
  """
19
19
  import codecs
20
20
  import os
21
- import sys
22
21
  import time
23
22
  from setuptools import setup
24
23
 
@@ -48,13 +47,10 @@ install_requires = [
48
47
  'nest_asyncio',
49
48
  'aiohttp>=3.8.0,<4.0.0',
50
49
  'aenum>=1.4.5,<4.0.0',
51
- 'six>=1.10.0,<2.0.0',
52
- 'isodate>=0.6.0,<1.0.0'
50
+ 'isodate>=0.6.0,<1.0.0',
51
+ 'async-timeout>=4.0.3,<5.0.0'
53
52
  ]
54
53
 
55
- if sys.version_info < (3, 5):
56
- install_requires += ['pyparsing>=2.4.7,<3.0.0']
57
-
58
54
  setup(
59
55
  name='gremlinpython',
60
56
  version=version,
@@ -62,8 +58,10 @@ setup(
62
58
  'gremlin_python.driver.aiohttp', 'gremlin_python.process',
63
59
  'gremlin_python.structure', 'gremlin_python.structure.io'],
64
60
  license='Apache 2',
65
- url='http://tinkerpop.apache.org',
61
+ url='https://tinkerpop.apache.org',
66
62
  description='Gremlin-Python for Apache TinkerPop',
63
+ maintainer='Apache TinkerPop',
64
+ maintainer_email='dev@tinkerpop.apache.org',
67
65
  long_description=codecs.open("README.rst", "r", "UTF-8").read(),
68
66
  long_description_content_type='text/x-rst',
69
67
  test_suite="tests",
@@ -74,7 +72,6 @@ setup(
74
72
  ],
75
73
  tests_require=[
76
74
  'pytest>=4.6.4,<7.2.0',
77
- 'mock>=3.0.5,<5.0.0',
78
75
  'radish-bdd==0.13.4',
79
76
  'PyHamcrest>=1.9.0,<3.0.0',
80
77
  'PyYAML>=5.3'
@@ -89,5 +86,6 @@ setup(
89
86
  "License :: OSI Approved :: Apache Software License",
90
87
  "Natural Language :: English",
91
88
  "Programming Language :: Python :: 3"
92
- ]
89
+ ],
90
+ python_requires='>=3.9'
93
91
  )
@@ -1,5 +0,0 @@
1
- Apache TinkerPop
2
- Copyright 2015-2024 The Apache Software Foundation.
3
-
4
- This product includes software developed at
5
- The Apache Software Foundation (http://www.apache.org/).
File without changes
File without changes
File without changes