Skip to content

v0.25.0

Choose a tag to compare

@haalfi haalfi released this 18 May 17:43
Immutable release. Only release title and notes can be modified.
01a7227

What's Changed

Added

  • Store.list_folders(pattern=…): glob filter on folder basenames via fnmatch. Mirrors list_files(pattern=…), composes with max_depth=. Async sibling included. (ID-178)
  • SFTPUtils preflight helpers: scan_host_keys, scan_host_algorithms, enable_ssh_rsa_compat for paramiko 5+ legacy-server compatibility. HostKeyPolicy accepts enum-name aliases. (BK-197/198/199/200)
  • Azure HNS account setup guide: step-by-step az CLI recipe for provisioning an ADLS Gen2 account suitable for the live HNS test suite.

Fixed

Azure HNS correctness on real ADLS Gen2. Twelve fixes surfaced by the new Stage 3 live test suite. Azurite forgave each of these; real HNS rejected or silently corrupted state.

  • File-API data loss (data-loss fix): read/read_bytes/read_seekable/delete on a directory path now raise InvalidPath instead of returning b"" or destroying the directory marker. (BUG-197)
  • write_atomic streaming: drives the DataLake DFS append protocol directly. Closes MissingRequiredQueryParameter. (BUG-194, BUG-202)
  • Directory-vs-file error fidelity: get_file_info, is_folder, get_folder_info, delete_folder, move/copy, open_atomic, write/write_atomic all raise the canonical InvalidPath instead of wrong-type errors. (BUG-190/192/195/198/199/200/203)
  • get_folder_info("") root: no longer fails with "Please specify a file system name and file path". (BUG-213)
  • move(p, p) / copy(p, p) self-op: now a no-op (was AlreadyExists). (BUG-201)
  • Store.move/copy self-op error type: NotFoundInvalidPath when source is a directory. (BK-227)
  • Async write_atomic post-rename quirk: tolerates get_file_properties() failure on HNS. (BUG-196)

Other:

  • SFTPBackend error swallowing: connect-time PermissionError surfaces as PermissionDenied / BackendUnavailable instead of False. (BUG-211)
  • SFTPBackend inline known_host_keys on Windows: STRICT verification no longer silently bypassed. (BUG-209)
  • S3Backend.check_health(): fixed silent no-op from unawaited coroutine. (BUG-208)
  • AsyncMemoryBackend error fidelity: type-mismatched paths now raise InvalidPath matching sync sibling. (BUG-189)
  • MemoryBackend / AsyncMemoryBackend.copy(): metadata preserved on the destination (was silently dropped). (BK-192)
  • AsyncMemoryBackend metadata round-tripping through get_file_info / list_files / iter_children. (BK-176)
  • Docs fixes: benchmark SVGs, EthicalAds floating, iOS Safari graph viz. (BUG-186/187/188)

Changed

  • [sftp] extra requires paramiko>=3.0 for the channel_timeout= kwarg. paramiko 2.x floor lifted. Migration required. (BUG-204)
  • pyarrow<25 cap lifted: all extras now allow pyarrow 24.x. (BK-168, BK-172)
  • hatch run test-cov no longer enforces 95% floor: strict gate moved to hatch run test-cov-strict.

Documentation

  • aio.md leads with AsyncStore: full per-category method sections. The four members: false stubs now render their full member surface. (ID-192)
  • Async docstring ripple completed: Raises: clauses on nine I/O methods on SyncBackendAdapter. InvalidPath documented on async write paths. (BK-173, BK-174)
  • SFTPUtils rendering: helpers documented as true @staticmethod. (BK-202)
  • Migration guide: v0.24.1 → v0.25.0 section with full HNS error-type table.

Internal

  • Stage 3 live cloud test infrastructure: azure_live / azure_live_async / s3_live fixtures, BackendFixture.aclose, HTTP cassette/replay layer, live HNS integration test classes. (BK-179/180/181/184/204; BUG-182/191/193/210/212)
  • Physical fixture/backend registry SSoT: per-fixture flat-namespace and self-op flags replace identity-keyed sets. (BK-185, BK-186)
  • tests/ root cleanup: placement checks wired into CI; six BK-191 slices reshape per-backend test layout. (BK-188/189/190/215-222)
  • End-to-end S3 control-path coverage: test_s3_moto.py lifecycle in default suite catches BUG-178/185-class regressions. (BK-166)
  • Documentation framework tooling: ADR-0027 + Spec 047; universal on-disk link rule via LinkResolver. (BK-167/167a/167b/169/170/171/205; ID-175)

Links: