HOME FAQ DOCS DOWNLOAD

### Navigation

- index
- next |
- previous |
- Twisted 15.5.0 documentation »
- Twisted Core »
- Developer Guides »

Go to the latest version of this document.

# Setting up the TwistedQuotes application

## Goal

This document describes how to set up the TwistedQuotes application used in a number of other documents, such as designing Twisted applications .

## Setting up the TwistedQuotes project directory

In order to run the Twisted Quotes example, you will need to do the following:

1. Make a `TwistedQuotes` directory on your system

2. Place the following files in the `TwistedQuotes` directory:

   - `__init__.py`

         """
         Twisted Quotes
         """

     (this file marks it as a package, see this section of the Python tutorial for more on packages)

   - `quoters.py`

         from random import choice

         from zope.interface import implements

         from TwistedQuotes import quoteproto

         class StaticQuoter:
             """
             Return a static quote.
             """

             implements(quoteproto.IQuoter)

             def __init__(self, quote):
                 self.quote = quote

             def getQuote(self):
                 return self.quote

         class FortuneQuoter:
             """
             Load quotes from a fortune-format file.
             """
             implements(quoteproto.IQuoter)

             def __init__(self, filenames):
                 self.filenames = filenames

             def getQuote(self):
                 quoteFile = file(choice(self.filenames))
                 quotes = quoteFile.read().split('\n%\n')
                 quoteFile.close()
                 return choice(quotes)

   - `quoteproto.py`

         from zope.interface import Interface

         from twisted.internet.protocol import Factory, Protocol

         class IQuoter(Interface):
             """
             An object that returns quotes.
             """
             def getQuote():
                 """
                 Return a quote.
                 """

         class QOTD(Protocol):
             def connectionMade(self):
                 self.transport.write(self.factory.quoter.getQuote()+'\r\n')
                 self.transport.loseConnection()

         class QOTDFactory(Factory):
             """
             A factory for the Quote of the Day protocol.

             @type quoter: L{IQuoter} provider
             @ivar quoter: An object which provides L{IQuoter} which will be used by
                 the L{QOTD} protocol to get quotes to emit.
             """
             protocol = QOTD

             def __init__(self, quoter):
                 self.quoter = quoter

3. Add the `TwistedQuotes` directory’s parent to your Python path. For example, if the TwistedQuotes directory’s path is `/mystuff/TwistedQuotes` or `c:\mystuff\TwistedQuotes` add `/mystuff` to your Python path. On UNIX this would be `export PYTHONPATH=/mystuff:$PYTHONPATH` , on Microsoft Windows change the `PYTHONPATH` variable through the Systems Properties dialog by adding `;c:\mystuff` at the end.

4. Test your package by trying to import it in the Python interpreter:

       Python 2.1.3 (#1, Apr 20 2002, 22:45:31)
       [GCC 2.95.4 20011002 (Debian prerelease)] on linux2
       Type "copyright", "credits" or "license" for more information.
       >>> import TwistedQuotes
       >>> # No traceback means you're fine.