<div dir="ltr"><div dir="ltr">Hi Sean,<div><br></div><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div class="gmail_quote"><div>Configuration management doesn't have to be so bad. I have an example of how to do Rasterio-style configuration contexts, including reset, using GDAL's Python bindings at<br></div><div><br></div><div>  <a href="https://rasterio.readthedocs.io/en/latest/topics/configuration.html#gdal-example" target="_blank">https://rasterio.readthedocs.io/en/latest/topics/configuration.html#gdal-example</a></div></div></div></div></div></blockquote><div><br></div><div>(I love context managers)</div><div><br></div><div>How does it handle multiple open datasets with different configurations though? AFAIK underneath there's only one per-thread config in GDAL, not one per dataset? Or does it push/pop configurations every time you call the underlying GDAL functions?</div><div><br></div><div>Cheers,</div><div><br></div><div>Rob :)</div></div></div></div>