Source code for threaded_mvc.threaded_mvc
import abc
import threading
__version__ = "0.0.3"
[docs]class Model(threading.Thread, abc.ABC):
"""
Abstract base class for model objects.
Though Model inherits from threading.Thread, you can not pass in a
callback object.
"""
def __init__(self, to_controller_queue, to_model_queue):
"""
Model constructor
Args:
controller_queue (Queue): Queue to pass messages to Controller
model_queue (Queue): Queue to pass messages to Model
"""
# Call Thread class's init() function
threading.Thread.__init__(self)
# These are our message queues to and from the from controller
self.to_controller_queue = to_controller_queue
self.to_model_queue = to_model_queue
[docs] @abc.abstractmethod
def run(self):
"""
Model's thread entry point.
You must override this method in a subclass.
"""
pass
[docs]class View(abc.ABC):
"""
Abstract base class for view objects.
"""
@abc.abstractmethod
def __init__(self):
"""
View contructor
This is an abstract method that must be overridden
"""
pass
[docs]class Controller(abc.ABC):
"""
Abstract base class for controller objects.
"""
@abc.abstractmethod
def __init__(self, to_controller_queue, to_model_queue):
"""Controller constructor
This is an abstract method that must be overridden
Args:
to_controller_queue (Queue): Queue to send messages to the
Controller object
to_model_queue (Queue): Queue to send messages to the
Model object
"""
# These are our message queues to and from the from controller
self.to_controller_queue = to_controller_queue
self.to_model_queue = to_model_queue