Consider your software broken if:
- You're the only one to understand how it works
- You can't remember what a function does just by reading its name
- You're not using a version control system
- You're not using continuous integration
- You're not continuously monitoring the quality of your code
- You have little or no unit tests
- You have little or no integration tests
- You don't use an issue tracker
-
Corruption: not sure why, sometimes files get corrupted during a session and users lose all their work, either automatic or manual, which may correspond to days of computer time or, worse, human time. Corruption is more likely to happen because libhdf5 is a very complex piece of software, and a crash or sudden kill is likely to corrupt the file completely. This would be much rarer with flat binary or text files, at least you'd be able to recover part of the data.
-
Not possible to delete arrays, but that might be fixed in the future (not today though...).
-
Various bugs with strings on Windows and h5py: users may need to downgrade h5py in order to use their files, otherwise a nasty segfault occurs. Not a good sign...
-
There is a single implementation of HDF5 in the world, so we depend critically on it. It is almost impossible to contribute on such a complex piece of code since it is really low-level (in C). There are bugs and performance issues with it and there is nothing we can
import os | |
from pytest import yield_fixture | |
@yield_fixture(scope='module') | |
def ipy_client(): | |
def iptest_stdstreams_fileno(): | |
return os.open(os.devnull, os.O_WRONLY) |
. |
from __future__ import print_function | |
import os | |
import os.path as op | |
import shutil | |
from pprint import pprint | |
from timeit import default_timer | |
import h5py |
import sys | |
import numpy as np | |
from vispy import app, scene | |
canvas = scene.SceneCanvas(keys='interactive') | |
view = canvas.central_widget.add_view() | |
view.set_camera('turntable', mode='perspective', up='z', distance=2, | |
azimuth=30., elevation=30.) | |
pos = .25 * np.random.randn(1000, 3) |