Module Assign NameStore Str If CompareEq NameLoad Str body ImportFrom alias ImportFrom alias Expr Call AttributeLoad AttributeLoad NameLoad attr attr Call NameLoad ImportFrom alias Assign NameStore IfExp CompareEq NameLoad Str NameLoad NameLoad ClassDef bases body Expr Str FunctionDef arguments args NameParam NameParam defaults body Return Call AttributeLoad Str attr NameLoad decorator_list decorator_list ClassDef bases NameLoad body FunctionDef arguments args NameParam NameParam defaults body Return Call AttributeLoad Str attr NameLoad decorator_list decorator_list ClassDef bases NameLoad body FunctionDef arguments args NameParam NameParam defaults body Return Call AttributeLoad Str attr NameLoad decorator_list decorator_list ClassDef bases NameLoad body FunctionDef arguments args NameParam NameParam defaults body Return Call AttributeLoad Str attr NameLoad decorator_list decorator_list ClassDef bases body Expr Str Assign NameStore NameLoad FunctionDef arguments args NameParam defaults vararg kwarg body If CompareIs AttributeLoad NameLoad attr NameLoad body Assign AttributeStore NameLoad attr Call NameLoad decorator_list FunctionDef arguments args NameParam NameParam defaults body Expr Call AttributeLoad AttributeLoad NameLoad attr attr NameLoad decorator_list decorator_list ClassDef bases body Expr Str Assign NameStore NameLoad FunctionDef arguments args NameParam defaults vararg kwarg body If CompareNotIn Str NameLoad body Assign AttributeStore NameLoad attr Call NameLoad orelse Assign AttributeStore NameLoad attr Call Call AttributeLoad NameLoad attr Str decorator_list FunctionDef arguments args NameParam NameParam defaults body Assign NameStore Call AttributeLoad AttributeLoad NameLoad attr attr NameLoad Print NameLoad Return NameLoad decorator_list decorator_list If NameLoad body With Call NameLoad Str body Assign NameStore Call NameLoad Assert CompareEq Call AttributeLoad NameLoad attr Str Str Assign NameStore Call NameLoad keyword NameLoad Assert CompareEq Call AttributeLoad NameLoad attr Str Str Assign NameStore Call NameLoad keyword NameLoad Assert CompareEq Call AttributeLoad NameLoad attr Str Str Assign NameStore Call NameLoad keyword NameLoad Assert CompareEq Call AttributeLoad NameLoad attr Str Str
N/A N/A __author__ Chris Tabor (dxdstudio@gmail.com) N/A N/A __name__ __main__ N/A os getcwd os sys N/A N/A N/A N/A sys path append N/A getcwd MOAL.helpers.display Section N/A DEBUG N/A N/A __name__ __main__ True False Messenger N/A N/A N/A This class acts as a layer of indirection and inverts
    the dependency of the higher-level modules that use it,
    by provide a more abstract messaging mechanism.
    This makes any messenger that subclasses this class "pluggable". message_action N/A N/A self message N/A N/A N/A N/A N/A [Message]: {} format message N/A N/A SMSMessenger N/A Messenger N/A message_action N/A N/A self message N/A N/A N/A N/A N/A [SMS Message]: {} format message N/A N/A EMailMessenger N/A Messenger N/A message_action N/A N/A self message N/A N/A N/A N/A N/A [Email Message]: {} format message N/A N/A LoggingMessenger N/A Messenger N/A message_action N/A N/A self message N/A N/A N/A N/A N/A [Logging Message]: {} format message N/A N/A StillCoupledApplication N/A N/A N/A This is the highest level class, and requires
    some kind of logging mechanism. It's easy to plug new loggers
    into this class because they all reside in front of a common class.
    The problem is, they still require knowledge of which logger to use. N/A logger None __init__ N/A N/A self N/A args kwargs N/A N/A N/A N/A self logger None N/A N/A N/A self logger N/A Messenger N/A log N/A N/A self message N/A N/A N/A N/A N/A N/A self logger message_action message N/A N/A Application N/A N/A N/A This class no longer requires any knowledge of the logger type,
    because it's passed in. So long as the methods match, it will
    just work. This is called dependency injection. N/A logger None __init__ N/A N/A self N/A args kwargs N/A N/A N/A logger kwargs N/A N/A N/A self logger N/A Messenger N/A N/A N/A self logger N/A N/A N/A kwargs get logger N/A log N/A N/A self message N/A N/A N/A msg N/A N/A N/A self logger message_action message N/A msg N/A msg N/A N/A N/A DEBUG N/A N/A N/A Section SOLID - Dependency Inversion Principle N/A N/A app N/A Application N/A N/A N/A N/A app log Foobar [Message]: Foobar N/A app_email N/A Application logger EMailMessenger N/A N/A N/A N/A app_email log Foobar [Email Message]: Foobar N/A app_sms N/A Application logger SMSMessenger N/A N/A N/A N/A app_sms log Foobar [SMS Message]: Foobar N/A app_log N/A Application logger LoggingMessenger N/A N/A N/A N/A app_log log Foobar [Logging Message]: Foobar