Repository: Toblerity/Fiona
Pull request #1432 (2024-08-21 23:33:47)

Rel 1.10.0


Patch:
diff --git a/.github/workflows/scorecard.yml b/.github/workflows/scorecard.yml
index 6a26d40..7e36cd6 100644
--- a/.github/workflows/scorecard.yml
+++ b/.github/workflows/scorecard.yml
@@ -59,7 +59,7 @@ jobs:
       # Upload the results as artifacts (optional). Commenting out will disable uploads of run results in SARIF
       # format to the repository Actions tab.
       - name: "Upload artifact"
-        uses: actions/upload-artifact@834a144ee995460fba8ed112a2fc961b36a5ec5a # v4.3.6
+        uses: actions/upload-artifact@50769540e7f4bd5e21e526ee35c689e35e0d6874 # v4.4.0
         with:
           name: SARIF file
           path: results.sarif
@@ -67,6 +67,6 @@ jobs:
 
       # Upload the results to GitHub's code scanning dashboard.
       - name: "Upload to code-scanning"
-        uses: github/codeql-action/upload-sarif@eb055d739abdc2e8de2e5f4ba1a8b246daa779aa # v3.26.0
+        uses: github/codeql-action/upload-sarif@4dd16135b69a43b6c8efb853346f8437d92d3c93 # v3.26.6
         with:
           sarif_file: results.sarif
diff --git a/CHANGES.txt b/CHANGES.txt
index 954986f..c9d57d7 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -3,6 +3,26 @@ Changes
 
 All issue numbers are relative to https://github.com/Toblerity/Fiona/issues.
 
+1.10.0 (2024-09-03)
+-------------------
+
+The package version, credits, and citation file have been updated. There have
+been no other changes since 1.10.0rc1. Fiona is the work of 73 contributors,
+including 25 new contributors since 1.9.0.
+
+1.10.0rc1 (2024-08-21)
+----------------------
+
+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.
+
 1.10b3 (2024-07-29)
 -------------------
 
diff --git a/CITATION.cff b/CITATION.cff
index 136eaa5..5287702 100644
--- a/CITATION.cff
+++ b/CITATION.cff
@@ -2,8 +2,8 @@ cff-version: 1.2.0
 message: "Please cite this software using these metadata."
 type: software
 title: Fiona
-version: "1.9.5"
-date-released: "2023-10-11"
+version: "1.10.0"
+date-released: "2024-09-03"
 abstract: "Fiona streams simple feature data to and from GIS formats like GeoPackage and Shapefile."
 keywords:
   - cartography
diff --git a/CREDITS.txt b/CREDITS.txt
index 864a080..8003f8e 100644
--- a/CREDITS.txt
+++ b/CREDITS.txt
@@ -3,13 +3,20 @@ Credits
 
 Fiona is written by:
 
+- Adam J. Stewart <ajstewart426@gmail.com>
 - Alan D. Snow <alansnow21@gmail.com>
+- Alexandre Detiste <alexandre.detiste@gmail.com>
 - Ariel Nunez <ingenieroariel@gmail.com>
 - Ariki <Ariki@users.noreply.github.com>
 - Bas Couwenberg <sebastic@xs4all.nl>
 - Brandon Liu <bdon@bdon.org>
 - Brendan Ward <bcward@consbio.org>
+- Chad Hawkins <cwh@chadwhawkins.com>
 - Chris Mutel <cmutel@gmail.com>
+- Christoph Gohlke <cjgohlke@gmail.com>
+- Dan "Ducky" Little <theduckylittle@gmail.com>
+- daryl herzmann <akrherz@iastate.edu>
+- Denis <carriere.denis@gmail.com>
 - Denis Rykov <rykovd@gmail.com>
 - dimlev <dimlev@gmail.com>
 - Efrén <chefren@users.noreply.github.com>
@@ -19,36 +26,54 @@ Fiona is written by:
 - Ewout ter Hoeven <E.M.terHoeven@student.tudelft.nl>
 - Filipe Fernandes <ocefpaf@gmail.com>
 - fredj <frederic.junod@camptocamp.com>
+- Gavin S <gavinswanson@gmail.com>
 - Géraud <galak75@users.noreply.github.com>
 - Hannes Gräuler <hgraeule@uos.de>
+- Hao Lyu <20434183+IncubatorShokuhou@users.noreply.github.com>
+- Herz <gustavo.herzmann@gmail.com>
+- Ian Rose <ian.r.rose@gmail.com>
 - Jacob Wasserman <jwasserman@gmail.com>
+- James McBride <jdmcbr@gmail.com>
+- James Wilshaw <jrw1n15@soton.ac.uk>
+- Jelle van der Waa <jelle@vdwaa.nl>
 - Jesse Crocker <jesse@gaiagps.com>
+- joehuanguf <51337028+joehuanguf@users.noreply.github.com>
 - Johan Van de Wauw <johan.vandewauw@gmail.com>
 - Joris Van den Bossche <jorisvandenbossche@gmail.com>
 - Joshua Arnott <josh@snorfalorpagus.net>
 - Juan Luis Cano Rodríguez <Juanlu001@users.noreply.github.com>
+- Keith Jenkins <kgjenkins@gmail.com>
 - Kelsey Jordahl <kjordahl@enthought.com>
 - Kevin Wurster <wursterk@gmail.com>
+- lgolston <30876419+lgolston@users.noreply.github.com>
+- Loïc Dutrieux <loic.dutrieux@gmail.com>
 - Ludovic Delauné <ludotux@gmail.com>
 - Martijn Visser <mgvisser@gmail.com>
 - Matthew Perry <perrygeo@gmail.com>
-- Micah Cochran <micahcochran@users.noreply.github.com>
+- Micah Cochran <micah@micahcochran.net>
 - Michael Weisman <mweisman@gmail.com>
 - Michele Citterio <michele@citterio.net>
 - Mike Taves <mwtoews@gmail.com>
 - Miro Hrončok <miro@hroncok.cz>
 - Oliver Tonnhofer <olt@bogosoft.com>
 - Patrick Young <patrick.mckendree.young@gmail.com>
+- Phillip Cloud <417981+cpcloud@users.noreply.github.com>
+- pmav99 <pmav99@users.noreply.github.com>
 - qinfeng <guo.qinfeng+github@gmail.com>
 - René Buffat <buffat@gmail.com>
+- Reuben Fletcher-Costin <reuben.fletchercostin@gmail.com>
 - Ryan Grout <rgrout@continuum.io>
+- Ryan Munro <ryan@subc.io>
+- Sandro Mani <manisandro@gmail.com>
 - Sean Gillies <sean.gillies@gmail.com>
 - Sid Kapur <sid-kap@users.noreply.github.com>
 - Simon Norris <snorris@hillcrestgeo.ca>
+- Stefan Brand <StefanBrand@users.noreply.github.com>
 - Stefano Costa <steko@iosa.it>
 - Stephane Poss <stephposs@gmail.com>
 - Tim Tröndle <tim.troendle@usys.ethz.ch>
 - wilsaj <wilson.andrew.j+github@gmail.com>
+- Yann-Sebastien Tremblay-Johnston <underchemist@users.noreply.github.com>
 
 The GeoPandas project (Joris Van den Bossche et al.) has been a major driver
 for new features in 1.8.0.
diff --git a/fiona/__init__.py b/fiona/__init__.py
index c4fc926..8b6132f 100644
--- a/fiona/__init__.py
+++ b/fiona/__init__.py
@@ -78,7 +78,7 @@ __all__ = [
     "remove",
 ]
 
-__version__ = "1.10.0rc1.dev"
+__version__ = "1.10.1.dev"
 __gdal_version__ = get_gdal_release_name()
 
 gdal_version = get_gdal_version_tuple()
diff --git a/fiona/model.py b/fiona/model.py
index fb246c7..30f4f18 100644
--- a/fiona/model.py
+++ b/fiona/model.py
@@ -139,12 +139,15 @@ class Object(MutableMapping):
         }
 
     def __getitem__(self, item):
-        props = {
-            k: (dict(v) if isinstance(v, Object) else v)
-            for k, v in self._props().items()
-        }
-        props.update(**self._data)
-        return props[item]
+        if item in self._delegated_properties:
+            return getattr(self._delegate, item)
+        else:
+            props = {
+                k: (dict(v) if isinstance(v, Object) else v)
+                for k, v in self._props().items()
+            }
+            props.update(**self._data)
+            return props[item]
 
     def __iter__(self):
         props = self._props()
diff --git a/pyproject.toml b/pyproject.toml
index 486036c..1e343ad 100644
--- a/pyproject.toml
+++ b/pyproject.toml
@@ -42,6 +42,8 @@ all = ["fiona[calc,s3,test]"]
 calc = ["pyparsing", "shapely"]
 s3 = ["boto3>=1.3.1"]
 test = [
+    "aiohttp",
+    "fsspec",
     "fiona[s3]",
     "pytest>=7",
     "pytest-cov",
diff --git a/requirements.txt b/requirements.txt
index 8d5f9bc..346085b 100644
--- a/requirements.txt
+++ b/requirements.txt
@@ -3,5 +3,4 @@ click~=8.0
 click-plugins
 cligj>=0.5.0
 importlib-metadata;python_version<"3.10"
-munch>=2.3.2
 certifi
diff --git a/setup.cfg b/setup.cfg
deleted file mode 100644
index a61c037..0000000
--- a/setup.cfg
+++ /dev/null
@@ -1,3 +0,0 @@
-[options.entry_points]
-console_scripts =
-    fio = fiona.fio.main:main_group


Test patch:
diff --git a/tests/test_model.py b/tests/test_model.py
index 4a3825c..2228cc4 100644
--- a/tests/test_model.py
+++ b/tests/test_model.py
@@ -342,3 +342,12 @@ def test_feature_repr():
         properties=Properties(a=1, foo="bar"),
     )
     assert repr(feat) == "fiona.Feature(geometry=fiona.Geometry(coordinates=[(0, 0), ...], type='LineString'), id='1', properties=fiona.Properties(a=1, foo='bar'))"
+
+
+def test_issue1430():
+    """__getitem__() returns property, not disconnected dict."""
+    feat = Feature(properties=Properties())
+    with pytest.warns(FionaDeprecationWarning, match="immutable"):
+        feat["properties"]["foo"] = "bar"
+    assert feat["properties"]["foo"] == "bar"
+    assert feat.properties["foo"] == "bar"