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.
- zprocess-2.27.0/.github/workflows/release-vars.sh +47 -0
- zprocess-2.27.0/.github/workflows/release.yml +452 -0
- zprocess-2.27.0/PKG-INFO +39 -0
- {zprocess-2.26.1 → zprocess-2.27.0}/pyproject.toml +4 -3
- {zprocess-2.26.1 → zprocess-2.27.0}/zprocess/__version__.py +4 -1
- {zprocess-2.26.1 → zprocess-2.27.0}/zprocess/clientserver.py +2 -2
- {zprocess-2.26.1 → zprocess-2.27.0}/zprocess/process_class_wrapper.py +2 -2
- {zprocess-2.26.1 → zprocess-2.27.0}/zprocess/zlock/__init__.py +4 -4
- {zprocess-2.26.1 → zprocess-2.27.0}/zprocess/zlock/server.py +1 -1
- {zprocess-2.26.1 → zprocess-2.27.0}/zprocess/zlog/__init__.py +1 -1
- {zprocess-2.26.1 → zprocess-2.27.0}/zprocess/zlog/server.py +1 -1
- zprocess-2.27.0/zprocess.egg-info/PKG-INFO +39 -0
- {zprocess-2.26.1 → zprocess-2.27.0}/zprocess.egg-info/SOURCES.txt +1 -0
- zprocess-2.26.1/.github/workflows/release.yml +0 -322
- zprocess-2.26.1/PKG-INFO +0 -61
- zprocess-2.26.1/zprocess.egg-info/PKG-INFO +0 -61
- {zprocess-2.26.1 → zprocess-2.27.0}/.gitignore +0 -0
- {zprocess-2.26.1 → zprocess-2.27.0}/LICENSE.txt +0 -0
- {zprocess-2.26.1 → zprocess-2.27.0}/README.md +0 -0
- {zprocess-2.26.1 → zprocess-2.27.0}/doc/Makefile +0 -0
- {zprocess-2.26.1 → zprocess-2.27.0}/doc/conf.py +0 -0
- {zprocess-2.26.1 → zprocess-2.27.0}/doc/index.rst +0 -0
- {zprocess-2.26.1 → zprocess-2.27.0}/doc/requirements.txt +0 -0
- {zprocess-2.26.1 → zprocess-2.27.0}/pytest.ini +0 -0
- {zprocess-2.26.1 → zprocess-2.27.0}/requirements.txt +0 -0
- {zprocess-2.26.1 → zprocess-2.27.0}/run_tests.py +0 -0
- {zprocess-2.26.1 → zprocess-2.27.0}/setup.cfg +0 -0
- {zprocess-2.26.1 → zprocess-2.27.0}/tests/GUI_output_redirection.py +0 -0
- {zprocess-2.26.1 → zprocess-2.27.0}/tests/output_redirection.py +0 -0
- {zprocess-2.26.1 → zprocess-2.27.0}/tests/test_remote.py +0 -0
- {zprocess-2.26.1 → zprocess-2.27.0}/tests/test_zlock_server.py +0 -0
- {zprocess-2.26.1 → zprocess-2.27.0}/tests/test_zlog_server.py +0 -0
- {zprocess-2.26.1 → zprocess-2.27.0}/tests/test_zprocess.py +0 -0
- {zprocess-2.26.1 → zprocess-2.27.0}/zprocess/__init__.py +0 -0
- {zprocess-2.26.1 → zprocess-2.27.0}/zprocess/cryptoproxy.py +0 -0
- {zprocess-2.26.1 → zprocess-2.27.0}/zprocess/examples/example_child.py +0 -0
- {zprocess-2.26.1 → zprocess-2.27.0}/zprocess/examples/example_parent.py +0 -0
- {zprocess-2.26.1 → zprocess-2.27.0}/zprocess/examples/processclass_example.py +0 -0
- {zprocess-2.26.1 → zprocess-2.27.0}/zprocess/examples/processclass_remote_example.py +0 -0
- {zprocess-2.26.1 → zprocess-2.27.0}/zprocess/locking/__init__.py +0 -0
- {zprocess-2.26.1 → zprocess-2.27.0}/zprocess/locking/__main__.py +0 -0
- {zprocess-2.26.1 → zprocess-2.27.0}/zprocess/makesecret.py +0 -0
- {zprocess-2.26.1 → zprocess-2.27.0}/zprocess/process_tree.py +0 -0
- {zprocess-2.26.1 → zprocess-2.27.0}/zprocess/remote/__init__.py +0 -0
- {zprocess-2.26.1 → zprocess-2.27.0}/zprocess/remote/__main__.py +0 -0
- {zprocess-2.26.1 → zprocess-2.27.0}/zprocess/remote/curses_server.py +0 -0
- {zprocess-2.26.1 → zprocess-2.27.0}/zprocess/remote/server.py +0 -0
- {zprocess-2.26.1 → zprocess-2.27.0}/zprocess/security.py +0 -0
- {zprocess-2.26.1 → zprocess-2.27.0}/zprocess/socks/__init__.py +0 -0
- {zprocess-2.26.1 → zprocess-2.27.0}/zprocess/socks/server.py +0 -0
- {zprocess-2.26.1 → zprocess-2.27.0}/zprocess/tasks.py +0 -0
- {zprocess-2.26.1 → zprocess-2.27.0}/zprocess/utils.py +0 -0
- {zprocess-2.26.1 → zprocess-2.27.0}/zprocess/zlock/__main__.py +0 -0
- {zprocess-2.26.1 → zprocess-2.27.0}/zprocess/zlog/__main__.py +0 -0
- {zprocess-2.26.1 → zprocess-2.27.0}/zprocess.egg-info/dependency_links.txt +0 -0
- {zprocess-2.26.1 → zprocess-2.27.0}/zprocess.egg-info/requires.txt +0 -0
- {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/*/*
|
zprocess-2.27.0/PKG-INFO
ADDED
|
@@ -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", "
|
|
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 =
|
|
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
|
-
|
|
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=
|
|
243
|
-
self.sock.close(linger=
|
|
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
|
|
76
|
-
process_tree.to_parent.sock.close(linger=
|
|
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=
|
|
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=
|
|
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=
|
|
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=
|
|
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=
|
|
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])
|
|
@@ -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=
|
|
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
|
+
|
|
@@ -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
|
|
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
|