provide-testkit 0.4.0__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.
Files changed (117) hide show
  1. {provide_testkit-0.4.0/src/provide_testkit.egg-info → provide_testkit-0.4.2}/PKG-INFO +10 -10
  2. provide_testkit-0.4.2/VERSION +1 -0
  3. {provide_testkit-0.4.0 → provide_testkit-0.4.2}/pyproject.toml +23 -13
  4. {provide_testkit-0.4.0 → provide_testkit-0.4.2}/src/provide/testkit/cli/testing.py +1 -1
  5. {provide_testkit-0.4.0 → provide_testkit-0.4.2}/src/provide/testkit/file/temp.py +1 -1
  6. {provide_testkit-0.4.0 → provide_testkit-0.4.2}/src/provide/testkit/quality/cli.py +3 -1
  7. {provide_testkit-0.4.0 → provide_testkit-0.4.2}/src/provide/testkit/quality/profiling/profiler.py +1 -1
  8. {provide_testkit-0.4.0 → provide_testkit-0.4.2/src/provide_testkit.egg-info}/PKG-INFO +10 -10
  9. {provide_testkit-0.4.0 → provide_testkit-0.4.2}/src/provide_testkit.egg-info/requires.txt +13 -9
  10. provide_testkit-0.4.0/VERSION +0 -1
  11. {provide_testkit-0.4.0 → provide_testkit-0.4.2}/LICENSE +0 -0
  12. {provide_testkit-0.4.0 → provide_testkit-0.4.2}/README.md +0 -0
  13. {provide_testkit-0.4.0 → provide_testkit-0.4.2}/setup.cfg +0 -0
  14. {provide_testkit-0.4.0 → provide_testkit-0.4.2}/src/provide/__init__.py +0 -0
  15. {provide_testkit-0.4.0 → provide_testkit-0.4.2}/src/provide/testkit/__init__.py +0 -0
  16. {provide_testkit-0.4.0 → provide_testkit-0.4.2}/src/provide/testkit/__main__.py +0 -0
  17. {provide_testkit-0.4.0 → provide_testkit-0.4.2}/src/provide/testkit/_blocker.py +0 -0
  18. {provide_testkit-0.4.0 → provide_testkit-0.4.2}/src/provide/testkit/_early_init.py +0 -0
  19. {provide_testkit-0.4.0 → provide_testkit-0.4.2}/src/provide/testkit/_install_blocker.py +0 -0
  20. {provide_testkit-0.4.0 → provide_testkit-0.4.2}/src/provide/testkit/_install_pth.py +0 -0
  21. {provide_testkit-0.4.0 → provide_testkit-0.4.2}/src/provide/testkit/base/__init__.py +0 -0
  22. {provide_testkit-0.4.0 → provide_testkit-0.4.2}/src/provide/testkit/base/foundation.py +0 -0
  23. {provide_testkit-0.4.0 → provide_testkit-0.4.2}/src/provide/testkit/base/harness.py +0 -0
  24. {provide_testkit-0.4.0 → provide_testkit-0.4.2}/src/provide/testkit/base/minimal.py +0 -0
  25. {provide_testkit-0.4.0 → provide_testkit-0.4.2}/src/provide/testkit/chaos/__init__.py +0 -0
  26. {provide_testkit-0.4.0 → provide_testkit-0.4.2}/src/provide/testkit/chaos/concurrency_strategies.py +0 -0
  27. {provide_testkit-0.4.0 → provide_testkit-0.4.2}/src/provide/testkit/chaos/fixtures.py +0 -0
  28. {provide_testkit-0.4.0 → provide_testkit-0.4.2}/src/provide/testkit/chaos/io_strategies.py +0 -0
  29. {provide_testkit-0.4.0 → provide_testkit-0.4.2}/src/provide/testkit/chaos/strategies.py +0 -0
  30. {provide_testkit-0.4.0 → provide_testkit-0.4.2}/src/provide/testkit/chaos/time_strategies.py +0 -0
  31. {provide_testkit-0.4.0 → provide_testkit-0.4.2}/src/provide/testkit/cli/__init__.py +0 -0
  32. {provide_testkit-0.4.0 → provide_testkit-0.4.2}/src/provide/testkit/cli/runner.py +0 -0
  33. {provide_testkit-0.4.0 → provide_testkit-0.4.2}/src/provide/testkit/common/__init__.py +0 -0
  34. {provide_testkit-0.4.0 → provide_testkit-0.4.2}/src/provide/testkit/common/fixtures.py +0 -0
  35. {provide_testkit-0.4.0 → provide_testkit-0.4.2}/src/provide/testkit/conftest.py +0 -0
  36. {provide_testkit-0.4.0 → provide_testkit-0.4.2}/src/provide/testkit/crypto/__init__.py +0 -0
  37. {provide_testkit-0.4.0 → provide_testkit-0.4.2}/src/provide/testkit/crypto/fixtures.py +0 -0
  38. {provide_testkit-0.4.0 → provide_testkit-0.4.2}/src/provide/testkit/file/__init__.py +0 -0
  39. {provide_testkit-0.4.0 → provide_testkit-0.4.2}/src/provide/testkit/file/content_fixtures.py +0 -0
  40. {provide_testkit-0.4.0 → provide_testkit-0.4.2}/src/provide/testkit/file/directory_fixtures.py +0 -0
  41. {provide_testkit-0.4.0 → provide_testkit-0.4.2}/src/provide/testkit/file/fixtures.py +0 -0
  42. {provide_testkit-0.4.0 → provide_testkit-0.4.2}/src/provide/testkit/file/special_fixtures.py +0 -0
  43. {provide_testkit-0.4.0 → provide_testkit-0.4.2}/src/provide/testkit/hub/__init__.py +0 -0
  44. {provide_testkit-0.4.0 → provide_testkit-0.4.2}/src/provide/testkit/hub/fixtures.py +0 -0
  45. {provide_testkit-0.4.0 → provide_testkit-0.4.2}/src/provide/testkit/logger/__init__.py +0 -0
  46. {provide_testkit-0.4.0 → provide_testkit-0.4.2}/src/provide/testkit/logger/hooks.py +0 -0
  47. {provide_testkit-0.4.0 → provide_testkit-0.4.2}/src/provide/testkit/logger/mocks.py +0 -0
  48. {provide_testkit-0.4.0 → provide_testkit-0.4.2}/src/provide/testkit/logger/reset.py +0 -0
  49. {provide_testkit-0.4.0 → provide_testkit-0.4.2}/src/provide/testkit/main.py +0 -0
  50. {provide_testkit-0.4.0 → provide_testkit-0.4.2}/src/provide/testkit/mocking/__init__.py +0 -0
  51. {provide_testkit-0.4.0 → provide_testkit-0.4.2}/src/provide/testkit/mocking/fixtures.py +0 -0
  52. {provide_testkit-0.4.0 → provide_testkit-0.4.2}/src/provide/testkit/mocking/time.py +0 -0
  53. {provide_testkit-0.4.0 → provide_testkit-0.4.2}/src/provide/testkit/process/__init__.py +0 -0
  54. {provide_testkit-0.4.0 → provide_testkit-0.4.2}/src/provide/testkit/process/async_fixtures.py +0 -0
  55. {provide_testkit-0.4.0 → provide_testkit-0.4.2}/src/provide/testkit/process/fixtures.py +0 -0
  56. {provide_testkit-0.4.0 → provide_testkit-0.4.2}/src/provide/testkit/process/script_assertions.py +0 -0
  57. {provide_testkit-0.4.0 → provide_testkit-0.4.2}/src/provide/testkit/process/script_fixtures.py +0 -0
  58. {provide_testkit-0.4.0 → provide_testkit-0.4.2}/src/provide/testkit/process/subprocess_fixtures.py +0 -0
  59. {provide_testkit-0.4.0 → provide_testkit-0.4.2}/src/provide/testkit/process/system_fixtures.py +0 -0
  60. {provide_testkit-0.4.0 → provide_testkit-0.4.2}/src/provide/testkit/provide_testkit_init.pth +0 -0
  61. {provide_testkit-0.4.0 → provide_testkit-0.4.2}/src/provide/testkit/py.typed +0 -0
  62. {provide_testkit-0.4.0 → provide_testkit-0.4.2}/src/provide/testkit/pytest_plugin.py +0 -0
  63. {provide_testkit-0.4.0 → provide_testkit-0.4.2}/src/provide/testkit/quality/__init__.py +0 -0
  64. {provide_testkit-0.4.0 → provide_testkit-0.4.2}/src/provide/testkit/quality/artifacts.py +0 -0
  65. {provide_testkit-0.4.0 → provide_testkit-0.4.2}/src/provide/testkit/quality/base.py +0 -0
  66. {provide_testkit-0.4.0 → provide_testkit-0.4.2}/src/provide/testkit/quality/complexity/__init__.py +0 -0
  67. {provide_testkit-0.4.0 → provide_testkit-0.4.2}/src/provide/testkit/quality/complexity/analyzer.py +0 -0
  68. {provide_testkit-0.4.0 → provide_testkit-0.4.2}/src/provide/testkit/quality/complexity/fixture.py +0 -0
  69. {provide_testkit-0.4.0 → provide_testkit-0.4.2}/src/provide/testkit/quality/coverage/__init__.py +0 -0
  70. {provide_testkit-0.4.0 → provide_testkit-0.4.2}/src/provide/testkit/quality/coverage/fixture.py +0 -0
  71. {provide_testkit-0.4.0 → provide_testkit-0.4.2}/src/provide/testkit/quality/coverage/reporter.py +0 -0
  72. {provide_testkit-0.4.0 → provide_testkit-0.4.2}/src/provide/testkit/quality/coverage/tracker.py +0 -0
  73. {provide_testkit-0.4.0 → provide_testkit-0.4.2}/src/provide/testkit/quality/decorators.py +0 -0
  74. {provide_testkit-0.4.0 → provide_testkit-0.4.2}/src/provide/testkit/quality/documentation/__init__.py +0 -0
  75. {provide_testkit-0.4.0 → provide_testkit-0.4.2}/src/provide/testkit/quality/documentation/checker.py +0 -0
  76. {provide_testkit-0.4.0 → provide_testkit-0.4.2}/src/provide/testkit/quality/documentation/fixture.py +0 -0
  77. {provide_testkit-0.4.0 → provide_testkit-0.4.2}/src/provide/testkit/quality/profiling/__init__.py +0 -0
  78. {provide_testkit-0.4.0 → provide_testkit-0.4.2}/src/provide/testkit/quality/profiling/fixture.py +0 -0
  79. {provide_testkit-0.4.0 → provide_testkit-0.4.2}/src/provide/testkit/quality/report.py +0 -0
  80. {provide_testkit-0.4.0 → provide_testkit-0.4.2}/src/provide/testkit/quality/runner.py +0 -0
  81. {provide_testkit-0.4.0 → provide_testkit-0.4.2}/src/provide/testkit/quality/security/__init__.py +0 -0
  82. {provide_testkit-0.4.0 → provide_testkit-0.4.2}/src/provide/testkit/quality/security/fixture.py +0 -0
  83. {provide_testkit-0.4.0 → provide_testkit-0.4.2}/src/provide/testkit/quality/security/gitleaks_scanner.py +0 -0
  84. {provide_testkit-0.4.0 → provide_testkit-0.4.2}/src/provide/testkit/quality/security/pip_audit_scanner.py +0 -0
  85. {provide_testkit-0.4.0 → provide_testkit-0.4.2}/src/provide/testkit/quality/security/safety_scanner.py +0 -0
  86. {provide_testkit-0.4.0 → provide_testkit-0.4.2}/src/provide/testkit/quality/security/scanner.py +0 -0
  87. {provide_testkit-0.4.0 → provide_testkit-0.4.2}/src/provide/testkit/quality/security/semgrep_scanner.py +0 -0
  88. {provide_testkit-0.4.0 → provide_testkit-0.4.2}/src/provide/testkit/quality/security/trufflehog_scanner.py +0 -0
  89. {provide_testkit-0.4.0 → provide_testkit-0.4.2}/src/provide/testkit/streams/__init__.py +0 -0
  90. {provide_testkit-0.4.0 → provide_testkit-0.4.2}/src/provide/testkit/streams/testing.py +0 -0
  91. {provide_testkit-0.4.0 → provide_testkit-0.4.2}/src/provide/testkit/threading/__init__.py +0 -0
  92. {provide_testkit-0.4.0 → provide_testkit-0.4.2}/src/provide/testkit/threading/basic_fixtures.py +0 -0
  93. {provide_testkit-0.4.0 → provide_testkit-0.4.2}/src/provide/testkit/threading/data_fixtures.py +0 -0
  94. {provide_testkit-0.4.0 → provide_testkit-0.4.2}/src/provide/testkit/threading/execution_fixtures.py +0 -0
  95. {provide_testkit-0.4.0 → provide_testkit-0.4.2}/src/provide/testkit/threading/fixtures.py +0 -0
  96. {provide_testkit-0.4.0 → provide_testkit-0.4.2}/src/provide/testkit/threading/sync_fixtures.py +0 -0
  97. {provide_testkit-0.4.0 → provide_testkit-0.4.2}/src/provide/testkit/time/__init__.py +0 -0
  98. {provide_testkit-0.4.0 → provide_testkit-0.4.2}/src/provide/testkit/time/classes.py +0 -0
  99. {provide_testkit-0.4.0 → provide_testkit-0.4.2}/src/provide/testkit/time/controlled.py +0 -0
  100. {provide_testkit-0.4.0 → provide_testkit-0.4.2}/src/provide/testkit/time/fixtures.py +0 -0
  101. {provide_testkit-0.4.0 → provide_testkit-0.4.2}/src/provide/testkit/time/freezing.py +0 -0
  102. {provide_testkit-0.4.0 → provide_testkit-0.4.2}/src/provide/testkit/time/measurement.py +0 -0
  103. {provide_testkit-0.4.0 → provide_testkit-0.4.2}/src/provide/testkit/time/mocking.py +0 -0
  104. {provide_testkit-0.4.0 → provide_testkit-0.4.2}/src/provide/testkit/time/rate_limiting.py +0 -0
  105. {provide_testkit-0.4.0 → provide_testkit-0.4.2}/src/provide/testkit/transport/__init__.py +0 -0
  106. {provide_testkit-0.4.0 → provide_testkit-0.4.2}/src/provide/testkit/transport/fixtures.py +0 -0
  107. {provide_testkit-0.4.0 → provide_testkit-0.4.2}/src/provide/testkit/utils/__init__.py +0 -0
  108. {provide_testkit-0.4.0 → provide_testkit-0.4.2}/src/provide/testkit/utils/environment.py +0 -0
  109. {provide_testkit-0.4.0 → provide_testkit-0.4.2}/src/provide/testkit/utils/temp_env.py +0 -0
  110. {provide_testkit-0.4.0 → provide_testkit-0.4.2}/src/provide_testkit.egg-info/SOURCES.txt +0 -0
  111. {provide_testkit-0.4.0 → provide_testkit-0.4.2}/src/provide_testkit.egg-info/dependency_links.txt +0 -0
  112. {provide_testkit-0.4.0 → provide_testkit-0.4.2}/src/provide_testkit.egg-info/entry_points.txt +0 -0
  113. {provide_testkit-0.4.0 → provide_testkit-0.4.2}/src/provide_testkit.egg-info/top_level.txt +0 -0
  114. {provide_testkit-0.4.0 → provide_testkit-0.4.2}/tests/test_async_fixtures.py +0 -0
  115. {provide_testkit-0.4.0 → provide_testkit-0.4.2}/tests/test_early_init.py +0 -0
  116. {provide_testkit-0.4.0 → provide_testkit-0.4.2}/tests/test_placeholder.py +0 -0
  117. {provide_testkit-0.4.0 → 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.4.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.3.29
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
@@ -2,7 +2,7 @@
2
2
  # SPDX-License-Identifier: Apache-2.0
3
3
 
4
4
  #
5
- # provide-testkit/pyproject.toml
5
+ # provide-testkit>=0.4.0/pyproject.toml
6
6
  #
7
7
  # Testing utilities and fixtures for the provide ecosystem.
8
8
  #
@@ -39,7 +39,7 @@ classifiers = [
39
39
  "Typing :: Typed",
40
40
  ]
41
41
  dependencies = [
42
- "provide-foundation>=0.3.29",
42
+ "provide-foundation>=0.4.0",
43
43
  "attrs>=25.4.0",
44
44
  "click>=8.3.1", # For CLI testing utilities - SHARED with Foundation
45
45
  # Core testing - minimum version constraints for stability
@@ -74,7 +74,10 @@ quality = [
74
74
  typecheck = [
75
75
  "mypy",
76
76
  "pyright",
77
- "pyre-check",
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'",
78
81
  "pyre-extensions",
79
82
  "pyrefly",
80
83
  "ty",
@@ -99,7 +102,11 @@ advanced-testing = [
99
102
 
100
103
  # Performance profiling (no upper bounds - use latest)
101
104
  profiling = [
102
- "memray",
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'",
103
110
  "viztracer",
104
111
  ]
105
112
 
@@ -205,28 +212,28 @@ security = [
205
212
 
206
213
  # Convenience groups
207
214
  standard = [
208
- "provide-testkit[quality,transport,crypto,process]",
215
+ "provide-testkit[quality,transport,crypto,process]>=0.4.0",
209
216
  ]
210
217
 
211
218
  grpc-dev = [
212
- "provide-testkit[standard,grpc,typecheck]",
219
+ "provide-testkit[standard,grpc,typecheck]>=0.4.0",
213
220
  ]
214
221
 
215
222
  pyvider-dev = [
216
- "provide-testkit[standard,advanced-testing,typecheck,grpc,build,profiling,security]",
223
+ "provide-testkit[standard,advanced-testing,typecheck,grpc,build,profiling,security]>=0.4.0",
217
224
  ]
218
225
 
219
226
  all = [
220
- "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",
221
228
  ]
222
229
 
223
230
  dev = [
224
- "provide-testkit[quality,advanced-testing]",
231
+ "provide-testkit[quality,advanced-testing]>=0.4.0",
225
232
  ]
226
233
 
227
234
  # Self-referential docs for testkit itself
228
235
  docs-standalone = [
229
- "provide-testkit[docs]",
236
+ "provide-testkit[docs]>=0.4.0",
230
237
  ]
231
238
 
232
239
  [project.scripts]
@@ -243,10 +250,10 @@ dev = [
243
250
  "mkdocs-macros-plugin",
244
251
  "mkdocstrings",
245
252
  "mkdocstrings-python",
246
- "provide-testkit[quality,advanced-testing]",
253
+ "provide-testkit[quality,advanced-testing]>=0.4.0",
247
254
  ]
248
255
  docs = [
249
- # provide-foundry - install separately for docs builds
256
+ # provide-foundry>=0.4.0 - install separately for docs builds
250
257
  ]
251
258
 
252
259
  ################################################################################
@@ -270,7 +277,7 @@ version = {file = "VERSION"}
270
277
  ################################################################################
271
278
 
272
279
  [tool.pytest.ini_options]
273
- minversion = "7.0"
280
+ minversion = "0.4.0"
274
281
  addopts = "-ra -s --strict-markers --strict-config -m 'not memray'"
275
282
  # Parallel execution: pytest -n <workers> (range: 2-16, recommend: CPU cores or 8, max: 16 to avoid xdist hang)
276
283
  asyncio_mode = "auto"
@@ -294,6 +301,8 @@ markers = [
294
301
  target-version = "py311"
295
302
  line-length = 111
296
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"]
297
306
 
298
307
  [tool.ruff.lint]
299
308
  select = ["E", "F", "W", "I", "UP", "ANN", "B", "BLE", "C90", "PIE", "PLR", "S", "SIM", "PTH", "RUF"]
@@ -311,6 +320,7 @@ ignore = [
311
320
  "PLR0911", # too-many-return-statements (refactor later)
312
321
  "PLR0912", # too-many-branches (refactor later)
313
322
  "PLR0913", # too-many-arguments (common in config classes)
323
+ "PLR0917", # too-many-positional-arguments (same rationale as PLR0913)
314
324
  "PLR0915", # too-many-statements (refactor later)
315
325
  "PLR2004", # magic-value-comparison (too noisy)
316
326
  ]
@@ -124,7 +124,7 @@ def temp_config_file(
124
124
  f.write(f"{key} = {value}\n")
125
125
  elif format == "yaml":
126
126
  try:
127
- import yaml
127
+ import yaml # type: ignore[import-untyped]
128
128
 
129
129
  yaml.safe_dump(content, f)
130
130
  except ImportError as e:
@@ -107,7 +107,7 @@ class TempFileManager:
107
107
  ImportError: If PyYAML is not available.
108
108
  """
109
109
  try:
110
- import yaml
110
+ import yaml # type: ignore[import-untyped]
111
111
  except ImportError as e:
112
112
  raise ImportError("PyYAML required for YAML file creation") from e
113
113
 
@@ -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:
@@ -25,7 +25,7 @@ try:
25
25
  MEMRAY_AVAILABLE = True
26
26
  except ImportError:
27
27
  MEMRAY_AVAILABLE = False
28
- memray = None # type: ignore[assignment]
28
+ memray = None
29
29
 
30
30
  from ..base import QualityResult, QualityToolError
31
31
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: provide-testkit
3
- Version: 0.4.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.3.29
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.3.29
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
@@ -1 +0,0 @@
1
- 0.4.0
File without changes