From 2230f2cc9bc3b67cdf485af655800191ceccd9ef Mon Sep 17 00:00:00 2001 From: Daniel Avdar <66269169+DanielAvdar@users.noreply.github.com> Date: Wed, 21 May 2025 08:15:45 +0300 Subject: [PATCH 1/5] Update README.rst (#291) --- README.rst | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.rst b/README.rst index b693dd7..1bab0fd 100644 --- a/README.rst +++ b/README.rst @@ -101,7 +101,7 @@ As second step, we create an `example.py` file as the following one: import json from mocket import mocketize - from mocket.mockhttp import Entry + from mocket.mocks.mockhttp import Entry import requests import pytest @@ -294,7 +294,7 @@ Example: import pytest from mocket import async_mocketize - from mocket.mockhttp import Entry + from mocket.mocks.mockhttp import Entry from mocket.plugins.aiohttp_connector import MocketTCPConnector From 6fb97207bafa523da14fcbae60478ffe6ae90d79 Mon Sep 17 00:00:00 2001 From: Giorgio Salluzzo Date: Sat, 24 May 2025 14:26:12 +0200 Subject: [PATCH 2/5] Add Mocket's logo (#292) * Adding PNG logo. --- README.rst | 6 ++++++ mocket.png | Bin 0 -> 12322 bytes 2 files changed, 6 insertions(+) create mode 100644 mocket.png diff --git a/README.rst b/README.rst index 1bab0fd..e19a3d0 100644 --- a/README.rst +++ b/README.rst @@ -14,6 +14,12 @@ mocket /mɔˈkɛt/ .. image:: https://img.shields.io/pypi/dm/mocket :target: https://pypistats.org/packages/mocket +.. image:: mocket.png + :height: 256px + :width: 256px + :alt: Mocket logo + :align: center + A socket mock framework ------------------------- diff --git a/mocket.png b/mocket.png new file mode 100644 index 0000000000000000000000000000000000000000..08498b4c2698f19654f36c918d32824afac6237f GIT binary patch literal 12322 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 Lmpxj_JO2Lw;C$5{ literal 0 HcmV?d00001 From 25f9a3bca038e3b10c4953d06d39db9ab2af8e90 Mon Sep 17 00:00:00 2001 From: Giorgio Salluzzo Date: Sat, 24 May 2025 23:20:35 +0200 Subject: [PATCH 3/5] Test for UDP socket (#293) * Testing a UDP socket. * precommit hooks' update --- .pre-commit-config.yaml | 2 +- mocket/socket.py | 10 ++++++++++ tests/test_socket.py | 19 +++++++++++++++++++ 3 files changed, 30 insertions(+), 1 deletion(-) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index b7a1e1f..4edd2b6 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -15,7 +15,7 @@ repos: exclude: helm/ args: [ --unsafe ] - repo: https://github.com/charliermarsh/ruff-pre-commit - rev: "v0.11.2" + rev: "v0.11.11" hooks: - id: ruff args: [--fix, --exit-non-zero-on-fix] diff --git a/mocket/socket.py b/mocket/socket.py index f8f77da..496c912 100644 --- a/mocket/socket.py +++ b/mocket/socket.py @@ -170,6 +170,11 @@ def makefile(self, mode: str = "r", bufsize: int = -1) -> MocketSocketIO: def get_entry(self, data: bytes) -> MocketEntry | None: return Mocket.get_entry(self._host, self._port, data) + def sendto(self, data: ReadableBuffer, address: Address | None = None) -> int: + self.connect(address) + self.sendall(data) + return len(data) + def sendall(self, data, entry=None, *args, **kwargs): if entry is None: entry = self.get_entry(data) @@ -204,6 +209,11 @@ def recv_into( buffer[: len(data)] = data return len(data) + def recvfrom( + self, buffersize: int, flags: int | None = None + ) -> tuple[bytes, _RetAddress]: + return self.recv(buffersize, flags), self._address + def recv(self, buffersize: int, flags: int | None = None) -> bytes: r_fd, _ = Mocket.get_pair((self._host, self._port)) if r_fd: diff --git a/tests/test_socket.py b/tests/test_socket.py index 112a908..4c362f5 100644 --- a/tests/test_socket.py +++ b/tests/test_socket.py @@ -2,6 +2,7 @@ import pytest +from mocket import Mocket, MocketEntry, mocketize from mocket.socket import MocketSocket @@ -11,3 +12,21 @@ def test_blocking_socket(blocking): sock.connect(("locahost", 1234)) sock.setblocking(blocking) assert sock.getblocking() is blocking + + +@mocketize +def test_udp_socket(): + host = "127.0.0.1" + port = 9999 + request_data = b"ping" + response_data = b"pong" + + Mocket.register(MocketEntry((host, port), [response_data])) + + # Your UDP client code + sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) + sock.sendto(request_data, (host, port)) + data, address = sock.recvfrom(1024) + + assert data == response_data + assert address == (host, port) From 0f840e9f09ebb6f0d5d0b8f97eaacd3c82fd0781 Mon Sep 17 00:00:00 2001 From: Giorgio Salluzzo Date: Sun, 25 May 2025 08:23:17 +0200 Subject: [PATCH 4/5] Update pyproject.toml --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index 5349ad6..66b394b 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -35,7 +35,7 @@ dependencies = [ dynamic = ["version"] [project.urls] -Homepage = "https://github.com/mindflayer/python-mocket" +Homepage = "https://pypi.org/project/mocket" Repository = "https://github.com/mindflayer/python-mocket" [project.optional-dependencies] From 88f71d1d1b2d5169c33ed2e653b1efb9a8ea7d00 Mon Sep 17 00:00:00 2001 From: Giorgio Salluzzo Date: Sun, 25 May 2025 08:24:16 +0200 Subject: [PATCH 5/5] Bump version --- mocket/__init__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mocket/__init__.py b/mocket/__init__.py index e4bc008..5c3e7f0 100644 --- a/mocket/__init__.py +++ b/mocket/__init__.py @@ -31,4 +31,4 @@ "FakeSSLContext", ) -__version__ = "3.13.6" +__version__ = "3.13.7" pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy