Introduction
- About the Author
- Conventions
- Requirements
- Reader Feedback
- Errata
- Code Examples
- Part I - The Intermediate Modules
- Chapter 1 - An Intro to Argument Parsing using argparse
- Getting Started
- Adding Arguments
- Short Options and Long Options
- Options that Conflict
- Wrapping Up
- Chapter 2 - The collections module
- ChainMap
- Counter
- defaultdict
- deque
- namedtuple
- OrderedDict
- Wrapping Up
- Chapter 3 - Context Managers
- Creating a Context Manager class
- Creating a Context Manager using contextlib
- contextlib.closing(thing)
- contextlib.suppress(*exceptions)
- contextlib.redirect_stdout / redirect_stderr
- ExitStack
- Reentrant Context Managers
- Wrapping Up
- Chapter 4 - The functools module
- Caching with functools.lru_cache
- functool.partial
- Function Overloading with functools.singledispatch
- functools.wraps
- Wraps to the Rescue!
- Wrapping Up
- Chapter 5 - All About Imports
- Regular Imports
- Using “from module import something”
- Relative Imports
- Optional Imports
- Local Imports
- Import Pitfalls
- Wrapping Up
- Chapter 6 - The importlib Module
- Dynamic Imports
- Module Import Checking
- Import From Source File
- import_from_github_com
- Wrapping Up
- Chapter 7 - Iterators and Generators
- Iterators
- Creating Your Own Iterators
- Generators
- Wrapping Up
- Chapter 8 - The itertools Module
- The Infinite Iterators
- Iterators That Terminate
- The Combinatoric Generators
- Wrapping Up
- Chapter 9 - Regular Expressions
- The Matching Characters
- Pattern Matching Using search
- Escape Codes
- Compiling
- Compilation Flags
- Finding Multiple Instances
- Backslashes Are Complicated
- Wrapping Up
- Chapter 10 - The typing Module
- Type Hints and Overloaded Functions
- Wrapping Up
- Part II - Odds and Ends
- Chapter 11 - Python Built-ins
- any
- enumerate
- eval
- filter
- map
- zip
- Wrapping Up
- Chapter 12 - Unicode
- Encoding / Decoding
- Wrapping Up
- Chapter 13 - Benchmarking
- timeit
- Importing timeit for Testing
- Use a decorator
- Create a Timing Context Manager
- cProfile
- line_profiler
- memory_profiler
- profilehooks
- Wrapping Up
- Chapter 14 - Encryption and Cryptography
- Hashing
- Key Derivation
- PyCrypto
- The cryptography Package
- Wrapping Up
- Chapter 15 - Databases
- Basic SQL Syntax
- adodbapi
- pyodbc
- pypyodbc
- MySQL
- PostgreSQL
- Object Relational Mappers
- Wrapping Up
- Chapter 16 - The super built-in
- Python 2 vs Python 3
- Method Resolution Order (MRO)
- Wrapping Up
- Chapter 17 - Descriptors
- The Descriptor Protocol
- Calling a Descriptor
- Descriptor Examples
- Wrapping Up
- Chapter 18 - Scope
- Local Scope
- Global Scope
- nonlocal Scope
- Wrapping Up
- Part III - Working with the Web
- Chapter 19 - Web Scraping
- Tips for Scraping
- Preparing to Scrape
- BeautifulSoup
- Scrapy
- Wrapping Up
- Chapter 20 - Web APIs
- Wikipedia
- Other API Libraries
- Wrapping Up
- Chapter 21 - Working with FTP
- Connecting to an FTP Server
- Navigating Directories with ftplib
- Downloading a File via FTP
- Uploading Files to an FTP Server
- Wrapping Up
- Chapter 22 - The urllib Module
- urllib.request
- urllib.parse
- urllib.robotparser
- Wrapping Up
- Part IV - Testing
- Chapter 24 - The doctest Module
- How it Works
- Check Your Test With a Text File
- Option Flags and Directives
- Wrapping Up
- Chapter 24 - The unittest Module
- A Simple Example
- Command-Line Interface
- Creating a More Complex Test
- Creating Test Suites
- How to Skip Tests
- Integrating with doctest
- Wrapping Up
- Chapter 25 - The mock Module
- Simple Examples
- Side Effects
- Autospeccing
- The Patch
- Wrapping Up
- Chapter 26 - An Intro to coverage.py
- Additional Information
- Wrapping Up
- Part V - Concurrency
- Chapter 27 - The asyncio Module
- Definitions
- async and await
- A Bad Coroutine Example
- A Better Coroutine Example
- Scheduling Calls
- Tasks
- Wrapping Up
- Chapter 28 - The threading Module
- Intro to threads
- Locks and Synchronization
- Timers
- Other Thread Components
- Thread Communication
- Wrapping Up
- Chapter 29 - The multiprocessing Module
- Getting Started With Multiprocessing
- Locks
- Logging
- The Pool Class
- Process Communication
- Wrapping Up
- Chapter 30 - The concurrent.futures Module
- Creating a Pool
- Deadlocks
- Wrapping Up
