Metadata-Version: 2.4
Name: provide-testkit
Version: 0.0.1026
Summary: Testing utilities and fixtures for the provide ecosystem.
Author-email: Tim Perkins <code@tim.life>
Maintainer-email: "provide.io" <code@provide.io>
License-Expression: Apache-2.0
Project-URL: Homepage, https://github.com/provide-io/provide-testkit
Project-URL: Repository, https://github.com/provide-io/provide-testkit
Project-URL: Issues, https://github.com/provide-io/provide-testkit/issues
Keywords: testing,fixtures,mocking,pytest,provide
Classifier: Development Status :: 3 - Alpha
Classifier: Intended Audience :: Developers
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Programming Language :: Python :: 3.14
Classifier: Topic :: Software Development :: Testing
Classifier: Topic :: Software Development :: Testing :: Mocking
Classifier: Topic :: Software Development :: Libraries :: Python Modules
Classifier: Typing :: Typed
Requires-Python: >=3.11
Description-Content-Type: text/markdown
Requires-Dist: provide-foundation
Requires-Dist: click>=8.1.7
Requires-Dist: pytest>=8.3.5
Requires-Dist: pytest-asyncio>=0.26.0
Requires-Dist: pytest-cov>=6.3.0
Requires-Dist: pytest-mock>=3.15.0
Requires-Dist: pytest-xdist>=3.8.0
Requires-Dist: mkdocs-material>=9.6.20
Provides-Extra: quality
Requires-Dist: ruff>=0.11.8; extra == "quality"
Requires-Dist: mypy>=1.17.1; extra == "quality"
Requires-Dist: bandit>=1.8.3; extra == "quality"
Requires-Dist: coverage[toml]>=7.0.0; extra == "quality"
Requires-Dist: radon>=6.0.0; extra == "quality"
Requires-Dist: interrogate>=1.5.0; extra == "quality"
Requires-Dist: mutmut>=3.3.1; extra == "quality"
Provides-Extra: typecheck
Requires-Dist: mypy>=1.17.1; extra == "typecheck"
Requires-Dist: pyright>=1.1.401; extra == "typecheck"
Requires-Dist: pyre-check>=0.9.23; extra == "typecheck"
Requires-Dist: pyre-extensions>=0.0.32; extra == "typecheck"
Requires-Dist: pyrefly>=0.18.1; extra == "typecheck"
Requires-Dist: ty>=0.0.1a6; extra == "typecheck"
Requires-Dist: types-cryptography>=3.3.23.2; extra == "typecheck"
Requires-Dist: types-grpcio>=1.0.0.20250603; extra == "typecheck"
Requires-Dist: types-toml>=0.10.8.20240310; extra == "typecheck"
Requires-Dist: types-protobuf>=6.30.2.20250516; extra == "typecheck"
Requires-Dist: types-click>=7.1.8; extra == "typecheck"
Requires-Dist: types-pyyaml>=6.0.12.20250915; extra == "typecheck"
Requires-Dist: types-psutil>=7.0.0.20250822; extra == "typecheck"
Provides-Extra: advanced-testing
Requires-Dist: hypothesis>=6.131.28; extra == "advanced-testing"
Requires-Dist: freezegun>=1.5.1; extra == "advanced-testing"
Requires-Dist: behave>=1.2.6; extra == "advanced-testing"
Requires-Dist: pytest-benchmark>=5.1.0; extra == "advanced-testing"
Requires-Dist: pytest-testmon>=2.1.3; extra == "advanced-testing"
Provides-Extra: profiling
Requires-Dist: memray>=1.17.2; extra == "profiling"
Requires-Dist: viztracer>=1.0.2; extra == "profiling"
Provides-Extra: transport
Requires-Dist: httpx>=0.27.0; extra == "transport"
Requires-Dist: pytest-httpx>=0.35.0; extra == "transport"
Requires-Dist: h2>=4.3.0; extra == "transport"
Provides-Extra: crypto
Requires-Dist: cryptography>=45.0.7; extra == "crypto"
Requires-Dist: types-cryptography>=3.3.23.2; extra == "crypto"
Provides-Extra: process
Requires-Dist: psutil>=7.0.0; extra == "process"
Provides-Extra: grpc
Requires-Dist: grpc-stubs>=1.53.0.6; extra == "grpc"
Requires-Dist: grpcio>=1.73.0; extra == "grpc"
Requires-Dist: grpcio-tools>=1.73.0; extra == "grpc"
Requires-Dist: grpcio-health-checking>=1.73.0; extra == "grpc"
Provides-Extra: build
Requires-Dist: hatch>=1.14.1; extra == "build"
Requires-Dist: twine>=6.1.0; extra == "build"
Requires-Dist: uv>=0.6.5; extra == "build"
Requires-Dist: pre-commit>=3.5.0; extra == "build"
Provides-Extra: docs
Requires-Dist: mkdocs>=1.6.0; extra == "docs"
Requires-Dist: mkdocs-material>=9.6.0; extra == "docs"
Requires-Dist: mkdocstrings[python]>=0.26.0; extra == "docs"
Requires-Dist: mkdocs-autorefs>=1.4.0; extra == "docs"
Requires-Dist: mike>=2.1.0; extra == "docs"
Requires-Dist: mkdocs-gen-files>=0.5.0; extra == "docs"
Requires-Dist: mkdocs-literate-nav>=0.6.0; extra == "docs"
Requires-Dist: mkdocs-section-index>=0.3.0; extra == "docs"
Requires-Dist: markdown-callouts>=0.4; extra == "docs"
Requires-Dist: markdown-exec>=1.8; extra == "docs"
Requires-Dist: markdown-include>=0.8.0; extra == "docs"
Requires-Dist: pymdown-extensions>=10.16.0; extra == "docs"
Requires-Dist: mkdocs-git-revision-date-localized-plugin>=1.2.0; extra == "docs"
Requires-Dist: mkdocs-macros-plugin>=1.0.0; extra == "docs"
Requires-Dist: mkdocs-include-markdown-plugin>=7.0.0; extra == "docs"
Requires-Dist: mkdocs-coverage>=1.0; extra == "docs"
Requires-Dist: mkdocs-llmstxt>=0.2; extra == "docs"
Requires-Dist: mkdocs-minify-plugin>=0.8; extra == "docs"
Requires-Dist: mkdocs-redirects>=1.2; extra == "docs"
Requires-Dist: linkchecker; extra == "docs"
Requires-Dist: pygments>=2.19.0; extra == "docs"
Requires-Dist: griffe>=1.14.0; extra == "docs"
Requires-Dist: watchdog>=3.0.0; extra == "docs"
Requires-Dist: pyyaml>=6.0.0; extra == "docs"
Provides-Extra: utils
Requires-Dist: pyyaml>=6.0.2; extra == "utils"
Requires-Dist: reuse>=1.1.0; extra == "utils"
Requires-Dist: tabulate>=0.9.0; extra == "utils"
Requires-Dist: pynguin>=0.40.0; extra == "utils"
Requires-Dist: sapp>=0.4; extra == "utils"
Provides-Extra: standard
Requires-Dist: provide-testkit[crypto,process,quality,transport]; extra == "standard"
Provides-Extra: grpc-dev
Requires-Dist: provide-testkit[grpc,standard,typecheck]; extra == "grpc-dev"
Provides-Extra: pyvider-dev
Requires-Dist: provide-testkit[advanced-testing,build,grpc,profiling,standard,typecheck]; extra == "pyvider-dev"
Provides-Extra: all
Requires-Dist: provide-testkit[advanced-testing,build,crypto,docs,grpc,process,profiling,quality,transport,typecheck,utils]; extra == "all"
Provides-Extra: dev
Requires-Dist: provide-testkit[advanced-testing,quality]; extra == "dev"
Provides-Extra: docs-standalone
Requires-Dist: provide-testkit[docs]; extra == "docs-standalone"

# Provide TestKit

![Python 3.11+](https://img.shields.io/badge/python-3.11+-blue.svg)
![License: Apache 2.0](https://img.shields.io/badge/license-Apache%202.0-blue.svg)
![Testing](https://img.shields.io/badge/testing-pytest-green.svg)

**Comprehensive testing utilities and fixtures for the [provide ecosystem](https://github.com/provide-io)**

TestKit provides a unified testing framework designed specifically for applications built with `provide-foundation`. It offers intelligent context detection, extensive fixture libraries, and seamless integration with popular testing frameworks.

## ✨ Key Features

- 🔍 **Smart Context Detection** - Automatically detects testing environments
- 🏗️ **Foundation Integration** - Native support for provide-foundation components
- 🧪 **Comprehensive Fixtures** - Pre-built fixtures for common testing scenarios
- 🚀 **CLI Testing Support** - Advanced utilities for testing Click-based applications
- 🔐 **Crypto Testing** - Certificate and key generation utilities
- 🌐 **Transport Mocking** - HTTP, WebSocket, and network testing tools
- 📁 **File System Utilities** - Temporary files, directories, and archive testing
- ⚡ **Async Support** - Full async/await testing capabilities
- 🧵 **Thread Safety Testing** - Multi-threading test utilities
