Releases: DazzleLib/UNCtools
Release list
v0.2.2 - WNet Drive-Map Enrichment (the V9 Fold)
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-commonsubtree and its_version.pyautobump 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-unctoolsVersion 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
pywin32only for the[windows]extra (WNet drive-map enrichment, security zones). The base package is pure-Python; the enrichment is a safe no-op whenwin32wnetis unavailable.
v0.2.0 - Probe-Not-Mutate: the L0 Identity Layer, True to Its Layer
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 explicitconvert_to_local/convert_to_uncARE 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'sget_path_typeclassifies WHAT an object is). Old name warns through 0.2.x, removed in 0.3.0.operationsmodule dissolved: probes ->detector, path algebra ->converter; warning facade through 0.2.x. Top-level imports unchanged for all surviving symbols.
Added:
dazzle-unctoolsalias dist --pip install dazzle-unctoolsinstalls this library under the DazzleLib org's uniform naming (import staysunctools); same pattern asdazzle-dz->dazzlecmddocs/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-unctoolsfrom one run)
Installation
pip install unctools # or equivalently:
pip install dazzle-unctoolsTests: 50 passed, 2 skipped, 2 xfailed. Python 3.6+ (3.9+ tested in CI). Windows full / Unix graceful no-ops.