cdcailf/cjkfold is a Python library that folds and normalizes the glyphs mixed into text extracted from PDFs that look almost exactly like real kanji (Kangxi radicals, CJK Radicals Supplement characters), so that the text matches again. v0.4.0 was released on 2026-10-15 with commit 671ab91, and contains nothing but a name cleanup, with no new features. The folding-family functions moved from the cjkfold.normalize module to cjkfold.folding, and the two writing functions moved to cjkfold.rewrite.
The cause was a name conflict. In Python, `import a.b as c` puts the module a.b into c. Since the normalize module and the normalize function used the same name, one of the two lost its place, and in fact `import cjkfold.normalize as m` handed over the function instead of the module. So calling m.fold raised an AttributeError. Now the names are split: cjkfold.normalize is the function, and cjkfold.folding is the module.
The behavior of the functions is unchanged. The documented `from cjkfold import fold, normalize, strip_invisible` works exactly as before, and the changelog states that the tests in tests/ are the contract and that the equivalence table is generated rather than edited by hand. An import path check was added to scripts/acceptance.py.
Instead, paths that pulled functions straight out of the module, such as `from cjkfold.normalize import fold`, are cut off. That path was never in the documentation, and it changes from the previous AttributeError to ModuleNotFoundError. This commit adds nothing but 26 lines to CHANGELOG.md, and the actual code move is in the commit af57ad7 that the changelog references. There are no new features and no folding accuracy figures either, so this version is close to a structural fix that puts the names right. Code that uses only the documented imports is unaffected, and only code that specified module paths directly needs to be checked.