Hypothesis is a mature property-based testing library for Python. The core runtime, exposed via @given in hypothesis/src/hypothesis/__init__.py, executes each decorated test many times with inputs drawn from composable SearchStrategy objects (integers, floats, text, regex, collections, datetimes, plus extras generating numpy arrays, pandas DataFrame/Series, Django models/forms, lark grammars, and more). All randomness flows through a formal choice IR (hypothesis/internal/conjecture/choice.py) into a pluggable PrimitiveProvider; the default conjecture engine (engine.py) maintains a DataTree of previously seen choice prefixes to avoid redundant exploration and detect flaky tests, and when a failure is found a cascade of shrinking passes (shrinker.py plus the shrinking/ package) reduces it to a minimal counterexample. An example database layer (in-memory, directory-based, and GitHub-artifact backends) persists and replays failures across runs, and an observability subsystem emits structured JSONL metadata per test case. The package also ships application surfaces beyond the library API: a pytest plugin (statistics, health checks, capture, deadline reporting), a CLI (a ghostwriter that auto-generates property tests from signatures/docstrings, plus codemods and failure-patching commands), and a stateful-testing framework (RuleBasedStateMachine, Bundle, @rule/@invariant). A PyO3 Rust extension (hypothesis/rust) accelerates float encoding, and the provider abstraction is validated by an embedded conformance test suite so third-party backends (e.g., CrossHair symbolic execution) can drive generation. Internal subsystems are unusually well-factored — filter predicates are rewritten into tighter strategy constraints via AST analysis, lambda sources are recovered from bytecode, and Unicode character ranges are modelled as interval sets — making several modules reusable outside the project. This is a developer-tool library with CLI and pytest entry points, not a runtime service; the repo also includes its own build/release tooling, a Pelican website, docs, and a very large self-testing suite with enforced 100% branch coverage.
The time-machine library is a Python package designed to mock system time in tests by patching the datetime and time modules at the C level. It provides a versatile API that can be used as a context manager, decorator, or pytest fixture, allowing developers to set a fixed time or simulate time progression. The library supports timezone handling, nesting of time travel contexts, and an escape hatch to access the real time when needed. Additionally, it includes a command-line tool to assist in migrating from the popular freezegun library. The core innovation lies in the C extension (_time_machine.c), which directly manipulates the function pointers of the datetime and time modules to replace them with custom implementations. This approach ensures high performance and comprehensive mocking, affecting all references to these functions throughout the Python process. The Python layer manages the state of active time travels, handles timezone settings via the TZ environment variable, and provides a rich set of features for controlling the simulated time, such as moving to different timestamps or shifting by a delta. The project demonstrates strong engineering practices with comprehensive test coverage, modern development tooling (including pre-commit hooks, linting, and type checking), and careful consideration of cross-platform compatibility. It maintains backward compatibility while introducing improvements, such as making the dateutil dependency optional and adding controls for interpreting naive datetime values. The CLI tool for migration showcases a practical use of the tokenize_rt library for precise source code transformations, reflecting attention to real-world usability.
pytest-flask is a pytest plugin that provides fixtures and helpers for testing Flask applications. It is a library/plugin, not a standalone application. When installed, it registers itself via the `pytest11` entry point and automatically provides fixtures such as `client`, `client_class`, `config`, `live_server`, and `accept_*` headers. It also installs autouse fixtures that push a Flask request context during tests (so `url_for`, `session`, and `request` work without context managers), apply `pytest.mark.options` to the app config, and monkeypatch the app's response class to add JSON-aware comparison helpers. Architecturally, the plugin is a thin layer over pytest's fixture system and Flask's testing utilities. The core entry point is `src/pytest_flask/plugin.py`, which registers CLI options (`--live-server-port`, `--live-server-host`, `--live-server-wait`, `--no-start-live-server`, etc.) and markers. The `live_server` fixture (in `fixtures.py`) uses the `LiveServer` class (in `live_server.py`) to run the Flask app in a separate multiprocessing process, wait for TCP readiness via a socket probe, and shut down cleanly with SIGINT. The plugin depends only on pytest, Flask, and Werkzeug, plus the Python standard library. The codebase is small, well-typed, and thoroughly tested with a test suite that uses pytest's `pytester` to validate plugin behavior in isolated subprocesses. It supports Python 3.8-3.12 and is compatible with Flask 3.x. The project is actively maintained, with recent commits and CI covering multiple OSes and Python versions. It is not a data research repository; it is a developer tool for testing Flask applications.