Fiona

Fiona reads and writes geographic data files

BSD-3-CLAUSE License

Downloads
5.2M
Stars
1.2K
Committers
71

Bot releases are hidden (Show)

Fiona - 1.10.0 Latest Release

Published by sgillies about 2 months ago

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.

Fiona - 1.10.0rc1

Published by sgillies about 2 months ago

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.

Fiona - 1.10b3

Published by sgillies 3 months ago

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.

Fiona - 1.10b2

Published by sgillies 3 months ago

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.

Fiona - 1.10b1

Published by sgillies 6 months ago

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.

Fiona - 1.10a2

Published by sgillies 7 months ago

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

Deprecations

  • The FIELD_TYPES, FIELD_TYPES_MAP, and FIELD_TYPES_MAP_REV 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 FIELD_TYPES_MAP2 and FIELD_TYPES_MAP2_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.

Fiona - 1.9.6

Published by sgillies 7 months ago

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.
Fiona - 1.10a1

Published by sgillies 8 months ago

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 pkg_resources in test_rio_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.

Fiona - 1.9.5

Published by sgillies about 1 year ago

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.
Fiona - 1.9.4.post1

Published by sgillies over 1 year ago

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.

Fiona - 1.9.4

Published by sgillies over 1 year ago

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).
Fiona - 1.9.3

Published by sgillies over 1 year ago

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).
Fiona - 1.9.2

Published by sgillies over 1 year ago

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).
Fiona - 1.9.1

Published by sgillies over 1 year ago

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).

Fiona - 1.9.0

Published by sgillies over 1 year ago

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.

Fiona - 1.9b2

Published by sgillies over 1 year ago

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).
Fiona - 1.9b1

Published by sgillies almost 2 years ago

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 allow_unsupported_drivers 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.
Fiona - 1.9a3

Published by sgillies about 2 years ago

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.

Fiona - 1.8.22

Published by sgillies about 2 years ago

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.

Fiona - 1.9a2

Published by sgillies over 2 years ago

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).
Package Rankings
Top 1.22% on Pypi.org
Top 14.9% on Anaconda.org
Top 10.35% on Alpine-v3.17
Top 3.66% on Alpine-v3.18
Top 7.13% on Alpine-edge
Top 6.97% on Conda-forge.org
Top 7.14% on Spack.io