Steve Piercy
2016-04-13 3021c2eb9ccd51550cc0ce86f926194cc0408d34
Merge pull request #2490 from stevepiercy/master

- update Pyramid Request Processing Diagram.
3 files modified
883 ■■■■■ changed files
docs/_static/pyramid_request_processing.graffle 881 ●●●●● patch | view | raw | blame | history
docs/_static/pyramid_request_processing.png patch | view | raw | blame | history
docs/_static/pyramid_request_processing.svg 2 ●●● patch | view | raw | blame | history
docs/_static/pyramid_request_processing.graffle
@@ -22,7 +22,7 @@
            <key>Font</key>
            <string>Helvetica</string>
            <key>Size</key>
            <real>12</real>
            <real>13</real>
        </dict>
        <key>ID</key>
        <integer>2</integer>
@@ -59,6 +59,181 @@
    <key>GraphicsList</key>
    <array>
        <dict>
            <key>Bounds</key>
            <string>{{238.74999618530273, 294.65604172230951}, {105.66668701171875, 18.656048080136394}}</string>
            <key>Class</key>
            <string>ShapedGraphic</string>
            <key>FontInfo</key>
            <dict>
                <key>Font</key>
                <string>Helvetica</string>
                <key>Size</key>
                <real>11</real>
            </dict>
            <key>ID</key>
            <integer>169515</integer>
            <key>Layer</key>
            <integer>0</integer>
            <key>Magnets</key>
            <array>
                <string>{0, 1}</string>
                <string>{0, -1}</string>
                <string>{1, 0}</string>
                <string>{-1, 0}</string>
                <string>{0.50000000000000089, -0.49999999999999645}</string>
                <string>{-0.49526813868737474, -0.4689979626999552}</string>
            </array>
            <key>Shape</key>
            <string>Rectangle</string>
            <key>Style</key>
            <dict>
                <key>fill</key>
                <dict>
                    <key>Color</key>
                    <dict>
                        <key>b</key>
                        <string>0.637876</string>
                        <key>g</key>
                        <string>1</string>
                        <key>r</key>
                        <string>1</string>
                    </dict>
                </dict>
                <key>shadow</key>
                <dict>
                    <key>Draws</key>
                    <string>NO</string>
                    <key>ShadowVector</key>
                    <string>{2, 2}</string>
                </dict>
            </dict>
            <key>Text</key>
            <dict>
                <key>Text</key>
                <string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
{\colortbl;\red255\green255\blue255;}
\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc
\f0\fs20 \cf0 CSRF checks}</string>
                <key>VerticalPad</key>
                <integer>0</integer>
            </dict>
        </dict>
        <dict>
            <key>Class</key>
            <string>LineGraphic</string>
            <key>FontInfo</key>
            <dict>
                <key>Color</key>
                <dict>
                    <key>w</key>
                    <string>0</string>
                </dict>
                <key>Font</key>
                <string>Helvetica</string>
                <key>Size</key>
                <real>12</real>
            </dict>
            <key>Head</key>
            <dict>
                <key>ID</key>
                <integer>169513</integer>
            </dict>
            <key>ID</key>
            <integer>169514</integer>
            <key>Layer</key>
            <integer>0</integer>
            <key>Points</key>
            <array>
                <string>{154.9999760464211, 209.11365574251681}</string>
                <string>{239.8333613077798, 209.14732074737549}</string>
            </array>
            <key>Style</key>
            <dict>
                <key>stroke</key>
                <dict>
                    <key>Color</key>
                    <dict>
                        <key>b</key>
                        <string>0.0980392</string>
                        <key>g</key>
                        <string>0.0980392</string>
                        <key>r</key>
                        <string>0.0980392</string>
                    </dict>
                    <key>HeadArrow</key>
                    <string>0</string>
                    <key>Legacy</key>
                    <true/>
                    <key>Pattern</key>
                    <integer>2</integer>
                    <key>TailArrow</key>
                    <string>0</string>
                </dict>
            </dict>
            <key>Tail</key>
            <dict>
                <key>ID</key>
                <integer>169373</integer>
                <key>Position</key>
                <real>0.47711458802223206</real>
            </dict>
        </dict>
        <dict>
            <key>Bounds</key>
            <string>{{239.83336130777977, 197.875}, {105.66666412353516, 22.544641494750977}}</string>
            <key>Class</key>
            <string>ShapedGraphic</string>
            <key>ID</key>
            <integer>169513</integer>
            <key>Layer</key>
            <integer>0</integer>
            <key>Magnets</key>
            <array>
                <string>{0, 1}</string>
                <string>{0, -1}</string>
                <string>{1, 0}</string>
                <string>{-1, 0}</string>
            </array>
            <key>Shape</key>
            <string>Rectangle</string>
            <key>Style</key>
            <dict>
                <key>fill</key>
                <dict>
                    <key>Color</key>
                    <dict>
                        <key>b</key>
                        <string>0.999449</string>
                        <key>g</key>
                        <string>0.743511</string>
                        <key>r</key>
                        <string>0.872276</string>
                    </dict>
                </dict>
                <key>shadow</key>
                <dict>
                    <key>Draws</key>
                    <string>NO</string>
                    <key>ShadowVector</key>
                    <string>{2, 2}</string>
                </dict>
            </dict>
            <key>Text</key>
            <dict>
                <key>Text</key>
                <string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
{\colortbl;\red255\green255\blue255;}
\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc
\f0\fs20 \cf0 BeforeTraversal}</string>
                <key>VerticalPad</key>
                <integer>0</integer>
            </dict>
        </dict>
        <dict>
            <key>Class</key>
            <string>LineGraphic</string>
            <key>FontInfo</key>
@@ -84,8 +259,8 @@
            <integer>0</integer>
            <key>Points</key>
            <array>
                <string>{344.41668319702148, 402.88506673894034}</string>
                <string>{375.5, 402.77232108797347}</string>
                <string>{344.41668319702148, 411.88506673894034}</string>
                <string>{375.5, 411.77232108797347}</string>
            </array>
            <key>Style</key>
            <dict>
@@ -237,378 +412,430 @@
            </dict>
        </dict>
        <dict>
            <key>Bounds</key>
            <string>{{238.74999618530273, 275.99999999999994}, {105.75002924601222, 18.656048080136394}}</string>
            <key>Class</key>
            <string>Group</string>
            <key>Graphics</key>
            <string>ShapedGraphic</string>
            <key>FontInfo</key>
            <dict>
                <key>Font</key>
                <string>Helvetica</string>
                <key>Size</key>
                <real>11</real>
            </dict>
            <key>ID</key>
            <integer>169506</integer>
            <key>Layer</key>
            <integer>0</integer>
            <key>Magnets</key>
            <array>
                <string>{0, 1}</string>
                <string>{0, -1}</string>
                <string>{1, 0}</string>
                <string>{-1, 0}</string>
                <string>{0.50000000000000089, -0.49999999999999645}</string>
                <string>{-0.49526813868737474, -0.4689979626999552}</string>
            </array>
            <key>Shape</key>
            <string>Rectangle</string>
            <key>Style</key>
            <dict>
                <key>fill</key>
                <dict>
                    <key>Bounds</key>
                    <string>{{238.74999618530273, 284.99999999999994}, {105.75002924601222, 18.656048080136394}}</string>
                    <key>Class</key>
                    <string>ShapedGraphic</string>
                    <key>ID</key>
                    <integer>169506</integer>
                    <key>Magnets</key>
                    <array>
                        <string>{0, 1}</string>
                        <string>{0, -1}</string>
                        <string>{1, 0}</string>
                        <string>{-1, 0}</string>
                        <string>{0.50000000000000089, -0.49999999999999645}</string>
                        <string>{-0.49526813868737474, -0.4689979626999552}</string>
                    </array>
                    <key>Shape</key>
                    <string>Rectangle</string>
                    <key>Style</key>
                    <key>Color</key>
                    <dict>
                        <key>fill</key>
                        <dict>
                            <key>Color</key>
                            <dict>
                                <key>b</key>
                                <string>0.637876</string>
                                <key>g</key>
                                <string>1</string>
                                <key>r</key>
                                <string>1</string>
                            </dict>
                        </dict>
                        <key>shadow</key>
                        <dict>
                            <key>Draws</key>
                            <string>NO</string>
                            <key>ShadowVector</key>
                            <string>{2, 2}</string>
                        </dict>
                        <key>b</key>
                        <string>0.637876</string>
                        <key>g</key>
                        <string>1</string>
                        <key>r</key>
                        <string>1</string>
                    </dict>
                    <key>Text</key>
                    <dict>
                        <key>Text</key>
                        <string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
                </dict>
                <key>shadow</key>
                <dict>
                    <key>Draws</key>
                    <string>NO</string>
                    <key>ShadowVector</key>
                    <string>{2, 2}</string>
                </dict>
            </dict>
            <key>Text</key>
            <dict>
                <key>Text</key>
                <string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
{\colortbl;\red255\green255\blue255;}
\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc
\f0\fs20 \cf0 authorization}</string>
                        <key>VerticalPad</key>
                        <integer>0</integer>
                <key>VerticalPad</key>
                <integer>0</integer>
            </dict>
        </dict>
        <dict>
            <key>Bounds</key>
            <string>{{238.74999618530273, 421.15071036499205}, {105.66668701171875, 18.656048080136394}}</string>
            <key>Class</key>
            <string>ShapedGraphic</string>
            <key>FontInfo</key>
            <dict>
                <key>Font</key>
                <string>Helvetica</string>
                <key>Size</key>
                <real>11</real>
            </dict>
            <key>ID</key>
            <integer>169507</integer>
            <key>Layer</key>
            <integer>0</integer>
            <key>Magnets</key>
            <array>
                <string>{0, 1}</string>
                <string>{0, -1}</string>
                <string>{1, 0}</string>
                <string>{-1, 0}</string>
                <string>{0.50000000000000089, 0.5}</string>
                <string>{-0.49999999999999911, 0.49999999999999289}</string>
            </array>
            <key>Shape</key>
            <string>Rectangle</string>
            <key>Style</key>
            <dict>
                <key>fill</key>
                <dict>
                    <key>Color</key>
                    <dict>
                        <key>b</key>
                        <string>0.637876</string>
                        <key>g</key>
                        <string>1</string>
                        <key>r</key>
                        <string>1</string>
                    </dict>
                </dict>
                <key>shadow</key>
                <dict>
                    <key>Bounds</key>
                    <string>{{238.74999618530273, 412.15071036499205}, {105.66668701171875, 18.656048080136394}}</string>
                    <key>Class</key>
                    <string>ShapedGraphic</string>
                    <key>ID</key>
                    <integer>169507</integer>
                    <key>Magnets</key>
                    <array>
                        <string>{0, 1}</string>
                        <string>{0, -1}</string>
                        <string>{1, 0}</string>
                        <string>{-1, 0}</string>
                        <string>{0.50000000000000089, 0.5}</string>
                        <string>{-0.49999999999999911, 0.49999999999999289}</string>
                    </array>
                    <key>Shape</key>
                    <string>Rectangle</string>
                    <key>Style</key>
                    <dict>
                        <key>fill</key>
                        <dict>
                            <key>Color</key>
                            <dict>
                                <key>b</key>
                                <string>0.637876</string>
                                <key>g</key>
                                <string>1</string>
                                <key>r</key>
                                <string>1</string>
                            </dict>
                        </dict>
                        <key>shadow</key>
                        <dict>
                            <key>Draws</key>
                            <string>NO</string>
                            <key>ShadowVector</key>
                            <string>{2, 2}</string>
                        </dict>
                    </dict>
                    <key>Text</key>
                    <dict>
                        <key>Text</key>
                        <string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
                    <key>Draws</key>
                    <string>NO</string>
                    <key>ShadowVector</key>
                    <string>{2, 2}</string>
                </dict>
            </dict>
            <key>Text</key>
            <dict>
                <key>Text</key>
                <string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
{\colortbl;\red255\green255\blue255;}
\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc
\f0\fs20 \cf0 decorators egress}</string>
                        <key>VerticalPad</key>
                        <integer>0</integer>
                <key>VerticalPad</key>
                <integer>0</integer>
            </dict>
        </dict>
        <dict>
            <key>Bounds</key>
            <string>{{238.74999618530273, 312.65604172230951}, {105.66668701171875, 18.656048080136394}}</string>
            <key>Class</key>
            <string>ShapedGraphic</string>
            <key>FontInfo</key>
            <dict>
                <key>Font</key>
                <string>Helvetica</string>
                <key>Size</key>
                <real>11</real>
            </dict>
            <key>ID</key>
            <integer>169508</integer>
            <key>Layer</key>
            <integer>0</integer>
            <key>Magnets</key>
            <array>
                <string>{0, 1}</string>
                <string>{0, -1}</string>
                <string>{1, 0}</string>
                <string>{-1, 0}</string>
                <string>{0.50000000000000089, -0.49999999999999645}</string>
                <string>{-0.49526813868737474, -0.4689979626999552}</string>
            </array>
            <key>Shape</key>
            <string>Rectangle</string>
            <key>Style</key>
            <dict>
                <key>fill</key>
                <dict>
                    <key>Color</key>
                    <dict>
                        <key>b</key>
                        <string>0.637876</string>
                        <key>g</key>
                        <string>1</string>
                        <key>r</key>
                        <string>1</string>
                    </dict>
                </dict>
                <key>shadow</key>
                <dict>
                    <key>Bounds</key>
                    <string>{{238.74999618530273, 303.65604172230951}, {105.66668701171875, 18.656048080136394}}</string>
                    <key>Class</key>
                    <string>ShapedGraphic</string>
                    <key>ID</key>
                    <integer>169508</integer>
                    <key>Magnets</key>
                    <array>
                        <string>{0, 1}</string>
                        <string>{0, -1}</string>
                        <string>{1, 0}</string>
                        <string>{-1, 0}</string>
                        <string>{0.50000000000000089, -0.49999999999999645}</string>
                        <string>{-0.49526813868737474, -0.4689979626999552}</string>
                    </array>
                    <key>Shape</key>
                    <string>Rectangle</string>
                    <key>Style</key>
                    <dict>
                        <key>fill</key>
                        <dict>
                            <key>Color</key>
                            <dict>
                                <key>b</key>
                                <string>0.637876</string>
                                <key>g</key>
                                <string>1</string>
                                <key>r</key>
                                <string>1</string>
                            </dict>
                        </dict>
                        <key>shadow</key>
                        <dict>
                            <key>Draws</key>
                            <string>NO</string>
                            <key>ShadowVector</key>
                            <string>{2, 2}</string>
                        </dict>
                    </dict>
                    <key>Text</key>
                    <dict>
                        <key>Text</key>
                        <string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
                    <key>Draws</key>
                    <string>NO</string>
                    <key>ShadowVector</key>
                    <string>{2, 2}</string>
                </dict>
            </dict>
            <key>Text</key>
            <dict>
                <key>Text</key>
                <string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
{\colortbl;\red255\green255\blue255;}
\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc
\f0\fs20 \cf0 decorators ingress}</string>
                        <key>VerticalPad</key>
                        <integer>0</integer>
                <key>VerticalPad</key>
                <integer>0</integer>
            </dict>
        </dict>
        <dict>
            <key>Bounds</key>
            <string>{{238.74999618530273, 402.55704269887212}, {105.66668701171875, 18.656048080136394}}</string>
            <key>Class</key>
            <string>ShapedGraphic</string>
            <key>FontInfo</key>
            <dict>
                <key>Font</key>
                <string>Helvetica</string>
                <key>Size</key>
                <real>11</real>
            </dict>
            <key>ID</key>
            <integer>169509</integer>
            <key>Layer</key>
            <integer>0</integer>
            <key>Magnets</key>
            <array>
                <string>{0, 1}</string>
                <string>{0, -1}</string>
                <string>{1, 0}</string>
                <string>{-1, 0}</string>
            </array>
            <key>Shape</key>
            <string>Rectangle</string>
            <key>Style</key>
            <dict>
                <key>fill</key>
                <dict>
                    <key>Color</key>
                    <dict>
                        <key>b</key>
                        <string>0.637876</string>
                        <key>g</key>
                        <string>1</string>
                        <key>r</key>
                        <string>1</string>
                    </dict>
                </dict>
                <key>shadow</key>
                <dict>
                    <key>Bounds</key>
                    <string>{{238.74999618530273, 393.55704269887212}, {105.66668701171875, 18.656048080136394}}</string>
                    <key>Class</key>
                    <string>ShapedGraphic</string>
                    <key>ID</key>
                    <integer>169509</integer>
                    <key>Magnets</key>
                    <array>
                        <string>{0, 1}</string>
                        <string>{0, -1}</string>
                        <string>{1, 0}</string>
                        <string>{-1, 0}</string>
                    </array>
                    <key>Shape</key>
                    <string>Rectangle</string>
                    <key>Style</key>
                    <dict>
                        <key>fill</key>
                        <dict>
                            <key>Color</key>
                            <dict>
                                <key>b</key>
                                <string>0.637876</string>
                                <key>g</key>
                                <string>1</string>
                                <key>r</key>
                                <string>1</string>
                            </dict>
                        </dict>
                        <key>shadow</key>
                        <dict>
                            <key>Draws</key>
                            <string>NO</string>
                            <key>ShadowVector</key>
                            <string>{2, 2}</string>
                        </dict>
                    </dict>
                    <key>Text</key>
                    <dict>
                        <key>Text</key>
                        <string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
                    <key>Draws</key>
                    <string>NO</string>
                    <key>ShadowVector</key>
                    <string>{2, 2}</string>
                </dict>
            </dict>
            <key>Text</key>
            <dict>
                <key>Text</key>
                <string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
{\colortbl;\red255\green255\blue255;}
\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc
\f0\fs20 \cf0 response adapter}</string>
                        <key>VerticalPad</key>
                        <integer>0</integer>
                <key>VerticalPad</key>
                <integer>0</integer>
            </dict>
        </dict>
        <dict>
            <key>Bounds</key>
            <string>{{238.74999618530273, 383.90099016834085}, {105.66668701171875, 18.656048080136394}}</string>
            <key>Class</key>
            <string>ShapedGraphic</string>
            <key>FontInfo</key>
            <dict>
                <key>Font</key>
                <string>Helvetica</string>
                <key>Size</key>
                <real>11</real>
            </dict>
            <key>ID</key>
            <integer>169510</integer>
            <key>Layer</key>
            <integer>0</integer>
            <key>Magnets</key>
            <array>
                <string>{0, 1}</string>
                <string>{0, -1}</string>
                <string>{1, 0}</string>
                <string>{-1, 0}</string>
            </array>
            <key>Shape</key>
            <string>Rectangle</string>
            <key>Style</key>
            <dict>
                <key>fill</key>
                <dict>
                    <key>Color</key>
                    <dict>
                        <key>b</key>
                        <string>0.637876</string>
                        <key>g</key>
                        <string>1</string>
                        <key>r</key>
                        <string>1</string>
                    </dict>
                </dict>
                <key>shadow</key>
                <dict>
                    <key>Bounds</key>
                    <string>{{238.74999618530273, 374.90099016834085}, {105.66668701171875, 18.656048080136394}}</string>
                    <key>Class</key>
                    <string>ShapedGraphic</string>
                    <key>ID</key>
                    <integer>169510</integer>
                    <key>Magnets</key>
                    <array>
                        <string>{0, 1}</string>
                        <string>{0, -1}</string>
                        <string>{1, 0}</string>
                        <string>{-1, 0}</string>
                    </array>
                    <key>Shape</key>
                    <string>Rectangle</string>
                    <key>Style</key>
                    <dict>
                        <key>fill</key>
                        <dict>
                            <key>Color</key>
                            <dict>
                                <key>b</key>
                                <string>0.637876</string>
                                <key>g</key>
                                <string>1</string>
                                <key>r</key>
                                <string>1</string>
                            </dict>
                        </dict>
                        <key>shadow</key>
                        <dict>
                            <key>Draws</key>
                            <string>NO</string>
                            <key>ShadowVector</key>
                            <string>{2, 2}</string>
                        </dict>
                    </dict>
                    <key>Text</key>
                    <dict>
                        <key>Text</key>
                        <string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
                    <key>Draws</key>
                    <string>NO</string>
                    <key>ShadowVector</key>
                    <string>{2, 2}</string>
                </dict>
            </dict>
            <key>Text</key>
            <dict>
                <key>Text</key>
                <string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
{\colortbl;\red255\green255\blue255;}
\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc
\f0\fs20 \cf0 view mapper egress}</string>
                        <key>VerticalPad</key>
                        <integer>0</integer>
                <key>VerticalPad</key>
                <integer>0</integer>
            </dict>
        </dict>
        <dict>
            <key>Bounds</key>
            <string>{{238.74999618530273, 350.36561209044055}, {105.66668701171875, 33.089282989501953}}</string>
            <key>Class</key>
            <string>ShapedGraphic</string>
            <key>FontInfo</key>
            <dict>
                <key>Font</key>
                <string>Helvetica</string>
                <key>Size</key>
                <real>11</real>
            </dict>
            <key>ID</key>
            <integer>169511</integer>
            <key>Layer</key>
            <integer>0</integer>
            <key>Magnets</key>
            <array>
                <string>{0, 1}</string>
                <string>{0, -1}</string>
                <string>{1, 0}</string>
                <string>{-1, 0}</string>
            </array>
            <key>Shape</key>
            <string>Rectangle</string>
            <key>Style</key>
            <dict>
                <key>fill</key>
                <dict>
                    <key>Color</key>
                    <dict>
                        <key>b</key>
                        <string>0.422927</string>
                        <key>g</key>
                        <string>1</string>
                        <key>r</key>
                        <string>1</string>
                    </dict>
                </dict>
                <key>shadow</key>
                <dict>
                    <key>Bounds</key>
                    <string>{{238.74999618530273, 341.36561209044055}, {105.66668701171875, 33.089282989501953}}</string>
                    <key>Class</key>
                    <string>ShapedGraphic</string>
                    <key>ID</key>
                    <integer>169511</integer>
                    <key>Magnets</key>
                    <array>
                        <string>{0, 1}</string>
                        <string>{0, -1}</string>
                        <string>{1, 0}</string>
                        <string>{-1, 0}</string>
                    </array>
                    <key>Shape</key>
                    <string>Rectangle</string>
                    <key>Style</key>
                    <dict>
                        <key>fill</key>
                        <dict>
                            <key>Color</key>
                            <dict>
                                <key>b</key>
                                <string>0.422927</string>
                                <key>g</key>
                                <string>1</string>
                                <key>r</key>
                                <string>1</string>
                            </dict>
                        </dict>
                        <key>shadow</key>
                        <dict>
                            <key>Draws</key>
                            <string>NO</string>
                            <key>ShadowVector</key>
                            <string>{2, 2}</string>
                        </dict>
                    </dict>
                    <key>Text</key>
                    <dict>
                        <key>Text</key>
                        <string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
                    <key>Draws</key>
                    <string>NO</string>
                    <key>ShadowVector</key>
                    <string>{2, 2}</string>
                </dict>
            </dict>
            <key>Text</key>
            <dict>
                <key>Text</key>
                <string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
{\colortbl;\red255\green255\blue255;}
\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc
\f0\fs20 \cf0 view}</string>
                        <key>VerticalPad</key>
                        <integer>0</integer>
                <key>VerticalPad</key>
                <integer>0</integer>
            </dict>
        </dict>
        <dict>
            <key>Bounds</key>
            <string>{{238.74999618530273, 331.26348241170439}, {105.66668701171875, 18.656048080136394}}</string>
            <key>Class</key>
            <string>ShapedGraphic</string>
            <key>FontInfo</key>
            <dict>
                <key>Font</key>
                <string>Helvetica</string>
                <key>Size</key>
                <real>11</real>
            </dict>
            <key>ID</key>
            <integer>169512</integer>
            <key>Layer</key>
            <integer>0</integer>
            <key>Magnets</key>
            <array>
                <string>{0, 1}</string>
                <string>{0, -1}</string>
                <string>{1, 0}</string>
                <string>{-1, 0}</string>
            </array>
            <key>Shape</key>
            <string>Rectangle</string>
            <key>Style</key>
            <dict>
                <key>fill</key>
                <dict>
                    <key>Color</key>
                    <dict>
                        <key>b</key>
                        <string>0.637876</string>
                        <key>g</key>
                        <string>1</string>
                        <key>r</key>
                        <string>1</string>
                    </dict>
                </dict>
                <key>shadow</key>
                <dict>
                    <key>Bounds</key>
                    <string>{{238.74999618530273, 322.26348241170439}, {105.66668701171875, 18.656048080136394}}</string>
                    <key>Class</key>
                    <string>ShapedGraphic</string>
                    <key>ID</key>
                    <integer>169512</integer>
                    <key>Magnets</key>
                    <array>
                        <string>{0, 1}</string>
                        <string>{0, -1}</string>
                        <string>{1, 0}</string>
                        <string>{-1, 0}</string>
                    </array>
                    <key>Shape</key>
                    <string>Rectangle</string>
                    <key>Style</key>
                    <dict>
                        <key>fill</key>
                        <dict>
                            <key>Color</key>
                            <dict>
                                <key>b</key>
                                <string>0.637876</string>
                                <key>g</key>
                                <string>1</string>
                                <key>r</key>
                                <string>1</string>
                            </dict>
                        </dict>
                        <key>shadow</key>
                        <dict>
                            <key>Draws</key>
                            <string>NO</string>
                            <key>ShadowVector</key>
                            <string>{2, 2}</string>
                        </dict>
                    </dict>
                    <key>Text</key>
                    <dict>
                        <key>Text</key>
                        <string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
                    <key>Draws</key>
                    <string>NO</string>
                    <key>ShadowVector</key>
                    <string>{2, 2}</string>
                </dict>
            </dict>
            <key>Text</key>
            <dict>
                <key>Text</key>
                <string>{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400
\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
{\colortbl;\red255\green255\blue255;}
\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc
\f0\fs20 \cf0 view mapper ingress}</string>
                        <key>VerticalPad</key>
                        <integer>0</integer>
                    </dict>
                </dict>
            </array>
            <key>ID</key>
            <integer>169505</integer>
            <key>Layer</key>
            <integer>0</integer>
                <key>VerticalPad</key>
                <integer>0</integer>
            </dict>
        </dict>
        <dict>
            <key>Class</key>
@@ -1094,7 +1321,7 @@
            <integer>0</integer>
            <key>Points</key>
            <array>
                <string>{238.74999618530282, 430.80675844512831}</string>
                <string>{238.74999618530282, 439.80675844512831}</string>
                <string>{207.66666666666765, 385.656005859375}</string>
            </array>
            <key>Style</key>
@@ -1144,7 +1371,7 @@
            <integer>0</integer>
            <key>Points</key>
            <array>
                <string>{239.25039065750093, 285.57837549845181}</string>
                <string>{239.25039065750093, 276.57837549845181}</string>
                <string>{207.66666666666777, 353.07514659563753}</string>
            </array>
            <key>Style</key>
@@ -1742,7 +1969,7 @@
        </dict>
        <dict>
            <key>Bounds</key>
            <string>{{375.5, 391.5}, {105.66666412353516, 22.544642175946908}}</string>
            <string>{{375.5, 400.5}, {105.66666412353516, 22.544642175946908}}</string>
            <key>Class</key>
            <string>ShapedGraphic</string>
            <key>ID</key>
@@ -9578,6 +9805,10 @@
    <string>YES</string>
    <key>HPages</key>
    <integer>1</integer>
    <key>HorizontalGuides</key>
    <array>
        <real>209.875</real>
    </array>
    <key>ImageCounter</key>
    <integer>3</integer>
    <key>KeepToScale</key>
@@ -9637,7 +9868,7 @@
    <key>MasterSheets</key>
    <array/>
    <key>ModificationDate</key>
    <string>2016-03-13 08:04:48 +0000</string>
    <string>2016-04-13 08:32:47 +0000</string>
    <key>Modifier</key>
    <string>Steve Piercy</string>
    <key>NotesVisible</key>
@@ -9718,7 +9949,7 @@
            </dict>
        </array>
        <key>Frame</key>
        <string>{{35, 93}, {1394, 1325}}</string>
        <string>{{35, 93}, {2284, 1325}}</string>
        <key>ListView</key>
        <true/>
        <key>OutlineWidth</key>
@@ -9732,15 +9963,15 @@
        <key>SidebarWidth</key>
        <integer>163</integer>
        <key>VisibleRegion</key>
        <string>{{152.25, 226.5}, {255.75, 292.75}}</string>
        <string>{{110.125, 77.875}, {239.125, 146.375}}</string>
        <key>Zoom</key>
        <real>4</real>
        <real>8</real>
        <key>ZoomValues</key>
        <array>
            <array>
                <string>Request Processing</string>
                <real>4</real>
                <real>8</real>
                <real>4</real>
            </array>
        </array>
    </dict>
docs/_static/pyramid_request_processing.png

docs/_static/pyramid_request_processing.svg
@@ -1,3 +1,3 @@
<?xml version="1.0"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xl="http://www.w3.org/1999/xlink" version="1.1" viewBox="91 11 424 533" width="424pt" height="533pt"><metadata xmlns:dc="http://purl.org/dc/elements/1.1/"><dc:date>2016-03-13 08:04Z</dc:date><!-- Produced by OmniGraffle Professional 5.4.4 --></metadata><defs><marker orient="auto" overflow="visible" markerUnits="strokeWidth" id="SharpArrow_Marker" viewBox="-4 -4 10 8" markerWidth="10" markerHeight="8" color="#191919"><g><path d="M 5 0 L -3 -3 L 0 0 L 0 0 L -3 3 Z" fill="currentColor" stroke="currentColor" stroke-width="1"/></g></marker><font-face font-family="Helvetica" font-size="10" units-per-em="1000" underline-position="-75.683594" underline-thickness="49.316406" slope="0" x-height="522.94922" cap-height="717.28516" ascent="770.01953" descent="-229.98047" font-weight="500"><font-face-src><font-face-name name="Helvetica"/></font-face-src></font-face><font-face font-family="Helvetica" font-size="12" units-per-em="1000" underline-position="-75.683594" underline-thickness="49.316406" slope="0" x-height="532.22656" cap-height="719.72656" ascent="770.01953" descent="-229.98047" font-weight="bold"><font-face-src><font-face-name name="Helvetica-Bold"/></font-face-src></font-face><font-face font-family="Helvetica" font-size="10" units-per-em="1000" underline-position="-75.683594" underline-thickness="49.316406" slope="0" x-height="532.22656" cap-height="719.72656" ascent="770.01953" descent="-229.98047" font-weight="bold"><font-face-src><font-face-name name="Helvetica-Bold"/></font-face-src></font-face></defs><g stroke="none" stroke-opacity="1" stroke-dasharray="none" fill="none" fill-opacity="1"><title>Request Processing</title><rect fill="white" width="576" height="733"/><g><title>no exceptions</title><path d="M 155 444.75674 C 155 450.64061 155 486.2592 155 502.71617" marker-end="url(#SharpArrow_Marker)" stroke="#191919" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><path d="M 154.99999 322.33334 C 154.99999 327.72413 155 337.74646 155 346.1775" marker-end="url(#SharpArrow_Marker)" stroke="#191919" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><path d="M 154.99999 245.22768 C 154.99999 250.5417 154.99999 257.93189 154.99999 265.10145" marker-end="url(#SharpArrow_Marker)" stroke="#191919" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><path d="M 154.99995 198.62203 C 154.99995 203.74682 154.99998 209.1909 154.99999 215.28222" marker-end="url(#SharpArrow_Marker)" stroke="#191919" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><rect x="102.16667" y="45.183037" width="105.666664" height="22.544641" fill="#a4cfff"/><rect x="102.16667" y="45.183037" width="105.666664" height="22.544641" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(107.16667 50.455358)" fill="black"><tspan font-family="Helvetica" font-size="10" font-weight="500" x="4.7596016" y="10" textLength="88.92578">middleware ingress </tspan></text><rect x="102.16667" y="96.183037" width="105.666664" height="22.544641" fill="#a4cfff"/><rect x="102.16667" y="96.183037" width="105.666664" height="22.544641" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(107.16667 101.45536)" fill="black"><tspan font-family="Helvetica" font-size="10" font-weight="500" x="16.983723" y="10" textLength="61.69922">tween ingress</tspan></text><rect x="102.16667" y="222.18304" width="105.666664" height="22.544641" fill="#d2ffd0"/><rect x="102.16667" y="222.18304" width="105.666664" height="22.544641" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(107.16667 227.45536)" fill="black"><tspan font-family="Helvetica" font-size="10" font-weight="500" x="28.660969" y="10" textLength="38.344727">traversal</tspan></text><rect x="238.83336" y="247.18304" width="105.666664" height="22.544641" fill="#dfbeff"/><rect x="238.83336" y="247.18304" width="105.666664" height="22.544641" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(243.83336 252.45536)" fill="black"><tspan font-family="Helvetica" font-size="10" font-weight="500" x="16.424641" y="10" textLength="62.817383">ContextFound</tspan></text><rect x="102.16667" y="422.2121" width="105.666664" height="22.544641" fill="#a4cfff"/><rect x="102.16667" y="422.2121" width="105.666664" height="22.544641" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(107.16667 427.48442)" fill="black"><tspan font-family="Helvetica" font-size="10" font-weight="500" x="18.094563" y="10" textLength="59.47754">tween egress</tspan></text><rect x="239" y="445.2359" width="105.666664" height="22.544641" fill="#fed153"/><rect x="239" y="445.2359" width="105.666664" height="22.544641" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(244 450.50821)" fill="black"><tspan font-family="Helvetica" font-size="10" font-weight="500" x="5.3113594" y="10" textLength="85.043945">response callbacks</tspan></text><rect x="239" y="497.2359" width="105.666664" height="22.544641" fill="#fed153"/><rect x="239" y="497.2359" width="105.666664" height="22.544641" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(244 502.5082)" fill="black"><tspan font-family="Helvetica" font-size="10" font-weight="500" x="8.6463203" y="10" textLength="5">fi</tspan><tspan font-family="Helvetica" font-size="10" font-weight="500" x="13.64632" y="10" textLength="73.374023">nished callbacks</tspan></text><rect x="102.16667" y="509.61795" width="105.666664" height="22.544641" fill="#a4cfff"/><rect x="102.16667" y="509.61795" width="105.666664" height="22.544641" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(107.16667 514.89027)" fill="black"><tspan font-family="Helvetica" font-size="10" font-weight="500" x="5.8704414" y="10" textLength="83.92578">middleware egress</tspan></text><path d="M 155 67.72768 C 155 73.048893 155 81.55558 155 89.2853" marker-end="url(#SharpArrow_Marker)" stroke="#191919" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><path d="M 155 119.22768 C 155 124.62026 154.99997 133.48763 154.99996 141.38632" marker-end="url(#SharpArrow_Marker)" stroke="#191919" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><rect x="375.5" y="391.5" width="105.666664" height="22.544642" fill="#dfbeff"/><rect x="375.5" y="391.5" width="105.666664" height="22.544642" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(380.5 396.77232)" fill="black"><tspan font-family="Helvetica" font-size="10" font-weight="500" x="16.702961" y="10" textLength="62.260742">BeforeRender</tspan></text><text transform="translate(233.5 20)" fill="black"><tspan font-family="Helvetica" font-size="12" font-weight="bold" x=".31445312" y="11" textLength="115.371094">Request Processing</tspan></text><path d="M 375.99995 42.910746 L 498.66662 42.910746 C 501.42805 42.910746 503.66662 45.149323 503.66662 47.910746 L 503.66662 222 C 503.66662 224.76142 501.42805 227 498.66662 227 L 375.99995 227 C 373.23853 227 370.99995 224.76142 370.99995 222 L 370.99995 47.910746 C 370.99995 45.149323 373.23853 42.910746 375.99995 42.910746 Z" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(375.99995 42.910746)" fill="black"><tspan font-family="Helvetica" font-size="10" font-weight="bold" x="0" y="10" textLength="35.55664">Legend</tspan></text><rect x="383.66662" y="63.908513" width="105.666664" height="22.544641" fill="#dfbeff"/><rect x="383.66662" y="63.908513" width="105.666664" height="22.544641" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(388.66662 69.180834)" fill="black"><tspan font-family="Helvetica" font-size="10" font-weight="500" x="35.601887" y="10" textLength="24.46289">event</tspan></text><rect x="383.66662" y="186.58226" width="105.666664" height="22.544641" fill="#fed153"/><rect x="383.66662" y="186.58226" width="105.666664" height="22.544641" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(388.66662 191.85458)" fill="black"><tspan font-family="Helvetica" font-size="10" font-weight="500" x="29.769367" y="10" textLength="36.12793">callback</tspan></text><rect x="383.66662" y="158.54998" width="105.666664" height="22.544641" fill="#ffff6c"/><rect x="383.66662" y="158.54998" width="105.666664" height="22.544641" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(388.66662 163.8223)" fill="black"><tspan font-family="Helvetica" font-size="10" font-weight="500" x="21.158527" y="10" textLength="53.34961">view deriver</tspan></text><rect x="383.66662" y="91.94079" width="105.666664" height="33.089283" fill="#a4cfff"/><rect x="383.66662" y="91.94079" width="105.666664" height="33.089283" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(388.66662 96.48543)" fill="black"><tspan font-family="Helvetica" font-size="10" font-weight="500" x="11.148762" y="10" textLength="76.14746">external process </tspan><tspan font-family="Helvetica" font-size="10" font-weight="500" x="2.8162422" y="22" textLength="90.03418">(middleware, tween)</tspan></text><rect x="383.66662" y="130.51771" width="105.666664" height="22.544641" fill="#d2ffd0"/><rect x="383.66662" y="130.51771" width="105.666664" height="22.544641" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(388.66662 135.79003)" fill="black"><tspan font-family="Helvetica" font-size="10" font-weight="500" x="12.537922" y="10" textLength="70.59082">internal process</tspan></text><line x1="154.99999" y1="258.44082" x2="238.83336" y2="258.45536" stroke="#191919" stroke-linecap="round" stroke-linejoin="round" stroke-width="1" stroke-dasharray="1,4"/><rect x="102.16667" y="353.07515" width="105.666664" height="33.089283" fill="#ffff6c"/><rect x="102.16667" y="353.07515" width="105.666664" height="33.089283" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(107.16667 363.61979)" fill="black"><tspan font-family="Helvetica" font-size="10" font-weight="500" x="19.205402" y="10" textLength="57.25586">view pipeline</tspan></text><path d="M 155 386.66443 C 155 392.17252 155 405.5052 155 415.30935" marker-end="url(#SharpArrow_Marker)" stroke="#191919" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><line x1="239.25039" y1="285.57838" x2="207.66667" y2="353.07515" stroke="#c1c1c1" stroke-linecap="round" stroke-linejoin="round" stroke-width="1" stroke-dasharray="1,3"/><line x1="238.75" y1="430.80676" x2="207.66667" y2="385.656" stroke="#c1c1c1" stroke-linecap="round" stroke-linejoin="round" stroke-width="1" stroke-dasharray="1,3"/><rect x="102.16666" y="305.0893" width="105.666664" height="17.244049" fill="#d2ffd0"/><rect x="102.16666" y="305.0893" width="105.666664" height="17.244049" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(107.16666 307.71132)" fill="black"><tspan font-family="Helvetica" font-size="10" font-weight="500" x="24.764484" y="10" textLength="46.137695">predicates</tspan></text><rect x="102.16666" y="272" width="105.666664" height="33.089294" fill="#d2ffd0"/><rect x="102.16666" y="272" width="105.666664" height="33.089294" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(107.16666 282.54465)" fill="black"><tspan font-family="Helvetica" font-size="10" font-weight="500" x="21.707844" y="10" textLength="52.250977">view lookup</tspan></text><rect x="102.166606" y="181.37798" width="105.666695" height="17.244049" fill="#d2ffd0"/><rect x="102.166606" y="181.37798" width="105.666695" height="17.244049" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(107.166606 184)" fill="black"><tspan font-family="Helvetica" font-size="10" font-weight="500" x="11.978855" y="10" textLength="71.708984">route predicates</tspan></text><rect x="102.166606" y="148.28869" width="105.666695" height="33.089294" fill="#d2ffd0"/><rect x="102.166606" y="148.28869" width="105.666695" height="33.089294" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(107.166606 158.83333)" fill="black"><tspan font-family="Helvetica" font-size="10" font-weight="500" x="18.001804" y="10" textLength="20.004883">URL</tspan><tspan font-family="Helvetica" font-size="10" font-weight="500" x="37.640476" y="10" textLength="40.024414"> dispatch</tspan></text><rect x="239.8334" y="117.3192" width="105.666664" height="22.544641" fill="#dfbeff"/><rect x="239.8334" y="117.3192" width="105.666664" height="22.544641" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(244.8334 122.59152)" fill="black"><tspan font-family="Helvetica" font-size="10" font-weight="500" x="19.207844" y="10" textLength="57.250977">NewRequest</tspan></text><line x1="154.99999" y1="128.68025" x2="239.8334" y2="128.59152" stroke="#191919" stroke-linecap="round" stroke-linejoin="round" stroke-width="1" stroke-dasharray="1,4"/><rect x="238.83336" y="471.2262" width="105.666664" height="22.544641" fill="#dfbeff"/><rect x="238.83336" y="471.2262" width="105.666664" height="22.544641" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(243.83336 476.49852)" fill="black"><tspan font-family="Helvetica" font-size="10" font-weight="500" x="15.316242" y="10" textLength="65.03418">NewResponse</tspan></text><line x1="155" y1="470.25295" x2="238.33861" y2="482.42625" stroke="#191919" stroke-linecap="round" stroke-linejoin="round" stroke-width="1" stroke-dasharray="1,4"/><rect x="238.75" y="322.26348" width="105.66669" height="18.656048" fill="#ffffa3"/><rect x="238.75" y="322.26348" width="105.66669" height="18.656048" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(243.75 325.5915)" fill="black"><tspan font-family="Helvetica" font-size="10" font-weight="500" x="1.9812927" y="10" textLength="91.7041">view mapper ingress</tspan></text><rect x="238.75" y="341.36561" width="105.66669" height="33.089283" fill="#ffff6c"/><rect x="238.75" y="341.36561" width="105.66669" height="33.089283" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(243.75 351.91025)" fill="black"><tspan font-family="Helvetica" font-size="10" font-weight="500" x="37.830902" y="10" textLength="20.004883">view</tspan></text><rect x="238.75" y="374.901" width="105.66669" height="18.656048" fill="#ffffa3"/><rect x="238.75" y="374.901" width="105.66669" height="18.656048" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(243.75 378.22901)" fill="black"><tspan font-family="Helvetica" font-size="10" font-weight="500" x="3.0921326" y="10" textLength="89.48242">view mapper egress</tspan></text><rect x="238.75" y="393.55704" width="105.66669" height="18.656048" fill="#ffffa3"/><rect x="238.75" y="393.55704" width="105.66669" height="18.656048" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(243.75 396.88507)" fill="black"><tspan font-family="Helvetica" font-size="10" font-weight="500" x="8.917328" y="10" textLength="77.83203">response adapter</tspan></text><rect x="238.75" y="303.65604" width="105.66669" height="18.656048" fill="#ffffa3"/><rect x="238.75" y="303.65604" width="105.66669" height="18.656048" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(243.75 306.98407)" fill="black"><tspan font-family="Helvetica" font-size="10" font-weight="500" x="6.7029724" y="10" textLength="82.26074">decorators ingress</tspan></text><rect x="238.75" y="412.1507" width="105.66669" height="18.656048" fill="#ffffa3"/><rect x="238.75" y="412.1507" width="105.66669" height="18.656048" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(243.75 415.47873)" fill="black"><tspan font-family="Helvetica" font-size="10" font-weight="500" x="7.8138123" y="10" textLength="80.039062">decorators egress</tspan></text><rect x="238.75" y="285" width="105.75003" height="18.656048" fill="#ffffa3"/><rect x="238.75" y="285" width="105.75003" height="18.656048" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(243.75 288.32802)" fill="black"><tspan font-family="Helvetica" font-size="10" font-weight="500" x="19.244644" y="10" textLength="57.260742">authorization</tspan></text><line x1="155" y1="482.12575" x2="238.52297" y2="508.3584" stroke="#191919" stroke-linecap="round" stroke-linejoin="round" stroke-width="1" stroke-dasharray="1,4"/><line x1="155" y1="459.27668" x2="238.50027" y2="456.52468" stroke="#191919" stroke-linecap="round" stroke-linejoin="round" stroke-width="1" stroke-dasharray="1,4"/><line x1="344.41668" y1="402.88507" x2="375.5" y2="402.77232" stroke="#191919" stroke-linecap="round" stroke-linejoin="round" stroke-width="1" stroke-dasharray="1,4"/></g></g></svg>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xl="http://www.w3.org/1999/xlink" version="1.1" viewBox="91 11 424 533" width="424pt" height="533pt"><metadata xmlns:dc="http://purl.org/dc/elements/1.1/"><dc:date>2016-04-13 08:32Z</dc:date><!-- Produced by OmniGraffle Professional 5.4.4 --></metadata><defs><marker orient="auto" overflow="visible" markerUnits="strokeWidth" id="SharpArrow_Marker" viewBox="-4 -4 10 8" markerWidth="10" markerHeight="8" color="#191919"><g><path d="M 5 0 L -3 -3 L 0 0 L 0 0 L -3 3 Z" fill="currentColor" stroke="currentColor" stroke-width="1"/></g></marker><font-face font-family="Helvetica" font-size="10" units-per-em="1000" underline-position="-75.683594" underline-thickness="49.316406" slope="0" x-height="522.94922" cap-height="717.28516" ascent="770.01953" descent="-229.98047" font-weight="500"><font-face-src><font-face-name name="Helvetica"/></font-face-src></font-face><font-face font-family="Helvetica" font-size="12" units-per-em="1000" underline-position="-75.683594" underline-thickness="49.316406" slope="0" x-height="532.22656" cap-height="719.72656" ascent="770.01953" descent="-229.98047" font-weight="bold"><font-face-src><font-face-name name="Helvetica-Bold"/></font-face-src></font-face><font-face font-family="Helvetica" font-size="10" units-per-em="1000" underline-position="-75.683594" underline-thickness="49.316406" slope="0" x-height="532.22656" cap-height="719.72656" ascent="770.01953" descent="-229.98047" font-weight="bold"><font-face-src><font-face-name name="Helvetica-Bold"/></font-face-src></font-face></defs><g stroke="none" stroke-opacity="1" stroke-dasharray="none" fill="none" fill-opacity="1"><title>Request Processing</title><rect fill="white" width="576" height="733"/><g><title>no exceptions</title><path d="M 155 444.75674 C 155 450.64061 155 486.2592 155 502.71617" marker-end="url(#SharpArrow_Marker)" stroke="#191919" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><path d="M 154.99999 322.33334 C 154.99999 327.72413 155 337.74646 155 346.1775" marker-end="url(#SharpArrow_Marker)" stroke="#191919" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><path d="M 154.99999 245.22768 C 154.99999 250.5417 154.99999 257.93189 154.99999 265.10145" marker-end="url(#SharpArrow_Marker)" stroke="#191919" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><path d="M 154.99995 198.62203 C 154.99995 203.74682 154.99998 209.1909 154.99999 215.28222" marker-end="url(#SharpArrow_Marker)" stroke="#191919" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><rect x="102.16667" y="45.183037" width="105.666664" height="22.544641" fill="#a4cfff"/><rect x="102.16667" y="45.183037" width="105.666664" height="22.544641" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(107.16667 50.455358)" fill="black"><tspan font-family="Helvetica" font-size="10" font-weight="500" x="4.7596016" y="10" textLength="88.92578">middleware ingress </tspan></text><rect x="102.16667" y="96.183037" width="105.666664" height="22.544641" fill="#a4cfff"/><rect x="102.16667" y="96.183037" width="105.666664" height="22.544641" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(107.16667 101.45536)" fill="black"><tspan font-family="Helvetica" font-size="10" font-weight="500" x="16.983723" y="10" textLength="61.69922">tween ingress</tspan></text><rect x="102.16667" y="222.18304" width="105.666664" height="22.544641" fill="#d2ffd0"/><rect x="102.16667" y="222.18304" width="105.666664" height="22.544641" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(107.16667 227.45536)" fill="black"><tspan font-family="Helvetica" font-size="10" font-weight="500" x="28.660969" y="10" textLength="38.344727">traversal</tspan></text><rect x="238.83336" y="247.18304" width="105.666664" height="22.544641" fill="#dfbeff"/><rect x="238.83336" y="247.18304" width="105.666664" height="22.544641" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(243.83336 252.45536)" fill="black"><tspan font-family="Helvetica" font-size="10" font-weight="500" x="16.424641" y="10" textLength="62.817383">ContextFound</tspan></text><rect x="102.16667" y="422.2121" width="105.666664" height="22.544641" fill="#a4cfff"/><rect x="102.16667" y="422.2121" width="105.666664" height="22.544641" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(107.16667 427.48442)" fill="black"><tspan font-family="Helvetica" font-size="10" font-weight="500" x="18.094563" y="10" textLength="59.47754">tween egress</tspan></text><rect x="239" y="445.2359" width="105.666664" height="22.544641" fill="#fed153"/><rect x="239" y="445.2359" width="105.666664" height="22.544641" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(244 450.50821)" fill="black"><tspan font-family="Helvetica" font-size="10" font-weight="500" x="5.3113594" y="10" textLength="85.043945">response callbacks</tspan></text><rect x="239" y="497.2359" width="105.666664" height="22.544641" fill="#fed153"/><rect x="239" y="497.2359" width="105.666664" height="22.544641" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(244 502.5082)" fill="black"><tspan font-family="Helvetica" font-size="10" font-weight="500" x="8.6463203" y="10" textLength="5">fi</tspan><tspan font-family="Helvetica" font-size="10" font-weight="500" x="13.64632" y="10" textLength="73.374023">nished callbacks</tspan></text><rect x="102.16667" y="509.61795" width="105.666664" height="22.544641" fill="#a4cfff"/><rect x="102.16667" y="509.61795" width="105.666664" height="22.544641" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(107.16667 514.89027)" fill="black"><tspan font-family="Helvetica" font-size="10" font-weight="500" x="5.8704414" y="10" textLength="83.92578">middleware egress</tspan></text><path d="M 155 67.72768 C 155 73.048893 155 81.55558 155 89.2853" marker-end="url(#SharpArrow_Marker)" stroke="#191919" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><path d="M 155 119.22768 C 155 124.62026 154.99997 133.48763 154.99996 141.38632" marker-end="url(#SharpArrow_Marker)" stroke="#191919" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><rect x="375.5" y="400.5" width="105.666664" height="22.544642" fill="#dfbeff"/><rect x="375.5" y="400.5" width="105.666664" height="22.544642" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(380.5 405.77232)" fill="black"><tspan font-family="Helvetica" font-size="10" font-weight="500" x="16.702961" y="10" textLength="62.260742">BeforeRender</tspan></text><text transform="translate(233.5 20)" fill="black"><tspan font-family="Helvetica" font-size="12" font-weight="bold" x=".31445312" y="11" textLength="115.371094">Request Processing</tspan></text><path d="M 375.99995 42.910746 L 498.66662 42.910746 C 501.42805 42.910746 503.66662 45.149323 503.66662 47.910746 L 503.66662 222 C 503.66662 224.76142 501.42805 227 498.66662 227 L 375.99995 227 C 373.23853 227 370.99995 224.76142 370.99995 222 L 370.99995 47.910746 C 370.99995 45.149323 373.23853 42.910746 375.99995 42.910746 Z" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(375.99995 42.910746)" fill="black"><tspan font-family="Helvetica" font-size="10" font-weight="bold" x="0" y="10" textLength="35.55664">Legend</tspan></text><rect x="383.66662" y="63.908513" width="105.666664" height="22.544641" fill="#dfbeff"/><rect x="383.66662" y="63.908513" width="105.666664" height="22.544641" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(388.66662 69.180834)" fill="black"><tspan font-family="Helvetica" font-size="10" font-weight="500" x="35.601887" y="10" textLength="24.46289">event</tspan></text><rect x="383.66662" y="186.58226" width="105.666664" height="22.544641" fill="#fed153"/><rect x="383.66662" y="186.58226" width="105.666664" height="22.544641" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(388.66662 191.85458)" fill="black"><tspan font-family="Helvetica" font-size="10" font-weight="500" x="29.769367" y="10" textLength="36.12793">callback</tspan></text><rect x="383.66662" y="158.54998" width="105.666664" height="22.544641" fill="#ffff6c"/><rect x="383.66662" y="158.54998" width="105.666664" height="22.544641" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(388.66662 163.8223)" fill="black"><tspan font-family="Helvetica" font-size="10" font-weight="500" x="21.158527" y="10" textLength="53.34961">view deriver</tspan></text><rect x="383.66662" y="91.94079" width="105.666664" height="33.089283" fill="#a4cfff"/><rect x="383.66662" y="91.94079" width="105.666664" height="33.089283" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(388.66662 96.48543)" fill="black"><tspan font-family="Helvetica" font-size="10" font-weight="500" x="11.148762" y="10" textLength="76.14746">external process </tspan><tspan font-family="Helvetica" font-size="10" font-weight="500" x="2.8162422" y="22" textLength="90.03418">(middleware, tween)</tspan></text><rect x="383.66662" y="130.51771" width="105.666664" height="22.544641" fill="#d2ffd0"/><rect x="383.66662" y="130.51771" width="105.666664" height="22.544641" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(388.66662 135.79003)" fill="black"><tspan font-family="Helvetica" font-size="10" font-weight="500" x="12.537922" y="10" textLength="70.59082">internal process</tspan></text><line x1="154.99999" y1="258.44082" x2="238.83336" y2="258.45536" stroke="#191919" stroke-linecap="round" stroke-linejoin="round" stroke-width="1" stroke-dasharray="1,4"/><rect x="102.16667" y="353.07515" width="105.666664" height="33.089283" fill="#ffff6c"/><rect x="102.16667" y="353.07515" width="105.666664" height="33.089283" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(107.16667 363.61979)" fill="black"><tspan font-family="Helvetica" font-size="10" font-weight="500" x="19.205402" y="10" textLength="57.25586">view pipeline</tspan></text><path d="M 155 386.66443 C 155 392.17252 155 405.5052 155 415.30935" marker-end="url(#SharpArrow_Marker)" stroke="#191919" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><line x1="239.25039" y1="276.57838" x2="207.66667" y2="353.07515" stroke="#c1c1c1" stroke-linecap="round" stroke-linejoin="round" stroke-width="1" stroke-dasharray="1,3"/><line x1="238.75" y1="439.80676" x2="207.66667" y2="385.656" stroke="#c1c1c1" stroke-linecap="round" stroke-linejoin="round" stroke-width="1" stroke-dasharray="1,3"/><rect x="102.16666" y="305.0893" width="105.666664" height="17.244049" fill="#d2ffd0"/><rect x="102.16666" y="305.0893" width="105.666664" height="17.244049" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(107.16666 307.71132)" fill="black"><tspan font-family="Helvetica" font-size="10" font-weight="500" x="24.764484" y="10" textLength="46.137695">predicates</tspan></text><rect x="102.16666" y="272" width="105.666664" height="33.089294" fill="#d2ffd0"/><rect x="102.16666" y="272" width="105.666664" height="33.089294" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(107.16666 282.54465)" fill="black"><tspan font-family="Helvetica" font-size="10" font-weight="500" x="21.707844" y="10" textLength="52.250977">view lookup</tspan></text><rect x="102.166606" y="181.37798" width="105.666695" height="17.244049" fill="#d2ffd0"/><rect x="102.166606" y="181.37798" width="105.666695" height="17.244049" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(107.166606 184)" fill="black"><tspan font-family="Helvetica" font-size="10" font-weight="500" x="11.978855" y="10" textLength="71.708984">route predicates</tspan></text><rect x="102.166606" y="148.28869" width="105.666695" height="33.089294" fill="#d2ffd0"/><rect x="102.166606" y="148.28869" width="105.666695" height="33.089294" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(107.166606 158.83333)" fill="black"><tspan font-family="Helvetica" font-size="10" font-weight="500" x="18.001804" y="10" textLength="20.004883">URL</tspan><tspan font-family="Helvetica" font-size="10" font-weight="500" x="37.640476" y="10" textLength="40.024414"> dispatch</tspan></text><rect x="239.8334" y="117.3192" width="105.666664" height="22.544641" fill="#dfbeff"/><rect x="239.8334" y="117.3192" width="105.666664" height="22.544641" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(244.8334 122.59152)" fill="black"><tspan font-family="Helvetica" font-size="10" font-weight="500" x="19.207844" y="10" textLength="57.250977">NewRequest</tspan></text><line x1="154.99999" y1="128.68025" x2="239.8334" y2="128.59152" stroke="#191919" stroke-linecap="round" stroke-linejoin="round" stroke-width="1" stroke-dasharray="1,4"/><rect x="238.83336" y="471.2262" width="105.666664" height="22.544641" fill="#dfbeff"/><rect x="238.83336" y="471.2262" width="105.666664" height="22.544641" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(243.83336 476.49852)" fill="black"><tspan font-family="Helvetica" font-size="10" font-weight="500" x="15.316242" y="10" textLength="65.03418">NewResponse</tspan></text><line x1="155" y1="470.25295" x2="238.33861" y2="482.42625" stroke="#191919" stroke-linecap="round" stroke-linejoin="round" stroke-width="1" stroke-dasharray="1,4"/><rect x="238.75" y="331.26348" width="105.66669" height="18.656048" fill="#ffffa3"/><rect x="238.75" y="331.26348" width="105.66669" height="18.656048" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(243.75 334.5915)" fill="black"><tspan font-family="Helvetica" font-size="10" font-weight="500" x="1.9812927" y="10" textLength="91.7041">view mapper ingress</tspan></text><rect x="238.75" y="350.36561" width="105.66669" height="33.089283" fill="#ffff6c"/><rect x="238.75" y="350.36561" width="105.66669" height="33.089283" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(243.75 360.91025)" fill="black"><tspan font-family="Helvetica" font-size="10" font-weight="500" x="37.830902" y="10" textLength="20.004883">view</tspan></text><rect x="238.75" y="383.901" width="105.66669" height="18.656048" fill="#ffffa3"/><rect x="238.75" y="383.901" width="105.66669" height="18.656048" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(243.75 387.22901)" fill="black"><tspan font-family="Helvetica" font-size="10" font-weight="500" x="3.0921326" y="10" textLength="89.48242">view mapper egress</tspan></text><rect x="238.75" y="402.55704" width="105.66669" height="18.656048" fill="#ffffa3"/><rect x="238.75" y="402.55704" width="105.66669" height="18.656048" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(243.75 405.88507)" fill="black"><tspan font-family="Helvetica" font-size="10" font-weight="500" x="8.917328" y="10" textLength="77.83203">response adapter</tspan></text><rect x="238.75" y="312.65604" width="105.66669" height="18.656048" fill="#ffffa3"/><rect x="238.75" y="312.65604" width="105.66669" height="18.656048" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(243.75 315.98407)" fill="black"><tspan font-family="Helvetica" font-size="10" font-weight="500" x="6.7029724" y="10" textLength="82.26074">decorators ingress</tspan></text><rect x="238.75" y="421.1507" width="105.66669" height="18.656048" fill="#ffffa3"/><rect x="238.75" y="421.1507" width="105.66669" height="18.656048" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(243.75 424.47873)" fill="black"><tspan font-family="Helvetica" font-size="10" font-weight="500" x="7.8138123" y="10" textLength="80.039062">decorators egress</tspan></text><rect x="238.75" y="276" width="105.75003" height="18.656048" fill="#ffffa3"/><rect x="238.75" y="276" width="105.75003" height="18.656048" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(243.75 279.32802)" fill="black"><tspan font-family="Helvetica" font-size="10" font-weight="500" x="19.244644" y="10" textLength="57.260742">authorization</tspan></text><line x1="155" y1="482.12575" x2="238.52297" y2="508.3584" stroke="#191919" stroke-linecap="round" stroke-linejoin="round" stroke-width="1" stroke-dasharray="1,4"/><line x1="155" y1="459.27668" x2="238.50027" y2="456.52468" stroke="#191919" stroke-linecap="round" stroke-linejoin="round" stroke-width="1" stroke-dasharray="1,4"/><line x1="344.41668" y1="411.88507" x2="375.5" y2="411.77232" stroke="#191919" stroke-linecap="round" stroke-linejoin="round" stroke-width="1" stroke-dasharray="1,4"/><rect x="239.83336" y="197.875" width="105.666664" height="22.544641" fill="#dfbeff"/><rect x="239.83336" y="197.875" width="105.666664" height="22.544641" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(244.83336 203.14732)" fill="black"><tspan font-family="Helvetica" font-size="10" font-weight="500" x="12.44759" y="10" textLength="35.57129">BeforeT</tspan><tspan font-family="Helvetica" font-size="10" font-weight="500" x="47.652668" y="10" textLength="35.566406">raversal</tspan></text><line x1="154.99998" y1="209.11366" x2="239.83336" y2="209.14732" stroke="#191919" stroke-linecap="round" stroke-linejoin="round" stroke-width="1" stroke-dasharray="1,4"/><rect x="238.75" y="294.65604" width="105.66669" height="18.656048" fill="#ffffa3"/><rect x="238.75" y="294.65604" width="105.66669" height="18.656048" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(243.75 297.98407)" fill="black"><tspan font-family="Helvetica" font-size="10" font-weight="500" x="17.27182" y="10" textLength="61.123047">CSRF checks</tspan></text></g></g></svg>