Commit Graph

58 Commits

Author SHA1 Message Date
4b331d96a7 fix: pre-commit issues 2025-05-31 12:47:46 +01:00
1d9849cb43 feat: achieve ping interop py-libp2p - rust-libp2p
WORKING: Connection, handshake, Yamux setup, initial ping/pong. ISSUE: Frame parser corruption after 2-3 frames (boundary sync)
2025-05-31 12:25:12 +01: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
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
1213710af3 lint: resolved lint issues 2025-05-01 09:14:46 -06:00
5a05ca0124 Update identify_push_listener_dialer.py debug config lint 2025-05-01 09:14:46 -06:00
95a9bf6c53 Update identify_push_demo.py for double print and debug msgs 2025-05-01 09:14:46 -06:00
91beff5e63 fix: added identify push to setup.py 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
d0e997061e doc: add install and getting started documentation 2025-04-11 18:01:57 -06:00
346a0a14db Pubsub example for py-libp2p (#515)
* 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
2025-04-06 14:38:14 -06:00
1613cf02d4 fix: add missing examples/identify/__init__.py and doc docs/examples.identify.rst 2025-03-27 14:37:43 -06:00
95f0e84418 use console script entry for identify demo 2025-03-24 17:55:16 -06:00
604a447287 feat: add identify protocol example 2025-03-24 17:55:16 -06:00
d497a2225b fix: broken import in the examples after net_stream_interface rename 2025-02-25 06:37:09 -07:00
e7a9ee78a8 rename typing.py to custom_types.py for clarity 2025-02-02 07:18:52 -07:00
a72dbaa58d set demos as console scripts, update chat instructions 2025-01-01 17:36:41 -07:00
ac41b012da fix: prevent infinite loop by adding break statement 2025-01-01 16:43:44 -07:00
25b35dee1a fixed lint 2024-10-29 14:05:01 -06:00
4620142ed1 ran make lint 2024-10-24 11:34:32 -06:00
1549d4e5d3 added ping example 2024-10-24 11:34:32 -06:00
7de6cbaab0 display example code and usage instructions in docs 2024-05-19 13:34:13 -06:00
827d16b106 import asynccontextmanager from context lib and remove async_generator dep 2024-04-27 10:12:39 -06:00
94483714a3 run lint and fix errors, except mypy 2024-02-19 16:05:58 -07:00
e57d01f360 PR feedback
- Use f-string
- Fix wrongly indented comments
- Add dep `trio-typing`
2020-01-28 15:48:41 +08:00
6e01a7da31 PR feedback: async with host.run() 2020-01-26 16:44:42 +08:00
3372c32432 Fix examples and modify new_node
- Fix examples `chat.py` and `echo.py`
    - Use trio directly, instead of `trio-asyncio`
    - Remove redundant code
- Change entry API `new_node` to `new_host_trio`
2019-12-24 18:03:18 +08:00
a397ccdc04 makes test_mplex_stream.py::test_mplex_stream_read_write work 2019-11-26 15:27:06 +08:00
d4d345c3c7 progressing 2019-11-26 15:27:05 +08:00
f5c725788e need manual stop 2019-11-26 15:27:05 +08:00
ed17bfd663 hack chat example 2019-11-26 15:27:04 +08:00
649a230776 Fix MplexStream.read 2019-09-06 17:26:40 +08:00
c1fdf9accf Add echo demo 2019-09-04 10:45:41 -07:00
3debd2c808 Run black and isort w/ the new config 2019-08-13 14:36:42 -07:00
28f6de37ee Fix the rest of the typing hints (#232)
* ignore kad

* fix swarm, and minor

* fix init and swarm

* ignore pb

* enable mypy

* fix basic host

* fix tcp

* fix mplex

* add typing for pb

* skip format pyi

* [mypy] no need to ignore pb now

* add typing to chat
2019-08-11 16:47:54 +08:00
7477b29508 run black w/ extended line length 2019-08-04 12:37:41 +08:00
cb301fcc51 Opt-out of linting on the special cases we have, given new ignore rules 2019-08-04 12:37:27 +08:00
cf3904a56a Merge pull request #207 from ralexstokes/update-chat-example
Update chat example
2019-08-03 09:49:51 -07:00
c8005c8113 Run isort in repo 2019-08-03 17:50:14 +08:00
c8d175b373 Add a localhost option and fix the printed example to run another peer 2019-08-02 10:22:15 -07:00
430b4e2f89 Bail as soon as we know there is a port error 2019-08-02 10:21:41 -07:00
0ae9840928 Run black over repo 2019-07-31 15:00:12 -07:00
d64c7d6d56 Add the missing type for port 2019-07-24 21:28:14 +08:00
381f5ddc3a Replace click with argparse 2019-07-24 18:43:49 +08:00
04b7df9fcf Lint examples in tox 2019-07-24 18:00:57 +08:00
5d4b4cf525 fixing chat (#151) 2019-04-18 15:56:02 -04:00
e34603c364 fixing chat to use public IP (#122) 2019-02-10 20:52:05 -05:00
bfb2c73810 Fixed some issues with the chat example (#120)
* Fixed some issues with the chat example

* Bump version to Python 3.7 (#121)

* bump version

* enable 3.7 in travis

* Minor refactor
2019-02-10 13:07:42 -05:00
82d08a3b14 chat.py very little code refactor. (#112)
That was an useless duplicate
2019-01-30 23:54:55 -05:00