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:
Make a
TwistedQuotes
directory on your systemPlace the following files in the
TwistedQuotes
directory:-
""" Twisted Quotes """
(this file marks it as a package, see this section of the Python tutorial for more on packages)
-
from random import choice from zope.interface import implementer from TwistedQuotes import quoteproto @implementer(quoteproto.IQuoter) class StaticQuoter: """ Return a static quote. """ def __init__(self, quote): self.quote = quote def getQuote(self): return self.quote @implementer(quoteproto.IQuoter) class FortuneQuoter: """ Load quotes from a fortune-format file. """ def __init__(self, filenames): self.filenames = filenames def getQuote(self): with open(choice(self.filenames)) as quoteFile: quotes = quoteFile.read().split("\n%\n") return choice(quotes)
-
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
-
Add the
TwistedQuotes
directory’s parent to your Python path. For example, if the TwistedQuotes directory’s path is/mystuff/TwistedQuotes
orc:\mystuff\TwistedQuotes
add/mystuff
to your Python path. On UNIX this would beexport PYTHONPATH=/mystuff:$PYTHONPATH
, on Microsoft Windows change thePYTHONPATH
variable through the Systems Properties dialog by adding;c:\mystuff
at the end.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.