Return `(cell_id, resolved_name)` for a new cell. The `"setup"` name is special-cased to use the well-known setup cell ID. Raises `ValueError` if a setup cell already exists.
(
self, name: str | None
)
| 1008 | ) |
| 1009 | |
| 1010 | def _resolve_new_cell( |
| 1011 | self, name: str | None |
| 1012 | ) -> tuple[CellId_t, str | None]: |
| 1013 | """Return `(cell_id, resolved_name)` for a new cell. |
| 1014 | |
| 1015 | The `"setup"` name is special-cased to use the well-known setup |
| 1016 | cell ID. Raises `ValueError` if a setup cell already exists. |
| 1017 | """ |
| 1018 | if name == SETUP_CELL_NAME: |
| 1019 | # Check if a setup cell already exists (by name or by ID). |
| 1020 | try: |
| 1021 | self.cells._resolve(SETUP_CELL_NAME) |
| 1022 | raise ValueError( |
| 1023 | "A setup cell already exists. Use " |
| 1024 | 'ctx.edit_cell("setup", code=...) to modify it.' |
| 1025 | ) |
| 1026 | except KeyError: |
| 1027 | pass |
| 1028 | cell_id = ( |
| 1029 | self._cell_manager.setup_cell_id |
| 1030 | if self._cell_manager is not None |
| 1031 | else CellId_t(SETUP_CELL_NAME) |
| 1032 | ) |
| 1033 | return cell_id, SETUP_CELL_NAME |
| 1034 | cell_id = self._id_generator.create_cell_id() |
| 1035 | return cell_id, name |
| 1036 | |
| 1037 | def create_cell( |
| 1038 | self, |
no test coverage detected