Python Tooling: Async HTTPX, Mocking Services, and Design Principles
Overview
This episode of Python Bytes covers a variety of modern tools, libraries, and architectural discussions to help streamline Python development.
Key Libraries and Tools
Rapid Tables
• A lightweight and efficient way to print dictionaries as clean ASCII tables in the terminal.
• Supports colored output via termcolor and exports to formats like Markdown and restructuredText.
HTTPX: The Modern Request Alternative
• An exciting new library that provides a requests-compatible API with built-in asynchronous support, HTTP/2, and type annotations.
• Offers significant advantages for performance and testing by allowing direct requests to WSGI or ASGI applications without network overhead.
Mocking and Testing Services
• Starlet: Highlighted for its simplicity in creating fake services to simulate long latencies or third-party dependencies during testing.
• Modo: An comprehensive library for mocking AWS APIs, capable of running as a standalone server to facilitate non-Python integration testing.
• MicroMongo (MewMongo): An asynchronous ODM for MongoDB that supports multiple underlying drivers, including MotorAsyncIO and MongoMock.
Discussion on Design Principles
The Single Responsibility Principle (SRP)
"This article will guide you through the complex process of writing simple code."
• The hosts debate the use of SOLID principles in Python, specifically focusing on the Single Responsibility Principle.
• Discussed an approach using callable classes with dependency injection. The hosts offer a balanced view: while these techniques can improve testability, they may sometimes introduce complexity that is better suited to languages like Java or C++ rather than Python.
Community Corner
• PyBites: Featured a "Byte" challenge (220) where users analyze the Python Bytes RSS feed using FeedParser.
• The episode concludes with developer-themed dad jokes and a message of cross-language harmony.