![]() |
|
The Python Standard Library - Printable Version +- Sinisterly (https://sinister.ly) +-- Forum: Sharing (https://sinister.ly/Forum-Sharing) +--- Forum: eBooks (https://sinister.ly/Forum-eBooks) +--- Thread: The Python Standard Library (/Thread-The-Python-Standard-Library) |
The Python Standard Library - ZanGetsu - 08-30-2017 Hi, i not view these book post ![]() ![]() Code: TEXT 3
1.1 string�??Text Constants and Templates 4
1.1.1 Functions 4
1.1.2 Templates 5
1.1.3 Advanced Templates 7
1.2 textwrap�??Formatting Text Paragraphs 9
1.2.1 Example Data 9
1.2.2 Filling Paragraphs 10
1.2.3 Removing Existing Indentation 10
1.2.4 Combining Dedent and Fill 11
1.2.5 Hanging Indents 12
1.3 re�??Regular Expressions 13
1.3.1 Finding Patterns in Text 14
1.3.2 Compiling Expressions 14
1.3.3 Multiple Matches 15
1.3.4 Pattern Syntax 16
1.3.5 Constraining the Search 28
1.3.6 Dissecting Matches with Groups 30
ix
ptg
x Contents
1.3.7 Search Options 37
1.3.8 Looking Ahead or Behind 45
1.3.9 Self-Referencing Expressions 50
1.3.10 Modifying Strings with Patterns 56
1.3.11 Splitting with Patterns 58
1.4 difflib�??Compare Sequences 61
1.4.1 Comparing Bodies of Text 62
1.4.2 Junk Data 65
1.4.3 Comparing Arbitrary Types 66
2 DATA STRUCTURES 69
2.1 collections�??Container Data Types 70
2.1.1 Counter 70
2.1.2 defaultdict 74
2.1.3 Deque 75
2.1.4 namedtuple 79
2.1.5 OrderedDict 82
2.2 array�??Sequence of Fixed-Type Data 84
2.2.1 Initialization 84
2.2.2 Manipulating Arrays 85
2.2.3 Arrays and Files 85
2.2.4 Alternate Byte Ordering 86
2.3 heapq�??Heap Sort Algorithm 87
2.3.1 Example Data 88
2.3.2 Creating a Heap 89
2.3.3 Accessing Contents of a Heap 90
2.3.4 Data Extremes from a Heap 92
2.4 bisect�??Maintain Lists in Sorted Order 93
2.4.1 Inserting in Sorted Order 93
2.4.2 Handling Duplicates 95
2.5 Queue�??Thread-Safe FIFO Implementation 96
2.5.1 Basic FIFO Queue 96
2.5.2 LIFO Queue 97
2.5.3 Priority Queue 98
2.5.4 Building a Threaded Podcast Client 99
2.6 struct�??Binary Data Structures 102
2.6.1 Functions vs. Struct Class 102
2.6.2 Packing and Unpacking 102
ptg
Contents xi
2.6.3 Endianness 103
2.6.4 Buffers 105
2.7 weakref�??Impermanent References to Objects 106
2.7.1 References 107
2.7.2 Reference Callbacks 108
2.7.3 Proxies 108
2.7.4 Cyclic References 109
2.7.5 Caching Objects 114
2.8 copy�??Duplicate Objects 117
2.8.1 Shallow Copies 118
2.8.2 Deep Copies 118
2.8.3 Customizing Copy Behavior 119
2.8.4 Recursion in Deep Copy 120
2.9 pprint�??Pretty-Print Data Structures 123
2.9.1 Printing 123
2.9.2 Formatting 124
2.9.3 Arbitrary Classes 125
2.9.4 Recursion 125
2.9.5 Limiting Nested Output 126
2.9.6 Controlling Output Width 126
3 ALGORITHMS 129
3.1 functools�??Tools for Manipulating Functions 129
3.1.1 Decorators 130
3.1.2 Comparison 138
3.2 itertools�??Iterator Functions 141
3.2.1 Merging and Splitting Iterators 142
3.2.2 Converting Inputs 145
3.2.3 Producing New Values 146
3.2.4 Filtering 148
3.2.5 Grouping Data 151
3.3 operator�??Functional Interface to Built-in Operators 153
3.3.1 Logical Operations 154
3.3.2 Comparison Operators 154
3.3.3 Arithmetic Operators 155
3.3.4 Sequence Operators 157
3.3.5 In-Place Operators 158
3.3.6 Attribute and Item �??Getters�?� 159
3.3.7 Combining Operators and Custom Classes 161
ptg
xii Contents
3.3.8 Type Checking 162
3.4 contextlib�??Context Manager Utilities 163
3.4.1 Context Manager API 164
3.4.2 From Generator to Context Manager 167
3.4.3 Nesting Contexts 168
3.4.4 Closing Open Handles 169
4 DATES AND TIMES 173
4.1 time�??Clock Time 173
4.1.1 Wall Clock Time 174
4.1.2 Processor Clock Time 174
4.1.3 Time Components 176
4.1.4 Working with Time Zones 177
4.1.5 Parsing and Formatting Times 179
4.2 datetime�??Date and Time Value Manipulation 180
4.2.1 Times 181
4.2.2 Dates 182
4.2.3 timedeltas 185
4.2.4 Date Arithmetic 186
4.2.5 Comparing Values 187
4.2.6 Combining Dates and Times 188
4.2.7 Formatting and Parsing 189
4.2.8 Time Zones 190
4.3 calendar�??Work with Dates 191
4.3.1 Formatting Examples 191
4.3.2 Calculating Dates 194
5 MATHEMATICS 197
5.1 decimal�??Fixed and Floating-Point Math 197
5.1.1 Decimal 198
5.1.2 Arithmetic 199
5.1.3 Special Values 200
5.1.4 Context 201
5.2 fractions�??Rational Numbers 207
5.2.1 Creating Fraction Instances 207
5.2.2 Arithmetic 210
5.2.3 Approximating Values 210
5.3 random�??Pseudorandom Number Generators 211
5.3.1 Generating Random Numbers 211
ptg
Contents xiii
5.3.2 Seeding 212
5.3.3 Saving State 213
5.3.4 Random Integers 214
5.3.5 Picking Random Items 215
5.3.6 Permutations 216
5.3.7 Sampling 218
5.3.8 Multiple Simultaneous Generators 219
5.3.9 SystemRandom 221
5.3.10 Nonuniform Distributions 222
5.4 math�??Mathematical Functions 223
5.4.1 Special Constants 223
5.4.2 Testing for Exceptional Values 224
5.4.3 Converting to Integers 226
5.4.4 Alternate Representations 227
5.4.5 Positive and Negative Signs 229
5.4.6 Commonly Used Calculations 230
5.4.7 Exponents and Logarithms 234
5.4.8 Angles 238
5.4.9 Trigonometry 240
5.4.10 Hyperbolic Functions 243
5.4.11 Special Functions 244
6 THE FILE SYSTEM 247
6.1 os.path�??Platform-Independent Manipulation of Filenames 248
6.1.1 Parsing Paths 248
6.1.2 Building Paths 252
6.1.3 Normalizing Paths 253
6.1.4 File Times 254
6.1.5 Testing Files 255
6.1.6 Traversing a Directory Tree 256
6.2 glob�??Filename Pattern Matching 257
6.2.1 Example Data 258
6.2.2 Wildcards 258
6.2.3 Single Character Wildcard 259
6.2.4 Character Ranges 260
6.3 linecache�??Read Text Files Efficiently 261
6.3.1 Test Data 261
6.3.2 Reading Specific Lines 262
6.3.3 Handling Blank Lines 263
ptg
xiv Contents
6.3.4 Error Handling 263
6.3.5 Reading Python Source Files 264
6.4 tempfile�??Temporary File System Objects 265
6.4.1 Temporary Files 265
6.4.2 Named Files 268
6.4.3 Temporary Directories 268
6.4.4 Predicting Names 269
6.4.5 Temporary File Location 270
6.5 shutil�??High-Level File Operations 271
6.5.1 Copying Files 271
6.5.2 Copying File Metadata 274
6.5.3 Working with Directory Trees 276
6.6 mmap�??Memory-Map Files 279
6.6.1 Reading 279
6.6.2 Writing 280
6.6.3 Regular Expressions 283
6.7 codecs�??String Encoding and Decoding 284
6.7.1 Unicode Primer 284
6.7.2 Working with Files 287
6.7.3 Byte Order 289
6.7.4 Error Handling 291
6.7.5 Standard Input and Output Streams 295
6.7.6 Encoding Translation 298
6.7.7 Non-Unicode Encodings 300
6.7.8 Incremental Encoding 301
6.7.9 Unicode Data and Network Communication 303
6.7.10 Defining a Custom Encoding 307
6.8 StringIO�??Text Buffers with a File-like API 314
6.8.1 Examples 314
6.9 fnmatch�??UNIX-Style Glob Pattern Matching 315
6.9.1 Simple Matching 315
6.9.2 Filtering 317
6.9.3 Translating Patterns 318
6.10 dircache�??Cache Directory Listings 319
6.10.1 Listing Directory Contents 319
6.10.2 Annotated Listings 321
6.11 filecmp�??Compare Files 322
6.11.1 Example Data 323
6.11.2 Comparing Files 325
ptg
Contents xv
6.11.3 Comparing Directories 327
6.11.4 Using Differences in a Program 328
7 DATA PERSISTENCE AND EXCHANGE 333
7.1 pickle�??Object Serialization 334
7.1.1 Importing 335
7.1.2 Encoding and Decoding Data in Strings 335
7.1.3 Working with Streams 336
7.1.4 Problems Reconstructing Objects 338
7.1.5 Unpicklable Objects 340
7.1.6 Circular References 340
7.2 shelve�??Persistent Storage of Objects 343
7.2.1 Creating a New Shelf 343
7.2.2 Writeback 344
7.2.3 Specific Shelf Types 346
7.3 anydbm�??DBM-Style Databases 347
7.3.1 Database Types 347
7.3.2 Creating a New Database 348
7.3.3 Opening an Existing Database 349
7.3.4 Error Cases 349
7.4 whichdb�??Identify DBM-Style Database Formats 350
7.5 sqlite3�??Embedded Relational Database 351
7.5.1 Creating a Database 352
7.5.2 Retrieving Data 355
7.5.3 Query Metadata 357
7.5.4 Row Objects 358
7.5.5 Using Variables with Queries 359
7.5.6 Bulk Loading 362
7.5.7 Defining New Column Types 363
7.5.8 Determining Types for Columns 366
7.5.9 Transactions 368
7.5.10 Isolation Levels 372
7.5.11 In-Memory Databases 376
7.5.12 Exporting the Contents of a Database 376
7.5.13 Using Python Functions in SQL 378
7.5.14 Custom Aggregation 380
7.5.15 Custom Sorting 381
7.5.16 Threading and Connection Sharing 383
7.5.17 Restricting Access to Data 384
ptg
xvi Contents
7.6 xml.etree.ElementTree�??XML Manipulation API 387
7.6.1 Parsing an XML Document 387
7.6.2 Traversing the Parsed Tree 388
7.6.3 Finding Nodes in a Document 390
7.6.4 Parsed Node Attributes 391
7.6.5 Watching Events While Parsing 393
7.6.6 Creating a Custom Tree Builder 396
7.6.7 Parsing Strings 398
7.6.8 Building Documents with Element Nodes 400
7.6.9 Pretty-Printing XML 401
7.6.10 Setting Element Properties 403
7.6.11 Building Trees from Lists of Nodes 405
7.6.12 Serializing XML to a Stream 408
7.7 csv�??Comma-Separated Value Files 411
7.7.1 Reading 411
7.7.2 Writing 412
7.7.3 Dialects 413
7.7.4 Using Field Names 418
8 DATA COMPRESSION AND ARCHIVING 421
8.1 zlib�??GNU zlib Compression 421
8.1.1 Working with Data in Memory 422
8.1.2 Incremental Compression and Decompression 423
8.1.3 Mixed Content Streams 424
8.1.4 Checksums 425
8.1.5 Compressing Network Data 426
8.2 gzip�??Read and Write GNU Zip Files 430
8.2.1 Writing Compressed Files 431
8.2.2 Reading Compressed Data 433
8.2.3 Working with Streams 434
8.3 bz2�??bzip2 Compression 436
8.3.1 One-Shot Operations in Memory 436
8.3.2 Incremental Compression and Decompression 438
8.3.3 Mixed Content Streams 439
8.3.4 Writing Compressed Files 440
8.3.5 Reading Compressed Files 442
8.3.6 Compressing Network Data 443
8.4 tarfile�??Tar Archive Access 448
8.4.1 Testing Tar Files 448
ptg
Contents xvii
8.4.2 Reading Metadata from an Archive 449
8.4.3 Extracting Files from an Archive 450
8.4.4 Creating New Archives 453
8.4.5 Using Alternate Archive Member Names 453
8.4.6 Writing Data from Sources Other than Files 454
8.4.7 Appending to Archives 455
8.4.8 Working with Compressed Archives 456
8.5 zipfile�??ZIP Archive Access 457
8.5.1 Testing ZIP Files 457
8.5.2 Reading Metadata from an Archive 457
8.5.3 Extracting Archived Files from an Archive 459
8.5.4 Creating New Archives 460
8.5.5 Using Alternate Archive Member Names 462
8.5.6 Writing Data from Sources Other than Files 462
8.5.7 Writing with a ZipInfo Instance 463
8.5.8 Appending to Files 464
8.5.9 Python ZIP Archives 466
8.5.10 Limitations 467
9 CRYPTOGRAPHY 469
9.1 hashlib�??Cryptographic Hashing 469
9.1.1 Sample Data 470
9.1.2 MD5 Example 470
9.1.3 SHA-1 Example 470
9.1.4 Creating a Hash by Name 471
9.1.5 Incremental Updates 472
9.2 hmac�??Cryptographic Message Signing and Verification 473
9.2.1 Signing Messages 474
9.2.2 SHA vs. MD5 474
9.2.3 Binary Digests 475
9.2.4 Applications of Message Signatures 476
10 PROCESSES AND THREADS 481
10.1 subprocess�??Spawning Additional Processes 481
10.1.1 Running External Commands 482
10.1.2 Working with Pipes Directly 486
10.1.3 Connecting Segments of a Pipe 489
10.1.4 Interacting with Another Command 490
10.1.5 Signaling between Processes 492
ptg
xviii Contents
10.2 signal�??Asynchronous System Events 497
10.2.1 Receiving Signals 498
10.2.2 Retrieving Registered Handlers 499
10.2.3 Sending Signals 501
10.2.4 Alarms 501
10.2.5 Ignoring Signals 502
10.2.6 Signals and Threads 502
10.3 threading�??Manage Concurrent Operations 505
10.3.1 Thread Objects 505
10.3.2 Determining the Current Thread 507
10.3.3 Daemon vs. Non-Daemon Threads 509
10.3.4 Enumerating All Threads 512
10.3.5 Subclassing Thread 513
10.3.6 Timer Threads 515
10.3.7 Signaling between Threads 516
10.3.8 Controlling Access to Resources 517
10.3.9 Synchronizing Threads 523
10.3.10 Limiting Concurrent Access to Resources 524
10.3.11 Thread-Specific Data 526
10.4 multiprocessing�??Manage Processes like Threads 529
10.4.1 Multiprocessing Basics 529
10.4.2 Importable Target Functions 530
10.4.3 Determining the Current Process 531
10.4.4 Daemon Processes 532
10.4.5 Waiting for Processes 534
10.4.6 Terminating Processes 536
10.4.7 Process Exit Status 537
10.4.8 Logging 539
10.4.9 Subclassing Process 540
10.4.10 Passing Messages to Processes 541
10.4.11 Signaling between Processes 545
10.4.12 Controlling Access to Resources 546
10.4.13 Synchronizing Operations 547
10.4.14 Controlling Concurrent Access to Resources 548
10.4.15 Managing Shared State 550
10.4.16 Shared Namespaces 551
10.4.17 Process Pools 553
10.4.18 Implementing MapReduce 555
ptg
Contents xix
11 NETWORKING 561
11.1 socket�??Network Communication 561
11.1.1 Addressing, Protocol Families, and Socket Types 562
11.1.2 TCP/IP Client and Server 572
11.1.3 User Datagram Client and Server 580
11.1.4 UNIX Domain Sockets 583
11.1.5 Multicast 587
11.1.6 Sending Binary Data 591
11.1.7 Nonblocking Communication and Timeouts 593
11.2 select�??Wait for I/O Efficiently 594
11.2.1 Using select() 595
11.2.2 Nonblocking I/O with Timeouts 601
11.2.3 Using poll() 603
11.2.4 Platform-Specific Options 608
11.3 SocketServer�??Creating Network Servers 609
11.3.1 Server Types 609
11.3.2 Server Objects 609
11.3.3 Implementing a Server 610
11.3.4 Request Handlers 610
11.3.5 Echo Example 610
11.3.6 Threading and Forking 616
11.4 asyncore�??Asynchronous I/O 619
11.4.1 Servers 619
11.4.2 Clients 621
11.4.3 The Event Loop 623
11.4.4 Working with Other Event Loops 625
11.4.5 Working with Files 628
11.5 asynchat�??Asynchronous Protocol Handler 629
11.5.1 Message Terminators 629
11.5.2 Server and Handler 630
11.5.3 Client 632
11.5.4 Putting It All Together 634
12 THE INTERNET 637
12.1 urlparse�??Split URLs into Components 638
12.1.1 Parsing 638
12.1.2 Unparsing 641
12.1.3 Joining 642
ptg
xx Contents
12.2 BaseHTTPServer�??Base Classes for Implementing Web Servers 644
12.2.1 HTTP GET 644
12.2.2 HTTP POST 646
12.2.3 Threading and Forking 648
12.2.4 Handling Errors 649
12.2.5 Setting Headers 650
12.3 urllib�??Network Resource Access 651
12.3.1 Simple Retrieval with Cache 651
12.3.2 Encoding Arguments 653
12.3.3 Paths vs. URLs 655
12.4 urllib2�??Network Resource Access 657
12.4.1 HTTP GET 657
12.4.2 Encoding Arguments 660
12.4.3 HTTP POST 661
12.4.4 Adding Outgoing Headers 661
12.4.5 Posting Form Data from a Request 663
12.4.6 Uploading Files 664
12.4.7 Creating Custom Protocol Handlers 667
12.5 base64�??Encode Binary Data with ASCII 670
12.5.1 Base64 Encoding 670
12.5.2 Base64 Decoding 671
12.5.3 URL-Safe Variations 672
12.5.4 Other Encodings 673
12.6 robotparser�??Internet Spider Access Control 674
12.6.1 robots.txt 674
12.6.2 Testing Access Permissions 675
12.6.3 Long-Lived Spiders 676
12.7 Cookie�??HTTP Cookies 677
12.7.1 Creating and Setting a Cookie 678
12.7.2 Morsels 678
12.7.3 Encoded Values 680
12.7.4 Receiving and Parsing Cookie Headers 681
12.7.5 Alternative Output Formats 682
12.7.6 Deprecated Classes 683
12.8 uuid�??Universally Unique Identifiers 684
12.8.1 UUID 1�??IEEE 802 MAC Address 684
12.8.2 UUID 3 and 5�??Name-Based Values 686
12.8.3 UUID 4�??Random Values 688
12.8.4 Working with UUID Objects 689
ptg
Contents xxi
12.9 json�??JavaScript Object Notation 690
12.9.1 Encoding and Decoding Simple Data Types 690
12.9.2 Human-Consumable vs. Compact Output 692
12.9.3 Encoding Dictionaries 694
12.9.4 Working with Custom Types 695
12.9.5 Encoder and Decoder Classes 697
12.9.6 Working with Streams and Files 700
12.9.7 Mixed Data Streams 701
12.10 xmlrpclib�??Client Library for XML-RPC 702
12.10.1 Connecting to a Server 704
12.10.2 Data Types 706
12.10.3 Passing Objects 709
12.10.4 Binary Data 710
12.10.5 Exception Handling 712
12.10.6 Combining Calls into One Message 712
12.11 SimpleXMLRPCServer�??An XML-RPC Server 714
12.11.1 A Simple Server 714
12.11.2 Alternate API Names 716
12.11.3 Dotted API Names 718
12.11.4 Arbitrary API Names 719
12.11.5 Exposing Methods of Objects 720
12.11.6 Dispatching Calls 722
12.11.7 Introspection API 724
13 EMAIL 727
13.1 smtplib�??Simple Mail Transfer Protocol Client 727
13.1.1 Sending an Email Message 728
13.1.2 Authentication and Encryption 730
13.1.3 Verifying an Email Address 732
13.2 smtpd�??Sample Mail Servers 734
13.2.1 Mail Server Base Class 734
13.2.2 Debugging Server 737
13.2.3 Proxy Server 737
13.3 imaplib�??IMAP4 Client Library 738
13.3.1 Variations 739
13.3.2 Connecting to a Server 739
13.3.3 Example Configuration 741
13.3.4 Listing Mailboxes 741
13.3.5 Mailbox Status 744
ptg
xxii Contents
13.3.6 Selecting a Mailbox 745
13.3.7 Searching for Messages 746
13.3.8 Search Criteria 747
13.3.9 Fetching Messages 749
13.3.10 Whole Messages 752
13.3.11 Uploading Messages 753
13.3.12 Moving and Copying Messages 755
13.3.13 Deleting Messages 756
13.4 mailbox�??Manipulate Email Archives 758
13.4.1 mbox 759
13.4.2 Maildir 762
13.4.3 Other Formats 768
14 APPLICATION BUILDING BLOCKS 769
14.1 getopt�??Command-Line Option Parsing 770
14.1.1 Function Arguments 771
14.1.2 Short-Form Options 771
14.1.3 Long-Form Options 772
14.1.4 A Complete Example 772
14.1.5 Abbreviating Long-Form Options 775
14.1.6 GNU-Style Option Parsing 775
14.1.7 Ending Argument Processing 777
14.2 optparse�??Command-Line Option Parser 777
14.2.1 Creating an OptionParser 777
14.2.2 Short- and Long-Form Options 778
14.2.3 Comparing with getopt 779
14.2.4 Option Values 781
14.2.5 Option Actions 784
14.2.6 Help Messages 790
14.3 argparse�??Command-Line Option and Argument Parsing 795
14.3.1 Comparing with optparse 796
14.3.2 Setting Up a Parser 796
14.3.3 Defining Arguments 796
14.3.4 Parsing a Command Line 796
14.3.5 Simple Examples 797
14.3.6 Automatically Generated Options 805
14.3.7 Parser Organization 807
14.3.8 Advanced Argument Processing 815
ptg
Contents xxiii
14.4 readline�??The GNU Readline Library 823
14.4.1 Configuring 823
14.4.2 Completing Text 824
14.4.3 Accessing the Completion Buffer 828
14.4.4 Input History 832
14.4.5 Hooks 834
14.5 getpass�??Secure Password Prompt 836
14.5.1 Example 836
14.5.2 Using getpass without a Terminal 837
14.6 cmd�??Line-Oriented Command Processors 839
14.6.1 Processing Commands 839
14.6.2 Command Arguments 840
14.6.3 Live Help 842
14.6.4 Auto-Completion 843
14.6.5 Overriding Base Class Methods 845
14.6.6 Configuring Cmd through Attributes 847
14.6.7 Running Shell Commands 848
14.6.8 Alternative Inputs 849
14.6.9 Commands from sys.argv 851
14.7 shlex�??Parse Shell-Style Syntaxes 852
14.7.1 Quoted Strings 852
14.7.2 Embedded Comments 854
14.7.3 Split 855
14.7.4 Including Other Sources of Tokens 855
14.7.5 Controlling the Parser 856
14.7.6 Error Handling 858
14.7.7 POSIX vs. Non-POSIX Parsing 859
14.8 ConfigParser�??Work with Configuration Files 861
14.8.1 Configuration File Format 862
14.8.2 Reading Configuration Files 862
14.8.3 Accessing Configuration Settings 864
14.8.4 Modifying Settings 869
14.8.5 Saving Configuration Files 871
14.8.6 Option Search Path 872
14.8.7 Combining Values with Interpolation 875
14.9 logging�??Report Status, Error, and Informational Messages 878
14.9.1 Logging in Applications vs. Libraries 878
14.9.2 Logging to a File 879
14.9.3 Rotating Log Files 879
ptg
xxiv Contents
14.9.4 Verbosity Levels 880
14.9.5 Naming Logger Instances 882
14.10 fileinput�??Command-Line Filter Framework 883
14.10.1 Converting M3U Files to RSS 883
14.10.2 Progress Metadata 886
14.10.3 In-Place Filtering 887
14.11 atexit�??Program Shutdown Callbacks 890
14.11.1 Examples 890
14.11.2 When Are atexit Functions Not Called? 891
14.11.3 Handling Exceptions 893
14.12 sched�??Timed Event Scheduler 894
14.12.1 Running Events with a Delay 895
14.12.2 Overlapping Events 896
14.12.3 Event Priorities 897
14.12.4 Canceling Events 897
15 INTERNATIONALIZATION AND LOCALIZATION 899
15.1 gettext�??Message Catalogs 899
15.1.1 Translation Workflow Overview 900
15.1.2 Creating Message Catalogs from Source Code 900
15.1.3 Finding Message Catalogs at Runtime 903
15.1.4 Plural Values 905
15.1.5 Application vs. Module Localization 907
15.1.6 Switching Translations 908
15.2 locale�??Cultural Localization API 909
15.2.1 Probing the Current Locale 909
15.2.2 Currency 915
15.2.3 Formatting Numbers 916
15.2.4 Parsing Numbers 917
15.2.5 Dates and Times 917
16 DEVELOPER TOOLS 919
16.1 pydoc�??Online Help for Modules 920
16.1.1 Plain-Text Help 920
16.1.2 HTML Help 920
16.1.3 Interactive Help 921
16.2 doctest�??Testing through Documentation 921
16.2.1 Getting Started 922
16.2.2 Handling Unpredictable Output 924
ptg
Contents xxv
16.2.3 Tracebacks 928
16.2.4 Working around Whitespace 930
16.2.5 Test Locations 936
16.2.6 External Documentation 939
16.2.7 Running Tests 942
16.2.8 Test Context 945
16.3 unittest�??Automated Testing Framework 949
16.3.1 Basic Test Structure 949
16.3.2 Running Tests 949
16.3.3 Test Outcomes 950
16.3.4 Asserting Truth 952
16.3.5 Testing Equality 953
16.3.6 Almost Equal? 954
16.3.7 Testing for Exceptions 955
16.3.8 Test Fixtures 956
16.3.9 Test Suites 957
16.4 traceback�??Exceptions and Stack Traces 958
16.4.1 Supporting Functions 958
16.4.2 Working with Exceptions 959
16.4.3 Working with the Stack 963
16.5 cgitb�??Detailed Traceback Reports 965
16.5.1 Standard Traceback Dumps 966
16.5.2 Enabling Detailed Tracebacks 966
16.5.3 Local Variables in Tracebacks 968
16.5.4 Exception Properties 971
16.5.5 HTML Output 972
16.5.6 Logging Tracebacks 972
16.6 pdb�??Interactive Debugger 975
16.6.1 Starting the Debugger 976
16.6.2 Controlling the Debugger 979
16.6.3 Breakpoints 990
16.6.4 Changing Execution Flow 1002
16.6.5 Customizing the Debugger with Aliases 1009
16.6.6 Saving Configuration Settings 1011
16.7 trace�??Follow Program Flow 1012
16.7.1 Example Program 1013
16.7.2 Tracing Execution 1013
16.7.3 Code Coverage 1014
16.7.4 Calling Relationships 1017
ptg
xxvi Contents
16.7.5 Programming Interface 1018
16.7.6 Saving Result Data 1020
16.7.7 Options 1022
16.8 profile and pstats�??Performance Analysis 1022
16.8.1 Running the Profiler 1023
16.8.2 Running in a Context 1026
16.8.3 pstats: Saving and Working with Statistics 1027
16.8.4 Limiting Report Contents 1028
16.8.5 Caller / Callee Graphs 1029
16.9 timeit�??Time the Execution of Small Bits of Python Code 1031
16.9.1 Module Contents 1031
16.9.2 Basic Example 1032
16.9.3 Storing Values in a Dictionary 1033
16.9.4 From the Command Line 1035
16.10 compileall�??Byte-Compile Source Files 1037
16.10.1 Compiling One Directory 1037
16.10.2 Compiling sys.path 1038
16.10.3 From the Command Line 1039
16.11 pyclbr�??Class Browser 1039
16.11.1 Scanning for Classes 1041
16.11.2 Scanning for Functions 1042
17 RUNTIME FEATURES 1045
17.1 site�??Site-Wide Configuration 1046
17.1.1 Import Path 1046
17.1.2 User Directories 1047
17.1.3 Path Configuration Files 1049
17.1.4 Customizing Site Configuration 1051
17.1.5 Customizing User Configuration 1053
17.1.6 Disabling the site Module 1054
17.2 sys�??System-Specific Configuration 1055
17.2.1 Interpreter Settings 1055
17.2.2 Runtime Environment 1062
17.2.3 Memory Management and Limits 1065
17.2.4 Exception Handling 1071
17.2.5 Low-Level Thread Support 1074
17.2.6 Modules and Imports 1080
17.2.7 Tracing a Program as It Runs 1101
ptg
Contents xxvii
17.3 os�??Portable Access to Operating System Specific Features 1108
17.3.1 Process Owner 1108
17.3.2 Process Environment 1111
17.3.3 Process Working Directory 1112
17.3.4 Pipes 1112
17.3.5 File Descriptors 1116
17.3.6 File System Permissions 1116
17.3.7 Directories 1118
17.3.8 Symbolic Links 1119
17.3.9 Walking a Directory Tree 1120
17.3.10 Running External Commands 1121
17.3.11 Creating Processes with os.fork() 1122
17.3.12 Waiting for a Child 1125
17.3.13 Spawn 1127
17.3.14 File System Permissions 1127
17.4 platform�??System Version Information 1129
17.4.1 Interpreter 1129
17.4.2 Platform 1130
17.4.3 Operating System and Hardware Info 1131
17.4.4 Executable Architecture 1133
17.5 resource�??System Resource Management 1134
17.5.1 Current Usage 1134
17.5.2 Resource Limits 1135
17.6 gc�??Garbage Collector 1138
17.6.1 Tracing References 1138
17.6.2 Forcing Garbage Collection 1141
17.6.3 Finding References to Objects that Cannot Be Collected 1146
17.6.4 Collection Thresholds and Generations 1148
17.6.5 Debugging 1151
17.7 sysconfig�??Interpreter Compile-Time Configuration 1160
17.7.1 Configuration Variables 1160
17.7.2 Installation Paths 1163
17.7.3 Python Version and Platform 1167
18 LANGUAGE TOOLS 1169
18.1 warnings�??Nonfatal Alerts 1170
18.1.1 Categories and Filtering 1170
18.1.2 Generating Warnings 1171
ptg
xxviii Contents
18.1.3 Filtering with Patterns 1172
18.1.4 Repeated Warnings 1174
18.1.5 Alternate Message Delivery Functions 1175
18.1.6 Formatting 1176
18.1.7 Stack Level in Warnings 1177
18.2 abc�??Abstract Base Classes 1178
18.2.1 Why Use Abstract Base Classes? 1178
18.2.2 How Abstract Base Classes Work 1178
18.2.3 Registering a Concrete Class 1179
18.2.4 Implementation through Subclassing 1179
18.2.5 Concrete Methods in ABCs 1181
18.2.6 Abstract Properties 1182
18.3 dis�??Python Bytecode Disassembler 1186
18.3.1 Basic Disassembly 1187
18.3.2 Disassembling Functions 1187
18.3.3 Classes 1189
18.3.4 Using Disassembly to Debug 1190
18.3.5 Performance Analysis of Loops 1192
18.3.6 Compiler Optimizations 1198
18.4 inspect�??Inspect Live Objects 1200
18.4.1 Example Module 1200
18.4.2 Module Information 1201
18.4.3 Inspecting Modules 1203
18.4.4 Inspecting Classes 1204
18.4.5 Documentation Strings 1206
18.4.6 Retrieving Source 1207
18.4.7 Method and Function Arguments 1209
18.4.8 Class Hierarchies 1210
18.4.9 Method Resolution Order 1212
18.4.10 The Stack and Frames 1213
18.5 exceptions�??Built-in Exception Classes 1216
18.5.1 Base Classes 1216
18.5.2 Raised Exceptions 1217
18.5.3 Warning Categories 1233
19 MODULES AND PACKAGES 1235
19.1 imp�??Python�??s Import Mechanism 1235
19.1.1 Example Package 1236
19.1.2 Module Types 1236
ptg
Contents xxix
19.1.3 Finding Modules 1237
19.1.4 Loading Modules 1238
19.2 zipimport�??Load Python Code from ZIP Archives 1240
19.2.1 Example 1240
19.2.2 Finding a Module 1241
19.2.3 Accessing Code 1242
19.2.4 Source 1243
19.2.5 Packages 1244
19.2.6 Data 1244
19.3 pkgutil�??Package Utilities 1247
19.3.1 Package Import Paths 1247
19.3.2 Development Versions of Packages 1249
19.3.3 Managing Paths with PKG Files 1251
19.3.4 Nested Packages 1253
19.3.5 Package Data 1255 |