# {py:mod}`arelle.PluginManager` ```{py:module} arelle.PluginManager ``` ```{autodoc2-docstring} arelle.PluginManager :allowtitles: ``` ## Module Contents ### Classes ````{list-table} :class: autosummary longtable :align: left * - {py:obj}`EntryPointRef ` - ```{autodoc2-docstring} arelle.PluginManager.EntryPointRef :summary: ``` ```` ### Functions ````{list-table} :class: autosummary longtable :align: left * - {py:obj}`init ` - ```{autodoc2-docstring} arelle.PluginManager.init :summary: ``` * - {py:obj}`reset ` - ```{autodoc2-docstring} arelle.PluginManager.reset :summary: ``` * - {py:obj}`orderedPluginConfig ` - ```{autodoc2-docstring} arelle.PluginManager.orderedPluginConfig :summary: ``` * - {py:obj}`save ` - ```{autodoc2-docstring} arelle.PluginManager.save :summary: ``` * - {py:obj}`close ` - ```{autodoc2-docstring} arelle.PluginManager.close :summary: ``` * - {py:obj}`logPluginTrace ` - ```{autodoc2-docstring} arelle.PluginManager.logPluginTrace :summary: ``` * - {py:obj}`modulesWithNewerFileDates ` - ```{autodoc2-docstring} arelle.PluginManager.modulesWithNewerFileDates :summary: ``` * - {py:obj}`freshenModuleInfos ` - ```{autodoc2-docstring} arelle.PluginManager.freshenModuleInfos :summary: ``` * - {py:obj}`normalizeModuleFilename ` - ```{autodoc2-docstring} arelle.PluginManager.normalizeModuleFilename :summary: ``` * - {py:obj}`getModuleFilename ` - ```{autodoc2-docstring} arelle.PluginManager.getModuleFilename :summary: ``` * - {py:obj}`parsePluginInfo ` - ```{autodoc2-docstring} arelle.PluginManager.parsePluginInfo :summary: ``` * - {py:obj}`moduleModuleInfo ` - ```{autodoc2-docstring} arelle.PluginManager.moduleModuleInfo :summary: ``` * - {py:obj}`moduleInfo ` - ```{autodoc2-docstring} arelle.PluginManager.moduleInfo :summary: ``` * - {py:obj}`_get_name_dir_prefix ` - ```{autodoc2-docstring} arelle.PluginManager._get_name_dir_prefix :summary: ``` * - {py:obj}`_get_location ` - ```{autodoc2-docstring} arelle.PluginManager._get_location :summary: ``` * - {py:obj}`_find_and_load_module ` - ```{autodoc2-docstring} arelle.PluginManager._find_and_load_module :summary: ``` * - {py:obj}`loadModule ` - ```{autodoc2-docstring} arelle.PluginManager.loadModule :summary: ``` * - {py:obj}`pluginClassMethods ` - ```{autodoc2-docstring} arelle.PluginManager.pluginClassMethods :summary: ``` * - {py:obj}`addPluginModule ` - ```{autodoc2-docstring} arelle.PluginManager.addPluginModule :summary: ``` * - {py:obj}`reloadPluginModule ` - ```{autodoc2-docstring} arelle.PluginManager.reloadPluginModule :summary: ``` * - {py:obj}`removePluginModule ` - ```{autodoc2-docstring} arelle.PluginManager.removePluginModule :summary: ``` * - {py:obj}`addPluginModuleInfo ` - ```{autodoc2-docstring} arelle.PluginManager.addPluginModuleInfo :summary: ``` ```` ### Data ````{list-table} :class: autosummary longtable :align: left * - {py:obj}`PLUGIN_TRACE_FILE ` - ```{autodoc2-docstring} arelle.PluginManager.PLUGIN_TRACE_FILE :summary: ``` * - {py:obj}`PLUGIN_TRACE_LEVEL ` - ```{autodoc2-docstring} arelle.PluginManager.PLUGIN_TRACE_LEVEL :summary: ``` * - {py:obj}`pluginJsonFile ` - ```{autodoc2-docstring} arelle.PluginManager.pluginJsonFile :summary: ``` * - {py:obj}`pluginConfig ` - ```{autodoc2-docstring} arelle.PluginManager.pluginConfig :summary: ``` * - {py:obj}`pluginConfigChanged ` - ```{autodoc2-docstring} arelle.PluginManager.pluginConfigChanged :summary: ``` * - {py:obj}`pluginTraceFileLogger ` - ```{autodoc2-docstring} arelle.PluginManager.pluginTraceFileLogger :summary: ``` * - {py:obj}`modulePluginInfos ` - ```{autodoc2-docstring} arelle.PluginManager.modulePluginInfos :summary: ``` * - {py:obj}`pluginMethodsForClasses ` - ```{autodoc2-docstring} arelle.PluginManager.pluginMethodsForClasses :summary: ``` * - {py:obj}`_cntlr ` - ```{autodoc2-docstring} arelle.PluginManager._cntlr :summary: ``` * - {py:obj}`_pluginBase ` - ```{autodoc2-docstring} arelle.PluginManager._pluginBase :summary: ``` * - {py:obj}`EMPTYLIST ` - ```{autodoc2-docstring} arelle.PluginManager.EMPTYLIST :summary: ``` * - {py:obj}`_ERROR_MESSAGE_IMPORT_TEMPLATE ` - ```{autodoc2-docstring} arelle.PluginManager._ERROR_MESSAGE_IMPORT_TEMPLATE :summary: ``` * - {py:obj}`_entryPointRefCache ` - ```{autodoc2-docstring} arelle.PluginManager._entryPointRefCache :summary: ``` * - {py:obj}`_entryPointRefAliasCache ` - ```{autodoc2-docstring} arelle.PluginManager._entryPointRefAliasCache :summary: ``` * - {py:obj}`_entryPointRefSearchTermEndings ` - ```{autodoc2-docstring} arelle.PluginManager._entryPointRefSearchTermEndings :summary: ``` ```` ### API ````{py:data} PLUGIN_TRACE_FILE :canonical: arelle.PluginManager.PLUGIN_TRACE_FILE :value: > None ```{autodoc2-docstring} arelle.PluginManager.PLUGIN_TRACE_FILE ``` ```` ````{py:data} PLUGIN_TRACE_LEVEL :canonical: arelle.PluginManager.PLUGIN_TRACE_LEVEL :value: > None ```{autodoc2-docstring} arelle.PluginManager.PLUGIN_TRACE_LEVEL ``` ```` ````{py:data} pluginJsonFile :canonical: arelle.PluginManager.pluginJsonFile :value: > None ```{autodoc2-docstring} arelle.PluginManager.pluginJsonFile ``` ```` ````{py:data} pluginConfig :canonical: arelle.PluginManager.pluginConfig :type: dict | None :value: > None ```{autodoc2-docstring} arelle.PluginManager.pluginConfig ``` ```` ````{py:data} pluginConfigChanged :canonical: arelle.PluginManager.pluginConfigChanged :value: > False ```{autodoc2-docstring} arelle.PluginManager.pluginConfigChanged ``` ```` ````{py:data} pluginTraceFileLogger :canonical: arelle.PluginManager.pluginTraceFileLogger :value: > None ```{autodoc2-docstring} arelle.PluginManager.pluginTraceFileLogger ``` ```` ````{py:data} modulePluginInfos :canonical: arelle.PluginManager.modulePluginInfos :value: > None ```{autodoc2-docstring} arelle.PluginManager.modulePluginInfos ``` ```` ````{py:data} pluginMethodsForClasses :canonical: arelle.PluginManager.pluginMethodsForClasses :value: > None ```{autodoc2-docstring} arelle.PluginManager.pluginMethodsForClasses ``` ```` ````{py:data} _cntlr :canonical: arelle.PluginManager._cntlr :value: > None ```{autodoc2-docstring} arelle.PluginManager._cntlr ``` ```` ````{py:data} _pluginBase :canonical: arelle.PluginManager._pluginBase :value: > None ```{autodoc2-docstring} arelle.PluginManager._pluginBase ``` ```` ````{py:data} EMPTYLIST :canonical: arelle.PluginManager.EMPTYLIST :value: > [] ```{autodoc2-docstring} arelle.PluginManager.EMPTYLIST ``` ```` ````{py:data} _ERROR_MESSAGE_IMPORT_TEMPLATE :canonical: arelle.PluginManager._ERROR_MESSAGE_IMPORT_TEMPLATE :value: > 'Unable to load module {}' ```{autodoc2-docstring} arelle.PluginManager._ERROR_MESSAGE_IMPORT_TEMPLATE ``` ```` ````{py:function} init(cntlr: arelle.Cntlr.Cntlr, loadPluginConfig: bool = True) -> None :canonical: arelle.PluginManager.init ```{autodoc2-docstring} arelle.PluginManager.init ``` ```` ````{py:function} reset() -> None :canonical: arelle.PluginManager.reset ```{autodoc2-docstring} arelle.PluginManager.reset ``` ```` ````{py:function} orderedPluginConfig() :canonical: arelle.PluginManager.orderedPluginConfig ```{autodoc2-docstring} arelle.PluginManager.orderedPluginConfig ``` ```` ````{py:function} save(cntlr: arelle.Cntlr.Cntlr) -> None :canonical: arelle.PluginManager.save ```{autodoc2-docstring} arelle.PluginManager.save ``` ```` ````{py:function} close() :canonical: arelle.PluginManager.close ```{autodoc2-docstring} arelle.PluginManager.close ``` ```` ````{py:function} logPluginTrace(message: str, level: Number) -> None :canonical: arelle.PluginManager.logPluginTrace ```{autodoc2-docstring} arelle.PluginManager.logPluginTrace ``` ```` ````{py:function} modulesWithNewerFileDates() :canonical: arelle.PluginManager.modulesWithNewerFileDates ```{autodoc2-docstring} arelle.PluginManager.modulesWithNewerFileDates ``` ```` ````{py:function} freshenModuleInfos() :canonical: arelle.PluginManager.freshenModuleInfos ```{autodoc2-docstring} arelle.PluginManager.freshenModuleInfos ``` ```` ````{py:function} normalizeModuleFilename(moduleFilename: str) -> str | None :canonical: arelle.PluginManager.normalizeModuleFilename ```{autodoc2-docstring} arelle.PluginManager.normalizeModuleFilename ``` ```` ````{py:function} getModuleFilename(moduleURL: str, reload: bool, normalize: bool, base: str | None) -> tuple[str | None, importlib.metadata.EntryPoint | None] :canonical: arelle.PluginManager.getModuleFilename ```{autodoc2-docstring} arelle.PluginManager.getModuleFilename ``` ```` ````{py:function} parsePluginInfo(moduleURL: str, moduleFilename: str, entryPoint: importlib.metadata.EntryPoint | None) -> dict | None :canonical: arelle.PluginManager.parsePluginInfo ```{autodoc2-docstring} arelle.PluginManager.parsePluginInfo ``` ```` ````{py:function} moduleModuleInfo(moduleURL: str | None = None, entryPoint: importlib.metadata.EntryPoint | None = None, reload: bool = False, parentImportsSubtree: bool = False) -> dict | None :canonical: arelle.PluginManager.moduleModuleInfo ```{autodoc2-docstring} arelle.PluginManager.moduleModuleInfo ``` ```` ````{py:function} moduleInfo(pluginInfo) :canonical: arelle.PluginManager.moduleInfo ```{autodoc2-docstring} arelle.PluginManager.moduleInfo ``` ```` ````{py:function} _get_name_dir_prefix(controller: arelle.Cntlr.Cntlr, pluginBase: str, moduleURL: str, packagePrefix: str = '') -> tuple[str, str, str] | tuple[None, None, None] :canonical: arelle.PluginManager._get_name_dir_prefix ```{autodoc2-docstring} arelle.PluginManager._get_name_dir_prefix ``` ```` ````{py:function} _get_location(moduleDir: str, moduleName: str) -> str :canonical: arelle.PluginManager._get_location ```{autodoc2-docstring} arelle.PluginManager._get_location ``` ```` ````{py:function} _find_and_load_module(moduleDir: str, moduleName: str) -> types.ModuleType | None :canonical: arelle.PluginManager._find_and_load_module ```{autodoc2-docstring} arelle.PluginManager._find_and_load_module ``` ```` ````{py:function} loadModule(moduleInfo: dict[str, typing.Any], packagePrefix: str = '') -> None :canonical: arelle.PluginManager.loadModule ```{autodoc2-docstring} arelle.PluginManager.loadModule ``` ```` ````{py:function} pluginClassMethods(className: str) -> collections.abc.Iterator[collections.abc.Callable[..., typing.Any]] :canonical: arelle.PluginManager.pluginClassMethods ```{autodoc2-docstring} arelle.PluginManager.pluginClassMethods ``` ```` ````{py:function} addPluginModule(name: str) -> dict[str, typing.Any] | None :canonical: arelle.PluginManager.addPluginModule ```{autodoc2-docstring} arelle.PluginManager.addPluginModule ``` ```` ````{py:function} reloadPluginModule(name) :canonical: arelle.PluginManager.reloadPluginModule ```{autodoc2-docstring} arelle.PluginManager.reloadPluginModule ``` ```` ````{py:function} removePluginModule(name) :canonical: arelle.PluginManager.removePluginModule ```{autodoc2-docstring} arelle.PluginManager.removePluginModule ``` ```` ````{py:function} addPluginModuleInfo(plugin_module_info: dict[str, typing.Any]) -> dict[str, typing.Any] | None :canonical: arelle.PluginManager.addPluginModuleInfo ```{autodoc2-docstring} arelle.PluginManager.addPluginModuleInfo ``` ```` ````{py:data} _entryPointRefCache :canonical: arelle.PluginManager._entryPointRefCache :type: list[arelle.PluginManager.EntryPointRef] | None :value: > None ```{autodoc2-docstring} arelle.PluginManager._entryPointRefCache ``` ```` ````{py:data} _entryPointRefAliasCache :canonical: arelle.PluginManager._entryPointRefAliasCache :type: dict[str, list[arelle.PluginManager.EntryPointRef]] | None :value: > None ```{autodoc2-docstring} arelle.PluginManager._entryPointRefAliasCache ``` ```` ````{py:data} _entryPointRefSearchTermEndings :canonical: arelle.PluginManager._entryPointRefSearchTermEndings :value: > ['/__init__.py', '.py/'] ```{autodoc2-docstring} arelle.PluginManager._entryPointRefSearchTermEndings ``` ```` `````{py:class} EntryPointRef :canonical: arelle.PluginManager.EntryPointRef ```{autodoc2-docstring} arelle.PluginManager.EntryPointRef ``` ````{py:attribute} aliases :canonical: arelle.PluginManager.EntryPointRef.aliases :type: set[str] :value: > None ```{autodoc2-docstring} arelle.PluginManager.EntryPointRef.aliases ``` ```` ````{py:attribute} entryPoint :canonical: arelle.PluginManager.EntryPointRef.entryPoint :type: importlib.metadata.EntryPoint | None :value: > None ```{autodoc2-docstring} arelle.PluginManager.EntryPointRef.entryPoint ``` ```` ````{py:attribute} moduleFilename :canonical: arelle.PluginManager.EntryPointRef.moduleFilename :type: str | None :value: > None ```{autodoc2-docstring} arelle.PluginManager.EntryPointRef.moduleFilename ``` ```` ````{py:attribute} moduleInfo :canonical: arelle.PluginManager.EntryPointRef.moduleInfo :type: dict | None :value: > None ```{autodoc2-docstring} arelle.PluginManager.EntryPointRef.moduleInfo ``` ```` ````{py:method} createModuleInfo() -> dict | None :canonical: arelle.PluginManager.EntryPointRef.createModuleInfo ```{autodoc2-docstring} arelle.PluginManager.EntryPointRef.createModuleInfo ``` ```` ````{py:method} fromEntryPoint(entryPoint: importlib.metadata.EntryPoint) -> arelle.PluginManager.EntryPointRef | None :canonical: arelle.PluginManager.EntryPointRef.fromEntryPoint :staticmethod: ```{autodoc2-docstring} arelle.PluginManager.EntryPointRef.fromEntryPoint ``` ```` ````{py:method} fromFilepath(filepath: str, entryPoint: importlib.metadata.EntryPoint | None = None) -> arelle.PluginManager.EntryPointRef | None :canonical: arelle.PluginManager.EntryPointRef.fromFilepath :staticmethod: ```{autodoc2-docstring} arelle.PluginManager.EntryPointRef.fromFilepath ``` ```` ````{py:method} discoverAll() -> list[arelle.PluginManager.EntryPointRef] :canonical: arelle.PluginManager.EntryPointRef.discoverAll :staticmethod: ```{autodoc2-docstring} arelle.PluginManager.EntryPointRef.discoverAll ``` ```` ````{py:method} _discoverBuiltIn(entryPointRefs: list[arelle.PluginManager.EntryPointRef], directory: str) -> list[arelle.PluginManager.EntryPointRef] :canonical: arelle.PluginManager.EntryPointRef._discoverBuiltIn :staticmethod: ```{autodoc2-docstring} arelle.PluginManager.EntryPointRef._discoverBuiltIn ``` ```` ````{py:method} _discoverInstalled() -> list[arelle.PluginManager.EntryPointRef] :canonical: arelle.PluginManager.EntryPointRef._discoverInstalled :staticmethod: ```{autodoc2-docstring} arelle.PluginManager.EntryPointRef._discoverInstalled ``` ```` ````{py:method} get(search: str) -> arelle.PluginManager.EntryPointRef | None :canonical: arelle.PluginManager.EntryPointRef.get :staticmethod: ```{autodoc2-docstring} arelle.PluginManager.EntryPointRef.get ``` ```` ````{py:method} _normalizePluginSearchTerm(search: str) -> str :canonical: arelle.PluginManager.EntryPointRef._normalizePluginSearchTerm :staticmethod: ```{autodoc2-docstring} arelle.PluginManager.EntryPointRef._normalizePluginSearchTerm ``` ```` ````{py:method} search(search: str) -> list[arelle.PluginManager.EntryPointRef] | None :canonical: arelle.PluginManager.EntryPointRef.search :staticmethod: ```{autodoc2-docstring} arelle.PluginManager.EntryPointRef.search ``` ```` `````