# Copyright (c) Meta Platforms, Inc. and affiliates.# All rights reserved.## This source code is licensed under the BSD-style license found in the# LICENSE file in the root directory of this source tree.from__future__importannotations__version__="0.5.0.dev202504210150+g765ac9d"importfairseq2n# Report any fairseq2n initialization error eagerly.# isort: splitfromfairseq2.contextimportRuntimeContextfromfairseq2.errorimportInternalErrorfromfairseq2.utils.progressimportProgressReporter_default_context:RuntimeContext|None=None_setting_up:bool=False
[docs]defsetup_fairseq2(progress_reporter:ProgressReporter|None=None)->RuntimeContext:""" Sets up fairseq2. As part of the initialization, this function also registers extensions with via setuptools' `entry-point`__ mechanism. See :doc:`/basics/runtime_extensions` for more information. .. important:: This function must be called before using any of the fairseq2 APIs. .. __: https://setuptools.pypa.io/en/latest/userguide/entry_point.html """fromfairseq2.setupimportsetup_libraryglobal_default_contextglobal_setting_upif_default_contextisnotNone:return_default_contextif_setting_up:raiseRuntimeError("`setup_fairseq2()` cannot be called recursively.")_setting_up=Truetry:context=setup_library(progress_reporter)finally:_setting_up=False_default_context=contextreturncontext
defget_runtime_context()->RuntimeContext:if_default_contextisNone:setup_fairseq2()if_default_contextisNone:raiseInternalError("fairseq2 is not initialized.")return_default_context