Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
61 commits
Select commit Hold shift + click to select a range
d683b9a
Fix matlab compilation
achaikou Feb 4, 2025
6854a64
Wrap matlab test scripts with print information
achaikou Feb 5, 2025
79f5786
Add matlab job
achaikou Feb 3, 2025
37a3e2e
Run c++ tests only as separate entity
achaikou Feb 5, 2025
ecddee3
Print tests results verbose in CI
achaikou Feb 5, 2025
69f0656
Remove unused test file
achaikou Feb 6, 2025
47b0302
Add test-data overview
achaikou Feb 6, 2025
15ef53e
Add information about segyio 2.0 development
achaikou Feb 25, 2025
8f6a2e0
Update SEG-Y revision links
achaikou Feb 25, 2025
0a780e9
Rename master -> main branch
achaikou Feb 25, 2025
7fa3a9f
Replace SegyFile with segyio.SegyFile
ar4 May 14, 2021
2ebb807
Fix declaration without a prototype warning
yngve793 Feb 25, 2025
b33022e
Upgrade linux runners
achaikou Feb 24, 2025
7cf234c
Fix compilation warning in custom deleter
achaikou Feb 24, 2025
07ec3a8
Add analyzer workflow
achaikou Feb 24, 2025
73162f1
Remove analyzers from build job
achaikou Feb 25, 2025
bdefa63
Tidy up macos build core jobs
achaikou Feb 26, 2025
a130dc7
Add more error-checking to build core flow
achaikou Feb 26, 2025
1bf96d4
Fix cppcheck warnings
achaikou Feb 25, 2025
7a3d17a
Fix windows warnings
achaikou Feb 26, 2025
7bf8213
Add benchmark tests
achaikou Feb 12, 2025
cfd1327
Add bigendian workflow job
achaikou Mar 6, 2025
ee9de4a
Make test type int24 endianness aware
achaikou Mar 11, 2025
19ea034
Correct multiformat int24 tests
achaikou Mar 11, 2025
f160811
Build wheel in benchmark CI
achaikou Mar 27, 2025
67882ca
Bump minimum CMake version to 3.11
ajaust Apr 2, 2025
d203b49
Add missing includes
Dec 8, 2023
7b51b98
Add tests including public headers
ajaust Apr 4, 2025
72a3476
Use numpy system package in bigendian workflow
achaikou Apr 14, 2025
8d895ec
Cache s390x environment
achaikou Apr 14, 2025
4fb5321
Fix end-of-file-fixer changes
yngve793 Mar 27, 2025
6a9b482
Fix trailing-whitespace changes
yngve793 Mar 27, 2025
2311c21
Test large file through python
achaikou Apr 9, 2025
ef7e121
Run test/large.py on CI
achaikou Apr 10, 2025
ff67e1d
Pin cbuildwheel version in benchmark tests
achaikou Apr 28, 2025
2d57602
Update benchmark test suite
achaikou May 23, 2025
6cd1dcb
Upgrade windows runners
achaikou Jun 4, 2025
92f8e60
Disable building wheels on python 3.14
achaikou Jul 25, 2025
d800079
Fix typo in readme
bug-sentinel Nov 13, 2024
ec8eff0
Fix typo in tools.collect example
gstvschlz Sep 17, 2025
d677f2e
Bump minimum CMake version to 3.18
ajaust Jul 9, 2025
d87206e
Remove REQUIRE_PYTHON build option
ajaust Jul 9, 2025
fb2f834
Align OSX deployment target
ajaust Jul 9, 2025
2bf91d2
Replace scikit-build by scikit-build-core
ajaust Jul 9, 2025
5f7b097
Remove workaround in large tests
ajaust Jul 9, 2025
91e60e1
Remove unused selectors in cibuildwheel config
ajaust Jul 9, 2025
743988f
Let cibuildwheel choose Linux base image
ajaust Jul 9, 2025
260e3ec
Spellcheck Readme
ajaust Oct 2, 2025
c32e7ea
Ignore some compiler warnings in Python bindings
ajaust Oct 10, 2025
ffe1a21
Add additional tests to CI that build Python bindings
ajaust Oct 15, 2025
a57ef95
Improve return value check
ajaust Oct 17, 2025
115e27f
Reduce permissions of GitHub tokens in Actions
ajaust Oct 17, 2025
a4eaf0f
Renovate badges
achaikou Oct 28, 2025
9fde455
Update Action for Trusted Publishing on PyPI
ajaust Oct 28, 2025
ad5425a
Update RefTrace's garbage collection
ajaust Nov 14, 2025
5c42877
Enable Python 3.14 build
ajaust Nov 17, 2025
8103c40
Drop support for python 3.9
achaikou Nov 22, 2025
66680c2
Update SEG-Y revision links
achaikou Nov 28, 2025
78c3b92
Fix compilation complaints
achaikou Oct 28, 2025
38abbb5
Migrate to newest macos intel
achaikou Nov 28, 2025
3a65a38
Adjust workflows for 1.x branch support
achaikou Oct 28, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
88 changes: 88 additions & 0 deletions .github/actions/benchmark/action.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,88 @@
name: Benchmark
description: benchmark execution

inputs:
ref:
description: ref to checkout
compare:
description: results comparison string
default: --benchmark-compare=0001 --benchmark-compare-fail=min:25% --benchmark-group-by=fullname --color=yes

runs:
using: "composite"
steps:
- name: Print available disk space
shell: bash
run: df -h

- name: Checkout commit which performance should be measured
shell: bash
run: |
git restore .
git fetch origin ${{ inputs.ref }} --depth 1
git checkout ${{ inputs.ref }}

- name: Build wheel
shell: bash
env:
CIBW_BUILD_VERBOSITY: 1
run: |
python -m cibuildwheel --only cp312-manylinux_x86_64 --output-dir ./wheelhouse python/

- name: Install local wheel
shell: bash
run: |
pip install ./wheelhouse/*.whl
rm -f ./wheelhouse/*.whl

- name: Checkout current commit which contains all tests to run
shell: bash
run: git checkout ${{ github.sha }}

# assure that local segyio doesn't take priority (one installed to pip is used)
- name: Remove local segyio
shell: bash
working-directory: python
run: |
python -c "import segyio; import inspect; print('before: segyio loaded from ' + inspect.getfile(segyio))"
rm -rf $(pwd)/segyio
python -c "import segyio; import inspect; print('after: segyio loaded from ' + inspect.getfile(segyio))"

- name: Make segy file
shell: bash
working-directory: python
run: |
if [ ! -f file.sgy ]; then
time python -m examples.make-file file.sgy 1600 1 1000 1 1200
else
echo "file.sgy already exists"
fi

- name: Make segy small file
shell: bash
working-directory: python
run: |
if [ ! -f file-small.sgy ]; then
time python -m examples.make-file file-small.sgy 500 1 350 1 350
else
echo "file-small.sgy already exists"
fi

- name: Print filesize
shell: bash
working-directory: python
run: |
ls -lh file.sgy
ls -lh file-small.sgy

- name: Run benchmark tests
shell: bash
working-directory: python
run: |
pytest test/benchmarks.py -rP --benchmark-sort=name --benchmark-autosave ${{ inputs.compare }}

- name: Remove build artifacts
shell: bash
run: |
git clean -df --exclude=.benchmarks
pip uninstall -y segyio
18 changes: 18 additions & 0 deletions .github/images/bigendian.Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
ARG S390X_BASE_IMAGE=s390x_base
FROM s390x/debian:stable-slim AS s390x_base
RUN apt-get update
RUN apt-get install -y git cmake g++ python3 python3-pip python3-venv python3-numpy

FROM $S390X_BASE_IMAGE AS tester
WORKDIR /
COPY . /segyio
WORKDIR /segyio

RUN python3 -m venv pyvenv --system-site-packages
RUN /segyio/pyvenv/bin/python -m pip install --upgrade pip
RUN /segyio/pyvenv/bin/python -m pip install -r python/requirements-dev.txt

WORKDIR /segyio/build
RUN cmake -DBUILD_SHARED_LIBS=ON -DCMAKE_BUILD_TYPE=Debug -DPython_ROOT_DIR="/segyio/pyvenv/" ..
RUN make -j4
RUN ctest --verbose
17 changes: 17 additions & 0 deletions .github/images/large32-bit.Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
FROM i386/python:3-slim
RUN apt-get update
RUN apt-get install -y git cmake g++ libopenblas-dev

WORKDIR /
COPY . /segyio
WORKDIR /segyio

RUN pip install --upgrade pip
RUN pip install -r python/requirements-dev.txt

WORKDIR /segyio/build
RUN cmake -DCMAKE_BUILD_TYPE=Release -DBUILD_BIN=OFF -DBUILD_TESTING=OFF -DBUILD_PYTHON=ON ..
RUN make -j4

WORKDIR /segyio/python
RUN pytest test/large.py -rPV
37 changes: 0 additions & 37 deletions .github/utils.py

This file was deleted.

99 changes: 99 additions & 0 deletions .github/workflows/analyzers.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,99 @@
name: Run analyzers
permissions: {}

on:
push:
branches: [segyio-1.x]
pull_request:
branches: [segyio-1.x]
workflow_dispatch:

jobs:
cppcheck:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4

- name: Install dependencies
run: |
sudo apt-get update
sudo DEBIAN_FRONTEND=noninteractive apt-get -y install cppcheck

- name: Configure
run: |
cmake -S . -B build \
-DCMAKE_EXPORT_COMPILE_COMMANDS=ON \
-DBUILD_PYTHON=OFF \
-DBUILD_TESTING=OFF

- name: Run cppcheck
run: |
cppcheck \
--enable=style,portability,performance,warning \
--library=posix \
--library=cppcheck/segyio.cfg \
--suppressions-list=cppcheck/suppressions.txt \
--inline-suppr \
--project=build/compile_commands.json \
--error-exitcode=1

scan_build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4

- name: Install dependencies
run: |
sudo apt-get update
sudo DEBIAN_FRONTEND=noninteractive apt-get -y install clang clang-tools libfindbin-libs-perl

- name: Configure segyio
run: |
scan-build --status-bugs \
cmake \
-S . \
-B build \
-DCMAKE_BUILD_TYPE=Debug \
-DBUILD_PYTHON=OFF \
-DBUILD_TESTING=OFF

- name: Run scan-build
run: |
scan-build --status-bugs \
cmake \
--build build

valgrind:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4

- name: Install dependencies
run: |
sudo apt-get update
sudo DEBIAN_FRONTEND=noninteractive apt-get -y install valgrind

- name: Build segyio
run: |
cmake -S . -B build \
-DCMAKE_BUILD_TYPE=Debug \
-DCMAKE_C_FLAGS_DEBUG="-O0" \
-DCMAKE_CXX_FLAGS_DEBUG="-O0" \
-DBUILD_SHARED_LIBS=ON \
-DBUILD_PYTHON=OFF
cmake --build build

- name: Run valgrind on C tests, file
working-directory: build/lib
run: |
valgrind --leak-check=full --show-leak-kinds=all --error-exitcode=1 ./c.segy "[c.segy]"

- name: Run valgrind on C tests, mmap
working-directory: build/lib
run: |
valgrind --leak-check=full --show-leak-kinds=all --error-exitcode=1 ./c.segy "[c.segy]" "--test-mmap"

- name: Run valgrind on C++ tests
working-directory: build/lib
run: |
valgrind --leak-check=full --show-leak-kinds=all --error-exitcode=1 ./c.segy "[c++]"
54 changes: 54 additions & 0 deletions .github/workflows/benchmarks.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
name: Benchmarks
permissions: {}

on:
push:
branches: [segyio-1.x]
pull_request:
branches: [segyio-1.x]
workflow_dispatch:
inputs:
commit_ref:
description: "optional: compare to specific ref"
required: false

jobs:
benchmarks:
name: Benchmark scripts
runs-on: ubuntu-latest

steps:
- uses: actions/checkout@v4

- name: Install cibuildwheel
# old ref is incompatible with cmake 4.0.0, which is used in cbuildwheel > 2.23.2
# once default ref is updated, restriction can be removed
run: python3 -m pip install cibuildwheel==2.23.2

- name: Install build/test dependencies
working-directory: python
run: |
python3 -m pip install -r requirements-dev.txt

- name: Set default benchmark reference
run: echo "BENCHMARK_REF=142e45a2b941a1b603723c38882b193db1c1d968" >> $GITHUB_ENV

- name: Set benchmark reference if defined by workflow_dispatch
if: github.event.inputs.commit_ref != ''
run: echo "BENCHMARK_REF=${{ github.event.inputs.commit_ref }}" >> $GITHUB_ENV

- name: Benchmark old commit
uses: "./.github/actions/benchmark"
with:
ref: ${{ env.BENCHMARK_REF }}
compare: ""

# Head of repository is incompatible with cibuildwheel < 3.0.0 due to
# using the "test-sources" feature in pyproject.toml
- name: Update cibuildwheel for new commit
run: python3 -m pip install --upgrade cibuildwheel

- name: Benchmark current commit and compare
uses: "./.github/actions/benchmark"
with:
ref: ${{ github.sha }}
Loading