zprocess 2.26.1__tar.gz → 2.27.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.
Files changed (57) hide show
  1. zprocess-2.27.0/.github/workflows/release-vars.sh +47 -0
  2. zprocess-2.27.0/.github/workflows/release.yml +452 -0
  3. zprocess-2.27.0/PKG-INFO +39 -0
  4. {zprocess-2.26.1 → zprocess-2.27.0}/pyproject.toml +4 -3
  5. {zprocess-2.26.1 → zprocess-2.27.0}/zprocess/__version__.py +4 -1
  6. {zprocess-2.26.1 → zprocess-2.27.0}/zprocess/clientserver.py +2 -2
  7. {zprocess-2.26.1 → zprocess-2.27.0}/zprocess/process_class_wrapper.py +2 -2
  8. {zprocess-2.26.1 → zprocess-2.27.0}/zprocess/zlock/__init__.py +4 -4
  9. {zprocess-2.26.1 → zprocess-2.27.0}/zprocess/zlock/server.py +1 -1
  10. {zprocess-2.26.1 → zprocess-2.27.0}/zprocess/zlog/__init__.py +1 -1
  11. {zprocess-2.26.1 → zprocess-2.27.0}/zprocess/zlog/server.py +1 -1
  12. zprocess-2.27.0/zprocess.egg-info/PKG-INFO +39 -0
  13. {zprocess-2.26.1 → zprocess-2.27.0}/zprocess.egg-info/SOURCES.txt +1 -0
  14. zprocess-2.26.1/.github/workflows/release.yml +0 -322
  15. zprocess-2.26.1/PKG-INFO +0 -61
  16. zprocess-2.26.1/zprocess.egg-info/PKG-INFO +0 -61
  17. {zprocess-2.26.1 → zprocess-2.27.0}/.gitignore +0 -0
  18. {zprocess-2.26.1 → zprocess-2.27.0}/LICENSE.txt +0 -0
  19. {zprocess-2.26.1 → zprocess-2.27.0}/README.md +0 -0
  20. {zprocess-2.26.1 → zprocess-2.27.0}/doc/Makefile +0 -0
  21. {zprocess-2.26.1 → zprocess-2.27.0}/doc/conf.py +0 -0
  22. {zprocess-2.26.1 → zprocess-2.27.0}/doc/index.rst +0 -0
  23. {zprocess-2.26.1 → zprocess-2.27.0}/doc/requirements.txt +0 -0
  24. {zprocess-2.26.1 → zprocess-2.27.0}/pytest.ini +0 -0
  25. {zprocess-2.26.1 → zprocess-2.27.0}/requirements.txt +0 -0
  26. {zprocess-2.26.1 → zprocess-2.27.0}/run_tests.py +0 -0
  27. {zprocess-2.26.1 → zprocess-2.27.0}/setup.cfg +0 -0
  28. {zprocess-2.26.1 → zprocess-2.27.0}/tests/GUI_output_redirection.py +0 -0
  29. {zprocess-2.26.1 → zprocess-2.27.0}/tests/output_redirection.py +0 -0
  30. {zprocess-2.26.1 → zprocess-2.27.0}/tests/test_remote.py +0 -0
  31. {zprocess-2.26.1 → zprocess-2.27.0}/tests/test_zlock_server.py +0 -0
  32. {zprocess-2.26.1 → zprocess-2.27.0}/tests/test_zlog_server.py +0 -0
  33. {zprocess-2.26.1 → zprocess-2.27.0}/tests/test_zprocess.py +0 -0
  34. {zprocess-2.26.1 → zprocess-2.27.0}/zprocess/__init__.py +0 -0
  35. {zprocess-2.26.1 → zprocess-2.27.0}/zprocess/cryptoproxy.py +0 -0
  36. {zprocess-2.26.1 → zprocess-2.27.0}/zprocess/examples/example_child.py +0 -0
  37. {zprocess-2.26.1 → zprocess-2.27.0}/zprocess/examples/example_parent.py +0 -0
  38. {zprocess-2.26.1 → zprocess-2.27.0}/zprocess/examples/processclass_example.py +0 -0
  39. {zprocess-2.26.1 → zprocess-2.27.0}/zprocess/examples/processclass_remote_example.py +0 -0
  40. {zprocess-2.26.1 → zprocess-2.27.0}/zprocess/locking/__init__.py +0 -0
  41. {zprocess-2.26.1 → zprocess-2.27.0}/zprocess/locking/__main__.py +0 -0
  42. {zprocess-2.26.1 → zprocess-2.27.0}/zprocess/makesecret.py +0 -0
  43. {zprocess-2.26.1 → zprocess-2.27.0}/zprocess/process_tree.py +0 -0
  44. {zprocess-2.26.1 → zprocess-2.27.0}/zprocess/remote/__init__.py +0 -0
  45. {zprocess-2.26.1 → zprocess-2.27.0}/zprocess/remote/__main__.py +0 -0
  46. {zprocess-2.26.1 → zprocess-2.27.0}/zprocess/remote/curses_server.py +0 -0
  47. {zprocess-2.26.1 → zprocess-2.27.0}/zprocess/remote/server.py +0 -0
  48. {zprocess-2.26.1 → zprocess-2.27.0}/zprocess/security.py +0 -0
  49. {zprocess-2.26.1 → zprocess-2.27.0}/zprocess/socks/__init__.py +0 -0
  50. {zprocess-2.26.1 → zprocess-2.27.0}/zprocess/socks/server.py +0 -0
  51. {zprocess-2.26.1 → zprocess-2.27.0}/zprocess/tasks.py +0 -0
  52. {zprocess-2.26.1 → zprocess-2.27.0}/zprocess/utils.py +0 -0
  53. {zprocess-2.26.1 → zprocess-2.27.0}/zprocess/zlock/__main__.py +0 -0
  54. {zprocess-2.26.1 → zprocess-2.27.0}/zprocess/zlog/__main__.py +0 -0
  55. {zprocess-2.26.1 → zprocess-2.27.0}/zprocess.egg-info/dependency_links.txt +0 -0
  56. {zprocess-2.26.1 → zprocess-2.27.0}/zprocess.egg-info/requires.txt +0 -0
  57. {zprocess-2.26.1 → zprocess-2.27.0}/zprocess.egg-info/top_level.txt +0 -0
@@ -0,0 +1,47 @@
1
+ # This repository. PyPI and Anaconda test and release package uploads are only done if
2
+ # the repository the workflow is running in matches this (i.e. is not a fork). Optional,
3
+ # if not set, package uploads are skipped.
4
+ export RELEASE_REPO="chrisjbillington/zprocess"
5
+
6
+ # Username with which to upload conda packages. If not given, anaconda uploads are
7
+ # skipped.
8
+ export ANACONDA_USER="labscript-suite"
9
+
10
+ # Whether (true or false) to upload releases to PyPI, non-releases to Test PyPI,
11
+ # releases to Anaconda, non-releases to Anaconda test label. Only used if the repository
12
+ # the workflow is running in matches RELEASE_REPO, otherwise uploads are skipped.
13
+ # Anaconda uploads require ANACONDA_USER be specified and ANACONDA_API_TOKEN secret be
14
+ # set. Optional, all default to true.
15
+ export PYPI_UPLOAD=""
16
+ export TESTPYPI_UPLOAD=""
17
+ export ANACONDA_UPLOAD=""
18
+ export TEST_ANACONDA_UPLOAD=""
19
+
20
+ # Which Python version to use for pure wheel builds, sdists, and as the host Python for
21
+ # cibuildwheel. Optional, defaults to the second-most recent minor Python version.
22
+ export DEFAULT_PYTHON=""
23
+
24
+ # Comma-separated list of Python versions to build conda packages for. Only used if
25
+ # HAS_ENV_MARKERS=true or PURE=false, otherwise a noarch conda package is built instead.
26
+ # Optional, defaults to all non-end-of-life stable Python minor versions.
27
+ export CONDA_PYTHONS=""
28
+
29
+ # Environment variable set in the envionment that `cibuildwheel` runs in instructing it
30
+ # which Pythons to build for, as a space-separated list of specifiers in the format
31
+ # specified by `cibuildwheel`. Only used if PURE=false. Optional, defaults to all
32
+ # non-end-of-life stable CPython versions.
33
+ export CIBW_BUILD=""
34
+
35
+ # Name of Python package. Optional, defaults to name from the package metadata
36
+ export PKGNAME=""
37
+
38
+ # Version of Python package. Optional, defaults to version from the package metadata
39
+ export PKGVER=""
40
+
41
+ # Whether the Python package is pure (true) or impure (false). Optional, defaults to
42
+ # false if the setuptools package has extension modules or libraries, otherwise true.
43
+ export PURE=""
44
+
45
+ # Whether (true or false) the Python package has dependencies that vary by platform or
46
+ # Python version. Optional, Defaults to presence of env markers in package metadata.
47
+ export HAS_ENV_MARKERS=""
@@ -0,0 +1,452 @@
1
+ name: Build and Release
2
+
3
+ on:
4
+ push:
5
+ branches:
6
+ - master
7
+ - maintenance/*
8
+ tags:
9
+ - 'v[0-9]+.[0-9]+.[0-9]+*'
10
+
11
+ env:
12
+ OS_LIST_UBUNTU: '["ubuntu-latest"]'
13
+ OS_LIST_ALL: '["ubuntu-latest", "windows-latest", "macos-latest", "macos-15-intel"]'
14
+
15
+
16
+ jobs:
17
+ configure:
18
+ name: Configure workflow run
19
+ runs-on: ubuntu-latest
20
+ outputs:
21
+ DEFAULT_PYTHON: ${{ steps.config.outputs.DEFAULT_PYTHON }}
22
+ CIBW_BUILD: ${{ steps.config.outputs.CIBW_BUILD }}
23
+ PKGNAME: ${{ steps.config.outputs.PKGNAME }}
24
+ PKGVER: ${{ steps.config.outputs.PKGVER }}
25
+ PURE: ${{ steps.config.outputs.PURE }}
26
+ ANACONDA_USER: ${{ steps.config.outputs.ANACONDA_USER }}
27
+ CONDA_BUILD_ARGS: ${{ steps.config.outputs.CONDA_BUILD_ARGS }}
28
+ BUILD_OS_LIST: ${{ steps.config.outputs.BUILD_OS_LIST }}
29
+ RELEASE: ${{ steps.config.outputs.RELEASE }}
30
+ TESTPYPI_UPLOAD_THIS_RUN: ${{ steps.config.outputs.TESTPYPI_UPLOAD_THIS_RUN }}
31
+ PYPI_UPLOAD_THIS_RUN: ${{ steps.config.outputs.PYPI_UPLOAD_THIS_RUN }}
32
+ TEST_ANACONDA_UPLOAD_THIS_RUN: ${{ steps.config.outputs.TEST_ANACONDA_UPLOAD_THIS_RUN }}
33
+ ANACONDA_UPLOAD_THIS_RUN: ${{ steps.config.outputs.ANACONDA_UPLOAD_THIS_RUN }}
34
+
35
+ steps:
36
+ - name: Checkout
37
+ uses: actions/checkout@v4
38
+ with:
39
+ fetch-depth: 0
40
+
41
+ - name: Ignore Tags for non-tag pushes
42
+ if: "!startsWith(github.ref, 'refs/tags/')"
43
+ run: git tag -d $(git tag --points-at HEAD)
44
+
45
+ - name: Install Python
46
+ uses: actions/setup-python@v5
47
+ with:
48
+ python-version: '3.x'
49
+
50
+ - name: Configure workflow
51
+ id: config
52
+ run: |
53
+ pip install ci-helper
54
+
55
+ # Load repo-specific variables and overrides:
56
+ VARS_FILE=".github/workflows/release-vars.sh"
57
+ if [ -f "${VARS_FILE}" ]; then
58
+ source "${VARS_FILE}"
59
+ fi
60
+
61
+ # Python version used to build sdists, pure wheels, and as host Python for
62
+ # `cibuildwheel`:
63
+ if [ -z "${DEFAULT_PYTHON}" ]; then
64
+ # Default to second-most recent supported Python version:
65
+ DEFAULT_PYTHON=$(ci-helper defaultpython)
66
+ fi
67
+
68
+ # Versions of Python to build conda packages for:
69
+ if [ -z "${CONDA_PYTHONS}" ]; then
70
+ # Default to all supported Python versions:
71
+ CONDA_PYTHONS=$(ci-helper pythons)
72
+ fi
73
+
74
+ # Env var for `cibuildwheel` specifying target Python versions:
75
+ if [ -z "${CIBW_BUILD}" ]; then
76
+ # default to all supported CPython versions:
77
+ CIBW_BUILD=$(ci-helper pythons --cibw)
78
+ fi
79
+
80
+ # Package name and version
81
+ if [ -z "${PKGNAME}" ]; then
82
+ # Default to package name from project metadata:
83
+ PKGNAME=$(ci-helper distinfo name .)
84
+ fi
85
+ if [ -z "${PKGVER}" ]; then
86
+ # Default to package version from project metadata:
87
+ PKGVER=$(ci-helper distinfo version .)
88
+ fi
89
+
90
+ # Whether the package is pure python
91
+ if [ -z "${PURE}" ]; then
92
+ # Default to whether the setuptools package declares no modules/libraries:
93
+ PURE=$(ci-helper distinfo is_pure .)
94
+ fi
95
+
96
+ # Whether the package requirements depend on platform or Python version:
97
+ if [ -z "${HAS_ENV_MARKERS}" ]; then
98
+ # Default to the presence of env markers in package metadata:
99
+ HAS_ENV_MARKERS=$(ci-helper distinfo has_env_markers .)
100
+ fi
101
+
102
+ # List of OSs we need to run the build job on and arguments to
103
+ # `setuptools-conda build`:
104
+ if [[ "${PURE}" == false || "${HAS_ENV_MARKERS}" == true ]]; then
105
+ BUILD_OS_LIST="${OS_LIST_ALL}"
106
+ CONDA_BUILD_ARGS="--pythons=${CONDA_PYTHONS}"
107
+ else
108
+ BUILD_OS_LIST="${OS_LIST_UBUNTU}"
109
+ CONDA_BUILD_ARGS="--noarch"
110
+ fi
111
+
112
+ # Release if a tag was pushed:
113
+ if [ "${{ contains(github.ref, '/tags') }}" == true ]; then
114
+ RELEASE=true
115
+ else
116
+ RELEASE=false
117
+ fi
118
+
119
+ # What types of package uploads are enabled:
120
+ if [ -z "${PYPI_UPLOAD}" ]; then
121
+ PYPI_UPLOAD=true
122
+ else
123
+ PYPI_UPLOAD=false
124
+ fi
125
+ if [ -z "${TESTPYPI_UPLOAD}" ]; then
126
+ TESTPYPI_UPLOAD=true
127
+ else
128
+ TESTPYPI_UPLOAD=false
129
+ fi
130
+ if [ -z "${ANACONDA_UPLOAD}" ]; then
131
+ ANACONDA_UPLOAD=true
132
+ else
133
+ ANACONDA_UPLOAD=false
134
+ fi
135
+ if [ -z "${TEST_ANACONDA_UPLOAD}" ]; then
136
+ TEST_ANACONDA_UPLOAD=true
137
+ else
138
+ TEST_ANACONDA_UPLOAD=false
139
+ fi
140
+
141
+ if [ "${{ github.repository }}" != "${RELEASE_REPO}" ]; then
142
+ echo "Workflow repo doesn't match ${RELEASE_REPO}, disabling package uploads"
143
+ PYPI_UPLOAD=false
144
+ TESTPYPI_UPLOAD=false
145
+ ANACONDA_UPLOAD=false
146
+ TEST_ANACONDA_UPLOAD=false
147
+ fi
148
+
149
+ # If Anaconda uploads enabled, check necessary username and token are
150
+ # available:
151
+ if [[ "${ANACONDA_UPLOAD}" == true || "${TEST_ANACONDA_UPLOAD}" == true ]]; then
152
+ if [ -z "${{ secrets.ANACONDA_API_TOKEN }}" ]; then
153
+ echo "Anaconda uploads enabled but ANACONDA_API_TOKEN secret not set"
154
+ exit 1
155
+ fi
156
+ if [ -z "${ANACONDA_USER}" ]; then
157
+ echo "Anaconda uploads enabled but ANACONDA_USER not set"
158
+ exit 1
159
+ fi
160
+ fi
161
+
162
+ # If enabled, upload releases to PyPI and Anaconda:
163
+ if [[ "${RELEASE}" == true && "${PYPI_UPLOAD}" == true ]]; then
164
+ PYPI_UPLOAD_THIS_RUN=true
165
+ else
166
+ PYPI_UPLOAD_THIS_RUN=false
167
+ fi
168
+ if [[ "${RELEASE}" == true && "${ANACONDA_UPLOAD}" == true ]]; then
169
+ ANACONDA_UPLOAD_THIS_RUN=true
170
+ else
171
+ ANACONDA_UPLOAD_THIS_RUN=false
172
+ fi
173
+
174
+ # If enabled, upload non-releases to Test PyPI and Anaconda test label:
175
+ if [[ "${RELEASE}" == false && "${TESTPYPI_UPLOAD}" == true ]]; then
176
+ TESTPYPI_UPLOAD_THIS_RUN=true
177
+ else
178
+ TESTPYPI_UPLOAD_THIS_RUN=false
179
+ fi
180
+ if [[ "${RELEASE}" == false && "${TEST_ANACONDA_UPLOAD}" == true ]]; then
181
+ TEST_ANACONDA_UPLOAD_THIS_RUN=true
182
+ else
183
+ TEST_ANACONDA_UPLOAD_THIS_RUN=false
184
+ fi
185
+
186
+ echo "DEFAULT_PYTHON=${DEFAULT_PYTHON}" >> "${GITHUB_OUTPUT}"
187
+ echo "CIBW_BUILD=${CIBW_BUILD}" >> "${GITHUB_OUTPUT}"
188
+ echo "PKGNAME=${PKGNAME}" >> "${GITHUB_OUTPUT}"
189
+ echo "PKGVER=${PKGVER}" >> "${GITHUB_OUTPUT}"
190
+ echo "PURE=${PURE}" >> "${GITHUB_OUTPUT}"
191
+ echo "ANACONDA_USER=${ANACONDA_USER}" >> "${GITHUB_OUTPUT}"
192
+ echo "CONDA_BUILD_ARGS=${CONDA_BUILD_ARGS}" >> "${GITHUB_OUTPUT}"
193
+ echo "BUILD_OS_LIST=${BUILD_OS_LIST}" >> "${GITHUB_OUTPUT}"
194
+ echo "RELEASE=${RELEASE}" >> "${GITHUB_OUTPUT}"
195
+ echo "TESTPYPI_UPLOAD_THIS_RUN=${TESTPYPI_UPLOAD_THIS_RUN}" >> "${GITHUB_OUTPUT}"
196
+ echo "PYPI_UPLOAD_THIS_RUN=${PYPI_UPLOAD_THIS_RUN}" >> "${GITHUB_OUTPUT}"
197
+ echo "TEST_ANACONDA_UPLOAD_THIS_RUN=${TEST_ANACONDA_UPLOAD_THIS_RUN}" >> "${GITHUB_OUTPUT}"
198
+ echo "ANACONDA_UPLOAD_THIS_RUN=${ANACONDA_UPLOAD_THIS_RUN}" >> "${GITHUB_OUTPUT}"
199
+
200
+ echo
201
+ echo "=========================="
202
+ echo "Workflow run configuration:"
203
+ echo "--------------------------"
204
+ cat "${GITHUB_OUTPUT}"
205
+ echo "=========================="
206
+ echo
207
+
208
+
209
+ build:
210
+ name: Build
211
+ runs-on: ${{ matrix.os }}
212
+ needs: configure
213
+ strategy:
214
+ matrix:
215
+ os: ${{ fromJSON(needs.configure.outputs.BUILD_OS_LIST) }}
216
+
217
+ env:
218
+ DEFAULT_PYTHON: ${{ needs.configure.outputs.DEFAULT_PYTHON }}
219
+ CIBW_BUILD: ${{ needs.configure.outputs.CIBW_BUILD }}
220
+ PURE: ${{ needs.configure.outputs.PURE }}
221
+ CONDA_BUILD_ARGS: ${{ needs.configure.outputs.CONDA_BUILD_ARGS }}
222
+
223
+ steps:
224
+ - name: Checkout
225
+ uses: actions/checkout@v4
226
+ with:
227
+ fetch-depth: 0
228
+
229
+ - name: Ignore Tags for non-tag pushes
230
+ if: "!startsWith(github.ref, 'refs/tags/')"
231
+ run: git tag -d $(git tag --points-at HEAD)
232
+
233
+ - name: Install Python
234
+ uses: actions/setup-python@v5
235
+ with:
236
+ python-version: ${{ env.DEFAULT_PYTHON }}
237
+
238
+ - name: Install Python tools
239
+ run: python -m pip install --upgrade pip setuptools wheel build cibuildwheel
240
+
241
+ - name: Source distribution
242
+ if: strategy.job-index == 0
243
+ run: python -m build -s .
244
+
245
+ - name: Wheel distribution (pure)
246
+ if: env.PURE == 'true' && strategy.job-index == 0
247
+ run: python -m build -w .
248
+
249
+ - name: Wheel distribution (impure)
250
+ if: env.PURE == 'false'
251
+ run: cibuildwheel --output-dir dist
252
+
253
+ - name: Upload artifact
254
+ if: env.PURE == 'false' || strategy.job-index == 0
255
+ uses: actions/upload-artifact@v4
256
+ with:
257
+ name: dist-${{ matrix.os }}
258
+ path: ./dist
259
+ if-no-files-found: error
260
+
261
+ - name: Install Miniforge
262
+ uses: conda-incubator/setup-miniconda@v3
263
+ with:
264
+ miniforge-version: "latest"
265
+ auto-update-conda: true
266
+ conda-remove-defaults: true
267
+ auto-activate: true
268
+ activate-environment: ""
269
+
270
+ - name: Conda package
271
+ shell: bash -l {0}
272
+ run: |
273
+ if [ "${{ runner.os }}" == Windows ]; then
274
+ # Short path to minimise odds of hitting Windows max path length
275
+ CONDA_BUILD_ARGS+=" --croot ${{ runner.temp }}\cb"
276
+ fi
277
+ conda install -c labscript-suite setuptools-conda
278
+ setuptools-conda build $CONDA_BUILD_ARGS .
279
+
280
+ - name: Upload artifact
281
+ uses: actions/upload-artifact@v4
282
+ with:
283
+ name: conda_packages-${{ matrix.os }}
284
+ path: ./conda_packages
285
+ if-no-files-found: error
286
+
287
+
288
+ github-release:
289
+ name: Publish release (GitHub)
290
+ runs-on: ubuntu-latest
291
+ needs: [configure, build]
292
+ if: ${{ needs.configure.outputs.RELEASE == 'true' }}
293
+ permissions:
294
+ contents: write
295
+ env:
296
+ PKGNAME: ${{ needs.configure.outputs.PKGNAME }}
297
+ PKGVER: ${{ needs.configure.outputs.PKGVER }}
298
+
299
+ steps:
300
+ - name: Download Artifact
301
+ uses: actions/download-artifact@v4
302
+ with:
303
+ pattern: dist*
304
+ path: ./dist
305
+ merge-multiple: true
306
+
307
+ - name: Create GitHub release and upload release asset
308
+ uses: softprops/action-gh-release@v2
309
+ env:
310
+ GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
311
+ with:
312
+ tag_name: ${{ github.event.ref }}
313
+ name: ${{ env.PKGNAME }} ${{ env.PKGVER }}
314
+ draft: true
315
+ prerelease: ${{ contains(github.event.ref, 'rc') }}
316
+ files: ./dist/*.tar.gz
317
+
318
+
319
+ testpypi-upload:
320
+ name: Publish on Test PyPI
321
+ runs-on: ubuntu-latest
322
+ needs: [configure, build]
323
+ if: ${{ needs.configure.outputs.TESTPYPI_UPLOAD_THIS_RUN == 'true' }}
324
+ env:
325
+ PKGNAME: ${{ needs.configure.outputs.PKGNAME }}
326
+ PKGVER: ${{ needs.configure.outputs.PKGVER }}
327
+ environment:
328
+ name: testpypi
329
+ url: https://test.pypi.org/project/${{ env.PKGNAME }}/${{ env.PKGVER }}
330
+ permissions:
331
+ id-token: write
332
+
333
+ steps:
334
+ - name: Download Artifact
335
+ uses: actions/download-artifact@v4
336
+ with:
337
+ pattern: dist*
338
+ path: ./dist
339
+ merge-multiple: true
340
+
341
+ - name: Publish on TestPyPI
342
+ uses: pypa/gh-action-pypi-publish@release/v1
343
+ with:
344
+ repository-url: https://test.pypi.org/legacy/
345
+ verbose: true
346
+ skip-existing: true
347
+
348
+
349
+ pypi-upload:
350
+ name: Publish on PyPI
351
+ runs-on: ubuntu-latest
352
+ needs: [configure, build]
353
+ if: ${{ needs.configure.outputs.PYPI_UPLOAD_THIS_RUN == 'true' }}
354
+ env:
355
+ PKGNAME: ${{ needs.configure.outputs.PKGNAME }}
356
+ PKGVER: ${{ needs.configure.outputs.PKGVER }}
357
+ environment:
358
+ name: pypi
359
+ url: https://pypi.org/project/${{ env.PKGNAME }}/${{ env.PKGVER }}
360
+ permissions:
361
+ id-token: write
362
+
363
+ steps:
364
+ - name: Download Artifact
365
+ uses: actions/download-artifact@v4
366
+ with:
367
+ pattern: dist*
368
+ path: ./dist
369
+ merge-multiple: true
370
+
371
+ - name: Publish on PyPI
372
+ uses: pypa/gh-action-pypi-publish@release/v1
373
+ with:
374
+ verbose: true
375
+ skip-existing: true
376
+
377
+
378
+ test-anaconda-upload:
379
+ name: Publish on Anaconda (test label)
380
+ runs-on: ubuntu-latest
381
+ needs: [configure, build]
382
+ if: ${{ needs.configure.outputs.TEST_ANACONDA_UPLOAD_THIS_RUN == 'true' }}
383
+
384
+ steps:
385
+ - name: Download Artifact
386
+ uses: actions/download-artifact@v4
387
+ with:
388
+ pattern: conda_packages-*
389
+ path: ./conda_packages
390
+ merge-multiple: true
391
+
392
+ - name: Install Miniforge
393
+ uses: conda-incubator/setup-miniconda@v3
394
+ with:
395
+ miniforge-version: "latest"
396
+ auto-update-conda: true
397
+ conda-remove-defaults: true
398
+ auto-activate: true
399
+ activate-environment: ""
400
+
401
+ - name: Install Anaconda cloud client
402
+ shell: bash -l {0}
403
+ run: conda install anaconda-client
404
+
405
+ - name: Publish to Anaconda test label
406
+ shell: bash -l {0}
407
+ run: |
408
+ anaconda \
409
+ --token ${{ secrets.ANACONDA_API_TOKEN }} \
410
+ upload \
411
+ --skip-existing \
412
+ --user ${{ needs.configure.outputs.ANACONDA_USER }} \
413
+ --label test \
414
+ conda_packages/*/*
415
+
416
+
417
+ anaconda-upload:
418
+ name: Publish on Anaconda
419
+ runs-on: ubuntu-latest
420
+ needs: [configure, build]
421
+ if: ${{ needs.configure.outputs.ANACONDA_UPLOAD_THIS_RUN == 'true' }}
422
+
423
+ steps:
424
+ - name: Download Artifact
425
+ uses: actions/download-artifact@v4
426
+ with:
427
+ pattern: conda_packages-*
428
+ path: ./conda_packages
429
+ merge-multiple: true
430
+
431
+ - name: Install Miniforge
432
+ uses: conda-incubator/setup-miniconda@v3
433
+ with:
434
+ miniforge-version: "latest"
435
+ auto-update-conda: true
436
+ conda-remove-defaults: true
437
+ auto-activate: true
438
+ activate-environment: ""
439
+
440
+ - name: Install Anaconda cloud client
441
+ shell: bash -l {0}
442
+ run: conda install anaconda-client
443
+
444
+ - name: Publish to Anaconda main
445
+ shell: bash -l {0}
446
+ run: |
447
+ anaconda \
448
+ --token ${{ secrets.ANACONDA_API_TOKEN }} \
449
+ upload \
450
+ --skip-existing \
451
+ --user ${{ needs.configure.outputs.ANACONDA_USER }} \
452
+ conda_packages/*/*
@@ -0,0 +1,39 @@
1
+ Metadata-Version: 2.4
2
+ Name: zprocess
3
+ Version: 2.27.0
4
+ Summary: A set of utilities for multiprocessing using zeromq
5
+ Author-email: Christopher Billington <chrisjbillington@gmail.com>
6
+ License-Expression: BSD-2-Clause
7
+ Project-URL: Homepage, https://github.com/chrisjbillington/zprocess
8
+ Project-URL: Documentation, https://github.com/chrisjbillington/zprocess
9
+ Project-URL: Repository, https://github.com/chrisjbillington/zprocess
10
+ Project-URL: Downloads, https://pypi.org/project/zprocess/
11
+ Project-URL: Tracker, https://github.com/chrisjbillington/zprocess/issues
12
+ Keywords: multiprocessing,IPC,zeromq
13
+ Classifier: Programming Language :: Python :: 3 :: Only
14
+ Requires-Python: >=3.8
15
+ Description-Content-Type: text/markdown
16
+ License-File: LICENSE.txt
17
+ Requires-Dist: setuptools_scm
18
+ Requires-Dist: pyzmq
19
+ Requires-Dist: pywin32; sys_platform == "win32"
20
+ Requires-Dist: windows-curses; sys_platform == "win32"
21
+ Provides-Extra: test
22
+ Requires-Dist: pytest; extra == "test"
23
+ Requires-Dist: pytest-cov; extra == "test"
24
+ Dynamic: license-file
25
+
26
+ # zprocess
27
+
28
+ A set of utilities for multiprocessing using
29
+ zeromq. Includes process creation and management, output
30
+ redirection, message passing, inter-process locks, logging,
31
+ and a process-tree-wide event system.
32
+
33
+ (
34
+ [view on pypi](https://pypi.python.org/pypi/zprocess/);
35
+ [view on Github](https://github.com/chrisjbillington/zprocess)
36
+ )
37
+
38
+ * Install `python setup.py install`.
39
+
@@ -1,8 +1,9 @@
1
1
  [build-system]
2
- requires = ["setuptools", "wheel", "setuptools_scm"]
2
+ requires = ["setuptools", "setuptools_scm"]
3
3
  build-backend = "setuptools.build_meta"
4
4
 
5
5
  [tool.setuptools_scm]
6
+ version_scheme = "release-branch-semver"
6
7
  local_scheme = "no-local-version"
7
8
 
8
9
  [tool.setuptools.packages]
@@ -15,9 +16,9 @@ authors = [
15
16
  {name = "Christopher Billington", email = "chrisjbillington@gmail.com"},
16
17
  ]
17
18
  keywords = ["multiprocessing", "IPC", "zeromq"]
18
- license = {file = 'LICENSE.txt'}
19
+ license = "BSD-2-Clause"
20
+ license-files = ["LICENSE.txt"]
19
21
  classifiers = [
20
- "License :: OSI Approved :: BSD License",
21
22
  "Programming Language :: Python :: 3 :: Only",
22
23
  ]
23
24
  requires-python = ">=3.8"
@@ -4,7 +4,10 @@ import importlib.metadata
4
4
  root = Path(__file__).parent.parent
5
5
  if (root / '.git').is_dir():
6
6
  from setuptools_scm import get_version
7
- __version__ = get_version(root, local_scheme="no-local-version")
7
+
8
+ __version__ = get_version(
9
+ root, version_scheme="release-branch-semver", local_scheme="no-local-version"
10
+ )
8
11
  else:
9
12
  try:
10
13
  __version__ = importlib.metadata.version(__package__)
@@ -239,8 +239,8 @@ class ZMQServer(object):
239
239
  sock.connect(self._shutdown_endpoint)
240
240
  sock.send(b'stop')
241
241
  self.mainloop_thread.join()
242
- sock.close(linger=True)
243
- self.sock.close(linger=False)
242
+ sock.close(linger=100)
243
+ self.sock.close(linger=0)
244
244
  self.stopping = False
245
245
 
246
246
  def handler(self, request_data):
@@ -72,8 +72,8 @@ def _setup():
72
72
  except Exception:
73
73
  # Tell the parent what went wrong:
74
74
  process_tree.to_parent.put(traceback.format_exc())
75
- # Ensure message is sent before the process exits:
76
- process_tree.to_parent.sock.close(linger=1)
75
+ # Ensure enough time for message to be sent before the process exits:
76
+ process_tree.to_parent.sock.close(linger=100)
77
77
  return
78
78
 
79
79
  # Tell the parent we have a class
@@ -90,7 +90,7 @@ class ZLockClient(object):
90
90
  raise zmq.ZMQError('Invalid repsonse from server: ' + response)
91
91
  raise zmq.ZMQError('No response from zlock server: timed out')
92
92
  except:
93
- self.local.sock.close(linger=False)
93
+ self.local.sock.close(linger=0)
94
94
  del self.local.sock
95
95
  raise
96
96
 
@@ -115,7 +115,7 @@ class ZLockClient(object):
115
115
  return response
116
116
  raise zmq.ZMQError('No response from zlock server: timed out')
117
117
  except:
118
- self.local.sock.close(linger=False)
118
+ self.local.sock.close(linger=0)
119
119
  del self.local.sock
120
120
  raise
121
121
 
@@ -150,7 +150,7 @@ class ZLockClient(object):
150
150
  raise zmq.ZMQError(response)
151
151
  except:
152
152
  if hasattr(self.local, 'sock'):
153
- self.local.sock.close(linger=False)
153
+ self.local.sock.close(linger=0)
154
154
  del self.local.sock
155
155
  raise
156
156
 
@@ -171,7 +171,7 @@ class ZLockClient(object):
171
171
  raise zmq.ZMQError(response)
172
172
  except:
173
173
  if hasattr(self.local, 'sock'):
174
- self.local.sock.close(linger=False)
174
+ self.local.sock.close(linger=0)
175
175
  del self.local.sock
176
176
  raise
177
177
 
@@ -561,7 +561,7 @@ class ZMQLockServer(object):
561
561
  sock.send(b'stop')
562
562
  if self.run_thread is not None:
563
563
  self.run_thread.join()
564
- sock.close(linger=True)
564
+ sock.close(linger=100)
565
565
 
566
566
  def send(self, routing_id, message):
567
567
  self.router.send_multipart(routing_id + [b'', message])
@@ -92,7 +92,7 @@ class ZLogClient(object):
92
92
  raise ValueError(response[1].decode('utf8'))
93
93
  return response[1]
94
94
  except:
95
- self.local.sock.close(linger=False)
95
+ self.local.sock.close(linger=0)
96
96
  del self.local.sock
97
97
  del self.local.poller
98
98
  raise
@@ -347,7 +347,7 @@ class ZMQLogServer(object):
347
347
  sock.send(b'stop')
348
348
  if self.run_thread is not None:
349
349
  self.run_thread.join()
350
- sock.close(linger=True)
350
+ sock.close(linger=100)
351
351
 
352
352
  def send(self, routing_id, message):
353
353
  self.router.send_multipart(routing_id + [b'', message])
@@ -0,0 +1,39 @@
1
+ Metadata-Version: 2.4
2
+ Name: zprocess
3
+ Version: 2.27.0
4
+ Summary: A set of utilities for multiprocessing using zeromq
5
+ Author-email: Christopher Billington <chrisjbillington@gmail.com>
6
+ License-Expression: BSD-2-Clause
7
+ Project-URL: Homepage, https://github.com/chrisjbillington/zprocess
8
+ Project-URL: Documentation, https://github.com/chrisjbillington/zprocess
9
+ Project-URL: Repository, https://github.com/chrisjbillington/zprocess
10
+ Project-URL: Downloads, https://pypi.org/project/zprocess/
11
+ Project-URL: Tracker, https://github.com/chrisjbillington/zprocess/issues
12
+ Keywords: multiprocessing,IPC,zeromq
13
+ Classifier: Programming Language :: Python :: 3 :: Only
14
+ Requires-Python: >=3.8
15
+ Description-Content-Type: text/markdown
16
+ License-File: LICENSE.txt
17
+ Requires-Dist: setuptools_scm
18
+ Requires-Dist: pyzmq
19
+ Requires-Dist: pywin32; sys_platform == "win32"
20
+ Requires-Dist: windows-curses; sys_platform == "win32"
21
+ Provides-Extra: test
22
+ Requires-Dist: pytest; extra == "test"
23
+ Requires-Dist: pytest-cov; extra == "test"
24
+ Dynamic: license-file
25
+
26
+ # zprocess
27
+
28
+ A set of utilities for multiprocessing using
29
+ zeromq. Includes process creation and management, output
30
+ redirection, message passing, inter-process locks, logging,
31
+ and a process-tree-wide event system.
32
+
33
+ (
34
+ [view on pypi](https://pypi.python.org/pypi/zprocess/);
35
+ [view on Github](https://github.com/chrisjbillington/zprocess)
36
+ )
37
+
38
+ * Install `python setup.py install`.
39
+
@@ -5,6 +5,7 @@ pyproject.toml
5
5
  pytest.ini
6
6
  requirements.txt
7
7
  run_tests.py
8
+ .github/workflows/release-vars.sh
8
9
  .github/workflows/release.yml
9
10
  doc/Makefile
10
11
  doc/conf.py
@@ -1,322 +0,0 @@
1
- name: Build and Release
2
-
3
- on:
4
- push:
5
- branches:
6
- - master
7
- tags:
8
- - 'v[0-9]+.[0-9]+.[0-9]+*'
9
-
10
- env:
11
- OS_LIST_UBUNTU: '["ubuntu-latest"]'
12
- OS_LIST_ALL: '["ubuntu-latest", "windows-latest", "macos-latest", "macos-13"]'
13
-
14
-
15
- jobs:
16
- configure:
17
- name: Configure workflow run
18
- runs-on: ubuntu-latest
19
- outputs:
20
- PYTHONS: ${{ steps.config.outputs.PYTHONS }}
21
- DEFAULTPYTHON: ${{ steps.config.outputs.DEFAULTPYTHON }}
22
- CIBW_BUILD: ${{ steps.config.outputs.CIBW_BUILD }}
23
- PKGNAME: ${{ steps.config.outputs.PKGNAME }}
24
- PKGVER: ${{ steps.config.outputs.PKGVER }}
25
- PURE: ${{ steps.config.outputs.PURE }}
26
- CONDA_BUILD_ARGS: ${{ steps.config.outputs.CONDA_BUILD_ARGS }}
27
- BUILD_OS_LIST: ${{ steps.config.outputs.BUILD_OS_LIST }}
28
- RELEASE: ${{ steps.config.outputs.RELEASE }}
29
- TESTPYPI_UPLOAD: ${{ steps.config.outputs.TESTPYPI_UPLOAD }}
30
- PYPI_UPLOAD: ${{ steps.config.outputs.PYPI_UPLOAD }}
31
- TEST_ANACONDA_UPLOAD: ${{ steps.config.outputs.TEST_ANACONDA_UPLOAD }}
32
- ANACONDA_UPLOAD: ${{ steps.config.outputs.ANACONDA_UPLOAD }}
33
-
34
- steps:
35
- - name: Checkout
36
- uses: actions/checkout@v4
37
- with:
38
- fetch-depth: 0
39
-
40
- - name: Install Python
41
- uses: actions/setup-python@v5
42
- with:
43
- python-version: '3.x'
44
-
45
- - name: Configure workflow
46
- id: config
47
- run: |
48
- pip install ci-helper
49
-
50
- # Second-most recent supported Python version:
51
- DEFAULTPYTHON=$(ci-helper defaultpython)
52
-
53
- # All supported Python versions:
54
- PYTHONS=$(ci-helper pythons)
55
-
56
- # Env var for `cibuildwheel` to build for all supported CPython versions:
57
- CIBW_BUILD=$(ci-helper pythons --cibw)
58
-
59
- # Package name and version:
60
- PKGNAME=$(ci-helper distinfo name .)
61
- PKGVER=$(ci-helper distinfo version .)
62
-
63
- # Whether the package is pure python, and whether its requirements depend
64
- # on platform or Python version:
65
- PURE=$(ci-helper distinfo is_pure .)
66
- HAS_ENV_MARKERS=$(ci-helper distinfo has_env_markers .)
67
-
68
- # List of OSs we need to run the build job on, and Python versions conda-build
69
- # should target:
70
- if [[ $PURE == false || $HAS_ENV_MARKERS == true ]]; then
71
- BUILD_OS_LIST=$OS_LIST_ALL
72
- CONDA_BUILD_ARGS="--pythons=$PYTHONS"
73
- else
74
- BUILD_OS_LIST=$OS_LIST_UBUNTU
75
- CONDA_BUILD_ARGS="--noarch"
76
- fi
77
-
78
- # Release if a tag was pushed:
79
- if [ ${{ contains(github.ref, '/tags') }} == true ]; then
80
- RELEASE=true
81
- else
82
- RELEASE=false
83
- fi
84
-
85
- # What upload credentials is the repo configured with?
86
- if [ '${{ secrets.TESTPYPI }}' != '' ]; then
87
- HAVE_TESTPYPI_TOKEN=true
88
- else
89
- HAVE_TESTPYPI_TOKEN=false
90
- fi
91
- if [ '${{ secrets.PYPI }}' != '' ]; then
92
- HAVE_PYPI_TOKEN=true
93
- else
94
- HAVE_PYPI_TOKEN=false
95
- fi
96
- if [ '${{ secrets.ANACONDA_API_TOKEN }}' != '' ]; then
97
- HAVE_ANACONDA_TOKEN=true
98
- else
99
- HAVE_ANACONDA_TOKEN=false
100
- fi
101
- if [ '${{ vars.ANACONDA_USER }}' != '' ]; then
102
- HAVE_ANACONDA_USER=true
103
- else
104
- HAVE_ANACONDA_USER=false
105
- fi
106
-
107
- if [ $HAVE_ANACONDA_TOKEN != $HAVE_ANACONDA_TOKEN ]; then
108
- echo "Require both vars.ANACONDA_USER and secrets.ANACONDA_API_TOKEN"
109
- exit 1
110
- fi
111
-
112
- # Upload releases to PyPI and Anaconda if the repo has creds:
113
- if [[ $RELEASE == true && $HAVE_PYPI_TOKEN == true ]]; then
114
- PYPI_UPLOAD=true
115
- else
116
- PYPI_UPLOAD=false
117
- fi
118
- if [[ $RELEASE == true && $HAVE_ANACONDA_TOKEN == true ]]; then
119
- ANACONDA_UPLOAD=true
120
- else
121
- ANACONDA_UPLOAD=false
122
- fi
123
-
124
- # Upload non-releases to TestPyPI and Anaconda test label if repo has creds:
125
- if [[ $RELEASE == false && $HAVE_TESTPYPI_TOKEN == true ]]; then
126
- TESTPYPI_UPLOAD=true
127
- else
128
- TESTPYPI_UPLOAD=false
129
- fi
130
- if [[ $RELEASE == false && $HAVE_ANACONDA_TOKEN == true ]]; then
131
- TEST_ANACONDA_UPLOAD=true
132
- else
133
- TEST_ANACONDA_UPLOAD=false
134
- fi
135
-
136
- echo "DEFAULTPYTHON=$DEFAULTPYTHON" >> $GITHUB_OUTPUT
137
- echo "CIBW_BUILD=$CIBW_BUILD" >> $GITHUB_OUTPUT
138
- echo "PKGNAME=$PKGNAME" >> $GITHUB_OUTPUT
139
- echo "PKGVER=$PKGVER" >> $GITHUB_OUTPUT
140
- echo "PURE=$PURE" >> $GITHUB_OUTPUT
141
- echo "CONDA_BUILD_ARGS=$CONDA_BUILD_ARGS" >> $GITHUB_OUTPUT
142
- echo "BUILD_OS_LIST=$BUILD_OS_LIST" >> $GITHUB_OUTPUT
143
- echo "RELEASE=$RELEASE" >> $GITHUB_OUTPUT
144
- echo "TESTPYPI_UPLOAD=$TESTPYPI_UPLOAD" >> $GITHUB_OUTPUT
145
- echo "PYPI_UPLOAD=$PYPI_UPLOAD" >> $GITHUB_OUTPUT
146
- echo "TEST_ANACONDA_UPLOAD=$TEST_ANACONDA_UPLOAD" >> $GITHUB_OUTPUT
147
- echo "ANACONDA_UPLOAD=$ANACONDA_UPLOAD" >> $GITHUB_OUTPUT
148
-
149
- echo
150
- echo "======================="
151
- echo "Workflow configuration:"
152
- echo "-----------------------"
153
- cat $GITHUB_OUTPUT
154
- echo "======================="
155
- echo
156
-
157
-
158
- build:
159
- name: Build
160
- needs: configure
161
- runs-on: ${{ matrix.os }}
162
- strategy:
163
- matrix:
164
- os: ${{ fromJSON(needs.configure.outputs.BUILD_OS_LIST) }}
165
-
166
- env:
167
- PYTHONS: ${{ needs.configure.outputs.PYTHONS }}
168
- DEFAULTPYTHON: ${{ needs.configure.outputs.DEFAULTPYTHON }}
169
- CIBW_BUILD: ${{ needs.configure.outputs.CIBW_BUILD }}
170
- PURE: ${{ needs.configure.outputs.PURE }}
171
- CONDA_BUILD_ARGS: ${{ needs.configure.outputs.CONDA_BUILD_ARGS }}
172
-
173
- steps:
174
- - name: Checkout
175
- uses: actions/checkout@v4
176
- with:
177
- fetch-depth: 0
178
-
179
- - name: Install Python
180
- uses: actions/setup-python@v5
181
- with:
182
- python-version: ${{ env.DEFAULTPYTHON }}
183
-
184
- - name: Install Python tools
185
- run: python -m pip install --upgrade pip setuptools wheel build cibuildwheel
186
-
187
- - name: Source distribution
188
- if: strategy.job-index == 0
189
- run: python -m build -s .
190
-
191
- - name: Wheel distribution (pure)
192
- if: env.PURE == 'true' && strategy.job-index == 0
193
- run: python -m build -w .
194
-
195
- - name: Wheel distribution (impure)
196
- if: env.PURE == 'false'
197
- run: cibuildwheel --output-dir dist
198
-
199
- - name: Upload artifact
200
- if: env.PURE == 'false' || strategy.job-index == 0
201
- uses: actions/upload-artifact@v4
202
- with:
203
- name: dist-${{ matrix.os }}
204
- path: ./dist
205
- if-no-files-found: error
206
-
207
- - name: Install Miniforge
208
- uses: conda-incubator/setup-miniconda@v3
209
- with:
210
- miniforge-version: "latest"
211
- auto-update-conda: true
212
- conda-remove-defaults: true
213
- auto-activate-base: true
214
- activate-environment: ""
215
-
216
- - name: Conda package
217
- shell: bash -l {0}
218
- run: |
219
- if [ ${{ runner.os }} == Windows ]; then
220
- # Short path to minimise odds of hitting Windows max path length
221
- CONDA_BUILD_ARGS+=" --croot ${{ runner.temp }}\cb"
222
- fi
223
- conda install -c labscript-suite setuptools-conda
224
- setuptools-conda build $CONDA_BUILD_ARGS .
225
-
226
- - name: Upload artifact
227
- uses: actions/upload-artifact@v4
228
- with:
229
- name: conda_packages-${{ matrix.os }}
230
- path: ./conda_packages
231
- if-no-files-found: error
232
-
233
- release:
234
- name: Release
235
- runs-on: ubuntu-latest
236
- needs: [configure, build]
237
- env:
238
- PKGNAME: ${{ needs.configure.outputs.PKGNAME }}
239
- PKGVER: ${{ needs.configure.outputs.PKGVER }}
240
- RELEASE: ${{ needs.configure.outputs.RELEASE }}
241
- TESTPYPI_UPLOAD: ${{ needs.configure.outputs.TESTPYPI_UPLOAD }}
242
- PYPI_UPLOAD: ${{ needs.configure.outputs.PYPI_UPLOAD }}
243
- TEST_ANACONDA_UPLOAD: ${{ needs.configure.outputs.TEST_ANACONDA_UPLOAD }}
244
- ANACONDA_UPLOAD: ${{ needs.configure.outputs.ANACONDA_UPLOAD }}
245
-
246
- steps:
247
- - name: Download Artifact
248
- uses: actions/download-artifact@v4
249
- with:
250
- pattern: dist*
251
- path: ./dist
252
- merge-multiple: true
253
-
254
- - name: Download Artifact
255
- uses: actions/download-artifact@v4
256
- with:
257
- pattern: conda_packages-*
258
- path: ./conda_packages
259
- merge-multiple: true
260
-
261
- - name: Create GitHub Release and Upload Release Asset
262
- if: env.RELEASE == 'true'
263
- uses: softprops/action-gh-release@v2
264
- env:
265
- GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
266
- with:
267
- tag_name: ${{ github.event.ref }}
268
- name: ${{ env.PKGNAME }} ${{ env.PKGVER }}
269
- draft: true
270
- prerelease: ${{ contains(github.event.ref, 'rc') }}
271
- files: ./dist/${{ env.PKGNAME }}-${{ env.PKGVER }}.tar.gz
272
-
273
- - name: Publish on TestPyPI
274
- if: env.TESTPYPI_UPLOAD == 'true'
275
- uses: pypa/gh-action-pypi-publish@release/v1
276
- with:
277
- user: __token__
278
- password: ${{ secrets.TESTPYPI }}
279
- repository-url: https://test.pypi.org/legacy/
280
-
281
- - name: Publish on PyPI
282
- if: env.PYPI_UPLOAD == 'true'
283
- uses: pypa/gh-action-pypi-publish@release/v1
284
- with:
285
- user: __token__
286
- password: ${{ secrets.PYPI }}
287
-
288
- - name: Install Miniforge
289
- uses: conda-incubator/setup-miniconda@v3
290
- with:
291
- miniforge-version: "latest"
292
- auto-update-conda: true
293
- conda-remove-defaults: true
294
- auto-activate-base: true
295
- activate-environment: ""
296
-
297
- - name: Install Anaconda cloud client
298
- shell: bash -l {0}
299
- run: conda install anaconda-client
300
-
301
- - name: Publish to Anaconda test label
302
- if: env.TEST_ANACONDA_UPLOAD == 'true'
303
- shell: bash -l {0}
304
- run: |
305
- anaconda \
306
- --token ${{ secrets.ANACONDA_API_TOKEN }} \
307
- upload \
308
- --skip-existing \
309
- --user ${{ vars.ANACONDA_USER }} \
310
- --label test \
311
- conda_packages/*/*
312
-
313
- - name: Publish to Anaconda main label
314
- if: env.ANACONDA_UPLOAD == 'true'
315
- shell: bash -l {0}
316
- run: |
317
- anaconda \
318
- --token ${{ secrets.ANACONDA_API_TOKEN }} \
319
- upload \
320
- --skip-existing \
321
- --user ${{ vars.ANACONDA_USER }} \
322
- conda_packages/*/*
zprocess-2.26.1/PKG-INFO DELETED
@@ -1,61 +0,0 @@
1
- Metadata-Version: 2.1
2
- Name: zprocess
3
- Version: 2.26.1
4
- Summary: A set of utilities for multiprocessing using zeromq
5
- Author-email: Christopher Billington <chrisjbillington@gmail.com>
6
- License: Copyright (c) 2013, Christopher Billington
7
- All rights reserved.
8
-
9
- Redistribution and use in source and binary forms, with or without
10
- modification, are permitted provided that the following conditions are met:
11
-
12
- 1. Redistributions of source code must retain the above copyright notice, this
13
- list of conditions and the following disclaimer.
14
- 2. Redistributions in binary form must reproduce the above copyright notice,
15
- this list of conditions and the following disclaimer in the documentation
16
- and/or other materials provided with the distribution.
17
-
18
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
19
- ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
20
- WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
21
- DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
22
- ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
23
- (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
24
- LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
25
- ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
26
- (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
27
- SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
28
-
29
- Project-URL: Homepage, https://github.com/chrisjbillington/zprocess
30
- Project-URL: Documentation, https://github.com/chrisjbillington/zprocess
31
- Project-URL: Repository, https://github.com/chrisjbillington/zprocess
32
- Project-URL: Downloads, https://pypi.org/project/zprocess/
33
- Project-URL: Tracker, https://github.com/chrisjbillington/zprocess/issues
34
- Keywords: multiprocessing,IPC,zeromq
35
- Classifier: License :: OSI Approved :: BSD License
36
- Classifier: Programming Language :: Python :: 3 :: Only
37
- Requires-Python: >=3.8
38
- Description-Content-Type: text/markdown
39
- License-File: LICENSE.txt
40
- Requires-Dist: setuptools_scm
41
- Requires-Dist: pyzmq
42
- Requires-Dist: pywin32; sys_platform == "win32"
43
- Requires-Dist: windows-curses; sys_platform == "win32"
44
- Provides-Extra: test
45
- Requires-Dist: pytest; extra == "test"
46
- Requires-Dist: pytest-cov; extra == "test"
47
-
48
- # zprocess
49
-
50
- A set of utilities for multiprocessing using
51
- zeromq. Includes process creation and management, output
52
- redirection, message passing, inter-process locks, logging,
53
- and a process-tree-wide event system.
54
-
55
- (
56
- [view on pypi](https://pypi.python.org/pypi/zprocess/);
57
- [view on Github](https://github.com/chrisjbillington/zprocess)
58
- )
59
-
60
- * Install `python setup.py install`.
61
-
@@ -1,61 +0,0 @@
1
- Metadata-Version: 2.1
2
- Name: zprocess
3
- Version: 2.26.1
4
- Summary: A set of utilities for multiprocessing using zeromq
5
- Author-email: Christopher Billington <chrisjbillington@gmail.com>
6
- License: Copyright (c) 2013, Christopher Billington
7
- All rights reserved.
8
-
9
- Redistribution and use in source and binary forms, with or without
10
- modification, are permitted provided that the following conditions are met:
11
-
12
- 1. Redistributions of source code must retain the above copyright notice, this
13
- list of conditions and the following disclaimer.
14
- 2. Redistributions in binary form must reproduce the above copyright notice,
15
- this list of conditions and the following disclaimer in the documentation
16
- and/or other materials provided with the distribution.
17
-
18
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
19
- ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
20
- WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
21
- DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
22
- ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
23
- (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
24
- LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
25
- ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
26
- (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
27
- SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
28
-
29
- Project-URL: Homepage, https://github.com/chrisjbillington/zprocess
30
- Project-URL: Documentation, https://github.com/chrisjbillington/zprocess
31
- Project-URL: Repository, https://github.com/chrisjbillington/zprocess
32
- Project-URL: Downloads, https://pypi.org/project/zprocess/
33
- Project-URL: Tracker, https://github.com/chrisjbillington/zprocess/issues
34
- Keywords: multiprocessing,IPC,zeromq
35
- Classifier: License :: OSI Approved :: BSD License
36
- Classifier: Programming Language :: Python :: 3 :: Only
37
- Requires-Python: >=3.8
38
- Description-Content-Type: text/markdown
39
- License-File: LICENSE.txt
40
- Requires-Dist: setuptools_scm
41
- Requires-Dist: pyzmq
42
- Requires-Dist: pywin32; sys_platform == "win32"
43
- Requires-Dist: windows-curses; sys_platform == "win32"
44
- Provides-Extra: test
45
- Requires-Dist: pytest; extra == "test"
46
- Requires-Dist: pytest-cov; extra == "test"
47
-
48
- # zprocess
49
-
50
- A set of utilities for multiprocessing using
51
- zeromq. Includes process creation and management, output
52
- redirection, message passing, inter-process locks, logging,
53
- and a process-tree-wide event system.
54
-
55
- (
56
- [view on pypi](https://pypi.python.org/pypi/zprocess/);
57
- [view on Github](https://github.com/chrisjbillington/zprocess)
58
- )
59
-
60
- * Install `python setup.py install`.
61
-
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