mirror of
https://github.com/varun-r-mallya/py-libp2p.git
synced 2025-12-31 20:36:24 +00:00
* initialise the module * added content routing * added routing module * added peer routing * added value store * added utilities functions * added main kademlia file * fixed create_key_from_binary function * example to test kademlia dht * added protocol ID and enhanced logging for peer store size in provider and consumer nodes * refactor: specify stream type in handle_stream method and add peer in routing table * removed content routing * added default value of count for finding closest peers * added functions to find close peers * refactor: remove content routing and enhance peer discovery * added put value function * added get value function * fix: improve logging and handle key encoding in get_value method * refactor: remove ContentRouting import from __init__.py * refactor: improved basic kademlia example * added protobuf files * replaced json with protobuf * refactor: enhance peer discovery and routing logic in KadDHT * refactor: enhance Kademlia routing table to use PeerInfo objects and improve peer management * refactor: enhance peer addition logic to utilize PeerInfo objects in routing table * feat: implement content provider functionality in Kademlia DHT * refactor: update value store to use datetime for validity management * refactor: update RoutingTable initialization to include host reference * refactor: enhance KBucket and RoutingTable for improved peer management and functionality * refactor: streamline peer discovery and value storage methods in KadDHT * refactor: update KadDHT and related classes for async peer management and enhanced value storage * refactor: enhance ProviderStore initialization and improve peer routing integration * test: add tests for Kademlia DHT functionality * fix linting issues * pydocstyle issues fixed * CICD pipeline issues solved * fix: update docstring format for find_peer method * refactor: improve logging and remove unused code in DHT implementation * refactor: clean up logging and remove unused imports in DHT and test files * Refactor logging setup and improve DHT stream handling with varint length prefixes * Update bootstrap peer handling in basic_dht example and refactor peer routing to accept string addresses * Enhance peer querying in Kademlia DHT by implementing parallel queries using Trio. * Enhance peer querying by adding deduplication checks * Refactor DHT implementation to use varint for length prefixes and enhance logging for better traceability * Add base58 encoding for value storage and enhance logging in basic_dht example * Refactor Kademlia DHT to support server/client modes * Added unit tests * Refactor documentation to fixsome warning * Add unit tests and remove outdated tests * Fixed precommit errora * Refactor error handling test to raise StringParseError for invalid bootstrap addresses * Add libp2p.kad_dht to the list of subpackages in documentation * Fix expiration and republish checks to use inclusive comparison * Add __init__.py file to libp2p.kad_dht.pb package * Refactor get value and put value to run in parallel with query timeout * Refactor provider message handling to use parallel processing with timeout * Add methods for provider store in KadDHT class * Refactor KadDHT and ProviderStore methods to improve type hints and enhance parallel processing * Add documentation for libp2p.kad_dht.pb module. * Update documentation for libp2p.kad_dht package to include subpackages and correct formatting * Fix formatting in documentation for libp2p.kad_dht package by correcting the subpackage reference * Fix header formatting in libp2p.kad_dht.pb documentation * Change log level from info to debug for various logging statements. * fix CICD issues (post revamp) * fixed value store unit test * Refactored kademlia example * Refactor Kademlia example: enhance logging, improve bootstrap node connection, and streamline server address handling * removed bootstrap module * Refactor Kademlia DHT example and core modules: enhance logging, remove unused code, and improve peer handling * Added docs of kad dht example * Update server address log file path to use the script's directory * Refactor: Introduce DHTMode enum for clearer mode management * moved xor_distance function to utils.py * Enhance logging in ValueStore and KadDHT: include decoded value in debug logs and update parameter description for validity * Add handling for closest peers in GET_VALUE response when value is not found * Handled failure scenario for PUT_VALUE * Remove kademlia demo from project scripts and contributing documentation * spelling and logging --------- Co-authored-by: pacrob <5199899+pacrob@users.noreply.github.com>
134 lines
5.4 KiB
Python
134 lines
5.4 KiB
Python
"""
|
|
@generated by mypy-protobuf. Do not edit manually!
|
|
isort:skip_file
|
|
"""
|
|
|
|
import builtins
|
|
import collections.abc
|
|
import google.protobuf.descriptor
|
|
import google.protobuf.internal.containers
|
|
import google.protobuf.internal.enum_type_wrapper
|
|
import google.protobuf.message
|
|
import sys
|
|
import typing
|
|
|
|
if sys.version_info >= (3, 10):
|
|
import typing as typing_extensions
|
|
else:
|
|
import typing_extensions
|
|
|
|
DESCRIPTOR: google.protobuf.descriptor.FileDescriptor
|
|
|
|
@typing.final
|
|
class Record(google.protobuf.message.Message):
|
|
DESCRIPTOR: google.protobuf.descriptor.Descriptor
|
|
|
|
KEY_FIELD_NUMBER: builtins.int
|
|
VALUE_FIELD_NUMBER: builtins.int
|
|
TIMERECEIVED_FIELD_NUMBER: builtins.int
|
|
key: builtins.bytes
|
|
value: builtins.bytes
|
|
timeReceived: builtins.str
|
|
def __init__(
|
|
self,
|
|
*,
|
|
key: builtins.bytes = ...,
|
|
value: builtins.bytes = ...,
|
|
timeReceived: builtins.str = ...,
|
|
) -> None: ...
|
|
def ClearField(self, field_name: typing.Literal["key", b"key", "timeReceived", b"timeReceived", "value", b"value"]) -> None: ...
|
|
|
|
global___Record = Record
|
|
|
|
@typing.final
|
|
class Message(google.protobuf.message.Message):
|
|
DESCRIPTOR: google.protobuf.descriptor.Descriptor
|
|
|
|
class _MessageType:
|
|
ValueType = typing.NewType("ValueType", builtins.int)
|
|
V: typing_extensions.TypeAlias = ValueType
|
|
|
|
class _MessageTypeEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[Message._MessageType.ValueType], builtins.type):
|
|
DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor
|
|
PUT_VALUE: Message._MessageType.ValueType # 0
|
|
GET_VALUE: Message._MessageType.ValueType # 1
|
|
ADD_PROVIDER: Message._MessageType.ValueType # 2
|
|
GET_PROVIDERS: Message._MessageType.ValueType # 3
|
|
FIND_NODE: Message._MessageType.ValueType # 4
|
|
PING: Message._MessageType.ValueType # 5
|
|
|
|
class MessageType(_MessageType, metaclass=_MessageTypeEnumTypeWrapper): ...
|
|
PUT_VALUE: Message.MessageType.ValueType # 0
|
|
GET_VALUE: Message.MessageType.ValueType # 1
|
|
ADD_PROVIDER: Message.MessageType.ValueType # 2
|
|
GET_PROVIDERS: Message.MessageType.ValueType # 3
|
|
FIND_NODE: Message.MessageType.ValueType # 4
|
|
PING: Message.MessageType.ValueType # 5
|
|
|
|
class _ConnectionType:
|
|
ValueType = typing.NewType("ValueType", builtins.int)
|
|
V: typing_extensions.TypeAlias = ValueType
|
|
|
|
class _ConnectionTypeEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[Message._ConnectionType.ValueType], builtins.type):
|
|
DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor
|
|
NOT_CONNECTED: Message._ConnectionType.ValueType # 0
|
|
CONNECTED: Message._ConnectionType.ValueType # 1
|
|
CAN_CONNECT: Message._ConnectionType.ValueType # 2
|
|
CANNOT_CONNECT: Message._ConnectionType.ValueType # 3
|
|
|
|
class ConnectionType(_ConnectionType, metaclass=_ConnectionTypeEnumTypeWrapper): ...
|
|
NOT_CONNECTED: Message.ConnectionType.ValueType # 0
|
|
CONNECTED: Message.ConnectionType.ValueType # 1
|
|
CAN_CONNECT: Message.ConnectionType.ValueType # 2
|
|
CANNOT_CONNECT: Message.ConnectionType.ValueType # 3
|
|
|
|
@typing.final
|
|
class Peer(google.protobuf.message.Message):
|
|
DESCRIPTOR: google.protobuf.descriptor.Descriptor
|
|
|
|
ID_FIELD_NUMBER: builtins.int
|
|
ADDRS_FIELD_NUMBER: builtins.int
|
|
CONNECTION_FIELD_NUMBER: builtins.int
|
|
id: builtins.bytes
|
|
connection: global___Message.ConnectionType.ValueType
|
|
@property
|
|
def addrs(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.bytes]: ...
|
|
def __init__(
|
|
self,
|
|
*,
|
|
id: builtins.bytes = ...,
|
|
addrs: collections.abc.Iterable[builtins.bytes] | None = ...,
|
|
connection: global___Message.ConnectionType.ValueType = ...,
|
|
) -> None: ...
|
|
def ClearField(self, field_name: typing.Literal["addrs", b"addrs", "connection", b"connection", "id", b"id"]) -> None: ...
|
|
|
|
TYPE_FIELD_NUMBER: builtins.int
|
|
CLUSTERLEVELRAW_FIELD_NUMBER: builtins.int
|
|
KEY_FIELD_NUMBER: builtins.int
|
|
RECORD_FIELD_NUMBER: builtins.int
|
|
CLOSERPEERS_FIELD_NUMBER: builtins.int
|
|
PROVIDERPEERS_FIELD_NUMBER: builtins.int
|
|
type: global___Message.MessageType.ValueType
|
|
clusterLevelRaw: builtins.int
|
|
key: builtins.bytes
|
|
@property
|
|
def record(self) -> global___Record: ...
|
|
@property
|
|
def closerPeers(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___Message.Peer]: ...
|
|
@property
|
|
def providerPeers(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___Message.Peer]: ...
|
|
def __init__(
|
|
self,
|
|
*,
|
|
type: global___Message.MessageType.ValueType = ...,
|
|
clusterLevelRaw: builtins.int = ...,
|
|
key: builtins.bytes = ...,
|
|
record: global___Record | None = ...,
|
|
closerPeers: collections.abc.Iterable[global___Message.Peer] | None = ...,
|
|
providerPeers: collections.abc.Iterable[global___Message.Peer] | None = ...,
|
|
) -> None: ...
|
|
def HasField(self, field_name: typing.Literal["record", b"record"]) -> builtins.bool: ...
|
|
def ClearField(self, field_name: typing.Literal["closerPeers", b"closerPeers", "clusterLevelRaw", b"clusterLevelRaw", "key", b"key", "providerPeers", b"providerPeers", "record", b"record", "type", b"type"]) -> None: ...
|
|
|
|
global___Message = Message
|