Changeset 117

Show
Ignore:
Timestamp:
11/16/08 08:11:41 (2 months ago)
Author:
fs
Message:

renamed providers to transports which reflects the real purpose better

Location:
trunk
Files:
10 modified
3 moved

Legend:

Unmodified
Added
Removed
  • trunk/setup.py

    r110 r117  
    101101                "immediate = turbomail.managers.immediate" 
    102102            ], 
    103             'turbomail.providers': [ 
    104                 "smtp = turbomail.providers.smtp", 
    105 #               "sendmail = turbomail.providers.sendmail" 
    106 #               "disk = turbomail.providers.disk", 
    107                 "debug = turbomail.providers.debug" 
     103            'turbomail.transports': [ 
     104                "smtp = turbomail.transports.smtp", 
     105#               "sendmail = turbomail.transports.sendmail" 
     106#               "disk = turbomail.transports.disk", 
     107                "debug = turbomail.transports.debug" 
    108108            ], 
    109109            'turbomail.extensions': [ 
  • trunk/tests/test_custom_transport_injection.py

    r108 r117  
    11#!/usr/bin/env python 
    22# -*- coding: UTF-8 -*- 
    3 '''Test the injection of custom TurboMail providers without setuptools.''' 
     3'''Test the injection of custom TurboMail transports without setuptools.''' 
    44 
    55import logging 
    66import unittest 
    77 
    8 from turbomail.api import Manager, Provider 
     8from turbomail.api import Manager, Transport 
    99from turbomail.control import interface 
    1010from turbomail.message import Message 
     
    1313 
    1414 
    15 class DummyProvider(Provider): 
     15class DummyTransport(Transport): 
    1616    def deliver(self, message): 
    1717        return True 
     
    2323 
    2424 
    25 class TestCustomProviderInjection(unittest.TestCase): 
    26     """Test the injection of custom TurboMail providers without setuptools.""" 
     25class TestCustomTransportInjection(unittest.TestCase): 
     26    """Test the injection of custom TurboMail transports without setuptools.""" 
    2727     
    2828    def setUp(self): 
    2929        self.manager = DummyManager() 
    30         self.provider = DummyProvider() 
     30        self.transport = DummyTransport() 
    3131        self.message = Message(author=("Author", "author@example.com"), 
    3232                               to=("Recipient", "recipient@example.com"), 
     
    3939        interface.config = {'mail.on': False} 
    4040     
    41     def test_provide_dict_with_additional_managers_and_providers_which_overrides_setuptools(self): 
     41    def test_provide_dict_with_additional_managers_and_transports_which_overrides_setuptools(self): 
    4242        interface.config.update({'mail.manager': 'immediate', 
    43                                  'mail.provider': 'foo',}) 
    44         interface.start(extra_classes=dict(immediate=self.manager, foo=self.provider)) 
     43                                 'mail.transport': 'foo',}) 
     44        interface.start(extra_classes=dict(immediate=self.manager, foo=self.transport)) 
    4545        self.assertEqual(self.manager, interface.manager) 
    46         self.assertEqual(self.provider, interface.provider) 
     46        self.assertEqual(self.transport, interface.transport) 
    4747        interface.send(self.message) 
    4848     
  • trunk/tests/test_debug_transport.py

    r107 r117  
    11#!/usr/bin/env python 
    22# -*- coding: UTF-8 -*- 
    3 '''Test that the debug provider stores all "sent" mails.''' 
     3'''Test that the debug transport stores all "sent" mails.''' 
    44 
    55import unittest 
     
    88from turbomail.message import Message 
    99from turbomail.managers.immediate import ImmediateManager 
    10 from turbomail.providers.debug import DebugProviderFactory 
     10from turbomail.transports.debug import DebugTransportFactory 
    1111 
    12 class TestDebugProviderStoresAllMail(unittest.TestCase): 
     12class TestDebugTransportStoresAllMail(unittest.TestCase): 
    1313     
    1414    def setUp(self): 
    1515        interface.config = {'mail.on': True,  
    1616                            'mail.manager': 'immediate', 
    17                             'mail.provider': 'debug',} 
     17                            'mail.transport': 'debug',} 
    1818        # conciously using classes and instances for fake_setuptools so that 
    1919        # the test also checks that TurboMail will do the right thing. 
    2020        fake_setuptools =  {'immediate': ImmediateManager, 
    21                             'debug': DebugProviderFactory()} 
     21                            'debug': DebugTransportFactory()} 
    2222        interface.start(extra_classes=fake_setuptools) 
    2323        self.msg = Message('foo@example.com', 'to@example.com', 'Test',  
     
    3232        interface.send(self.msg) 
    3333         
    34         stored_mails = interface.manager.provider.get_sent_mails() 
     34        stored_mails = interface.manager.transport.get_sent_mails() 
    3535        self.assertEqual(1, len(stored_mails)) 
    3636        self.assertEqual(msg_string, str(stored_mails[0])) 
     
    4040        self.msg.send() 
    4141         
    42         stored_mails = interface.manager.provider.get_sent_mails() 
     42        stored_mails = interface.manager.transport.get_sent_mails() 
    4343        self.assertEqual(1, len(stored_mails)) 
    4444        self.assertEqual(msg_string, str(stored_mails[0])) 
  • trunk/tests/test_tm2_compatibility.py

    r113 r117  
    99from turbomail import Message, MailNotEnabledException 
    1010from turbomail.managers.immediate import ImmediateManager 
    11 from turbomail.providers.debug import DebugProviderFactory 
     11from turbomail.transports.debug import DebugTransportFactory 
    1212 
    1313class TestTurboMail2xCompatibility(unittest.TestCase): 
     
    5858        turbomail.control.interface.config = {'mail.on': True} 
    5959        fake_setuptools =  {'immediate': ImmediateManager, 
    60                             'debug': DebugProviderFactory} 
     60                            'debug': DebugTransportFactory} 
    6161        turbomail.control.interface.start(extra_classes=fake_setuptools) 
    6262         
  • trunk/turbomail/api.py

    r116 r117  
    1010from turbomail.control import interface 
    1111 
    12 __all__ = ['Extension', 'ProviderFactory', 'Provider', 'Manager'] 
     12__all__ = ['Extension', 'TransportFactory', 'Transport', 'Manager'] 
    1313 
    1414 
     
    3535 
    3636 
    37 class ProviderFactory(Extension): 
    38     """docstring for ProviderFactory""" 
    39     provider = None 
     37class TransportFactory(Extension): 
     38    """docstring for TransportFactory""" 
     39    transport = None 
    4040     
    4141    def __init__(self): 
    42         super(ProviderFactory, self).__init__() 
     42        super(TransportFactory, self).__init__() 
    4343     
    4444    def new(self): 
    4545        if not self.ready: return None 
    46         return self.provider() 
     46        return self.transport() 
    4747 
    4848 
    49 class Provider(object): 
    50     """A Provider can deliver messages towards their recipients with a specific 
     49class Transport(object): 
     50    """A Transport can deliver messages towards their recipients with a specific 
    5151    method, e.g. SMTP. They don't care about delivery strategies like queing or 
    5252    batch submission.""" 
    5353     
    5454    def __init__(self): 
    55         super(Provider, self).__init__() 
     55        super(Transport, self).__init__() 
    5656     
    5757    def deliver(self, message): 
    58         raise NotImplementedError, "Provider plugin must override this method without inheritance." 
     58        raise NotImplementedError, "Transport plugin must override this method without inheritance." 
    5959     
    6060     
     
    8585     
    8686    def stop(self): 
    87         """Called by the manager before the provider instance is destroyed. The 
    88         provider can do some final cleanups (like releasing external resources) 
     87        """Called by the manager before the transport instance is destroyed. The 
     88        transport can do some final cleanups (like releasing external resources) 
    8989        here.""" 
    9090        pass 
  • trunk/turbomail/control.py

    r114 r117  
    4646        self.config = dict() 
    4747        self.manager = None 
    48         self.provider = None 
     48        self.transport = None 
    4949     
    5050    def __load_single_entry(self, group, name): 
     
    7979                getattr(self, t).start() 
    8080         
    81         # Load the requested manager and provider. 
     81        # Load the requested manager and transport. 
    8282        load('manager', 'immediate', extra_classes) 
    83         load('provider', 'debug', extra_classes) 
     83        load('transport', 'debug', extra_classes) 
    8484         
    8585        # Load and initialize the various extensions. 
     
    116116                if hasattr(ext, "stop"): ext.stop() 
    117117         
    118         # Unload the provider and manager. 
    119         if self.provider and hasattr(self.provider, "stop"): self.provider.stop() 
     118        # Unload the transport and manager. 
     119        if self.transport and hasattr(self.transport, "stop"): self.transport.stop() 
    120120        if self.manager and hasattr(self.manager, "stop"): self.manager.stop() 
    121121         
    122         self.provider = None 
     122        self.transport = None 
    123123        self.manager = None 
    124124         
  • trunk/turbomail/exceptions.py

    r113 r117  
    55__version__ = "$Revision$" 
    66__all__ = ['MailException', 'MailNotEnabledException', 'MailConfigurationException',  
    7            'ProviderException', 'ProviderExhaustedException', 'ManagerException'] 
     7           'TransportException', 'TransportExhaustedException', 'ManagerException'] 
    88 
    99 
     
    2929 
    3030 
    31 class ProviderException(MailException): 
    32     """The base for all TurboMail Provider exceptions.""" 
     31class TransportException(MailException): 
     32    """The base for all TurboMail Transport exceptions.""" 
    3333     
    3434    pass 
    3535 
    3636 
    37 class ProviderExhaustedException(MailException): 
     37class TransportExhaustedException(MailException): 
    3838    """Attempted to use TurboMail before being enabled.""" 
    3939     
    4040    def __str__(self): 
    41         return "This Provider instance is no longer capable of delivering mail." 
     41        return "This Transport instance is no longer capable of delivering mail." 
    4242 
    4343 
  • trunk/turbomail/managers/demand.py

    r85 r117  
    1010from turbomail.exceptions import * 
    1111from turbomail.api import Manager 
    12 from turbomail.exceptions import ProviderExhaustedException 
     12from turbomail.exceptions import TransportExhaustedException 
    1313from turbomail.control import interface 
    1414 
     
    8585     
    8686    def worker(self): 
    87         log.debug("Requesting new provider instance from.") 
    88         provider = interface.provider.new() 
    89         if not provider: raise ManagerException, "Unable to allocate new provider." 
     87        log.debug("Requesting new transport instance from.") 
     88        transport = interface.transport.new() 
     89        if not transport: raise ManagerException, "Unable to allocate new transport." 
    9090         
    9191        while True: 
    9292            try: 
    9393                message = self.queue.get(True, self.timeout) 
    94                 provider.deliver(message) 
     94                transport.deliver(message) 
    9595             
    9696            except Empty: 
     
    9898                break 
    9999             
    100             except ProviderExhaustedException: 
    101                 log.debug("Worker death from provider exhaustion - spawning child.") 
     100            except TransportExhaustedException: 
     101                log.debug("Worker death from transport exhaustion - spawning child.") 
    102102                self.deliver(message) 
    103103                self.spawn() 
  • trunk/turbomail/managers/immediate.py

    r111 r117  
    1010from turbomail.api import Manager 
    1111from turbomail.control import interface 
    12 from turbomail.exceptions import ProviderExhaustedException 
     12from turbomail.exceptions import TransportExhaustedException 
    1313 
    1414__all__ = ['load'] 
     
    2929        super(ImmediateManager, self).__init__() 
    3030         
    31         self.provider = None 
     31        self.transport = None 
    3232         
    3333        log.info("Immediate manager ready.") 
     
    4141            return False 
    4242         
    43         if not self.provider: 
    44             log.debug("Requesting new provider instance.") 
    45             self.provider = interface.provider.new() 
    46             if not self.provider: 
    47                 raise ManagerException, "Unable to allocate new provider." 
     43        if not self.transport: 
     44            log.debug("Requesting new transport instance.") 
     45            self.transport = interface.transport.new() 
     46            if not self.transport: 
     47                raise ManagerException, "Unable to allocate new transport." 
    4848         
    4949        try: 
    50             self.provider.deliver(message) 
     50            self.transport.deliver(message) 
    5151         
    52         except ProviderExhaustedException: 
    53             log.debug("Provider exhausted.") 
    54             self.provider.stop() 
    55             self.provider = None 
     52        except TransportExhaustedException: 
     53            log.debug("Transport exhausted.") 
     54            self.transport.stop() 
     55            self.transport = None 
    5656            self.deliver(message) 
    5757         
  • trunk/turbomail/message.py

    r109 r117  
    9696         
    9797        # TODO: This parameter should be present in a base message class 
    98         # smtp provider assumes that all messages have it! 
     98        # smtp transport assumes that all messages have it! 
    9999        self.tries = kwpop("tries", "mail.tries", 3) 
    100100         
     
    234234                headers.append(('X-TurboMail-Message-GUID', self.id)) 
    235235             
    236             if interface.provider: 
     236            if interface.transport: 
    237237                headers.extend([ 
    238                         ('X-TurboMail-Provider', "%s <%s>" % (interface.provider.name, interface.provider.url)), 
    239                         ('X-TurboMail-Provider-Version', interface.provider.version), 
     238                        ('X-TurboMail-Transport', "%s <%s>" % (interface.transport.name, interface.transport.url)), 
     239                        ('X-TurboMail-Transport-Version', interface.transport.version), 
    240240                    ]) 
    241241             
  • trunk/turbomail/transports/debug.py

    r104 r117  
    66import logging 
    77 
    8 from turbomail.api import ProviderFactory, Provider 
     8from turbomail.api import TransportFactory, Transport 
    99 
    1010 
    11 log = logging.getLogger("turbomail.provider") 
     11log = logging.getLogger("turbomail.transport") 
    1212deliverylog = logging.getLogger("turbomail.delivery") 
    1313 
     
    1616 
    1717def load(): 
    18     return DebugProviderFactory() 
     18    return DebugTransportFactory() 
    1919 
    2020 
    21 class DebugProvider(Provider): 
     21class DebugTransport(Transport): 
    2222    def __init__(self): 
    23         super(DebugProvider, self).__init__() 
    24         log.debug("Debug provider setup.") 
     23        super(DebugTransport, self).__init__() 
     24        log.debug("Debug transport setup.") 
    2525        self._sent_mails = [] 
    2626     
    2727    def __del__(self): 
    2828        if log: 
    29             log.debug("Debug provider teardown.") 
     29            log.debug("Debug transport teardown.") 
    3030     
    3131    def deliver(self, message): 
     
    4444 
    4545 
    46 class DebugProviderFactory(ProviderFactory): 
     46class DebugTransportFactory(TransportFactory): 
    4747    name = "Debug" 
    4848    version = "1.0" 
    49     url = "http://www.python-turbomail.org/wiki/DebugProvider" 
    50     provider = DebugProvider 
     49    url = "http://www.python-turbomail.org/wiki/DebugTransport" 
     50    transport = DebugTransport 
    5151 
  • trunk/turbomail/transports/smtp.py

    r115 r117  
    77import logging 
    88 
    9 log = logging.getLogger("turbomail.provider") 
     9log = logging.getLogger("turbomail.transport") 
    1010deliverylog = logging.getLogger("turbomail.delivery") 
    1111 
    12 from turbomail.api import ProviderFactory, Provider 
    13 from turbomail.exceptions import MailConfigurationException, ProviderExhaustedException 
     12from turbomail.api import TransportFactory, Transport 
     13from turbomail.exceptions import MailConfigurationException, TransportExhaustedException 
    1414from turbomail.control import interface 
    1515 
     
    2020 
    2121def load(): 
    22     return SMTPProviderFactory() 
     22    return SMTPTransportFactory() 
    2323 
    2424 
    25 class SMTPProvider(Provider): 
     25class SMTPTransport(Transport): 
    2626    def __init__(self): 
    27         super(SMTPProvider, self).__init__() 
    28         log.debug("SMTPProvider created.") 
     27        super(SMTPTransport, self).__init__() 
     28        log.debug("SMTPTransport created.") 
    2929         
    3030        self.server = self.config_get('mail.smtp.server', 'localhost') 
     
    7676         
    7777        if self.count == 0: 
    78             raise ProviderExhaustedException 
     78            raise TransportExhaustedException 
    7979         
    8080        try: 
     
    9494         
    9595        except SMTPServerDisconnected, e: 
    96             raise ProviderExhaustedException 
     96            raise TransportExhaustedException 
    9797         
    9898        except Exception, e: 
     
    112112 
    113113 
    114 class SMTPProviderFactory(ProviderFactory): 
     114class SMTPTransportFactory(TransportFactory): 
    115115    name = "SMTP" 
    116116    version = "1.0" 
    117     url = "http://www.python-turbomail.org/wiki/SMTPProvider" 
    118     provider = SMTPProvider 
     117    url = "http://www.python-turbomail.org/wiki/SMTPTransport" 
     118    transport = SMTPTransport