[docs]classenable_experimental_features:"""Enables experimental Guppy features. Can be used as a context manager to enable experimental features in a `with` block. """def__init__(self)->None:globalEXPERIMENTAL_FEATURES_ENABLEDself.original=EXPERIMENTAL_FEATURES_ENABLEDEXPERIMENTAL_FEATURES_ENABLED=Truedef__enter__(self)->None:passdef__exit__(self,exc_type:type[BaseException]|None,exc_val:BaseException|None,exc_tb:TracebackType|None,)->None:globalEXPERIMENTAL_FEATURES_ENABLEDEXPERIMENTAL_FEATURES_ENABLED=self.original
[docs]classdisable_experimental_features:"""Disables experimental Guppy features. Can be used as a context manager to enable experimental features in a `with` block. """def__init__(self)->None:globalEXPERIMENTAL_FEATURES_ENABLEDself.original=EXPERIMENTAL_FEATURES_ENABLEDEXPERIMENTAL_FEATURES_ENABLED=Falsedef__enter__(self)->None:passdef__exit__(self,exc_type:type[BaseException]|None,exc_val:BaseException|None,exc_tb:TracebackType|None,)->None:globalEXPERIMENTAL_FEATURES_ENABLEDEXPERIMENTAL_FEATURES_ENABLED=self.original
@dataclass(frozen=True)classExperimentalFeatureError(Error):title:ClassVar[str]="Experimental feature"span_label:ClassVar[str]="{things} are an experimental feature"things:str@dataclass(frozen=True)classSuggestion(Help):message:ClassVar[str]=("Experimental features are currently disabled. You can enable them by ""calling `guppylang.enable_experimental_features()`, however note that ""these features are unstable and might break in the future.")def__post_init__(self)->None:self.add_sub_diagnostic(ExperimentalFeatureError.Suggestion(None))defcheck_function_tensors_enabled(node:expr|None=None)->None:ifnotEXPERIMENTAL_FEATURES_ENABLED:raiseGuppyError(ExperimentalFeatureError(node,"Function tensors"))defcheck_lists_enabled(loc:AstNode|None=None)->None:ifnotEXPERIMENTAL_FEATURES_ENABLED:raiseGuppyError(ExperimentalFeatureError(loc,"Lists"))defcheck_capturing_closures_enabled(loc:AstNode|None=None)->None:ifnotEXPERIMENTAL_FEATURES_ENABLED:raiseGuppyError(UnsupportedError(loc,"Capturing closures"))