Toblerity / Fiona

Fiona reads and writes geographic data files
https://fiona.readthedocs.io/
BSD 3-Clause "New" or "Revised" License
1.14k stars 202 forks source link

1.10 release #1332

Closed sgillies closed 1 day ago

sgillies commented 6 months ago

As I mentioned in https://github.com/Toblerity/Fiona/discussions/1329 I would like to make a Fiona 1.10 release with support for Python virtual filesystems (done in #1331) and Numpy 2.

Target date for a 1.10a1 is 2024-03-01.

sgillies commented 6 months ago

1.10a1 distributions are on PyPI now: https://pypi.org/project/fiona/1.10a1/#files.

martinfleis commented 5 months ago

@sgillies do you have a planned date for 1.10 release that is not a pre-release? I am trying to figure out if we need another patch release of GeoPandas before that or of GeoPandas 1.0 (tentatively end of April) will be enough.

sgillies commented 5 months ago

@martinfleis I'm also thinking end of April for 1.10.0.

sgillies commented 5 months ago

A largish new feature and a big refactor have landed. I'm going to begin releasing 1.0a2 today.

sgillies commented 5 months ago

Small changes to CI runners since 1.10a1 have broken the builds 😂 . I'm iterating on the fix.

sgillies commented 5 months ago

Whew, done with 1.10a2!

All the major new features planned for 1.10.0 are done, so let's have the next release be 1.10b1.

sgillies commented 4 months ago

1.10b1 is tagged, on PyPI, and announced in some places. Should be on conda-forge soon.

sgillies commented 1 month ago

1.10b2 is tagged and on PyPI. Let's have a release candidate on 2024-07-15.

sebastic commented 1 month ago

test_opener_fsspec_file_fs_listdir fails during the Debian package build:

=================================== FAILURES ===================================
______________________ test_opener_fsspec_file_fs_listdir ______________________

    def test_opener_fsspec_file_fs_listdir():
        """Use fsspec file filesystem as opener for listdir()."""
        fs = fsspec.filesystem("file")
        listing = fiona.listdir("tests/data", opener=fs)
>       assert len(listing) >= 35
E       AssertionError

tests/test_pyopener.py:146: AssertionError
------------------------------ Captured log call -------------------------------
DEBUG    fiona._env:env.py:315 GDAL data files are available at built-in paths.
DEBUG    fiona._env:env.py:315 PROJ data files are available at built-in paths.
DEBUG    fiona:__init__.py:502 Registering opener: raw_dataset_path='tests/data', opener=<fsspec.implementations.local.LocalFileSystem object at 0x7f553dfdcb30>
DEBUG    fiona._vsiopener:contextlib.py:137 Installing Python opener handler plugin: prefix_bytes=b'/vsifiopener_ff31c064a95a46cc8b03443981c8783c/'
DEBUG    fiona:__init__.py:504 Registered vsi path: registered_vsi_path='/vsifiopener_ff31c064a95a46cc8b03443981c8783c/tests/data'
DEBUG    fiona._vsiopener:__init__.py:505 Looking up opener in pyopener_stat: urlpath='tests/data', registry={(PosixPath('tests'), 'ff31c064a95a46cc8b03443981c8783c'): <fiona._vsiopener._FilesystemOpener object at 0x7f553dfdf0b0>}, key=(PosixPath('tests'), 'ff31c064a95a46cc8b03443981c8783c')
DEBUG    fiona._vsiopener:__init__.py:505 Looking up opener in pyopener_read_dir: urlpath='tests/data', registry={(PosixPath('tests'), 'ff31c064a95a46cc8b03443981c8783c'): <fiona._vsiopener._FilesystemOpener object at 0x7f553dfdf0b0>}, key=(PosixPath('tests'), 'ff31c064a95a46cc8b03443981c8783c')
=========================== short test summary info ============================
FAILED tests/test_pyopener.py::test_opener_fsspec_file_fs_listdir - Assertion...
========== 1 failed, 1079 passed, 108 skipped, 1 deselected in 4.95s ===========

There are only 33 files in that directory:

$ find tests/data/ -type f | wc -l
33

This patch resolves the issue for me:

--- a/tests/test_pyopener.py
+++ b/tests/test_pyopener.py
@@ -143,7 +143,7 @@ def test_opener_fsspec_file_fs_listdir()
     """Use fsspec file filesystem as opener for listdir()."""
     fs = fsspec.filesystem("file")
     listing = fiona.listdir("tests/data", opener=fs)
-    assert len(listing) >= 35
+    assert len(listing) >= 33
     assert set(
         ["coutwildrnp.shp", "coutwildrnp.dbf", "coutwildrnp.shx", "coutwildrnp.prj"]
     ) & set(listing)
sgillies commented 1 month ago

Thanks @sebastic ! I fixed this in afdd0e7.

pjonsson commented 1 month ago

1.10b2 is tagged and on PyPI. Let's have a release candidate on 2024-07-15.

@sgillies I can't see the release candidate in the releases here on Github or on PyPi, has it been delayed?

Edit: or do you mean 1.10b2 from 2024-07-11 is the release candidate?

sgillies commented 1 month ago

@pjonsson it's delayed. In fact, I will be making a 1.10b3 soon so that people can try the work in #1415.

sgillies commented 1 month ago

1.10b3 was tagged and released yesterday. Give it a workout if you can 🙏

sgillies commented 2 weeks ago

Hey all, the code in this project is ready for a 1.10.0rc1. However, the wheel building workflows are not ready to build wheels for Python 3.13. I've begun work on rewriting the fiona-wheels GitHub Action workflows to use a combination of multibuild (or vcpkg) and cibuildwheel. Progress is slow. Does anyone have a preference for me to wait until 3.13 wheels are unblocked before 1.10.0rc1?

pjonsson commented 2 weeks ago

I don't see any 3.13 wheels for 1.9.6, or in the 1.10b-releases, so releasing 1.10.0 without 3.13 wheels isn't making the situation worse than it already is. Considering GHSA-q5fm-55c2-v6j9 and GHSA-g4m4-9q4c-mfw6 are in 1.9.6, I think it's fair to put 3.13 wheels after 1.10.0.

sgillies commented 2 weeks ago

Thanks for the response @pjonsson. I'm inclined to have a 1.10.0rc1 without 3.13 wheels.

About the CVEs: they're not as dire as they appear. These are the first ones I've published on GitHub and I did so before I'd made edits to the original reports. My amendments (see https://github.com/Toblerity/Fiona/security/advisories) should appear in the GitHub database at some point, I hope.

EwoutH commented 2 weeks ago

Since Fiona is a low-level dependency for many downstream geospatial projects, it would be beneficial to have Python 3.13 on PyPI as fast as possible, ideally in the 1.10 release.

I have some experience with wheel building, where's the exact workflow located? I can take a look at updating it.

Edit: Right, it was https://github.com/sgillies/fiona-wheels. I will take a look!

sgillies commented 1 day ago

I've pushed a maint-1.10 branch. Let's call main "version 2.0".

Thanks for the help, everyone!

EwoutH commented 1 day ago

Let's call main "version 2.0"

Exciting! Many breaking changes / overhauls planned for 2.0?