Changelog
This changelog is generated automatically from GitHub Releases.
freezebase 0.7.1
2026-09-08 · GitHub
Added
- freezebase.settings.S3Settings reads a profile, an optional endpoint and the two botocore checksum policies from prefixed environment variables (
S3Settings.from_env("MYAPP_S3_")), and resolve_path turns a local path or ans3://URI into aPathor a configuredUPath. It replaces the copies of this class downstream packages carried.pydantic-settingsjoins thes3extra. configured_endpoint_url(profile)performs botocore’s own configured endpoint lookup (AWS_ENDPOINT_URL_S3,AWS_ENDPOINT_URL, theservicessection, the profile’sendpoint_url, honouringignore_configured_endpoint_urls), cached per profile and cleared by clear_aws_session_cache.resolve_endpoint_url(path)returns the endpoint a path’s requests go to: anendpoint_urlon the path, else one insideclient_kwargs, else the configured one — the same precedence s3fs applies.list_object_sizes(directory, recursive=...)lists a prefix as{relative path: size}from one listing call, on any fsspec filesystem, skipping zero-byte folder-marker keys. A missing prefix lists as empty.atomic_write_text(path, text)writes through a renamed sibling on the local filesystem and as one put on an object store.- CONTENT_TYPES and
content_type_for(path)give the media type a cloud-native geospatial object should be served as, by suffix. - file_sha256 accepts a
UPathand streams a remote file in chunks.
Fixed
- s3_env and subprocess_s3_env point GDAL at the endpoint the path’s AWS configuration sets when the path carries no explicit
endpoint_url. Before, a path built from a profile whose config section setsendpoint_urlsent s3fs to that gateway and GDAL to AWS; the same held forAWS_ENDPOINT_URLwith explicit credentials. - subprocess_s3_env now hands the child the same GDAL reader configuration s3_env applies in-process (
GDAL_DISABLE_READDIR_ON_OPEN=EMPTY_DIRand the HTTP retry settings). Before, a child process listed the directory of every/vsis3/object it opened. Both builders read the newGDAL_S3_OPTIONStable, so they cannot drift apart again. An S3 path without a profile or endpoint therefore no longer yields an empty mapping.
freezebase 0.7.0
2026-09-04 · GitHub
Added
- write_cog takes a
checksumkeyword. WhenTrue, it returns the SHA-256 of the written bytes as a multihash ("1220"+ hex) instead ofNone. - subprocess_s3_env builds the S3 environment variables a child process needs to open
/vsis3/paths. create_warped_vrtreprojects a raster onto a fixed target grid, andcreate_rgba_vrtcolour-maps a raster into a 4-band VRT via per-band lookup tables.- build_vrt_mosaic takes a
boundskeyword to fix the mosaic extent, and no longer requires tiles to live beside the output VRT.
freezebase 0.6.1
2026-08-31 · GitHub
Fixed
- write_cog now applies caller-supplied COG creation options to the finished COG instead of silently discarding them. Its intermediate GTiff remains losslessly compressed, avoiding double quantization for lossy codecs such as LERC.
freezebase 0.6.0
2026-08-25 · GitHub
Added
- write_cog and rewrite_tiff take
tags,band_tagsandunits, writing dataset-level tags, per-band tags and band unit strings. All three are keyword-only and default toNone, so existing calls are unchanged.
Fixed
- rewrite_tiff no longer loses
LAYOUT: COGwhen a non-GTiff destination carries band descriptions, tags, band tags or units. All of those live in the GDAL_METADATA TIFF tag, which grows when written into a finished file and is relocated behind the image data; they now go into an intermediate GTiff so the driver copy writes the final layout around them. - Every per-band sequence (
band_names,color_interp,band_tags,units) is now rejected if it does not match the band count. - The
s3extra now requiress3fs>=2026.7.0. Earlier versions cache a prefix-filtered listing under the unfiltered directory key (fsspec/s3fs[#1034](https://github.com/lqgentner/freezebase/issues/1034)), so a singleglob("prefix*")makes every later listing miss files.
freezebase 0.5.0
2026-08-24 · GitHub
Added
- Python 3.14 support
freezebase.__version__, read from the installed distribution metadata.
Fixed
- HTTPDownloader now closes the streamed response on every path out of a download, not only on the successful one.
freezebase 0.4.0
2026-08-17 · GitHub
Added
- HTTPDownloader.close() and context-manager support, which close the downloader’s session and release its pooled connections. Creating one downloader per download previously held a connection open until the garbage collector ran, which made downstream test suites fail unpredictably. The session is also closed on garbage collection as a fallback.
Changed
- Breaking: HTTPDownloader no longer forwards arbitrary keyword arguments to
requests.methodandtimeoutare now named parameters and are spelled exactly as before, so calls that only used those keep working;methodis restricted to"GET"and"POST". Any otherrequestskeyword, such asparamsorheaders, now raisesTypeErrorinstead of reaching the request. To configure the transport, for example a connection pool size, mount an adapter onHTTPDownloader.session.
freezebase 0.3.0
2026-08-05 · GitHub
This release marks the first release of freezebase on PyPI!
Added
- Per-path named AWS profile support in make_s3_upath. Combinable with a custom
endpoint_url, mutually exclusive withanon=Trueand explicitkey/secret/token. Setting a profile takes environment credentials out of boto’s resolution chain, so the path signs with the profile’s keys only. - aws_session, returning the cached Rasterio
AWSSessionfor an S3 path, and clear_aws_session_cache to discard those sessions. Prefer aws_session over constructing anAWSSessiondirectly, so every layer signs identically.
Changed
- Renamed the package to
freezebase, to allow publication on PyPI under the same name. The import path, PyPI distribution name,FREEZEBASE_CACHE/FREEZEBASE_DATAenvironment variables, and the GitHub repository all changed accordingly; there is no compatibility shim for the old names. - s3_env reuses a cached
AWSSessionper distinct S3 configuration instead of building one per call. Constructing a session resolves boto’s whole credential chain eagerly, and s3_env is entered on every raster operation, so a profile-authenticated path previously re-read the shared credentials file for every raster read and write. Refreshable STS/SSO credentials still rotate, because Rasterio re-freezes them on eachEnventry; static credentials rewritten mid-process now need clear_aws_session_cache. - make_s3_upath rejects credentials in
client_kwargs, which reach s3fs but not s3_env.