Skip to content

Commit 687a21b

Browse files
committed
Merge branch 'master' into new_handler_methods
2 parents 5b1ff5f + 6c45ed9 commit 687a21b

19 files changed

Lines changed: 544 additions & 116 deletions

.ci/build-deps.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ fi
3333

3434
if [ "$BRPVXS" ]
3535
then
36-
git clone --quiet --recursive --depth 5 --branch "$BRPVXS" https://github.com/mdavidsaver/pvxs.git pvxs
36+
git clone --quiet --recursive --depth 5 --branch "$BRPVXS" https://github.com/epics-base/pvxs.git pvxs
3737
(cd pvxs && git log -n1 )
3838
cat << EOF >> $CURDIR/configure/RELEASE.local
3939
PVXS=$HOME/.source/pvxs

.github/workflows/build.yml

Lines changed: 60 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -43,10 +43,11 @@ jobs:
4343
# Check build from .tar
4444
- name: Source
4545
os: ubuntu-latest
46-
python: "3.9"
46+
python: "3.12"
4747
source: true
4848

4949
# Linux py builds x64
50+
# TODO: manylinux1 and 2014 are EOL, even more reason to remove these supported versions
5051
- name: linux 2.7 amd64
5152
os: ubuntu-latest
5253
pyver: cp27-cp27m
@@ -109,9 +110,17 @@ jobs:
109110
piparch: manylinux2014_x86_64
110111
numpy: numpy==1.23.5
111112
cython: Cython==0.29.35
113+
114+
- name: linux 3.12 amd64
115+
os: ubuntu-latest
116+
pyver: cp312-cp312
117+
piparch: manylinux2014_x86_64
118+
numpy: numpy==2.0.1
119+
cython: Cython==3.0.10
112120
skip_cothread: yes
113121

114122
# Linux py builds x64
123+
# TODO: manylinux1 and 2014 are EOL, even more reason to remove these supported versions
115124
- name: linux 2.7 i686
116125
os: ubuntu-latest
117126
pyver: cp27-cp27m
@@ -151,74 +160,88 @@ jobs:
151160
numpy: numpy==1.16.2
152161
cython: Cython==0.29.2
153162
pre: linux32
163+
skip_cothread: yes
154164

155165
- name: linux 3.8 i686
156166
os: ubuntu-latest
157167
pyver: cp38-cp38
158168
piparch: manylinux1_i686
159-
numpy: numpy==1.17.3
169+
numpy: numpy==1.19.5
160170
cython: Cython==0.29.2
161171
pre: linux32
172+
skip_cothread: yes
162173

163174
- name: linux 3.9 i686
164175
os: ubuntu-latest
165176
pyver: cp39-cp39
166177
piparch: manylinux2010_i686
167-
numpy: numpy==1.19.3
178+
numpy: numpy==1.19.5
168179
cython: Cython==0.29.23
169180
pre: linux32
181+
skip_cothread: yes
170182

171183
# numpy i386 wheels not built >= 3.10
172184

173185
# OSX py builds
174186
- name: osx 3.6 intel
175-
os: macos-latest
187+
os: macos-13
176188
python: "3.6"
177189
piparch: macosx_10_9_intel
178190
numpy: numpy==1.11.3
179191
cython: Cython==0.29.2
180192

181193
- name: osx 3.7 intel
182-
os: macos-latest
194+
os: macos-13
183195
python: "3.7"
184196
piparch: macosx_10_9_intel
185197
numpy: numpy==1.16.2
186198
cython: Cython==0.29.2
187199

188-
- name: osx 3.8 intel
200+
- name: osx 3.8 arm64
189201
os: macos-latest
190202
python: "3.8"
191-
piparch: macosx_10_9_intel
192-
numpy: numpy==1.17.3
203+
piparch: macosx_11_0_universal2
204+
numpy: numpy==1.24.4
193205
cython: Cython==0.29.2
206+
skip_cothread: yes
194207

195-
- name: osx 3.9 intel
208+
- name: osx 3.9 arm64
196209
os: macos-latest
197210
python: "3.9"
198-
piparch: macosx_10_9_intel
199-
numpy: numpy==1.19.3
200-
cython: Cython==0.29.23
211+
piparch: macosx_11_0_universal2
212+
numpy: numpy==2.0.1
213+
cython: Cython==3.0.10
214+
skip_cothread: yes
201215

202-
- name: osx 3.10 intel
216+
- name: osx 3.10 arm64
203217
os: macos-latest
204218
python: "3.10"
205-
piparch: macosx_10_9_intel
206-
numpy: numpy==1.22.0
207-
cython: Cython==0.29.23
219+
piparch: macosx_11_0_universal2
220+
numpy: numpy==2.0.1
221+
cython: Cython==3.0.10
222+
skip_cothread: yes
208223

209-
- name: osx 3.11 intel
224+
- name: osx 3.11 arm64
210225
os: macos-latest
211226
python: "3.11"
212-
piparch: macosx_10_9_intel
213-
numpy: numpy==1.23.5
214-
cython: Cython==0.29.35
227+
piparch: macosx_11_0_universal2
228+
numpy: numpy==2.0.1
229+
cython: Cython==3.0.10
230+
skip_cothread: yes
231+
232+
- name: osx 3.12 arm64
233+
os: macos-latest
234+
python: "3.12"
235+
piparch: macosx_11_0_universal2
236+
numpy: numpy==2.0.1
237+
cython: Cython==3.0.10
215238
skip_cothread: yes
216239

217240
# Windows py builds
218241

219242
## missing Microsoft Visual C++ 9.0
220243
#- os: windows-latest
221-
# python: "2.7"
244+
# python: "3.12"
222245
# piparch: win_amd64
223246

224247
- name: win64 3.5
@@ -270,18 +293,31 @@ jobs:
270293
profile: latest
271294
skip_cothread: yes
272295

296+
- name: win64 3.12
297+
os: windows-latest
298+
python: "3.12"
299+
piparch: win_amd64
300+
profile: latest
301+
skip_cothread: yes
302+
273303
steps:
274304
- uses: actions/checkout@v3
275305
with:
276306
submodules: recursive
277307

278308
- name: Setup native python
279309
if: matrix.python
280-
uses: actions/setup-python@v4
310+
uses: actions/setup-python@v5
281311
with:
282312
python-version: ${{ matrix.python }}
283313
#architecture: x64
284314

315+
# TLS 1.0 and 1.1 support was removed from pypi so the cached pip won't work
316+
- name: Python 3.5 Fix
317+
if: ${{ matrix.python == '3.5' }}
318+
run: |
319+
curl https://bootstrap.pypa.io/pip/3.5/get-pip.py | python
320+
285321
- name: Automatic core dumper analysis
286322
uses: mdavidsaver/ci-core-dumper@master
287323

@@ -358,7 +394,6 @@ jobs:
358394
python -m pip install p4p*.whl
359395
python -m ci_core_dumper exec python -m nose2 -v p4p
360396
361-
362397
- name: Docker PY build
363398
if: matrix.pyver && !matrix.base && !matrix.source
364399
run: |
@@ -370,7 +405,6 @@ jobs:
370405
[ -d dist ]
371406
ls dist/*
372407
export PATH="/opt/python/${{ matrix.pyver }}/bin:\$PATH"
373-
export SETUPTOOLS_USE_DISTUTILS=stdlib
374408
which python
375409
python -m pip install -U pip
376410
python -m pip install setuptools wheel nose2
@@ -422,15 +456,15 @@ jobs:
422456
run: python -m twine check dist/p4p*.tar.*
423457

424458
- name: Upload wheels
425-
if: github.event_name=='push' && github.repository=='mdavidsaver/p4p' && github.ref=='refs/heads/master' && !matrix.base && !matrix.source
459+
if: github.event_name=='push' && github.repository=='epics-base/p4p' && github.ref=='refs/heads/master' && !matrix.base && !matrix.source
426460
env:
427461
TWINE_USERNAME: ${{ secrets.PYPI_USERNAME }}
428462
TWINE_PASSWORD: ${{ secrets.PYPI_PASSWORD }}
429463
run: |
430464
python -m twine upload --skip-existing dist/p4p*.whl
431465
432466
- name: Upload source
433-
if: github.event_name=='push' && github.repository=='mdavidsaver/p4p' && github.ref=='refs/heads/master' && matrix.source && !matrix.base
467+
if: github.event_name=='push' && github.repository=='epics-base/p4p' && github.ref=='refs/heads/master' && matrix.source && !matrix.base
434468
env:
435469
TWINE_USERNAME: ${{ secrets.PYPI_USERNAME }}
436470
TWINE_PASSWORD: ${{ secrets.PYPI_PASSWORD }}

README.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,12 +11,12 @@ Python bindings for the PVAccess network client and server.
1111

1212
See documentation
1313

14-
https://mdavidsaver.github.io/p4p/
14+
https://epics-base.github.io/p4p/
1515

1616
Source
1717

18-
https://github.com/mdavidsaver/p4p/
18+
https://github.com/epics-base/p4p/
1919

2020
CI results
2121

22-
![Github Actions](https://github.com/mdavidsaver/p4p/workflows/P4P/badge.svg)
22+
![Github Actions](https://github.com/epics-base/p4p/workflows/P4P/badge.svg)

documentation/building.rst

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
Building
55
========
66

7-
Release tars available from https://github.com/mdavidsaver/p4p/releases
7+
Release tars available from https://github.com/epics-base/p4p/releases
88

99
The P4P modules requires:
1010

@@ -104,7 +104,7 @@ or with PIP::
104104

105105
From from versioned source. (may replace "master" with release version number)::
106106

107-
git clone --branch master https://github.com/mdavidsaver/p4p.git
107+
git clone --branch master https://github.com/epics-base/p4p.git
108108
cd p4p
109109

110110
Set location of EPICS modules. With EPICS >= 7.0.2::
@@ -152,7 +152,7 @@ If the necessary EPICS modules are not present, then they may be built from sour
152152

153153
sudo apt-get install libreadline6-dev libncurses5-dev perl
154154
git clone https://github.com/epics-base/epics-base.git
155-
git clone https://github.com/mdavidsaver/pvxs.git
155+
git clone https://github.com/epics-base/pvxs.git
156156
cat <<EOF > pvxs/configure/RELEASE.local
157157
EPICS_BASE=$PWD/epics-base
158158
EOF

documentation/gw.rst

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -231,9 +231,9 @@ Configuration is provided as a file using JSON syntax with C-style comments. ::
231231

232232
See also PVXS client_ and server_ configuration references.
233233

234-
.. _client: https://mdavidsaver.github.io/pvxs/client.html#configuration
234+
.. _client: https://epics-base.github.io/pvxs/client.html#configuration
235235

236-
.. _server: https://mdavidsaver.github.io/pvxs/server.html#configuration
236+
.. _server: https://epics-base.github.io/pvxs/server.html#configuration
237237

238238
Run ``pvagw --example-config -`` to see another example configuration.
239239

documentation/index.rst

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,8 +19,8 @@ The recommended starting point is to install from pypi.org. ::
1919
python -m pip install p4p nose2
2020
python -m nose2 p4p # Optional: runs automatic tests
2121

22-
- VCS: https://github.com/mdavidsaver/p4p
23-
- Docs: https://mdavidsaver.github.io/p4p/
22+
- VCS: https://github.com/epics-base/p4p
23+
- Docs: https://epics-base.github.io/p4p/
2424

2525
Contents:
2626

documentation/values.rst

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -278,6 +278,6 @@ API Reference
278278
Relation to C++ API
279279
-------------------
280280

281-
For those familiar with the `PVXS <https://mdavidsaver.github.io/pvxs/>` API.
281+
For those familiar with the `PVXS <https://epics-base.github.io/pvxs/>` API.
282282
A :py:class:`Type` wraps a TypeDef.
283283
:py:class:`Value` wraps a Value.

example/dynamicbox_server.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919

2020
import sys
2121
import time, logging
22+
2223
_log = logging.getLogger(__name__)
2324

2425
from threading import Lock

example/monitor_meta.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ def cb(value):
1717
for fld in value.raw.asSet():
1818
print(" ",fld,value.raw[fld])
1919

20+
2021
print("Create Context")
2122
with Context('pva') as ctxt:
2223
print("Subscribe to", sys.argv[1])

example/ntscalar_walarm.py

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
import logging
2+
logger = logging.getLogger(__name__)
3+
4+
from p4p.nt import NTScalar
5+
from p4p.server import Server
6+
from p4p.server.thread import SharedPV
7+
from p4p.server.nthandlers import NTScalarRulesHandler
8+
9+
# Construct PV with control and valueAlarm structures
10+
# and then set the values of some of those values with a post
11+
pv = SharedPV(nt=NTScalar('d', control=True, valueAlarm=True),
12+
handler=NTScalarRulesHandler(),
13+
initial=12.0)
14+
pv.post({'control.limitHigh': 6,
15+
'valueAlarm.active': True, 'valueAlarm.lowAlarmLimit': 1, 'valueAlarm.lowAlarmSeverity':2})
16+
17+
Server.forever(providers=[{
18+
'demo:pv:name':pv, # PV name only appears here
19+
}])

0 commit comments

Comments
 (0)