Change history¶
PyEPR 1.0.0 (08/09/2019)¶
- Do not use deprecated numpy API (requires Cython >= 0.29)
- Minimal numpy version is now v1.7
- Set cython ‘language_level` explicitly to ‘3str’ if cython >= v0.29, to ‘2’ otherwise
- Python v2.6, v3.2, v3.3 and v3.4 are now deprecated. Support for the deprecated Python version will be removed in future releases of PyEPR
PyEPR 0.9.5 (23/08/2018)¶
- Fix compatibility with numpy >= 1.14:
np.fromstring()
is deprecated - Update the pypi sidebar in the documentation
- Use .rst extension for doc source files
- Fix setup script to not use system libs if epr-api sources are available
- Do not access fields of bands after that the product has been closed (fix a segmentation fault on windows)
- unittest2 is now required for Python < 3.4
PyEPR 0.9.4 (29/04/2018)¶
PyEPR 0.9.3 (02/05/2015)¶
- Fix PyEprExtension class in setup.py (closes gh-11)
- Updated internal EPR API version
PyEPR 0.9.2 (08/03/2015)¶
- Improved string representation of fields in case of
E_TID_STRING
data type. Now bytes are decoded and represented as Python strings. - New tutorial GDAL export example
- Improved “Installation” and “Testing” sections of the user manual
PyEPR 0.9.1 (27/02/2015)¶
- Fix source distribution (missing EPR API C sources)
PyEPR 0.9 (27/02/2015)¶
basic support for update mode: products can now be opened in update mode (‘rb+’) and it is possible to call
epr.Field.set_elem()
andepr.Field.set_elems()
methods to setepr.Field
elements changing the contents of theepr.Product
on disk. This feature is not available in the EPR C API.new functions/methods and properties:
epr.Record.index
property: returns the index of theepr.Record
within theepr.Dataset
epr.Band.dataset
property: returns the sourceepr.Dataset
object containing the raw data used to create theepr.Band
’s pixel valuesepr.Band._field_index
andepr.Band._elem_index
properties: return theepr.Field
index (within theepr.Record
) and the element index (within theepr.Field
) containing the raw data used to create theepr.Band
’s pixel valuesepr.Record.dataset_name
property: returns the name of theepr.Dataset
from which theRecord
has bee readepr.Record.tot_size
andepr.Field.tot_size
properties: return the total size in bytes of theepr.Record
andepr.Field
respectivelyepr.get_numpy_dtype()
function: retrieves the numpy data type corresponding to the specified EPR type ID- added support for some low level feature: the _magic private attribute
stores the identifier of EPR C stricture, the
epr.Record.get_offset()
returns the offset in bytes of theepr.Record
within the file, and theepr.Field.get_offset()
method returns theepr.Field
offset within theepr.Record
improved functions/methods:
epr.Field.get_elems()
now also handlesepr.E_TID_STRING
andepr.E_TID_TIME
data types- improved
epr.get_data_type_size()
,epr.data_type_id_to_str()
,epr.get_scaling_method_name()
andepr.get_sample_model_name()
functions that are now defined using the cython cpdef directive - the
epr.Field.get_elems()
method has been re-written to remove loops and unnecessary data copy - now generator expressions are used to implement __iter__ special methods
the index parameter of the
epr.Dataset.read_record()
method is now optional (defaults to zero)the deprecated __revision__ variable has been removed
declarations of the EPR C API have been moved to the new
epr.pyd
the const_char and const_void definitions have been dropped, no longer necessary with cython >= 0.19
minimum required version for cython is now 0.19
the
setup.py
script has been completely rewritten to be more “pip friendly”. The new script uses setuptools if available and functions that use numpy are evaluated lazily so to give a chance to pip and setuptools to install dependencies, numpy, before they are actually used. This should make PyEPR “pip-installable” even on system there numpy is not already installed.the
test
directory has been renamed intotests
the test suite now has a
setUpModule()
function that automatically downloads the ENVISAT test data required for test execution. The download only happens if the test dataset is not already available.tests can now be run using the
setup.py
script:$ python3 setup.py test
enable continuous integration and testing in for Windows using AppVeyor (32bit only)
status badges for AppVeyor CI and PyPI added to the HTML doc index
PyEPR 0.8.2 (03/08/2014)¶
- fixed segfault caused by incorrect access to
epr.Dataset.description
string in case of closed products - fixed a memory leak in
epr.Raster
(closes gh-10) - the size parameters (src_width and src_height) in
epr.Band.create_compatible_raster()
are now optional. By default aepr.Raster
with the same size of the scene is created - the test suite have been improved
- improved the NDVI computation example
- updates sphinx config
- small clarification in the Installation section of the User Manual.
- EPR C API (version bundled with the official source tar-ball)
- in case of error always free resources before setting the error code. This avoids error shadowing in some cases.
- fixed a bug that caused reading of the incorrect portion of data in case of mirrored annotation datasets (closes gh-9)
- fixed a bug that caused incorrect data sub-sampling in case of mirrored datasets
PyEPR 0.8.1 (07/09/2013)¶
- fixed an important bug in the error checking code introduced in previous release (closes gh-8)
- fixed the NDVI example
- no more display link URL in footnotes of the PDF User Manual
PyEPR 0.8 (07/09/2013)¶
- now the
epr.Product
objects have aepr.Product.close()
method that can be used to explicitly close products without relying on the garbage collector behaviour (closes gh-7) - new
epr.Product.closed
(read-only) attribute that can be used to check if aepr.Product
has been closed - the
Product
class now supports context management so they can be used inwith
statements - added entries for
epr.__version__
andepr.__revision__
in the reference manual - the
epr.__revision__
module attribute is now deprecated - some cythonization warnings have been fixed
- several small improvements to the documentation
PyEPR 0.7.1 (19/08/2013)¶
- fixed potential issues with conversion from python strings to
char*
- new snapshot of the EPR C API sources (2.3dev):
- the size of the record tables has been fixed
- the EPR_NUM_PRODUCT_TABLES has been fixed
- fixed a missing prototype
- several GCC warnings has been silenced
- additional checks on return codes
- now and error is raised when an invalid flag name is used
- better factorization of Python 3 specific code
- use the CLOUD flag instead of BRIGHT in unit tests
- added function/method signature to all doc-strings for better interactive help
- several improvements to the documentation:
- updated the
README.txt
file to mention EPR C API sourced inclusion in the PyEPR 0.7 (and lates) source tar-ball - small fix in the installation instructions: the pip tool does not have a “–prefix” parameter
- always use the python3 syntax for the print function in all examples in the documentation
- links to older (and dev) versions of the documentation have been added in the man page of the HTML doc
- removed date form the doc meta-data. The documentation build date is reported in the front page of the LaTeX (PDF) doc and, starting from this release, in the footer of the HTML doc.
- the Ohloh widget has been added in the sidebar of the HTML doc
- improved the regexp for detecting the SW version in the :file`setup.py` script
- formatting
- updated the
PyEPR 0.7 (04/08/2013)¶
more detailed error messages in case of open failures
new sphinx theme for the HTML documentation
Travis-CI has been set-up for the project
now the source tar-ball also includes a copy of the EPR C API sources so that no external C library is required to build PyEPR.
This features also makes it easier to install PyEPR using pip.
The user can still guild PyEPR against a system version of the ERP-API library simply using the –epr-api-src option of the
setup.py
script with “None”” as value.The ERP C API included in the source tar-ball is version 2.3dev-pyepr062, a development and patched version that allows the following enhancements.
- support for ERS products in ENVISAT format
- support for ASAR products generated with the new ASAR SW version 6.02 (ref. doc. PO-RS-MDA-GS-2009_4/C
- fix incorrect reading of “incident_angle” bands (closes gh-6). The issue is in the EPR C API.
PyEPR 0.6.1 (26/04/2012)¶
- fix compatibility with cython 0.16
- added a new option to the setup script (–epr-api-src) to build PyEPR using the EPR-API C sources
PyEPR 0.6 (12/08/2011)¶
PyEPR 0.5 (25/04/2011)¶
- stop using
PyFile_AsFile()
that is no more available in Python 3 - now documentation uses intersphinx capabilities
- code examples added to documentation
- tutorials added to documentation
- the LICENSE.txt file is now included in the source distribution
- the cython construct
with nogil
is now used instead of callingPy_BEGIN_ALLOW_THREADS()
andPy_END_ALLOW_THREADS()
directly - dropped old versions of cython; now cython 0.14.1 or newer is required
- suppressed several constness related warnings
PyEPR 0.4 (10/04/2011)¶
- fixed a bug in the
epr.Product.__str__()
,Dataset.__str__()
anderp.Band.__repr__()
methods (bad formatting) - fixed
epr.Field.get_elems()
method for char and uchar data types - implemented
epr.Product.read_bitmask_raster()
, now theepr.Product
API is complete - fixed segfault in
epr.Field.get_unit()
method when the field has no unit - a smaller dataset is now used for unit tests
- a new tutorial section has been added to the user documentation
PyEPR 0.3 (01/04/2011)¶
- version string of the EPR C API is now exposed as module attribute
epr.EPR_C_API_VERSION
- implemented
__repr__
,__str__
,__eq__
,__ne__
and__iter__
special methods - added utility methods (not included in the C API) like:
- fixed a logic error that caused empty messages in custom EPR exceptions
PyEPR 0.2 (20/03/2011)¶
- sphinx documentation added
- added docstrings to all method and classes
- renamed some method and parameter in order to avoid redundancies and have a more pythonic API
- in case of null pointers a
epr.EPRValueError
is raised - improved C library shutdown management
- introduced some utility methods to
epr.Product
andepr.Record
classes
PyEPR 0.1 (09/03/2011)¶
Initial release