Merge branch 'release-0.2.7'

This commit is contained in:
jevans 2013-07-25 19:19:16 -04:00
commit 30428f898d
12 changed files with 34 additions and 17 deletions

View file

@ -1,3 +1,6 @@
Jul 25, 2013 - v0.2.7 Warns but no longer errors out when neither library is
found (issue89).
Jul 24, 2013 - v0.2.6 No longer warning when configuration file not found.
Added read support for jpch, jplh boxes. Added testing of files in
format-corpus repository.

View file

@ -78,7 +78,7 @@ copyright = u'2013, John Evans'
# The short X.Y version.
version = '0.2'
# The full version, including alpha/beta/rc tags.
release = '0.2.6'
release = '0.2.7'
# The language for content autogenerated by Sphinx. Refer to documentation
# for a list of supported languages.

View file

@ -140,7 +140,6 @@ class Codestream(object):
fptr.seek(self._tile_offset[-1] + self._tile_length[-1])
def _process_marker_segment(self, fptr, marker_id):
"""Process and return a segment from the codestream.
"""
@ -207,7 +206,8 @@ class Codestream(object):
segment = _parse_sot_segment(fptr)
self._tile_offset.append(segment.offset)
if segment.psot == 0:
tile_part_length = self.offset + self.length - segment.offset - 2
tile_part_length = (self.offset + self.length -
segment.offset - 2)
else:
tile_part_length = segment.psot
self._tile_length.append(tile_part_length)

View file

@ -571,7 +571,7 @@ class CodestreamHeaderBox(Jp2kBox):
"""
box = CodestreamHeaderBox(length=length, offset=offset)
# The codestream header box is a superbox, so go ahead and parse its
# The codestream header box is a superbox, so go ahead and parse its
# child boxes.
box.box = box.parse_superbox(fptr)

View file

@ -170,7 +170,7 @@ class Jp2k(Jp2kBox):
if ftyp.brand == 'jp2 ':
jp2h = [box for box in self.box if box.box_id == 'jp2h'][0]
colrs = [box for box in jp2h.box if box.box_id == 'colr']
for colr in colrs:
for colr in colrs:
if colr.method not in (ENUMERATED_COLORSPACE,
RESTRICTED_ICC_PROFILE):
msg = "Color Specification box method must specify either "
@ -178,7 +178,6 @@ class Jp2k(Jp2kBox):
msg += "profile if the file type box brand is 'jp2 '."
warnings.warn(msg)
# pylint: disable-msg=W0221
def write(self, img_array, cratios=None, eph=False, psnr=None, numres=None,
cbsize=None, psizes=None, grid_offset=None, sop=False,

View file

@ -1,4 +1,3 @@
"""This package organizes individual libraries employed by glymur."""
from . import openjp2 as _openjp2
from . import openjpeg as _openjpeg
#from . import test

View file

@ -58,6 +58,9 @@ def load_openjpeg(libopenjpeg_path):
'bin', 'openjpeg.dll')
if os.path.exists(path):
libopenjpeg_path = path
else:
# No sense trying further on Linux
return None
try:
if os.name == "nt":
@ -124,6 +127,10 @@ def glymur_config():
libs = read_config_file()
libopenjp2_handle = load_openjp2(libs['openjp2'])
libopenjpeg_handle = load_openjpeg(libs['openjpeg'])
if libopenjp2_handle is None and libopenjpeg_handle is None:
msg = "Neither the openjp2 nor the openjpeg library could be loaded. "
msg += "Operating in severely degraded mode."
warnings.warn(msg, UserWarning)
return libopenjp2_handle, libopenjpeg_handle

View file

@ -22,8 +22,15 @@ def version():
return library_version
# Need to get the minor version, make sure we are at least at 1.4.x
#import pdb; pdb.set_trace()
_MINOR = version().split('.')[1]
if OPENJPEG is not None:
_MINOR = version().split('.')[1]
else:
# Does not really matter. But version should not be called if there is no
# OpenJPEG library found.
_MINOR = 0
# Redefine version so that we can use it.
def version():
return '0.0.0'
class EventMgrType(ctypes.Structure):

View file

@ -46,7 +46,7 @@ class TestSuiteFormatCorpus(unittest.TestCase):
j2k = Jp2k(jfile)
with self.assertWarns(UserWarning):
c = j2k.get_codestream(header_only=False)
# The last segment is truncated, so there should not be an EOC marker.
self.assertNotEqual(c.segment[-1].marker_id, 'EOC')
@ -61,7 +61,7 @@ class TestSuiteFormatCorpus(unittest.TestCase):
j2k = Jp2k(jfile)
with self.assertWarns(UserWarning):
c = j2k.get_codestream(header_only=False)
# The last segment is truncated, so there should not be an EOC marker.
self.assertNotEqual(c.segment[-1].marker_id, 'EOC')
@ -76,7 +76,7 @@ class TestSuiteFormatCorpus(unittest.TestCase):
j2k = Jp2k(jfile)
with self.assertWarns(UserWarning):
c = j2k.get_codestream(header_only=False)
# The last segment is truncated, so there should not be an EOC marker.
self.assertNotEqual(c.segment[-1].marker_id, 'EOC')
@ -91,7 +91,7 @@ class TestSuiteFormatCorpus(unittest.TestCase):
'balloon_eciRGBv2_ps_adobeplugin.jpf')
with self.assertWarns(UserWarning):
j2k = Jp2k(jfile)
def test_jp2_brand_vs_any_icc_profile_multiple_colr(self):
# Has colr box, one that conforms, one that does not.
@ -104,7 +104,7 @@ class TestSuiteFormatCorpus(unittest.TestCase):
jfile = os.path.join(*lst)
with self.assertWarns(UserWarning):
j2k = Jp2k(jfile)
@unittest.skipIf(opj_data_root is None,
"OPJ_DATA_ROOT environment variable not set")
@ -124,6 +124,6 @@ class TestSuiteOpj(unittest.TestCase):
'input/nonregression/text_GBR.jp2')
with self.assertWarns(UserWarning):
j2k = Jp2k(filename)
if __name__ == "__main__":
unittest.main()

View file

@ -47,6 +47,9 @@ def load_tests(loader, tests, ignore):
return tests
@unittest.skipIf(glymur.lib.openjp2.OPENJP2 is None and
glymur.lib.openjpeg.OPENJPEG is None,
"Missing openjp2 library.")
class TestConfig(unittest.TestCase):
def setUp(self):

View file

@ -832,7 +832,6 @@ class TestSuite(unittest.TestCase):
data = Jp2k(jfile).read()
self.assertTrue(True)
@unittest.skipIf(sys.hexversion < 0x03020000,
"Uses features introduced in 3.2.")
def test_NR_DEC_broken3_jp2_6_decode(self):

View file

@ -2,7 +2,7 @@ from setuptools import setup, find_packages
import sys
kwargs = {'name': 'Glymur',
'version': '0.2.6',
'version': '0.2.7',
'description': 'Tools for accessing JPEG2000 files',
'long_description': open('README.md').read(),
'author': 'John Evans',