Releases: equinor/segyio
Releases · equinor/segyio
Version 1.7.0
1.7.0
- segyio has learned to open non-ascii file paths on Windows
- Fixed an issue where segyio-catr would sometimes print the same trace twice
- segyio no longer incorrectly considers files where the
inline/crossline/offset triple doesn't change sorted - The test suite has seen some overhaul, making test cases more focused on the
actual thing to test - Checking sorting won't silently fail when the offset-word is broken
f.text
is now a Sequence, meaning it has slicing and other common array
operations- The makefiles no longer build both static and shared libraries, but rather
respect the BUILD_SHARED_LIBS variable - Python 3.7 support
- Various refactoring and internal improvements
Version 1.6.0
1.6.0
- segyio has learned to handle int16 and int32 sample formats
- segyio has learned to write any array_likes with any float-convertible
contents.f.trace = np.linspace(0, 1, 0.01)
works as expected. - segyio types have been extended to be more container-like, and conform to
more protocols. Notably, headers and lines are properly dict_like, and traces
are properly array_like trace.ref
added, a write-back mode where changes to yielded trace data are
written back to disktrace.raw
has been improved, is faster and supports setitem and the
container protocol- Headers have learned to accept (seismic unix) keywords in
update
, so
header.update(cdpx=10)
works as expected f.dtype
added, this is the dtype used in all segyio-provided numpy arrays,
and reflects the underlying data formatf.readonly
added, to query if file handles are writable- segyio gracefully handle non-contiguous and more array_likes in setitem
- The type requirements of
f.samples
has been relaxed, and it now is whatever
numpy uses as default - segyio now assumes IBM float if the format identifier is meaningless
- Some exception types are cleaned up, notably header key misses raise
KeyError, not IndexError - General speed and clarity improvements, some more exception guarantees
- segyio has learned to raise an error when provided with too short data traces
- segyio has started raising deprecation warnings when using to-be-removed
features - The python library has overall been simplified
- Lots of new documentation has been written, the sphinx docs structure has
been overhauled
Version 1.5.3
1.5.3
- segyio-catr has learned to handle no arguments, and as a results read the
first trace header as intended - segyio-catr has its help text and man page corrected
- segyio-crop has learned to say how many traces it copies
- segyio-crop has learned to warn when no traces are copied
- segyio-crop has learned not to overwrite its input file when source and dest
is the same - The makefiles understand the BUILD_DOC option, to build the python docs with
sphinx - Test suite has some speed and robustness improvements
Version 1.5.2
1.5.2
open
andcreate
handle anything string-convertible as filename argument- pytest replaces unittest, both as library and test driver
- segyio-crop now respects the byte-offset arguments, instead of just ignoring
them and using 189 & 193 from SEG-Y revision 1 - Some errors in readme and documentation is cleared up
- Fixed a bug in create that would trigger 16-bit integer overflow, effectively
breaking any file with more than 65k traces.
1.5.1
Deploy bugfix
Version 1.5.0
1.5.0
- A bug making an external text header disappear has been fixed
- The python extension has been changed to use C++ features, simplifying code
and dropping the use of capsules - segyio-cath sets non-zero status code on failures
- Application testing is moved from python to cmake, giving a large speedup
- The IndexError message when accessing headers out-of-range has been improved
- Some work has been moved from python into the extension
- Error messages in python have received an overhaul
- Errors produced when memory-mapping files are made consistent with fstream
sourced errors
Version 1.4.0
1.4.0
- segyio has learned how to resample a file (
segyio.tools.resample
). This
function does not actually touch the data traces, but rewrites the header
fields and attributes required to persistently change sample rate.
Interpolation of data traces must be done manually, but for a strict
reinterpretation this function is sufficient - segyio has learned to read enough structure from a file to create a new file
with the same dimensions and lines (segyio.tools.metadata
) - segyio has learned to create unstructured files (only traces, no inlines or
crosslines) f.text[0] =
requiresbytes
convertability. This catches some errors that
were previously fatal or silentf.text
broken internal buffer allocations fixedf.text[n] =
supports strings longer or shorter than 3200 bytes by
truncating or padding, respectively- Fixed a bug where a particular length of mode strings caused errors
segyio.open('w')
raises an exception, instead of silently truncating the
file and failing later when the file size does not match the expected.segy_traces
now fails iftrace0
is outside domain, instead of silently
returning garbage- Return correct size for dirty, newly-created files. This means carefully
created new files can bemmap
d earlier - Methods on closed files always raise exceptions
mmap
support improved - all C functions aremmap
aware.- The file is now closed after a successful
mmap
call str.format
used for string interpolation over the%
operator- Several potential issues found by static analysis, such as non-initialised
temporaries, divide-by-zero code paths, and leak-errors (in process teardown)
addressed, to reduce noise and improve safety - Error message on failure in
segyio.tools.dt
improved - Error message on unparsable global binary header improved
changes for the next major release - Catch2 is introduced to test the core C library, replacing the old
test/segy.c
family of tests - Contract for
segy_traces
clarified in documentation - Docstrings improved for
depth_slice
andsegyio.create
- A new document,
breaking-changes.md
, lists planned deprecations and API - The readme has gotten a makeover, with better structure, an index, and more
examples setup.py
requires setuptools >= 28. A rather recent setuptools was always a
requirement, but not codified- scan-build (clang analysis) enabled on Travis
1.3.9
Bugfix release 1.3.9
Version 1.4-beta3
Help delocate find dylibs on OS X on travis delocate is used to build wheels on travis, and the logic that looks up run-time dependencies could not figure out where the correct .dylib was from @rpath/libsegyio.1.dylib. This is apparently expected behaviour. From delocate's readme: > where the first line is the install name id that the linker picked up > when linking myext.so to libme.dylib. You job is to fix the build > process so that libme.dylib has install name id /path/to/libme.dylib. > This is not a problem specific to delocate; you will need to do this > to make sure that myext.so can load libme.dylib without libme.dylib > being in the current working directory. For CMAKE builds you may want > to check out CMAKE_INSTALL_NAME_DIR. https://pypi.python.org/pypi/delocate By passing CMAKE_INSTALL_NAME_DIR to cmake (which does nothing on linux as far as I'm aware), multibuild is able to pick up the correct dylib and build it into the wheel.
Version 1.3.8
1.3.8
- Automate python ast analysis with bandit on travis
- The installed python extension is built without rpath
- The numpy minimum requirement is handled in setup.py
- The python installation layout can be configured via cmake
e.g.-DPYTHON_INSTALL_LAYOUT=deb