mirror of
https://github.com/nqrduck/nqrduck-spectrometer-limenqr.git
synced 2024-12-22 07:30:24 +00:00
Automatic pypi deployment and linting.
This commit is contained in:
parent
76cf2fb2d3
commit
57e968cabd
6 changed files with 99 additions and 18 deletions
44
.github/workflows/python-publish.yml
vendored
Normal file
44
.github/workflows/python-publish.yml
vendored
Normal file
|
@ -0,0 +1,44 @@
|
|||
name: Build, Test, and Upload Python Package
|
||||
|
||||
on:
|
||||
push:
|
||||
tags:
|
||||
- "v*.*.*"
|
||||
|
||||
workflow_dispatch:
|
||||
|
||||
permissions:
|
||||
contents: read
|
||||
|
||||
jobs:
|
||||
# test:
|
||||
# uses: ./.github/workflows/ubuntu-python-package.yml # use the callable tests job to run tests
|
||||
|
||||
deploy:
|
||||
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
# needs: [test]
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
|
||||
- name: Set up Python
|
||||
uses: actions/setup-python@v3
|
||||
with:
|
||||
python-version: "3.11"
|
||||
|
||||
- name: Install dependencies
|
||||
run: |
|
||||
sudo apt-get update
|
||||
python -m pip install --upgrade pip
|
||||
|
||||
- name: Publish to PyPI
|
||||
run: |
|
||||
python -m venv venv
|
||||
. ./venv/bin/activate
|
||||
pip install -U twine build
|
||||
python -m build .
|
||||
python -m twine upload --repository pypi --username __token__ --password ${{ secrets.PYPI }} dist/*
|
||||
env:
|
||||
PYPI: ${{ secrets.PYPI }}
|
|
@ -1,4 +1,7 @@
|
|||
# Changelog
|
||||
|
||||
### Version 0.0.4 (23-04-2024)
|
||||
- Automatic PyPi deployment
|
||||
|
||||
### Version 0.0.3 (15-04-2024)
|
||||
- Initial release
|
2
LICENSE
2
LICENSE
|
@ -1,6 +1,6 @@
|
|||
MIT License
|
||||
|
||||
Copyright (c) 2023 Julia Pfitzer
|
||||
Copyright (c) 2023 jupfi
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
|
|
|
@ -27,11 +27,16 @@ Ideally you should install the module in a virtual environment. You can create a
|
|||
python -m venv nqrduck
|
||||
```
|
||||
|
||||
You can install this module and the dependencies by running the following command in the terminal:
|
||||
You can install this module and the dependencies by running the following command in the terminal after cloning the repositor and navigating to the module directory:
|
||||
```bash
|
||||
pip install .
|
||||
```
|
||||
|
||||
Alternatively you can install the module via the PyPi package manager by running the following command in the terminal:
|
||||
```bash
|
||||
pip install nqrduck-spectrometer-limenqr
|
||||
```
|
||||
|
||||
## Usage
|
||||
The module is used together with the NQRduck [pulseprogrammer](htpps://github.com/nqrduck-pulseprogrammer) module.
|
||||
|
||||
|
|
|
@ -7,9 +7,9 @@ allow-direct-references = true
|
|||
|
||||
[project]
|
||||
name = "nqrduck-spectrometer-limenqr"
|
||||
version = "0.0.3"
|
||||
version = "0.0.4"
|
||||
authors = [
|
||||
{ name="Julia Pfitzer", email="git@jupfi.me" },
|
||||
{ name="jupfi", email="support@nqrduck.cool" },
|
||||
]
|
||||
|
||||
description = "A submodule for the nqrduck-spectrometer module which implements the functionality for the LimeNQR spectrometer."
|
||||
|
@ -20,11 +20,11 @@ requires-python = ">=3.8"
|
|||
classifiers = [
|
||||
"Programming Language :: Python :: 3",
|
||||
"License :: OSI Approved :: MIT License",
|
||||
"Operating System :: OS Independent",
|
||||
"Operating System :: POSIX :: Linux",
|
||||
]
|
||||
|
||||
dependencies = [
|
||||
"limedriver @ git+https://github.com/nqrduck/LimeDriverBindings",
|
||||
"limedriver",
|
||||
"nqrduck-spectrometer",
|
||||
"pyqt6",
|
||||
"h5py",
|
||||
|
@ -33,3 +33,28 @@ dependencies = [
|
|||
|
||||
[project.entry-points."nqrduck"]
|
||||
"nqrduck-spectrometer-limenqr" = "nqrduck_spectrometer_limenqr.limenqr:LimeNQR"
|
||||
|
||||
[tool.ruff]
|
||||
exclude = [
|
||||
"widget.py",
|
||||
]
|
||||
|
||||
[tool.ruff.lint]
|
||||
extend-select = [
|
||||
"UP", # pyupgrade
|
||||
"D", # pydocstyle
|
||||
]
|
||||
|
||||
[tool.ruff.lint.per-file-ignores]
|
||||
"__init__.py" = ["F401"]
|
||||
|
||||
[tool.ruff.lint.pydocstyle]
|
||||
convention = "google"
|
||||
|
||||
[project.urls]
|
||||
"Homepage" = "https://nqrduck.cool"
|
||||
"Bug Tracker" = "https://github.com/nqrduck/nqrduck-spectrometer-limenqr/issues"
|
||||
"Source Code" = "https://github.com/nqrduck/nqrduck-spectrometer-limenqr"
|
||||
|
||||
[tool.hatch.build.targets.wheel]
|
||||
packages = ["src/nqrduck_spectrometer_limenqr"]
|
|
@ -7,7 +7,6 @@ from decimal import Decimal
|
|||
from limedriver.binding import PyLimeConfig
|
||||
from limedriver.hdf_reader import HDF
|
||||
|
||||
from nqrduck.module.module_controller import ModuleController
|
||||
from nqrduck_spectrometer.base_spectrometer_controller import BaseSpectrometerController
|
||||
from nqrduck_spectrometer.measurement import Measurement
|
||||
from nqrduck_spectrometer.pulseparameters import TXPulse, RXReadout
|
||||
|
@ -166,7 +165,8 @@ class LimeNQRController(BaseSpectrometerController):
|
|||
rx_stop (float): The stop time of the RX event in µs
|
||||
|
||||
Returns:
|
||||
list: The indices of the evaluation range in the measurement data"""
|
||||
list: The indices of the evaluation range in the measurement data
|
||||
"""
|
||||
return np.where((hdf.tdx > rx_begin) & (hdf.tdx < rx_stop))[0]
|
||||
|
||||
def extract_measurement_data(self, lime, hdf, indices):
|
||||
|
@ -190,7 +190,8 @@ class LimeNQRController(BaseSpectrometerController):
|
|||
"""This method returns the FFT shift value from the settings.
|
||||
|
||||
Returns:
|
||||
int: The FFT shift value"""
|
||||
int: The FFT shift value
|
||||
"""
|
||||
fft_shift_enabled = self.module.model.get_setting_by_name(self.module.model.FFT_SHIFT).value
|
||||
return self.module.model.if_frequency if fft_shift_enabled else 0
|
||||
|
||||
|
@ -237,8 +238,8 @@ class LimeNQRController(BaseSpectrometerController):
|
|||
lime (PyLimeConfig): The PyLimeConfig object that is used to communicate with the pulseN driver
|
||||
|
||||
Returns:
|
||||
lime: The updated limr object"""
|
||||
|
||||
lime: The updated limr object
|
||||
"""
|
||||
logger.debug(
|
||||
"Updating settings for spectrometer: %s for measurement",
|
||||
self.module.model.name,
|
||||
|
@ -358,7 +359,6 @@ class LimeNQRController(BaseSpectrometerController):
|
|||
Returns:
|
||||
int: The number of pulses in the pulse sequence
|
||||
"""
|
||||
|
||||
events = self.fetch_pulse_sequence_events()
|
||||
num_pulses = 0
|
||||
for event in events:
|
||||
|
@ -390,7 +390,8 @@ class LimeNQRController(BaseSpectrometerController):
|
|||
"""This method checks if a parameter a pulse with a transmit pulse shape (amplitude nonzero)
|
||||
|
||||
Args:
|
||||
parameter (Parameter): The parameter to check"""
|
||||
parameter (Parameter): The parameter to check
|
||||
"""
|
||||
return (parameter.name == self.module.model.TX and
|
||||
parameter.get_option_by_name(TXPulse.RELATIVE_AMPLITUDE).value > 0)
|
||||
|
||||
|
@ -402,7 +403,8 @@ class LimeNQRController(BaseSpectrometerController):
|
|||
parameter (Parameter): The parameter that contains the pulse shape and amplitude
|
||||
|
||||
Returns:
|
||||
tuple: A tuple containing the pulse shape and the pulse amplitude"""
|
||||
tuple: A tuple containing the pulse shape and the pulse amplitude
|
||||
"""
|
||||
pulse_shape = parameter.get_option_by_name(TXPulse.TX_PULSE_SHAPE).value
|
||||
pulse_amplitude = abs(pulse_shape.get_pulse_amplitude(event.duration)) * \
|
||||
parameter.get_option_by_name(TXPulse.RELATIVE_AMPLITUDE).value
|
||||
|
@ -433,7 +435,8 @@ class LimeNQRController(BaseSpectrometerController):
|
|||
"""This method unwraps the phase of the pulse.
|
||||
|
||||
Args:
|
||||
phase (float): The phase of the pulse"""
|
||||
phase (float): The phase of the pulse
|
||||
"""
|
||||
return (np.unwrap(phase) + 2 * np.pi) % (2 * np.pi)
|
||||
|
||||
def initialize_pulse_lists(self, lime, pulse_amplitude, pulse_shape, modulated_phase):
|
||||
|
@ -624,7 +627,8 @@ class LimeNQRController(BaseSpectrometerController):
|
|||
"""This method sets the number of averages for the spectrometer.
|
||||
|
||||
Args:
|
||||
value (int): The number of averages"""
|
||||
value (int): The number of averages
|
||||
"""
|
||||
logger.debug("Setting averages to: %s", value)
|
||||
try:
|
||||
self.module.model.averages = int(value)
|
||||
|
|
Loading…
Reference in a new issue