Releases: OoriData/Amara
Releases · OoriData/Amara
Release list
4.1.0: More whisking at cobwebs with the goodly besom
Added
- Files: LICENSE & CONTRIBUTING.md
amara.uxml.isxml: pure-Python XML byte-string detection heuristic (XML 1.0 Appendix F encoding autodetection), reviving the long-deadcxmlstringsymbol.from amara.uxml import isxmlnow resolves; the compiled C accelerator remains an optional shadow when builtamara.uxml.looks_like_xml(src): opt-in content classifier (accepts bytes, str, or an input source; samples and rewinds seekable streams) — the XML-aware layer built onisxml, kept separate from input-source acceptabilityamara.iri.inputsourcenamed factories.data(),.filename(),.uri(),.stream()(joining the existing.text()), so callers declare source kind explicitly instead of relying on heuristic guessinginputsource(..., detect=True)(andfactory(..., detect=True)): opt-in guessing of a string source's kind — existing file path → open, URI syntax → fetch, else literal content. Off by default; uses only I/O-layer signals (no content sniffing)
Changed
- Separated two conflated concerns: input-source acceptability (any string is valid literal content — an I/O question owned by
amara.iri.inputsource) from content classification (does it look like XML — owned byamara.uxml). The genericirilayer no longer needs the XML-specificuxmllayer;looks_like_xmlpoints the dependency the correct way (uxml → iri) - Corrected stale
amara.lib.inputsourcereferences inuxmldocstrings toamara.iri.inputsource - Packaging: added
[tool.pytest.ini_options](scopes the default run totest/, registers theintegrationmarker); aligned Python target versions to 3.12; corrected the mypy path
Fixed
iriref.__new__now raisesValueError(notNameError) on invalid IRIs; gettext_alias wired up properly iniriandirihelperiri.iri_to_uri: non-ASCII percent-encoding no longer raisesTypeError(ord()on an already-int byte)iri.os_path_to_uri/uri_to_os_path: importpathname2url/url2pathnamefromurllib.request(Py3) instead of the removedurlliblocationinputsource:urlopennow receives the IRI string (was passing theirimodule); byte inputs wrap inBytesIOinstead of failing inStringIOiridict.has_key: no longer calls the removeddict.has_keyasynctools.progress_indicator: useasyncio.all_tasks(was the removedTask.all_tasks)uxml.treeiter: per-pattern event stacks are now independent lists (was aliasing one shared list)uxml.xml.ns_expat_callbacks: fixedTypeErrorfrom passing an unknownasyncio_based_handlerkwarg to the parentuxpath: fixedancestor-or-selfinfinite loop,=node-comparison operand bug, andstring-length()(ctx.node→ctx.item)
4.0.2: …[Some of these issues are like me—] I've been here for years! Latest
Added
- IRI Part Attributes: Direct attribute access to IRI components (scheme, authority, path, query, fragment, userinfo, host, port), with caching
Fixed
- Fixed regression cases
- Improved error handling
Changed
- API cleanup and simplification
- Enhanced README documentation
- Build system and linting improvements
- Removed deprecated utility modules
4.0.1: Don't recall it a comeback…
Headline is still: Re-consolidating Amara after the various contortions over the years.
But now with a bunch of code cleanup.
4.0.0: Don't call it a comeback…
Re-consolidating Amara after the various contortions over the years.