iperf3-lib 0.2.0__tar.gz → 0.3.0__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.
- {iperf3_lib-0.2.0 → iperf3_lib-0.3.0}/.dockerignore +2 -0
- iperf3_lib-0.3.0/.gitattributes +1 -0
- iperf3_lib-0.3.0/.github/ISSUE_TEMPLATE/bug.yml +30 -0
- iperf3_lib-0.3.0/.github/ISSUE_TEMPLATE/config.yml +8 -0
- iperf3_lib-0.3.0/.github/ISSUE_TEMPLATE/feature.yml +30 -0
- iperf3_lib-0.3.0/.github/ISSUE_TEMPLATE/task.yml +21 -0
- {iperf3_lib-0.2.0 → iperf3_lib-0.3.0}/.github/dependabot.yml +10 -19
- {iperf3_lib-0.2.0 → iperf3_lib-0.3.0}/.github/workflows/ci.yml +46 -36
- iperf3_lib-0.3.0/.github/workflows/docs.yml +57 -0
- iperf3_lib-0.3.0/.github/workflows/release.yml +370 -0
- iperf3_lib-0.3.0/.yaga/change-policy.toml +6 -0
- iperf3_lib-0.3.0/.yaga/checks/repository.toml +8 -0
- iperf3_lib-0.3.0/.yaga/mode-policy.toml +2 -0
- iperf3_lib-0.3.0/.yaga/path-policy.toml +2 -0
- iperf3_lib-0.3.0/.yaga/size-policy.toml +7 -0
- iperf3_lib-0.3.0/.yaga/tree-policy.toml +38 -0
- {iperf3_lib-0.2.0 → iperf3_lib-0.3.0}/AGENTS.md +7 -0
- iperf3_lib-0.3.0/CONTRIBUTING.md +216 -0
- {iperf3_lib-0.2.0 → iperf3_lib-0.3.0}/Dockerfile +3 -1
- iperf3_lib-0.3.0/Makefile +110 -0
- iperf3_lib-0.3.0/PKG-INFO +78 -0
- iperf3_lib-0.3.0/README.md +47 -0
- {iperf3_lib-0.2.0 → iperf3_lib-0.3.0}/docker-entrypoint.sh +1 -2
- iperf3_lib-0.3.0/docs/changelog.md +168 -0
- iperf3_lib-0.3.0/docs/contributing.md +84 -0
- iperf3_lib-0.3.0/docs/design/advanced-execution.md +249 -0
- iperf3_lib-0.3.0/docs/design/native-event-observations.md +101 -0
- iperf3_lib-0.3.0/docs/design/native-events-2026-09-26.json +442 -0
- iperf3_lib-0.3.0/docs/documentation.md +74 -0
- iperf3_lib-0.3.0/docs/getting-started.md +123 -0
- iperf3_lib-0.3.0/docs/guides/analysis.md +227 -0
- iperf3_lib-0.3.0/docs/guides/artifacts.md +184 -0
- iperf3_lib-0.3.0/docs/guides/configuration-intent.md +196 -0
- iperf3_lib-0.3.0/docs/guides/grafana.md +94 -0
- iperf3_lib-0.3.0/docs/guides/migration-0.3.md +280 -0
- iperf3_lib-0.3.0/docs/guides/native-controls.md +289 -0
- iperf3_lib-0.3.0/docs/guides/prometheus.md +125 -0
- iperf3_lib-0.3.0/docs/guides/results.md +155 -0
- iperf3_lib-0.3.0/docs/guides/running-tests.md +150 -0
- iperf3_lib-0.3.0/docs/guides/sweeps.md +165 -0
- iperf3_lib-0.3.0/docs/guides/trials.md +203 -0
- iperf3_lib-0.3.0/docs/index.md +102 -0
- iperf3_lib-0.3.0/docs/reference/api.md +413 -0
- iperf3_lib-0.3.0/docs/reference/compatibility.md +114 -0
- iperf3_lib-0.3.0/docs/reference/configuration.md +216 -0
- iperf3_lib-0.3.0/docs/reference/native-options.md +175 -0
- iperf3_lib-0.3.0/docs/releasing.md +161 -0
- iperf3_lib-0.3.0/docs/roadmap.md +307 -0
- iperf3_lib-0.3.0/docs/security.md +29 -0
- iperf3_lib-0.3.0/docs/stylesheets/extra.css +35 -0
- iperf3_lib-0.3.0/examples/native_controls.py +69 -0
- iperf3_lib-0.3.0/examples/observability/Dockerfile +12 -0
- iperf3_lib-0.3.0/examples/observability/README.md +174 -0
- iperf3_lib-0.3.0/examples/observability/benchmark.py +105 -0
- iperf3_lib-0.3.0/examples/observability/dashboard.json +476 -0
- iperf3_lib-0.3.0/examples/observability/dashboards.yml +11 -0
- iperf3_lib-0.3.0/examples/observability/datasources.yml +12 -0
- iperf3_lib-0.3.0/examples/observability/kustomization.yaml +19 -0
- iperf3_lib-0.3.0/examples/observability/namespace.yaml +8 -0
- iperf3_lib-0.3.0/examples/observability/prometheus.yml +9 -0
- iperf3_lib-0.3.0/examples/observability/stack.yaml +304 -0
- iperf3_lib-0.3.0/examples/observability/verify.py +274 -0
- iperf3_lib-0.3.0/overrides/404.html +5 -0
- iperf3_lib-0.3.0/overrides/main.html +5 -0
- {iperf3_lib-0.2.0 → iperf3_lib-0.3.0}/pyproject.toml +29 -13
- iperf3_lib-0.3.0/scripts/check_docs.py +141 -0
- iperf3_lib-0.3.0/scripts/docker_validate.py +442 -0
- iperf3_lib-0.3.0/scripts/release_artifacts.py +213 -0
- iperf3_lib-0.3.0/scripts/smoke_release.py +1209 -0
- iperf3_lib-0.3.0/scripts/validate_release.py +137 -0
- {iperf3_lib-0.2.0 → iperf3_lib-0.3.0}/src/iperf3_lib/__init__.py +9 -1
- iperf3_lib-0.3.0/src/iperf3_lib/_evidence.py +45 -0
- iperf3_lib-0.3.0/src/iperf3_lib/_execution.py +308 -0
- iperf3_lib-0.3.0/src/iperf3_lib/_worker.py +215 -0
- iperf3_lib-0.3.0/src/iperf3_lib/analysis.py +1530 -0
- iperf3_lib-0.3.0/src/iperf3_lib/artifacts.py +936 -0
- iperf3_lib-0.3.0/src/iperf3_lib/assessments.py +267 -0
- iperf3_lib-0.3.0/src/iperf3_lib/capabilities.py +385 -0
- iperf3_lib-0.3.0/src/iperf3_lib/config.py +313 -0
- iperf3_lib-0.3.0/src/iperf3_lib/events.py +19 -0
- iperf3_lib-0.3.0/src/iperf3_lib/exporters/__init__.py +1 -0
- iperf3_lib-0.3.0/src/iperf3_lib/exporters/prometheus.py +182 -0
- iperf3_lib-0.3.0/src/iperf3_lib/ffi/symbols.py +108 -0
- iperf3_lib-0.3.0/src/iperf3_lib/intent.py +230 -0
- iperf3_lib-0.3.0/src/iperf3_lib/iperf_client.py +334 -0
- iperf3_lib-0.3.0/src/iperf3_lib/iperf_server.py +190 -0
- iperf3_lib-0.3.0/src/iperf3_lib/native_options.py +438 -0
- iperf3_lib-0.3.0/src/iperf3_lib/reports.py +896 -0
- iperf3_lib-0.3.0/src/iperf3_lib/result.py +1013 -0
- iperf3_lib-0.3.0/src/iperf3_lib/server_config.py +118 -0
- iperf3_lib-0.3.0/src/iperf3_lib/sweep_reports.py +430 -0
- iperf3_lib-0.3.0/src/iperf3_lib/sweeps.py +604 -0
- iperf3_lib-0.3.0/src/iperf3_lib/trials.py +377 -0
- iperf3_lib-0.3.0/tests/fixtures/artifacts/README.md +49 -0
- iperf3_lib-0.3.0/tests/fixtures/artifacts/development-v1-original-hashes.json +10 -0
- iperf3_lib-0.3.0/tests/fixtures/artifacts/legacy-end-only.json +43 -0
- iperf3_lib-0.3.0/tests/fixtures/artifacts/v1-failed.json +86 -0
- iperf3_lib-0.3.0/tests/fixtures/artifacts/v1-incomplete.json +86 -0
- iperf3_lib-0.3.0/tests/fixtures/artifacts/v1-native-3.19.1-tcp-bidirectional-client.json +796 -0
- iperf3_lib-0.3.0/tests/fixtures/artifacts/v1-native-3.19.1-tcp-reverse-server.json +516 -0
- iperf3_lib-0.3.0/tests/fixtures/artifacts/v1-native-3.21-sctp-reverse-client.json +546 -0
- iperf3_lib-0.3.0/tests/fixtures/artifacts/v1-native-3.21-tcp-evidence-client.json +608 -0
- iperf3_lib-0.3.0/tests/fixtures/artifacts/v1-native-3.21-tcp-warmup-server.json +580 -0
- iperf3_lib-0.3.0/tests/fixtures/artifacts/v1-native-3.21-udp-bidirectional-client.json +798 -0
- iperf3_lib-0.3.0/tests/fixtures/artifacts/v1-partial-zero-extensions.json +262 -0
- iperf3_lib-0.3.0/tests/fixtures/native/3.19.1/sctp-bidirectional-client.json +286 -0
- iperf3_lib-0.3.0/tests/fixtures/native/3.19.1/sctp-bidirectional-server.json +286 -0
- iperf3_lib-0.3.0/tests/fixtures/native/3.19.1/sctp-forward-client.json +175 -0
- iperf3_lib-0.3.0/tests/fixtures/native/3.19.1/sctp-forward-server.json +163 -0
- iperf3_lib-0.3.0/tests/fixtures/native/3.19.1/sctp-reverse-client.json +163 -0
- iperf3_lib-0.3.0/tests/fixtures/native/3.19.1/sctp-reverse-server.json +175 -0
- iperf3_lib-0.3.0/tests/fixtures/native/3.19.1/tcp-bidirectional-client.json +295 -0
- iperf3_lib-0.3.0/tests/fixtures/native/3.19.1/tcp-bidirectional-server.json +281 -0
- iperf3_lib-0.3.0/tests/fixtures/native/3.19.1/tcp-forward-client.json +183 -0
- iperf3_lib-0.3.0/tests/fixtures/native/3.19.1/tcp-forward-server.json +156 -0
- iperf3_lib-0.3.0/tests/fixtures/native/3.19.1/tcp-reverse-client.json +170 -0
- iperf3_lib-0.3.0/tests/fixtures/native/3.19.1/tcp-reverse-server.json +182 -0
- iperf3_lib-0.3.0/tests/fixtures/native/3.19.1/tcp-warmup-client.json +229 -0
- iperf3_lib-0.3.0/tests/fixtures/native/3.19.1/tcp-warmup-server.json +189 -0
- iperf3_lib-0.3.0/tests/fixtures/native/3.19.1/udp-bidirectional-client.json +292 -0
- iperf3_lib-0.3.0/tests/fixtures/native/3.19.1/udp-bidirectional-server.json +292 -0
- iperf3_lib-0.3.0/tests/fixtures/native/3.19.1/udp-client.json +169 -0
- iperf3_lib-0.3.0/tests/fixtures/native/3.19.1/udp-reverse-client.json +178 -0
- iperf3_lib-0.3.0/tests/fixtures/native/3.19.1/udp-reverse-server.json +205 -0
- iperf3_lib-0.3.0/tests/fixtures/native/3.19.1/udp-server.json +223 -0
- iperf3_lib-0.3.0/tests/fixtures/native/3.21/sctp-bidirectional-client.json +295 -0
- iperf3_lib-0.3.0/tests/fixtures/native/3.21/sctp-bidirectional-server.json +295 -0
- iperf3_lib-0.3.0/tests/fixtures/native/3.21/sctp-forward-client.json +182 -0
- iperf3_lib-0.3.0/tests/fixtures/native/3.21/sctp-forward-server.json +168 -0
- iperf3_lib-0.3.0/tests/fixtures/native/3.21/sctp-reverse-client.json +168 -0
- iperf3_lib-0.3.0/tests/fixtures/native/3.21/sctp-reverse-server.json +182 -0
- iperf3_lib-0.3.0/tests/fixtures/native/3.21/tcp-bidirectional-client.json +304 -0
- iperf3_lib-0.3.0/tests/fixtures/native/3.21/tcp-bidirectional-server.json +288 -0
- iperf3_lib-0.3.0/tests/fixtures/native/3.21/tcp-forward-client.json +190 -0
- iperf3_lib-0.3.0/tests/fixtures/native/3.21/tcp-forward-server.json +159 -0
- iperf3_lib-0.3.0/tests/fixtures/native/3.21/tcp-reverse-client.json +175 -0
- iperf3_lib-0.3.0/tests/fixtures/native/3.21/tcp-reverse-server.json +189 -0
- iperf3_lib-0.3.0/tests/fixtures/native/3.21/tcp-warmup-client.json +238 -0
- iperf3_lib-0.3.0/tests/fixtures/native/3.21/tcp-warmup-server.json +192 -0
- iperf3_lib-0.3.0/tests/fixtures/native/3.21/udp-bidirectional-client.json +295 -0
- iperf3_lib-0.3.0/tests/fixtures/native/3.21/udp-bidirectional-server.json +295 -0
- iperf3_lib-0.3.0/tests/fixtures/native/3.21/udp-client.json +172 -0
- iperf3_lib-0.3.0/tests/fixtures/native/3.21/udp-reverse-client.json +181 -0
- iperf3_lib-0.3.0/tests/fixtures/native/3.21/udp-reverse-server.json +172 -0
- iperf3_lib-0.3.0/tests/fixtures/native/3.21/udp-server.json +181 -0
- iperf3_lib-0.3.0/tests/fixtures/native/README.md +161 -0
- iperf3_lib-0.3.0/tests/fixtures/native/capture.py +98 -0
- iperf3_lib-0.3.0/tests/fixtures/reports/v1/README.md +14 -0
- iperf3_lib-0.3.0/tests/fixtures/reports/v1/baseline-pass.json +1475 -0
- iperf3_lib-0.3.0/tests/fixtures/reports/v1/partial-failure.json +1043 -0
- iperf3_lib-0.3.0/tests/fixtures/sweeps/README.md +13 -0
- iperf3_lib-0.3.0/tests/fixtures/sweeps/v1-synthetic.json +1050 -0
- iperf3_lib-0.3.0/tests/sweep_helpers.py +93 -0
- iperf3_lib-0.3.0/tests/test_advanced_client_results.py +94 -0
- iperf3_lib-0.3.0/tests/test_analysis.py +926 -0
- iperf3_lib-0.3.0/tests/test_artifacts.py +882 -0
- iperf3_lib-0.3.0/tests/test_assessments.py +230 -0
- iperf3_lib-0.3.0/tests/test_capabilities.py +180 -0
- iperf3_lib-0.3.0/tests/test_client_branches.py +513 -0
- iperf3_lib-0.3.0/tests/test_client_integration_configs.py +216 -0
- {iperf3_lib-0.2.0 → iperf3_lib-0.3.0}/tests/test_config.py +22 -7
- iperf3_lib-0.3.0/tests/test_config_native_controls.py +312 -0
- iperf3_lib-0.3.0/tests/test_docker_validate.py +376 -0
- iperf3_lib-0.3.0/tests/test_docs.py +127 -0
- iperf3_lib-0.3.0/tests/test_execution_worker.py +698 -0
- iperf3_lib-0.3.0/tests/test_extended_compatibility.py +325 -0
- iperf3_lib-0.3.0/tests/test_extended_configuration_contracts.py +282 -0
- iperf3_lib-0.3.0/tests/test_installed_smoke.py +427 -0
- iperf3_lib-0.3.0/tests/test_intent.py +198 -0
- iperf3_lib-0.3.0/tests/test_intent_integration.py +72 -0
- iperf3_lib-0.3.0/tests/test_native_controls_integration.py +256 -0
- iperf3_lib-0.3.0/tests/test_native_options.py +604 -0
- iperf3_lib-0.3.0/tests/test_observability_example.py +165 -0
- iperf3_lib-0.3.0/tests/test_prometheus_exporter.py +332 -0
- iperf3_lib-0.3.0/tests/test_release_policy.py +562 -0
- iperf3_lib-0.3.0/tests/test_reports.py +549 -0
- iperf3_lib-0.3.0/tests/test_result_native_fixtures.py +234 -0
- iperf3_lib-0.3.0/tests/test_result_normalization.py +900 -0
- iperf3_lib-0.3.0/tests/test_server.py +93 -0
- iperf3_lib-0.3.0/tests/test_server_additional.py +106 -0
- iperf3_lib-0.3.0/tests/test_server_config.py +170 -0
- iperf3_lib-0.3.0/tests/test_server_integration.py +359 -0
- iperf3_lib-0.3.0/tests/test_server_iteration.py +69 -0
- iperf3_lib-0.3.0/tests/test_server_serve_once.py +69 -0
- iperf3_lib-0.3.0/tests/test_sweep_reports.py +277 -0
- iperf3_lib-0.3.0/tests/test_sweeps.py +479 -0
- iperf3_lib-0.3.0/tests/test_sweeps_integration.py +73 -0
- iperf3_lib-0.3.0/tests/test_transport_evidence.py +237 -0
- iperf3_lib-0.3.0/tests/test_trials.py +367 -0
- iperf3_lib-0.3.0/tests/test_trials_integration.py +47 -0
- iperf3_lib-0.3.0/tests/trial_helpers.py +57 -0
- iperf3_lib-0.3.0/uv.lock +1308 -0
- iperf3_lib-0.3.0/zensical.toml +76 -0
- iperf3_lib-0.2.0/.github/workflows/release.yml +0 -170
- iperf3_lib-0.2.0/CONTRIBUTING.md +0 -93
- iperf3_lib-0.2.0/Makefile +0 -80
- iperf3_lib-0.2.0/PKG-INFO +0 -187
- iperf3_lib-0.2.0/README.md +0 -155
- iperf3_lib-0.2.0/scripts/validate_release.py +0 -81
- iperf3_lib-0.2.0/src/iperf3_lib/capabilities.py +0 -45
- iperf3_lib-0.2.0/src/iperf3_lib/config.py +0 -53
- iperf3_lib-0.2.0/src/iperf3_lib/ffi/symbols.py +0 -47
- iperf3_lib-0.2.0/src/iperf3_lib/iperf_client.py +0 -207
- iperf3_lib-0.2.0/src/iperf3_lib/iperf_server.py +0 -104
- iperf3_lib-0.2.0/src/iperf3_lib/result.py +0 -42
- iperf3_lib-0.2.0/tests/test_capabilities.py +0 -26
- iperf3_lib-0.2.0/tests/test_client_branches.py +0 -261
- iperf3_lib-0.2.0/tests/test_client_integration_configs.py +0 -95
- iperf3_lib-0.2.0/tests/test_server.py +0 -48
- iperf3_lib-0.2.0/tests/test_server_additional.py +0 -115
- iperf3_lib-0.2.0/tests/test_server_iteration.py +0 -38
- iperf3_lib-0.2.0/tests/test_server_serve_once.py +0 -75
- iperf3_lib-0.2.0/uv.lock +0 -886
- {iperf3_lib-0.2.0 → iperf3_lib-0.3.0}/.gitignore +0 -0
- {iperf3_lib-0.2.0 → iperf3_lib-0.3.0}/LICENSE +0 -0
- {iperf3_lib-0.2.0 → iperf3_lib-0.3.0}/SECURITY.md +0 -0
- {iperf3_lib-0.2.0 → iperf3_lib-0.3.0}/src/iperf3_lib/exceptions.py +0 -0
- {iperf3_lib-0.2.0 → iperf3_lib-0.3.0}/src/iperf3_lib/ffi/__init__.py +0 -0
- {iperf3_lib-0.2.0 → iperf3_lib-0.3.0}/src/iperf3_lib/ffi/api.py +0 -0
- {iperf3_lib-0.2.0 → iperf3_lib-0.3.0}/src/iperf3_lib/py.typed +0 -0
- {iperf3_lib-0.2.0 → iperf3_lib-0.3.0}/tests/conftest.py +0 -0
- {iperf3_lib-0.2.0 → iperf3_lib-0.3.0}/tests/test_client_async_and_result.py +0 -0
- {iperf3_lib-0.2.0 → iperf3_lib-0.3.0}/tests/test_client_mocked.py +0 -0
- {iperf3_lib-0.2.0 → iperf3_lib-0.3.0}/tests/test_client_more.py +0 -0
- {iperf3_lib-0.2.0 → iperf3_lib-0.3.0}/tests/test_ffi_dlopen.py +0 -0
- {iperf3_lib-0.2.0 → iperf3_lib-0.3.0}/tests/test_ffi_load.py +0 -0
- {iperf3_lib-0.2.0 → iperf3_lib-0.3.0}/tests/test_public_api.py +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
*.sh text eol=lf
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
name: Bug report
|
|
2
|
+
description: Report incorrect behavior with a reproducible example.
|
|
3
|
+
labels: [bug]
|
|
4
|
+
body:
|
|
5
|
+
- type: textarea
|
|
6
|
+
id: problem
|
|
7
|
+
attributes:
|
|
8
|
+
label: Expected and observed behavior
|
|
9
|
+
description: Explain the difference and its impact.
|
|
10
|
+
validations:
|
|
11
|
+
required: true
|
|
12
|
+
- type: textarea
|
|
13
|
+
id: reproduction
|
|
14
|
+
attributes:
|
|
15
|
+
label: Reproduction
|
|
16
|
+
description: Include minimal Python code and sanitized native JSON or error output where relevant.
|
|
17
|
+
validations:
|
|
18
|
+
required: true
|
|
19
|
+
- type: textarea
|
|
20
|
+
id: environment
|
|
21
|
+
attributes:
|
|
22
|
+
label: Environment
|
|
23
|
+
description: Package version or commit, Python, libiperf version, operating system, protocol, and direction.
|
|
24
|
+
validations:
|
|
25
|
+
required: true
|
|
26
|
+
- type: textarea
|
|
27
|
+
id: acceptance
|
|
28
|
+
attributes:
|
|
29
|
+
label: Suggested acceptance checks
|
|
30
|
+
description: What would demonstrate that this is fixed?
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
blank_issues_enabled: true
|
|
2
|
+
contact_links:
|
|
3
|
+
- name: Security reporting
|
|
4
|
+
url: https://github.com/dariuszpanas/iperf3-lib/security/policy
|
|
5
|
+
about: Follow the security policy to report vulnerabilities privately.
|
|
6
|
+
- name: Documentation
|
|
7
|
+
url: https://dariuszpanas.github.io/iperf3-lib/
|
|
8
|
+
about: Check installation, API behavior, and current limitations.
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
name: Feature or design proposal
|
|
2
|
+
description: Describe a use case and a bounded proposal.
|
|
3
|
+
labels: [enhancement, planning]
|
|
4
|
+
body:
|
|
5
|
+
- type: textarea
|
|
6
|
+
id: problem
|
|
7
|
+
attributes:
|
|
8
|
+
label: Problem and use case
|
|
9
|
+
description: Describe the workflow this would improve and the current workaround.
|
|
10
|
+
validations:
|
|
11
|
+
required: true
|
|
12
|
+
- type: textarea
|
|
13
|
+
id: proposal
|
|
14
|
+
attributes:
|
|
15
|
+
label: Proposed behavior and boundaries
|
|
16
|
+
description: Include API ideas, alternatives, and what is outside the proposed scope.
|
|
17
|
+
validations:
|
|
18
|
+
required: true
|
|
19
|
+
- type: textarea
|
|
20
|
+
id: acceptance
|
|
21
|
+
attributes:
|
|
22
|
+
label: Acceptance criteria and evidence
|
|
23
|
+
description: Include native verification or Prometheus/Grafana checks when relevant.
|
|
24
|
+
validations:
|
|
25
|
+
required: true
|
|
26
|
+
- type: textarea
|
|
27
|
+
id: dependencies
|
|
28
|
+
attributes:
|
|
29
|
+
label: Related issues and compatibility
|
|
30
|
+
description: Link dependencies and describe migration or platform considerations.
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
name: Maintenance or documentation task
|
|
2
|
+
description: Track a concrete improvement to tooling, docs, or release preparation.
|
|
3
|
+
body:
|
|
4
|
+
- type: textarea
|
|
5
|
+
id: outcome
|
|
6
|
+
attributes:
|
|
7
|
+
label: Intended outcome
|
|
8
|
+
description: Explain what needs to change and why.
|
|
9
|
+
validations:
|
|
10
|
+
required: true
|
|
11
|
+
- type: textarea
|
|
12
|
+
id: acceptance
|
|
13
|
+
attributes:
|
|
14
|
+
label: Completion checklist
|
|
15
|
+
description: List concrete, verifiable steps and any follow-up that remains separate.
|
|
16
|
+
validations:
|
|
17
|
+
required: true
|
|
18
|
+
- type: textarea
|
|
19
|
+
id: dependencies
|
|
20
|
+
attributes:
|
|
21
|
+
label: Related issues or pull requests
|
|
@@ -1,6 +1,16 @@
|
|
|
1
1
|
version: 2
|
|
2
2
|
|
|
3
3
|
updates:
|
|
4
|
+
- package-ecosystem: "docker"
|
|
5
|
+
directory: "/"
|
|
6
|
+
schedule:
|
|
7
|
+
interval: "weekly"
|
|
8
|
+
day: "monday"
|
|
9
|
+
time: "09:00"
|
|
10
|
+
timezone: "America/Los_Angeles"
|
|
11
|
+
commit-message:
|
|
12
|
+
prefix: "chore(docker)"
|
|
13
|
+
|
|
4
14
|
- package-ecosystem: "uv"
|
|
5
15
|
directory: "/"
|
|
6
16
|
schedule:
|
|
@@ -45,22 +55,3 @@ updates:
|
|
|
45
55
|
applies-to: "security-updates"
|
|
46
56
|
patterns:
|
|
47
57
|
- "*"
|
|
48
|
-
|
|
49
|
-
- package-ecosystem: "docker"
|
|
50
|
-
directory: "/"
|
|
51
|
-
schedule:
|
|
52
|
-
interval: "weekly"
|
|
53
|
-
day: "monday"
|
|
54
|
-
time: "09:30"
|
|
55
|
-
timezone: "America/Los_Angeles"
|
|
56
|
-
commit-message:
|
|
57
|
-
prefix: "chore(docker)"
|
|
58
|
-
groups:
|
|
59
|
-
docker-images:
|
|
60
|
-
applies-to: "version-updates"
|
|
61
|
-
patterns:
|
|
62
|
-
- "*"
|
|
63
|
-
docker-security:
|
|
64
|
-
applies-to: "security-updates"
|
|
65
|
-
patterns:
|
|
66
|
-
- "*"
|
|
@@ -5,6 +5,7 @@ on:
|
|
|
5
5
|
branches: [main]
|
|
6
6
|
pull_request:
|
|
7
7
|
branches: [main]
|
|
8
|
+
types: [opened, synchronize, reopened, edited, ready_for_review]
|
|
8
9
|
schedule:
|
|
9
10
|
# Run the full compatibility matrix monthly as a maintenance reminder.
|
|
10
11
|
- cron: "17 9 1 * *"
|
|
@@ -26,11 +27,15 @@ jobs:
|
|
|
26
27
|
steps:
|
|
27
28
|
- name: Check out repository
|
|
28
29
|
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
|
30
|
+
with:
|
|
31
|
+
ref: ${{ github.event.pull_request.head.sha || github.sha }}
|
|
32
|
+
fetch-depth: 0
|
|
33
|
+
persist-credentials: false
|
|
29
34
|
|
|
30
35
|
- name: Install uv and Python
|
|
31
|
-
|
|
36
|
+
id: setup-uv
|
|
37
|
+
uses: astral-sh/setup-uv@c18668ad3cf93ea998bef934396af7bb5c839dc7 # v10.2.0
|
|
32
38
|
with:
|
|
33
|
-
version: "0.11.31"
|
|
34
39
|
python-version: "3.12"
|
|
35
40
|
enable-cache: true
|
|
36
41
|
cache-dependency-glob: uv.lock
|
|
@@ -41,6 +46,35 @@ jobs:
|
|
|
41
46
|
- name: Run non-mutating checks
|
|
42
47
|
run: make check
|
|
43
48
|
|
|
49
|
+
- name: Run unit tests
|
|
50
|
+
run: make test
|
|
51
|
+
|
|
52
|
+
- name: Lint GitHub workflows with YAGA
|
|
53
|
+
run: make workflow-lint
|
|
54
|
+
|
|
55
|
+
- name: Check source and test changes
|
|
56
|
+
if: github.event_name == 'pull_request'
|
|
57
|
+
env:
|
|
58
|
+
YAGA_RANGE: ${{ format('{0}...{1}', github.event.pull_request.base.sha, github.event.pull_request.head.sha) }}
|
|
59
|
+
run: >-
|
|
60
|
+
uv run --frozen yaga change check
|
|
61
|
+
--policy .yaga/change-policy.toml --range "$YAGA_RANGE" --format github
|
|
62
|
+
|
|
63
|
+
commit-policy:
|
|
64
|
+
name: YAGA commit policy
|
|
65
|
+
if: github.event_name == 'pull_request'
|
|
66
|
+
runs-on: ubuntu-latest
|
|
67
|
+
timeout-minutes: 5
|
|
68
|
+
steps:
|
|
69
|
+
- name: Check out pull request history
|
|
70
|
+
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
|
71
|
+
with:
|
|
72
|
+
ref: ${{ github.event.pull_request.head.sha }}
|
|
73
|
+
fetch-depth: 0
|
|
74
|
+
persist-credentials: false
|
|
75
|
+
- name: Check pull request title and commits
|
|
76
|
+
uses: dariuszpanas/yaga/actions/commit-check@f61bbfa878447157239bb92ff67977bd64400afd # v0.2.0
|
|
77
|
+
|
|
44
78
|
docker-matrix-tests:
|
|
45
79
|
name: docker (${{ matrix.python }}, iperf ${{ matrix.iperf }})
|
|
46
80
|
runs-on: ubuntu-latest
|
|
@@ -54,12 +88,14 @@ jobs:
|
|
|
54
88
|
steps:
|
|
55
89
|
- name: Check out repository
|
|
56
90
|
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
|
91
|
+
with:
|
|
92
|
+
persist-credentials: false
|
|
57
93
|
|
|
58
94
|
- name: Set up Docker Buildx
|
|
59
|
-
uses: docker/setup-buildx-action@
|
|
95
|
+
uses: docker/setup-buildx-action@f87e5991a6d7451dcb8d9637bfbc97413f497069 # v4.4.1
|
|
60
96
|
|
|
61
97
|
- name: Build compatibility image
|
|
62
|
-
uses: docker/build-push-action@
|
|
98
|
+
uses: docker/build-push-action@c3c9e263c25d99ce0380d002d59b67737d91b0dc # v7.4.0
|
|
63
99
|
with:
|
|
64
100
|
context: .
|
|
65
101
|
load: true
|
|
@@ -76,41 +112,10 @@ jobs:
|
|
|
76
112
|
"iperf3-lib-test:py${{ matrix.python }}-iperf${{ matrix.iperf }}" \
|
|
77
113
|
bash -c "python --version && iperf3 --version && pytest -vv --cov=iperf3_lib --cov-report=term-missing"
|
|
78
114
|
|
|
79
|
-
python-preview:
|
|
80
|
-
name: python 3.15 preview (allowed failure)
|
|
81
|
-
runs-on: ubuntu-latest
|
|
82
|
-
needs: lint-and-types
|
|
83
|
-
continue-on-error: true
|
|
84
|
-
timeout-minutes: 30
|
|
85
|
-
steps:
|
|
86
|
-
- name: Check out repository
|
|
87
|
-
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
|
88
|
-
|
|
89
|
-
- name: Set up Docker Buildx
|
|
90
|
-
uses: docker/setup-buildx-action@bb05f3f5519dd87d3ba754cc423b652a5edd6d2c # v4.2.0
|
|
91
|
-
|
|
92
|
-
- name: Build preview image
|
|
93
|
-
uses: docker/build-push-action@53b7df96c91f9c12dcc8a07bcb9ccacbed38856a # v7.3.0
|
|
94
|
-
with:
|
|
95
|
-
context: .
|
|
96
|
-
load: true
|
|
97
|
-
tags: iperf3-lib-test:py315-preview-iperf321
|
|
98
|
-
build-args: |
|
|
99
|
-
PYTHON_BASE=python:3.15-rc-slim
|
|
100
|
-
IPERF3_VERSION=3.21
|
|
101
|
-
cache-from: type=gha,scope=py315-preview-iperf321
|
|
102
|
-
cache-to: type=gha,mode=max,scope=py315-preview-iperf321
|
|
103
|
-
|
|
104
|
-
- name: Run preview suite
|
|
105
|
-
run: |
|
|
106
|
-
docker run --rm -v "${{ github.workspace }}:/app" \
|
|
107
|
-
iperf3-lib-test:py315-preview-iperf321 \
|
|
108
|
-
bash -c "python --version && iperf3 --version && pytest -vv --cov=iperf3_lib --cov-report=term-missing"
|
|
109
|
-
|
|
110
115
|
ci:
|
|
111
116
|
name: ci
|
|
112
117
|
runs-on: ubuntu-latest
|
|
113
|
-
needs: [lint-and-types, docker-matrix-tests]
|
|
118
|
+
needs: [lint-and-types, commit-policy, docker-matrix-tests]
|
|
114
119
|
if: ${{ always() }}
|
|
115
120
|
timeout-minutes: 5
|
|
116
121
|
steps:
|
|
@@ -118,6 +123,11 @@ jobs:
|
|
|
118
123
|
env:
|
|
119
124
|
LINT_RESULT: ${{ needs.lint-and-types.result }}
|
|
120
125
|
TEST_RESULT: ${{ needs.docker-matrix-tests.result }}
|
|
126
|
+
COMMIT_RESULT: ${{ needs.commit-policy.result }}
|
|
127
|
+
EVENT_NAME: ${{ github.event_name }}
|
|
121
128
|
run: |
|
|
122
129
|
test "$LINT_RESULT" = "success"
|
|
123
130
|
test "$TEST_RESULT" = "success"
|
|
131
|
+
if [ "$EVENT_NAME" = "pull_request" ]; then
|
|
132
|
+
test "$COMMIT_RESULT" = "success"
|
|
133
|
+
fi
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
name: Documentation
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
branches: [main]
|
|
6
|
+
workflow_dispatch:
|
|
7
|
+
|
|
8
|
+
permissions:
|
|
9
|
+
contents: read
|
|
10
|
+
|
|
11
|
+
concurrency:
|
|
12
|
+
group: pages
|
|
13
|
+
cancel-in-progress: true
|
|
14
|
+
|
|
15
|
+
jobs:
|
|
16
|
+
build:
|
|
17
|
+
name: Build documentation
|
|
18
|
+
if: github.ref == 'refs/heads/main'
|
|
19
|
+
runs-on: ubuntu-latest
|
|
20
|
+
timeout-minutes: 10
|
|
21
|
+
steps:
|
|
22
|
+
- name: Check out repository
|
|
23
|
+
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
|
24
|
+
with:
|
|
25
|
+
persist-credentials: false
|
|
26
|
+
- name: Install uv and Python
|
|
27
|
+
uses: astral-sh/setup-uv@c18668ad3cf93ea998bef934396af7bb5c839dc7 # v10.2.0
|
|
28
|
+
with:
|
|
29
|
+
python-version: "3.12"
|
|
30
|
+
enable-cache: true
|
|
31
|
+
cache-dependency-glob: uv.lock
|
|
32
|
+
- name: Synchronize frozen dependencies
|
|
33
|
+
run: uv sync --frozen --dev
|
|
34
|
+
- name: Build and check documentation
|
|
35
|
+
run: make docs
|
|
36
|
+
- name: Upload documentation
|
|
37
|
+
uses: actions/upload-pages-artifact@fc324d3547104276b827a68afc52ff2a11cc49c9 # v5
|
|
38
|
+
with:
|
|
39
|
+
path: site
|
|
40
|
+
|
|
41
|
+
deploy:
|
|
42
|
+
name: Deploy documentation
|
|
43
|
+
needs: build
|
|
44
|
+
runs-on: ubuntu-latest
|
|
45
|
+
timeout-minutes: 10
|
|
46
|
+
permissions:
|
|
47
|
+
pages: write
|
|
48
|
+
id-token: write
|
|
49
|
+
environment:
|
|
50
|
+
name: github-pages
|
|
51
|
+
url: ${{ steps.deployment.outputs.page_url }}
|
|
52
|
+
steps:
|
|
53
|
+
- name: Configure GitHub Pages
|
|
54
|
+
uses: actions/configure-pages@45bfe0192ca1faeb007ade9deae92b16b8254a0d # v6
|
|
55
|
+
- name: Deploy to GitHub Pages
|
|
56
|
+
id: deployment
|
|
57
|
+
uses: actions/deploy-pages@368f82528645a54fb793d4d04e342629a3f51346 # v5
|