- 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.
- Do not use the deprecated distutils package.
- Improve command line arguments management in
setup.py
. - Stop distributing .c code auto-generated by Cython in the source tarball. Now the .c code is generated by Cython during the build package phase.
- Enable CI testing with Python 3.10.
- Update the internal copy of EPR C API to v2.3dev_pyerp112.
- Fix a serious issue in sdist generation.
- 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.
- 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.
- 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
- 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
- Fix PyEprExtension class in setup.py (closes
11
) - Updated internal EPR API version
- 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
- Fix source distribution (missing EPR API C sources)
- 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
- fixed segfault caused by incorrect access to
epr.Dataset.description
string in case of closed products - fixed a memory leak in
epr.Raster
(closes10
) - 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 <ndvi_example>
- updates sphinx config
- small clarification in the
installation
section of theusermanual
. - 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
9
) - fixed a bug that caused incorrect data sub-sampling in case of mirrored datasets
- fixed an important bug in the error checking code introduced in previous release (closes
8
) - fixed the NDVI example
- no more display link URL in footnotes of the PDF User Manual
- 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 (closes7
) - 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
- 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
- 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
6
). The issue is in the EPR C API.
- 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
- full support for Python 3
- improved code highligh in the documentation
- depend from cython >= 0.13 instead of cython >= 0.14.1. Cythonizing
epr.pyx
with Python 3 requires cython >= 0.15
- stop using :c
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 calling :cPy_BEGIN_ALLOW_THREADS
and :cPy_END_ALLOW_THREADS
directly - dropped old versions of Cython; now Cython 0.14.1 or newer is required
- suppressed several constness related warnings
- 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
- 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:
epr.Record.get_field_names
epr.Record.fields
epr.Dataset.records
epr.Product.get_dataset_names
epr.Product.get_band_names
epr.Product.datasets
epr.Product.bands
- fixed a logic error that caused empty messages in custom EPR exceptions
- 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
Initial release