[Python] Release 0.50.0
·
25 commits
to master
since this release
Added
CanonicalSchema.unionandCanonicalSchema.subtract.canonical.UnsupportedResult, raised where the canonical form does not support a set operation's result.canonical.IncompatibleOperandswhere both operands read#and it names a different document on each side.canonical.Containment,canonical.Satisfiability,canonical.Distinctnessandcanonical.CanonicalKind: the possible answers ofcovers(),satisfiability(),kindandArrayView.distinctness.
Changed
CanonicalSchema.is_satisfiable()is nowCanonicalSchema.satisfiability(), answering with thecanonical.SatisfiabilitymembersYES,NOorUNKNOWN-YESwherever a value can be exhibited, not only for the forms listing their members.CanonicalSchema.covers()decides through the difference as well:NOwhere the argument keeps values the receiver rejects,YESwhere nothing is left over.CanonicalSchema.is_subset_of()is nowCanonicalSchema.covers(), answering with thecanonical.ContainmentmembersYES,NOorUNKNOWNfor whether the receiver admits every value the argument admits.CanonicalSchema.kindandArrayView.distinctnessanswer with thecanonical.CanonicalKindandcanonical.Distinctnessmembers instead of strings.CanonicalSchema.negate()raises where it used to returnNone.canonical.UnmodeledOperandis nowcanonical.UnsupportedOperand, and means only that an operand is aRawpass-through.
Fixed
- Combining nodes of two different documents repointing a
$refto#at the combined result instead of the document it was written in, including one named by a definition the result keeps. - Intersecting a
$refwhose target istrueorfalse, which crashed the interpreter. - A key constraint left un-narrowed once a run is out of intersections, which crashed the interpreter on the next read of it.
CanonicalSchema.covers()answeringUNKNOWNfor a schema against itself, where that schema is a$ref.CanonicalSchema.union()keeping a$refbeside the schema it names, where the other three operations read through it.CanonicalSchema.covers()andCanonicalSchema.subtract()cancelling two nodes written the same way whose#names a different document.- Two results accepting the same values comparing unequal over the part of their documents neither reads.
additionalPropertiesreaching a key the pattern map matches when a finite key constraint closes the map, which dropped values both operands accept.- A recursive definition stopping every other pointer in the document from being read through.
- One
$defsentry read past a wider schema written out at every use, rather than kept as the pointer it was. - Set operations rejecting one document canonicalized twice, and a pruned result rejected against the document it came from, where the maps resolve every shared reference the same way.
- Set operations comparing a
$refas a pointer instead of reading through it, so a schema written with a$refdid not cancel against the same schema written out. CanonicalSchema.subtract()asking for a complement where the difference is one of the operands or empty, declining on schemas it can subtract.- Set operations keeping
$defsentries the result no longer references, which then showed up in the emitted schema. CanonicalSchema.union()declining over an approximated intersection, where the union itself is exact.