arelle.PluginManager
¶
See COPYRIGHT.md for copyright information.
based on pull request 4
Module Contents¶
Classes¶
Functions¶
If plugin trace file logging is configured, logs |
|
Attempts to find python script as plugin entry point.
A value will be returned
if |
|
Generates a module info dict based on the provided |
|
Get the name, directory and prefix of a module. |
|
Get the file name of a plugin. |
|
Load a module based on name and directory. |
|
Discover plugin entry points with given name. |
|
Given a dictionary containing module information, loads plugin info into |
Data¶
API¶
- arelle.PluginManager.PLUGIN_TRACE_FILE¶
None
- arelle.PluginManager.PLUGIN_TRACE_LEVEL¶
None
- arelle.PluginManager.pluginJsonFile¶
None
- arelle.PluginManager.pluginConfig: dict | None¶
None
- arelle.PluginManager.pluginConfigChanged¶
False
- arelle.PluginManager.pluginTraceFileLogger¶
None
- arelle.PluginManager.modulePluginInfos¶
None
- arelle.PluginManager.pluginMethodsForClasses¶
None
- arelle.PluginManager._cntlr¶
None
- arelle.PluginManager._pluginBase¶
None
- arelle.PluginManager.EMPTYLIST¶
[]
- arelle.PluginManager._ERROR_MESSAGE_IMPORT_TEMPLATE¶
‘Unable to load module {}’
- arelle.PluginManager.init(cntlr: arelle.Cntlr.Cntlr, loadPluginConfig: bool = True) None ¶
- arelle.PluginManager.reset() None ¶
- arelle.PluginManager.orderedPluginConfig()¶
- arelle.PluginManager.save(cntlr: arelle.Cntlr.Cntlr) None ¶
- arelle.PluginManager.close()¶
- arelle.PluginManager.logPluginTrace(message: str, level: Number) None ¶
If plugin trace file logging is configured, logs
message
to it. Only logs to controller logger if log is an error.- Parameters:
message – Message to be logged
level – Log level of message (e.g. logging.INFO)
- arelle.PluginManager.modulesWithNewerFileDates()¶
- arelle.PluginManager.freshenModuleInfos()¶
- arelle.PluginManager.normalizeModuleFilename(moduleFilename: str) str | None ¶
Attempts to find python script as plugin entry point. A value will be returned if
moduleFilename
exists as-is, ifmoduleFilename
is a directory containing init.py, or ifmoduleFilename
with .py extension added exists- Parameters:
moduleFilename –
- Returns:
Normalized filename, if exists
- arelle.PluginManager.getModuleFilename(moduleURL: str, reload: bool, normalize: bool, base: str | None) tuple[str | None, importlib.metadata.EntryPoint | None] ¶
- arelle.PluginManager.parsePluginInfo(moduleURL: str, moduleFilename: str, entryPoint: importlib.metadata.EntryPoint | None) dict | None ¶
- arelle.PluginManager.moduleModuleInfo(moduleURL: str | None = None, entryPoint: importlib.metadata.EntryPoint | None = None, reload: bool = False, parentImportsSubtree: bool = False) dict | None ¶
Generates a module info dict based on the provided
moduleURL
orentryPoint
Exactly one of “moduleURL” or “entryPoint” must be provided, otherwise a RuntimeError will be thrown.When
moduleURL
is provided, it will be treated as a file path and will attempt to be normalized and mapped to an existing plugin based on file location. IfmoduleURL
fails to be mapped to an existing plugin on its own, it will instead be used to search for an entry point. If found, this function will proceed as if that entry point was provided forentryPoint
.When
entryPoint
is provided, it’s location and other details will be used to generate the module info dictionary.- Parameters:
moduleURL – A URL that loosely maps to the file location of a plugin (may be transformed)
entryPoint – An
EntryPoint
instancereload –
parentImportsSubtree –
- Returns:
s
- arelle.PluginManager.moduleInfo(pluginInfo)¶
- arelle.PluginManager._get_name_dir_prefix(controller: arelle.Cntlr.Cntlr, pluginBase: str, moduleURL: str, packagePrefix: str = '') tuple[str, str, str] | tuple[None, None, None] ¶
Get the name, directory and prefix of a module.
- arelle.PluginManager._get_location(moduleDir: str, moduleName: str) str ¶
Get the file name of a plugin.
- arelle.PluginManager._find_and_load_module(moduleDir: str, moduleName: str) types.ModuleType | None ¶
Load a module based on name and directory.
- arelle.PluginManager.loadModule(moduleInfo: dict[str, Any], packagePrefix: str = '') None ¶
- arelle.PluginManager.pluginClassMethods(className: str) Iterator[collections.abc.Callable[..., Any]] ¶
- arelle.PluginManager.addPluginModule(name: str) dict[str, Any] | None ¶
Discover plugin entry points with given name.
- Parameters:
name – The name to search for
- Returns:
The module information dictionary, if added. Otherwise, None.
- arelle.PluginManager.reloadPluginModule(name)¶
- arelle.PluginManager.removePluginModule(name)¶
- arelle.PluginManager.addPluginModuleInfo(plugin_module_info: dict[str, Any]) dict[str, Any] | None ¶
Given a dictionary containing module information, loads plugin info into
pluginConfig
- Parameters:
plugin_module_info – Dictionary of module info fields. See comment block in PluginManager.py for structure.
- Returns:
The module information dictionary, if added. Otherwise, None.
- arelle.PluginManager._entryPointRefCache: list[arelle.PluginManager.EntryPointRef] | None¶
None
- arelle.PluginManager._entryPointRefAliasCache: dict[str, list[arelle.PluginManager.EntryPointRef]] | None¶
None
- arelle.PluginManager._entryPointRefSearchTermEndings¶
[‘/init.py’, ‘.py/’]
- class arelle.PluginManager.EntryPointRef¶
- aliases: set[str]¶
None
- entryPoint: importlib.metadata.EntryPoint | None¶
None
- moduleFilename: str | None¶
None
- moduleInfo: dict | None¶
None
- createModuleInfo() dict | None ¶
Creates a module information dictionary from the entry point ref.
- Returns:
A module inforomation dictionary
- static fromEntryPoint(entryPoint: importlib.metadata.EntryPoint) arelle.PluginManager.EntryPointRef | None ¶
Given an entry point, retrieves the subset of information from pluginInfo necessary to determine if the entry point should be imported as a plugin.
- Parameters:
entryPoint –
- Returns:
- static fromFilepath(filepath: str, entryPoint: importlib.metadata.EntryPoint | None = None) arelle.PluginManager.EntryPointRef | None ¶
Given a filepath, retrieves a subset of information from pluginInfo necessary to determine if the entry point should be imported as a plugin.
- Parameters:
filepath – Path to plugin, can be a directory or .py filepath
entryPoint – Optional entry point information to include in aliases/moduleInfo
- Returns:
- static discoverAll() list[arelle.PluginManager.EntryPointRef] ¶
Retrieve all plugin entry points, cached on first run.
- Returns:
List of all discovered entry points.
- static _discoverBuiltIn(entryPointRefs: list[arelle.PluginManager.EntryPointRef], directory: str) list[arelle.PluginManager.EntryPointRef] ¶
Recursively retrieve all plugin entry points in the given directory.
- Parameters:
entryPointRefs – Working list of entry point refs to append to.
directory – Directory to search for entry points within.
- Returns:
List of discovered entry points.
- static _discoverInstalled() list[arelle.PluginManager.EntryPointRef] ¶
Retrieve all installed plugin entry points.
- Returns:
List of all discovered entry points.
- static get(search: str) arelle.PluginManager.EntryPointRef | None ¶
Retrieve an entry point ref with a matching name or alias. May return None of no matches are found. Throws an exception if multiple entry point refs match the search term.
- Parameters:
search – Only retrieve entry point matching the given search text.
- Returns:
Matching entry point ref, if found.
- static _normalizePluginSearchTerm(search: str) str ¶
Normalizes the given search term or searchable text by: Making slashes consistent Removing common endings
- Parameters:
search – Search term or searchable text
- Returns:
Normalized string
- static search(search: str) list[arelle.PluginManager.EntryPointRef] | None ¶
Retrieve entry point module information matching provided search text. A map of aliases to matching entry points is cached on the first run.
- Parameters:
search – Only retrieve entry points matching the given search text.
- Returns:
List of matching module infos.