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 an s3:// URI into a Path or a configured UPath. It replaces the copies of this class downstream packages carried. pydantic-settings joins the s3 extra.
  • configured_endpoint_url(profile) performs botocore’s own configured endpoint lookup (AWS_ENDPOINT_URL_S3, AWS_ENDPOINT_URL, the services section, the profile’s endpoint_url, honouring ignore_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: an endpoint_url on the path, else one inside client_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 UPath and 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 sets endpoint_url sent s3fs to that gateway and GDAL to AWS; the same held for AWS_ENDPOINT_URL with 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_DIR and the HTTP retry settings). Before, a child process listed the directory of every /vsis3/ object it opened. Both builders read the new GDAL_S3_OPTIONS table, 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 checksum keyword. When True, it returns the SHA-256 of the written bytes as a multihash ("1220" + hex) instead of None.
  • subprocess_s3_env builds the S3 environment variables a child process needs to open /vsis3/ paths.
  • create_warped_vrt reprojects a raster onto a fixed target grid, and create_rgba_vrt colour-maps a raster into a 4-band VRT via per-band lookup tables.
  • build_vrt_mosaic takes a bounds keyword 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_tags and units, writing dataset-level tags, per-band tags and band unit strings. All three are keyword-only and default to None, so existing calls are unchanged.

Fixed

  • rewrite_tiff no longer loses LAYOUT: COG when 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 s3 extra now requires s3fs>=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 single glob("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. method and timeout are now named parameters and are spelled exactly as before, so calls that only used those keep working; method is restricted to "GET" and "POST". Any other requests keyword, such as params or headers, now raises TypeError instead of reaching the request. To configure the transport, for example a connection pool size, mount an adapter on HTTPDownloader.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 with anon=True and explicit key/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 AWSSession for an S3 path, and clear_aws_session_cache to discard those sessions. Prefer aws_session over constructing an AWSSession directly, 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_DATA environment variables, and the GitHub repository all changed accordingly; there is no compatibility shim for the old names.
  • s3_env reuses a cached AWSSession per 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 each Env entry; 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.