Commit Graph

797 Commits

Author SHA1 Message Date
67ab6e27d8 feat: implement AsyncContextManager for IMuxedStream to support async… (#629)
* feat: implement AsyncContextManager for IMuxedStream to support async with

* doc: add newsfragment
2025-05-30 08:44:33 -06:00
67ca1d7769 todo: handled ls command in multiselect.py (#622) 2025-05-27 20:18:37 -06:00
481be5d63d todo: parse listen_addrs to set transport in SwarmBuilder (#616) 2025-05-25 18:57:30 -06:00
276b9b7339 Implemented multi-error handling in MultiError() class (#614)
* Implemented multi-error handling in MultiError() class

* Added newsfragement file and test

* updated doc-string and list-struct

* updating docstring
2025-05-22 15:22:38 -06:00
4b1860766d Feat: Adding Yamux as default multiplexer, keeping Mplex as fallback (#538)
* 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>
2025-05-22 14:01:51 -06:00
18c6f529c6 Feat/issue 605 debug logging via env variable (#608)
* feat: Debug Logging via Environment Variable

* refactor: deleted libp2p/utils.py

* fix: double messages logging fix

* doc: add logging info to getting_started.rst
2025-05-20 14:07:22 -06:00
4a53fc3111 Direct Peers : Gossipsub V1.1 (#594)
* added basic structure for direct peers

* added direct connect heartbeat

* added logic to reject GRAFT from direct peers

* added invocation of direct_connect_heartbeat

* updated _get_peers_to_send to include direct peers

* fixed failing gossipsub core and demo tests

* fixed failing test_examples.py

* add tests for peer management

* fix lint

* update tests

* fixed direct_peers type and peer_records test

* fixed failing gossipsub direct peers test

* added reject graft test

* updated reconnection test

* added newsfragment

* improved reject graft test

* updated default value for direct peers

* renamed direct_connect_init_delay parameter

* reverted back to direct_connect_initial_delay param name

---------

Co-authored-by: Khwahish Patel <khwahish.p1@ahduni.edu.in>
2025-05-20 07:31:57 -06:00
e56974078a Fix exception handling 2025-05-15 13:49:02 -06:00
745458cdff Reduce logging level to debug in TCPListener.listen() 2025-05-15 13:49:02 -06:00
bb21af7694 Adds exception handling in TCPListener.listen() 2025-05-15 13:49:02 -06:00
e9674d2bca refractored Peer_Info to PeerInfo as imports 2025-05-09 17:31:15 -06:00
d55c57769f Refactor: changed PeerInfo to Peer_Info in autonat.proto to avoid conflicts 2025-05-09 17:31:15 -06:00
1bed3304c7 fixed autonat file for pre-commit hook issues 2025-05-09 17:31:15 -06:00
86dce72ae0 fix: regenerate protobuf files to match runtime version 2025-05-09 17:31:15 -06:00
1730999e38 fixed pre commit hook issues in autonat 2025-05-09 17:31:15 -06:00
9655c88788 feat/561-added autonat service 2025-05-09 17:31:15 -06:00
4c02c4ea02 doc: add TODO for limit concurrency 2025-05-01 09:14:46 -06:00
4ad6975ef1 feat: push identify-push info in pararrel 2025-05-01 09:14:46 -06:00
66707364a7 doc: adding identify push protocol examples and doc 2025-05-01 09:14:46 -06:00
cef73519d3 feat: identify-push protocol. initial release 2025-05-01 09:14:46 -06:00
e0a08c9a2b fix: test_timed_cache.py::test_readding_after_expiry 2025-04-20 17:11:29 +02:00
3bdbde57c7 feat: Add Windows compatibility using coincurve 2025-03-27 15:49:30 -06:00
4514e86ee4 move pubsub testing tools into tests/utils 2025-03-27 14:21:45 -06:00
24b2704d8c move factories to tests/utils/factories 2025-03-27 14:21:45 -06:00
604a447287 feat: add identify protocol example 2025-03-24 17:55:16 -06:00
9350caa65c feat: Add observed addresses of remote peer using get_remote_address 2025-03-24 08:02:21 -06:00
fabf2cefc4 feat: implement get_remote_address via delegation pattern 2025-03-24 08:02:21 -06:00
798229cd3a feat: add observed_addr to identify protocol 2025-03-24 08:02:21 -06:00
bd8bd953ec feat: add agent version to identify protocol and improved tests 2025-03-24 08:02:21 -06:00
df72979606 moved factories to tests 2025-03-24 07:59:35 -06:00
ddf68ee4e0 rebuild protobufs with protoc v30.1 2025-03-23 16:49:19 -06:00
b2a6294cfa feat(host): add get_live_peers() to track connection state 2025-03-23 15:01:18 -06:00
bef8a82a52 fixed lint 2025-03-17 09:27:13 -06:00
3c01c03e4e incorporated import changes as suggested 2025-03-17 09:27:13 -06:00
c86f3d0467 added dedicated test file and moved timed_cache to tools 2025-03-17 09:27:13 -06:00
e5f3e88134 added : timed_cache sub-module 2025-03-17 09:27:13 -06:00
0fa8711ca7 updated : seen message map type to bool from int 2025-03-17 09:27:13 -06:00
ea85067beb check other cases and add test_rsa.py 2025-03-16 07:02:53 -06:00
e150d3153a rufuse large RSA keys 2025-03-16 07:02:53 -06:00
3b187348ff docs: add Sphinx-style docstrings in abc.py 2025-03-13 19:59:04 -06:00
d7eab27564 refactored and moved all interfaces to abc.py (#504)
* refactored : host_interface

Co-authored-by: mystical-prog <jdgt.vd.0405@gmail.com>

* refactored : network_interface

Co-authored-by: mystical-prog <jdgt.vd.0405@gmail.com>

* refactored : notifee_interface

Co-authored-by: mystical-prog <jdgt.vd.0405@gmail.com>

* refactored : net_connection_interface

Co-authored-by: mystical-prog <jdgt.vd.0405@gmail.com>

* refactored: raw_connection_interface, secure_conn_interface and stream_muxer abc.py

* refactored: addrbook_interface

* refactored :peerdata_interface

Co-authored-by: mystical-prog <jdgt.vd.0405@gmail.com>

* refactored :peermetadata_interface

Co-authored-by: mystical-prog <jdgt.vd.0405@gmail.com>

* refactored :multiselect_client_interface

Co-authored-by: mystical-prog <jdgt.vd.0405@gmail.com>

* refactored :multiselect_communicator_interface

Co-authored-by: mystical-prog <jdgt.vd.0405@gmail.com>

* refactored :multiselect_muxer_interface

Co-authored-by: mystical-prog <jdgt.vd.0405@gmail.com>

* refactored :interfaces

Co-authored-by: mystical-prog <jdgt.vd.0405@gmail.com>

* refactored :security_transport_interface

Co-authored-by: mystical-prog <jdgt.vd.0405@gmail.com>

* refactored :listener_interface

Co-authored-by: mystical-prog <jdgt.vd.0405@gmail.com>

* moved all interfaces and typing files

Co-authored-by: mystical-prog <jdgt.vd.0405@gmail.com>

* fixed documentation and moved pubsub abc.py

Co-authored-by: Khwahish Patel <khwahish.p1@ahduni.edu.in>

* added exclude-members in custom_types docs

* added : newsfragment for moving all interfaces to libp2p.abc

---------

Co-authored-by: mystical-prog <jdgt.vd.0405@gmail.com>
Co-authored-by: Mystical <125946525+mystical-prog@users.noreply.github.com>
2025-02-21 16:01:45 -07:00
e7a9ee78a8 rename typing.py to custom_types.py for clarity 2025-02-02 07:18:52 -07:00
8787613e91 run lint with pyupgrade at py39-plus 2025-01-25 15:48:39 -07:00
e0814c9860 move interop tests tools into tests folder 2025-01-25 15:28:32 -07:00
33332d7106 sync handle_rpc docstring 2024-12-03 14:00:18 -07:00
f156668c1b fixed doc comments in pubsub.abc 2024-12-03 14:00:18 -07:00
f957e310d6 refactored add_addrs in peerdata and added test_peerdata.py 2024-11-24 14:39:29 -07:00
17575f4a38 added test for connected peers 2024-11-21 11:51:19 -07:00
847dfa6577 added getter for connected peers 2024-11-21 11:51:19 -07:00
e768682ab9 reject messages claiming to be from ourselves but not locally published 2024-11-15 15:16:19 +07:00