Skip to content

Commit 0cccbe4

Browse files
committed
Support CPython
1 parent 6d469a9 commit 0cccbe4

File tree

2 files changed

+24
-0
lines changed

2 files changed

+24
-0
lines changed

adafruit_connection_manager.py

+10
Original file line numberDiff line numberDiff line change
@@ -97,6 +97,10 @@ def create_fake_ssl_context(
9797
return _FakeSSLContext(iface)
9898

9999

100+
class CPythonNetwork: # pylint: disable=too-few-public-methods
101+
"""Radio object to use when using ConnectionManager in CPython."""
102+
103+
100104
_global_connection_managers = {}
101105
_global_key_by_socketpool = {}
102106
_global_socketpools = {}
@@ -158,6 +162,12 @@ def get_radio_socketpool(radio):
158162
if ssl_context is None:
159163
ssl_context = create_fake_ssl_context(pool, radio)
160164

165+
elif class_name == "CPythonNetwork":
166+
import socket as pool # pylint: disable=import-outside-toplevel
167+
import ssl # pylint: disable=import-outside-toplevel
168+
169+
ssl_context = ssl.create_default_context()
170+
161171
else:
162172
raise ValueError(f"Unsupported radio class: {class_name}")
163173

tests/get_radio_test.py

+14
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,13 @@ def test_get_radio_socketpool_wiznet5k( # pylint: disable=unused-argument
5353
assert socket_pool in adafruit_connection_manager._global_socketpools.values()
5454

5555

56+
def test_get_radio_socketpool_cpython():
57+
radio = adafruit_connection_manager.CPythonNetwork()
58+
socket_pool = adafruit_connection_manager.get_radio_socketpool(radio)
59+
assert socket_pool.__name__ == "socket"
60+
assert socket_pool in adafruit_connection_manager._global_socketpools.values()
61+
62+
5663
def test_get_radio_socketpool_unsupported():
5764
radio = mocket.MockRadio.Unsupported()
5865
with pytest.raises(ValueError) as context:
@@ -98,6 +105,13 @@ def test_get_radio_ssl_context_wiznet5k( # pylint: disable=unused-argument
98105
assert ssl_context in adafruit_connection_manager._global_ssl_contexts.values()
99106

100107

108+
def test_get_radio_ssl_context_cpython():
109+
radio = adafruit_connection_manager.CPythonNetwork()
110+
ssl_context = adafruit_connection_manager.get_radio_ssl_context(radio)
111+
assert isinstance(ssl_context, ssl.SSLContext)
112+
assert ssl_context in adafruit_connection_manager._global_ssl_contexts.values()
113+
114+
101115
def test_get_radio_ssl_context_unsupported():
102116
radio = mocket.MockRadio.Unsupported()
103117
with pytest.raises(ValueError) as context:

0 commit comments

Comments
 (0)