labscript-c-extensions 1.2.1__tar.gz → 1.4.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 (21) hide show
  1. {labscript_c_extensions-1.2.1 → labscript_c_extensions-1.4.0}/.github/workflows/release.yml +38 -27
  2. {labscript_c_extensions-1.2.1 → labscript_c_extensions-1.4.0}/PKG-INFO +7 -2
  3. {labscript_c_extensions-1.2.1 → labscript_c_extensions-1.4.0}/labscript_c_extensions/__version__.py +3 -6
  4. {labscript_c_extensions-1.2.1 → labscript_c_extensions-1.4.0}/labscript_c_extensions.egg-info/PKG-INFO +7 -2
  5. {labscript_c_extensions-1.2.1 → labscript_c_extensions-1.4.0}/labscript_c_extensions.egg-info/SOURCES.txt +2 -1
  6. labscript_c_extensions-1.4.0/labscript_c_extensions.egg-info/scm_file_list.json +14 -0
  7. labscript_c_extensions-1.4.0/labscript_c_extensions.egg-info/scm_version.json +8 -0
  8. {labscript_c_extensions-1.2.1 → labscript_c_extensions-1.4.0}/pyproject.toml +10 -2
  9. {labscript_c_extensions-1.2.1 → labscript_c_extensions-1.4.0}/src/runviewer/resample.pyx +10 -8
  10. labscript_c_extensions-1.2.1/setup.py +0 -19
  11. {labscript_c_extensions-1.2.1 → labscript_c_extensions-1.4.0}/.github/workflows/release-vars.sh +0 -0
  12. {labscript_c_extensions-1.2.1 → labscript_c_extensions-1.4.0}/.gitignore +0 -0
  13. {labscript_c_extensions-1.2.1 → labscript_c_extensions-1.4.0}/LICENSE.txt +0 -0
  14. {labscript_c_extensions-1.2.1 → labscript_c_extensions-1.4.0}/README.md +0 -0
  15. {labscript_c_extensions-1.2.1 → labscript_c_extensions-1.4.0}/labscript_c_extensions/__init__.py +0 -0
  16. {labscript_c_extensions-1.2.1 → labscript_c_extensions-1.4.0}/labscript_c_extensions/runviewer/__init__.py +0 -0
  17. {labscript_c_extensions-1.2.1 → labscript_c_extensions-1.4.0}/labscript_c_extensions.egg-info/dependency_links.txt +0 -0
  18. {labscript_c_extensions-1.2.1 → labscript_c_extensions-1.4.0}/labscript_c_extensions.egg-info/not-zip-safe +0 -0
  19. {labscript_c_extensions-1.2.1 → labscript_c_extensions-1.4.0}/labscript_c_extensions.egg-info/requires.txt +0 -0
  20. {labscript_c_extensions-1.2.1 → labscript_c_extensions-1.4.0}/labscript_c_extensions.egg-info/top_level.txt +0 -0
  21. {labscript_c_extensions-1.2.1 → labscript_c_extensions-1.4.0}/setup.cfg +0 -0
@@ -10,7 +10,7 @@ on:
10
10
 
11
11
  env:
12
12
  OS_LIST_UBUNTU: '["ubuntu-latest"]'
13
- OS_LIST_ALL: '["ubuntu-latest", "windows-latest", "macos-latest", "macos-13"]'
13
+ OS_LIST_ALL: '["ubuntu-latest", "windows-2022", "macos-latest", "macos-15-intel"]'
14
14
 
15
15
 
16
16
  jobs:
@@ -34,23 +34,26 @@ jobs:
34
34
 
35
35
  steps:
36
36
  - name: Checkout
37
- uses: actions/checkout@v4
37
+ uses: actions/checkout@v6
38
38
  with:
39
39
  fetch-depth: 0
40
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)
41
+ - name: Ignore tags other than the pushed tag
42
+ # The version comes from the tags at HEAD, so a commit that carries both an rc
43
+ # tag and a final tag builds the version of the tag that was pushed, and a branch
44
+ # push of a tagged commit builds a development version.
45
+ shell: bash
46
+ run: git tag -d $(git tag --points-at HEAD | grep -vx "${GITHUB_REF_NAME}" || true)
44
47
 
45
48
  - name: Install Python
46
- uses: actions/setup-python@v5
49
+ uses: actions/setup-python@v6
47
50
  with:
48
51
  python-version: '3.x'
49
52
 
50
53
  - name: Configure workflow
51
54
  id: config
52
55
  run: |
53
- pip install ci-helper cython
56
+ pip install ci-helper
54
57
 
55
58
  # Load repo-specific variables and overrides:
56
59
  VARS_FILE=".github/workflows/release-vars.sh"
@@ -222,16 +225,19 @@ jobs:
222
225
 
223
226
  steps:
224
227
  - name: Checkout
225
- uses: actions/checkout@v4
228
+ uses: actions/checkout@v6
226
229
  with:
227
230
  fetch-depth: 0
228
231
 
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
+ - name: Ignore tags other than the pushed tag
233
+ # The version comes from the tags at HEAD, so a commit that carries both an rc
234
+ # tag and a final tag builds the version of the tag that was pushed, and a branch
235
+ # push of a tagged commit builds a development version.
236
+ shell: bash
237
+ run: git tag -d $(git tag --points-at HEAD | grep -vx "${GITHUB_REF_NAME}" || true)
232
238
 
233
239
  - name: Install Python
234
- uses: actions/setup-python@v5
240
+ uses: actions/setup-python@v6
235
241
  with:
236
242
  python-version: ${{ env.DEFAULT_PYTHON }}
237
243
 
@@ -252,19 +258,19 @@ jobs:
252
258
 
253
259
  - name: Upload artifact
254
260
  if: env.PURE == 'false' || strategy.job-index == 0
255
- uses: actions/upload-artifact@v4
261
+ uses: actions/upload-artifact@v6
256
262
  with:
257
263
  name: dist-${{ matrix.os }}
258
264
  path: ./dist
259
265
  if-no-files-found: error
260
266
 
261
267
  - name: Install Miniforge
262
- uses: conda-incubator/setup-miniconda@v3
268
+ uses: conda-incubator/setup-miniconda@v4
263
269
  with:
264
270
  miniforge-version: "latest"
265
271
  auto-update-conda: true
266
272
  conda-remove-defaults: true
267
- auto-activate-base: true
273
+ auto-activate: true
268
274
  activate-environment: ""
269
275
 
270
276
  - name: Conda package
@@ -274,11 +280,11 @@ jobs:
274
280
  # Short path to minimise odds of hitting Windows max path length
275
281
  CONDA_BUILD_ARGS+=" --croot ${{ runner.temp }}\cb"
276
282
  fi
277
- conda install -c labscript-suite setuptools-conda "conda-build<25"
283
+ conda install -c labscript-suite setuptools-conda
278
284
  setuptools-conda build $CONDA_BUILD_ARGS .
279
285
 
280
286
  - name: Upload artifact
281
- uses: actions/upload-artifact@v4
287
+ uses: actions/upload-artifact@v6
282
288
  with:
283
289
  name: conda_packages-${{ matrix.os }}
284
290
  path: ./conda_packages
@@ -298,14 +304,14 @@ jobs:
298
304
 
299
305
  steps:
300
306
  - name: Download Artifact
301
- uses: actions/download-artifact@v4
307
+ uses: actions/download-artifact@v8
302
308
  with:
303
309
  pattern: dist*
304
310
  path: ./dist
305
311
  merge-multiple: true
306
312
 
307
313
  - name: Create GitHub release and upload release asset
308
- uses: softprops/action-gh-release@v2
314
+ uses: softprops/action-gh-release@v3
309
315
  env:
310
316
  GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
311
317
  with:
@@ -332,7 +338,7 @@ jobs:
332
338
 
333
339
  steps:
334
340
  - name: Download Artifact
335
- uses: actions/download-artifact@v4
341
+ uses: actions/download-artifact@v8
336
342
  with:
337
343
  pattern: dist*
338
344
  path: ./dist
@@ -342,6 +348,8 @@ jobs:
342
348
  uses: pypa/gh-action-pypi-publish@release/v1
343
349
  with:
344
350
  repository-url: https://test.pypi.org/legacy/
351
+ verbose: true
352
+ skip-existing: true
345
353
 
346
354
 
347
355
  pypi-upload:
@@ -360,7 +368,7 @@ jobs:
360
368
 
361
369
  steps:
362
370
  - name: Download Artifact
363
- uses: actions/download-artifact@v4
371
+ uses: actions/download-artifact@v8
364
372
  with:
365
373
  pattern: dist*
366
374
  path: ./dist
@@ -368,6 +376,9 @@ jobs:
368
376
 
369
377
  - name: Publish on PyPI
370
378
  uses: pypa/gh-action-pypi-publish@release/v1
379
+ with:
380
+ verbose: true
381
+ skip-existing: true
371
382
 
372
383
 
373
384
  test-anaconda-upload:
@@ -378,19 +389,19 @@ jobs:
378
389
 
379
390
  steps:
380
391
  - name: Download Artifact
381
- uses: actions/download-artifact@v4
392
+ uses: actions/download-artifact@v8
382
393
  with:
383
394
  pattern: conda_packages-*
384
395
  path: ./conda_packages
385
396
  merge-multiple: true
386
397
 
387
398
  - name: Install Miniforge
388
- uses: conda-incubator/setup-miniconda@v3
399
+ uses: conda-incubator/setup-miniconda@v4
389
400
  with:
390
401
  miniforge-version: "latest"
391
402
  auto-update-conda: true
392
403
  conda-remove-defaults: true
393
- auto-activate-base: true
404
+ auto-activate: true
394
405
  activate-environment: ""
395
406
 
396
407
  - name: Install Anaconda cloud client
@@ -417,19 +428,19 @@ jobs:
417
428
 
418
429
  steps:
419
430
  - name: Download Artifact
420
- uses: actions/download-artifact@v4
431
+ uses: actions/download-artifact@v8
421
432
  with:
422
433
  pattern: conda_packages-*
423
434
  path: ./conda_packages
424
435
  merge-multiple: true
425
436
 
426
437
  - name: Install Miniforge
427
- uses: conda-incubator/setup-miniconda@v3
438
+ uses: conda-incubator/setup-miniconda@v4
428
439
  with:
429
440
  miniforge-version: "latest"
430
441
  auto-update-conda: true
431
442
  conda-remove-defaults: true
432
- auto-activate-base: true
443
+ auto-activate: true
433
444
  activate-environment: ""
434
445
 
435
446
  - name: Install Anaconda cloud client
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: labscript-c-extensions
3
- Version: 1.2.1
3
+ Version: 1.4.0
4
4
  Summary: A module containing C-extensions for the labscript suite
5
5
  Author-email: The labscript suite community <labscriptsuite@googlegroups.com>
6
6
  License: BSD 2-Clause License
@@ -37,7 +37,12 @@ Project-URL: Tracker, https://github.com/labscript-suite/labscript-c-extension/i
37
37
  Keywords: experiment control,automation,visualization
38
38
  Classifier: License :: OSI Approved :: BSD License
39
39
  Classifier: Programming Language :: Python :: 3 :: Only
40
- Requires-Python: >=3.8
40
+ Classifier: Programming Language :: Python :: 3.11
41
+ Classifier: Programming Language :: Python :: 3.12
42
+ Classifier: Programming Language :: Python :: 3.13
43
+ Classifier: Programming Language :: Python :: 3.14
44
+ Classifier: Programming Language :: Python :: 3.15
45
+ Requires-Python: >=3.11
41
46
  Description-Content-Type: text/markdown
42
47
  License-File: LICENSE.txt
43
48
  Requires-Dist: numpy>=1.17.3
@@ -11,10 +11,7 @@
11
11
  # #
12
12
  #####################################################################
13
13
  from pathlib import Path
14
- try:
15
- import importlib.metadata as importlib_metadata
16
- except ImportError:
17
- import importlib_metadata
14
+ import importlib.metadata
18
15
 
19
16
  root = Path(__file__).parent.parent
20
17
  if (root / '.git').is_dir():
@@ -34,6 +31,6 @@ if scm_version is not None:
34
31
  __version__ = scm_version
35
32
  else:
36
33
  try:
37
- __version__ = importlib_metadata.version(__package__)
38
- except importlib_metadata.PackageNotFoundError:
34
+ __version__ = importlib.metadata.version(__package__)
35
+ except importlib.metadata.PackageNotFoundError:
39
36
  __version__ = None
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: labscript-c-extensions
3
- Version: 1.2.1
3
+ Version: 1.4.0
4
4
  Summary: A module containing C-extensions for the labscript suite
5
5
  Author-email: The labscript suite community <labscriptsuite@googlegroups.com>
6
6
  License: BSD 2-Clause License
@@ -37,7 +37,12 @@ Project-URL: Tracker, https://github.com/labscript-suite/labscript-c-extension/i
37
37
  Keywords: experiment control,automation,visualization
38
38
  Classifier: License :: OSI Approved :: BSD License
39
39
  Classifier: Programming Language :: Python :: 3 :: Only
40
- Requires-Python: >=3.8
40
+ Classifier: Programming Language :: Python :: 3.11
41
+ Classifier: Programming Language :: Python :: 3.12
42
+ Classifier: Programming Language :: Python :: 3.13
43
+ Classifier: Programming Language :: Python :: 3.14
44
+ Classifier: Programming Language :: Python :: 3.15
45
+ Requires-Python: >=3.11
41
46
  Description-Content-Type: text/markdown
42
47
  License-File: LICENSE.txt
43
48
  Requires-Dist: numpy>=1.17.3
@@ -2,7 +2,6 @@
2
2
  LICENSE.txt
3
3
  README.md
4
4
  pyproject.toml
5
- setup.py
6
5
  .github/workflows/release-vars.sh
7
6
  .github/workflows/release.yml
8
7
  labscript_c_extensions/__init__.py
@@ -12,6 +11,8 @@ labscript_c_extensions.egg-info/SOURCES.txt
12
11
  labscript_c_extensions.egg-info/dependency_links.txt
13
12
  labscript_c_extensions.egg-info/not-zip-safe
14
13
  labscript_c_extensions.egg-info/requires.txt
14
+ labscript_c_extensions.egg-info/scm_file_list.json
15
+ labscript_c_extensions.egg-info/scm_version.json
15
16
  labscript_c_extensions.egg-info/top_level.txt
16
17
  labscript_c_extensions/runviewer/__init__.py
17
18
  src/runviewer/resample.pyx
@@ -0,0 +1,14 @@
1
+ {
2
+ "files": [
3
+ ".github/workflows/release-vars.sh",
4
+ ".github/workflows/release.yml",
5
+ ".gitignore",
6
+ "LICENSE.txt",
7
+ "README.md",
8
+ "labscript_c_extensions/__init__.py",
9
+ "labscript_c_extensions/__version__.py",
10
+ "labscript_c_extensions/runviewer/__init__.py",
11
+ "pyproject.toml",
12
+ "src/runviewer/resample.pyx"
13
+ ]
14
+ }
@@ -0,0 +1,8 @@
1
+ {
2
+ "tag": "1.4.0",
3
+ "distance": 0,
4
+ "node": "g87218918bb5049c18986df6d03df20b863a80f44",
5
+ "dirty": false,
6
+ "branch": "HEAD",
7
+ "node_date": "2026-10-27"
8
+ }
@@ -1,5 +1,5 @@
1
1
  [build-system]
2
- requires = ["setuptools>=64", "setuptools_scm>=8", "cython",
2
+ requires = ["setuptools>=74.1.0", "setuptools_scm>=8", "cython",
3
3
  "numpy>=2.0,<3; python_version>'3.8'"]
4
4
  build-backend = "setuptools.build_meta"
5
5
 
@@ -10,6 +10,9 @@ local_scheme = "no-local-version"
10
10
  [tool.setuptools]
11
11
  zip-safe = false
12
12
  include-package-data = true
13
+ ext-modules = [
14
+ {name = "labscript_c_extensions.runviewer.resample", sources = ["src/runviewer/resample.pyx"]}
15
+ ]
13
16
 
14
17
  [tool.setuptools.packages]
15
18
  find = {namespaces = false}
@@ -26,8 +29,13 @@ license = {file = 'LICENSE.txt'}
26
29
  classifiers = [
27
30
  "License :: OSI Approved :: BSD License",
28
31
  "Programming Language :: Python :: 3 :: Only",
32
+ "Programming Language :: Python :: 3.11",
33
+ "Programming Language :: Python :: 3.12",
34
+ "Programming Language :: Python :: 3.13",
35
+ "Programming Language :: Python :: 3.14",
36
+ "Programming Language :: Python :: 3.15",
29
37
  ]
30
- requires-python = ">=3.8"
38
+ requires-python = ">=3.11"
31
39
  dependencies = [
32
40
  "numpy>=1.17.3",
33
41
  ]
@@ -56,21 +56,23 @@ def resample(double [:] x_in, double [:] y_in,
56
56
  else:
57
57
  i = 0
58
58
  j = 1
59
- # Until we get to the data, fill the output array with NaNs (which get
60
- # ignored when plotted)
61
- while x_out[i] < x_in[0]:
59
+ # Fill the output array with NaNs (which get ignored when plotted) up to
60
+ # the group of three output points that contains the first data point, so
61
+ # that the loop below sees every data point in that group:
62
+ while i + 3 < N_out and x_out[i + 3] <= x_in[0]:
62
63
  y_out[i:i+3] = NAN
63
64
  i += 3
64
65
  # If we're some way into the data, we need to skip ahead to where we
65
66
  # want to get the first datapoint from:
66
- while x_in[j] < x_out[i]:
67
+ while j < N_in and x_in[j] < x_out[i]:
67
68
  j += 1
68
69
 
69
70
  # Get values until we get to the end of the data:
70
71
 
71
- # Leave one spare for the final data point and one because
72
- # stepMode=True requires len(y)=len(x)-1
73
- while j < N_in and i < N_out - 2:
72
+ # Each pass writes y_out[i], y_out[i + 1] and y_out[i + 2]. One point
73
+ # must remain for the final data point, and y_out has N_out - 1
74
+ # elements because stepMode=True requires len(y)=len(x)-1.
75
+ while j < N_in and i < N_out - 4:
74
76
  # This is 'nearest neighbour on the left' interpolation. It's
75
77
  # what we want if none of the source values checked in the
76
78
  # upcoming loop are used:
@@ -106,7 +108,7 @@ def resample(double [:] x_in, double [:] y_in,
106
108
  i += 1
107
109
 
108
110
  # Get the last datapoint:
109
- if j < N_in:
111
+ if j < N_in and i < N_out - 1:
110
112
  # If the sample rate of the raw data is low, then the current j
111
113
  # point could be outside the current plot view range If so,
112
114
  # decrease j so that we take a value that is within the plot view
@@ -1,19 +0,0 @@
1
- import os
2
- from setuptools import setup
3
- from setuptools.extension import Extension
4
- from Cython.Distutils import build_ext
5
-
6
-
7
- CMDCLASS = {"build_ext": build_ext}
8
-
9
- EXT_MODULES = [
10
- Extension(
11
- "labscript_c_extensions.runviewer.resample",
12
- sources=[os.path.join("src", "runviewer", "resample.pyx")],
13
- )
14
- ]
15
-
16
- setup(
17
- cmdclass=CMDCLASS,
18
- ext_modules=EXT_MODULES,
19
- )