Skip to content

Commit 7c70738

Browse files
author
Henri Ervasti
committed
[179-qmi-contexts-do-not-start-with-python3.14] Changed the collections.deque import to from collections import deque to counter strange hanging of the code.
1 parent 240200f commit 7c70738

File tree

2 files changed

+7
-16
lines changed

2 files changed

+7
-16
lines changed

qmi/instruments/bristol/bristol_871a.py

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
11
"""Instrument driver for the Bristol 871A Laser Wavelength Meter."""
22

3-
import collections
3+
from collections import deque
44
import logging
55
import math
66
import struct
77
import time
8-
from typing import NamedTuple, Callable
8+
from typing import NamedTuple, Deque
99

1010
from qmi.core.context import QMI_Context
1111
from qmi.core.exceptions import QMI_InstrumentException, QMI_UsageException
@@ -37,16 +37,13 @@ class _ReaderThread(QMI_Thread):
3737
# Check for thread shutdown request every POLL_DURATION seconds.
3838
POLL_DURATION = 0.100
3939

40-
def __init__(self, transport: QMI_Transport, queue: collections.deque) -> None:
41-
# A more specific type annotation would be "queue: Deque[Measurement]".
42-
# However we can not use it because "Deque" does not exist in Python 3.5.3.
40+
def __init__(self, transport: QMI_Transport, queue: Deque[Measurement]) -> None:
4341
super().__init__()
4442
self._transport = transport
4543
self._queue = queue
4644

4745
def run(self) -> None:
4846
"""Read measurements from serial port and append to internal queue."""
49-
5047
while not self._shutdown_requested:
5148
# Read next measurement from serial stream.
5249
measurement = self._read_measurement()
@@ -232,7 +229,7 @@ def __init__(
232229
self._scpi_protocol: None | ScpiProtocol = None
233230
self._serial_transport: None | QMI_Transport = None
234231
self._reader_thread: None | _ReaderThread = None
235-
self._reader_queue: collections.deque = collections.deque(maxlen=queue_size)
232+
self._reader_queue: deque = deque(maxlen=queue_size)
236233

237234
if scpi_transport is not None:
238235
self._scpi_transport = create_transport(scpi_transport)

tests/instruments/bristol/test_871a.py

Lines changed: 3 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
from math import isnan
66
import struct
77
from unittest import TestCase
8-
from unittest.mock import Mock, Mock
8+
from unittest.mock import Mock
99
from unittest.mock import patch
1010
from unittest.mock import call
1111

@@ -151,7 +151,6 @@ def setUp(self):
151151
mock_transport_scpi = Mock(spec=QMI_Transport)
152152
transport_scpi_str = "scpi:roosh:kangaroo"
153153
self.mock_scpi = Mock(spec=ScpiProtocol)
154-
self.mock_reader = Mock(spec=_ReaderThread)
155154
self.mock_queue = Mock()
156155

157156
def se_create_transport(transport):
@@ -161,10 +160,9 @@ def se_create_transport(transport):
161160
return mock_transport_serial
162161

163162
with patch(
164-
"qmi.instruments.bristol.bristol_871a.create_transport", side_effect=se_create_transport,
163+
"qmi.instruments.bristol.bristol_871a.create_transport", se_create_transport,
165164
), patch("qmi.instruments.bristol.bristol_871a.ScpiProtocol", self.mock_scpi
166-
), patch("qmi.instruments.bristol.bristol_871a._ReaderThread", self.mock_reader
167-
), patch("qmi.instruments.bristol.bristol_871a.collections.deque", self.mock_queue
165+
), patch("qmi.instruments.bristol.bristol_871a.deque", self.mock_queue
168166
):
169167
self.instr = Bristol_871A(
170168
QMI_Context("bristol_871_test_ctx"),
@@ -179,8 +177,6 @@ def test_init_scpi(self):
179177
self.assertEqual(self.instr._serial_transport, self.instr._serial_transport)
180178
self.mock_scpi.assert_called_once_with(self.instr._scpi_transport)
181179
self.assertEqual(self.instr._scpi_protocol, self.instr._scpi_protocol)
182-
self.mock_reader.assert_called_once_with(self.instr._serial_transport, self.instr._reader_queue)
183-
self.instr._reader_thread.start.assert_called_once_with()
184180

185181
def test_init_value_error(self):
186182
"""Bristol_871A.__init__(), value error handling"""
@@ -229,8 +225,6 @@ def test_close(self):
229225

230226
self.instr.close()
231227
self.instr._check_is_open.assert_has_calls([call(), call()]) # Once in close and once in super().close
232-
self.instr._reader_thread.shutdown.assert_called_once_with()
233-
self.instr._reader_thread.join.assert_called_once_with()
234228
self.instr._serial_transport.close.assert_called_once_with()
235229
self.instr._scpi_transport.close.assert_called_once_with()
236230

0 commit comments

Comments
 (0)