Skip to content

Commit 1077435

Browse files
authored
v0.15.0
version 0.15.0
2 parents b951cd1 + 5355165 commit 1077435

File tree

4 files changed

+21
-24
lines changed

4 files changed

+21
-24
lines changed

.github/workflows/pypi.yml

+1-1
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ jobs:
1212
- name: Set up Python
1313
uses: actions/setup-python@v1
1414
with:
15-
python-version: "3.7"
15+
python-version: "3.9"
1616
- name: Install poetry
1717
run: |
1818
curl -fsS -o get-poetry.py https://raw.githubusercontent.com/python-poetry/poetry/master/get-poetry.py

pyobs_fli/flicamera.py

+16-19
Original file line numberDiff line numberDiff line change
@@ -36,9 +36,9 @@ def __init__(self, setpoint: float = -20., **kwargs: Any):
3636
self._window = (0, 0, 0, 0)
3737
self._binning = (1, 1)
3838

39-
def open(self) -> None:
39+
async def open(self) -> None:
4040
"""Open module."""
41-
BaseCamera.open(self)
41+
await BaseCamera.open(self)
4242

4343
# list devices
4444
devices = FliDriver.list_devices()
@@ -59,19 +59,19 @@ def open(self) -> None:
5959

6060
# set cooling
6161
if self._temp_setpoint is not None:
62-
self.set_cooling(True, self._temp_setpoint)
62+
await self.set_cooling(True, self._temp_setpoint)
6363

64-
def close(self) -> None:
64+
async def close(self) -> None:
6565
"""Close the module."""
66-
BaseCamera.close(self)
66+
await BaseCamera.close(self)
6767

6868
# not open?
6969
if self._driver is not None:
7070
# close connection
7171
self._driver.close()
7272
self._driver = None
7373

74-
def get_full_frame(self, **kwargs: Any) -> Tuple[int, int, int, int]:
74+
async def get_full_frame(self, **kwargs: Any) -> Tuple[int, int, int, int]:
7575
"""Returns full size of CCD.
7676
7777
Returns:
@@ -81,23 +81,23 @@ def get_full_frame(self, **kwargs: Any) -> Tuple[int, int, int, int]:
8181
raise ValueError('No camera driver.')
8282
return self._driver.get_full_frame()
8383

84-
def get_window(self, **kwargs: Any) -> Tuple[int, int, int, int]:
84+
async def get_window(self, **kwargs: Any) -> Tuple[int, int, int, int]:
8585
"""Returns the camera window.
8686
8787
Returns:
8888
Tuple with left, top, width, and height set.
8989
"""
9090
return self._window
9191

92-
def get_binning(self, **kwargs: Any) -> Tuple[int, int]:
92+
async def get_binning(self, **kwargs: Any) -> Tuple[int, int]:
9393
"""Returns the camera binning.
9494
9595
Returns:
9696
Tuple with x and y.
9797
"""
9898
return self._binning
9999

100-
def set_window(self, left: int, top: int, width: int, height: int, **kwargs: Any) -> None:
100+
async def set_window(self, left: int, top: int, width: int, height: int, **kwargs: Any) -> None:
101101
"""Set the camera window.
102102
103103
Args:
@@ -112,7 +112,7 @@ def set_window(self, left: int, top: int, width: int, height: int, **kwargs: Any
112112
self._window = (left, top, width, height)
113113
log.info('Setting window to %dx%d at %d,%d...', width, height, left, top)
114114

115-
def set_binning(self, x: int, y: int, **kwargs: Any) -> None:
115+
async def set_binning(self, x: int, y: int, **kwargs: Any) -> None:
116116
"""Set the camera binning.
117117
118118
Args:
@@ -125,7 +125,7 @@ def set_binning(self, x: int, y: int, **kwargs: Any) -> None:
125125
self._binning = (x, y)
126126
log.info('Setting binning to %dx%d...', x, y)
127127

128-
def _expose(self, exposure_time: float, open_shutter: bool, abort_event: threading.Event) -> Image:
128+
async def _expose(self, exposure_time: float, open_shutter: bool, abort_event: threading.Event) -> Image:
129129
"""Actually do the exposure, should be implemented by derived classes.
130130
131131
Args:
@@ -159,7 +159,6 @@ def _expose(self, exposure_time: float, open_shutter: bool, abort_event: threadi
159159
self._driver.set_window(self._window[0], self._window[1], width, height)
160160

161161
# set some stuff
162-
self._change_exposure_status(ExposureStatus.EXPOSING)
163162
self._driver.init_exposure(open_shutter)
164163
self._driver.set_exposure_time(int(exposure_time * 1000.))
165164

@@ -175,7 +174,7 @@ def _expose(self, exposure_time: float, open_shutter: bool, abort_event: threadi
175174
while True:
176175
# aborted?
177176
if abort_event.is_set():
178-
self._change_exposure_status(ExposureStatus.IDLE)
177+
await self._change_exposure_status(ExposureStatus.IDLE)
179178
raise ValueError('Aborted exposure.')
180179

181180
# is exposure finished?
@@ -187,7 +186,7 @@ def _expose(self, exposure_time: float, open_shutter: bool, abort_event: threadi
187186

188187
# readout
189188
log.info('Exposure finished, reading out...')
190-
self._change_exposure_status(ExposureStatus.READOUT)
189+
await self._change_exposure_status(ExposureStatus.READOUT)
191190
width = int(math.floor(self._window[2] / self._binning[0]))
192191
height = int(math.floor(self._window[3] / self._binning[1]))
193192
img = np.zeros((height, width), dtype=np.uint16)
@@ -224,7 +223,6 @@ def _expose(self, exposure_time: float, open_shutter: bool, abort_event: threadi
224223

225224
# return FITS image
226225
log.info('Readout finished.')
227-
self._change_exposure_status(ExposureStatus.IDLE)
228226
return image
229227

230228
def _abort_exposure(self) -> None:
@@ -236,9 +234,8 @@ def _abort_exposure(self) -> None:
236234
if self._driver is None:
237235
raise ValueError('No camera driver.')
238236
self._driver.cancel_exposure()
239-
self._camera_status = ExposureStatus.IDLE
240237

241-
def get_cooling_status(self, **kwargs: Any) -> Tuple[bool, float, float]:
238+
async def get_cooling_status(self, **kwargs: Any) -> Tuple[bool, float, float]:
242239
"""Returns the current status for the cooling.
243240
244241
Returns:
@@ -252,7 +249,7 @@ def get_cooling_status(self, **kwargs: Any) -> Tuple[bool, float, float]:
252249
enabled = self._temp_setpoint is not None
253250
return enabled, self._temp_setpoint if self._temp_setpoint is not None else 99., self._driver.get_cooler_power()
254251

255-
def get_temperatures(self, **kwargs: Any) -> Dict[str, float]:
252+
async def get_temperatures(self, **kwargs: Any) -> Dict[str, float]:
256253
"""Returns all temperatures measured by this module.
257254
258255
Returns:
@@ -265,7 +262,7 @@ def get_temperatures(self, **kwargs: Any) -> Dict[str, float]:
265262
'Base': self._driver.get_temp(FliTemperature.BASE)
266263
}
267264

268-
def set_cooling(self, enabled: bool, setpoint: float, **kwargs: Any) -> None:
265+
async def set_cooling(self, enabled: bool, setpoint: float, **kwargs: Any) -> None:
269266
"""Enables/disables cooling and sets setpoint.
270267
271268
Args:

pyobs_fli/flidriver.pyx

+1-1
Original file line numberDiff line numberDiff line change
@@ -331,7 +331,7 @@ cdef class FliDriver:
331331
"""
332332

333333
# create numpy array of given dimensions
334-
cdef np.ndarray[unsigned short, ndim=1] row = np.zeros((width), dtype=np.ushort)
334+
cdef np.ndarray[unsigned short, ndim=1] row = np.zeros((width,), dtype=np.ushort)
335335

336336
# get pointer to data
337337
cdef void* row_data = <void*> row.data

pyproject.toml

+3-3
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[tool.poetry]
22
name = "pyobs-fli"
3-
version = "0.14.2"
3+
version = "0.15.0"
44
description = "pyobs module for FLI cameras"
55
authors = ["Tim-Oliver Husser <[email protected]>"]
66
license = "MIT"
@@ -11,9 +11,9 @@ script = "build.py"
1111
generate-setup-file = false
1212

1313
[tool.poetry.dependencies]
14-
python = "^3.7"
14+
python = ">=3.9,<3.11"
15+
astropy = "^5.0"
1516
numpy = "^1.21"
16-
astropy = "^4.2"
1717

1818
[tool.poetry.dev-dependencies]
1919

0 commit comments

Comments
 (0)