# Multi-channel y offset caluclations: DISTANCE_BETWEEN_NOZZLES = 9 NUM_MULTI_CHANNEL_NOZZLES = 8 MULTI_LENGTH = (NUM_MULTI_CHANNEL_NOZZLES - 1) * DISTANCE_BETWEEN_NOZZLES Y_OFFSET_MULTI = MULTI_LENGTH / 2 Z_OFFSET_MULTI = -25.8 Z_OFFSET_P10 = -13 # longest single-channel pipette Z_OFFSET_P50 = 0 Z_OFFSET_P300 = 0 Z_OFFSET_P1000 = 20 # shortest single-channel pipette LOW_CURRENT_DEFAULT = 0.05 config_models = list(model_config()['config'].keys()) config_names = list(name_config().keys()) configs = model_config()['config'] #: A list of pipette model names for which we have config entries MUTABLE_CONFIGS = model_config()['mutableConfigs'] #: A list of mutable configs for pipettes VALID_QUIRKS = model_config()['validQuirks'] #: A list of valid quirks for pipettes def load( pipette_model: 'PipetteModel', pipette_id: str = None) -> PipetteConfig: """ Load pipette config data
def build_model_name_pairs(): for model, conf in model_config()['config'].items(): yield model, conf['name'] for bcn in conf.get('backCompatNames', []): yield model, bcn
def test_model_for_name(name): model = dummy_model_for_name(name) assert model in model_config()['config']
def test_model_config_check(): defdict = model_config() typeguard.check_type('defdict', defdict, PipetteModelSpecs)