blob: d282589b488e8c7c9efd2d006c980f7254299647 [file] [log] [blame]
Guido van Rossumea31ea21997-05-26 05:43:29 +00001"""FAQ Wizard customization module.
Guido van Rossum1677e5b1997-05-26 00:07:18 +00002
Guido van Rossumea31ea21997-05-26 05:43:29 +00003Edit this file to customize the FAQ Wizard. For normal purposes, you
4should only have to change the FAQ section titles and the small group
5of parameters below it.
Guido van Rossum1677e5b1997-05-26 00:07:18 +00006
Guido van Rossumea31ea21997-05-26 05:43:29 +00007"""
Guido van Rossum1677e5b1997-05-26 00:07:18 +00008
9# Titles of FAQ sections
Guido van Rossumea31ea21997-05-26 05:43:29 +000010
Guido van Rossum1677e5b1997-05-26 00:07:18 +000011SECTION_TITLES = {
Guido van Rossum23052311997-05-26 06:12:50 +000012 # SectionNumber : SectionTitle; need at least one entry
Guido van Rossum1677e5b1997-05-26 00:07:18 +000013 1: "General information and availability",
Guido van Rossum1677e5b1997-05-26 00:07:18 +000014}
15
Guido van Rossumea31ea21997-05-26 05:43:29 +000016# Parameters you definitely want to change
17
Guido van Rossum23052311997-05-26 06:12:50 +000018SHORTNAME = "Generic" # FAQ name with "FAQ" omitted
19PASSWORD = "" # Password for editing
Guido van Rossumea31ea21997-05-26 05:43:29 +000020OWNERNAME = "GvR" # Name for feedback
21OWNEREMAIL = "guido@python.org" # Email for feedback
22HOMEURL = "http://www.python.org" # Related home page
23HOMENAME = "Python home" # Name of related home page
Guido van Rossumea31ea21997-05-26 05:43:29 +000024RCSBINDIR = "/depot/gnu/plat/bin/" # Directory containing RCS commands
25 # (must end in a slash)
26
27# Parameters you can normally leave alone
28
Guido van Rossumea31ea21997-05-26 05:43:29 +000029MAXHITS = 10 # Max #hits to be shown directly
30COOKIE_LIFETIME = 28*24*3600 # Cookie expiration in seconds
31 # (28*24*3600 = 28 days = 4 weeks)
32
Guido van Rossumfd67f731997-05-26 19:46:18 +000033# Markers appended to title to indicate recently change
34# (may contain HTML, e.g. <IMG>); and corresponding
35
36MARK_VERY_RECENT = " **" # Changed very recently
37MARK_RECENT = " *" # Changed recently
38DT_VERY_RECENT = 24*3600 # 24 hours
39DT_RECENT = 7*24*3600 # 7 days
40
41EXPLAIN_MARKS = """
Guido van Rossumd812c071997-05-26 20:15:44 +000042<P>(Entries marked with ** were changed within the last 24 hours;
Guido van Rossumfd67f731997-05-26 19:46:18 +000043entries marked with * were changed within the last 7 days.)
44<P>
45"""
46
47# Version -- don't change unless you edit faqwiz.py
48
Guido van Rossum2aa78ef1997-11-21 16:37:54 +000049WIZVERSION = "0.8.2" # FAQ Wizard version
Guido van Rossumfd67f731997-05-26 19:46:18 +000050
Guido van Rossum23052311997-05-26 06:12:50 +000051# This parameter is normally overwritten with a dynamic value
52
53FAQCGI = 'faqw.py' # Relative URL of the FAQ cgi script
54import os, sys
55FAQCGI = os.path.basename(sys.argv[0]) or FAQCGI
56del os, sys
57
Guido van Rossumfd67f731997-05-26 19:46:18 +000058# Regular expression to recognize FAQ entry files: group(1) should be
59# the section number, group(2) should be the question number. Both
60# should be fixed width so simple-minded sorting yields the right
61# order.
62
63OKFILENAME = "^faq\([0-9][0-9]\)\.\([0-9][0-9][0-9]\)\.htp$"
64
65# Format to construct a FAQ entry file name
66
67NEWFILENAME = "faq%02d.%03d.htp"
68
Guido van Rossum23052311997-05-26 06:12:50 +000069# Load local customizations on top of the previous parameters
70
71try:
72 from faqcust import *
Guido van Rossum178f58a1997-06-02 21:39:15 +000073except ImportError:
Guido van Rossum23052311997-05-26 06:12:50 +000074 pass
75
76# Calculated parameter names
77
78COOKIE_NAME = SHORTNAME + "-FAQ-Wizard" # Name used for Netscape cookie
79FAQNAME = SHORTNAME + " FAQ" # Name of the FAQ
80
Guido van Rossumea31ea21997-05-26 05:43:29 +000081# ----------------------------------------------------------------------
82
83# Anything below this point normally needn't be changed; you would
84# change this if you were to create e.g. a French translation or if
85# you just aren't happy with the text generated by the FAQ Wizard.
86
87# Most strings here are subject to substitution (string%dictionary)
88
89# RCS commands
90
91SH_RLOG = RCSBINDIR + "rlog %(file)s </dev/null 2>&1"
92SH_RLOG_H = RCSBINDIR + "rlog -h %(file)s </dev/null 2>&1"
93SH_RDIFF = RCSBINDIR + "rcsdiff -r%(prev)s -r%(rev)s %(file)s </dev/null 2>&1"
Guido van Rossum8bc49c81997-05-26 19:10:37 +000094SH_REVISION = RCSBINDIR + "co -p%(rev)s %(file)s </dev/null 2>&1"
Guido van Rossumea31ea21997-05-26 05:43:29 +000095SH_LOCK = RCSBINDIR + "rcs -l %(file)s </dev/null 2>&1"
96SH_CHECKIN = RCSBINDIR + "ci -u %(file)s <%(tfn)s 2>&1"
97
98# Titles for various output pages (not subject to substitution)
99
100T_HOME = FAQNAME + " Wizard " + WIZVERSION
101T_ERROR = "Sorry, an error occurred"
102T_ROULETTE = FAQNAME + " Roulette"
103T_ALL = "The Whole " + FAQNAME
104T_INDEX = FAQNAME + " Index"
105T_SEARCH = FAQNAME + " Search Results"
106T_RECENT = "What's New in the " + FAQNAME
107T_SHOW = FAQNAME + " Entry"
108T_LOG = "RCS log for %s entry" % FAQNAME
Guido van Rossum8bc49c81997-05-26 19:10:37 +0000109T_REVISION = "RCS revision for %s entry" % FAQNAME
Guido van Rossumea31ea21997-05-26 05:43:29 +0000110T_DIFF = "RCS diff for %s entry" % FAQNAME
111T_ADD = "Add an entry to the " + FAQNAME
112T_DELETE = "Deleting an entry from the " + FAQNAME
113T_EDIT = FAQNAME + " Edit Wizard"
114T_REVIEW = T_EDIT + " - Review Changes"
115T_COMMITTED = T_EDIT + " - Changes Committed"
116T_COMMITFAILED = T_EDIT + " - Commit Failed"
117T_CANTCOMMIT = T_EDIT + " - Commit Rejected"
118T_HELP = T_EDIT + " - Help"
119
Guido van Rossum1677e5b1997-05-26 00:07:18 +0000120# Generic prologue and epilogue
121
122PROLOGUE = '''
123<HTML>
124<HEAD>
125<TITLE>%(title)s</TITLE>
126</HEAD>
127
128<BODY BACKGROUND="http://www.python.org/pics/RedShort.gif"
129 BGCOLOR="#FFFFFF"
130 TEXT="#000000"
131 LINK="#AA0000"
132 VLINK="#906A6A">
133<H1>%(title)s</H1>
134'''
135
136EPILOGUE = '''
137<HR>
138<A HREF="%(HOMEURL)s">%(HOMENAME)s</A> /
Guido van Rossumea31ea21997-05-26 05:43:29 +0000139<A HREF="%(FAQCGI)s?req=home">%(FAQNAME)s Wizard %(WIZVERSION)s</A> /
Guido van Rossum1677e5b1997-05-26 00:07:18 +0000140Feedback to <A HREF="mailto:%(OWNEREMAIL)s">%(OWNERNAME)s</A>
141
142</BODY>
143</HTML>
144'''
145
146# Home page
147
148HOME = """
Guido van Rossumea31ea21997-05-26 05:43:29 +0000149<H2>Search the %(FAQNAME)s:</H2>
150
151<BLOCKQUOTE>
152
Guido van Rossum1677e5b1997-05-26 00:07:18 +0000153<FORM ACTION="%(FAQCGI)s">
154 <INPUT TYPE=text NAME=query>
155 <INPUT TYPE=submit VALUE="Search"><BR>
Guido van Rossumea31ea21997-05-26 05:43:29 +0000156 <INPUT TYPE=radio NAME=querytype VALUE=simple CHECKED>
157 Simple string
158 /
159 <INPUT TYPE=radio NAME=querytype VALUE=regex>
160 Regular expression
Guido van Rossum8bc49c81997-05-26 19:10:37 +0000161 /<BR>
Guido van Rossumd9936951997-05-26 16:35:27 +0000162 <INPUT TYPE=radio NAME=querytype VALUE=anykeywords>
163 Keywords (any)
164 /
165 <INPUT TYPE=radio NAME=querytype VALUE=allkeywords>
166 Keywords (all)
Guido van Rossumea31ea21997-05-26 05:43:29 +0000167 <BR>
168 <INPUT TYPE=radio NAME=casefold VALUE=yes CHECKED>
169 Fold case
170 /
171 <INPUT TYPE=radio NAME=casefold VALUE=no>
172 Case sensitive
173 <BR>
Guido van Rossum1677e5b1997-05-26 00:07:18 +0000174 <INPUT TYPE=hidden NAME=req VALUE=search>
175</FORM>
176
Guido van Rossumea31ea21997-05-26 05:43:29 +0000177</BLOCKQUOTE>
178
179<HR>
180
181<H2>Other forms of %(FAQNAME)s access:</H2>
182
Guido van Rossum1677e5b1997-05-26 00:07:18 +0000183<UL>
184<LI><A HREF="%(FAQCGI)s?req=index">FAQ index</A>
185<LI><A HREF="%(FAQCGI)s?req=all">The whole FAQ</A>
Guido van Rossumea31ea21997-05-26 05:43:29 +0000186<LI><A HREF="%(FAQCGI)s?req=recent">What's new in the FAQ?</A>
Guido van Rossum1677e5b1997-05-26 00:07:18 +0000187<LI><A HREF="%(FAQCGI)s?req=roulette">FAQ roulette</A>
Guido van Rossumea31ea21997-05-26 05:43:29 +0000188<LI><A HREF="%(FAQCGI)s?req=add">Add a FAQ entry</A>
189<LI><A HREF="%(FAQCGI)s?req=delete">Delete a FAQ entry</A>
Guido van Rossum1677e5b1997-05-26 00:07:18 +0000190</UL>
191"""
192
193# Index formatting
194
195INDEX_SECTION = """
196<P>
197<HR>
Guido van Rossumea31ea21997-05-26 05:43:29 +0000198<H2>%(sec)s. %(title)s</H2>
Guido van Rossum1677e5b1997-05-26 00:07:18 +0000199<UL>
200"""
201
Guido van Rossumea31ea21997-05-26 05:43:29 +0000202INDEX_ADDSECTION = """
203<P>
204<LI><A HREF="%(FAQCGI)s?req=new&amp;section=%(sec)s">Add new entry</A>
205(at this point)
206"""
207
Guido van Rossum1677e5b1997-05-26 00:07:18 +0000208INDEX_ENDSECTION = """
209</UL>
210"""
211
212INDEX_ENTRY = """\
Guido van Rossum030144d1997-05-26 16:02:56 +0000213<LI><A HREF="%(FAQCGI)s?req=show&amp;file=%(file)s">%(title)s</A>
Guido van Rossum1677e5b1997-05-26 00:07:18 +0000214"""
215
Guido van Rossum8bc49c81997-05-26 19:10:37 +0000216LOCAL_ENTRY = """\
217<LI><A HREF="#%(sec)s.%(num)s">%(title)s</A>
218"""
219
Guido van Rossum1677e5b1997-05-26 00:07:18 +0000220# Entry formatting
221
Guido van Rossumfd67f731997-05-26 19:46:18 +0000222ENTRY_HEADER1 = """
Guido van Rossumea31ea21997-05-26 05:43:29 +0000223<HR>
Guido van Rossumfd67f731997-05-26 19:46:18 +0000224<H2><A NAME="%(sec)s.%(num)s">%(title)s</A>\
225"""
226
227ENTRY_HEADER2 = """\
228</H2>
Guido van Rossumea31ea21997-05-26 05:43:29 +0000229"""
230
Guido van Rossum1677e5b1997-05-26 00:07:18 +0000231ENTRY_FOOTER = """
Guido van Rossumea31ea21997-05-26 05:43:29 +0000232<A HREF="%(FAQCGI)s?req=edit&amp;file=%(file)s">Edit this entry</A> /
233<A HREF="%(FAQCGI)s?req=log&amp;file=%(file)s">Log info</A>
Guido van Rossum1677e5b1997-05-26 00:07:18 +0000234"""
235
236ENTRY_LOGINFO = """
237/ Last changed on %(last_changed_date)s by
238<A HREF="mailto:%(last_changed_email)s">%(last_changed_author)s</A>
239"""
240
241# Search
242
243NO_HITS = """
244No hits.
245"""
246
247ONE_HIT = """
248Your search matched the following entry:
249"""
250
251FEW_HITS = """
Guido van Rossumea31ea21997-05-26 05:43:29 +0000252Your search matched the following %(count)s entries:
Guido van Rossum1677e5b1997-05-26 00:07:18 +0000253"""
254
255MANY_HITS = """
Guido van Rossumea31ea21997-05-26 05:43:29 +0000256Your search matched more than %(MAXHITS)s entries.
257The %(count)s matching entries are presented here ordered by section:
Guido van Rossum1677e5b1997-05-26 00:07:18 +0000258"""
259
260# RCS log and diff
261
262LOG = """
263Click on a revision line to see the diff between that revision and the
264previous one.
265"""
266
Guido van Rossum8bc49c81997-05-26 19:10:37 +0000267REVISIONLINK = """\
268<A HREF="%(FAQCGI)s?req=revision&amp;file=%(file)s&amp;rev=%(rev)s"
269>%(line)s</A>\
270"""
Guido van Rossum1677e5b1997-05-26 00:07:18 +0000271DIFFLINK = """\
Guido van Rossum8bc49c81997-05-26 19:10:37 +0000272 (<A HREF="%(FAQCGI)s?req=diff&amp;file=%(file)s&amp;\
273prev=%(prev)s&amp;rev=%(rev)s"
274>diff -r%(prev)s -r%(rev)s</A>)\
Guido van Rossum1677e5b1997-05-26 00:07:18 +0000275"""
276
277# Recently changed entries
278
279NO_RECENT = """
280<HR>
281No %(FAQNAME)s entries were changed in the last %(period)s.
282"""
283
Guido van Rossumea31ea21997-05-26 05:43:29 +0000284VIEW_MENU = """
Guido van Rossum1677e5b1997-05-26 00:07:18 +0000285<HR>
Guido van Rossumea31ea21997-05-26 05:43:29 +0000286View entries changed in the last...
Guido van Rossum1677e5b1997-05-26 00:07:18 +0000287<UL>
Guido van Rossumea31ea21997-05-26 05:43:29 +0000288<LI><A HREF="%(FAQCGI)s?req=recent&amp;days=1">24 hours</A>
289<LI><A HREF="%(FAQCGI)s?req=recent&amp;days=2">2 days</A>
290<LI><A HREF="%(FAQCGI)s?req=recent&amp;days=3">3 days</A>
291<LI><A HREF="%(FAQCGI)s?req=recent&amp;days=7">week</A>
292<LI><A HREF="%(FAQCGI)s?req=recent&amp;days=28">4 weeks</A>
293<LI><A HREF="%(FAQCGI)s?req=recent&amp;days=365250">millennium</A>
Guido van Rossum1677e5b1997-05-26 00:07:18 +0000294</UL>
Guido van Rossumea31ea21997-05-26 05:43:29 +0000295"""
296
297ONE_RECENT = VIEW_MENU + """
Guido van Rossum1677e5b1997-05-26 00:07:18 +0000298The following %(FAQNAME)s entry was changed in the last %(period)s:
299"""
300
Guido van Rossumea31ea21997-05-26 05:43:29 +0000301SOME_RECENT = VIEW_MENU + """
302The following %(count)s %(FAQNAME)s entries were changed
Guido van Rossum1677e5b1997-05-26 00:07:18 +0000303in the last %(period)s, most recently changed shown first:
304"""
305
Guido van Rossumea31ea21997-05-26 05:43:29 +0000306TAIL_RECENT = VIEW_MENU
Guido van Rossum1677e5b1997-05-26 00:07:18 +0000307
308# Last changed banner on "all" (strftime format)
309LAST_CHANGED = "Last changed on %c %Z"
310
Guido van Rossumea31ea21997-05-26 05:43:29 +0000311# "Compat" command prologue (this has no <BODY> tag)
Guido van Rossum1677e5b1997-05-26 00:07:18 +0000312COMPAT = """
313<H1>The whole %(FAQNAME)s</H1>
Guido van Rossum2aa78ef1997-11-21 16:37:54 +0000314See also the <A HREF="%(FAQCGI)s?req=home">%(FAQNAME)s Wizard</A>.
315<P>
Guido van Rossum1677e5b1997-05-26 00:07:18 +0000316"""
317
318# Editing
319
320EDITHEAD = """
321<A HREF="%(FAQCGI)s?req=help">Click for Help</A>
322"""
323
324REVIEWHEAD = EDITHEAD
325
326
327EDITFORM1 = """
328<FORM ACTION="%(FAQCGI)s" METHOD=POST>
329<INPUT TYPE=hidden NAME=req VALUE=review>
330<INPUT TYPE=hidden NAME=file VALUE=%(file)s>
331<INPUT TYPE=hidden NAME=editversion VALUE=%(editversion)s>
332<HR>
333"""
334
335EDITFORM2 = """
336Title: <INPUT TYPE=text SIZE=70 NAME=title VALUE="%(title)s"><BR>
337<TEXTAREA COLS=72 ROWS=20 NAME=body>%(body)s
338</TEXTAREA><BR>
339Log message (reason for the change):<BR>
340<TEXTAREA COLS=72 ROWS=5 NAME=log>%(log)s
341</TEXTAREA><BR>
342Please provide the following information for logging purposes:
343<TABLE FRAME=none COLS=2>
344 <TR>
345 <TD>Name:
346 <TD><INPUT TYPE=text SIZE=40 NAME=author VALUE="%(author)s">
347 <TR>
348 <TD>Email:
349 <TD><INPUT TYPE=text SIZE=40 NAME=email VALUE="%(email)s">
350 <TR>
351 <TD>Password:
352 <TD><INPUT TYPE=password SIZE=20 NAME=password VALUE="%(password)s">
353</TABLE>
354
355<INPUT TYPE=submit NAME=review VALUE="Preview Edit">
356Click this button to preview your changes.
357"""
358
359EDITFORM3 = """
360</FORM>
361"""
362
363COMMIT = """
364<INPUT TYPE=submit NAME=commit VALUE="Commit">
365Click this button to commit your changes.
366<HR>
367"""
368
369NOCOMMIT = """
Guido van Rossumea31ea21997-05-26 05:43:29 +0000370To commit your changes, please enter a log message, your name, email
371addres, and the correct password in the form below.
Guido van Rossum1677e5b1997-05-26 00:07:18 +0000372<HR>
373"""
374
375CANTCOMMIT_HEAD = """
376Some required information is missing:
377<UL>
378"""
379NEED_PASSWD = "<LI>You must provide the correct passwd.\n"
380NEED_AUTHOR = "<LI>You must enter your name.\n"
381NEED_EMAIL = "<LI>You must enter your email address.\n"
382NEED_LOG = "<LI>You must enter a log message.\n"
383CANTCOMMIT_TAIL = """
384</UL>
385Please use your browser's Back command to correct the form and commit
386again.
387"""
388
Guido van Rossumea31ea21997-05-26 05:43:29 +0000389NEWCONFLICT = """
390<P>
391You are creating a new entry, but the entry number specified is not
392correct.
393<P>
394The two most common causes of this problem are:
395<UL>
396<LI>After creating the entry yourself, you went back in your browser,
397 edited the entry some more, and clicked Commit again.
398<LI>Someone else started creating a new entry in the same section and
399 committed before you did.
400</UL>
401(It is also possible that the last entry in the section was physically
402deleted, but this should not happen except through manual intervention
403by the FAQ maintainer.)
404<P>
405<A HREF="%(FAQCGI)s?req=new&amp;section=%(sec)s">Click here to try
406again.</A>
407<P>
408"""
409
Guido van Rossum1677e5b1997-05-26 00:07:18 +0000410VERSIONCONFLICT = """
411<P>
412You edited version %(editversion)s but the current version is %(version)s.
413<P>
414The two most common causes of this problem are:
415<UL>
416<LI>After committing a change, you went back in your browser,
417 edited the entry some more, and clicked Commit again.
418<LI>Someone else started editing the same entry and committed
419 before you did.
420</UL>
421<P>
Guido van Rossumea31ea21997-05-26 05:43:29 +0000422<A HREF="%(FAQCGI)s?req=show&amp;file=%(file)s">Click here to reload
423the entry and try again.</A>
Guido van Rossum1677e5b1997-05-26 00:07:18 +0000424<P>
425"""
426
427CANTWRITE = """
428Can't write file %(file)s (%(why)s).
429"""
430
431FILEHEADER = """\
432Title: %(title)s
433Last-Changed-Date: %(date)s
434Last-Changed-Author: %(author)s
435Last-Changed-Email: %(email)s
436Last-Changed-Remote-Host: %(REMOTE_HOST)s
437Last-Changed-Remote-Address: %(REMOTE_ADDR)s
438"""
439
440LOGHEADER = """\
441Last-Changed-Date: %(date)s
442Last-Changed-Author: %(author)s
443Last-Changed-Email: %(email)s
444Last-Changed-Remote-Host: %(REMOTE_HOST)s
445Last-Changed-Remote-Address: %(REMOTE_ADDR)s
446
447%(log)s
448"""
449
450COMMITTED = """
451Your changes have been committed.
452"""
453
454COMMITFAILED = """
Guido van Rossum6592b3c1997-11-11 17:18:48 +0000455Exit status %(sts)s.
Guido van Rossum1677e5b1997-05-26 00:07:18 +0000456"""
457
Guido van Rossumea31ea21997-05-26 05:43:29 +0000458# Add/Delete
459
460ADD_HEAD = """
461At the moment, new entries can only be added at the end of a section.
462This is because the entry numbers are also their
463unique identifiers -- it's a bad idea to renumber entries.
464<P>
465Click on the section to which you want to add a new entry:
466<UL>
467"""
468
469ADD_SECTION = """\
470<LI><A HREF="%(FAQCGI)s?req=new&amp;section=%(section)s">%(section)s. %(title)s</A>
471"""
472
473ADD_TAIL = """
474</UL>
475"""
476
Guido van Rossumf1ead1a1997-08-28 02:38:01 +0000477ROULETTE = """
478<P>Hit your browser's Reload button to play again.<P>
479"""
480
Guido van Rossumea31ea21997-05-26 05:43:29 +0000481DELETE = """
482At the moment, there's no direct way to delete entries.
483This is because the entry numbers are also their
484unique identifiers -- it's a bad idea to renumber entries.
485<P>
486If you really think an entry needs to be deleted,
487change the title to "(deleted)" and make the body
488empty (keep the entry number in the title though).
489"""
490
491# Help file for the FAQ Edit Wizard
492
Guido van Rossum1677e5b1997-05-26 00:07:18 +0000493HELP = """
494Using the %(FAQNAME)s Edit Wizard speaks mostly for itself. Here are
495some answers to questions you are likely to ask:
496
497<P><HR>
498
499<H2>I can review an entry but I can't commit it.</H2>
500
501The commit button only appears if the following conditions are met:
502
503<UL>
504
505<LI>The Name field is not empty.
506
507<LI>The Email field contains at least an @ character.
508
509<LI>The Log message box is not empty.
510
511<LI>The Password field contains the proper password.
512
513</UL>
514
515<P><HR>
516
517<H2>What is the password?</H2>
518
519At the moment, only PSA members will be told the password. This is a
520good time to join the PSA! See <A
521HREF="http://www.python.org/psa/">the PSA home page</A>.
522
523<P><HR>
524
525<H2>Can I use HTML in the FAQ entry?</H2>
526
527No, but if you include a URL or an email address in the text it will
528automatigally become an anchor of the right type. Also, *word*
529is made italic (but only for single alphabetic words).
530
531<P><HR>
532
533<H2>How do I delineate paragraphs?</H2>
534
535Use blank lines to separate paragraphs.
536
537<P><HR>
538
539<H2>How do I enter example text?</H2>
540
541Any line that begins with a space or tab is assumed to be part of
542literal text. Blocks of literal text delineated by blank lines are
543placed inside &lt;PRE&gt;...&lt;/PRE&gt;.
544"""
Guido van Rossum5bf4d001997-06-03 22:03:22 +0000545
546# Load local customizations again, in case they set some other variables
547
548try:
549 from faqcust import *
550except ImportError:
551 pass