Skip to content

Releases: DazzleLib/UNCtools

v0.2.2 - WNet Drive-Map Enrichment (the V9 Fold)

Choose a tag to compare

@djdarcy djdarcy released this 19 Jun 15:08
v0.2.2
32b01ad

UNCtools v0.2.2

UNCtools is the L0 path-identity layer of the DazzleLib stack: it answers "what is this path's name?" — UNC ↔ mapped-drive conversion, drive-origin classification, and network/zone probing — and it probes the filesystem read-only; it never mutates or transfers content.

This is the first PyPI release since v0.2.0. It rolls up the internal 0.2.1 build/test work (never released on its own) plus the 0.2.2 drive-map enrichment.

What's New

Drive-map enrichment via WNetGetUniversalName (0.2.2)

UNCConverter.refresh_mappings() now runs an additive pass after the SMB net-use scan. win32wnet.WNetGetUniversalName (the WNet Multiple Provider Router) resolves drives the LanmanWorkstation net-use table (NetUseEnum / net use) can miss — those served by non-SMB / third-party network providers, and some DFS/reconnect cases. It only adds drives not already mapped (authoritative net-use entries are never overwritten) and normalizes results to the module's conventions.

This folds in the provider-chain coverage previously held by dazzle-filekit's get_drive_mappings, which was removed in filekit 0.3.0 (DazzleLib stack V9) — so no coverage was lost in the consolidation. Use unctools.converter.get_mappings() (UNC→drive) or unctools.converter.UNCConverter().get_reverse_mappings() (drive→UNC).

Prerequisite to dazzle-filekit 0.3.0, which pins unctools>=0.2.2.

Build & maintenance (rolled up from 0.2.1)

  • Adopted the git-repokit-common subtree and its _version.py autobump versioning scheme — git hooks auto-stamp build metadata on commit.
  • Repaired 5 stale merge-conflict regions in .gitignore (union-merged, no ignore patterns dropped).
  • Modernized the legacy custom-framework tests off the deprecated API; the version-consistency test is now version-agnostic (a bump no longer requires editing the test).
  • Documented git-hook installation in CONTRIBUTING.md.

Installation

pip install unctools           # core (pure-Python)
pip install unctools[windows]  # + pywin32-backed Windows extras (WNet, zones, ...)

# Or via the org's uniform name (codeless pointer dist; same library, import is `unctools`):
pip install dazzle-unctools

Version History (0.2.x)

Version Key Change
v0.2.2 Current — WNetGetUniversalName drive-map enrichment (V9 fold); rolls up the 0.2.1 build/test work
v0.2.1 (no GitHub release) — git-repokit-common autobump subtree, .gitignore repair, test modernization
v0.2.0 Probe-not-mutate — the L0 identity layer, content-I/O wrappers removed, classify_path_origin rename, dazzle-unctools alias dist

Platform Support

Platform Status
Windows 10 / 11 Tested (the WNet enrichment is Windows-only; gracefully no-ops without win32wnet)
Linux / macOS Tested (pure-Python base; Windows-specific probes no-op)

Requirements

  • Python >= 3.6
  • pywin32 only for the [windows] extra (WNet drive-map enrichment, security zones). The base package is pure-Python; the enrichment is a safe no-op when win32wnet is unavailable.

v0.2.0 - Probe-Not-Mutate: the L0 Identity Layer, True to Its Layer

Choose a tag to compare

@djdarcy djdarcy released this 12 Jun 17:53
v0.2.0
e988362

UNCtools v0.2.0

Windows UNC path handling and network drive utilities -- the L0 path-identity layer of the DazzleLib stack: it may probe the filesystem read-only to answer identity questions ("is this UNC / network / subst / local -- and what is its other name?"); it never mutates or transfers content.

The probe-not-mutate release (stack phase P1, #3)

Removed (breaking):

  • Content-I/O wrappers (safe_open, safe_copy, batch_copy, process_files, replace_in_file, batch_replace_in_files) -- file I/O has no home in the identity layer; zero external consumers (verified by the stack audit)
  • normalize_path(prefer_unc=) -- the explicit convert_to_local / convert_to_unc ARE the API
  • Internal case-sensitivity helpers (never exported; merging into dazzle-filekit)

Changed:

  • get_path_type -> classify_path_origin (it classifies WHERE a path comes from; dazzle-filekit's get_path_type classifies WHAT an object is). Old name warns through 0.2.x, removed in 0.3.0.
  • operations module dissolved: probes -> detector, path algebra -> converter; warning facade through 0.2.x. Top-level imports unchanged for all surviving symbols.

Added:

  • dazzle-unctools alias dist -- pip install dazzle-unctools installs this library under the DazzleLib org's uniform naming (import stays unctools); same pattern as dazzle-dz -> dazzlecmd
  • docs/api-stability.md + an import-stability canary: the public surface is locked and machine-checked from this release on
  • CHANGELOG; release workflow converted to PyPI trusted publishing (dual-publish: unctools + dazzle-unctools from one run)

Installation

pip install unctools          # or equivalently:
pip install dazzle-unctools

Tests: 50 passed, 2 skipped, 2 xfailed. Python 3.6+ (3.9+ tested in CI). Windows full / Unix graceful no-ops.