provide-testkit 0.3.31__tar.gz → 0.4.2__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.3.31 → provide_testkit-0.4.2}/PKG-INFO +10 -10
- provide_testkit-0.4.2/VERSION +1 -0
- {provide_testkit-0.3.31 → provide_testkit-0.4.2}/pyproject.toml +38 -16
- {provide_testkit-0.3.31 → provide_testkit-0.4.2}/src/provide/testkit/process/script_fixtures.py +1 -1
- {provide_testkit-0.3.31 → provide_testkit-0.4.2}/src/provide/testkit/quality/cli.py +3 -1
- {provide_testkit-0.3.31 → provide_testkit-0.4.2}/src/provide/testkit/quality/profiling/profiler.py +1 -1
- {provide_testkit-0.3.31 → provide_testkit-0.4.2}/src/provide_testkit.egg-info/PKG-INFO +10 -10
- {provide_testkit-0.3.31 → provide_testkit-0.4.2}/src/provide_testkit.egg-info/requires.txt +13 -9
- provide_testkit-0.3.31/VERSION +0 -1
- {provide_testkit-0.3.31 → provide_testkit-0.4.2}/LICENSE +0 -0
- {provide_testkit-0.3.31 → provide_testkit-0.4.2}/README.md +0 -0
- {provide_testkit-0.3.31 → provide_testkit-0.4.2}/setup.cfg +0 -0
- {provide_testkit-0.3.31 → provide_testkit-0.4.2}/src/provide/__init__.py +0 -0
- {provide_testkit-0.3.31 → provide_testkit-0.4.2}/src/provide/testkit/__init__.py +0 -0
- {provide_testkit-0.3.31 → provide_testkit-0.4.2}/src/provide/testkit/__main__.py +0 -0
- {provide_testkit-0.3.31 → provide_testkit-0.4.2}/src/provide/testkit/_blocker.py +0 -0
- {provide_testkit-0.3.31 → provide_testkit-0.4.2}/src/provide/testkit/_early_init.py +0 -0
- {provide_testkit-0.3.31 → provide_testkit-0.4.2}/src/provide/testkit/_install_blocker.py +0 -0
- {provide_testkit-0.3.31 → provide_testkit-0.4.2}/src/provide/testkit/_install_pth.py +0 -0
- {provide_testkit-0.3.31 → provide_testkit-0.4.2}/src/provide/testkit/base/__init__.py +0 -0
- {provide_testkit-0.3.31 → provide_testkit-0.4.2}/src/provide/testkit/base/foundation.py +0 -0
- {provide_testkit-0.3.31 → provide_testkit-0.4.2}/src/provide/testkit/base/harness.py +0 -0
- {provide_testkit-0.3.31 → provide_testkit-0.4.2}/src/provide/testkit/base/minimal.py +0 -0
- {provide_testkit-0.3.31 → provide_testkit-0.4.2}/src/provide/testkit/chaos/__init__.py +0 -0
- {provide_testkit-0.3.31 → provide_testkit-0.4.2}/src/provide/testkit/chaos/concurrency_strategies.py +0 -0
- {provide_testkit-0.3.31 → provide_testkit-0.4.2}/src/provide/testkit/chaos/fixtures.py +0 -0
- {provide_testkit-0.3.31 → provide_testkit-0.4.2}/src/provide/testkit/chaos/io_strategies.py +0 -0
- {provide_testkit-0.3.31 → provide_testkit-0.4.2}/src/provide/testkit/chaos/strategies.py +0 -0
- {provide_testkit-0.3.31 → provide_testkit-0.4.2}/src/provide/testkit/chaos/time_strategies.py +0 -0
- {provide_testkit-0.3.31 → provide_testkit-0.4.2}/src/provide/testkit/cli/__init__.py +0 -0
- {provide_testkit-0.3.31 → provide_testkit-0.4.2}/src/provide/testkit/cli/runner.py +0 -0
- {provide_testkit-0.3.31 → provide_testkit-0.4.2}/src/provide/testkit/cli/testing.py +0 -0
- {provide_testkit-0.3.31 → provide_testkit-0.4.2}/src/provide/testkit/common/__init__.py +0 -0
- {provide_testkit-0.3.31 → provide_testkit-0.4.2}/src/provide/testkit/common/fixtures.py +0 -0
- {provide_testkit-0.3.31 → provide_testkit-0.4.2}/src/provide/testkit/conftest.py +0 -0
- {provide_testkit-0.3.31 → provide_testkit-0.4.2}/src/provide/testkit/crypto/__init__.py +0 -0
- {provide_testkit-0.3.31 → provide_testkit-0.4.2}/src/provide/testkit/crypto/fixtures.py +0 -0
- {provide_testkit-0.3.31 → provide_testkit-0.4.2}/src/provide/testkit/file/__init__.py +0 -0
- {provide_testkit-0.3.31 → provide_testkit-0.4.2}/src/provide/testkit/file/content_fixtures.py +0 -0
- {provide_testkit-0.3.31 → provide_testkit-0.4.2}/src/provide/testkit/file/directory_fixtures.py +0 -0
- {provide_testkit-0.3.31 → provide_testkit-0.4.2}/src/provide/testkit/file/fixtures.py +0 -0
- {provide_testkit-0.3.31 → provide_testkit-0.4.2}/src/provide/testkit/file/special_fixtures.py +0 -0
- {provide_testkit-0.3.31 → provide_testkit-0.4.2}/src/provide/testkit/file/temp.py +0 -0
- {provide_testkit-0.3.31 → provide_testkit-0.4.2}/src/provide/testkit/hub/__init__.py +0 -0
- {provide_testkit-0.3.31 → provide_testkit-0.4.2}/src/provide/testkit/hub/fixtures.py +0 -0
- {provide_testkit-0.3.31 → provide_testkit-0.4.2}/src/provide/testkit/logger/__init__.py +0 -0
- {provide_testkit-0.3.31 → provide_testkit-0.4.2}/src/provide/testkit/logger/hooks.py +0 -0
- {provide_testkit-0.3.31 → provide_testkit-0.4.2}/src/provide/testkit/logger/mocks.py +0 -0
- {provide_testkit-0.3.31 → provide_testkit-0.4.2}/src/provide/testkit/logger/reset.py +0 -0
- {provide_testkit-0.3.31 → provide_testkit-0.4.2}/src/provide/testkit/main.py +0 -0
- {provide_testkit-0.3.31 → provide_testkit-0.4.2}/src/provide/testkit/mocking/__init__.py +0 -0
- {provide_testkit-0.3.31 → provide_testkit-0.4.2}/src/provide/testkit/mocking/fixtures.py +0 -0
- {provide_testkit-0.3.31 → provide_testkit-0.4.2}/src/provide/testkit/mocking/time.py +0 -0
- {provide_testkit-0.3.31 → provide_testkit-0.4.2}/src/provide/testkit/process/__init__.py +0 -0
- {provide_testkit-0.3.31 → provide_testkit-0.4.2}/src/provide/testkit/process/async_fixtures.py +0 -0
- {provide_testkit-0.3.31 → provide_testkit-0.4.2}/src/provide/testkit/process/fixtures.py +0 -0
- {provide_testkit-0.3.31 → provide_testkit-0.4.2}/src/provide/testkit/process/script_assertions.py +0 -0
- {provide_testkit-0.3.31 → provide_testkit-0.4.2}/src/provide/testkit/process/subprocess_fixtures.py +0 -0
- {provide_testkit-0.3.31 → provide_testkit-0.4.2}/src/provide/testkit/process/system_fixtures.py +0 -0
- {provide_testkit-0.3.31 → provide_testkit-0.4.2}/src/provide/testkit/provide_testkit_init.pth +0 -0
- {provide_testkit-0.3.31 → provide_testkit-0.4.2}/src/provide/testkit/py.typed +0 -0
- {provide_testkit-0.3.31 → provide_testkit-0.4.2}/src/provide/testkit/pytest_plugin.py +0 -0
- {provide_testkit-0.3.31 → provide_testkit-0.4.2}/src/provide/testkit/quality/__init__.py +0 -0
- {provide_testkit-0.3.31 → provide_testkit-0.4.2}/src/provide/testkit/quality/artifacts.py +0 -0
- {provide_testkit-0.3.31 → provide_testkit-0.4.2}/src/provide/testkit/quality/base.py +0 -0
- {provide_testkit-0.3.31 → provide_testkit-0.4.2}/src/provide/testkit/quality/complexity/__init__.py +0 -0
- {provide_testkit-0.3.31 → provide_testkit-0.4.2}/src/provide/testkit/quality/complexity/analyzer.py +0 -0
- {provide_testkit-0.3.31 → provide_testkit-0.4.2}/src/provide/testkit/quality/complexity/fixture.py +0 -0
- {provide_testkit-0.3.31 → provide_testkit-0.4.2}/src/provide/testkit/quality/coverage/__init__.py +0 -0
- {provide_testkit-0.3.31 → provide_testkit-0.4.2}/src/provide/testkit/quality/coverage/fixture.py +0 -0
- {provide_testkit-0.3.31 → provide_testkit-0.4.2}/src/provide/testkit/quality/coverage/reporter.py +0 -0
- {provide_testkit-0.3.31 → provide_testkit-0.4.2}/src/provide/testkit/quality/coverage/tracker.py +0 -0
- {provide_testkit-0.3.31 → provide_testkit-0.4.2}/src/provide/testkit/quality/decorators.py +0 -0
- {provide_testkit-0.3.31 → provide_testkit-0.4.2}/src/provide/testkit/quality/documentation/__init__.py +0 -0
- {provide_testkit-0.3.31 → provide_testkit-0.4.2}/src/provide/testkit/quality/documentation/checker.py +0 -0
- {provide_testkit-0.3.31 → provide_testkit-0.4.2}/src/provide/testkit/quality/documentation/fixture.py +0 -0
- {provide_testkit-0.3.31 → provide_testkit-0.4.2}/src/provide/testkit/quality/profiling/__init__.py +0 -0
- {provide_testkit-0.3.31 → provide_testkit-0.4.2}/src/provide/testkit/quality/profiling/fixture.py +0 -0
- {provide_testkit-0.3.31 → provide_testkit-0.4.2}/src/provide/testkit/quality/report.py +0 -0
- {provide_testkit-0.3.31 → provide_testkit-0.4.2}/src/provide/testkit/quality/runner.py +0 -0
- {provide_testkit-0.3.31 → provide_testkit-0.4.2}/src/provide/testkit/quality/security/__init__.py +0 -0
- {provide_testkit-0.3.31 → provide_testkit-0.4.2}/src/provide/testkit/quality/security/fixture.py +0 -0
- {provide_testkit-0.3.31 → provide_testkit-0.4.2}/src/provide/testkit/quality/security/gitleaks_scanner.py +0 -0
- {provide_testkit-0.3.31 → provide_testkit-0.4.2}/src/provide/testkit/quality/security/pip_audit_scanner.py +0 -0
- {provide_testkit-0.3.31 → provide_testkit-0.4.2}/src/provide/testkit/quality/security/safety_scanner.py +0 -0
- {provide_testkit-0.3.31 → provide_testkit-0.4.2}/src/provide/testkit/quality/security/scanner.py +0 -0
- {provide_testkit-0.3.31 → provide_testkit-0.4.2}/src/provide/testkit/quality/security/semgrep_scanner.py +0 -0
- {provide_testkit-0.3.31 → provide_testkit-0.4.2}/src/provide/testkit/quality/security/trufflehog_scanner.py +0 -0
- {provide_testkit-0.3.31 → provide_testkit-0.4.2}/src/provide/testkit/streams/__init__.py +0 -0
- {provide_testkit-0.3.31 → provide_testkit-0.4.2}/src/provide/testkit/streams/testing.py +0 -0
- {provide_testkit-0.3.31 → provide_testkit-0.4.2}/src/provide/testkit/threading/__init__.py +0 -0
- {provide_testkit-0.3.31 → provide_testkit-0.4.2}/src/provide/testkit/threading/basic_fixtures.py +0 -0
- {provide_testkit-0.3.31 → provide_testkit-0.4.2}/src/provide/testkit/threading/data_fixtures.py +0 -0
- {provide_testkit-0.3.31 → provide_testkit-0.4.2}/src/provide/testkit/threading/execution_fixtures.py +0 -0
- {provide_testkit-0.3.31 → provide_testkit-0.4.2}/src/provide/testkit/threading/fixtures.py +0 -0
- {provide_testkit-0.3.31 → provide_testkit-0.4.2}/src/provide/testkit/threading/sync_fixtures.py +0 -0
- {provide_testkit-0.3.31 → provide_testkit-0.4.2}/src/provide/testkit/time/__init__.py +0 -0
- {provide_testkit-0.3.31 → provide_testkit-0.4.2}/src/provide/testkit/time/classes.py +0 -0
- {provide_testkit-0.3.31 → provide_testkit-0.4.2}/src/provide/testkit/time/controlled.py +0 -0
- {provide_testkit-0.3.31 → provide_testkit-0.4.2}/src/provide/testkit/time/fixtures.py +0 -0
- {provide_testkit-0.3.31 → provide_testkit-0.4.2}/src/provide/testkit/time/freezing.py +0 -0
- {provide_testkit-0.3.31 → provide_testkit-0.4.2}/src/provide/testkit/time/measurement.py +0 -0
- {provide_testkit-0.3.31 → provide_testkit-0.4.2}/src/provide/testkit/time/mocking.py +0 -0
- {provide_testkit-0.3.31 → provide_testkit-0.4.2}/src/provide/testkit/time/rate_limiting.py +0 -0
- {provide_testkit-0.3.31 → provide_testkit-0.4.2}/src/provide/testkit/transport/__init__.py +0 -0
- {provide_testkit-0.3.31 → provide_testkit-0.4.2}/src/provide/testkit/transport/fixtures.py +0 -0
- {provide_testkit-0.3.31 → provide_testkit-0.4.2}/src/provide/testkit/utils/__init__.py +0 -0
- {provide_testkit-0.3.31 → provide_testkit-0.4.2}/src/provide/testkit/utils/environment.py +0 -0
- {provide_testkit-0.3.31 → provide_testkit-0.4.2}/src/provide/testkit/utils/temp_env.py +0 -0
- {provide_testkit-0.3.31 → provide_testkit-0.4.2}/src/provide_testkit.egg-info/SOURCES.txt +0 -0
- {provide_testkit-0.3.31 → provide_testkit-0.4.2}/src/provide_testkit.egg-info/dependency_links.txt +0 -0
- {provide_testkit-0.3.31 → provide_testkit-0.4.2}/src/provide_testkit.egg-info/entry_points.txt +0 -0
- {provide_testkit-0.3.31 → provide_testkit-0.4.2}/src/provide_testkit.egg-info/top_level.txt +0 -0
- {provide_testkit-0.3.31 → provide_testkit-0.4.2}/tests/test_async_fixtures.py +0 -0
- {provide_testkit-0.3.31 → provide_testkit-0.4.2}/tests/test_early_init.py +0 -0
- {provide_testkit-0.3.31 → provide_testkit-0.4.2}/tests/test_placeholder.py +0 -0
- {provide_testkit-0.3.31 → provide_testkit-0.4.2}/tests/test_pth_installation.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: provide-testkit
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.4.2
|
|
4
4
|
Summary: Testing utilities and fixtures for the provide ecosystem.
|
|
5
5
|
Author-email: Tim Perkins <code@tim.life>
|
|
6
6
|
Maintainer-email: "provide.io" <code@provide.io>
|
|
@@ -24,7 +24,7 @@ Classifier: Typing :: Typed
|
|
|
24
24
|
Requires-Python: >=3.11
|
|
25
25
|
Description-Content-Type: text/markdown
|
|
26
26
|
License-File: LICENSE
|
|
27
|
-
Requires-Dist: provide-foundation>=0.
|
|
27
|
+
Requires-Dist: provide-foundation>=0.4.0
|
|
28
28
|
Requires-Dist: attrs>=25.4.0
|
|
29
29
|
Requires-Dist: click>=8.3.1
|
|
30
30
|
Requires-Dist: pytest>=9.0.2
|
|
@@ -44,7 +44,7 @@ Requires-Dist: mutmut; extra == "quality"
|
|
|
44
44
|
Provides-Extra: typecheck
|
|
45
45
|
Requires-Dist: mypy; extra == "typecheck"
|
|
46
46
|
Requires-Dist: pyright; extra == "typecheck"
|
|
47
|
-
Requires-Dist: pyre-check; extra == "typecheck"
|
|
47
|
+
Requires-Dist: pyre-check; sys_platform != "win32" and extra == "typecheck"
|
|
48
48
|
Requires-Dist: pyre-extensions; extra == "typecheck"
|
|
49
49
|
Requires-Dist: pyrefly; extra == "typecheck"
|
|
50
50
|
Requires-Dist: ty; extra == "typecheck"
|
|
@@ -63,7 +63,7 @@ Requires-Dist: pytest-benchmark; extra == "advanced-testing"
|
|
|
63
63
|
Requires-Dist: pytest-testmon; extra == "advanced-testing"
|
|
64
64
|
Requires-Dist: pytest-json-report; extra == "advanced-testing"
|
|
65
65
|
Provides-Extra: profiling
|
|
66
|
-
Requires-Dist: memray; extra == "profiling"
|
|
66
|
+
Requires-Dist: memray; sys_platform != "win32" and extra == "profiling"
|
|
67
67
|
Requires-Dist: viztracer; extra == "profiling"
|
|
68
68
|
Provides-Extra: transport
|
|
69
69
|
Requires-Dist: httpx>=0.28.1; extra == "transport"
|
|
@@ -123,17 +123,17 @@ Requires-Dist: bandit; extra == "security"
|
|
|
123
123
|
Requires-Dist: safety; extra == "security"
|
|
124
124
|
Requires-Dist: pip-audit; extra == "security"
|
|
125
125
|
Provides-Extra: standard
|
|
126
|
-
Requires-Dist: provide-testkit[crypto,process,quality,transport]; extra == "standard"
|
|
126
|
+
Requires-Dist: provide-testkit[crypto,process,quality,transport]>=0.4.0; extra == "standard"
|
|
127
127
|
Provides-Extra: grpc-dev
|
|
128
|
-
Requires-Dist: provide-testkit[grpc,standard,typecheck]; extra == "grpc-dev"
|
|
128
|
+
Requires-Dist: provide-testkit[grpc,standard,typecheck]>=0.4.0; extra == "grpc-dev"
|
|
129
129
|
Provides-Extra: pyvider-dev
|
|
130
|
-
Requires-Dist: provide-testkit[advanced-testing,build,grpc,profiling,security,standard,typecheck]; extra == "pyvider-dev"
|
|
130
|
+
Requires-Dist: provide-testkit[advanced-testing,build,grpc,profiling,security,standard,typecheck]>=0.4.0; extra == "pyvider-dev"
|
|
131
131
|
Provides-Extra: all
|
|
132
|
-
Requires-Dist: provide-testkit[advanced-testing,build,crypto,docs,fuzzing,grpc,process,profiling,quality,security,transport,typecheck,utils]; extra == "all"
|
|
132
|
+
Requires-Dist: provide-testkit[advanced-testing,build,crypto,docs,fuzzing,grpc,process,profiling,quality,security,transport,typecheck,utils]>=0.4.0; extra == "all"
|
|
133
133
|
Provides-Extra: dev
|
|
134
|
-
Requires-Dist: provide-testkit[advanced-testing,quality]; extra == "dev"
|
|
134
|
+
Requires-Dist: provide-testkit[advanced-testing,quality]>=0.4.0; extra == "dev"
|
|
135
135
|
Provides-Extra: docs-standalone
|
|
136
|
-
Requires-Dist: provide-testkit[docs]; extra == "docs-standalone"
|
|
136
|
+
Requires-Dist: provide-testkit[docs]>=0.4.0; extra == "docs-standalone"
|
|
137
137
|
Dynamic: license-file
|
|
138
138
|
|
|
139
139
|
# 🧪✅ Provide TestKit
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
0.4.2
|
|
@@ -1,5 +1,8 @@
|
|
|
1
|
+
# SPDX-FileCopyrightText: Copyright (c) 2026 provide.io llc. All rights reserved.
|
|
2
|
+
# SPDX-License-Identifier: Apache-2.0
|
|
3
|
+
|
|
1
4
|
#
|
|
2
|
-
# provide-testkit/pyproject.toml
|
|
5
|
+
# provide-testkit>=0.4.0/pyproject.toml
|
|
3
6
|
#
|
|
4
7
|
# Testing utilities and fixtures for the provide ecosystem.
|
|
5
8
|
#
|
|
@@ -36,7 +39,7 @@ classifiers = [
|
|
|
36
39
|
"Typing :: Typed",
|
|
37
40
|
]
|
|
38
41
|
dependencies = [
|
|
39
|
-
"provide-foundation>=0.
|
|
42
|
+
"provide-foundation>=0.4.0",
|
|
40
43
|
"attrs>=25.4.0",
|
|
41
44
|
"click>=8.3.1", # For CLI testing utilities - SHARED with Foundation
|
|
42
45
|
# Core testing - minimum version constraints for stability
|
|
@@ -71,7 +74,10 @@ quality = [
|
|
|
71
74
|
typecheck = [
|
|
72
75
|
"mypy",
|
|
73
76
|
"pyright",
|
|
74
|
-
|
|
77
|
+
# pyre-check publishes no Windows wheel (MacOS and POSIX::Linux only) and
|
|
78
|
+
# pulls testslide, which is Linux-only, so `uv sync` tries to build both from
|
|
79
|
+
# source on Windows and fails.
|
|
80
|
+
"pyre-check; sys_platform != 'win32'",
|
|
75
81
|
"pyre-extensions",
|
|
76
82
|
"pyrefly",
|
|
77
83
|
"ty",
|
|
@@ -96,7 +102,11 @@ advanced-testing = [
|
|
|
96
102
|
|
|
97
103
|
# Performance profiling (no upper bounds - use latest)
|
|
98
104
|
profiling = [
|
|
99
|
-
|
|
105
|
+
# memray is a POSIX profiler -- it declares MacOS and POSIX::Linux, publishes
|
|
106
|
+
# no Windows wheel, and its scikit-build-core/CMake build fails outright
|
|
107
|
+
# against Visual Studio. Installing this extra on Windows used to break the
|
|
108
|
+
# whole resolution rather than skip the profiler.
|
|
109
|
+
"memray; sys_platform != 'win32'",
|
|
100
110
|
"viztracer",
|
|
101
111
|
]
|
|
102
112
|
|
|
@@ -202,28 +212,28 @@ security = [
|
|
|
202
212
|
|
|
203
213
|
# Convenience groups
|
|
204
214
|
standard = [
|
|
205
|
-
"provide-testkit[quality,transport,crypto,process]",
|
|
215
|
+
"provide-testkit[quality,transport,crypto,process]>=0.4.0",
|
|
206
216
|
]
|
|
207
217
|
|
|
208
218
|
grpc-dev = [
|
|
209
|
-
"provide-testkit[standard,grpc,typecheck]",
|
|
219
|
+
"provide-testkit[standard,grpc,typecheck]>=0.4.0",
|
|
210
220
|
]
|
|
211
221
|
|
|
212
222
|
pyvider-dev = [
|
|
213
|
-
"provide-testkit[standard,advanced-testing,typecheck,grpc,build,profiling,security]",
|
|
223
|
+
"provide-testkit[standard,advanced-testing,typecheck,grpc,build,profiling,security]>=0.4.0",
|
|
214
224
|
]
|
|
215
225
|
|
|
216
226
|
all = [
|
|
217
|
-
"provide-testkit[quality,typecheck,advanced-testing,profiling,transport,crypto,process,grpc,build,docs,utils,security,fuzzing]",
|
|
227
|
+
"provide-testkit[quality,typecheck,advanced-testing,profiling,transport,crypto,process,grpc,build,docs,utils,security,fuzzing]>=0.4.0",
|
|
218
228
|
]
|
|
219
229
|
|
|
220
230
|
dev = [
|
|
221
|
-
"provide-testkit[quality,advanced-testing]",
|
|
231
|
+
"provide-testkit[quality,advanced-testing]>=0.4.0",
|
|
222
232
|
]
|
|
223
233
|
|
|
224
234
|
# Self-referential docs for testkit itself
|
|
225
235
|
docs-standalone = [
|
|
226
|
-
"provide-testkit[docs]",
|
|
236
|
+
"provide-testkit[docs]>=0.4.0",
|
|
227
237
|
]
|
|
228
238
|
|
|
229
239
|
[project.scripts]
|
|
@@ -240,10 +250,10 @@ dev = [
|
|
|
240
250
|
"mkdocs-macros-plugin",
|
|
241
251
|
"mkdocstrings",
|
|
242
252
|
"mkdocstrings-python",
|
|
243
|
-
"provide-testkit[quality,advanced-testing]",
|
|
253
|
+
"provide-testkit[quality,advanced-testing]>=0.4.0",
|
|
244
254
|
]
|
|
245
255
|
docs = [
|
|
246
|
-
# provide-foundry - install separately for docs builds
|
|
256
|
+
# provide-foundry>=0.4.0 - install separately for docs builds
|
|
247
257
|
]
|
|
248
258
|
|
|
249
259
|
################################################################################
|
|
@@ -267,7 +277,7 @@ version = {file = "VERSION"}
|
|
|
267
277
|
################################################################################
|
|
268
278
|
|
|
269
279
|
[tool.pytest.ini_options]
|
|
270
|
-
minversion = "
|
|
280
|
+
minversion = "0.4.0"
|
|
271
281
|
addopts = "-ra -s --strict-markers --strict-config -m 'not memray'"
|
|
272
282
|
# Parallel execution: pytest -n <workers> (range: 2-16, recommend: CPU cores or 8, max: 16 to avoid xdist hang)
|
|
273
283
|
asyncio_mode = "auto"
|
|
@@ -281,7 +291,6 @@ markers = [
|
|
|
281
291
|
"slow: marks tests as slow (deselect with '-m \"not slow\"')",
|
|
282
292
|
"integration: marks tests as integration tests",
|
|
283
293
|
"unit: marks tests as unit tests",
|
|
284
|
-
"memray: marks tests as memray allocation profiling tests",
|
|
285
294
|
]
|
|
286
295
|
|
|
287
296
|
################################################################################
|
|
@@ -292,6 +301,8 @@ markers = [
|
|
|
292
301
|
target-version = "py311"
|
|
293
302
|
line-length = 111
|
|
294
303
|
indent-width = 4
|
|
304
|
+
# ruff format touches Python code blocks embedded in Markdown; docs prose is not the formatter's to restyle.
|
|
305
|
+
extend-exclude = ["**/*.md"]
|
|
295
306
|
|
|
296
307
|
[tool.ruff.lint]
|
|
297
308
|
select = ["E", "F", "W", "I", "UP", "ANN", "B", "BLE", "C90", "PIE", "PLR", "S", "SIM", "PTH", "RUF"]
|
|
@@ -309,6 +320,7 @@ ignore = [
|
|
|
309
320
|
"PLR0911", # too-many-return-statements (refactor later)
|
|
310
321
|
"PLR0912", # too-many-branches (refactor later)
|
|
311
322
|
"PLR0913", # too-many-arguments (common in config classes)
|
|
323
|
+
"PLR0917", # too-many-positional-arguments (same rationale as PLR0913)
|
|
312
324
|
"PLR0915", # too-many-statements (refactor later)
|
|
313
325
|
"PLR2004", # magic-value-comparison (too noisy)
|
|
314
326
|
]
|
|
@@ -341,13 +353,24 @@ warn_redundant_casts = true
|
|
|
341
353
|
warn_unused_ignores = true
|
|
342
354
|
show_error_codes = true
|
|
343
355
|
|
|
356
|
+
# memray ships without .pyi stubs; try/except import pattern handles absence.
|
|
357
|
+
[[tool.mypy.overrides]]
|
|
358
|
+
module = ["memray", "memray.*"]
|
|
359
|
+
ignore_missing_imports = true
|
|
360
|
+
|
|
361
|
+
# click.Path(path_type=Path) returns a generic _PathType typevar mypy can't
|
|
362
|
+
# narrow; the pattern appears 12+ times in this CLI module.
|
|
363
|
+
[[tool.mypy.overrides]]
|
|
364
|
+
module = ["provide.testkit.quality.cli"]
|
|
365
|
+
disable_error_code = ["type-var"]
|
|
366
|
+
|
|
344
367
|
[tool.coverage.run]
|
|
345
368
|
source = ["src"]
|
|
346
369
|
branch = true
|
|
347
370
|
parallel = true
|
|
348
371
|
|
|
349
372
|
[tool.coverage.report]
|
|
350
|
-
fail_under = 40
|
|
373
|
+
fail_under = 40 # TODO: Restore to 70 after adding tests for quality/, streams/, threading/ modules
|
|
351
374
|
exclude_lines = [
|
|
352
375
|
"pragma: no cover",
|
|
353
376
|
"def __repr__",
|
|
@@ -370,7 +393,6 @@ exclude_dirs = [".venv", "tests", "workenv"]
|
|
|
370
393
|
|
|
371
394
|
[tool.security]
|
|
372
395
|
# Paths to exclude from secret scanning (TruffleHog, GitGuardian, Gitleaks)
|
|
373
|
-
# Run: we security generate (via wrknv) to regenerate tool configs
|
|
374
396
|
description = "Test fixtures with example credentials - intentionally committed"
|
|
375
397
|
allowed_paths = [
|
|
376
398
|
# Test EC private keys used for mTLS/crypto testing fixtures
|
|
@@ -55,6 +55,7 @@ def quality_cli(ctx: click.Context) -> None:
|
|
|
55
55
|
@click.option("--config", type=click.Path(exists=True, path_type=Path), help="Configuration file (JSON)")
|
|
56
56
|
@click.option("--verbose", "-v", is_flag=True, help="Verbose output")
|
|
57
57
|
def analyze_command(
|
|
58
|
+
*,
|
|
58
59
|
path: Path,
|
|
59
60
|
tool: tuple[str, ...],
|
|
60
61
|
artifact_dir: Path,
|
|
@@ -126,6 +127,7 @@ def analyze_command(
|
|
|
126
127
|
)
|
|
127
128
|
@click.option("--verbose", "-v", is_flag=True, help="Verbose output")
|
|
128
129
|
def gates_command(
|
|
130
|
+
*,
|
|
129
131
|
path: Path,
|
|
130
132
|
coverage: float | None,
|
|
131
133
|
security: float | None,
|
|
@@ -235,7 +237,7 @@ def _print_detailed_results(results: Any) -> None:
|
|
|
235
237
|
@click.option("--xml", is_flag=True, help="Generate XML report")
|
|
236
238
|
@click.option("--verbose", "-v", is_flag=True, help="Verbose output")
|
|
237
239
|
def coverage_command(
|
|
238
|
-
path: Path, min_coverage: float, artifact_dir: Path, html: bool, xml: bool, verbose: bool
|
|
240
|
+
*, path: Path, min_coverage: float, artifact_dir: Path, html: bool, xml: bool, verbose: bool
|
|
239
241
|
) -> None:
|
|
240
242
|
"""Run coverage analysis on the given path."""
|
|
241
243
|
try:
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: provide-testkit
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.4.2
|
|
4
4
|
Summary: Testing utilities and fixtures for the provide ecosystem.
|
|
5
5
|
Author-email: Tim Perkins <code@tim.life>
|
|
6
6
|
Maintainer-email: "provide.io" <code@provide.io>
|
|
@@ -24,7 +24,7 @@ Classifier: Typing :: Typed
|
|
|
24
24
|
Requires-Python: >=3.11
|
|
25
25
|
Description-Content-Type: text/markdown
|
|
26
26
|
License-File: LICENSE
|
|
27
|
-
Requires-Dist: provide-foundation>=0.
|
|
27
|
+
Requires-Dist: provide-foundation>=0.4.0
|
|
28
28
|
Requires-Dist: attrs>=25.4.0
|
|
29
29
|
Requires-Dist: click>=8.3.1
|
|
30
30
|
Requires-Dist: pytest>=9.0.2
|
|
@@ -44,7 +44,7 @@ Requires-Dist: mutmut; extra == "quality"
|
|
|
44
44
|
Provides-Extra: typecheck
|
|
45
45
|
Requires-Dist: mypy; extra == "typecheck"
|
|
46
46
|
Requires-Dist: pyright; extra == "typecheck"
|
|
47
|
-
Requires-Dist: pyre-check; extra == "typecheck"
|
|
47
|
+
Requires-Dist: pyre-check; sys_platform != "win32" and extra == "typecheck"
|
|
48
48
|
Requires-Dist: pyre-extensions; extra == "typecheck"
|
|
49
49
|
Requires-Dist: pyrefly; extra == "typecheck"
|
|
50
50
|
Requires-Dist: ty; extra == "typecheck"
|
|
@@ -63,7 +63,7 @@ Requires-Dist: pytest-benchmark; extra == "advanced-testing"
|
|
|
63
63
|
Requires-Dist: pytest-testmon; extra == "advanced-testing"
|
|
64
64
|
Requires-Dist: pytest-json-report; extra == "advanced-testing"
|
|
65
65
|
Provides-Extra: profiling
|
|
66
|
-
Requires-Dist: memray; extra == "profiling"
|
|
66
|
+
Requires-Dist: memray; sys_platform != "win32" and extra == "profiling"
|
|
67
67
|
Requires-Dist: viztracer; extra == "profiling"
|
|
68
68
|
Provides-Extra: transport
|
|
69
69
|
Requires-Dist: httpx>=0.28.1; extra == "transport"
|
|
@@ -123,17 +123,17 @@ Requires-Dist: bandit; extra == "security"
|
|
|
123
123
|
Requires-Dist: safety; extra == "security"
|
|
124
124
|
Requires-Dist: pip-audit; extra == "security"
|
|
125
125
|
Provides-Extra: standard
|
|
126
|
-
Requires-Dist: provide-testkit[crypto,process,quality,transport]; extra == "standard"
|
|
126
|
+
Requires-Dist: provide-testkit[crypto,process,quality,transport]>=0.4.0; extra == "standard"
|
|
127
127
|
Provides-Extra: grpc-dev
|
|
128
|
-
Requires-Dist: provide-testkit[grpc,standard,typecheck]; extra == "grpc-dev"
|
|
128
|
+
Requires-Dist: provide-testkit[grpc,standard,typecheck]>=0.4.0; extra == "grpc-dev"
|
|
129
129
|
Provides-Extra: pyvider-dev
|
|
130
|
-
Requires-Dist: provide-testkit[advanced-testing,build,grpc,profiling,security,standard,typecheck]; extra == "pyvider-dev"
|
|
130
|
+
Requires-Dist: provide-testkit[advanced-testing,build,grpc,profiling,security,standard,typecheck]>=0.4.0; extra == "pyvider-dev"
|
|
131
131
|
Provides-Extra: all
|
|
132
|
-
Requires-Dist: provide-testkit[advanced-testing,build,crypto,docs,fuzzing,grpc,process,profiling,quality,security,transport,typecheck,utils]; extra == "all"
|
|
132
|
+
Requires-Dist: provide-testkit[advanced-testing,build,crypto,docs,fuzzing,grpc,process,profiling,quality,security,transport,typecheck,utils]>=0.4.0; extra == "all"
|
|
133
133
|
Provides-Extra: dev
|
|
134
|
-
Requires-Dist: provide-testkit[advanced-testing,quality]; extra == "dev"
|
|
134
|
+
Requires-Dist: provide-testkit[advanced-testing,quality]>=0.4.0; extra == "dev"
|
|
135
135
|
Provides-Extra: docs-standalone
|
|
136
|
-
Requires-Dist: provide-testkit[docs]; extra == "docs-standalone"
|
|
136
|
+
Requires-Dist: provide-testkit[docs]>=0.4.0; extra == "docs-standalone"
|
|
137
137
|
Dynamic: license-file
|
|
138
138
|
|
|
139
139
|
# 🧪✅ Provide TestKit
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
provide-foundation>=0.
|
|
1
|
+
provide-foundation>=0.4.0
|
|
2
2
|
attrs>=25.4.0
|
|
3
3
|
click>=8.3.1
|
|
4
4
|
pytest>=9.0.2
|
|
@@ -17,7 +17,7 @@ pytest-testmon
|
|
|
17
17
|
pytest-json-report
|
|
18
18
|
|
|
19
19
|
[all]
|
|
20
|
-
provide-testkit[advanced-testing,build,crypto,docs,fuzzing,grpc,process,profiling,quality,security,transport,typecheck,utils]
|
|
20
|
+
provide-testkit[advanced-testing,build,crypto,docs,fuzzing,grpc,process,profiling,quality,security,transport,typecheck,utils]>=0.4.0
|
|
21
21
|
|
|
22
22
|
[build]
|
|
23
23
|
hatch
|
|
@@ -30,7 +30,7 @@ cryptography>=45.0.7
|
|
|
30
30
|
types-cryptography
|
|
31
31
|
|
|
32
32
|
[dev]
|
|
33
|
-
provide-testkit[advanced-testing,quality]
|
|
33
|
+
provide-testkit[advanced-testing,quality]>=0.4.0
|
|
34
34
|
|
|
35
35
|
[docs]
|
|
36
36
|
mkdocs
|
|
@@ -60,7 +60,7 @@ watchdog
|
|
|
60
60
|
pyyaml
|
|
61
61
|
|
|
62
62
|
[docs-standalone]
|
|
63
|
-
provide-testkit[docs]
|
|
63
|
+
provide-testkit[docs]>=0.4.0
|
|
64
64
|
|
|
65
65
|
[fuzzing]
|
|
66
66
|
pynguin
|
|
@@ -72,18 +72,20 @@ grpcio-tools
|
|
|
72
72
|
grpcio-health-checking
|
|
73
73
|
|
|
74
74
|
[grpc-dev]
|
|
75
|
-
provide-testkit[grpc,standard,typecheck]
|
|
75
|
+
provide-testkit[grpc,standard,typecheck]>=0.4.0
|
|
76
76
|
|
|
77
77
|
[process]
|
|
78
78
|
psutil>=7.0.0
|
|
79
79
|
setproctitle>=1.3.7
|
|
80
80
|
|
|
81
81
|
[profiling]
|
|
82
|
-
memray
|
|
83
82
|
viztracer
|
|
84
83
|
|
|
84
|
+
[profiling:sys_platform != "win32"]
|
|
85
|
+
memray
|
|
86
|
+
|
|
85
87
|
[pyvider-dev]
|
|
86
|
-
provide-testkit[advanced-testing,build,grpc,profiling,security,standard,typecheck]
|
|
88
|
+
provide-testkit[advanced-testing,build,grpc,profiling,security,standard,typecheck]>=0.4.0
|
|
87
89
|
|
|
88
90
|
[quality]
|
|
89
91
|
ruff
|
|
@@ -100,7 +102,7 @@ safety
|
|
|
100
102
|
pip-audit
|
|
101
103
|
|
|
102
104
|
[standard]
|
|
103
|
-
provide-testkit[crypto,process,quality,transport]
|
|
105
|
+
provide-testkit[crypto,process,quality,transport]>=0.4.0
|
|
104
106
|
|
|
105
107
|
[transport]
|
|
106
108
|
httpx>=0.28.1
|
|
@@ -110,7 +112,6 @@ h2
|
|
|
110
112
|
[typecheck]
|
|
111
113
|
mypy
|
|
112
114
|
pyright
|
|
113
|
-
pyre-check
|
|
114
115
|
pyre-extensions
|
|
115
116
|
pyrefly
|
|
116
117
|
ty
|
|
@@ -122,6 +123,9 @@ types-click
|
|
|
122
123
|
types-pyyaml
|
|
123
124
|
types-psutil
|
|
124
125
|
|
|
126
|
+
[typecheck:sys_platform != "win32"]
|
|
127
|
+
pyre-check
|
|
128
|
+
|
|
125
129
|
[utils]
|
|
126
130
|
pyyaml
|
|
127
131
|
reuse
|
provide_testkit-0.3.31/VERSION
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
0.3.31
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{provide_testkit-0.3.31 → provide_testkit-0.4.2}/src/provide/testkit/chaos/concurrency_strategies.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{provide_testkit-0.3.31 → provide_testkit-0.4.2}/src/provide/testkit/chaos/time_strategies.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{provide_testkit-0.3.31 → provide_testkit-0.4.2}/src/provide/testkit/file/content_fixtures.py
RENAMED
|
File without changes
|
{provide_testkit-0.3.31 → provide_testkit-0.4.2}/src/provide/testkit/file/directory_fixtures.py
RENAMED
|
File without changes
|
|
File without changes
|
{provide_testkit-0.3.31 → provide_testkit-0.4.2}/src/provide/testkit/file/special_fixtures.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{provide_testkit-0.3.31 → provide_testkit-0.4.2}/src/provide/testkit/process/async_fixtures.py
RENAMED
|
File without changes
|
|
File without changes
|
{provide_testkit-0.3.31 → provide_testkit-0.4.2}/src/provide/testkit/process/script_assertions.py
RENAMED
|
File without changes
|
{provide_testkit-0.3.31 → provide_testkit-0.4.2}/src/provide/testkit/process/subprocess_fixtures.py
RENAMED
|
File without changes
|
{provide_testkit-0.3.31 → provide_testkit-0.4.2}/src/provide/testkit/process/system_fixtures.py
RENAMED
|
File without changes
|
{provide_testkit-0.3.31 → provide_testkit-0.4.2}/src/provide/testkit/provide_testkit_init.pth
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{provide_testkit-0.3.31 → provide_testkit-0.4.2}/src/provide/testkit/quality/complexity/__init__.py
RENAMED
|
File without changes
|
{provide_testkit-0.3.31 → provide_testkit-0.4.2}/src/provide/testkit/quality/complexity/analyzer.py
RENAMED
|
File without changes
|
{provide_testkit-0.3.31 → provide_testkit-0.4.2}/src/provide/testkit/quality/complexity/fixture.py
RENAMED
|
File without changes
|
{provide_testkit-0.3.31 → provide_testkit-0.4.2}/src/provide/testkit/quality/coverage/__init__.py
RENAMED
|
File without changes
|
{provide_testkit-0.3.31 → provide_testkit-0.4.2}/src/provide/testkit/quality/coverage/fixture.py
RENAMED
|
File without changes
|
{provide_testkit-0.3.31 → provide_testkit-0.4.2}/src/provide/testkit/quality/coverage/reporter.py
RENAMED
|
File without changes
|
{provide_testkit-0.3.31 → provide_testkit-0.4.2}/src/provide/testkit/quality/coverage/tracker.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{provide_testkit-0.3.31 → provide_testkit-0.4.2}/src/provide/testkit/quality/profiling/__init__.py
RENAMED
|
File without changes
|
{provide_testkit-0.3.31 → provide_testkit-0.4.2}/src/provide/testkit/quality/profiling/fixture.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{provide_testkit-0.3.31 → provide_testkit-0.4.2}/src/provide/testkit/quality/security/__init__.py
RENAMED
|
File without changes
|
{provide_testkit-0.3.31 → provide_testkit-0.4.2}/src/provide/testkit/quality/security/fixture.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{provide_testkit-0.3.31 → provide_testkit-0.4.2}/src/provide/testkit/quality/security/scanner.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{provide_testkit-0.3.31 → provide_testkit-0.4.2}/src/provide/testkit/threading/basic_fixtures.py
RENAMED
|
File without changes
|
{provide_testkit-0.3.31 → provide_testkit-0.4.2}/src/provide/testkit/threading/data_fixtures.py
RENAMED
|
File without changes
|
{provide_testkit-0.3.31 → provide_testkit-0.4.2}/src/provide/testkit/threading/execution_fixtures.py
RENAMED
|
File without changes
|
|
File without changes
|
{provide_testkit-0.3.31 → provide_testkit-0.4.2}/src/provide/testkit/threading/sync_fixtures.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{provide_testkit-0.3.31 → provide_testkit-0.4.2}/src/provide_testkit.egg-info/dependency_links.txt
RENAMED
|
File without changes
|
{provide_testkit-0.3.31 → provide_testkit-0.4.2}/src/provide_testkit.egg-info/entry_points.txt
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|