loki.transform.transformation
Base class definition for Transformation pipelines.
Classes
Base class for source code transformations that manipulate source items like |
- class Transformation
Bases:
objectBase class for source code transformations that manipulate source items like
SubroutineorModulein place via theitem.apply(transform)method.The source transformations to be applied should be defined in the following class-specific methods:
The generic dispatch mechanism behind the
apply()method will ensure that all hierarchies of the data model are traversed and apply the specific method for each level.Note that in
Sourcefileobjects, allModulemembers will be traversed before standaloneSubroutineobjects.- transform_subroutine(routine, **kwargs)
Defines the transformation to apply to
Subroutineitems.For transformations that modify
Subroutineobjects, this method should be implemented. It gets called via the dispatch methodapply().- Parameters:
routine (
Subroutine) – The subroutine to be transformed.**kwargs (optional) – Keyword arguments for the transformation.
- transform_module(module, **kwargs)
Defines the transformation to apply to
Moduleitems.For transformations that modify
Moduleobjects, this method should be implemented. It gets called via the dispatch methodapply().- Parameters:
module (
Module) – The module to be transformed.**kwargs (optional) – Keyword arguments for the transformation.
- transform_file(sourcefile, **kwargs)
Defines the transformation to apply to
Sourcefileitems.For transformations that modify
Sourcefileobjects, this method should be implemented. It gets called via the dispatch methodapply().- Parameters:
sourcefile (
Sourcefile) – The sourcefile to be transformed.**kwargs (optional) – Keyword arguments for the transformation.
- apply(source, post_apply_rescope_symbols=False, **kwargs)
Dispatch method to apply transformation to all source items in
source.It dispatches to one of the type-specific dispatch methods
apply_file(),apply_module(), orapply_subroutine().- Parameters:
source (
SourcefileorModuleorSubroutine) – The source item to transform.post_apply_rescope_symbols (bool, optional) – Call
rescope_symbolsonsourceafter applying the transformation to clean up any scoping issues.**kwargs (optional) – Keyword arguments that are passed on to the methods defining the actual transformation.
- apply_file(sourcefile, **kwargs)
Apply transformation to all items in
sourcefile.This calls
transform_file()and dispatches the transformation for allModuleandSubroutineobjects in the file.- Parameters:
sourcefile (
Sourcefile) – The file to transform.**kwargs (optional) – Keyword arguments that are passed on to transformation methods.
- apply_subroutine(subroutine, **kwargs)
Apply transformation to a given
Subroutineobject and its members.This calls
transform_subroutine()and dispatches the transformation for allSubroutinemembers.- Parameters:
subroutine (
Subroutine) – The subroutine to transform.**kwargs (optional) – Keyword arguments that are passed on to transformation methods.
- apply_module(module, **kwargs)
Apply transformation to a given
Moduleobject and its members.This calls
transform_module()and dispatches the transformation for allSubroutinemembers.- Parameters:
module (
Module) – The module to transform.**kwargs (optional) – Keyword arguments that are passed on to transformation methods.
- post_apply(source, rescope_symbols=False)
Dispatch method for actions to be carried out after applying a transformation to
source.It dispatches to one of the type-specific dispatch methods
post_apply_file(),post_apply_module(), orpost_apply_subroutine().- Parameters:
source (
SourcefileorModuleorSubroutine) – The source item to transform.rescope_symbols (bool, optional) – Call
rescope_symbolsonsource
- post_apply_file(sourcefile, rescope_symbols)
Apply actions after applying a transformation to
sourcefile.- Parameters:
sourcefile (
Sourcefile) – The file to transform.rescope_symbols (bool) – Call
rescope_symbolson modules and subroutines insourcefile
- post_apply_subroutine(subroutine, rescope_symbols)
Apply actions after applying a transformation to
subroutine.- Parameters:
subroutine (
Subroutine) – The file to transform.rescope_symbols (bool) – Call
rescope_symbolsonsubroutine