provide-testkit 0.0.0.dev0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- provide_testkit-0.0.0.dev0/PKG-INFO +145 -0
- provide_testkit-0.0.0.dev0/README.md +21 -0
- provide_testkit-0.0.0.dev0/VERSION +1 -0
- provide_testkit-0.0.0.dev0/pyproject.toml +279 -0
- provide_testkit-0.0.0.dev0/setup.cfg +4 -0
- provide_testkit-0.0.0.dev0/src/provide/__init__.py +3 -0
- provide_testkit-0.0.0.dev0/src/provide/testkit/__init__.py +248 -0
- provide_testkit-0.0.0.dev0/src/provide/testkit/archive/__init__.py +24 -0
- provide_testkit-0.0.0.dev0/src/provide/testkit/archive/fixtures.py +217 -0
- provide_testkit-0.0.0.dev0/src/provide/testkit/cli.py +229 -0
- provide_testkit-0.0.0.dev0/src/provide/testkit/common/__init__.py +32 -0
- provide_testkit-0.0.0.dev0/src/provide/testkit/common/fixtures.py +234 -0
- provide_testkit-0.0.0.dev0/src/provide/testkit/crypto.py +163 -0
- provide_testkit-0.0.0.dev0/src/provide/testkit/environment.py +79 -0
- provide_testkit-0.0.0.dev0/src/provide/testkit/file/__init__.py +40 -0
- provide_testkit-0.0.0.dev0/src/provide/testkit/file/content_fixtures.py +275 -0
- provide_testkit-0.0.0.dev0/src/provide/testkit/file/directory_fixtures.py +105 -0
- provide_testkit-0.0.0.dev0/src/provide/testkit/file/fixtures.py +49 -0
- provide_testkit-0.0.0.dev0/src/provide/testkit/file/special_fixtures.py +141 -0
- provide_testkit-0.0.0.dev0/src/provide/testkit/fixtures.py +52 -0
- provide_testkit-0.0.0.dev0/src/provide/testkit/harness.py +122 -0
- provide_testkit-0.0.0.dev0/src/provide/testkit/hub.py +22 -0
- provide_testkit-0.0.0.dev0/src/provide/testkit/logger/__init__.py +39 -0
- provide_testkit-0.0.0.dev0/src/provide/testkit/logger/hooks.py +100 -0
- provide_testkit-0.0.0.dev0/src/provide/testkit/logger/reset.py +230 -0
- provide_testkit-0.0.0.dev0/src/provide/testkit/main.py +22 -0
- provide_testkit-0.0.0.dev0/src/provide/testkit/mocking/__init__.py +46 -0
- provide_testkit-0.0.0.dev0/src/provide/testkit/mocking/fixtures.py +340 -0
- provide_testkit-0.0.0.dev0/src/provide/testkit/process/__init__.py +48 -0
- provide_testkit-0.0.0.dev0/src/provide/testkit/process/async_fixtures.py +410 -0
- provide_testkit-0.0.0.dev0/src/provide/testkit/process/fixtures.py +54 -0
- provide_testkit-0.0.0.dev0/src/provide/testkit/process/subprocess_fixtures.py +208 -0
- provide_testkit-0.0.0.dev0/src/provide/testkit/quality/__init__.py +101 -0
- provide_testkit-0.0.0.dev0/src/provide/testkit/quality/artifacts.py +360 -0
- provide_testkit-0.0.0.dev0/src/provide/testkit/quality/base.py +158 -0
- provide_testkit-0.0.0.dev0/src/provide/testkit/quality/cli.py +394 -0
- provide_testkit-0.0.0.dev0/src/provide/testkit/quality/complexity/__init__.py +30 -0
- provide_testkit-0.0.0.dev0/src/provide/testkit/quality/complexity/analyzer.py +392 -0
- provide_testkit-0.0.0.dev0/src/provide/testkit/quality/complexity/fixture.py +196 -0
- provide_testkit-0.0.0.dev0/src/provide/testkit/quality/coverage/__init__.py +36 -0
- provide_testkit-0.0.0.dev0/src/provide/testkit/quality/coverage/fixture.py +236 -0
- provide_testkit-0.0.0.dev0/src/provide/testkit/quality/coverage/reporter.py +150 -0
- provide_testkit-0.0.0.dev0/src/provide/testkit/quality/coverage/tracker.py +313 -0
- provide_testkit-0.0.0.dev0/src/provide/testkit/quality/decorators.py +380 -0
- provide_testkit-0.0.0.dev0/src/provide/testkit/quality/documentation/__init__.py +29 -0
- provide_testkit-0.0.0.dev0/src/provide/testkit/quality/documentation/checker.py +361 -0
- provide_testkit-0.0.0.dev0/src/provide/testkit/quality/documentation/fixture.py +187 -0
- provide_testkit-0.0.0.dev0/src/provide/testkit/quality/profiling/__init__.py +30 -0
- provide_testkit-0.0.0.dev0/src/provide/testkit/quality/profiling/fixture.py +332 -0
- provide_testkit-0.0.0.dev0/src/provide/testkit/quality/profiling/profiler.py +428 -0
- provide_testkit-0.0.0.dev0/src/provide/testkit/quality/report.py +266 -0
- provide_testkit-0.0.0.dev0/src/provide/testkit/quality/runner.py +319 -0
- provide_testkit-0.0.0.dev0/src/provide/testkit/quality/security/__init__.py +29 -0
- provide_testkit-0.0.0.dev0/src/provide/testkit/quality/security/fixture.py +196 -0
- provide_testkit-0.0.0.dev0/src/provide/testkit/quality/security/scanner.py +338 -0
- provide_testkit-0.0.0.dev0/src/provide/testkit/streams.py +54 -0
- provide_testkit-0.0.0.dev0/src/provide/testkit/threading/__init__.py +38 -0
- provide_testkit-0.0.0.dev0/src/provide/testkit/threading/basic_fixtures.py +103 -0
- provide_testkit-0.0.0.dev0/src/provide/testkit/threading/data_fixtures.py +101 -0
- provide_testkit-0.0.0.dev0/src/provide/testkit/threading/execution_fixtures.py +268 -0
- provide_testkit-0.0.0.dev0/src/provide/testkit/threading/fixtures.py +50 -0
- provide_testkit-0.0.0.dev0/src/provide/testkit/threading/sync_fixtures.py +98 -0
- provide_testkit-0.0.0.dev0/src/provide/testkit/time/__init__.py +32 -0
- provide_testkit-0.0.0.dev0/src/provide/testkit/time/fixtures.py +416 -0
- provide_testkit-0.0.0.dev0/src/provide/testkit/transport/__init__.py +30 -0
- provide_testkit-0.0.0.dev0/src/provide/testkit/transport/fixtures.py +278 -0
- provide_testkit-0.0.0.dev0/src/provide_testkit.egg-info/PKG-INFO +145 -0
- provide_testkit-0.0.0.dev0/src/provide_testkit.egg-info/SOURCES.txt +71 -0
- provide_testkit-0.0.0.dev0/src/provide_testkit.egg-info/dependency_links.txt +1 -0
- provide_testkit-0.0.0.dev0/src/provide_testkit.egg-info/entry_points.txt +2 -0
- provide_testkit-0.0.0.dev0/src/provide_testkit.egg-info/requires.txt +115 -0
- provide_testkit-0.0.0.dev0/src/provide_testkit.egg-info/top_level.txt +1 -0
- provide_testkit-0.0.0.dev0/tests/test_placeholder.py +8 -0
|
@@ -0,0 +1,145 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: provide-testkit
|
|
3
|
+
Version: 0.0.0.dev0
|
|
4
|
+
Summary: Testing utilities and fixtures for the provide ecosystem.
|
|
5
|
+
Author-email: Tim Perkins <code@tim.life>
|
|
6
|
+
Maintainer-email: "provide.io" <code@provide.io>
|
|
7
|
+
License: Apache-2.0
|
|
8
|
+
Project-URL: Homepage, https://github.com/provide-io/provide-testkit
|
|
9
|
+
Project-URL: Repository, https://github.com/provide-io/provide-testkit
|
|
10
|
+
Project-URL: Issues, https://github.com/provide-io/provide-testkit/issues
|
|
11
|
+
Keywords: testing,fixtures,mocking,pytest,provide
|
|
12
|
+
Classifier: Development Status :: 3 - Alpha
|
|
13
|
+
Classifier: Intended Audience :: Developers
|
|
14
|
+
Classifier: License :: OSI Approved :: Apache Software License
|
|
15
|
+
Classifier: Operating System :: OS Independent
|
|
16
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
17
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
18
|
+
Classifier: Programming Language :: Python :: 3.13
|
|
19
|
+
Classifier: Programming Language :: Python :: 3.14
|
|
20
|
+
Classifier: Topic :: Software Development :: Testing
|
|
21
|
+
Classifier: Topic :: Software Development :: Testing :: Mocking
|
|
22
|
+
Classifier: Topic :: Software Development :: Libraries :: Python Modules
|
|
23
|
+
Classifier: Typing :: Typed
|
|
24
|
+
Requires-Python: >=3.11
|
|
25
|
+
Description-Content-Type: text/markdown
|
|
26
|
+
Requires-Dist: provide-foundation>=0.1.0
|
|
27
|
+
Requires-Dist: click>=8.1.7
|
|
28
|
+
Requires-Dist: pytest>=8.3.5
|
|
29
|
+
Requires-Dist: pytest-asyncio>=0.26.0
|
|
30
|
+
Requires-Dist: pytest-cov>=6.3.0
|
|
31
|
+
Requires-Dist: pytest-mock>=3.15.0
|
|
32
|
+
Requires-Dist: pytest-xdist>=3.8.0
|
|
33
|
+
Requires-Dist: mkdocs-material>=9.6.20
|
|
34
|
+
Provides-Extra: quality
|
|
35
|
+
Requires-Dist: ruff>=0.11.8; extra == "quality"
|
|
36
|
+
Requires-Dist: mypy>=1.17.1; extra == "quality"
|
|
37
|
+
Requires-Dist: bandit>=1.8.3; extra == "quality"
|
|
38
|
+
Requires-Dist: coverage[toml]>=7.0.0; extra == "quality"
|
|
39
|
+
Requires-Dist: radon>=6.0.0; extra == "quality"
|
|
40
|
+
Requires-Dist: interrogate>=1.5.0; extra == "quality"
|
|
41
|
+
Provides-Extra: typecheck
|
|
42
|
+
Requires-Dist: mypy>=1.17.1; extra == "typecheck"
|
|
43
|
+
Requires-Dist: pyright>=1.1.401; extra == "typecheck"
|
|
44
|
+
Requires-Dist: pyre-check>=0.9.23; extra == "typecheck"
|
|
45
|
+
Requires-Dist: pyre-extensions>=0.0.32; extra == "typecheck"
|
|
46
|
+
Requires-Dist: pyrefly>=0.18.1; extra == "typecheck"
|
|
47
|
+
Requires-Dist: ty>=0.0.1a6; extra == "typecheck"
|
|
48
|
+
Requires-Dist: types-cryptography>=3.3.23.2; extra == "typecheck"
|
|
49
|
+
Requires-Dist: types-grpcio>=1.0.0.20250603; extra == "typecheck"
|
|
50
|
+
Requires-Dist: types-toml>=0.10.8.20240310; extra == "typecheck"
|
|
51
|
+
Requires-Dist: types-protobuf>=6.30.2.20250516; extra == "typecheck"
|
|
52
|
+
Requires-Dist: types-click>=7.1.8; extra == "typecheck"
|
|
53
|
+
Provides-Extra: advanced-testing
|
|
54
|
+
Requires-Dist: hypothesis>=6.131.28; extra == "advanced-testing"
|
|
55
|
+
Requires-Dist: freezegun>=1.5.1; extra == "advanced-testing"
|
|
56
|
+
Requires-Dist: behave>=1.2.6; extra == "advanced-testing"
|
|
57
|
+
Requires-Dist: pytest-benchmark>=5.1.0; extra == "advanced-testing"
|
|
58
|
+
Requires-Dist: pytest-testmon>=2.1.3; extra == "advanced-testing"
|
|
59
|
+
Provides-Extra: profiling
|
|
60
|
+
Requires-Dist: memray>=1.17.2; extra == "profiling"
|
|
61
|
+
Requires-Dist: viztracer>=1.0.2; extra == "profiling"
|
|
62
|
+
Provides-Extra: transport
|
|
63
|
+
Requires-Dist: httpx>=0.27.0; extra == "transport"
|
|
64
|
+
Requires-Dist: pytest-httpx>=0.35.0; extra == "transport"
|
|
65
|
+
Requires-Dist: h2>=4.3.0; extra == "transport"
|
|
66
|
+
Provides-Extra: crypto
|
|
67
|
+
Requires-Dist: cryptography>=45.0.7; extra == "crypto"
|
|
68
|
+
Requires-Dist: types-cryptography>=3.3.23.2; extra == "crypto"
|
|
69
|
+
Provides-Extra: process
|
|
70
|
+
Requires-Dist: psutil>=7.0.0; extra == "process"
|
|
71
|
+
Provides-Extra: grpc
|
|
72
|
+
Requires-Dist: grpc-stubs>=1.53.0.6; extra == "grpc"
|
|
73
|
+
Requires-Dist: grpcio>=1.73.0; extra == "grpc"
|
|
74
|
+
Requires-Dist: grpcio-tools>=1.73.0; extra == "grpc"
|
|
75
|
+
Requires-Dist: grpcio-health-checking>=1.73.0; extra == "grpc"
|
|
76
|
+
Provides-Extra: build
|
|
77
|
+
Requires-Dist: hatch>=1.14.1; extra == "build"
|
|
78
|
+
Requires-Dist: twine>=6.1.0; extra == "build"
|
|
79
|
+
Requires-Dist: uv>=0.6.5; extra == "build"
|
|
80
|
+
Requires-Dist: pre-commit>=3.5.0; extra == "build"
|
|
81
|
+
Provides-Extra: docs
|
|
82
|
+
Requires-Dist: mkdocs>=1.6.0; extra == "docs"
|
|
83
|
+
Requires-Dist: mkdocs-material>=9.6.0; extra == "docs"
|
|
84
|
+
Requires-Dist: mkdocstrings[python]>=0.26.0; extra == "docs"
|
|
85
|
+
Requires-Dist: mkdocs-autorefs>=1.4.0; extra == "docs"
|
|
86
|
+
Requires-Dist: mike>=2.1.0; extra == "docs"
|
|
87
|
+
Requires-Dist: mkdocs-gen-files>=0.5.0; extra == "docs"
|
|
88
|
+
Requires-Dist: mkdocs-literate-nav>=0.6.0; extra == "docs"
|
|
89
|
+
Requires-Dist: mkdocs-section-index>=0.3.0; extra == "docs"
|
|
90
|
+
Requires-Dist: markdown-callouts>=0.4; extra == "docs"
|
|
91
|
+
Requires-Dist: markdown-exec>=1.8; extra == "docs"
|
|
92
|
+
Requires-Dist: markdown-include>=0.8.0; extra == "docs"
|
|
93
|
+
Requires-Dist: pymdown-extensions>=10.16.0; extra == "docs"
|
|
94
|
+
Requires-Dist: mkdocs-git-revision-date-localized-plugin>=1.2.0; extra == "docs"
|
|
95
|
+
Requires-Dist: mkdocs-macros-plugin>=1.0.0; extra == "docs"
|
|
96
|
+
Requires-Dist: mkdocs-include-markdown-plugin>=7.0.0; extra == "docs"
|
|
97
|
+
Requires-Dist: mkdocs-coverage>=1.0; extra == "docs"
|
|
98
|
+
Requires-Dist: mkdocs-llmstxt>=0.2; extra == "docs"
|
|
99
|
+
Requires-Dist: mkdocs-minify-plugin>=0.8; extra == "docs"
|
|
100
|
+
Requires-Dist: mkdocs-redirects>=1.2; extra == "docs"
|
|
101
|
+
Requires-Dist: linkchecker; extra == "docs"
|
|
102
|
+
Requires-Dist: pygments>=2.19.0; extra == "docs"
|
|
103
|
+
Requires-Dist: griffe>=1.14.0; extra == "docs"
|
|
104
|
+
Requires-Dist: watchdog>=3.0.0; extra == "docs"
|
|
105
|
+
Requires-Dist: pyyaml>=6.0.0; extra == "docs"
|
|
106
|
+
Provides-Extra: utils
|
|
107
|
+
Requires-Dist: pyyaml>=6.0.2; extra == "utils"
|
|
108
|
+
Requires-Dist: reuse>=1.1.0; extra == "utils"
|
|
109
|
+
Requires-Dist: tabulate>=0.9.0; extra == "utils"
|
|
110
|
+
Requires-Dist: pynguin>=0.40.0; extra == "utils"
|
|
111
|
+
Requires-Dist: sapp>=0.4; extra == "utils"
|
|
112
|
+
Provides-Extra: standard
|
|
113
|
+
Requires-Dist: provide-testkit[crypto,process,quality,transport]; extra == "standard"
|
|
114
|
+
Provides-Extra: grpc-dev
|
|
115
|
+
Requires-Dist: provide-testkit[grpc,standard,typecheck]; extra == "grpc-dev"
|
|
116
|
+
Provides-Extra: pyvider-dev
|
|
117
|
+
Requires-Dist: provide-testkit[advanced-testing,build,grpc,profiling,standard,typecheck]; extra == "pyvider-dev"
|
|
118
|
+
Provides-Extra: all
|
|
119
|
+
Requires-Dist: provide-testkit[advanced-testing,build,crypto,docs,grpc,process,profiling,quality,transport,typecheck,utils]; extra == "all"
|
|
120
|
+
Provides-Extra: dev
|
|
121
|
+
Requires-Dist: provide-testkit[quality]; extra == "dev"
|
|
122
|
+
Provides-Extra: docs-standalone
|
|
123
|
+
Requires-Dist: provide-testkit[docs]; extra == "docs-standalone"
|
|
124
|
+
|
|
125
|
+
# Provide TestKit
|
|
126
|
+
|
|
127
|
+

|
|
128
|
+

|
|
129
|
+

|
|
130
|
+
|
|
131
|
+
**Comprehensive testing utilities and fixtures for the [provide ecosystem](https://github.com/provide-io)**
|
|
132
|
+
|
|
133
|
+
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.
|
|
134
|
+
|
|
135
|
+
## ✨ Key Features
|
|
136
|
+
|
|
137
|
+
- 🔍 **Smart Context Detection** - Automatically detects testing environments
|
|
138
|
+
- 🏗️ **Foundation Integration** - Native support for provide-foundation components
|
|
139
|
+
- 🧪 **Comprehensive Fixtures** - Pre-built fixtures for common testing scenarios
|
|
140
|
+
- 🚀 **CLI Testing Support** - Advanced utilities for testing Click-based applications
|
|
141
|
+
- 🔐 **Crypto Testing** - Certificate and key generation utilities
|
|
142
|
+
- 🌐 **Transport Mocking** - HTTP, WebSocket, and network testing tools
|
|
143
|
+
- 📁 **File System Utilities** - Temporary files, directories, and archive testing
|
|
144
|
+
- ⚡ **Async Support** - Full async/await testing capabilities
|
|
145
|
+
- 🧵 **Thread Safety Testing** - Multi-threading test utilities
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
# Provide TestKit
|
|
2
|
+
|
|
3
|
+

|
|
4
|
+

|
|
5
|
+

|
|
6
|
+
|
|
7
|
+
**Comprehensive testing utilities and fixtures for the [provide ecosystem](https://github.com/provide-io)**
|
|
8
|
+
|
|
9
|
+
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.
|
|
10
|
+
|
|
11
|
+
## ✨ Key Features
|
|
12
|
+
|
|
13
|
+
- 🔍 **Smart Context Detection** - Automatically detects testing environments
|
|
14
|
+
- 🏗️ **Foundation Integration** - Native support for provide-foundation components
|
|
15
|
+
- 🧪 **Comprehensive Fixtures** - Pre-built fixtures for common testing scenarios
|
|
16
|
+
- 🚀 **CLI Testing Support** - Advanced utilities for testing Click-based applications
|
|
17
|
+
- 🔐 **Crypto Testing** - Certificate and key generation utilities
|
|
18
|
+
- 🌐 **Transport Mocking** - HTTP, WebSocket, and network testing tools
|
|
19
|
+
- 📁 **File System Utilities** - Temporary files, directories, and archive testing
|
|
20
|
+
- ⚡ **Async Support** - Full async/await testing capabilities
|
|
21
|
+
- 🧵 **Thread Safety Testing** - Multi-threading test utilities
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
0.0.0.dev0
|
|
@@ -0,0 +1,279 @@
|
|
|
1
|
+
#
|
|
2
|
+
# pyproject.toml
|
|
3
|
+
#
|
|
4
|
+
|
|
5
|
+
[project]
|
|
6
|
+
name = "provide-testkit"
|
|
7
|
+
description = "Testing utilities and fixtures for the provide ecosystem."
|
|
8
|
+
dynamic = ["version"]
|
|
9
|
+
requires-python = ">=3.11"
|
|
10
|
+
readme = "README.md"
|
|
11
|
+
license = { text = "Apache-2.0" }
|
|
12
|
+
authors = [
|
|
13
|
+
{ name = "Tim Perkins", email = "code@tim.life" },
|
|
14
|
+
]
|
|
15
|
+
maintainers = [
|
|
16
|
+
{ name = "provide.io", email = "code@provide.io" },
|
|
17
|
+
]
|
|
18
|
+
keywords = ["testing", "fixtures", "mocking", "pytest", "provide"]
|
|
19
|
+
classifiers = [
|
|
20
|
+
"Development Status :: 3 - Alpha",
|
|
21
|
+
"Intended Audience :: Developers",
|
|
22
|
+
"License :: OSI Approved :: Apache Software License",
|
|
23
|
+
"Operating System :: OS Independent",
|
|
24
|
+
"Programming Language :: Python :: 3.11",
|
|
25
|
+
"Programming Language :: Python :: 3.12",
|
|
26
|
+
"Programming Language :: Python :: 3.13",
|
|
27
|
+
"Programming Language :: Python :: 3.14",
|
|
28
|
+
"Topic :: Software Development :: Testing",
|
|
29
|
+
"Topic :: Software Development :: Testing :: Mocking",
|
|
30
|
+
"Topic :: Software Development :: Libraries :: Python Modules",
|
|
31
|
+
"Typing :: Typed",
|
|
32
|
+
]
|
|
33
|
+
dependencies = [
|
|
34
|
+
"provide-foundation>=0.1.0",
|
|
35
|
+
"click>=8.1.7", # For CLI testing utilities
|
|
36
|
+
# Core testing - use highest versions across ecosystem
|
|
37
|
+
"pytest>=8.3.5",
|
|
38
|
+
"pytest-asyncio>=0.26.0",
|
|
39
|
+
"pytest-cov>=6.3.0",
|
|
40
|
+
"pytest-mock>=3.15.0",
|
|
41
|
+
"pytest-xdist>=3.8.0",
|
|
42
|
+
"mkdocs-material>=9.6.20",
|
|
43
|
+
]
|
|
44
|
+
|
|
45
|
+
[project.urls]
|
|
46
|
+
Homepage = "https://github.com/provide-io/provide-testkit"
|
|
47
|
+
Repository = "https://github.com/provide-io/provide-testkit"
|
|
48
|
+
Issues = "https://github.com/provide-io/provide-testkit/issues"
|
|
49
|
+
|
|
50
|
+
[project.scripts]
|
|
51
|
+
provide-testkit = "provide.testkit.main:main"
|
|
52
|
+
|
|
53
|
+
[project.optional-dependencies]
|
|
54
|
+
|
|
55
|
+
# Comprehensive code quality tools
|
|
56
|
+
quality = [
|
|
57
|
+
"ruff>=0.11.8",
|
|
58
|
+
"mypy>=1.17.1",
|
|
59
|
+
"bandit>=1.8.3",
|
|
60
|
+
"coverage[toml]>=7.0.0",
|
|
61
|
+
"radon>=6.0.0",
|
|
62
|
+
"interrogate>=1.5.0",
|
|
63
|
+
]
|
|
64
|
+
|
|
65
|
+
# Advanced type checking
|
|
66
|
+
typecheck = [
|
|
67
|
+
"mypy>=1.17.1",
|
|
68
|
+
"pyright>=1.1.401",
|
|
69
|
+
"pyre-check>=0.9.23",
|
|
70
|
+
"pyre-extensions>=0.0.32",
|
|
71
|
+
"pyrefly>=0.18.1",
|
|
72
|
+
"ty>=0.0.1a6",
|
|
73
|
+
"types-cryptography>=3.3.23.2",
|
|
74
|
+
"types-grpcio>=1.0.0.20250603",
|
|
75
|
+
"types-toml>=0.10.8.20240310",
|
|
76
|
+
"types-protobuf>=6.30.2.20250516",
|
|
77
|
+
"types-click>=7.1.8",
|
|
78
|
+
]
|
|
79
|
+
|
|
80
|
+
# Property-based and advanced testing
|
|
81
|
+
advanced-testing = [
|
|
82
|
+
"hypothesis>=6.131.28",
|
|
83
|
+
"freezegun>=1.5.1",
|
|
84
|
+
"behave>=1.2.6",
|
|
85
|
+
"pytest-benchmark>=5.1.0",
|
|
86
|
+
"pytest-testmon>=2.1.3",
|
|
87
|
+
]
|
|
88
|
+
|
|
89
|
+
# Performance profiling
|
|
90
|
+
profiling = [
|
|
91
|
+
"memray>=1.17.2",
|
|
92
|
+
"viztracer>=1.0.2",
|
|
93
|
+
]
|
|
94
|
+
|
|
95
|
+
# Network and HTTP testing
|
|
96
|
+
transport = [
|
|
97
|
+
"httpx>=0.27.0",
|
|
98
|
+
"pytest-httpx>=0.35.0",
|
|
99
|
+
"h2>=4.3.0",
|
|
100
|
+
]
|
|
101
|
+
|
|
102
|
+
# Cryptography
|
|
103
|
+
crypto = [
|
|
104
|
+
"cryptography>=45.0.7",
|
|
105
|
+
"types-cryptography>=3.3.23.2",
|
|
106
|
+
]
|
|
107
|
+
|
|
108
|
+
# System monitoring
|
|
109
|
+
process = [
|
|
110
|
+
"psutil>=7.0.0",
|
|
111
|
+
]
|
|
112
|
+
|
|
113
|
+
# gRPC/Protobuf development
|
|
114
|
+
grpc = [
|
|
115
|
+
"grpc-stubs>=1.53.0.6",
|
|
116
|
+
"grpcio>=1.73.0",
|
|
117
|
+
"grpcio-tools>=1.73.0",
|
|
118
|
+
"grpcio-health-checking>=1.73.0",
|
|
119
|
+
]
|
|
120
|
+
|
|
121
|
+
# Build and release tools
|
|
122
|
+
build = [
|
|
123
|
+
"hatch>=1.14.1",
|
|
124
|
+
"twine>=6.1.0",
|
|
125
|
+
"uv>=0.6.5",
|
|
126
|
+
"pre-commit>=3.5.0",
|
|
127
|
+
]
|
|
128
|
+
|
|
129
|
+
# Documentation tools - comprehensive set for entire ecosystem
|
|
130
|
+
docs = [
|
|
131
|
+
# Core MkDocs
|
|
132
|
+
"mkdocs>=1.6.0",
|
|
133
|
+
"mkdocs-material>=9.6.0",
|
|
134
|
+
"mkdocstrings[python]>=0.26.0",
|
|
135
|
+
"mkdocs-autorefs>=1.4.0",
|
|
136
|
+
"mike>=2.1.0",
|
|
137
|
+
|
|
138
|
+
# Organization and navigation
|
|
139
|
+
"mkdocs-gen-files>=0.5.0",
|
|
140
|
+
"mkdocs-literate-nav>=0.6.0",
|
|
141
|
+
"mkdocs-section-index>=0.3.0",
|
|
142
|
+
|
|
143
|
+
# Content enhancement
|
|
144
|
+
"markdown-callouts>=0.4",
|
|
145
|
+
"markdown-exec>=1.8",
|
|
146
|
+
"markdown-include>=0.8.0",
|
|
147
|
+
"pymdown-extensions>=10.16.0",
|
|
148
|
+
|
|
149
|
+
# Advanced plugins
|
|
150
|
+
"mkdocs-git-revision-date-localized-plugin>=1.2.0",
|
|
151
|
+
"mkdocs-macros-plugin>=1.0.0",
|
|
152
|
+
"mkdocs-include-markdown-plugin>=7.0.0",
|
|
153
|
+
"mkdocs-coverage>=1.0",
|
|
154
|
+
"mkdocs-llmstxt>=0.2",
|
|
155
|
+
"mkdocs-minify-plugin>=0.8",
|
|
156
|
+
"mkdocs-redirects>=1.2",
|
|
157
|
+
|
|
158
|
+
# Code quality
|
|
159
|
+
"linkchecker",
|
|
160
|
+
|
|
161
|
+
# Additional dependencies
|
|
162
|
+
"pygments>=2.19.0",
|
|
163
|
+
"griffe>=1.14.0",
|
|
164
|
+
"watchdog>=3.0.0",
|
|
165
|
+
"pyyaml>=6.0.0",
|
|
166
|
+
]
|
|
167
|
+
|
|
168
|
+
# Misc utilities
|
|
169
|
+
utils = [
|
|
170
|
+
"pyyaml>=6.0.2",
|
|
171
|
+
"reuse>=1.1.0",
|
|
172
|
+
"tabulate>=0.9.0",
|
|
173
|
+
"pynguin>=0.40.0",
|
|
174
|
+
"sapp>=0.4",
|
|
175
|
+
]
|
|
176
|
+
|
|
177
|
+
# Convenience groups
|
|
178
|
+
standard = [
|
|
179
|
+
"provide-testkit[quality,transport,crypto,process]",
|
|
180
|
+
]
|
|
181
|
+
|
|
182
|
+
grpc-dev = [
|
|
183
|
+
"provide-testkit[standard,grpc,typecheck]",
|
|
184
|
+
]
|
|
185
|
+
|
|
186
|
+
pyvider-dev = [
|
|
187
|
+
"provide-testkit[standard,advanced-testing,typecheck,grpc,build,profiling]",
|
|
188
|
+
]
|
|
189
|
+
|
|
190
|
+
all = [
|
|
191
|
+
"provide-testkit[quality,typecheck,advanced-testing,profiling,transport,crypto,process,grpc,build,docs,utils]",
|
|
192
|
+
]
|
|
193
|
+
|
|
194
|
+
dev = [
|
|
195
|
+
"provide-testkit[quality]",
|
|
196
|
+
]
|
|
197
|
+
|
|
198
|
+
# Self-referential docs for testkit itself
|
|
199
|
+
docs-standalone = [
|
|
200
|
+
"provide-testkit[docs]",
|
|
201
|
+
]
|
|
202
|
+
|
|
203
|
+
[build-system]
|
|
204
|
+
requires = ["setuptools>=61.0", "wheel"]
|
|
205
|
+
build-backend = "setuptools.build_meta"
|
|
206
|
+
|
|
207
|
+
[tool.setuptools.dynamic]
|
|
208
|
+
version = {file = "VERSION"}
|
|
209
|
+
|
|
210
|
+
[tool.uv]
|
|
211
|
+
dev-dependencies = [
|
|
212
|
+
"provide-testkit[quality]",
|
|
213
|
+
]
|
|
214
|
+
|
|
215
|
+
[tool.uv.sources]
|
|
216
|
+
provide-foundation = { workspace = true }
|
|
217
|
+
|
|
218
|
+
[tool.ruff]
|
|
219
|
+
target-version = "py311"
|
|
220
|
+
line-length = 111
|
|
221
|
+
indent-width = 4
|
|
222
|
+
|
|
223
|
+
[tool.ruff.lint]
|
|
224
|
+
select = ["E", "F", "W", "I", "UP", "ANN", "B", "C90", "SIM", "PTH", "RUF"]
|
|
225
|
+
ignore = ["ANN401", "B008", "E501"]
|
|
226
|
+
|
|
227
|
+
[tool.ruff.lint.isort]
|
|
228
|
+
known-first-party = ["provide", "tests"]
|
|
229
|
+
force-sort-within-sections = true
|
|
230
|
+
combine-as-imports = true
|
|
231
|
+
|
|
232
|
+
[tool.ruff.format]
|
|
233
|
+
quote-style = "double"
|
|
234
|
+
indent-style = "space"
|
|
235
|
+
skip-magic-trailing-comma = false
|
|
236
|
+
line-ending = "auto"
|
|
237
|
+
|
|
238
|
+
[tool.mypy]
|
|
239
|
+
python_version = "3.11"
|
|
240
|
+
strict = true
|
|
241
|
+
warn_return_any = true
|
|
242
|
+
warn_unused_configs = true
|
|
243
|
+
disallow_untyped_defs = true
|
|
244
|
+
disallow_incomplete_defs = true
|
|
245
|
+
check_untyped_defs = true
|
|
246
|
+
warn_redundant_casts = true
|
|
247
|
+
warn_unused_ignores = true
|
|
248
|
+
show_error_codes = true
|
|
249
|
+
|
|
250
|
+
[tool.pytest.ini_options]
|
|
251
|
+
minversion = "7.0"
|
|
252
|
+
addopts = "-ra -s --strict-markers --strict-config"
|
|
253
|
+
testpaths = ["tests"]
|
|
254
|
+
python_files = ["test_*.py", "*_test.py"]
|
|
255
|
+
python_classes = ["Test*"]
|
|
256
|
+
python_functions = ["test_*"]
|
|
257
|
+
markers = [
|
|
258
|
+
"slow: marks tests as slow (deselect with '-m \"not slow\"')",
|
|
259
|
+
"integration: marks tests as integration tests",
|
|
260
|
+
"unit: marks tests as unit tests",
|
|
261
|
+
]
|
|
262
|
+
|
|
263
|
+
[tool.coverage.run]
|
|
264
|
+
source = ["src"]
|
|
265
|
+
branch = true
|
|
266
|
+
|
|
267
|
+
[tool.coverage.report]
|
|
268
|
+
exclude_lines = [
|
|
269
|
+
"pragma: no cover",
|
|
270
|
+
"def __repr__",
|
|
271
|
+
"if self.debug:",
|
|
272
|
+
"if settings.DEBUG",
|
|
273
|
+
"raise AssertionError",
|
|
274
|
+
"raise NotImplementedError",
|
|
275
|
+
"if 0:",
|
|
276
|
+
"if __name__ == .__main__.:",
|
|
277
|
+
"class .*\\bProtocol\\):",
|
|
278
|
+
"@(abc\\.)?abstractmethod",
|
|
279
|
+
]
|