diff --git a/.github/README.md b/.github/README.md index a35cf37..2796ffa 100644 --- a/.github/README.md +++ b/.github/README.md @@ -1,6 +1,6 @@ # Q-CTRL Open Controls -![Python](https://img.shields.io/badge/python-3.9+-blue.svg) +![Python](https://img.shields.io/badge/python-3.10+-blue.svg) Q-CTRL Open Controls is an open-source Python package that makes it easy to create and deploy established error-robust quantum control protocols from the open literature. The aim of the package is to be the most comprehensive library of published and tested quantum control techniques developed by the community, with easy to use export functions allowing users to deploy these controls on: diff --git a/.github/workflows/on-pull-request.yaml b/.github/workflows/on-pull-request.yaml index d6236a1..1791212 100644 --- a/.github/workflows/on-pull-request.yaml +++ b/.github/workflows/on-pull-request.yaml @@ -52,7 +52,7 @@ jobs: container: qctrl/ci-images:python-${{ matrix.python }}-ci strategy: matrix: - python: ["3.9", "3.10", "3.11"] + python: ["3.10", "3.11", "3.12", "3.13"] steps: - uses: actions/checkout@v4 - name: Download CI tool diff --git a/docs/conf.py b/docs/conf.py index 86b2dc2..7190cf2 100644 --- a/docs/conf.py +++ b/docs/conf.py @@ -28,7 +28,6 @@ import inspect import sys from pathlib import Path -from typing import List import tomli @@ -68,7 +67,7 @@ # List of patterns, relative to source directory, that match files and # directories to ignore when looking for source files. # This pattern also affects html_static_path and html_extra_path. -exclude_patterns: List[str] = [] +exclude_patterns: list[str] = [] # -- Options for HTML output ------------------------------------------------- diff --git a/qctrlopencontrols/__init__.py b/qctrlopencontrols/__init__.py index 7198b52..5cecd05 100644 --- a/qctrlopencontrols/__init__.py +++ b/qctrlopencontrols/__init__.py @@ -55,25 +55,25 @@ "DynamicDecouplingSequence", "convert_dds_to_driven_control", "new_bb1_control", + "new_carr_purcell_sequence", "new_corpse_control", "new_corpse_in_bb1_control", "new_corpse_in_scrofulous_control", "new_corpse_in_sk1_control", + "new_cpmg_sequence", + "new_drag_control", "new_gaussian_control", "new_modulated_gaussian_control", - "new_drag_control", - "new_primitive_control", - "new_scrofulous_control", - "new_sk1_control", - "new_wamf1_control", - "new_carr_purcell_sequence", - "new_cpmg_sequence", "new_periodic_sequence", + "new_primitive_control", "new_quadratic_sequence", "new_ramsey_sequence", + "new_scrofulous_control", + "new_sk1_control", "new_spin_echo_sequence", "new_uhrig_sequence", "new_walsh_sequence", + "new_wamf1_control", "new_x_concatenated_sequence", "new_xy_concatenated_sequence", ] diff --git a/qctrlopencontrols/driven_controls/driven_control.py b/qctrlopencontrols/driven_controls/driven_control.py index 3a65e18..b792a85 100644 --- a/qctrlopencontrols/driven_controls/driven_control.py +++ b/qctrlopencontrols/driven_controls/driven_control.py @@ -522,7 +522,7 @@ def export_to_file( check_arguments( file_type in _file_types, - "Requested file type is not supported. Please use " f"one of {_file_types}", + f"Requested file type is not supported. Please use one of {_file_types}", {"file_type": file_type}, ) diff --git a/qctrlopencontrols/utils.py b/qctrlopencontrols/utils.py index 4e1777d..6fa3889 100644 --- a/qctrlopencontrols/utils.py +++ b/qctrlopencontrols/utils.py @@ -67,8 +67,7 @@ def create_repr_from_attributes(class_instance=None, attributes=None) -> str: for attribute in attributes: if not isinstance(attribute, str): raise ArgumentsValueError( - "Each attribute name must be a string. Found " - f"{type(attribute)} type.", + f"Each attribute name must be a string. Found {type(attribute)} type.", {"attribute": attribute, "type(attribute)": type(attribute)}, ) diff --git a/tests/test_dynamical_decoupling.py b/tests/test_dynamical_decoupling.py index 669527f..5c0af05 100644 --- a/tests/test_dynamical_decoupling.py +++ b/tests/test_dynamical_decoupling.py @@ -217,7 +217,7 @@ def test_pretty_string_format(): ) _pretty_string.append( f"Rabi Rotations = [{_rabi_rotations[0] / np.pi}," - f" {_rabi_rotations[1] / np.pi}, {_rabi_rotations[2]/ np.pi}] × pi" + f" {_rabi_rotations[1] / np.pi}, {_rabi_rotations[2] / np.pi}] × pi" ) _pretty_string.append( f"Azimuthal Angles = [{_azimuthal_angles[0] / np.pi}," @@ -247,11 +247,11 @@ def test_pretty_string_format(): ) _pretty_string.append( f"Rabi Rotations = [{_rabi_rotations[0] / np.pi}," - f" {_rabi_rotations[1] / np.pi}, {_rabi_rotations[2]/ np.pi}] × pi" + f" {_rabi_rotations[1] / np.pi}, {_rabi_rotations[2] / np.pi}] × pi" ) _pretty_string.append( f"Azimuthal Angles = [{_azimuthal_angles[0] / np.pi}," - f" {_azimuthal_angles[1] / np.pi}, {_azimuthal_angles[2]/ np.pi}] × pi" + f" {_azimuthal_angles[1] / np.pi}, {_azimuthal_angles[2] / np.pi}] × pi" ) _pretty_string.append( f"Detuning Rotations = [{_detuning_rotations[0] / np.pi},"