ExtensionMeta Class

The metaclass handles extension registration.

AppExtension is registered in init, it is applied to all triggers. FuncExtension is registered in call, as users need to instantiate it inside hook script.

After registration, the extension class will be flatten into the following structure to speed up worker lookup:

_func_exts[<trigger_name>].<hook_name>.(ext_name, ext_impl) (e.g. _func_exts['HttpTrigger'].pre_invocation.ext_impl)

_app_exts.<hook_name>.(ext_name, ext_impl) (e.g. _app_exts.pre_invocation_app_level.ext_impl)

The extension tree information is stored in _info for diagnostic purpose. The dictionary is serializable to json:

_info['FuncExtension'][''] = list() _info['AppExtension'] = list()

Executes on 'import extension', once the AppExtension class is loaded, call the setup() method and add the life-cycle hooks into _app_exts.

Inheritance
ExtensionMeta

Constructor

ExtensionMeta(name, bases, namespace, /, **kwargs)

Methods

get_application_hooks

Return all application hooks

get_function_hooks

Return all function extension hooks indexed by trigger name.

get_registered_extensions_json

Return a json string of the registered

mro

Return a type's method resolution order.

register

Register a virtual subclass of an ABC.

Returns the subclass, to allow usage as a class decorator.

get_application_hooks

Return all application hooks

get_application_hooks() -> AppExtensionHooks | None

Returns

Type Description

Example to look up a certain life-cycle name: get_application_hooks().pre_invocation_app_level.ext_name

get_function_hooks

Return all function extension hooks indexed by trigger name.

get_function_hooks(name: str) -> FuncExtensionHooks | None

Parameters

Name Description
name
Required

Returns

Type Description

Example to look up a certain life-cycle name: get_function_hooks('HttpTrigger').pre_invocation.ext_name

get_registered_extensions_json

Return a json string of the registered

get_registered_extensions_json() -> str

Returns

Type Description
str

The json string will be constructed in a structure of {

"FuncExtension": { "": [ "ExtensionName"

  ]

}, "AppExtension": [

  "ExtensionName"

]

}

mro

Return a type's method resolution order.

mro()

register

Register a virtual subclass of an ABC.

Returns the subclass, to allow usage as a class decorator.

register(subclass)

Parameters

Name Description
subclass
Required