Change history
PyEPR 1.1.4 (07/01/2023)
Do not use deprecated keywords in setup.cfg.
Silence compiler warnings.
Fix extlinks configuration.
Modernize documentation generation: - drop local theme - drop local sphinxect for IPython console highlighting - use the RTD sphinx theme - update sidebar templates
Fix comparibility with packaging v22.0.
Modernize and re-format the Python code.
The minimum required Python version is now v3.7.
PyEPR 1.1.3 (13/09/2021)
PyEPR 1.1.2 (06/11/2021)
Enable CI testing with Python 3.10.
Update the internal copy of EPR C API to v2.3dev_pyerp112.
PyEPR 1.1.1 (07/08/2021)
Fix a serious issue in sdist generation.
PyEPR 1.1.0 (06/08/2021)
Old Python versions are no longer officially supported. Now PyEPR require Python >= 3.5 and Cython >= v0.29.
Introduced the
pyproject.toml
file.The
setup.py
script has been simplified and modernized, now it always use setuptools andsetup.cfg
.Now the EPR C API is handled using git submodule.
Fixed potential crash in cases in which the EPR C API fails to open the requested product
Update the test suite to use the public product
ASA_APM_1PNPDE20091007_025628_000000432083_00118_39751_9244.N1
. The previously used one is no longer available.Continuous Integration moved to GitHub Actions (GHA).
Fix a leak of resources on Windows platforms.
The
print_()
method ofField
andRecord
classes has been renamed intoprint()
. The oldprint_()
method is now deprecated and will be removed in future versions.Support for
pathlib
.Enforce type checking.
PyEPR 1.0.1 (07/03/2020)
Fixed a problem in the test using the
epr.Product._fileno
(only impacting MacOS-X). Also some advice about the correct use ofepr.Product._fileno
has been added to the documentation.Always close the product object during tests. Prevents errors during CI cleanup actions on Windows.
PyEPR 1.0.0 (08/09/2019)
PyEPR 0.9.5 (23/08/2018)
Fix compatibility with numpy >= 1.14:
np.fromstring()
is deprecatedUpdate 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 IDadded 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 typesimproved
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 directivethe
epr.Field.get_elems()
method has been re-written to remove loops and unnecessary data copynow 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 productsfixed 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 createdthe 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 closedthe
Product
class now supports context management so they can be used inwith
statementsadded entries for
epr.__version__
andepr.__revision__
in the reference manualthe
epr.__revision__
module attribute is now deprecatedsome 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-ballsmall 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
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 3now 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()
directlydropped 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 typesimplemented
epr.Product.read_bitmask_raster()
, now theepr.Product
API is completefixed segfault in
epr.Field.get_unit()
method when the field has no unita 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 methodsadded 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 raisedimproved C library shutdown management
introduced some utility methods to
epr.Product
andepr.Record
classes
PyEPR 0.1 (09/03/2011)
Initial release