* feat: implemented setup of circuit relay and test cases
* chore: remove test files to be rewritten
* added 1 test suite for protocol
* added 1 test suite for discovery
* fixed protocol timeouts and message types to handle reservations and stream operations.
* Resolved merge conflict in libp2p/tools/utils.py by combining timeout approach with retry mechanism
* fix: linting issues
* docs: updated documentation with circuit-relay
* chore: added enums, improved typing, security and examples
* fix: created proper __init__ file to ensure importability
* fix: replace transport_opt with listen_addrs in examples, fixed typing and improved code
* fix type checking issues across relay module and test suite
* regenerated circuit_pb2 file protobuf version 3
* fixed circuit relay example and moved imports to top in test_security_multistream
* chore: moved imports to the top
* chore: fixed linting of test_circuit_v2_transport.py
---------
Co-authored-by: Manu Sheel Gupta <manusheel.edu@gmail.com>
* 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>
* feat: Replace mplex with yamux as default multiplexer in py-libp2p
* Retain Mplex alongside Yamux in new_swarm with messaging that Yamux is preferred
* moved !BBHII to a constant YAMUX_HEADER_FORMAT at the top of yamux.py with a comment explaining its structure
* renamed the news fragment to 534.feature.rst and updated the description
* renamed the news fragment to 534.feature.rst and updated the description
* added a docstring to clarify that Yamux does not support deadlines natively
* Remove the __main__ block entirely from test_yamux.py
* Replaced the print statements in test_yamux.py with logging.debug
* Added a comment linking to the spec for clarity
* Raise NotImplementedError in YamuxStream.set_deadline per review
* Add muxed_conn to YamuxStream and test deadline NotImplementedError
* Fix Yamux implementation to meet libp2p spec
* Fix None handling in YamuxStream.read and Yamux.read_stream
* Fix test_connected_peers.py to correctly handle peer connections
* fix: Ensure StreamReset is raised on read after local reset in yamux
* fix: Map MuxedStreamError to StreamClosed in NetStream.write for Yamux
* fix: Raise MuxedStreamReset in Yamux.read_stream for closed streams
* fix: Correct Yamux stream read behavior for NetStream tests
Fixed est_net_stream_read_after_remote_closed by updating NetStream.read to raise StreamEOF when the stream is remotely closed and no data is available, aligning with test expectations and Fixed est_net_stream_read_until_eof by modifying YamuxStream.read to block until the stream is closed (
ecv_closed=True) for
=-1 reads, ensuring data is only returned after remote closure.
* fix: Correct Yamux stream read behavior for NetStream tests
Fixed est_net_stream_read_after_remote_closed by updating NetStream.read to raise StreamEOF when the stream is remotely closed and no data is available, aligning with test expectations and Fixed est_net_stream_read_until_eof by modifying YamuxStream.read to block until the stream is closed (
ecv_closed=True) for
=-1 reads, ensuring data is only returned after remote closure.
* fix: raise StreamEOF when reading from closed stream with empty buffer
* fix: prioritize returning buffered data even after stream reset
* fix: prioritize returning buffered data even after stream reset
* fix: Ensure test_net_stream_read_after_remote_closed_and_reset passes in full suite
* fix: Add __init__.py to yamux module to fix documentation build
* fix: Add __init__.py to yamux module to fix documentation build
* fix: Add libp2p.stream_muxer.yamux to libp2p.stream_muxer.rst toctree
* fix: Correct title underline length in libp2p.stream_muxer.yamux.rst
* fix: Add a = so that is matches the libp2p.stream\_muxer.yamux length
* fix(tests): Resolve race condition in network notification test
* fix: fixing failing tests and examples with yamux and noise
* refactor: remove debug logging and improve x25519 tests
* fix: Add functionality for users to choose between Yamux and Mplex
* fix: increased trio sleep to 0.1 sec for slow environment
* feat: Add test for switching between Yamux and mplex
* refactor: move host fixtures to interop tests
* chore: Update __init__.py removing unused import
removed unused
```python
import os
import logging
```
* lint: fix import order
* fix: Resolve conftest.py conflict by removing trio test support
* fix: Resolve test skipping by keeping trio test support
* Fix: add a newline at end of the file
---------
Co-authored-by: acul71 <luca.pisani@birdo.net>
Co-authored-by: acul71 <34693171+acul71@users.noreply.github.com>
Moved dependencies into Linux, macOS, and Windows sections per Paul's suggestion. Fixed reST formatting (blank lines, title underlines) to resolve Sphinx warnings from ReadTheDocs CI. Tested on Windows 10 (Python 3.11.0).
* Initial setup for pubsup
* Created node and trying to setup gossipsub
* Fix: Use pubsub object for publishing messages instead of gossipsub
* Correct help message for port argument.
* Fix: Used pubsub object instead of gossipsub object on Client side
* Fix: handle_new_peer method of pubsub is used to connect to new peers.
* used for host.connect to connect to peers
* Corrected script for connecting to other peers.
* message receiving function created
* message publishing function created
* Refactored the code for improved clarity and maintainability.
* fix: make publish loop input non-blocking to prevent event loop blocking
* refactored the code for better user experience while publishing message
* corrected the name of protocol
* Fix: Correct the implementation of the port argument
* Added pubsub initialization
* added logging
* pubsub instance is running
* Enhance publish loop with user prompts and error handling
* Connection monitoring added
* Add key pair generation and security options to pubsub host initialization
* Refactor pubsub logging and corrected gossipsub protocol id
* Started gossipsub service
* Add dynamic port assignment
* Refactor pubsub example for CI
* feat: monitor_peer_topics function added
* Noise protocol added
* refactor: default port set to none and some logging changes.
* refactor: Add graceful shutdown with termination events
- Replace infinite loops with termination events
- Add proper shutdown handling for all loops
- Implement clean resource cleanup on exit
- Add shutdown message for better user feedback
- Update signal handling for graceful termination
* Changed import path for factories file.
- to align import statement with changes from PR 543
* Added News Fragment
* Added pub-sub demo to the console_scripts section in setup.py
* Added pubsub example to Documentation
* Fix formatting and path in PubSub documentation example
* Added pubsub example in toctree
* Added tests for pubsub example
* updated the description of pubsub example
* corrected the name of pubsub docs file
* Remove unused imports and security options from pubsub example
* Update script usage instructions in pubsub example
* Enhanced compatibility for python 3.9
* Corrected console output