Skip to content

Commit

Permalink
make utils import independent of qcodes
Browse files Browse the repository at this point in the history
To hopefully break circular imports
  • Loading branch information
jenshnielsen committed Mar 7, 2022
1 parent c8e16de commit 2db5424
Show file tree
Hide file tree
Showing 4 changed files with 26 additions and 24 deletions.
4 changes: 2 additions & 2 deletions qcodes/utils/installation.py
Original file line number Diff line number Diff line change
@@ -1,10 +1,9 @@
"""This module contains helper scripts to make certain installation tasks
easier."""

import json
import os
import sys
import json
from qcodes.station import SCHEMA_PATH, STATION_YAML_EXT, update_config_schema


def register_station_schema_with_vscode() -> None:
Expand All @@ -26,6 +25,7 @@ def register_station_schema_with_vscode() -> None:
For more information consult `qcodes/docs/examples/Station.ipynb`.
"""
from qcodes.station import SCHEMA_PATH, STATION_YAML_EXT, update_config_schema
if sys.platform != 'win32':
raise RuntimeError(
'This script is only supported on Windows platforms.\n '
Expand Down
9 changes: 5 additions & 4 deletions qcodes/utils/plotting.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,13 +6,13 @@
"""
import copy
import logging
from typing import Tuple, Union, Optional, Any, cast, Set, Dict
from collections import OrderedDict
import numpy as np
from typing import Any, Dict, Optional, Set, Tuple, Union, cast

import matplotlib
import matplotlib.colorbar
import matplotlib.collections
import qcodes
import matplotlib.colorbar
import numpy as np

log = logging.getLogger(__name__)

Expand Down Expand Up @@ -253,6 +253,7 @@ def auto_color_scale_from_config(colorbar: matplotlib.colorbar.Colorbar,
by the lower limit. Default value is read from
``config.plotting.auto_color_scale.color_under``.
"""
import qcodes
if colorbar is None:
log.warning('"auto_color_scale_from_config" did not receive a colorbar '
'for scaling. Are you trying to scale a plot without '
Expand Down
11 changes: 6 additions & 5 deletions qcodes/utils/slack.py
Original file line number Diff line number Diff line change
Expand Up @@ -56,11 +56,6 @@
from requests.packages.urllib3.exceptions import ReadTimeoutError
from slack_sdk import WebClient

from qcodes import config as qc_config
from qcodes.instrument.parameter import _BaseParameter
from qcodes.loops import active_data_set, active_loop
from qcodes.plots.base import BasePlot


class SlackTimeoutWarning(UserWarning):
pass
Expand Down Expand Up @@ -123,6 +118,7 @@ def __init__(self, interval=3, config=None, auto_start=True, **commands):
auto_start (bool): Defaults to True.
"""
from qcodes import config as qc_config
if config is not None:
self.config = config
else:
Expand Down Expand Up @@ -328,6 +324,7 @@ def handle_messages(self, messages):
Performs commands depending on messages.
This includes adding tasks to be performed during each update.
"""
from qcodes.instrument.parameter import _BaseParameter
for user, user_messages in messages.items():
for message in user_messages:
if message.get('user', None) != self.users[user]['id']:
Expand Down Expand Up @@ -409,6 +406,8 @@ def upload_latest_plot(self, channel, **kwargs):
Returns:
None.
"""
from qcodes.plots.base import BasePlot

# Create temporary filename
temp_filename = tempfile.mktemp(suffix='.jpg')
# Retrieve latest plot
Expand Down Expand Up @@ -436,6 +435,7 @@ def print_measurement_information(self, channel, **kwargs):
Returns:
None.
"""
from qcodes.loops import active_data_set
dataset = active_data_set()
if dataset is not None:
self.slack.chat_postMessage(
Expand All @@ -459,6 +459,7 @@ def check_msmt_finished(self, channel, **kwargs):
Returns:
bool: True if measurement is finished, False otherwise.
"""
from qcodes.loops import active_loop
if active_loop() is None:
self.slack.chat_postMessage(
text='Measurement complete',
Expand Down
26 changes: 13 additions & 13 deletions qcodes/utils/threading.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@
from functools import partial
from types import TracebackType
from typing import (
TYPE_CHECKING,
Any,
Callable,
Dict,
Expand All @@ -25,13 +26,12 @@

from typing_extensions import Protocol

from qcodes import config
from qcodes.dataset.measurements import res_type
from qcodes.instrument.parameter import ParamDataType, _BaseParameter
if TYPE_CHECKING:
from qcodes.dataset.measurements import res_type
from qcodes.instrument.parameter import ParamDataType, _BaseParameter

ParamMeasT = Union[_BaseParameter, Callable[[], None]]

OutType = List[res_type]
ParamMeasT = Union["_BaseParameter", Callable[[], None]]
OutType = List["res_type"]

T = TypeVar("T")

Expand Down Expand Up @@ -121,11 +121,11 @@ def thread_map(

class _ParamCaller:

def __init__(self, *parameters: _BaseParameter):
def __init__(self, *parameters: "_BaseParameter"):

self._parameters = parameters

def __call__(self) -> Tuple[Tuple[_BaseParameter, ParamDataType], ...]:
def __call__(self) -> Tuple[Tuple["_BaseParameter", ParamDataType], ...]:
output = []
for param in self._parameters:
output.append((param, param.get()))
Expand All @@ -138,12 +138,12 @@ def __repr__(self) -> str:

def _instrument_to_param(
params: Sequence[ParamMeasT]
) -> Dict[Optional[str], Tuple[_BaseParameter, ...]]:

) -> Dict[Optional[str], Tuple["_BaseParameter", ...]]:
from qcodes.instrument.parameter import _BaseParameter
real_parameters = [param for param in params
if isinstance(param, _BaseParameter)]

output: Dict[Optional[str], Tuple[_BaseParameter, ...]] = defaultdict(tuple)
output: Dict[Optional[str], Tuple["_BaseParameter", ...]] = defaultdict(tuple)
for param in real_parameters:
if param.underlying_instrument:
output[param.underlying_instrument.full_name] += (param,)
Expand Down Expand Up @@ -185,7 +185,7 @@ def call_params_threaded(param_meas: Sequence[ParamMeasT]) -> OutType:


def _call_params(param_meas: Sequence[ParamMeasT]) -> OutType:

from qcodes.instrument.parameter import _BaseParameter
output: OutType = []

for parameter in param_meas:
Expand All @@ -201,7 +201,7 @@ def process_params_meas(
param_meas: Sequence[ParamMeasT],
use_threads: Optional[bool] = None
) -> OutType:

from qcodes import config
if use_threads is None:
use_threads = config.dataset.use_threads

Expand Down

0 comments on commit 2db5424

Please sign in to comment.