housecleaning for 0.7.0 release

Add testing mention of CentOS, windows.
Skipping some tests on versions 1.3 and 1.4
Minor doc mods.
For whatever stupid reason, np.log2(x) cannot be relied upon to be an
integer when x is a power of 2 ON WIN32!!!  All hail win32!
Better error message if array-style slice other than [:]
This commit is contained in:
John Evans 2014-09-25 09:12:46 -04:00 • committed by jevans
commit 0e2aa4492c
15 changed files with 92 additions and 35 deletions

View file

@ -772,7 +772,7 @@ class Jp2k(Jp2kBox):
# Should have a slice object where start = stop = step = None
self.write(data)
else:
msg = "Images currently must be written entirely at once."
msg = "Partial write operations are currently not allowed."
raise TypeError(msg)
def __getitem__(self, pargs):
@ -832,9 +832,11 @@ class Jp2k(Jp2kBox):
# one of them.
step = rows_step
if np.log2(step) != np.floor(np.log2(step)):
# Check if the step size is a power of 2.
if np.abs(np.log2(step) - np.round(np.log2(step))) > 1e-6:
msg = "Row and column strides must be powers of 2."
raise IndexError(msg)
rlevel = np.int(np.round(np.log2(step)))
if rows.start is None:
rows_start = 0
@ -857,7 +859,7 @@ class Jp2k(Jp2kBox):
cols_stop = cols.stop
area = (rows_start, cols_start, rows_stop, cols_stop)
data = self.read(area=area, rlevel=np.int(np.log2(step)))
data = self.read(area=area, rlevel=rlevel)
if len(pargs) == 2:
return data
@ -873,7 +875,7 @@ class Jp2k(Jp2kBox):
rlevel : int, optional
Factor by which to rlevel output resolution. Use -1 to get the
lowest resolution thumbnail. This is the only keyword option
available to use when only the OpenJPEG version 1.5.1 is present.
available to use when the OpenJPEG version is 1.5 or earlier.
layer : int, optional
Number of quality layer to decode.
area : tuple, optional

View file

@ -23,7 +23,8 @@ if sys.hexversion < 0x03000000:
WARNING_INFRASTRUCTURE_MSG = "3.x warning infrastructure only"
elif re.match('1.[0-6]', six.__version__) is not None:
WARNING_INFRASTRUCTURE_ISSUE = True
WARNING_INFRASTRUCTURE_MSG = "Cannot use with this version of six"
msg = "Cannot run test with version {0} of python-six"
WARNING_INFRASTRUCTURE_MSG = msg.format(six.__version__)
class MetadataBase(unittest.TestCase):
"""

View file

@ -71,6 +71,7 @@ class TestSuite(unittest.TestCase):
Jp2k(self.jp2file)
@unittest.skipIf(WARNING_INFRASTRUCTURE_ISSUE, WARNING_INFRASTRUCTURE_MSG)
@unittest.skipIf(os.name == "nt", 'named temporary file issue on windows')
def test_xdg_env_config_file_is_bad(self):
"""A non-existant library location should be rejected."""
with tempfile.TemporaryDirectory() as tdir:

View file

@ -27,6 +27,7 @@ import pkg_resources
import glymur
from glymur import Jp2k
from glymur.version import openjpeg_version
from .fixtures import HAS_PYTHON_XMP_TOOLKIT
from .fixtures import WARNING_INFRASTRUCTURE_ISSUE, WARNING_INFRASTRUCTURE_MSG
@ -441,8 +442,9 @@ class TestJp2k(unittest.TestCase):
actdata = j2.read()
self.assertTrue(fixtures.mse(actdata[0], expdata[0]) < 0.38)
@unittest.skipIf(re.match('1.5.(1|2)',
glymur.version.openjpeg_version) is not None,
@unittest.skipIf(re.match('1.[0-4]', openjpeg_version) is not None,
"Not supported with OpenJPEG {0}".format(openjpeg_version))
@unittest.skipIf(re.match('1.5.(1|2)', openjpeg_version) is not None,
"Mysteriously fails in 1.5.1 and 1.5.2")
def test_no_cxform_pclr_jpx(self):
"""Indices for pclr jpxfile if no color transform"""
@ -772,6 +774,8 @@ class TestJp2k(unittest.TestCase):
self.assertEqual(data.shape, (1024, 1024, 3))
@unittest.skipIf(re.match('1.[0-4]', openjpeg_version) is not None,
"Not supported with OpenJPEG {0}".format(openjpeg_version))
@unittest.skipIf(os.name == "nt", "NamedTemporaryFile issue on windows")
class TestJp2k_write(unittest.TestCase):
"""Write tests, can be run by versions 1.5+"""

View file

@ -27,6 +27,7 @@ from . import fixtures
import glymur
from glymur import Jp2k
from glymur.codestream import SIZsegment
from glymur.version import openjpeg_version
class CinemaBase(fixtures.MetadataBase):
@ -218,6 +219,8 @@ class TestSuiteNegative2pointzero(unittest.TestCase):
j.write(data, cinema2k=48)
@unittest.skipIf(re.match(r'''1.[0-4]''', openjpeg_version) is not None,
"Writing not supported until OpenJPEG 1.5")
@unittest.skipIf(os.name == "nt", "no write support on windows, period")
@unittest.skipIf(NO_READ_BACKEND, NO_READ_BACKEND_MSG)
@unittest.skipIf(OPJ_DATA_ROOT is None,

View file

@ -19,7 +19,7 @@ from .lib import openjp2 as opj2
# Do not change the format of this next line! Doing so risks breaking
# setup.py
version = "0.6.0"
version = "0.7.0rc1"
_sv = LooseVersion(version)
version_tuple = _sv.version