Hi all, I'd like to propose removing the AbstractBaseTransport and AbstractBaseProtocol abstract base classes from gremlin-python and having the driver use aiohttp directly.
Background These abstractions were introduced when gremlin-python supported multiple transport backends — originally Tornado, then aiohttp. The transport/protocol split mirrored Tornado's design. When Tornado was removed in favor of aiohttp (discussed previously https://lists.apache.org/thread/gs8mtlwdt2kdc55jskxb9q2dl0zxp5mj), the abstractions remained. With the recent HTTP streaming work (https://github.com/apache/tinkerpop/pull/3396), the protocol layer has been further hollowed out and data_received() was removed from the ABC, data_received_aggregate() and _decode_chunk() were removed from the implementation, and the protocol now only handles request serialization and writing. The receive path bypasses the protocol entirely, with Connection._receive() deserializing GraphBinary directly from the transport stream. Proposal 1. Remove AbstractBaseTransport (transport.py) and AbstractBaseProtocol (protocol.py) 2. Merge the remaining protocol write logic into Connection or directly into the aiohttp transport 3. Have Connection use AiohttpHTTPTransport directly instead of through the ABC With aiohttp being the only transport implementation since Tornado was removed, the codebase would be simplified if transport.py and protocol.py are removed. Thoughts or concerns? Thanks, Guian
