pychrony 2.0.1__tar.gz → 2.0.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.
- {pychrony-2.0.1 → pychrony-2.0.2}/.github/workflows/ci.yml +15 -2
- {pychrony-2.0.1 → pychrony-2.0.2}/.github/workflows/docs.yml +4 -1
- {pychrony-2.0.1 → pychrony-2.0.2}/.github/workflows/release.yml +34 -1
- {pychrony-2.0.1/src/pychrony.egg-info → pychrony-2.0.2}/PKG-INFO +1 -1
- {pychrony-2.0.1 → pychrony-2.0.2/src/pychrony.egg-info}/PKG-INFO +1 -1
- {pychrony-2.0.1 → pychrony-2.0.2}/src/pychrony.egg-info/SOURCES.txt +0 -1
- {pychrony-2.0.1 → pychrony-2.0.2}/src/pychrony.egg-info/scm_file_list.json +0 -1
- {pychrony-2.0.1 → pychrony-2.0.2}/src/pychrony.egg-info/scm_version.json +2 -2
- pychrony-2.0.1/.github/workflows/publish.yml +0 -69
- {pychrony-2.0.1 → pychrony-2.0.2}/.claude/commands/speckit.analyze.md +0 -0
- {pychrony-2.0.1 → pychrony-2.0.2}/.claude/commands/speckit.checklist.md +0 -0
- {pychrony-2.0.1 → pychrony-2.0.2}/.claude/commands/speckit.clarify.md +0 -0
- {pychrony-2.0.1 → pychrony-2.0.2}/.claude/commands/speckit.constitution.md +0 -0
- {pychrony-2.0.1 → pychrony-2.0.2}/.claude/commands/speckit.implement.md +0 -0
- {pychrony-2.0.1 → pychrony-2.0.2}/.claude/commands/speckit.plan.md +0 -0
- {pychrony-2.0.1 → pychrony-2.0.2}/.claude/commands/speckit.specify.md +0 -0
- {pychrony-2.0.1 → pychrony-2.0.2}/.claude/commands/speckit.tasks.md +0 -0
- {pychrony-2.0.1 → pychrony-2.0.2}/.claude/commands/speckit.taskstoissues.md +0 -0
- {pychrony-2.0.1 → pychrony-2.0.2}/.dockerignore +0 -0
- {pychrony-2.0.1 → pychrony-2.0.2}/.github/dependabot.yml +0 -0
- {pychrony-2.0.1 → pychrony-2.0.2}/.gitignore +0 -0
- {pychrony-2.0.1 → pychrony-2.0.2}/.gitmodules +0 -0
- {pychrony-2.0.1 → pychrony-2.0.2}/.python-version +0 -0
- {pychrony-2.0.1 → pychrony-2.0.2}/.specify/memory/constitution.md +0 -0
- {pychrony-2.0.1 → pychrony-2.0.2}/.specify/scripts/bash/check-prerequisites.sh +0 -0
- {pychrony-2.0.1 → pychrony-2.0.2}/.specify/scripts/bash/common.sh +0 -0
- {pychrony-2.0.1 → pychrony-2.0.2}/.specify/scripts/bash/create-new-feature.sh +0 -0
- {pychrony-2.0.1 → pychrony-2.0.2}/.specify/scripts/bash/execute-task-generation.sh +0 -0
- {pychrony-2.0.1 → pychrony-2.0.2}/.specify/scripts/bash/setup-plan.sh +0 -0
- {pychrony-2.0.1 → pychrony-2.0.2}/.specify/scripts/bash/update-agent-context.sh +0 -0
- {pychrony-2.0.1 → pychrony-2.0.2}/.specify/templates/agent-file-template.md +0 -0
- {pychrony-2.0.1 → pychrony-2.0.2}/.specify/templates/checklist-template.md +0 -0
- {pychrony-2.0.1 → pychrony-2.0.2}/.specify/templates/plan-template.md +0 -0
- {pychrony-2.0.1 → pychrony-2.0.2}/.specify/templates/spec-template.md +0 -0
- {pychrony-2.0.1 → pychrony-2.0.2}/.specify/templates/tasks-template.md +0 -0
- {pychrony-2.0.1 → pychrony-2.0.2}/CLAUDE.md +0 -0
- {pychrony-2.0.1 → pychrony-2.0.2}/LICENSE +0 -0
- {pychrony-2.0.1 → pychrony-2.0.2}/LICENSES/LGPL-2.1-or-later.txt +0 -0
- {pychrony-2.0.1 → pychrony-2.0.2}/README.md +0 -0
- {pychrony-2.0.1 → pychrony-2.0.2}/TESTING.md +0 -0
- {pychrony-2.0.1 → pychrony-2.0.2}/docker/Dockerfile.test +0 -0
- {pychrony-2.0.1 → pychrony-2.0.2}/docker/docker-compose.test.yml +0 -0
- {pychrony-2.0.1 → pychrony-2.0.2}/docs/api/index.md +0 -0
- {pychrony-2.0.1 → pychrony-2.0.2}/docs/index.md +0 -0
- {pychrony-2.0.1 → pychrony-2.0.2}/mkdocs.yml +0 -0
- {pychrony-2.0.1 → pychrony-2.0.2}/pyproject.toml +0 -0
- {pychrony-2.0.1 → pychrony-2.0.2}/setup.cfg +0 -0
- {pychrony-2.0.1 → pychrony-2.0.2}/setup.py +0 -0
- {pychrony-2.0.1 → pychrony-2.0.2}/specs/001-python-scaffold/checklists/requirements.md +0 -0
- {pychrony-2.0.1 → pychrony-2.0.2}/specs/001-python-scaffold/contracts/package.md +0 -0
- {pychrony-2.0.1 → pychrony-2.0.2}/specs/001-python-scaffold/data-model.md +0 -0
- {pychrony-2.0.1 → pychrony-2.0.2}/specs/001-python-scaffold/plan.md +0 -0
- {pychrony-2.0.1 → pychrony-2.0.2}/specs/001-python-scaffold/quickstart.md +0 -0
- {pychrony-2.0.1 → pychrony-2.0.2}/specs/001-python-scaffold/research.md +0 -0
- {pychrony-2.0.1 → pychrony-2.0.2}/specs/001-python-scaffold/spec.md +0 -0
- {pychrony-2.0.1 → pychrony-2.0.2}/specs/001-python-scaffold/tasks.md +0 -0
- {pychrony-2.0.1 → pychrony-2.0.2}/specs/002-tracking-binding/checklists/requirements.md +0 -0
- {pychrony-2.0.1 → pychrony-2.0.2}/specs/002-tracking-binding/contracts/python-api.md +0 -0
- {pychrony-2.0.1 → pychrony-2.0.2}/specs/002-tracking-binding/data-model.md +0 -0
- {pychrony-2.0.1 → pychrony-2.0.2}/specs/002-tracking-binding/plan.md +0 -0
- {pychrony-2.0.1 → pychrony-2.0.2}/specs/002-tracking-binding/quickstart.md +0 -0
- {pychrony-2.0.1 → pychrony-2.0.2}/specs/002-tracking-binding/research.md +0 -0
- {pychrony-2.0.1 → pychrony-2.0.2}/specs/002-tracking-binding/spec.md +0 -0
- {pychrony-2.0.1 → pychrony-2.0.2}/specs/002-tracking-binding/tasks.md +0 -0
- {pychrony-2.0.1 → pychrony-2.0.2}/specs/003-multiple-reports-bindings/checklists/requirements.md +0 -0
- {pychrony-2.0.1 → pychrony-2.0.2}/specs/003-multiple-reports-bindings/contracts/api.md +0 -0
- {pychrony-2.0.1 → pychrony-2.0.2}/specs/003-multiple-reports-bindings/contracts/python-api.md +0 -0
- {pychrony-2.0.1 → pychrony-2.0.2}/specs/003-multiple-reports-bindings/data-model.md +0 -0
- {pychrony-2.0.1 → pychrony-2.0.2}/specs/003-multiple-reports-bindings/plan.md +0 -0
- {pychrony-2.0.1 → pychrony-2.0.2}/specs/003-multiple-reports-bindings/quickstart.md +0 -0
- {pychrony-2.0.1 → pychrony-2.0.2}/specs/003-multiple-reports-bindings/research.md +0 -0
- {pychrony-2.0.1 → pychrony-2.0.2}/specs/003-multiple-reports-bindings/spec.md +0 -0
- {pychrony-2.0.1 → pychrony-2.0.2}/specs/003-multiple-reports-bindings/tasks.md +0 -0
- {pychrony-2.0.1 → pychrony-2.0.2}/specs/004-categorical-enums/checklists/requirements.md +0 -0
- {pychrony-2.0.1 → pychrony-2.0.2}/specs/004-categorical-enums/data-model.md +0 -0
- {pychrony-2.0.1 → pychrony-2.0.2}/specs/004-categorical-enums/plan.md +0 -0
- {pychrony-2.0.1 → pychrony-2.0.2}/specs/004-categorical-enums/quickstart.md +0 -0
- {pychrony-2.0.1 → pychrony-2.0.2}/specs/004-categorical-enums/research.md +0 -0
- {pychrony-2.0.1 → pychrony-2.0.2}/specs/004-categorical-enums/spec.md +0 -0
- {pychrony-2.0.1 → pychrony-2.0.2}/specs/004-categorical-enums/tasks.md +0 -0
- {pychrony-2.0.1 → pychrony-2.0.2}/specs/005-pypi-packaging/checklists/requirements.md +0 -0
- {pychrony-2.0.1 → pychrony-2.0.2}/specs/005-pypi-packaging/plan.md +0 -0
- {pychrony-2.0.1 → pychrony-2.0.2}/specs/005-pypi-packaging/quickstart.md +0 -0
- {pychrony-2.0.1 → pychrony-2.0.2}/specs/005-pypi-packaging/research.md +0 -0
- {pychrony-2.0.1 → pychrony-2.0.2}/specs/005-pypi-packaging/spec.md +0 -0
- {pychrony-2.0.1 → pychrony-2.0.2}/specs/005-pypi-packaging/tasks.md +0 -0
- {pychrony-2.0.1 → pychrony-2.0.2}/specs/006-protocol-test-mocks/analysis-report.md +0 -0
- {pychrony-2.0.1 → pychrony-2.0.2}/specs/006-protocol-test-mocks/checklists/requirements.md +0 -0
- {pychrony-2.0.1 → pychrony-2.0.2}/specs/006-protocol-test-mocks/contracts/mock-api.md +0 -0
- {pychrony-2.0.1 → pychrony-2.0.2}/specs/006-protocol-test-mocks/data-model.md +0 -0
- {pychrony-2.0.1 → pychrony-2.0.2}/specs/006-protocol-test-mocks/plan.md +0 -0
- {pychrony-2.0.1 → pychrony-2.0.2}/specs/006-protocol-test-mocks/quickstart.md +0 -0
- {pychrony-2.0.1 → pychrony-2.0.2}/specs/006-protocol-test-mocks/research.md +0 -0
- {pychrony-2.0.1 → pychrony-2.0.2}/specs/006-protocol-test-mocks/spec.md +0 -0
- {pychrony-2.0.1 → pychrony-2.0.2}/specs/006-protocol-test-mocks/tasks.md +0 -0
- {pychrony-2.0.1 → pychrony-2.0.2}/specs/007-api-docs-github-pages/tasks.md +0 -0
- {pychrony-2.0.1 → pychrony-2.0.2}/src/pychrony/__init__.py +0 -0
- {pychrony-2.0.1 → pychrony-2.0.2}/src/pychrony/_core/__init__.py +0 -0
- {pychrony-2.0.1 → pychrony-2.0.2}/src/pychrony/_core/_bindings.py +0 -0
- {pychrony-2.0.1 → pychrony-2.0.2}/src/pychrony/_core/_build_bindings.py +0 -0
- {pychrony-2.0.1 → pychrony-2.0.2}/src/pychrony/_core/_fields.py +0 -0
- {pychrony-2.0.1 → pychrony-2.0.2}/src/pychrony/exceptions.py +0 -0
- {pychrony-2.0.1 → pychrony-2.0.2}/src/pychrony/models.py +0 -0
- {pychrony-2.0.1 → pychrony-2.0.2}/src/pychrony/py.typed +0 -0
- {pychrony-2.0.1 → pychrony-2.0.2}/src/pychrony/testing.py +0 -0
- {pychrony-2.0.1 → pychrony-2.0.2}/src/pychrony.egg-info/dependency_links.txt +0 -0
- {pychrony-2.0.1 → pychrony-2.0.2}/src/pychrony.egg-info/entry_points.txt +0 -0
- {pychrony-2.0.1 → pychrony-2.0.2}/src/pychrony.egg-info/requires.txt +0 -0
- {pychrony-2.0.1 → pychrony-2.0.2}/src/pychrony.egg-info/top_level.txt +0 -0
- {pychrony-2.0.1 → pychrony-2.0.2}/tests/__init__.py +0 -0
- {pychrony-2.0.1 → pychrony-2.0.2}/tests/conftest.py +0 -0
- {pychrony-2.0.1 → pychrony-2.0.2}/tests/contract/__init__.py +0 -0
- {pychrony-2.0.1 → pychrony-2.0.2}/tests/contract/test_api.py +0 -0
- {pychrony-2.0.1 → pychrony-2.0.2}/tests/contract/test_api_stability.py +0 -0
- {pychrony-2.0.1 → pychrony-2.0.2}/tests/integration/__init__.py +0 -0
- {pychrony-2.0.1 → pychrony-2.0.2}/tests/integration/conftest.py +0 -0
- {pychrony-2.0.1 → pychrony-2.0.2}/tests/integration/test_connection.py +0 -0
- {pychrony-2.0.1 → pychrony-2.0.2}/tests/integration/test_enums.py +0 -0
- {pychrony-2.0.1 → pychrony-2.0.2}/tests/integration/test_rtcdata.py +0 -0
- {pychrony-2.0.1 → pychrony-2.0.2}/tests/integration/test_sources.py +0 -0
- {pychrony-2.0.1 → pychrony-2.0.2}/tests/integration/test_sourcestats.py +0 -0
- {pychrony-2.0.1 → pychrony-2.0.2}/tests/integration/test_tracking.py +0 -0
- {pychrony-2.0.1 → pychrony-2.0.2}/tests/mocks/__init__.py +0 -0
- {pychrony-2.0.1 → pychrony-2.0.2}/tests/mocks/config.py +0 -0
- {pychrony-2.0.1 → pychrony-2.0.2}/tests/mocks/context.py +0 -0
- {pychrony-2.0.1 → pychrony-2.0.2}/tests/mocks/scenarios.py +0 -0
- {pychrony-2.0.1 → pychrony-2.0.2}/tests/mocks/session.py +0 -0
- {pychrony-2.0.1 → pychrony-2.0.2}/tests/test_import.py +0 -0
- {pychrony-2.0.1 → pychrony-2.0.2}/tests/unit/__init__.py +0 -0
- {pychrony-2.0.1 → pychrony-2.0.2}/tests/unit/test_connection.py +0 -0
- {pychrony-2.0.1 → pychrony-2.0.2}/tests/unit/test_enums.py +0 -0
- {pychrony-2.0.1 → pychrony-2.0.2}/tests/unit/test_exceptions.py +0 -0
- {pychrony-2.0.1 → pychrony-2.0.2}/tests/unit/test_leap_scenarios.py +0 -0
- {pychrony-2.0.1 → pychrony-2.0.2}/tests/unit/test_mock_config.py +0 -0
- {pychrony-2.0.1 → pychrony-2.0.2}/tests/unit/test_mock_scenarios.py +0 -0
- {pychrony-2.0.1 → pychrony-2.0.2}/tests/unit/test_models.py +0 -0
- {pychrony-2.0.1 → pychrony-2.0.2}/tests/unit/test_rtc_scenarios.py +0 -0
- {pychrony-2.0.1 → pychrony-2.0.2}/tests/unit/test_source_scenarios.py +0 -0
- {pychrony-2.0.1 → pychrony-2.0.2}/tests/unit/test_testing.py +0 -0
- {pychrony-2.0.1 → pychrony-2.0.2}/tests/unit/test_validation.py +0 -0
- {pychrony-2.0.1 → pychrony-2.0.2}/uv.lock +0 -0
|
@@ -22,6 +22,7 @@ jobs:
|
|
|
22
22
|
# Keep this matrix in sync with the classifiers and the cibuildwheel
|
|
23
23
|
# `build` allowlist in pyproject.toml, and with release.yml.
|
|
24
24
|
test:
|
|
25
|
+
name: Tests (Python ${{ matrix.python-version }})
|
|
25
26
|
runs-on: ubuntu-latest
|
|
26
27
|
timeout-minutes: 10
|
|
27
28
|
strategy:
|
|
@@ -49,6 +50,7 @@ jobs:
|
|
|
49
50
|
# Lint and type checking. Results do not vary by interpreter, so this
|
|
50
51
|
# runs once rather than once per matrix entry.
|
|
51
52
|
lint:
|
|
53
|
+
name: Lint and type check
|
|
52
54
|
runs-on: ubuntu-latest
|
|
53
55
|
timeout-minutes: 10
|
|
54
56
|
steps:
|
|
@@ -75,6 +77,7 @@ jobs:
|
|
|
75
77
|
run: uv run ty check src/
|
|
76
78
|
|
|
77
79
|
docs:
|
|
80
|
+
name: Docs build
|
|
78
81
|
runs-on: ubuntu-latest
|
|
79
82
|
timeout-minutes: 10
|
|
80
83
|
|
|
@@ -102,6 +105,7 @@ jobs:
|
|
|
102
105
|
# Full suite in Docker with libchrony - the only place integration
|
|
103
106
|
# tests run against a live chronyd.
|
|
104
107
|
docker-tests:
|
|
108
|
+
name: Integration tests (Docker)
|
|
105
109
|
runs-on: ubuntu-latest
|
|
106
110
|
timeout-minutes: 20
|
|
107
111
|
steps:
|
|
@@ -123,15 +127,24 @@ jobs:
|
|
|
123
127
|
cache-from: type=gha
|
|
124
128
|
cache-to: type=gha,mode=max
|
|
125
129
|
|
|
130
|
+
# chronyd answers commands before it has resolved its pool and server
|
|
131
|
+
# names, and the source list grows as each name resolves. Tests that
|
|
132
|
+
# walk the source list race that growth, so wait until no source has an
|
|
133
|
+
# unresolved address. chronyc also fails until the command socket is up.
|
|
126
134
|
- name: Run tests
|
|
127
135
|
run: |
|
|
128
136
|
docker run --rm --cap-add=SYS_TIME pychrony-test:latest sh -c '
|
|
129
137
|
chronyd
|
|
130
138
|
i=0
|
|
131
|
-
until chronyc -n
|
|
139
|
+
until chronyc -n activity 2>/dev/null | grep -q "^0 sources with unknown address"; do
|
|
132
140
|
i=$((i + 1))
|
|
133
|
-
if [ "$i" -ge 40 ]; then
|
|
141
|
+
if [ "$i" -ge 40 ]; then
|
|
142
|
+
echo "chronyd sources not resolved after 20s"
|
|
143
|
+
chronyc -n activity
|
|
144
|
+
exit 1
|
|
145
|
+
fi
|
|
134
146
|
sleep 0.5
|
|
135
147
|
done
|
|
148
|
+
echo "chronyd sources resolved after $i polls"
|
|
136
149
|
pytest tests/ -v --tb=short
|
|
137
150
|
'
|
|
@@ -6,7 +6,7 @@ on:
|
|
|
6
6
|
tags: [ 'v*' ]
|
|
7
7
|
|
|
8
8
|
permissions:
|
|
9
|
-
contents:
|
|
9
|
+
contents: read
|
|
10
10
|
|
|
11
11
|
concurrency:
|
|
12
12
|
group: docs-deploy
|
|
@@ -14,8 +14,11 @@ concurrency:
|
|
|
14
14
|
|
|
15
15
|
jobs:
|
|
16
16
|
deploy:
|
|
17
|
+
name: Deploy documentation
|
|
17
18
|
runs-on: ubuntu-latest
|
|
18
19
|
timeout-minutes: 15
|
|
20
|
+
permissions:
|
|
21
|
+
contents: write # mike pushes the built site to the gh-pages branch
|
|
19
22
|
|
|
20
23
|
steps:
|
|
21
24
|
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
|
@@ -8,6 +8,12 @@ on:
|
|
|
8
8
|
permissions:
|
|
9
9
|
contents: read
|
|
10
10
|
|
|
11
|
+
# Never cancel a release in progress: a half-finished run can leave Test PyPI
|
|
12
|
+
# holding a version that production PyPI never gets.
|
|
13
|
+
concurrency:
|
|
14
|
+
group: release-${{ github.ref }}
|
|
15
|
+
cancel-in-progress: false
|
|
16
|
+
|
|
11
17
|
jobs:
|
|
12
18
|
build-wheels:
|
|
13
19
|
name: Build wheels (${{ matrix.arch }})
|
|
@@ -76,7 +82,7 @@ jobs:
|
|
|
76
82
|
timeout-minutes: 15
|
|
77
83
|
permissions:
|
|
78
84
|
contents: read
|
|
79
|
-
id-token: write
|
|
85
|
+
id-token: write # OIDC token for Test PyPI Trusted Publishing
|
|
80
86
|
|
|
81
87
|
steps:
|
|
82
88
|
- name: Download all artifacts
|
|
@@ -146,3 +152,30 @@ jobs:
|
|
|
146
152
|
assert pychrony.__version__ == expected, \
|
|
147
153
|
f'Version mismatch: {pychrony.__version__} != {expected}'
|
|
148
154
|
"
|
|
155
|
+
|
|
156
|
+
# Production publish lives in this workflow, after verification, so it can
|
|
157
|
+
# only ever upload the artifacts this tag-push run built and Test PyPI served.
|
|
158
|
+
# The `pypi` environment's required reviewer gates it. To retry a failed
|
|
159
|
+
# publish, re-run this job from the Release run.
|
|
160
|
+
publish-pypi:
|
|
161
|
+
name: Publish to Production PyPI
|
|
162
|
+
needs: verify-testpypi
|
|
163
|
+
runs-on: ubuntu-latest
|
|
164
|
+
environment: pypi
|
|
165
|
+
timeout-minutes: 15
|
|
166
|
+
permissions:
|
|
167
|
+
contents: read
|
|
168
|
+
id-token: write # OIDC token for PyPI Trusted Publishing
|
|
169
|
+
|
|
170
|
+
steps:
|
|
171
|
+
- name: Download all artifacts
|
|
172
|
+
uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1
|
|
173
|
+
with:
|
|
174
|
+
path: dist/
|
|
175
|
+
merge-multiple: true
|
|
176
|
+
|
|
177
|
+
- name: List artifacts
|
|
178
|
+
run: ls -la dist/
|
|
179
|
+
|
|
180
|
+
- name: Publish to PyPI
|
|
181
|
+
uses: pypa/gh-action-pypi-publish@dc37677b2e1c63e2034f94d8a5b11f265b73ba33 # v1.14.2
|
|
@@ -1,69 +0,0 @@
|
|
|
1
|
-
name: Publish to PyPI
|
|
2
|
-
|
|
3
|
-
on:
|
|
4
|
-
# Auto-trigger after successful Release workflow
|
|
5
|
-
workflow_run:
|
|
6
|
-
workflows: ["Release"]
|
|
7
|
-
types: [completed]
|
|
8
|
-
# Manual fallback
|
|
9
|
-
workflow_dispatch:
|
|
10
|
-
inputs:
|
|
11
|
-
release_tag:
|
|
12
|
-
description: 'Release tag to publish (e.g., v0.1.0)'
|
|
13
|
-
required: true
|
|
14
|
-
type: string
|
|
15
|
-
|
|
16
|
-
permissions:
|
|
17
|
-
contents: read
|
|
18
|
-
|
|
19
|
-
jobs:
|
|
20
|
-
publish-pypi:
|
|
21
|
-
name: Publish to Production PyPI
|
|
22
|
-
runs-on: ubuntu-latest
|
|
23
|
-
environment: pypi
|
|
24
|
-
permissions:
|
|
25
|
-
contents: read
|
|
26
|
-
id-token: write
|
|
27
|
-
timeout-minutes: 15
|
|
28
|
-
# workflow_run matches by workflow *name*, so a fork PR that adds its own
|
|
29
|
-
# "Release" workflow on pull_request would also trigger this job. Accept only
|
|
30
|
-
# runs from a push (a tag, for the real Release) in this repository.
|
|
31
|
-
if: >
|
|
32
|
-
(github.event_name == 'workflow_run' &&
|
|
33
|
-
github.event.workflow_run.conclusion == 'success' &&
|
|
34
|
-
github.event.workflow_run.event == 'push' &&
|
|
35
|
-
github.event.workflow_run.head_repository.full_name == github.repository) ||
|
|
36
|
-
github.event_name == 'workflow_dispatch'
|
|
37
|
-
|
|
38
|
-
steps:
|
|
39
|
-
- name: Download artifacts (from triggering workflow_run)
|
|
40
|
-
if: github.event_name == 'workflow_run'
|
|
41
|
-
uses: dawidd6/action-download-artifact@d63b86af1b34672e53c440b1b83979861906bad7 # v24
|
|
42
|
-
with:
|
|
43
|
-
workflow: release.yml
|
|
44
|
-
run_id: ${{ github.event.workflow_run.id }}
|
|
45
|
-
name: ^(wheels-.*|sdist)$
|
|
46
|
-
name_is_regexp: true
|
|
47
|
-
path: dist/
|
|
48
|
-
merge_multiple: true
|
|
49
|
-
if_no_artifact_found: fail
|
|
50
|
-
|
|
51
|
-
- name: Download artifacts (from manual dispatch)
|
|
52
|
-
if: github.event_name == 'workflow_dispatch'
|
|
53
|
-
uses: dawidd6/action-download-artifact@d63b86af1b34672e53c440b1b83979861906bad7 # v24
|
|
54
|
-
with:
|
|
55
|
-
workflow: release.yml
|
|
56
|
-
name: ^(wheels-.*|sdist)$
|
|
57
|
-
name_is_regexp: true
|
|
58
|
-
path: dist/
|
|
59
|
-
merge_multiple: true
|
|
60
|
-
search_artifacts: true
|
|
61
|
-
workflow_conclusion: success
|
|
62
|
-
branch: ${{ github.event.inputs.release_tag }}
|
|
63
|
-
if_no_artifact_found: fail
|
|
64
|
-
|
|
65
|
-
- name: List artifacts
|
|
66
|
-
run: ls -la dist/
|
|
67
|
-
|
|
68
|
-
- name: Publish to PyPI
|
|
69
|
-
uses: pypa/gh-action-pypi-publish@dc37677b2e1c63e2034f94d8a5b11f265b73ba33 # v1.14.2
|
|
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
|
|
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
|
|
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
|
|
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
|
{pychrony-2.0.1 → pychrony-2.0.2}/specs/003-multiple-reports-bindings/checklists/requirements.md
RENAMED
|
File without changes
|
|
File without changes
|
{pychrony-2.0.1 → pychrony-2.0.2}/specs/003-multiple-reports-bindings/contracts/python-api.md
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
|
|
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
|
|
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
|
|
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
|
|
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
|