()
| 1627 | |
| 1628 | |
| 1629 | def _pin_fork_objects() -> None: # pragma: needs fork |
| 1630 | _ensure_current_process() |
| 1631 | thread_id = get_ident() |
| 1632 | with _FORK_STATE.gate: |
| 1633 | _FORK_STATE.fork_owner_depths[thread_id] = _FORK_STATE.fork_owner_depths.get(thread_id, 0) + 1 |
| 1634 | _FORK_STATE.admission_closed = True |
| 1635 | while _FORK_STATE.active_transitions > len(_FORK_STATE.transitions.get(thread_id, ())): |
| 1636 | _FORK_STATE.gate.wait() |
| 1637 | transition_owners = tuple(_FORK_STATE.transitions.get(thread_id, {}).values()) |
| 1638 | _verify_unverified_descriptors() |
| 1639 | owners = {id(owner): owner for owner in transition_owners if owner is not None} |
| 1640 | provisional_descriptor_tokens = tuple( |
| 1641 | starmap( |
| 1642 | _snapshot_descriptor_for_fork, |
| 1643 | (descriptor for owner in owners.values() for descriptor in owner._descriptors_for_fork()), # ruff:ignore[private-member-access] # snapshots each owner's own fork descriptors |
| 1644 | ) |
| 1645 | ) |
| 1646 | with _FORK_STATE.registry_lock: |
| 1647 | _FORK_STATE.provisional_descriptor_tokens.setdefault(thread_id, []).append(provisional_descriptor_tokens) |
| 1648 | _FORK_STATE.pinned_objects.setdefault(thread_id, []).append(tuple(_FORK_OBJECTS.values())) |
| 1649 | _FORK_STATE.pinned_classes.setdefault(thread_id, []).append(tuple(_FORK_CLASSES.values())) |
| 1650 | |
| 1651 | |
| 1652 | def _resume_parent_after_fork() -> None: # pragma: needs fork |
nothing calls this directly
no test coverage detected