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.
Files changed (73) hide show
  1. provide_testkit-0.0.0.dev0/PKG-INFO +145 -0
  2. provide_testkit-0.0.0.dev0/README.md +21 -0
  3. provide_testkit-0.0.0.dev0/VERSION +1 -0
  4. provide_testkit-0.0.0.dev0/pyproject.toml +279 -0
  5. provide_testkit-0.0.0.dev0/setup.cfg +4 -0
  6. provide_testkit-0.0.0.dev0/src/provide/__init__.py +3 -0
  7. provide_testkit-0.0.0.dev0/src/provide/testkit/__init__.py +248 -0
  8. provide_testkit-0.0.0.dev0/src/provide/testkit/archive/__init__.py +24 -0
  9. provide_testkit-0.0.0.dev0/src/provide/testkit/archive/fixtures.py +217 -0
  10. provide_testkit-0.0.0.dev0/src/provide/testkit/cli.py +229 -0
  11. provide_testkit-0.0.0.dev0/src/provide/testkit/common/__init__.py +32 -0
  12. provide_testkit-0.0.0.dev0/src/provide/testkit/common/fixtures.py +234 -0
  13. provide_testkit-0.0.0.dev0/src/provide/testkit/crypto.py +163 -0
  14. provide_testkit-0.0.0.dev0/src/provide/testkit/environment.py +79 -0
  15. provide_testkit-0.0.0.dev0/src/provide/testkit/file/__init__.py +40 -0
  16. provide_testkit-0.0.0.dev0/src/provide/testkit/file/content_fixtures.py +275 -0
  17. provide_testkit-0.0.0.dev0/src/provide/testkit/file/directory_fixtures.py +105 -0
  18. provide_testkit-0.0.0.dev0/src/provide/testkit/file/fixtures.py +49 -0
  19. provide_testkit-0.0.0.dev0/src/provide/testkit/file/special_fixtures.py +141 -0
  20. provide_testkit-0.0.0.dev0/src/provide/testkit/fixtures.py +52 -0
  21. provide_testkit-0.0.0.dev0/src/provide/testkit/harness.py +122 -0
  22. provide_testkit-0.0.0.dev0/src/provide/testkit/hub.py +22 -0
  23. provide_testkit-0.0.0.dev0/src/provide/testkit/logger/__init__.py +39 -0
  24. provide_testkit-0.0.0.dev0/src/provide/testkit/logger/hooks.py +100 -0
  25. provide_testkit-0.0.0.dev0/src/provide/testkit/logger/reset.py +230 -0
  26. provide_testkit-0.0.0.dev0/src/provide/testkit/main.py +22 -0
  27. provide_testkit-0.0.0.dev0/src/provide/testkit/mocking/__init__.py +46 -0
  28. provide_testkit-0.0.0.dev0/src/provide/testkit/mocking/fixtures.py +340 -0
  29. provide_testkit-0.0.0.dev0/src/provide/testkit/process/__init__.py +48 -0
  30. provide_testkit-0.0.0.dev0/src/provide/testkit/process/async_fixtures.py +410 -0
  31. provide_testkit-0.0.0.dev0/src/provide/testkit/process/fixtures.py +54 -0
  32. provide_testkit-0.0.0.dev0/src/provide/testkit/process/subprocess_fixtures.py +208 -0
  33. provide_testkit-0.0.0.dev0/src/provide/testkit/quality/__init__.py +101 -0
  34. provide_testkit-0.0.0.dev0/src/provide/testkit/quality/artifacts.py +360 -0
  35. provide_testkit-0.0.0.dev0/src/provide/testkit/quality/base.py +158 -0
  36. provide_testkit-0.0.0.dev0/src/provide/testkit/quality/cli.py +394 -0
  37. provide_testkit-0.0.0.dev0/src/provide/testkit/quality/complexity/__init__.py +30 -0
  38. provide_testkit-0.0.0.dev0/src/provide/testkit/quality/complexity/analyzer.py +392 -0
  39. provide_testkit-0.0.0.dev0/src/provide/testkit/quality/complexity/fixture.py +196 -0
  40. provide_testkit-0.0.0.dev0/src/provide/testkit/quality/coverage/__init__.py +36 -0
  41. provide_testkit-0.0.0.dev0/src/provide/testkit/quality/coverage/fixture.py +236 -0
  42. provide_testkit-0.0.0.dev0/src/provide/testkit/quality/coverage/reporter.py +150 -0
  43. provide_testkit-0.0.0.dev0/src/provide/testkit/quality/coverage/tracker.py +313 -0
  44. provide_testkit-0.0.0.dev0/src/provide/testkit/quality/decorators.py +380 -0
  45. provide_testkit-0.0.0.dev0/src/provide/testkit/quality/documentation/__init__.py +29 -0
  46. provide_testkit-0.0.0.dev0/src/provide/testkit/quality/documentation/checker.py +361 -0
  47. provide_testkit-0.0.0.dev0/src/provide/testkit/quality/documentation/fixture.py +187 -0
  48. provide_testkit-0.0.0.dev0/src/provide/testkit/quality/profiling/__init__.py +30 -0
  49. provide_testkit-0.0.0.dev0/src/provide/testkit/quality/profiling/fixture.py +332 -0
  50. provide_testkit-0.0.0.dev0/src/provide/testkit/quality/profiling/profiler.py +428 -0
  51. provide_testkit-0.0.0.dev0/src/provide/testkit/quality/report.py +266 -0
  52. provide_testkit-0.0.0.dev0/src/provide/testkit/quality/runner.py +319 -0
  53. provide_testkit-0.0.0.dev0/src/provide/testkit/quality/security/__init__.py +29 -0
  54. provide_testkit-0.0.0.dev0/src/provide/testkit/quality/security/fixture.py +196 -0
  55. provide_testkit-0.0.0.dev0/src/provide/testkit/quality/security/scanner.py +338 -0
  56. provide_testkit-0.0.0.dev0/src/provide/testkit/streams.py +54 -0
  57. provide_testkit-0.0.0.dev0/src/provide/testkit/threading/__init__.py +38 -0
  58. provide_testkit-0.0.0.dev0/src/provide/testkit/threading/basic_fixtures.py +103 -0
  59. provide_testkit-0.0.0.dev0/src/provide/testkit/threading/data_fixtures.py +101 -0
  60. provide_testkit-0.0.0.dev0/src/provide/testkit/threading/execution_fixtures.py +268 -0
  61. provide_testkit-0.0.0.dev0/src/provide/testkit/threading/fixtures.py +50 -0
  62. provide_testkit-0.0.0.dev0/src/provide/testkit/threading/sync_fixtures.py +98 -0
  63. provide_testkit-0.0.0.dev0/src/provide/testkit/time/__init__.py +32 -0
  64. provide_testkit-0.0.0.dev0/src/provide/testkit/time/fixtures.py +416 -0
  65. provide_testkit-0.0.0.dev0/src/provide/testkit/transport/__init__.py +30 -0
  66. provide_testkit-0.0.0.dev0/src/provide/testkit/transport/fixtures.py +278 -0
  67. provide_testkit-0.0.0.dev0/src/provide_testkit.egg-info/PKG-INFO +145 -0
  68. provide_testkit-0.0.0.dev0/src/provide_testkit.egg-info/SOURCES.txt +71 -0
  69. provide_testkit-0.0.0.dev0/src/provide_testkit.egg-info/dependency_links.txt +1 -0
  70. provide_testkit-0.0.0.dev0/src/provide_testkit.egg-info/entry_points.txt +2 -0
  71. provide_testkit-0.0.0.dev0/src/provide_testkit.egg-info/requires.txt +115 -0
  72. provide_testkit-0.0.0.dev0/src/provide_testkit.egg-info/top_level.txt +1 -0
  73. 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
+ ![Python 3.11+](https://img.shields.io/badge/python-3.11+-blue.svg)
128
+ ![License: Apache 2.0](https://img.shields.io/badge/license-Apache%202.0-blue.svg)
129
+ ![Testing](https://img.shields.io/badge/testing-pytest-green.svg)
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
+ ![Python 3.11+](https://img.shields.io/badge/python-3.11+-blue.svg)
4
+ ![License: Apache 2.0](https://img.shields.io/badge/license-Apache%202.0-blue.svg)
5
+ ![Testing](https://img.shields.io/badge/testing-pytest-green.svg)
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
+ ]
@@ -0,0 +1,4 @@
1
+ [egg_info]
2
+ tag_build =
3
+ tag_date = 0
4
+
@@ -0,0 +1,3 @@
1
+ """Provide namespace package."""
2
+
3
+ __path__ = __import__("pkgutil").extend_path(__path__, __name__)