From 324f04b45f7e4ce517dcbb39f2d26083161b9470 Mon Sep 17 00:00:00 2001 From: Michele Simionato Date: Wed, 22 Jul 2015 19:26:44 +0200 Subject: Small fixes to the docs --- documentation.pdf | 885 ++++++++++++++++++++++++++++++++---------------------- 1 file changed, 532 insertions(+), 353 deletions(-) (limited to 'documentation.pdf') diff --git a/documentation.pdf b/documentation.pdf index d6787e7..83305f8 100644 --- a/documentation.pdf +++ b/documentation.pdf @@ -1,7 +1,7 @@ %PDF-1.4 %“Œ‹ž ReportLab Generated PDF document http://www.reportlab.com 1 0 obj -<< /F1 2 0 R /F2 3 0 R /F3 4 0 R /F4 50 0 R /F5 53 0 R /F6 54 0 R >> +<< /F1 2 0 R /F2 3 0 R /F3 4 0 R /F4 50 0 R /F5 54 0 R /F6 55 0 R >> endobj 2 0 obj << /BaseFont /Helvetica /Encoding /WinAnsiEncoding /Name /F1 /Subtype /Type1 /Type /Font >> @@ -19,310 +19,313 @@ endobj << /A << /S /URI /Type /Action /URI (http://pypi.python.org/pypi/decorator/4.0.0) >> /Border [ 0 0 0 ] /Rect [ 153.7323 659.7736 338.2823 671.7736 ] /Subtype /Link /Type /Annot >> endobj 7 0 obj -<< /Border [ 0 0 0 ] /Contents () /Dest [ 51 0 R /XYZ 62.69291 765.0236 0 ] /Rect [ 62.69291 560.0236 121.0229 572.0236 ] /Subtype /Link /Type /Annot >> +<< /Border [ 0 0 0 ] /Contents () /Dest [ 52 0 R /XYZ 62.69291 765.0236 0 ] /Rect [ 62.69291 560.0236 121.0229 572.0236 ] /Subtype /Link /Type /Annot >> endobj 8 0 obj -<< /Border [ 0 0 0 ] /Contents () /Dest [ 51 0 R /XYZ 62.69291 765.0236 0 ] /Rect [ 527.0227 560.7736 532.5827 572.7736 ] /Subtype /Link /Type /Annot >> +<< /Border [ 0 0 0 ] /Contents () /Dest [ 52 0 R /XYZ 62.69291 765.0236 0 ] /Rect [ 527.0227 560.7736 532.5827 572.7736 ] /Subtype /Link /Type /Annot >> endobj 9 0 obj -<< /Border [ 0 0 0 ] /Contents () /Dest [ 51 0 R /XYZ 62.69291 594.0236 0 ] /Rect [ 62.69291 542.0236 117.3029 554.0236 ] /Subtype /Link /Type /Annot >> +<< /Border [ 0 0 0 ] /Contents () /Dest [ 52 0 R /XYZ 62.69291 594.0236 0 ] /Rect [ 62.69291 542.0236 117.3029 554.0236 ] /Subtype /Link /Type /Annot >> endobj 10 0 obj -<< /Border [ 0 0 0 ] /Contents () /Dest [ 51 0 R /XYZ 62.69291 594.0236 0 ] /Rect [ 527.0227 542.7736 532.5827 554.7736 ] /Subtype /Link /Type /Annot >> +<< /Border [ 0 0 0 ] /Contents () /Dest [ 52 0 R /XYZ 62.69291 594.0236 0 ] /Rect [ 527.0227 542.7736 532.5827 554.7736 ] /Subtype /Link /Type /Annot >> endobj 11 0 obj -<< /Border [ 0 0 0 ] /Contents () /Dest [ 51 0 R /XYZ 62.69291 381.0236 0 ] /Rect [ 62.69291 524.0236 182.7229 536.0236 ] /Subtype /Link /Type /Annot >> +<< /Border [ 0 0 0 ] /Contents () /Dest [ 52 0 R /XYZ 62.69291 381.0236 0 ] /Rect [ 62.69291 524.0236 182.7229 536.0236 ] /Subtype /Link /Type /Annot >> endobj 12 0 obj -<< /Border [ 0 0 0 ] /Contents () /Dest [ 51 0 R /XYZ 62.69291 381.0236 0 ] /Rect [ 527.0227 524.7736 532.5827 536.7736 ] /Subtype /Link /Type /Annot >> +<< /Border [ 0 0 0 ] /Contents () /Dest [ 52 0 R /XYZ 62.69291 381.0236 0 ] /Rect [ 527.0227 524.7736 532.5827 536.7736 ] /Subtype /Link /Type /Annot >> endobj 13 0 obj -<< /Border [ 0 0 0 ] /Contents () /Dest [ 56 0 R /XYZ 62.69291 765.0236 0 ] /Rect [ 62.69291 506.0236 114.3629 518.0236 ] /Subtype /Link /Type /Annot >> +<< /Border [ 0 0 0 ] /Contents () /Dest [ 57 0 R /XYZ 62.69291 765.0236 0 ] /Rect [ 62.69291 506.0236 114.3629 518.0236 ] /Subtype /Link /Type /Annot >> endobj 14 0 obj -<< /Border [ 0 0 0 ] /Contents () /Dest [ 56 0 R /XYZ 62.69291 765.0236 0 ] /Rect [ 527.0227 506.7736 532.5827 518.7736 ] /Subtype /Link /Type /Annot >> +<< /Border [ 0 0 0 ] /Contents () /Dest [ 57 0 R /XYZ 62.69291 765.0236 0 ] /Rect [ 527.0227 506.7736 532.5827 518.7736 ] /Subtype /Link /Type /Annot >> endobj 15 0 obj -<< /Border [ 0 0 0 ] /Contents () /Dest [ 56 0 R /XYZ 62.69291 528.0236 0 ] /Rect [ 62.69291 488.0236 183.2629 500.0236 ] /Subtype /Link /Type /Annot >> +<< /Border [ 0 0 0 ] /Contents () /Dest [ 57 0 R /XYZ 62.69291 528.0236 0 ] /Rect [ 62.69291 488.0236 183.2629 500.0236 ] /Subtype /Link /Type /Annot >> endobj 16 0 obj -<< /Border [ 0 0 0 ] /Contents () /Dest [ 56 0 R /XYZ 62.69291 528.0236 0 ] /Rect [ 527.0227 488.7736 532.5827 500.7736 ] /Subtype /Link /Type /Annot >> +<< /Border [ 0 0 0 ] /Contents () /Dest [ 57 0 R /XYZ 62.69291 528.0236 0 ] /Rect [ 527.0227 488.7736 532.5827 500.7736 ] /Subtype /Link /Type /Annot >> endobj 17 0 obj -<< /Border [ 0 0 0 ] /Contents () /Dest [ 57 0 R /XYZ 62.69291 469.4236 0 ] /Rect [ 62.69291 470.0236 122.1429 482.0236 ] /Subtype /Link /Type /Annot >> +<< /Border [ 0 0 0 ] /Contents () /Dest [ 58 0 R /XYZ 62.69291 469.4236 0 ] /Rect [ 62.69291 470.0236 122.1429 482.0236 ] /Subtype /Link /Type /Annot >> endobj 18 0 obj -<< /Border [ 0 0 0 ] /Contents () /Dest [ 57 0 R /XYZ 62.69291 469.4236 0 ] /Rect [ 527.0227 470.7736 532.5827 482.7736 ] /Subtype /Link /Type /Annot >> +<< /Border [ 0 0 0 ] /Contents () /Dest [ 58 0 R /XYZ 62.69291 469.4236 0 ] /Rect [ 527.0227 470.7736 532.5827 482.7736 ] /Subtype /Link /Type /Annot >> endobj 19 0 obj -<< /Border [ 0 0 0 ] /Contents () /Dest [ 58 0 R /XYZ 62.69291 492.6236 0 ] /Rect [ 62.69291 452.0236 69.91291 464.0236 ] /Subtype /Link /Type /Annot >> +<< /Border [ 0 0 0 ] /Contents () /Dest [ 59 0 R /XYZ 62.69291 492.6236 0 ] /Rect [ 62.69291 452.0236 69.91291 464.0236 ] /Subtype /Link /Type /Annot >> endobj 20 0 obj -<< /Border [ 0 0 0 ] /Contents () /Dest [ 58 0 R /XYZ 62.69291 492.6236 0 ] /Rect [ 72.69291 452.0236 102.6929 464.0236 ] /Subtype /Link /Type /Annot >> +<< /Border [ 0 0 0 ] /Contents () /Dest [ 59 0 R /XYZ 62.69291 492.6236 0 ] /Rect [ 72.69291 452.0236 102.6929 464.0236 ] /Subtype /Link /Type /Annot >> endobj 21 0 obj -<< /Border [ 0 0 0 ] /Contents () /Dest [ 58 0 R /XYZ 62.69291 492.6236 0 ] /Rect [ 108.6929 452.0236 154.8129 464.0236 ] /Subtype /Link /Type /Annot >> +<< /Border [ 0 0 0 ] /Contents () /Dest [ 59 0 R /XYZ 62.69291 492.6236 0 ] /Rect [ 108.6929 452.0236 154.8129 464.0236 ] /Subtype /Link /Type /Annot >> endobj 22 0 obj -<< /Border [ 0 0 0 ] /Contents () /Dest [ 58 0 R /XYZ 62.69291 492.6236 0 ] /Rect [ 527.0227 452.7736 532.5827 464.7736 ] /Subtype /Link /Type /Annot >> +<< /Border [ 0 0 0 ] /Contents () /Dest [ 59 0 R /XYZ 62.69291 492.6236 0 ] /Rect [ 527.0227 452.7736 532.5827 464.7736 ] /Subtype /Link /Type /Annot >> endobj 23 0 obj -<< /Border [ 0 0 0 ] /Contents () /Dest [ 60 0 R /XYZ 62.69291 631.8236 0 ] /Rect [ 62.69291 434.0236 164.3629 446.0236 ] /Subtype /Link /Type /Annot >> +<< /Border [ 0 0 0 ] /Contents () /Dest [ 61 0 R /XYZ 62.69291 631.8236 0 ] /Rect [ 62.69291 434.0236 164.3629 446.0236 ] /Subtype /Link /Type /Annot >> endobj 24 0 obj -<< /Border [ 0 0 0 ] /Contents () /Dest [ 60 0 R /XYZ 62.69291 631.8236 0 ] /Rect [ 527.0227 434.7736 532.5827 446.7736 ] /Subtype /Link /Type /Annot >> +<< /Border [ 0 0 0 ] /Contents () /Dest [ 61 0 R /XYZ 62.69291 631.8236 0 ] /Rect [ 527.0227 434.7736 532.5827 446.7736 ] /Subtype /Link /Type /Annot >> endobj 25 0 obj -<< /Border [ 0 0 0 ] /Contents () /Dest [ 61 0 R /XYZ 62.69291 765.0236 0 ] /Rect [ 62.69291 416.0236 176.6929 428.0236 ] /Subtype /Link /Type /Annot >> +<< /Border [ 0 0 0 ] /Contents () /Dest [ 62 0 R /XYZ 62.69291 765.0236 0 ] /Rect [ 62.69291 416.0236 176.6929 428.0236 ] /Subtype /Link /Type /Annot >> endobj 26 0 obj -<< /Border [ 0 0 0 ] /Contents () /Dest [ 61 0 R /XYZ 62.69291 765.0236 0 ] /Rect [ 527.0227 416.7736 532.5827 428.7736 ] /Subtype /Link /Type /Annot >> +<< /Border [ 0 0 0 ] /Contents () /Dest [ 62 0 R /XYZ 62.69291 765.0236 0 ] /Rect [ 527.0227 416.7736 532.5827 428.7736 ] /Subtype /Link /Type /Annot >> endobj 27 0 obj -<< /Border [ 0 0 0 ] /Contents () /Dest [ 61 0 R /XYZ 62.69291 317.2236 0 ] /Rect [ 62.69291 398.0236 110.6929 410.0236 ] /Subtype /Link /Type /Annot >> +<< /Border [ 0 0 0 ] /Contents () /Dest [ 62 0 R /XYZ 62.69291 317.2236 0 ] /Rect [ 62.69291 398.0236 110.6929 410.0236 ] /Subtype /Link /Type /Annot >> endobj 28 0 obj -<< /Border [ 0 0 0 ] /Contents () /Dest [ 61 0 R /XYZ 62.69291 317.2236 0 ] /Rect [ 527.0227 398.7736 532.5827 410.7736 ] /Subtype /Link /Type /Annot >> +<< /Border [ 0 0 0 ] /Contents () /Dest [ 62 0 R /XYZ 62.69291 317.2236 0 ] /Rect [ 527.0227 398.7736 532.5827 410.7736 ] /Subtype /Link /Type /Annot >> endobj 29 0 obj -<< /Border [ 0 0 0 ] /Contents () /Dest [ 62 0 R /XYZ 62.69291 434.6236 0 ] /Rect [ 62.69291 380.0236 146.6929 392.0236 ] /Subtype /Link /Type /Annot >> +<< /Border [ 0 0 0 ] /Contents () /Dest [ 63 0 R /XYZ 62.69291 434.6236 0 ] /Rect [ 62.69291 380.0236 146.6929 392.0236 ] /Subtype /Link /Type /Annot >> endobj 30 0 obj -<< /Border [ 0 0 0 ] /Contents () /Dest [ 62 0 R /XYZ 62.69291 434.6236 0 ] /Rect [ 527.0227 380.7736 532.5827 392.7736 ] /Subtype /Link /Type /Annot >> +<< /Border [ 0 0 0 ] /Contents () /Dest [ 63 0 R /XYZ 62.69291 434.6236 0 ] /Rect [ 527.0227 380.7736 532.5827 392.7736 ] /Subtype /Link /Type /Annot >> endobj 31 0 obj -<< /Border [ 0 0 0 ] /Contents () /Dest [ 63 0 R /XYZ 62.69291 542.6236 0 ] /Rect [ 62.69291 362.0236 139.9329 374.0236 ] /Subtype /Link /Type /Annot >> +<< /Border [ 0 0 0 ] /Contents () /Dest [ 64 0 R /XYZ 62.69291 542.6236 0 ] /Rect [ 62.69291 362.0236 139.9329 374.0236 ] /Subtype /Link /Type /Annot >> endobj 32 0 obj -<< /Border [ 0 0 0 ] /Contents () /Dest [ 63 0 R /XYZ 62.69291 542.6236 0 ] /Rect [ 527.0227 362.7736 532.5827 374.7736 ] /Subtype /Link /Type /Annot >> +<< /Border [ 0 0 0 ] /Contents () /Dest [ 64 0 R /XYZ 62.69291 542.6236 0 ] /Rect [ 527.0227 362.7736 532.5827 374.7736 ] /Subtype /Link /Type /Annot >> endobj 33 0 obj -<< /Border [ 0 0 0 ] /Contents () /Dest [ 64 0 R /XYZ 62.69291 669.0236 0 ] /Rect [ 62.69291 344.0236 80.47291 356.0236 ] /Subtype /Link /Type /Annot >> +<< /Border [ 0 0 0 ] /Contents () /Dest [ 65 0 R /XYZ 62.69291 669.0236 0 ] /Rect [ 62.69291 344.0236 80.47291 356.0236 ] /Subtype /Link /Type /Annot >> endobj 34 0 obj -<< /Border [ 0 0 0 ] /Contents () /Dest [ 64 0 R /XYZ 62.69291 669.0236 0 ] /Rect [ 83.25291 344.0236 161.2529 356.0236 ] /Subtype /Link /Type /Annot >> +<< /Border [ 0 0 0 ] /Contents () /Dest [ 65 0 R /XYZ 62.69291 669.0236 0 ] /Rect [ 83.25291 344.0236 161.2529 356.0236 ] /Subtype /Link /Type /Annot >> endobj 35 0 obj -<< /Border [ 0 0 0 ] /Contents () /Dest [ 64 0 R /XYZ 62.69291 669.0236 0 ] /Rect [ 167.2529 344.0236 192.2729 356.0236 ] /Subtype /Link /Type /Annot >> +<< /Border [ 0 0 0 ] /Contents () /Dest [ 65 0 R /XYZ 62.69291 669.0236 0 ] /Rect [ 167.2529 344.0236 192.2729 356.0236 ] /Subtype /Link /Type /Annot >> endobj 36 0 obj -<< /Border [ 0 0 0 ] /Contents () /Dest [ 64 0 R /XYZ 62.69291 669.0236 0 ] /Rect [ 521.4627 344.7736 532.5827 356.7736 ] /Subtype /Link /Type /Annot >> +<< /Border [ 0 0 0 ] /Contents () /Dest [ 65 0 R /XYZ 62.69291 669.0236 0 ] /Rect [ 521.4627 344.7736 532.5827 356.7736 ] /Subtype /Link /Type /Annot >> endobj 37 0 obj -<< /Border [ 0 0 0 ] /Contents () /Dest [ 66 0 R /XYZ 62.69291 647.8236 0 ] /Rect [ 62.69291 326.0236 177.1629 338.0236 ] /Subtype /Link /Type /Annot >> +<< /Border [ 0 0 0 ] /Contents () /Dest [ 67 0 R /XYZ 62.69291 647.8236 0 ] /Rect [ 62.69291 326.0236 177.1629 338.0236 ] /Subtype /Link /Type /Annot >> endobj 38 0 obj -<< /Border [ 0 0 0 ] /Contents () /Dest [ 66 0 R /XYZ 62.69291 647.8236 0 ] /Rect [ 521.4627 326.7736 532.5827 338.7736 ] /Subtype /Link /Type /Annot >> +<< /Border [ 0 0 0 ] /Contents () /Dest [ 67 0 R /XYZ 62.69291 647.8236 0 ] /Rect [ 521.4627 326.7736 532.5827 338.7736 ] /Subtype /Link /Type /Annot >> endobj 39 0 obj -<< /Border [ 0 0 0 ] /Contents () /Dest [ 66 0 R /XYZ 62.69291 180.0236 0 ] /Rect [ 62.69291 308.0236 228.2829 320.0236 ] /Subtype /Link /Type /Annot >> +<< /Border [ 0 0 0 ] /Contents () /Dest [ 67 0 R /XYZ 62.69291 180.0236 0 ] /Rect [ 62.69291 308.0236 228.2829 320.0236 ] /Subtype /Link /Type /Annot >> endobj 40 0 obj -<< /Border [ 0 0 0 ] /Contents () /Dest [ 66 0 R /XYZ 62.69291 180.0236 0 ] /Rect [ 521.4627 308.7736 532.5827 320.7736 ] /Subtype /Link /Type /Annot >> +<< /Border [ 0 0 0 ] /Contents () /Dest [ 67 0 R /XYZ 62.69291 180.0236 0 ] /Rect [ 521.4627 308.7736 532.5827 320.7736 ] /Subtype /Link /Type /Annot >> endobj 41 0 obj -<< /Border [ 0 0 0 ] /Contents () /Dest [ 69 0 R /XYZ 62.69291 445.4236 0 ] /Rect [ 62.69291 290.0236 144.3729 302.0236 ] /Subtype /Link /Type /Annot >> +<< /Border [ 0 0 0 ] /Contents () /Dest [ 70 0 R /XYZ 62.69291 445.4236 0 ] /Rect [ 62.69291 290.0236 144.3729 302.0236 ] /Subtype /Link /Type /Annot >> endobj 42 0 obj -<< /Border [ 0 0 0 ] /Contents () /Dest [ 69 0 R /XYZ 62.69291 445.4236 0 ] /Rect [ 521.4627 290.7736 532.5827 302.7736 ] /Subtype /Link /Type /Annot >> +<< /Border [ 0 0 0 ] /Contents () /Dest [ 70 0 R /XYZ 62.69291 445.4236 0 ] /Rect [ 521.4627 290.7736 532.5827 302.7736 ] /Subtype /Link /Type /Annot >> endobj 43 0 obj -<< /Border [ 0 0 0 ] /Contents () /Dest [ 71 0 R /XYZ 62.69291 503.8236 0 ] /Rect [ 62.69291 272.0236 251.0829 284.0236 ] /Subtype /Link /Type /Annot >> +<< /Border [ 0 0 0 ] /Contents () /Dest [ 72 0 R /XYZ 62.69291 503.8236 0 ] /Rect [ 62.69291 272.0236 251.0829 284.0236 ] /Subtype /Link /Type /Annot >> endobj 44 0 obj -<< /Border [ 0 0 0 ] /Contents () /Dest [ 71 0 R /XYZ 62.69291 503.8236 0 ] /Rect [ 521.4627 272.7736 532.5827 284.7736 ] /Subtype /Link /Type /Annot >> +<< /Border [ 0 0 0 ] /Contents () /Dest [ 72 0 R /XYZ 62.69291 503.8236 0 ] /Rect [ 521.4627 272.7736 532.5827 284.7736 ] /Subtype /Link /Type /Annot >> endobj 45 0 obj -<< /Border [ 0 0 0 ] /Contents () /Dest [ 73 0 R /XYZ 62.69291 675.0236 0 ] /Rect [ 62.69291 254.0236 174.3929 266.0236 ] /Subtype /Link /Type /Annot >> +<< /Border [ 0 0 0 ] /Contents () /Dest [ 74 0 R /XYZ 62.69291 448.6236 0 ] /Rect [ 62.69291 254.0236 174.3929 266.0236 ] /Subtype /Link /Type /Annot >> endobj 46 0 obj -<< /Border [ 0 0 0 ] /Contents () /Dest [ 73 0 R /XYZ 62.69291 675.0236 0 ] /Rect [ 521.4627 254.7736 532.5827 266.7736 ] /Subtype /Link /Type /Annot >> +<< /Border [ 0 0 0 ] /Contents () /Dest [ 74 0 R /XYZ 62.69291 448.6236 0 ] /Rect [ 521.4627 254.7736 532.5827 266.7736 ] /Subtype /Link /Type /Annot >> endobj 47 0 obj -<< /Border [ 0 0 0 ] /Contents () /Dest [ 76 0 R /XYZ 62.69291 765.0236 0 ] /Rect [ 62.69291 236.0236 106.0329 248.0236 ] /Subtype /Link /Type /Annot >> +<< /Border [ 0 0 0 ] /Contents () /Dest [ 77 0 R /XYZ 62.69291 575.8236 0 ] /Rect [ 62.69291 236.0236 106.0329 248.0236 ] /Subtype /Link /Type /Annot >> endobj 48 0 obj -<< /Border [ 0 0 0 ] /Contents () /Dest [ 76 0 R /XYZ 62.69291 765.0236 0 ] /Rect [ 521.4627 236.7736 532.5827 248.7736 ] /Subtype /Link /Type /Annot >> +<< /Border [ 0 0 0 ] /Contents () /Dest [ 77 0 R /XYZ 62.69291 575.8236 0 ] /Rect [ 521.4627 236.7736 532.5827 248.7736 ] /Subtype /Link /Type /Annot >> endobj 49 0 obj << /Annots [ 5 0 R 6 0 R 7 0 R 8 0 R 9 0 R 10 0 R 11 0 R 12 0 R 13 0 R 14 0 R 15 0 R 16 0 R 17 0 R 18 0 R 19 0 R 20 0 R 21 0 R 22 0 R 23 0 R 24 0 R 25 0 R 26 0 R 27 0 R 28 0 R 29 0 R 30 0 R 31 0 R 32 0 R 33 0 R 34 0 R 35 0 R 36 0 R 37 0 R 38 0 R 39 0 R 40 0 R 41 0 R 42 0 R 43 0 R 44 0 R - 45 0 R 46 0 R 47 0 R 48 0 R ] /Contents 100 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 99 0 R /Resources << /Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] >> /Rotate 0 + 45 0 R 46 0 R 47 0 R 48 0 R ] /Contents 101 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 100 0 R /Resources << /Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] >> /Rotate 0 /Trans << >> /Type /Page >> endobj 50 0 obj << /BaseFont /Helvetica-Oblique /Encoding /WinAnsiEncoding /Name /F4 /Subtype /Type1 /Type /Font >> endobj 51 0 obj -<< /Contents 101 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 99 0 R /Resources << /Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] >> /Rotate 0 /Trans << >> - /Type /Page >> +<< /A << /S /URI /Type /Action /URI (http://pythonwheels.com/) >> /Border [ 0 0 0 ] /Rect [ 397.6066 642.0236 425.9338 654.0236 ] /Subtype /Link /Type /Annot >> endobj 52 0 obj -<< /A << /S /URI /Type /Action /URI (http://www.python.org/moin/PythonDecoratorLibrary) >> /Border [ 0 0 0 ] /Rect [ 219.6428 453.0236 449.1728 465.0236 ] /Subtype /Link /Type /Annot >> +<< /Annots [ 51 0 R ] /Contents 102 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 100 0 R /Resources << /Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] >> /Rotate 0 + /Trans << >> /Type /Page >> endobj 53 0 obj -<< /BaseFont /Courier-Bold /Encoding /WinAnsiEncoding /Name /F5 /Subtype /Type1 /Type /Font >> +<< /A << /S /URI /Type /Action /URI (http://www.python.org/moin/PythonDecoratorLibrary) >> /Border [ 0 0 0 ] /Rect [ 219.6428 453.0236 449.1728 465.0236 ] /Subtype /Link /Type /Annot >> endobj 54 0 obj -<< /BaseFont /Courier-Oblique /Encoding /WinAnsiEncoding /Name /F6 /Subtype /Type1 /Type /Font >> +<< /BaseFont /Courier-Bold /Encoding /WinAnsiEncoding /Name /F5 /Subtype /Type1 /Type /Font >> endobj 55 0 obj -<< /A << /S /URI /Type /Action /URI (https://docs.python.org/3/library/functools.html#functools.update_wrapper) >> /Border [ 0 0 0 ] /Rect [ 151.0486 243.8236 267.91 255.8236 ] /Subtype /Link /Type /Annot >> +<< /BaseFont /Courier-Oblique /Encoding /WinAnsiEncoding /Name /F6 /Subtype /Type1 /Type /Font >> endobj 56 0 obj -<< /Annots [ 52 0 R 55 0 R ] /Contents 102 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 99 0 R /Resources << /Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] >> /Rotate 0 - /Trans << >> /Type /Page >> +<< /A << /S /URI /Type /Action /URI (https://docs.python.org/3/library/functools.html#functools.update_wrapper) >> /Border [ 0 0 0 ] /Rect [ 151.0486 243.8236 267.91 255.8236 ] /Subtype /Link /Type /Annot >> endobj 57 0 obj -<< /Contents 103 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 99 0 R /Resources << /Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] >> /Rotate 0 /Trans << >> - /Type /Page >> +<< /Annots [ 53 0 R 56 0 R ] /Contents 103 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 100 0 R /Resources << /Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] >> /Rotate 0 + /Trans << >> /Type /Page >> endobj 58 0 obj -<< /Contents 104 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 99 0 R /Resources << /Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] >> /Rotate 0 /Trans << >> +<< /Contents 104 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 100 0 R /Resources << /Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] >> /Rotate 0 /Trans << >> /Type /Page >> endobj 59 0 obj -<< /A << /S /URI /Type /Action /URI (http://www.python.org/dev/peps/pep-3107/) >> /Border [ 0 0 0 ] /Rect [ 231.6368 592.8236 323.0741 604.8236 ] /Subtype /Link /Type /Annot >> +<< /Contents 105 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 100 0 R /Resources << /Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] >> /Rotate 0 /Trans << >> + /Type /Page >> endobj 60 0 obj -<< /Annots [ 59 0 R ] /Contents 105 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 99 0 R /Resources << /Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] >> /Rotate 0 - /Trans << >> /Type /Page >> +<< /A << /S /URI /Type /Action /URI (http://www.python.org/dev/peps/pep-3107/) >> /Border [ 0 0 0 ] /Rect [ 231.6368 592.8236 323.0741 604.8236 ] /Subtype /Link /Type /Annot >> endobj 61 0 obj -<< /Contents 106 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 99 0 R /Resources << /Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] >> /Rotate 0 /Trans << >> - /Type /Page >> +<< /Annots [ 60 0 R ] /Contents 106 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 100 0 R /Resources << /Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] >> /Rotate 0 + /Trans << >> /Type /Page >> endobj 62 0 obj -<< /Contents 107 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 99 0 R /Resources << /Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] >> /Rotate 0 /Trans << >> +<< /Contents 107 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 100 0 R /Resources << /Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] >> /Rotate 0 /Trans << >> /Type /Page >> endobj 63 0 obj -<< /Contents 108 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 99 0 R /Resources << /Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] >> /Rotate 0 /Trans << >> +<< /Contents 108 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 100 0 R /Resources << /Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] >> /Rotate 0 /Trans << >> /Type /Page >> endobj 64 0 obj -<< /Contents 109 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 99 0 R /Resources << /Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] >> /Rotate 0 /Trans << >> +<< /Contents 109 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 100 0 R /Resources << /Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] >> /Rotate 0 /Trans << >> /Type /Page >> endobj 65 0 obj -<< /A << /S /URI /Type /Action /URI (http://bugs.python.org/issue1764286) >> /Border [ 0 0 0 ] /Rect [ 133.3162 345.2236 172.2473 357.2236 ] /Subtype /Link /Type /Annot >> +<< /Contents 110 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 100 0 R /Resources << /Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] >> /Rotate 0 /Trans << >> + /Type /Page >> endobj 66 0 obj -<< /Annots [ 65 0 R ] /Contents 110 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 99 0 R /Resources << /Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] >> /Rotate 0 - /Trans << >> /Type /Page >> +<< /A << /S /URI /Type /Action /URI (http://bugs.python.org/issue1764286) >> /Border [ 0 0 0 ] /Rect [ 133.3162 345.2236 172.2473 357.2236 ] /Subtype /Link /Type /Annot >> endobj 67 0 obj -<< /A << /S /URI /Type /Action /URI (http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/496691) >> /Border [ 0 0 0 ] /Rect [ 62.69291 515.8236 363.4029 527.8236 ] /Subtype /Link /Type /Annot >> +<< /Annots [ 66 0 R ] /Contents 111 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 100 0 R /Resources << /Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] >> /Rotate 0 + /Trans << >> /Type /Page >> endobj 68 0 obj -<< /Annots [ 67 0 R ] /Contents 111 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 99 0 R /Resources << /Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] >> /Rotate 0 - /Trans << >> /Type /Page >> +<< /A << /S /URI /Type /Action /URI (http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/496691) >> /Border [ 0 0 0 ] /Rect [ 62.69291 515.8236 363.4029 527.8236 ] /Subtype /Link /Type /Annot >> endobj 69 0 obj -<< /Contents 112 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 99 0 R /Resources << /Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] >> /Rotate 0 /Trans << >> - /Type /Page >> +<< /Annots [ 68 0 R ] /Contents 112 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 100 0 R /Resources << /Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] >> /Rotate 0 + /Trans << >> /Type /Page >> endobj 70 0 obj -<< /Contents 113 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 99 0 R /Resources << /Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] >> /Rotate 0 /Trans << >> +<< /Contents 113 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 100 0 R /Resources << /Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] >> /Rotate 0 /Trans << >> /Type /Page >> endobj 71 0 obj -<< /Contents 114 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 99 0 R /Resources << /Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] >> /Rotate 0 /Trans << >> +<< /Contents 114 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 100 0 R /Resources << /Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] >> /Rotate 0 /Trans << >> /Type /Page >> endobj 72 0 obj -<< /Contents 115 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 99 0 R /Resources << /Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] >> /Rotate 0 /Trans << >> +<< /Contents 115 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 100 0 R /Resources << /Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] >> /Rotate 0 /Trans << >> /Type /Page >> endobj 73 0 obj -<< /Contents 116 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 99 0 R /Resources << /Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] >> /Rotate 0 /Trans << >> +<< /Contents 116 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 100 0 R /Resources << /Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] >> /Rotate 0 /Trans << >> /Type /Page >> endobj 74 0 obj -<< /A << /S /URI /Type /Action /URI (http://www.python.org/dev/peps/pep-0362) >> /Border [ 0 0 0 ] /Rect [ 301.1597 593.8236 317.8397 605.8236 ] /Subtype /Link /Type /Annot >> +<< /Contents 117 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 100 0 R /Resources << /Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] >> /Rotate 0 /Trans << >> + /Type /Page >> endobj 75 0 obj -<< /Annots [ 74 0 R ] /Contents 117 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 99 0 R /Resources << /Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] >> /Rotate 0 - /Trans << >> /Type /Page >> +<< /A << /S /URI /Type /Action /URI (http://www.python.org/dev/peps/pep-0362) >> /Border [ 0 0 0 ] /Rect [ 301.1597 370.6236 317.8397 382.6236 ] /Subtype /Link /Type /Annot >> endobj 76 0 obj -<< /Contents 118 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 99 0 R /Resources << /Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] >> /Rotate 0 /Trans << >> - /Type /Page >> +<< /Annots [ 75 0 R ] /Contents 118 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 100 0 R /Resources << /Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] >> /Rotate 0 + /Trans << >> /Type /Page >> endobj 77 0 obj -<< /Outlines 79 0 R /PageLabels 119 0 R /PageMode /UseNone /Pages 99 0 R /Type /Catalog >> +<< /Contents 119 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 100 0 R /Resources << /Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] >> /Rotate 0 /Trans << >> + /Type /Page >> endobj 78 0 obj -<< /Author (Michele Simionato) /CreationDate (D:20150722135458-01'00') /Creator (\(unspecified\)) /Keywords () /Producer (ReportLab PDF Library - www.reportlab.com) /Subject (\(unspecified\)) - /Title (The decorator module) >> +<< /Outlines 80 0 R /PageLabels 120 0 R /PageMode /UseNone /Pages 100 0 R /Type /Catalog >> endobj 79 0 obj -<< /Count 19 /First 80 0 R /Last 98 0 R /Type /Outlines >> +<< /Author (Michele Simionato) /CreationDate (D:20150722163825-01'00') /Creator (\(unspecified\)) /Keywords () /Producer (ReportLab PDF Library - www.reportlab.com) /Subject (\(unspecified\)) + /Title (The decorator module) >> endobj 80 0 obj -<< /Dest [ 51 0 R /XYZ 62.69291 765.0236 0 ] /Next 81 0 R /Parent 79 0 R /Title (Introduction) >> +<< /Count 19 /First 81 0 R /Last 99 0 R /Type /Outlines >> endobj 81 0 obj -<< /Dest [ 51 0 R /XYZ 62.69291 594.0236 0 ] /Next 82 0 R /Parent 79 0 R /Prev 80 0 R /Title (What's new) >> +<< /Dest [ 52 0 R /XYZ 62.69291 765.0236 0 ] /Next 82 0 R /Parent 80 0 R /Title (Introduction) >> endobj 82 0 obj -<< /Dest [ 51 0 R /XYZ 62.69291 381.0236 0 ] /Next 83 0 R /Parent 79 0 R /Prev 81 0 R /Title (Usefulness of decorators) >> +<< /Dest [ 52 0 R /XYZ 62.69291 594.0236 0 ] /Next 83 0 R /Parent 80 0 R /Prev 81 0 R /Title (What's new) >> endobj 83 0 obj -<< /Dest [ 56 0 R /XYZ 62.69291 765.0236 0 ] /Next 84 0 R /Parent 79 0 R /Prev 82 0 R /Title (Definitions) >> +<< /Dest [ 52 0 R /XYZ 62.69291 381.0236 0 ] /Next 84 0 R /Parent 80 0 R /Prev 82 0 R /Title (Usefulness of decorators) >> endobj 84 0 obj -<< /Dest [ 56 0 R /XYZ 62.69291 528.0236 0 ] /Next 85 0 R /Parent 79 0 R /Prev 83 0 R /Title (Statement of the problem) >> +<< /Dest [ 57 0 R /XYZ 62.69291 765.0236 0 ] /Next 85 0 R /Parent 80 0 R /Prev 83 0 R /Title (Definitions) >> endobj 85 0 obj -<< /Dest [ 57 0 R /XYZ 62.69291 469.4236 0 ] /Next 86 0 R /Parent 79 0 R /Prev 84 0 R /Title (The solution) >> +<< /Dest [ 57 0 R /XYZ 62.69291 528.0236 0 ] /Next 86 0 R /Parent 80 0 R /Prev 84 0 R /Title (Statement of the problem) >> endobj 86 0 obj -<< /Dest [ 58 0 R /XYZ 62.69291 492.6236 0 ] /Next 87 0 R /Parent 79 0 R /Prev 85 0 R /Title (A trace decorator) >> +<< /Dest [ 58 0 R /XYZ 62.69291 469.4236 0 ] /Next 87 0 R /Parent 80 0 R /Prev 85 0 R /Title (The solution) >> endobj 87 0 obj -<< /Dest [ 60 0 R /XYZ 62.69291 631.8236 0 ] /Next 88 0 R /Parent 79 0 R /Prev 86 0 R /Title (Function annotations) >> +<< /Dest [ 59 0 R /XYZ 62.69291 492.6236 0 ] /Next 88 0 R /Parent 80 0 R /Prev 86 0 R /Title (A trace decorator) >> endobj 88 0 obj -<< /Dest [ 61 0 R /XYZ 62.69291 765.0236 0 ] /Next 89 0 R /Parent 79 0 R /Prev 87 0 R /Title (decorator.decorator) >> +<< /Dest [ 61 0 R /XYZ 62.69291 631.8236 0 ] /Next 89 0 R /Parent 80 0 R /Prev 87 0 R /Title (Function annotations) >> endobj 89 0 obj -<< /Dest [ 61 0 R /XYZ 62.69291 317.2236 0 ] /Next 90 0 R /Parent 79 0 R /Prev 88 0 R /Title (blocking) >> +<< /Dest [ 62 0 R /XYZ 62.69291 765.0236 0 ] /Next 90 0 R /Parent 80 0 R /Prev 88 0 R /Title (decorator.decorator) >> endobj 90 0 obj -<< /Dest [ 62 0 R /XYZ 62.69291 434.6236 0 ] /Next 91 0 R /Parent 79 0 R /Prev 89 0 R /Title (decorator\(cls\)) >> +<< /Dest [ 62 0 R /XYZ 62.69291 317.2236 0 ] /Next 91 0 R /Parent 80 0 R /Prev 89 0 R /Title (blocking) >> endobj 91 0 obj -<< /Dest [ 63 0 R /XYZ 62.69291 542.6236 0 ] /Next 92 0 R /Parent 79 0 R /Prev 90 0 R /Title (contextmanager) >> +<< /Dest [ 63 0 R /XYZ 62.69291 434.6236 0 ] /Next 92 0 R /Parent 80 0 R /Prev 90 0 R /Title (decorator\(cls\)) >> endobj 92 0 obj -<< /Dest [ 64 0 R /XYZ 62.69291 669.0236 0 ] /Next 93 0 R /Parent 79 0 R /Prev 91 0 R /Title (The FunctionMaker class) >> +<< /Dest [ 64 0 R /XYZ 62.69291 542.6236 0 ] /Next 93 0 R /Parent 80 0 R /Prev 91 0 R /Title (contextmanager) >> endobj 93 0 obj -<< /Dest [ 66 0 R /XYZ 62.69291 647.8236 0 ] /Next 94 0 R /Parent 79 0 R /Prev 92 0 R /Title (Getting the source code) >> +<< /Dest [ 65 0 R /XYZ 62.69291 669.0236 0 ] /Next 94 0 R /Parent 80 0 R /Prev 92 0 R /Title (The FunctionMaker class) >> endobj 94 0 obj -<< /Dest [ 66 0 R /XYZ 62.69291 180.0236 0 ] /Next 95 0 R /Parent 79 0 R /Prev 93 0 R /Title (Dealing with third party decorators) >> +<< /Dest [ 67 0 R /XYZ 62.69291 647.8236 0 ] /Next 95 0 R /Parent 80 0 R /Prev 93 0 R /Title (Getting the source code) >> endobj 95 0 obj -<< /Dest [ 69 0 R /XYZ 62.69291 445.4236 0 ] /Next 96 0 R /Parent 79 0 R /Prev 94 0 R /Title (Multiple dispatch) >> +<< /Dest [ 67 0 R /XYZ 62.69291 180.0236 0 ] /Next 96 0 R /Parent 80 0 R /Prev 94 0 R /Title (Dealing with third party decorators) >> endobj 96 0 obj -<< /Dest [ 71 0 R /XYZ 62.69291 503.8236 0 ] /Next 97 0 R /Parent 79 0 R /Prev 95 0 R /Title (Generic functions and virtual ancestors) >> +<< /Dest [ 70 0 R /XYZ 62.69291 445.4236 0 ] /Next 97 0 R /Parent 80 0 R /Prev 95 0 R /Title (Multiple dispatch) >> endobj 97 0 obj -<< /Dest [ 73 0 R /XYZ 62.69291 675.0236 0 ] /Next 98 0 R /Parent 79 0 R /Prev 96 0 R /Title (Caveats and limitations) >> +<< /Dest [ 72 0 R /XYZ 62.69291 503.8236 0 ] /Next 98 0 R /Parent 80 0 R /Prev 96 0 R /Title (Generic functions and virtual ancestors) >> endobj 98 0 obj -<< /Dest [ 76 0 R /XYZ 62.69291 765.0236 0 ] /Parent 79 0 R /Prev 97 0 R /Title (LICENSE) >> +<< /Dest [ 74 0 R /XYZ 62.69291 448.6236 0 ] /Next 99 0 R /Parent 80 0 R /Prev 97 0 R /Title (Caveats and limitations) >> endobj 99 0 obj -<< /Count 19 /Kids [ 49 0 R 51 0 R 56 0 R 57 0 R 58 0 R 60 0 R 61 0 R 62 0 R 63 0 R 64 0 R - 66 0 R 68 0 R 69 0 R 70 0 R 71 0 R 72 0 R 73 0 R 75 0 R 76 0 R ] /Type /Pages >> +<< /Dest [ 77 0 R /XYZ 62.69291 575.8236 0 ] /Parent 80 0 R /Prev 98 0 R /Title (LICENSE) >> endobj 100 0 obj +<< /Count 19 /Kids [ 49 0 R 52 0 R 57 0 R 58 0 R 59 0 R 61 0 R 62 0 R 63 0 R 64 0 R 65 0 R + 67 0 R 69 0 R 70 0 R 71 0 R 72 0 R 73 0 R 74 0 R 76 0 R 77 0 R ] /Type /Pages >> +endobj +101 0 obj << /Length 7563 >> stream 1 0 0 1 0 0 cm BT /F1 12 Tf 14.4 TL ET @@ -760,8 +763,8 @@ Q endstream endobj -101 0 obj -<< /Length 7414 >> +102 0 obj +<< /Length 7450 >> stream 1 0 0 1 0 0 cm BT /F1 12 Tf 14.4 TL ET q @@ -773,7 +776,7 @@ Q q 1 0 0 1 62.69291 606.0236 cm q -BT 1 0 0 1 0 122 Tm 1.033876 Tw 12 TL /F1 10 Tf 0 0 0 rg (The decorator module is over ten years old, but still alive and kicking. It is used by several frameworks) Tj T* 0 Tw 1.737356 Tw (\(IPython, scipy, pyramid,...\) and has been stable for a ) Tj /F4 10 Tf (long ) Tj /F1 10 Tf (time. It is your best option if you want to) Tj T* 0 Tw .607984 Tw (preserve the signature of decorated functions in a consistent way across Python releases. Version 4.0 is) Tj T* 0 Tw 1.318221 Tw (fully compatible with the past, except for one thing: support for Python 2.4 and 2.5 has been dropped.) Tj T* 0 Tw .843488 Tw (That decision made it possible to use a single code base both for Python 2.X and Python 3.X. This is a) Tj T* 0 Tw 2.409982 Tw /F4 10 Tf (huge ) Tj /F1 10 Tf (bonus, since I could remove over 2,000 lines of duplicated documentation/doctests. Having to) Tj T* 0 Tw .18561 Tw (maintain separate docs for Python 2 and Python 3 effectively stopped any development on the module for) Tj T* 0 Tw 2.207209 Tw (several years. Moreover, it is now trivial to distribute the module as a wheel since 2to3 is no more) Tj T* 0 Tw .038935 Tw (required. Since Python 2.5 has been released 9 years ago, I felt that it was reasonable to drop the support) Tj T* 0 Tw .012209 Tw (for it. If you need to support ancient versions of Python, stick with the decorator module version 3.4.2. This) Tj T* 0 Tw (version supports all Python releases from 2.6 up to 3.5, which currently is still in beta status.) Tj T* ET +BT 1 0 0 1 0 122 Tm 1.033876 Tw 12 TL /F1 10 Tf 0 0 0 rg (The decorator module is over ten years old, but still alive and kicking. It is used by several frameworks) Tj T* 0 Tw 1.737356 Tw (\(IPython, scipy, pyramid,...\) and has been stable for a ) Tj /F4 10 Tf (long ) Tj /F1 10 Tf (time. It is your best option if you want to) Tj T* 0 Tw .607984 Tw (preserve the signature of decorated functions in a consistent way across Python releases. Version 4.0 is) Tj T* 0 Tw 1.318221 Tw (fully compatible with the past, except for one thing: support for Python 2.4 and 2.5 has been dropped.) Tj T* 0 Tw .843488 Tw (That decision made it possible to use a single code base both for Python 2.X and Python 3.X. This is a) Tj T* 0 Tw 2.409982 Tw /F4 10 Tf (huge ) Tj /F1 10 Tf (bonus, since I could remove over 2,000 lines of duplicated documentation/doctests. Having to) Tj T* 0 Tw .18561 Tw (maintain separate docs for Python 2 and Python 3 effectively stopped any development on the module for) Tj T* 0 Tw 2.207209 Tw (several years. Moreover, it is now trivial to distribute the module as a ) Tj 0 0 .501961 rg (wheel ) Tj 0 0 0 rg (since 2to3 is no more) Tj T* 0 Tw .038935 Tw (required. Since Python 2.5 has been released 9 years ago, I felt that it was reasonable to drop the support) Tj T* 0 Tw .012209 Tw (for it. If you need to support ancient versions of Python, stick with the decorator module version 3.4.2. This) Tj T* 0 Tw (version supports all Python releases from 2.6 up to 3.5, which currently is still in beta status.) Tj T* ET Q Q q @@ -931,7 +934,7 @@ Q endstream endobj -102 0 obj +103 0 obj << /Length 12505 >> stream 1 0 0 1 0 0 cm BT /F1 12 Tf 14.4 TL ET @@ -1262,7 +1265,7 @@ Q endstream endobj -103 0 obj +104 0 obj << /Length 16560 >> stream 1 0 0 1 0 0 cm BT /F1 12 Tf 14.4 TL ET @@ -1742,7 +1745,7 @@ Q endstream endobj -104 0 obj +105 0 obj << /Length 18522 >> stream 1 0 0 1 0 0 cm BT /F1 12 Tf 14.4 TL ET @@ -2335,7 +2338,7 @@ Q endstream endobj -105 0 obj +106 0 obj << /Length 17634 >> stream 1 0 0 1 0 0 cm BT /F1 12 Tf 14.4 TL ET @@ -2846,7 +2849,7 @@ Q endstream endobj -106 0 obj +107 0 obj << /Length 20355 >> stream 1 0 0 1 0 0 cm BT /F1 12 Tf 14.4 TL ET @@ -3412,7 +3415,7 @@ Q endstream endobj -107 0 obj +108 0 obj << /Length 18696 >> stream 1 0 0 1 0 0 cm BT /F1 12 Tf 14.4 TL ET @@ -3915,7 +3918,7 @@ Q endstream endobj -108 0 obj +109 0 obj << /Length 14651 >> stream 1 0 0 1 0 0 cm BT /F1 12 Tf 14.4 TL ET @@ -4338,7 +4341,7 @@ Q endstream endobj -109 0 obj +110 0 obj << /Length 14222 >> stream 1 0 0 1 0 0 cm BT /F1 12 Tf 14.4 TL ET @@ -4639,15 +4642,14 @@ Q endstream endobj -110 0 obj -<< /Length 18338 >> +111 0 obj +<< /Length 18456 >> stream 1 0 0 1 0 0 cm BT /F1 12 Tf 14.4 TL ET q 1 0 0 1 62.69291 741.0236 cm q -0 0 0 rg -BT 1 0 0 1 0 14 Tm /F1 10 Tf 12 TL .795697 Tw (Notice: you should not pass signature strings with default arguments, i.e. something like 'f1\(a, b=None\)'.) Tj T* 0 Tw (Just pass 'f1\(a, b\)' and then a tuple of defaults:) Tj T* ET +BT 1 0 0 1 0 14 Tm 6.828314 Tw 12 TL /F1 10 Tf 0 0 0 rg (Notice: you should not pass signature strings with default arguments, i.e. something like) Tj T* 0 Tw /F3 10 Tf 0 0 0 rg ('f1\(a,) Tj ( ) Tj (b=None\)') Tj /F1 10 Tf 0 0 0 rg (. Just pass ) Tj /F3 10 Tf 0 0 0 rg ('f1\(a,) Tj ( ) Tj (b\)' ) Tj /F1 10 Tf 0 0 0 rg (and then a tuple of defaults:) Tj T* ET Q Q q @@ -5157,7 +5159,7 @@ Q endstream endobj -111 0 obj +112 0 obj << /Length 16552 >> stream 1 0 0 1 0 0 cm BT /F1 12 Tf 14.4 TL ET @@ -5575,7 +5577,7 @@ Q endstream endobj -112 0 obj +113 0 obj << /Length 12371 >> stream 1 0 0 1 0 0 cm BT /F1 12 Tf 14.4 TL ET @@ -5900,7 +5902,7 @@ Q endstream endobj -113 0 obj +114 0 obj << /Length 16993 >> stream 1 0 0 1 0 0 cm BT /F1 12 Tf 14.4 TL ET @@ -6449,7 +6451,7 @@ Q endstream endobj -114 0 obj +115 0 obj << /Length 14159 >> stream 1 0 0 1 0 0 cm BT /F1 12 Tf 14.4 TL ET @@ -6906,8 +6908,8 @@ Q endstream endobj -115 0 obj -<< /Length 14956 >> +116 0 obj +<< /Length 12865 >> stream 1 0 0 1 0 0 cm BT /F1 12 Tf 14.4 TL ET q @@ -7177,19 +7179,222 @@ Q Q Q q -1 0 0 1 62.69291 267.0236 cm +1 0 0 1 62.69291 255.0236 cm +q +BT 1 0 0 1 0 50 Tm 2.257752 Tw 12 TL /F1 10 Tf 0 0 0 rg (Generic functions implemented via ) Tj /F3 10 Tf 0 0 0 rg (functools.singledispatch ) Tj /F1 10 Tf 0 0 0 rg (use a more sophisticated lookup) Tj T* 0 Tw .632209 Tw (algorithm; in particular they are able to discern that a ) Tj /F3 10 Tf 0 0 0 rg (Set ) Tj /F1 10 Tf 0 0 0 rg (is a ) Tj /F3 10 Tf 0 0 0 rg (Sized ) Tj /F1 10 Tf 0 0 0 rg (object, so the implementation for) Tj T* 0 Tw 2.135777 Tw /F3 10 Tf 0 0 0 rg (Set ) Tj /F1 10 Tf 0 0 0 rg (is taken and the result is 1, not 0. Still, the implementation in the decorator module is easy to) Tj T* 0 Tw 2.038555 Tw (undestand, once one declare that real ancestors take the precedence over virtual ancestors and the) Tj T* 0 Tw (problem can be solved anyway by subclassing. As a matter of fact, if we define a subclass) Tj T* ET +Q +Q +q +1 0 0 1 62.69291 161.8236 cm +q +q +1 0 0 1 0 0 cm +q +1 0 0 1 6.6 6.6 cm +q +.662745 .662745 .662745 RG +.5 w +.960784 .960784 .862745 rg +n -6 -6 468.6898 84 re B* +Q +q +.960784 .960784 .862745 rg +n 0 60 30 12 re f* +.960784 .960784 .862745 rg +n 36 60 48 12 re f* +.960784 .960784 .862745 rg +n 84 60 6 12 re f* +.960784 .960784 .862745 rg +n 90 60 42 12 re f* +.960784 .960784 .862745 rg +n 132 60 6 12 re f* +.960784 .960784 .862745 rg +n 144 60 66 12 re f* +.960784 .960784 .862745 rg +n 210 60 6 12 re f* +.960784 .960784 .862745 rg +n 216 60 18 12 re f* +.960784 .960784 .862745 rg +n 234 60 12 12 re f* +.960784 .960784 .862745 rg +n 24 48 18 12 re f* +.960784 .960784 .862745 rg +n 48 48 72 12 re f* +.960784 .960784 .862745 rg +n 120 48 6 12 re f* +.960784 .960784 .862745 rg +n 126 48 24 12 re f* +.960784 .960784 .862745 rg +n 150 48 6 12 re f* +.960784 .960784 .862745 rg +n 162 48 6 12 re f* +.960784 .960784 .862745 rg +n 168 48 12 12 re f* +.960784 .960784 .862745 rg +n 48 36 36 12 re f* +.960784 .960784 .862745 rg +n 90 36 24 12 re f* +.960784 .960784 .862745 rg +n 24 12 18 12 re f* +.960784 .960784 .862745 rg +n 48 12 48 12 re f* +.960784 .960784 .862745 rg +n 96 12 6 12 re f* +.960784 .960784 .862745 rg +n 102 12 24 12 re f* +.960784 .960784 .862745 rg +n 126 12 12 12 re f* +.960784 .960784 .862745 rg +n 48 0 30 12 re f* +.960784 .960784 .862745 rg +n 84 0 6 12 re f* +BT 1 0 0 1 0 62 Tm 12 TL /F5 10 Tf 0 .501961 0 rg (class) Tj /F3 10 Tf 0 0 0 rg ( ) Tj /F5 10 Tf 0 0 1 rg (SomeSet2) Tj /F3 10 Tf 0 0 0 rg (\() Tj 0 0 0 rg (SomeSet) Tj 0 0 0 rg (,) Tj 0 0 0 rg ( ) Tj 0 0 0 rg (collections) Tj .4 .4 .4 rg (.) Tj 0 0 0 rg (Set) Tj 0 0 0 rg (\):) Tj 0 0 0 rg T* ( ) Tj /F5 10 Tf 0 .501961 0 rg (def) Tj /F3 10 Tf 0 0 0 rg ( ) Tj 0 0 1 rg (__contains__) Tj 0 0 0 rg (\() Tj 0 .501961 0 rg (self) Tj 0 0 0 rg (,) Tj 0 0 0 rg ( ) Tj 0 0 0 rg (a) Tj 0 0 0 rg (\):) Tj 0 0 0 rg T* ( ) Tj /F5 10 Tf 0 .501961 0 rg (return) Tj /F3 10 Tf 0 0 0 rg ( ) Tj 0 .501961 0 rg (True) Tj 0 0 0 rg T* T* ( ) Tj /F5 10 Tf 0 .501961 0 rg (def) Tj /F3 10 Tf 0 0 0 rg ( ) Tj 0 0 1 rg (__iter__) Tj 0 0 0 rg (\() Tj 0 .501961 0 rg (self) Tj 0 0 0 rg (\):) Tj 0 0 0 rg T* ( ) Tj /F5 10 Tf 0 .501961 0 rg (yield) Tj /F3 10 Tf 0 0 0 rg ( ) Tj .4 .4 .4 rg (1) Tj T* ET +Q +Q +Q +Q +Q +q +1 0 0 1 62.69291 141.8236 cm q -BT 1 0 0 1 0 38 Tm 2.257752 Tw 12 TL /F1 10 Tf 0 0 0 rg (Generic functions implemented via ) Tj /F3 10 Tf 0 0 0 rg (functools.singledispatch ) Tj /F1 10 Tf 0 0 0 rg (use a more sophisticated lookup) Tj T* 0 Tw .632209 Tw (algorithm; in particular they are able to discern that a ) Tj /F3 10 Tf 0 0 0 rg (Set ) Tj /F1 10 Tf 0 0 0 rg (is a ) Tj /F3 10 Tf 0 0 0 rg (Sized ) Tj /F1 10 Tf 0 0 0 rg (object, so the implementation for) Tj T* 0 Tw 2.135777 Tw /F3 10 Tf 0 0 0 rg (Set ) Tj /F1 10 Tf 0 0 0 rg (is taken and the result is 1, not 0. Still, the implementation in the decorator module is easy to) Tj T* 0 Tw (undestand, once one declare that real ancestors take the precedence over virtual ancestors.) Tj T* ET +BT 1 0 0 1 0 2 Tm 12 TL /F1 10 Tf 0 0 0 rg (which inherits from ) Tj /F3 10 Tf 0 0 0 rg (collections.Set) Tj /F1 10 Tf 0 0 0 rg (, we get as expected) Tj T* ET Q Q q -1 0 0 1 62.69291 225.0236 cm +1 0 0 1 62.69291 96.62362 cm +q +q +1 0 0 1 0 0 cm +q +1 0 0 1 6.6 6.6 cm +q +.662745 .662745 .662745 RG +.5 w +.960784 .960784 .862745 rg +n -6 -6 468.6898 36 re B* +Q +q +.960784 .960784 .862745 rg +n 0 12 6 12 re f* +.960784 .960784 .862745 rg +n 6 12 6 12 re f* +.960784 .960784 .862745 rg +n 12 12 6 12 re f* +.960784 .960784 .862745 rg +n 24 12 60 12 re f* +.960784 .960784 .862745 rg +n 84 12 6 12 re f* +.960784 .960784 .862745 rg +n 90 12 48 12 re f* +.960784 .960784 .862745 rg +n 138 12 18 12 re f* +.960784 .960784 .862745 rg +n 0 0 6 12 re f* +BT 1 0 0 1 0 14 Tm 12 TL /F3 10 Tf .4 .4 .4 rg (>) Tj (>) Tj (>) Tj 0 0 0 rg ( ) Tj 0 0 0 rg (get_length) Tj 0 0 0 rg (\() Tj 0 0 0 rg (SomeSet2) Tj 0 0 0 rg (\(\)\)) Tj 0 0 0 rg T* .4 .4 .4 rg (1) Tj T* ET +Q +Q +Q +Q +Q + +endstream +endobj +117 0 obj +<< /Length 11086 >> +stream +1 0 0 1 0 0 cm BT /F1 12 Tf 14.4 TL ET +q +1 0 0 1 62.69291 753.0236 cm +q +BT 1 0 0 1 0 2 Tm 12 TL /F1 10 Tf 0 0 0 rg (consistently with the method resolution order, with ) Tj /F3 10 Tf 0 0 0 rg (Set ) Tj /F1 10 Tf 0 0 0 rg (having the precedence with respect to ) Tj /F3 10 Tf 0 0 0 rg (Sized) Tj /F1 10 Tf 0 0 0 rg (:) Tj T* ET +Q +Q +q +1 0 0 1 62.69291 707.8236 cm +q +q +1 0 0 1 0 0 cm +q +1 0 0 1 6.6 6.6 cm +q +.662745 .662745 .662745 RG +.5 w +.960784 .960784 .862745 rg +n -6 -6 468.6898 36 re B* +Q +q +.960784 .960784 .862745 rg +n 0 12 6 12 re f* +.960784 .960784 .862745 rg +n 6 12 6 12 re f* +.960784 .960784 .862745 rg +n 12 12 6 12 re f* +.960784 .960784 .862745 rg +n 24 12 6 12 re f* +.960784 .960784 .862745 rg +n 30 12 6 12 re f* +.960784 .960784 .862745 rg +n 36 12 6 12 re f* +.960784 .960784 .862745 rg +n 42 12 48 12 re f* +.960784 .960784 .862745 rg +n 96 12 18 12 re f* +.960784 .960784 .862745 rg +n 120 12 6 12 re f* +.960784 .960784 .862745 rg +n 132 12 12 12 re f* +.960784 .960784 .862745 rg +n 150 12 48 12 re f* +.960784 .960784 .862745 rg +n 198 12 6 12 re f* +.960784 .960784 .862745 rg +n 204 12 18 12 re f* +.960784 .960784 .862745 rg +n 222 12 18 12 re f* +.960784 .960784 .862745 rg +n 0 0 6 12 re f* +.960784 .960784 .862745 rg +n 6 0 60 12 re f* +.960784 .960784 .862745 rg +n 66 0 6 12 re f* +.960784 .960784 .862745 rg +n 78 0 54 12 re f* +.960784 .960784 .862745 rg +n 132 0 6 12 re f* +.960784 .960784 .862745 rg +n 144 0 30 12 re f* +.960784 .960784 .862745 rg +n 174 0 6 12 re f* +.960784 .960784 .862745 rg +n 186 0 42 12 re f* +.960784 .960784 .862745 rg +n 228 0 6 12 re f* +.960784 .960784 .862745 rg +n 240 0 60 12 re f* +.960784 .960784 .862745 rg +n 300 0 6 12 re f* +.960784 .960784 .862745 rg +n 312 0 66 12 re f* +.960784 .960784 .862745 rg +n 378 0 6 12 re f* +.960784 .960784 .862745 rg +n 390 0 48 12 re f* +.960784 .960784 .862745 rg +n 438 0 6 12 re f* +BT 1 0 0 1 0 14 Tm 12 TL /F3 10 Tf .4 .4 .4 rg (>) Tj (>) Tj (>) Tj 0 0 0 rg ( ) Tj 0 0 0 rg ([) Tj 0 0 0 rg (c) Tj .4 .4 .4 rg (.) Tj 0 0 0 rg (__name__) Tj 0 0 0 rg ( ) Tj /F5 10 Tf 0 .501961 0 rg (for) Tj /F3 10 Tf 0 0 0 rg ( ) Tj 0 0 0 rg (c) Tj 0 0 0 rg ( ) Tj /F5 10 Tf .666667 .133333 1 rg (in) Tj /F3 10 Tf 0 0 0 rg ( ) Tj 0 0 0 rg (SomeSet2) Tj .4 .4 .4 rg (.) Tj 0 0 0 rg (mro) Tj 0 0 0 rg (\(\)]) Tj 0 0 0 rg T* 0 0 0 rg ([) Tj .729412 .129412 .129412 rg ('SomeSet2') Tj 0 0 0 rg (,) Tj 0 0 0 rg ( ) Tj .729412 .129412 .129412 rg ('SomeSet') Tj 0 0 0 rg (,) Tj 0 0 0 rg ( ) Tj .729412 .129412 .129412 rg ('Set') Tj 0 0 0 rg (,) Tj 0 0 0 rg ( ) Tj .729412 .129412 .129412 rg ('Sized') Tj 0 0 0 rg (,) Tj 0 0 0 rg ( ) Tj .729412 .129412 .129412 rg ('Iterable') Tj 0 0 0 rg (,) Tj 0 0 0 rg ( ) Tj .729412 .129412 .129412 rg ('Container') Tj 0 0 0 rg (,) Tj 0 0 0 rg ( ) Tj .729412 .129412 .129412 rg ('object') Tj 0 0 0 rg (]) Tj T* ET +Q +Q +Q +Q +Q +q +1 0 0 1 62.69291 663.8236 cm q BT 1 0 0 1 0 26 Tm 1.365976 Tw 12 TL /F1 10 Tf 0 0 0 rg (The functions implemented via ) Tj /F3 10 Tf 0 0 0 rg (functools.singledispatch ) Tj /F1 10 Tf 0 0 0 rg (are smarter when there are conflicting) Tj T* 0 Tw .691654 Tw (implementations and are able to solve more potential conflicts. Just to have an idea of what I am talking) Tj T* 0 Tw (about, here is a situation with a conflict:) Tj T* ET Q Q q -1 0 0 1 62.69291 107.8236 cm +1 0 0 1 62.69291 546.6236 cm q q 1 0 0 1 0 0 cm @@ -7330,40 +7535,33 @@ Q Q Q Q - -endstream -endobj -116 0 obj -<< /Length 8003 >> -stream -1 0 0 1 0 0 cm BT /F1 12 Tf 14.4 TL ET q -1 0 0 1 62.69291 717.0236 cm +1 0 0 1 62.69291 490.6236 cm q BT 1 0 0 1 0 38 Tm 9.280976 Tw 12 TL /F1 10 Tf 0 0 0 rg (Since ) Tj /F3 10 Tf 0 0 0 rg (WithLength ) Tj /F1 10 Tf 0 0 0 rg (is both a \(virtual\) subclass of ) Tj /F3 10 Tf 0 0 0 rg (collections.Iterable ) Tj /F1 10 Tf 0 0 0 rg (and of) Tj T* 0 Tw 4.906647 Tw /F3 10 Tf 0 0 0 rg (collections.Sized) Tj /F1 10 Tf 0 0 0 rg (, which are not related by subclassing, it is impossible to decide which) Tj T* 0 Tw .214269 Tw (implementation should be taken. Consistently with the ) Tj /F4 10 Tf (refuse the temptation to guess ) Tj /F1 10 Tf (philosophy, an error) Tj T* 0 Tw (is raised. ) Tj /F3 10 Tf 0 0 0 rg (functools.singledispatch ) Tj /F1 10 Tf 0 0 0 rg (would work exactly the same in this case.) Tj T* ET Q Q q -1 0 0 1 62.69291 687.0236 cm +1 0 0 1 62.69291 460.6236 cm q BT 1 0 0 1 0 14 Tm .39561 Tw 12 TL /F1 10 Tf 0 0 0 rg (Finally let me notice that the decorator module implementation does not use any cache, whereas the one) Tj T* 0 Tw (in ) Tj /F3 10 Tf 0 0 0 rg (singledispatch ) Tj /F1 10 Tf 0 0 0 rg (has a cache.) Tj T* ET Q Q q -1 0 0 1 62.69291 654.0236 cm +1 0 0 1 62.69291 427.6236 cm q BT 1 0 0 1 0 3.5 Tm 21 TL /F2 17.5 Tf 0 0 0 rg (Caveats and limitations) Tj T* ET Q Q q -1 0 0 1 62.69291 624.0236 cm +1 0 0 1 62.69291 397.6236 cm q 0 0 0 rg BT 1 0 0 1 0 14 Tm /F1 10 Tf 12 TL .474987 Tw (The first thing you should be aware of, it the fact that decorators have a performance penalty. The worse) Tj T* 0 Tw (case is shown by the following example:) Tj T* ET Q Q q -1 0 0 1 62.69291 398.8236 cm +1 0 0 1 62.69291 172.4236 cm q q 1 0 0 1 0 0 cm @@ -7384,13 +7582,13 @@ Q Q Q q -1 0 0 1 62.69291 378.8236 cm +1 0 0 1 62.69291 152.4236 cm q BT 1 0 0 1 0 2 Tm 12 TL /F1 10 Tf 0 0 0 rg (On my laptop, using the ) Tj /F3 10 Tf 0 0 0 rg (do_nothing ) Tj /F1 10 Tf 0 0 0 rg (decorator instead of the plain function is five times slower:) Tj T* ET Q Q q -1 0 0 1 62.69291 321.6236 cm +1 0 0 1 62.69291 95.22362 cm q q 1 0 0 1 0 0 cm @@ -7410,21 +7608,28 @@ Q Q Q Q + +endstream +endobj +118 0 obj +<< /Length 14630 >> +stream +1 0 0 1 0 0 cm BT /F1 12 Tf 14.4 TL ET q -1 0 0 1 62.69291 277.6236 cm +1 0 0 1 62.69291 729.0236 cm q BT 1 0 0 1 0 26 Tm 1.25832 Tw 12 TL /F1 10 Tf 0 0 0 rg (It should be noted that a real life function would probably do something more useful than ) Tj /F3 10 Tf 0 0 0 rg (f ) Tj /F1 10 Tf 0 0 0 rg (here, and) Tj T* 0 Tw .91811 Tw (therefore in real life the performance penalty could be completely negligible. As always, the only way to) Tj T* 0 Tw (know if there is a penalty in your specific use case is to measure it.) Tj T* ET Q Q q -1 0 0 1 62.69291 247.6236 cm +1 0 0 1 62.69291 699.0236 cm q 0 0 0 rg BT 1 0 0 1 0 14 Tm /F1 10 Tf 12 TL .091984 Tw (More importantly, you should be aware that decorators will make your tracebacks longer and more difficult) Tj T* 0 Tw (to understand. Consider this example:) Tj T* ET Q Q q -1 0 0 1 62.69291 190.4236 cm +1 0 0 1 62.69291 641.8236 cm q q 1 0 0 1 0 0 cm @@ -7468,13 +7673,13 @@ Q Q Q q -1 0 0 1 62.69291 158.4236 cm +1 0 0 1 62.69291 609.8236 cm q BT 1 0 0 1 0 14 Tm .583318 Tw 12 TL /F1 10 Tf 0 0 0 rg (Calling ) Tj /F3 10 Tf 0 0 0 rg (f\(\) ) Tj /F1 10 Tf 0 0 0 rg (will give you a ) Tj /F3 10 Tf 0 0 0 rg (ZeroDivisionError) Tj /F1 10 Tf 0 0 0 rg (, but since the function is decorated the traceback will) Tj T* 0 Tw (be longer:) Tj T* ET Q Q q -1 0 0 1 62.69291 77.22362 cm +1 0 0 1 62.69291 480.6236 cm q q 1 0 0 1 0 0 cm @@ -7484,110 +7689,83 @@ q .662745 .662745 .662745 RG .5 w .960784 .960784 .862745 rg -n -6 -6 468.6898 72 re B* +n -6 -6 468.6898 120 re B* Q q .960784 .960784 .862745 rg -n 0 48 6 12 re f* +n 0 96 6 12 re f* .960784 .960784 .862745 rg -n 6 48 6 12 re f* +n 6 96 6 12 re f* .960784 .960784 .862745 rg -n 12 48 6 12 re f* +n 12 96 6 12 re f* .960784 .960784 .862745 rg -n 24 48 6 12 re f* +n 24 96 6 12 re f* .960784 .960784 .862745 rg -n 30 48 12 12 re f* +n 30 96 12 12 re f* .960784 .960784 .862745 rg -n 0 36 54 12 re f* +n 0 84 54 12 re f* .960784 .960784 .862745 rg -n 60 36 6 12 re f* +n 60 84 6 12 re f* .960784 .960784 .862745 rg -n 66 36 24 12 re f* +n 66 84 24 12 re f* .960784 .960784 .862745 rg -n 96 36 36 12 re f* +n 96 84 36 12 re f* .960784 .960784 .862745 rg -n 138 36 24 12 re f* +n 138 84 24 12 re f* .960784 .960784 .862745 rg -n 168 36 24 12 re f* +n 168 84 24 12 re f* .960784 .960784 .862745 rg -n 192 36 12 12 re f* +n 192 84 12 12 re f* .960784 .960784 .862745 rg -n 12 24 18 12 re f* +n 12 72 18 12 re f* .960784 .960784 .862745 rg -n 30 12 24 12 re f* +n 30 60 24 12 re f* .960784 .960784 .862745 rg -n 60 12 6 12 re f* +n 60 60 6 12 re f* .960784 .960784 .862745 rg -n 66 12 6 12 re f* +n 66 60 6 12 re f* .960784 .960784 .862745 rg -n 72 12 36 12 re f* +n 72 60 36 12 re f* .960784 .960784 .862745 rg -n 108 12 6 12 re f* +n 108 60 6 12 re f* .960784 .960784 .862745 rg -n 114 12 6 12 re f* +n 114 60 6 12 re f* .960784 .960784 .862745 rg -n 120 12 6 12 re f* +n 120 60 6 12 re f* .960784 .960784 .862745 rg -n 132 12 24 12 re f* +n 132 60 24 12 re f* .960784 .960784 .862745 rg -n 162 12 6 12 re f* +n 162 60 6 12 re f* .960784 .960784 .862745 rg -n 168 12 6 12 re f* +n 168 60 6 12 re f* .960784 .960784 .862745 rg -n 180 12 12 12 re f* +n 180 60 12 12 re f* .960784 .960784 .862745 rg -n 198 12 6 12 re f* +n 198 60 6 12 re f* .960784 .960784 .862745 rg -n 30 0 24 12 re f* +n 30 48 24 12 re f* .960784 .960784 .862745 rg -n 60 0 6 12 re f* -.960784 .960784 .862745 rg -n 66 0 6 12 re f* +n 60 48 6 12 re f* .960784 .960784 .862745 rg -n 72 0 120 12 re f* +n 66 48 6 12 re f* .960784 .960784 .862745 rg -n 192 0 6 12 re f* +n 72 48 120 12 re f* .960784 .960784 .862745 rg -n 198 0 6 12 re f* +n 192 48 6 12 re f* .960784 .960784 .862745 rg -n 204 0 6 12 re f* +n 198 48 6 12 re f* .960784 .960784 .862745 rg -n 216 0 24 12 re f* +n 204 48 6 12 re f* .960784 .960784 .862745 rg -n 246 0 6 12 re f* +n 216 48 24 12 re f* .960784 .960784 .862745 rg -n 252 0 6 12 re f* +n 246 48 6 12 re f* .960784 .960784 .862745 rg -n 264 0 12 12 re f* +n 252 48 6 12 re f* .960784 .960784 .862745 rg -n 282 0 30 12 re f* -BT 1 0 0 1 0 50 Tm 12 TL /F3 10 Tf .4 .4 .4 rg (>) Tj (>) Tj (>) Tj 0 0 0 rg ( ) Tj 0 0 0 rg (f) Tj 0 0 0 rg (\(\)) Tj 0 0 0 rg T* 0 0 0 rg (Traceback) Tj 0 0 0 rg ( ) Tj 0 0 0 rg (\() Tj 0 0 0 rg (most) Tj 0 0 0 rg ( ) Tj 0 0 0 rg (recent) Tj 0 0 0 rg ( ) Tj 0 0 0 rg (call) Tj 0 0 0 rg ( ) Tj 0 0 0 rg (last) Tj 0 0 0 rg (\):) Tj 0 0 0 rg T* ( ) Tj .4 .4 .4 rg (...) Tj 0 0 0 rg T* ( ) Tj 0 0 0 rg (File) Tj 0 0 0 rg ( ) Tj .729412 .129412 .129412 rg (") Tj (<) Tj (string) Tj (>) Tj (") Tj 0 0 0 rg (,) Tj 0 0 0 rg ( ) Tj 0 0 0 rg (line) Tj 0 0 0 rg ( ) Tj .4 .4 .4 rg (2) Tj 0 0 0 rg (,) Tj 0 0 0 rg ( ) Tj /F5 10 Tf .666667 .133333 1 rg (in) Tj /F3 10 Tf 0 0 0 rg ( ) Tj 0 0 0 rg (f) Tj 0 0 0 rg T* ( ) Tj 0 0 0 rg (File) Tj 0 0 0 rg ( ) Tj .729412 .129412 .129412 rg (") Tj (<) Tj (doctest __main__[22]) Tj (>) Tj (") Tj 0 0 0 rg (,) Tj 0 0 0 rg ( ) Tj 0 0 0 rg (line) Tj 0 0 0 rg ( ) Tj .4 .4 .4 rg (4) Tj 0 0 0 rg (,) Tj 0 0 0 rg ( ) Tj /F5 10 Tf .666667 .133333 1 rg (in) Tj /F3 10 Tf 0 0 0 rg ( ) Tj 0 0 0 rg (trace) Tj 0 0 0 rg T* ET -Q -Q -Q -Q -Q - -endstream -endobj -117 0 obj -<< /Length 14983 >> -stream -1 0 0 1 0 0 cm BT /F1 12 Tf 14.4 TL ET -q -1 0 0 1 62.69291 703.8236 cm -q -q -1 0 0 1 0 0 cm -q -1 0 0 1 6.6 6.6 cm -q -.662745 .662745 .662745 RG -.5 w +n 264 48 12 12 re f* .960784 .960784 .862745 rg -n -6 -6 468.6898 60 re B* -Q -q +n 282 48 30 12 re f* .960784 .960784 .862745 rg n 42 36 36 12 re f* .960784 .960784 .862745 rg @@ -7642,38 +7820,38 @@ n 0 0 102 12 re f* n 102 0 6 12 re f* .960784 .960784 .862745 rg n 114 0 18 12 re f* -BT 1 0 0 1 0 38 Tm 12 TL /F3 10 Tf 0 0 0 rg ( ) Tj /F5 10 Tf 0 .501961 0 rg (return) Tj /F3 10 Tf 0 0 0 rg ( ) Tj 0 0 0 rg (f) Tj 0 0 0 rg (\() Tj .4 .4 .4 rg (*) Tj 0 0 0 rg (args) Tj 0 0 0 rg (,) Tj 0 0 0 rg ( ) Tj .4 .4 .4 rg (**) Tj 0 0 0 rg (kw) Tj 0 0 0 rg (\)) Tj 0 0 0 rg T* ( ) Tj 0 0 0 rg (File) Tj 0 0 0 rg ( ) Tj .729412 .129412 .129412 rg (") Tj (<) Tj (doctest __main__[51]) Tj (>) Tj (") Tj 0 0 0 rg (,) Tj 0 0 0 rg ( ) Tj 0 0 0 rg (line) Tj 0 0 0 rg ( ) Tj .4 .4 .4 rg (3) Tj 0 0 0 rg (,) Tj 0 0 0 rg ( ) Tj /F5 10 Tf .666667 .133333 1 rg (in) Tj /F3 10 Tf 0 0 0 rg ( ) Tj 0 0 0 rg (f) Tj 0 0 0 rg T* ( ) Tj .4 .4 .4 rg (1) Tj .4 .4 .4 rg (/) Tj .4 .4 .4 rg (0) Tj 0 0 0 rg T* /F5 10 Tf .823529 .254902 .227451 rg (ZeroDivisionError) Tj /F3 10 Tf 0 0 0 rg (:) Tj 0 0 0 rg ( ) Tj .4 .4 .4 rg (...) Tj T* ET +BT 1 0 0 1 0 98 Tm 12 TL /F3 10 Tf .4 .4 .4 rg (>) Tj (>) Tj (>) Tj 0 0 0 rg ( ) Tj 0 0 0 rg (f) Tj 0 0 0 rg (\(\)) Tj 0 0 0 rg T* 0 0 0 rg (Traceback) Tj 0 0 0 rg ( ) Tj 0 0 0 rg (\() Tj 0 0 0 rg (most) Tj 0 0 0 rg ( ) Tj 0 0 0 rg (recent) Tj 0 0 0 rg ( ) Tj 0 0 0 rg (call) Tj 0 0 0 rg ( ) Tj 0 0 0 rg (last) Tj 0 0 0 rg (\):) Tj 0 0 0 rg T* ( ) Tj .4 .4 .4 rg (...) Tj 0 0 0 rg T* ( ) Tj 0 0 0 rg (File) Tj 0 0 0 rg ( ) Tj .729412 .129412 .129412 rg (") Tj (<) Tj (string) Tj (>) Tj (") Tj 0 0 0 rg (,) Tj 0 0 0 rg ( ) Tj 0 0 0 rg (line) Tj 0 0 0 rg ( ) Tj .4 .4 .4 rg (2) Tj 0 0 0 rg (,) Tj 0 0 0 rg ( ) Tj /F5 10 Tf .666667 .133333 1 rg (in) Tj /F3 10 Tf 0 0 0 rg ( ) Tj 0 0 0 rg (f) Tj 0 0 0 rg T* ( ) Tj 0 0 0 rg (File) Tj 0 0 0 rg ( ) Tj .729412 .129412 .129412 rg (") Tj (<) Tj (doctest __main__[22]) Tj (>) Tj (") Tj 0 0 0 rg (,) Tj 0 0 0 rg ( ) Tj 0 0 0 rg (line) Tj 0 0 0 rg ( ) Tj .4 .4 .4 rg (4) Tj 0 0 0 rg (,) Tj 0 0 0 rg ( ) Tj /F5 10 Tf .666667 .133333 1 rg (in) Tj /F3 10 Tf 0 0 0 rg ( ) Tj 0 0 0 rg (trace) Tj 0 0 0 rg T* ( ) Tj /F5 10 Tf 0 .501961 0 rg (return) Tj /F3 10 Tf 0 0 0 rg ( ) Tj 0 0 0 rg (f) Tj 0 0 0 rg (\() Tj .4 .4 .4 rg (*) Tj 0 0 0 rg (args) Tj 0 0 0 rg (,) Tj 0 0 0 rg ( ) Tj .4 .4 .4 rg (**) Tj 0 0 0 rg (kw) Tj 0 0 0 rg (\)) Tj 0 0 0 rg T* ( ) Tj 0 0 0 rg (File) Tj 0 0 0 rg ( ) Tj .729412 .129412 .129412 rg (") Tj (<) Tj (doctest __main__[51]) Tj (>) Tj (") Tj 0 0 0 rg (,) Tj 0 0 0 rg ( ) Tj 0 0 0 rg (line) Tj 0 0 0 rg ( ) Tj .4 .4 .4 rg (3) Tj 0 0 0 rg (,) Tj 0 0 0 rg ( ) Tj /F5 10 Tf .666667 .133333 1 rg (in) Tj /F3 10 Tf 0 0 0 rg ( ) Tj 0 0 0 rg (f) Tj 0 0 0 rg T* ( ) Tj .4 .4 .4 rg (1) Tj .4 .4 .4 rg (/) Tj .4 .4 .4 rg (0) Tj 0 0 0 rg T* /F5 10 Tf .823529 .254902 .227451 rg (ZeroDivisionError) Tj /F3 10 Tf 0 0 0 rg (:) Tj 0 0 0 rg ( ) Tj .4 .4 .4 rg (...) Tj T* ET Q Q Q Q Q q -1 0 0 1 62.69291 635.8236 cm +1 0 0 1 62.69291 412.6236 cm q BT 1 0 0 1 0 50 Tm 1.05528 Tw 12 TL /F1 10 Tf 0 0 0 rg (You see here the inner call to the decorator ) Tj /F3 10 Tf 0 0 0 rg (trace) Tj /F1 10 Tf 0 0 0 rg (, which calls ) Tj /F3 10 Tf 0 0 0 rg (f\(*args,) Tj ( ) Tj (**kw\)) Tj /F1 10 Tf 0 0 0 rg (, and a reference to) Tj T* 0 Tw .076457 Tw /F3 10 Tf 0 0 0 rg (File) Tj ( ) Tj (") Tj (<) Tj (string) Tj (>) Tj (",) Tj ( ) Tj (line) Tj ( ) Tj (2,) Tj ( ) Tj (in) Tj ( ) Tj (f) Tj /F1 10 Tf 0 0 0 rg (. This latter reference is due to the fact that internally the decorator) Tj T* 0 Tw 2.053318 Tw (module uses ) Tj /F3 10 Tf 0 0 0 rg (exec ) Tj /F1 10 Tf 0 0 0 rg (to generate the decorated function. Notice that ) Tj /F3 10 Tf 0 0 0 rg (exec ) Tj /F1 10 Tf 0 0 0 rg (is ) Tj /F4 10 Tf (not ) Tj /F1 10 Tf (responsibile for the) Tj T* 0 Tw 1.507485 Tw (performance penalty, since is the called ) Tj /F4 10 Tf (only once ) Tj /F1 10 Tf (at function decoration time, and not every time the) Tj T* 0 Tw (decorated function is called.) Tj T* ET Q Q q -1 0 0 1 62.69291 509.8236 cm +1 0 0 1 62.69291 286.6236 cm q BT 1 0 0 1 0 110 Tm .932209 Tw 12 TL /F1 10 Tf 0 0 0 rg (At present, there is no clean way to avoid ) Tj /F3 10 Tf 0 0 0 rg (exec) Tj /F1 10 Tf 0 0 0 rg (. A clean solution would require to change the CPython) Tj T* 0 Tw .777485 Tw (implementation of functions and add an hook to make it possible to change their signature directly. That) Tj T* 0 Tw .74186 Tw (could happen in future versions of Python \(see PEP ) Tj 0 0 .501961 rg (362) Tj 0 0 0 rg (\) and then the decorator module would become) Tj T* 0 Tw 2.385318 Tw (obsolete. However, at present, even in Python 3.4 it is impossible to change the function signature) Tj T* 0 Tw 1.372485 Tw (directly, therefore the ) Tj /F3 10 Tf 0 0 0 rg (decorator ) Tj /F1 10 Tf 0 0 0 rg (module is still useful. Actually, this is the main reasons why I keep) Tj T* 0 Tw 2.169398 Tw (maintaining the module and releasing new versions. It should be noticed that in Python 3.5 a lot of) Tj T* 0 Tw 9.189147 Tw (improvements have been made: in that version you can decorated a function with) Tj T* 0 Tw .084147 Tw /F3 10 Tf 0 0 0 rg (func_tools.update_wrapper ) Tj /F1 10 Tf 0 0 0 rg (and ) Tj /F3 10 Tf 0 0 0 rg (pydoc ) Tj /F1 10 Tf 0 0 0 rg (will see the correct signature; still internally the function will) Tj T* 0 Tw 1.47748 Tw (have an incorrect signature, as you can see by using ) Tj /F3 10 Tf 0 0 0 rg (inspect.getfullargspec) Tj /F1 10 Tf 0 0 0 rg (: all documentation) Tj T* 0 Tw (tools using such function \(which has been correctly deprecated\) will see the wrong signature.) Tj T* ET Q Q q -1 0 0 1 62.69291 455.8236 cm +1 0 0 1 62.69291 232.6236 cm q BT 1 0 0 1 0 38 Tm 1.043828 Tw 12 TL /F1 10 Tf 0 0 0 rg (In the present implementation, decorators generated by ) Tj /F3 10 Tf 0 0 0 rg (decorator ) Tj /F1 10 Tf 0 0 0 rg (can only be used on user-defined) Tj T* 0 Tw .152485 Tw (Python functions or methods, not on generic callable objects, nor on built-in functions, due to limitations of) Tj T* 0 Tw 2.15881 Tw (the ) Tj /F3 10 Tf 0 0 0 rg (inspect ) Tj /F1 10 Tf 0 0 0 rg (module in the standard library, especially for Python 2.X \(in Python 3.5 a lot of such) Tj T* 0 Tw (limitations have been removed\).) Tj T* ET Q Q q -1 0 0 1 62.69291 425.8236 cm +1 0 0 1 62.69291 202.6236 cm q BT 1 0 0 1 0 14 Tm .785777 Tw 12 TL /F1 10 Tf 0 0 0 rg (There is a restriction on the names of the arguments: for instance, if try to call an argument ) Tj /F3 10 Tf 0 0 0 rg (_call_ ) Tj /F1 10 Tf 0 0 0 rg (or) Tj T* 0 Tw /F3 10 Tf 0 0 0 rg (_func_ ) Tj /F1 10 Tf 0 0 0 rg (you will get a ) Tj /F3 10 Tf 0 0 0 rg (NameError) Tj /F1 10 Tf 0 0 0 rg (:) Tj T* ET Q Q q -1 0 0 1 62.69291 308.6236 cm +1 0 0 1 62.69291 85.42362 cm q q 1 0 0 1 0 0 cm @@ -7774,15 +7952,22 @@ Q Q Q Q + +endstream +endobj +119 0 obj +<< /Length 8045 >> +stream +1 0 0 1 0 0 cm BT /F1 12 Tf 14.4 TL ET q -1 0 0 1 62.69291 276.6236 cm +1 0 0 1 62.69291 741.0236 cm q 0 0 0 rg BT 1 0 0 1 0 14 Tm /F1 10 Tf 12 TL 1.720651 Tw (Finally, the implementation is such that the decorated function makes a \(shallow\) copy of the original) Tj T* 0 Tw (function dictionary:) Tj T* ET Q Q q -1 0 0 1 62.69291 123.4236 cm +1 0 0 1 62.69291 587.8236 cm q q 1 0 0 1 0 0 cm @@ -7921,38 +8106,31 @@ Q Q Q Q - -endstream -endobj -118 0 obj -<< /Length 2646 >> -stream -1 0 0 1 0 0 cm BT /F1 12 Tf 14.4 TL ET q -1 0 0 1 62.69291 744.0236 cm +1 0 0 1 62.69291 554.8236 cm q BT 1 0 0 1 0 3.5 Tm 21 TL /F2 17.5 Tf 0 0 0 rg (LICENSE) Tj T* ET Q Q q -1 0 0 1 62.69291 726.0236 cm +1 0 0 1 62.69291 536.8236 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (Copyright \(c\) 2005-2015, Michele Simionato All rights reserved.) Tj T* ET Q Q q -1 0 0 1 62.69291 696.0236 cm +1 0 0 1 62.69291 506.8236 cm q 0 0 0 rg BT 1 0 0 1 0 14 Tm /F1 10 Tf 12 TL 1.328555 Tw (Redistribution and use in source and binary forms, with or without modification, are permitted provided) Tj T* 0 Tw (that the following conditions are met:) Tj T* ET Q Q q -1 0 0 1 62.69291 690.0236 cm +1 0 0 1 62.69291 500.8236 cm Q q -1 0 0 1 62.69291 642.0236 cm +1 0 0 1 62.69291 452.8236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET BT 1 0 0 1 0 2 Tm T* ET @@ -7967,17 +8145,17 @@ q Q Q q -1 0 0 1 62.69291 642.0236 cm +1 0 0 1 62.69291 452.8236 cm Q q -1 0 0 1 62.69291 516.0236 cm +1 0 0 1 62.69291 326.8236 cm q 0 0 0 rg BT 1 0 0 1 0 110 Tm /F1 10 Tf 12 TL .17998 Tw (THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND) Tj T* 0 Tw 2.911797 Tw (ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED) Tj T* 0 Tw 5.165529 Tw (WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE) Tj T* 0 Tw 1.395433 Tw (DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE) Tj T* 0 Tw 5.53122 Tw (FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL) Tj T* 0 Tw 2.705976 Tw (DAMAGES \(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR) Tj T* 0 Tw 3.868976 Tw (SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION\) HOWEVER) Tj T* 0 Tw 1.326647 Tw (CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR) Tj T* 0 Tw 1.525366 Tw (TORT \(INCLUDING NEGLIGENCE OR OTHERWISE\) ARISING IN ANY WAY OUT OF THE USE OF) Tj T* 0 Tw (THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.) Tj T* ET Q Q q -1 0 0 1 62.69291 486.0236 cm +1 0 0 1 62.69291 296.8236 cm q 0 0 0 rg BT 1 0 0 1 0 14 Tm /F1 10 Tf 12 TL .407132 Tw (If you use this software and you are happy with it, consider sending me a note, just to gratify my ego. On) Tj T* 0 Tw (the other hand, if you use this software and you are unhappy with it, send me a patch!) Tj T* ET @@ -7986,71 +8164,71 @@ Q endstream endobj -119 0 obj -<< /Nums [ 0 120 0 R 1 121 0 R 2 122 0 R 3 123 0 R 4 124 0 R - 5 125 0 R 6 126 0 R 7 127 0 R 8 128 0 R 9 129 0 R - 10 130 0 R 11 131 0 R 12 132 0 R 13 133 0 R 14 134 0 R - 15 135 0 R 16 136 0 R 17 137 0 R 18 138 0 R ] >> -endobj 120 0 obj -<< /S /D /St 1 >> +<< /Nums [ 0 121 0 R 1 122 0 R 2 123 0 R 3 124 0 R 4 125 0 R + 5 126 0 R 6 127 0 R 7 128 0 R 8 129 0 R 9 130 0 R + 10 131 0 R 11 132 0 R 12 133 0 R 13 134 0 R 14 135 0 R + 15 136 0 R 16 137 0 R 17 138 0 R 18 139 0 R ] >> endobj 121 0 obj -<< /S /D /St 2 >> +<< /S /D /St 1 >> endobj 122 0 obj -<< /S /D /St 3 >> +<< /S /D /St 2 >> endobj 123 0 obj -<< /S /D /St 4 >> +<< /S /D /St 3 >> endobj 124 0 obj -<< /S /D /St 5 >> +<< /S /D /St 4 >> endobj 125 0 obj -<< /S /D /St 6 >> +<< /S /D /St 5 >> endobj 126 0 obj -<< /S /D /St 7 >> +<< /S /D /St 6 >> endobj 127 0 obj -<< /S /D /St 8 >> +<< /S /D /St 7 >> endobj 128 0 obj -<< /S /D /St 9 >> +<< /S /D /St 8 >> endobj 129 0 obj -<< /S /D /St 10 >> +<< /S /D /St 9 >> endobj 130 0 obj -<< /S /D /St 11 >> +<< /S /D /St 10 >> endobj 131 0 obj -<< /S /D /St 12 >> +<< /S /D /St 11 >> endobj 132 0 obj -<< /S /D /St 13 >> +<< /S /D /St 12 >> endobj 133 0 obj -<< /S /D /St 14 >> +<< /S /D /St 13 >> endobj 134 0 obj -<< /S /D /St 15 >> +<< /S /D /St 14 >> endobj 135 0 obj -<< /S /D /St 16 >> +<< /S /D /St 15 >> endobj 136 0 obj -<< /S /D /St 17 >> +<< /S /D /St 16 >> endobj 137 0 obj -<< /S /D /St 18 >> +<< /S /D /St 17 >> endobj 138 0 obj +<< /S /D /St 18 >> +endobj +139 0 obj << /S /D /St 19 >> endobj xref -0 139 +0 140 0000000000 65535 f 0000000075 00000 n 0000000162 00000 n @@ -8101,100 +8279,101 @@ xref 0000007759 00000 n 0000007931 00000 n 0000008103 00000 n -0000008645 00000 n -0000008764 00000 n -0000008975 00000 n -0000009180 00000 n -0000009294 00000 n -0000009411 00000 n -0000009638 00000 n -0000009875 00000 n -0000010086 00000 n -0000010297 00000 n -0000010493 00000 n -0000010723 00000 n -0000010934 00000 n -0000011145 00000 n -0000011356 00000 n -0000011567 00000 n -0000011758 00000 n -0000011988 00000 n -0000012206 00000 n -0000012436 00000 n +0000008646 00000 n +0000008765 00000 n +0000008945 00000 n +0000009176 00000 n +0000009381 00000 n +0000009495 00000 n +0000009612 00000 n +0000009839 00000 n +0000010077 00000 n +0000010289 00000 n +0000010501 00000 n +0000010697 00000 n +0000010928 00000 n +0000011140 00000 n +0000011352 00000 n +0000011564 00000 n +0000011776 00000 n +0000011967 00000 n +0000012198 00000 n +0000012416 00000 n 0000012647 00000 n -0000012858 00000 n -0000013069 00000 n -0000013280 00000 n -0000013491 00000 n -0000013686 00000 n -0000013916 00000 n -0000014127 00000 n -0000014237 00000 n -0000014485 00000 n -0000014563 00000 n -0000014680 00000 n -0000014808 00000 n -0000014950 00000 n -0000015079 00000 n -0000015221 00000 n -0000015351 00000 n -0000015486 00000 n -0000015624 00000 n -0000015761 00000 n -0000015887 00000 n -0000016021 00000 n -0000016153 00000 n -0000016294 00000 n -0000016435 00000 n -0000016588 00000 n -0000016723 00000 n -0000016880 00000 n -0000017021 00000 n -0000017133 00000 n -0000017328 00000 n -0000024949 00000 n -0000032421 00000 n -0000044985 00000 n -0000061604 00000 n -0000080185 00000 n -0000097878 00000 n -0000118292 00000 n -0000137047 00000 n -0000151757 00000 n -0000166038 00000 n -0000184435 00000 n -0000201046 00000 n -0000213476 00000 n -0000230528 00000 n -0000244746 00000 n -0000259761 00000 n -0000267822 00000 n -0000282864 00000 n -0000285568 00000 n -0000285815 00000 n -0000285853 00000 n -0000285891 00000 n -0000285929 00000 n -0000285967 00000 n -0000286005 00000 n -0000286043 00000 n -0000286081 00000 n -0000286119 00000 n -0000286157 00000 n -0000286196 00000 n -0000286235 00000 n -0000286274 00000 n -0000286313 00000 n -0000286352 00000 n -0000286391 00000 n -0000286430 00000 n -0000286469 00000 n -0000286508 00000 n +0000012859 00000 n +0000013071 00000 n +0000013283 00000 n +0000013495 00000 n +0000013707 00000 n +0000013902 00000 n +0000014133 00000 n +0000014345 00000 n +0000014456 00000 n +0000014704 00000 n +0000014782 00000 n +0000014899 00000 n +0000015027 00000 n +0000015169 00000 n +0000015298 00000 n +0000015440 00000 n +0000015570 00000 n +0000015705 00000 n +0000015843 00000 n +0000015980 00000 n +0000016106 00000 n +0000016240 00000 n +0000016372 00000 n +0000016513 00000 n +0000016654 00000 n +0000016807 00000 n +0000016942 00000 n +0000017099 00000 n +0000017240 00000 n +0000017352 00000 n +0000017548 00000 n +0000025169 00000 n +0000032677 00000 n +0000045241 00000 n +0000061860 00000 n +0000080441 00000 n +0000098134 00000 n +0000118548 00000 n +0000137303 00000 n +0000152013 00000 n +0000166294 00000 n +0000184809 00000 n +0000201420 00000 n +0000213850 00000 n +0000230902 00000 n +0000245120 00000 n +0000258044 00000 n +0000269189 00000 n +0000283878 00000 n +0000291981 00000 n +0000292228 00000 n +0000292266 00000 n +0000292304 00000 n +0000292342 00000 n +0000292380 00000 n +0000292418 00000 n +0000292456 00000 n +0000292494 00000 n +0000292532 00000 n +0000292570 00000 n +0000292609 00000 n +0000292648 00000 n +0000292687 00000 n +0000292726 00000 n +0000292765 00000 n +0000292804 00000 n +0000292843 00000 n +0000292882 00000 n +0000292921 00000 n trailer << /ID % ReportLab generated PDF document -- digest (http://www.reportlab.com) - [(\241\3655\207R\273B\314\2276\253\347\311\271\004\)) (\241\3655\207R\273B\314\2276\253\347\311\271\004\))] - /Info 78 0 R /Root 77 0 R /Size 139 >> + [(\246\331\010\202\265\001C\307O\247?\347\352\236\362\252) (\246\331\010\202\265\001C\307O\247?\347\352\236\362\252)] + /Info 79 0 R /Root 78 0 R /Size 140 >> startxref -286547 +292960 %%EOF -- cgit v1.2.1