Recent Releases of fiona

fiona - 1.10.1

Bug fixes

  • Several typos were found and fixed (#1448). One variable was renamed and the ContextVar in _vsipyopener.pyx was renamed.
  • Logging in the CRS class no longer tries to print representations of objects that may be NULL when searching for authority matches (#1445).

- Python
Published by sgillies over 1 year ago

fiona - 1.10.0

This is 1.10.0. At last! The project has added 25 new contributors since 1.9.0, for a total of 73.

Fiona 1.10 will continue to support classic GIS programming work with a record-style data model. Rows, that is, not columns.

The changes since 1.9.6 are fully described in the changelog, split across pre-releases. Here is a high-level summary.

Deprecations

  • Python-style filter expressions for CLI commands are being replaced by Lisp-like expressions.
  • Some constants in the fiona.schema module will be removed in a future version.
  • The fiona.path module will be removed in a future version. This, and the previously mentioned constants, were not meant to be used by projects downstream.

New features

  • Python openers can connect filesystems implemented in Python, like fsspec or tiledb.vfs, to GDAL's own virtual filesystem machinery. In most cases, you should reply on GDAL's built-in virtual filesystem handlers. On the other hand, if you have unique or proprietary data access protocols, then fiona's new openers may be useful.
  • Fiona's CLI has three new commands, filter (strictly speaking, a new mode of this command), map, and reduce. These provide some great features for Unix-style data processing pipelines and are designed to work well with jq and programs of that nature.

Other changes

This version is heavily refactored. If it's not paying off for you, let us know!

PyPI wheels

The binary wheels on PyPI include GDAL 3.9.2 (3.9.1 for Windows), GEOS 3.11.2, and PROJ 9.4.1.

GDAL and Python versions

Fiona 1.10.0 requires GDAL 3.4 and Python 3.8 or newer.

- Python
Published by sgillies almost 2 years ago

fiona - 1.10.0rc1

This is the first release candidate for 1.10.0.

Changes

  • Mutable item access to Feature, Geometry, and Properties instances has been restored (reported in #1430). This usage should be avoided as instances of these classes will be immutable in a future version.
  • The setup.cfg duplicates project configuration in pyproject.toml and has been removed.

Packaging

  • PyPI wheels include GDAL 3.9.2.

Please see the CHANGES file for a more detailed enumeration of changes since version 1.10b1. Unless showstopper bugs are found in this release, expect a final 1.10.0 release in two weeks.

- Python
Published by sgillies almost 2 years ago

fiona - 1.10b3

Bug fixes

  • The sketchy, semi-private Python opener interfaces of version 1.10b2 have been replaced by ABCs that are exported from fiona.abc (#1415). How to implement the interfaces and provide a custom opener is documented in test_pyopener.py and will be included in the documentation for version 1.10.0.
  • The truncate GDAL VSI plugin callback has been implemented (#1413).

Please see the CHANGES file for a more detailed enumeration of changes since version 1.9.6. Unless showstopper bugs are found in this release, expect a release candidate in two weeks.

- Python
Published by sgillies almost 2 years ago

fiona - 1.10b2

This is the second beta release for Fiona 1.10. There are no new features, only bug fixes:

Bug fixes

  • The Pyopener registry and VSI plugin have been rewritten to avoid filename conflicts and to be compatible with multithreading. Now, a new plugin handler is registered for each instance of using an opener (#1408). Before GDAL 3.9.0 plugin handlers cannot not be removed and so it may be observed that the size of the Pyopener registry grows during the execution of a program.
  • A CSLConstList ctypedef has been added and is used where appropriate (#1404).
  • Fiona model objects have a informative, printable representation again (#1380).

Packaging

  • PyPI wheels include GDAL 3.9.1 and curl 8.8.0.

Please see the CHANGES file for a more detailed enumeration of changes since version 1.9.6. Unless showstopper bugs are found in this release, expect a release candidate in two weeks.

- Python
Published by sgillies almost 2 years ago

fiona - 1.10b1

This is the first beta release for Fiona 1.10. There are no new features, only one bug fix:

  • Fiona can again set fields with values that are instances of classes derived from date, time, and datetime (#1377). This was broken by changes in 1.10a2.

Please see the CHANGES file for a more detailed enumeration of changes since version 1.9.6. Unless showstopper bugs are found in this release, expect a release candidate in two weeks.

- Python
Published by sgillies about 2 years ago

fiona - 1.10a2

This is the second 1.10 pre-release. The changes since 1.10a1 are enumerated below.

Deprecations

  • The FIELDTYPES, FIELDTYPESMAP, and FIELDTYPESMAPREV attributes of fiona.schema are no longer used by the project and will be removed in version 2.0 (#1366).
  • The Python style of rio-filter expressions introduced in version 1.0 are deprecated. Only the parenthesized list type of expression will be supported by version 2.0.

New features

  • All supported Fiona field types are now represented by classes in fiona.schema. These classes are mapped in FIELDTYPESMAP2 and FIELDTYPESMAP2_REV to OGR field type and field subtype pairs (#1366).
  • The filter, map, and reduce CLI commands from the public domain version 1.1.0 of fio-planet have been incorporated into Fiona's core set of commands (#1362). These commands are only available if pyparsing and shapely (each of these are declared in the "calc" set of extra requirements) are installed.

Bug fixes

  • Fiona's python opener VSI plugin prefix has been changed to "vsifiopener" to not conflict with Rasterio (#1368).
  • Add a 16-bit integer type "int16" based on OGR's OSFTInt16 integer sub-type (#1358).
  • Allow a GeoJSON collection's layer name to be set on opening in write mode (#1352).
  • The legacy crs.py module which was shadowed by the new crs.pyx module has been deleted (#1344).
  • Python 3.8 has been added back to the list of supported versions and a dependency on Numpy added in 1.10a1 has been removed.
  • An implementation of the VSI flush callback has been added to _vsiopener.pyx.
  • Openers are now registered only by urlpath. The mode is no longer considered as OGR drivers may use a mix of modes when creating a new dataset.

Other changes

  • Feature builder and field getter/setter instances are reused when reading and writing features (#1366).

Packaging

Aftermath of the "xz hackdoor" incident (see https://github.com/Toblerity/Fiona/discussions/1367) is preventing us from building Windows wheels for this release. You may expect them for the first 1.10 release candidate, if not sooner, and for the final 1.10.0 release.

Future 1.10 pre-releases will be announced at https://github.com/Toblerity/Fiona/issues/1332.

- Python
Published by sgillies about 2 years ago

fiona - 1.9.6

This is very likely the last 1.9.x release and fixes several bugs that can't wait until 1.10.0.

Bug fixes

  • Ensure that geometry types in a schema are translated to a linear type, as geometry instances are (#1313).
  • Fix broken stable API documentation on Read The Docs.
  • Remove install requirement of setuptools, a regression introduced in 1.9.5.

- Python
Published by sgillies over 2 years ago

fiona - 1.10a1

This is the first 1.10 pre-release.

Python version

Fiona 1.10 will be compatible with Numpy versions 1 and 2 and will require Python version 3.8 or higher.

New features

Python openers can now support discovery of auxiliary "sidecar" files like .aux.xml, .msk, and .tfw files for GeoTIFFs (#1331). Additionally, filesystem objects, such as those from fsspec and tiledb, can be used as openers. This will become the recommended usage, supplanting the use of single file openers.

Bug fixes

  • Use of pkgresources in testrio_info.py has been eliminated.
  • gzip, tar, and zip archive URIs containing drive letters were not always parsed properly on Windows, but are now (#1334).

Packaging

  • PyPI wheels include GDAL 3.8.4, PROJ 9.3.1, and GEOS 3.11.2.

Future 1.10 pre-releases will be announced at https://github.com/Toblerity/Fiona/issues/1332.

- Python
Published by sgillies over 2 years ago

fiona - 1.9.5

Bug fixes

  • Expand keys in schema mismatch exception, resolving #1278.
  • Preserve the null properties and geometry of a Feature when serializing (#1276).

Packaging

  • The distribution name is now officially "fiona", not "Fiona". The import name remains fiona.
  • Builds now require Cython >= 3.0.2 (#1276).
  • PyPI wheels include GDAL 3.6.4, PROJ 9.0.1, and GEOS 3.11.2.
  • PyPI wheels include curl 8.4.0, addressing CVE-2023-38545 and CVE-38546.
  • PyPI wheels are now available for Python 3.12.

- Python
Published by sgillies over 2 years ago

fiona - 1.9.4.post1

Extraneous files were unintentionally packaged in the 1.9.4 wheels. This post1 release excludes them so that wheel contents are as in version 1.9.3.

- Python
Published by sgillies about 3 years ago

fiona - 1.9.4

Version 1.9.4 has important bug fixes and improvements and, in the PyPI wheels, updates GDAL to 3.6.4.

  • The performance of Feature.from_dict() has been improved (#1267).
  • Several sources of meaningless log messages from fiona._geometry about NULL geometries are avoided (#1264).
  • The Parquet driver has been added to the list of supported drivers and will be available if your system's GDAL library links libarrow. Note that fiona wheels on PyPI do not include libarrow as it is rather large.
  • Ensure that fiona._vendor modules are found and included.
  • Bytes type feature properties are now hex encoded when serializing to GeoJSON (#1263).
  • Docstrings for listdir and listlayers have been clarified and harmonized.
  • Nose style test cases have been converted to unittest.TestCase (#1256).
  • The munch package used by fio-filter and fio-calc is now vendored and patched to remove usage of the deprecated pkg_resources module (#1255).

- Python
Published by sgillies about 3 years ago

fiona - 1.9.3

Version 1.9.3 has a handful of important bug fixes and, in the PyPI wheels, upgrades GEOS to 3.11.2.

  • Rasterio CRS objects are compatible with the Collection constructor and are now accepted (#1248).
  • Append mode for fio-load has been enabled (#1237).
  • Reading a GeoJSON with an empty array property can result in a segmentation fault since version 1.9.0. This has been fixed (#1228).

- Python
Published by sgillies about 3 years ago

fiona - 1.9.2

Version 1.9.2 has a handful of important bug fixes.

  • The fio CLI now gets its command entry points using importlib.metadata (#1220). The project has no more runtime dependency on setuptools.
  • Instead of warning, transform_geom() raises an exception when some points can't be reprojected unless the caller opts in to partial reprojection. This restores the behavior of version 1.8.22.
  • Add support for open options to all CLI commands that call fiona.open (#1215).
  • Fix a memory leak that can occur when iterating over a dataset using strides (#1205).
  • ZipMemoryFile now supports zipped GDB data (#1203).

- Python
Published by sgillies about 3 years ago

fiona - 1.9.1

The 1.9.0 release revealed a few bugs. Here are the ones we felt should be squished immediately.

  • Log a warning message when identically named fields are encountered (#1201).
  • Avoid dependence on listdir order in tests (#1193).
  • Prevent empty geometries arrays from appearing in __geo_interface__ (#1197).
  • setuptools added to pyproject.toml. Its pkg_resources module is used by the CLI (#1191).

Wheels on PyPI include the same versions of GEOS, GDAL, and PROJ as in 1.9.0 but also patch GDAL 3.5.3 (https://github.com/OSGeo/gdal/pull/7171).

- Python
Published by sgillies over 3 years ago

fiona - 1.9.0

This is 1.9.0.

Deprecations

  • The precision keyword argument of fiona.transform.transform_geom is deprecated and will be removed in version 2.0.
  • The fiona.drivers() function has been deprecated and will be removed in version 2.0. It should be replaced by fiona.Env().
  • The new fiona.meta module will be renamed to fiona.drivers in version 2.0.

New features

The major new features are:

  • A new CRS class identical to Rasterio's.
  • New Feature and Geometry classes. These are returned instead of dicts but are compatible with version 1.8's dicts.
  • Access to format driver metadata.

Please see the change log entries for 1.9 pre-releases to see a complete list of new features and bug fixes.

PyPI wheels

The binary wheels on PyPI include GDAL 3.5.3, GEOS 3.11.1, and PROJ 9.0.1.

GDAL and Python versions

Fiona 1.9.0 requires GDAL 3.1 and Python 3.7 or newer.

1.8.x status

1.8.22 was the final release from the maint-1.8 branch.

- Python
Published by sgillies over 3 years ago

fiona - 1.9b2

1.9b2 (2023-01-22)

The second 1.9 beta release is ready for early testing. All of the features planned for 1.9.0 are in this release.

The binary wheels on PyPI include GDAL 3.5.3, GEOS 3.11.1, and PROJ 9.0.1. To try the wheels, run pip install --pre fiona.

Changes

  • Add Feature.__geo_interface__ property (#1181).
  • Invalid creation options are filtered and ignored (#1180).
  • The readme doc has been shortened and freshened up, with a modern example for version 1.9.0 (#1174). Advanced installation instructions have been moved to a separate doc.
  • The Geometry class now provides and looks for __geo_interface__ (#1174).
  • The top level fiona module now exports Feature, Geometry, and Properties (#1174).
  • Functions that take Feature or Geometry objects will continue to take dicts or objects that provide __geo_interface__ (#1177). This reverses the deprecation introduced in 1.9a2.
  • Python ignores SIGPIPE by default. By never catching BrokenPipeError via except Exception when, for example, piping the output of rio-shapes to the Unix head program, we avoid getting an unhandled BrokenPipeError message when the interpreter shuts down (#2689).

- Python
Published by sgillies over 3 years ago

fiona - 1.9b1

The first 1.9 beta release is ready for early testing. All of the features planned for 1.9.0 are in this release.

The binary wheels on PyPI include GDAL 3.5.3, GEOS 3.11.1, and PROJ 9.0.1. To try the wheels, run pip install --pre fiona.

New features

  • Add listdir and listlayers method to io.MemoryFile (resolving #754).
  • Add support for TIN and triangle geometries (#1163).
  • Add an allowunsupporteddrivers option to fiona.open() (#1126).
  • Added support for the OGR StringList field type (#1141).

Changes and bug fixes

  • Missing and unused imports have been added or removed.
  • Make sure that errors aren't lost when a collection can't be saved properly (#1169).
  • Ensure that ZipMemoryFile have the proper GDAL name after creation so that we can use listdir() (#1092).
  • The fiona.loading module, which supports DLL loading on Windows, has been moved into `init_.py` and is no longer used anywhere else (#1168).
  • Move project metadata to pyproject.toml (#1165).
  • Update drvsupport.py to reflect new format capabilities in GDAL 3.6.0 (#1122).
  • Remove debug logging from env and _env modules.

- Python
Published by sgillies over 3 years ago

fiona - 1.9a3

Builds now require Cython >= 0.29.29 because of https://github.com/cython/cython/issues/4609 (see https://github.com/Toblerity/Fiona/issues/1143).

Wheels include GDAL 3.5.2, PROJ 9.0.1, and GEOS 3.11.0 and are available for Python versions 3.7-3.11.

- Python
Published by sgillies over 3 years ago

fiona - 1.8.22

Builds now require Cython >= 0.29.29 because of https://github.com/cython/cython/issues/4609 (see #1143).

Wheels include GDAL 3.4.3, PROJ 8.2.1, and GEOS 3.10.2.

- Python
Published by sgillies over 3 years ago

fiona - 1.9a2

The second 1.9 pre-release is ready for early testing. Not all of the features planned for 1.9.0 are in this release, and some of the features here may yet be modified. Please pay close attention to the deprecations and packaging changes.

The binary wheels on PyPI include GDAL 3.5.0 and PROJ 9.0.0, the latest versions of each. To try the wheels, run pip install --pre fiona.

Deprecations:

  • Fiona's API methods will accept feature and geometry dicts in 1.9.0, but this usage is deprecated. Instances of Feature and Geometry will be required in 2.0.
  • The precision keyword argument of fiona.transform.transform_geom is deprecated and will be removed in version 2.0.
  • Deprecated usage has been eliminated in the project. Fiona's tests pass when run with a -Werror::DeprecationWarning filter.

Changes:

  • Fiona's FionaDeprecationWarning now sub-classes DeprecationWarning.
  • Some test modules have beeen re-formatted using black.

New features:

  • Fiona Collections now carry a context exit stack into which we can push fiona Envs and MemoryFiles (#1059).
  • Fiona has a new CRS class, like rasterio's, which is compatible with the CRS dicts of previous versions (#714).

- Python
Published by sgillies about 4 years ago

fiona - 1.9a1

The first 1.9 pre-release is ready for early testing. Not all of the features planned for 1.9.0 are in this release, and some of the features here may yet be modified. Please pay close attention to the deprecations and packaging changes.

The binary wheels on PyPI include GDAL 3.5.0 and PROJ 9.0.0, the latest versions of each.

Deprecations:

  • The fiona.drivers() function has been deprecated and will be removed in version 2.0. It should be replaced by fiona.Env().
  • The new fiona.meta module will be renamed to fiona.drivers in version 2.0.

Packaging:

  • Source distributions contain no C source files and require Cython to create them from .pyx files (#1096).

Changes:

  • Shims for various versions of GDAL have been removed and are replaced by Cython compilation conditions (#1093).
  • Use of CURLCABUNDLE environment variable is replaced by a more specific GDAL/PROJCURLCA_BUNDLE (#1095).
  • Fiona's feature accessors now return instances of fiona.model.Feature instead of Python dicts (#787). The Feature class is compatible with code that expects GeoJSON-like dicts but also provides id, geometry, and properties attributes. The last two of these are instances of fiona.model.Geometry and fiona.model.Properties.
  • GDAL 3.1.0 is the minimum GDAL version.
  • Drop Python 2, and establish Python 3.7 as the minimum version (#1079).
  • Remove six and reduce footprint of fiona.compat (#985).

New features:

  • The appropriate format driver can be detected from filename in write mode (#948).
  • Driver metadata including dataset open and dataset and layer creations options are now exposed through methods of the fiona.meta module (#950).
  • CRS WKT format support (#979).
  • Add 'where' SQL clause to set attribute filter (#961, #1097).

Bug fixes:

  • Env and Session classes have been updated for parity with rasterio and to resolve a credential refresh bug (#1055).

- Python
Published by sgillies about 4 years ago

fiona - 1.8.21

Changes:

  • Driver mode support tests have been made more general and less susceptible to driver quirks involving feature fields and coordinate values (#1060).
  • OSError is raised on attempts to open a dataset in a Python file object in "a" mode (see #1027).
  • Upgrade attrs, cython, etc to open up Python 3.10 support (#1049).

Bug fixes:

  • Allow FieldSkipLogFilter to handle exception messages as well as strings (reported in #1035).
  • Clean up VSI files left by MemoryFileBase, resolving #1041.
  • Hard-coded "utf-8" collection encoding added in #423 has been removed (#1057).

- Python
Published by sgillies over 4 years ago

fiona - 1.8.13.post1

This release is being made to improve binary wheel compatibility with shapely 1.7.0. There have been no changes to the fiona package code since 1.8.13.

- Python
Published by sgillies over 6 years ago

fiona - 1.8.0

Fiona 1.8.0 is on PyPI today. Congratulations to all 46 developers (see the credits) file and many thanks to everyone who took the time to report a bug or test a new feature.

Much of the motivation for this version has been provided by the GeoPandas project. Working with Joris Van den Bossche et al. on various issues has been a pleasure.

There are no known breaking changes in 1.8.0. Python warnings should be expected in several cases of class and method deprecation.

  • The fiona.drivers() context manager is being replaced by fiona.Env(), which also registers format drivers and has the same properties as the GDAL configuration manager in Rasterio.
  • Collection slicing will be disallowed in a future version of Fiona to remove the confusion between mapping and list semantics for Collection objects. Code such as fiona.open(“example.shp”)[1:10] should be changed to list(fiona.open(“example.shp”))[1:10].

This version has new features, including a set from the Rasterio project.

  • Fiona has an increased and configurable transaction size for record writes, which makes the GeoPackage format fully usable in Fiona.
  • The “http” and “https” URI schemes for datasets are now fully supported, providing direct access to vector data on the web. Support for an “s3” does the same for data in AWS S3 buckets.
  • Support for “zip”, “zip+https”, and “zip+s3” datasets allows users to access records in zipped Shapefiles (for example) without needing to unzip them, whether on a local file system, on the web, or in S3.
  • New MemoryFile and ZipMemoryFile classes provide easy access to datasets in streams of bytes.

Major refactoring was required to bring new features over from Rasterio and to modernize our use of Cython. This was a huge lift, largely done by Joshua Arnott. Elliott Sales de Andrade took the lead on finishing the migration of Fiona’s tests to pytest.

- Python
Published by sgillies over 7 years ago