Skip to content

Cell Factory

Cell Factory Reference#

create_cell(cell_type, params) #

Create a validated cell instance.

Parameters:

Name Type Description Default
cell_type Union[str, CellType]

Cell type (string or enum)

required
params Dict[str, Any]

Dictionary of cell parameters.

required

Returns:

Type Description
BaseCell

BaseCell instance.

Raises:

Type Description
ValueError

If validation fails.

Source code in SMS_BP/cells/cell_factory.py
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
def create_cell(cell_type: Union[str, CellType], params: Dict[str, Any]) -> BaseCell:
    """
    Create a validated cell instance.

    Args:
        cell_type: Cell type (string or enum)
        params: Dictionary of cell parameters.

    Returns:
        BaseCell instance.

    Raises:
        ValueError: If validation fails.
    """
    if isinstance(cell_type, str):
        try:
            cell_type = CellType(cell_type)
        except ValueError:
            raise ValueError(f"Unknown cell type: {cell_type}")

    if cell_type not in _CELL_CREATION_MAP:
        raise ValueError(f"Unknown cell type: {cell_type}")

    is_valid, errors = validate_cell_parameters(cell_type, params)
    if not is_valid:
        raise ValueError(f"Invalid {cell_type} configuration: {'; '.join(errors)}")

    func, param_keys = _CELL_CREATION_MAP[cell_type]
    return func(**{key: params[key] for key in param_keys})

validate_cell_parameters(cell_type, params) #

Validate parameters for a given cell type.

Parameters:

Name Type Description Default
cell_type Union[str, CellType]

The cell type (string or enum)

required
params Dict[str, Any]

Dictionary of parameters

required

Returns:

Type Description
Tuple[bool, List[str]]

Tuple of (is_valid, error_messages)

Source code in SMS_BP/cells/cell_factory.py
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
def validate_cell_parameters(
    cell_type: Union[str, CellType], params: Dict[str, Any]
) -> Tuple[bool, List[str]]:
    """
    Validate parameters for a given cell type.

    Args:
        cell_type: The cell type (string or enum)
        params: Dictionary of parameters

    Returns:
        Tuple of (is_valid, error_messages)
    """
    if isinstance(cell_type, str):
        try:
            cell_type = CellType(cell_type)
        except ValueError:
            return False, [f"Unknown cell type: {cell_type}"]

    if cell_type not in _CELL_PARAM_CLASSES:
        return False, [f"Unknown cell type: {cell_type}"]

    return _validate_parameters(cell_type, params)