Merge branch 'issue232' into devel

This commit is contained in:
John Evans 2014-05-10 16:12:18 -04:00
commit de28b3b1a1
7 changed files with 16 additions and 98 deletions

View file

@ -2,14 +2,14 @@
ChangeLog
---------
0.6.0 (pending)
===============
0.6.0
=====
* Added support for OpenJPEG 2.1.0, dropped support for 1.3 and 1.4.
* Added Cinema2K, Cinema4K write support.
* Added lxml requirement.
* added set_printoptions, get_printoptions function
* dropped support for Python 2.6, added support for Python 3.4
* dropped support for OpenJPEG versions 1.3 and 1.4
* dropped windows support (it might work, it might not, I don't much care)
* added write support for JP2 UUID, dataEntryURL, palette, and component mapping boxes
* added read/write support for JPX free, number list, and data reference boxes

View file

@ -76,9 +76,9 @@ copyright = u'2013, John Evans'
# built documents.
#
# The short X.Y version.
version = '0.5'
version = '0.6'
# The full version, including alpha/beta/rc tags.
release = '0.5.10'
release = '0.6.0'
# The language for content autogenerated by Sphinx. Refer to documentation
# for a list of supported languages.

View file

@ -1,7 +1,6 @@
----------------------------------
Advanced Installation Instructions
----------------------------------
Most users won't need to read this! You've been warned...
''''''''''''''''''''''
Glymur Configuration
@ -9,11 +8,8 @@ Glymur Configuration
The default glymur installation process relies upon OpenJPEG
being properly installed on your system. If you have version 1.5 you can
both read and write JPEG 2000 files, but you may wish to install version 2.0
or the 2.0+ version from OpenJPEG's development trunk for better performance.
If you do that, you should compile it as a shared library (named *openjp2*
instead of *openjpeg*) from the developmental source that you can retrieve
via subversion. As of this time of writing, svn revision r2691 works.
both read and write JPEG 2000 files, but version 2.1 is recommended.
If you compile OpenJPEG yourself, please compile it as a shared library.
You should also download the test data for the purpose of configuring
and running OpenJPEG's test suite, check their instructions for all this.
You should set the **OPJ_DATA_ROOT** environment variable for the purpose
@ -51,60 +47,6 @@ installed in a non-standard place, i.e. ::
[library]
openjpeg: /not/the/usual/location/lib/libopenjpeg.so
''''''''''''''''''''''''''''''
Package Management Suggestions
''''''''''''''''''''''''''''''
You only need to read this section if you want detailed
platform-specific instructions on running as many tests as possible or wish to
use your system's package manager to install as many required
packages/RPMs/ports/whatever without going through pip.
Mac OS X
--------
All the necessary packages are available to use glymur with MacPorts.
For python 3.3, you should install the following set of ports:
* python33
* py33-numpy
* py33-lxml
* py33-distribute
* py33-Pillow (optional, for running certain tests)
MacPorts supplies both OpenJPEG 1.5.0 and OpenJPEG 2.0.0.
Linux
-----
For the most part, you only need python and numpy to run glymur, so on
just about all distributions you are already set to go (and you don't
need to mess around with a configuration file, as the openjpeg shared
libraries are found in the usual places thanks to your package manager).
In order to run as many tests as possible, however, the following Python
packages may also need to be installed. Consult your package manager
documentation or use pip.
* setuptools
* python-lxml
* matplotlib
* pillow
* contextlib2 (2.7 only)
* mock (2.7 only)
Glymur 0.6 been tested on the following linux platforms without any unexpected
difficulties:
* OpenSUSE 13.1
* Fedora 19
* Raspian
* Travis CI (currently Ubuntu 12.04?)
Windows
-------
The 0.6.x series of Glymur is untested on windows and I make no promises here.
I suggest that windows users check the 0.5.x series.
'''''''
Testing
'''''''
@ -128,11 +70,3 @@ or from the command line. ::
$ cd /to/where/you/unpacked/glymur
$ python -m unittest discover
Quite a few tests are currently skipped. These include tests whose
OpenJPEG counterparts are already failing, and others which do pass but
still produce heaps of output on stderr. Rather than let this swamp
the signal (that most of those tests are actually passing), they've been
filtered out for now. There are also more skipped tests on Python 2.7
than on Python3. The important part is whether or not any test
errors are reported at the end.

View file

@ -1241,8 +1241,10 @@ class FileTypeBox(Jp2kBox):
def _validate(self, writing=False):
"""Validate the box before writing to file."""
if self.brand not in ['jp2 ', 'jpx ']:
msg = "The file type brand must be either 'jp2 ' or 'jpx '."
self._dispatch_validation_error(msg, writing=writing)
msg = "The file type brand was '{0}'. "
msg += "It should be either 'jp2 ' or 'jpx '."
self._dispatch_validation_error(msg.format(self.brand),
writing=writing)
valid_cls = ['jp2 ', 'jpx ', 'jpxb']
for item in self.compatibility_list:
if item not in valid_cls:
@ -2740,12 +2742,7 @@ class XMLBox(Jp2kBox):
def write(self, fptr):
"""Write an XML box to file.
"""
try:
read_buffer = ET.tostring(self.xml, encoding='utf-8')
except (AttributeError, AssertionError):
# AssertionError on 2.6
read_buffer = ET.tostring(self.xml.getroot(), encoding='utf-8')
read_buffer = ET.tostring(self.xml, encoding='utf-8')
fptr.write(struct.pack('>I4s', len(read_buffer) + 8, b'xml '))
fptr.write(read_buffer)

View file

@ -814,9 +814,9 @@ class TestJp2kOpjDataRootWarnings(unittest.TestCase):
"""Should warn in case of bad ftyp brand."""
filename = opj_data_file('input/nonregression/edf_c2_1000290.jp2')
with warnings.catch_warnings(record=True) as w:
warnings.simplefilter('always')
jp2 = Jp2k(filename)
self.assertTrue(issubclass(w[0].category, UserWarning))
warnings.simplefilter('always')
jp2 = Jp2k(filename)
self.assertTrue(issubclass(w[0].category, UserWarning))
def test_invalid_approximation(self):
"""Should warn in case of invalid approximation."""

View file

@ -299,19 +299,6 @@ class TestSuite(unittest.TestCase):
jp2.read()
self.assertTrue(True)
@unittest.skip("fprintf stderr output in r2343.")
def test_NR_DEC_123_j2c_3_decode(self):
jfile = opj_data_file('input/nonregression/123.j2c')
jp2 = Jp2k(jfile)
jp2.read()
self.assertTrue(True)
@unittest.skip("fprintf stderr output in r2343.")
def test_NR_DEC_bug_j2c_8_decode(self):
jfile = opj_data_file('input/nonregression/bug.j2c')
Jp2k(jfile).read()
self.assertTrue(True)
def test_NR_DEC_buxI_j2k_9_decode(self):
jfile = opj_data_file('input/nonregression/buxI.j2k')
Jp2k(jfile).read()

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.5.10"
version = "0.6.0"
_sv = LooseVersion(version)
version_tuple = _sv.version