For each master document thread, multiple passes on a document are performed sequentially: a pass may depend on previous passes.
The thread generating a document is said to converge if an successive passes reach a fixed point; that is, if all the outputs from one pass are the same as from the previous pass.
Conceptually, interscript repeats passes indefinitely until the passes converge; in practice, a limit is placed on the number of passes for two reasons: the first is to prevent unstable definitions locking up the computer, and the second is to allow for the fact that detection of convergence is, in general, difficult and not fully implemented.
For example, although comparison of output files is a useful tool, minor variations between passes, such as time stamps, may lead to failed comparisons based on representation rather than semantic content.
1: #line 26 "pass_frame.ipk" 2: import string 3: import traceback 4: import sys 5: 6: from interscript.drivers.sources import source_open_error 7: from interscript.drivers.sources.disk import named_file_source 8: from interscript.drivers.sources.base import eoi 9: from interscript.frames.inputf import input_frame 10: from interscript.weavers.auto import auto_weaver 11: from interscript.drivers.sources.base import eoi 12: from interscript.parsers.html import sgml_wrapper, html_filter 13: 14: class pass_frame: 15: def __init__(self,master, passno): 16: # the display 17: self.master = master 18: self.process = master.process 19: 20: self.passno = passno 21: 22: self.verbosity = master.verbosity 23: self.echo_input = master.echo_input 24: self.autoweave = master.autoweave 25: 26: self.ids = {} 27: self.flist = [] 28: self.fdict = {} 29: self.iflist = [] 30: self.toc = [] 31: self.include_files = [] 32: self.classes = {} 33: self.functions = {} 34: self.testno = 0 35: self.sequence = 0 36: self.tests = {} 37: self.section_index = {} 38: 39: if self.verbosity>=3: 40: print 'Autoweave',self.autoweave 41: 42: file = self.master.filename 43: if self.verbosity>=2: 44: print 'Processing',file,'Pass',passno 45: