Age | Commit message (Collapse) | Author |
|
|
|
|
|
Added `WithComponentsConstraint` along with related
`ComponentPresentConstraint` and `ComponentAbsentConstraint` classes
to be used with `Sequence`/`Set` types representing
`SET ... WITH COMPONENTS ...` like ASN.1 constructs.
|
|
This commit deprecates `subtypeSpec` attributes and keyword argument.
It is now recommended to pass `ValueSizeConstraint`, as well as all
other constraints, to `subtypeSpec`.
By way of the change mentioned above, this commit fixes a design bug
in a way of how the items assigned to constructed types are verified.
Now if `Asn1Type`-based object is assigned, its compatibility is
verified based on having all tags and constraint objects as the type
in field definition. When a bare Python value is assigned, then field
type object is cloned and initialized with the bare value (constraints
verificaton would run at this moment).
|
|
Added `isInconsistent` property to all constructed types. This property
conceptually replaces `verifySizeSpec` method to serve a more general
purpose e.g. ensuring all required fields are in a good shape. By
default this check invokes subtype constraints verification and is run
by codecs on value de/serialisation.
|
|
|
|
|
|
|
|
Also many fixes here and there to docs and docstrings.
|
|
|
|
It seems to clutter representation printout, especially in the
rendered docs.
|
|
Also fix references to exception objects in other docstrings.
|
|
|
|
|
|
This change adds more explanations and examples on ASN.1 ANY
DEFINED BY syntax (OpenType).
|
|
For example:
AttributeTypeAndValues ::= SEQUENCE {
type OBJECT IDENTIFIER,
values SET OF ANY DEFINED BY type
}
This patch adds support of the above ASN.1 syntax to BER/DER/CER
codecs.
It appears that to implement this feature properly, `SetOf`/`SequenceOf`
pyasn1 types need to have `.componentType` wrapped into something
similar to `NamedType` that `Set`/`Sequence` have. That additional
layer would then carry the open type meta information. Without it,
`Sequence`/`Set` codec needs to signal `SetOf`/`SequenceOf` codec
of the open type being processed, which is a slight hack.
A other inconvenience is that when `SetOf`/`SequenceOf` deal with
an open type component, they should not verify types on component
assignment. Without open type property in `SetOf`/`SequenceOf`,
the code checks for `Any` component type which is another hack.
The above shortcomings should be addressed in the follow up patch.
|
|
The new exception classes names are `PyAsn1UnicodeDecodeError`
and `PyAsn1UnicodeEncodeError`.
Also, unit tests added.
|
|
This change helps telling unicode-related exceptions from other PyAsn1Error exceptions.
|
|
* Add `omitEmptyOptionals` encoder option
Added `omitEmptyOptionals` option which is respected by `Sequence`
and `Set` encoders. When `omitEmptyOptionals` is set to `True`, empty
initialized optional components are not encoded. Default is `False`.
* Change `SequenceOf`/`SetOf` behaviour
- New elements to `SequenceOf`/`SetOf` objects can now be added at any
position - the requirement for the new elements to reside at the end
of the existing ones (i.e. s[len(s)] = 123) is removed.
- Removed default initializer from `SequenceOf`/`SetOf` types to ensure
consistent behaviour with the rest of ASN.1 types. Before this change,
`SequenceOf`/`SetOf` instances immediately become value objects
behaving like an empty list. With this change, `SequenceOf`/`SetOf`
objects remain schema objects unless a component is added or
`.clear()` is called.
- Added `.reset()` method to all constructed types to turn value object
into a schema object.
|
|
(#161)
|
|
Also extend copyright to the year 2019
|
|
When SEQUENCE has defaulted component of constructed type,
recursively instantiate defaulted component and assign instantiated
asn1 object to SEQUENCE field.
|
|
|
|
When calling `.prettyPrint()` on Sequence/Set components,
make sure the component is a value object (not schema)
because calling `.prettyPrint` on a schema object is
likely to fail.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
* __str__() of ASN.1 types reworked to serve instead of .prettyPrint()
Related changes: `str()` on enumerations and boolean will return
a string label rather than a number.
|
|
At the same time __repr__() stopped being eval()-compliant
|
|
* `default` kwarg added to .getComponentBy*() methods
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
* do not blow up on pickle protocol attributes look up
* added Pickle tests
* More fixes to pickle protocol support
* __slots__ lookup allowed at NoValue
* SizedInteger moved from BitString scope to the univ module scope
|
|
|
|
|
|
* minor fixes to RsT docstrings
* more explanations in the docs, better linkage
* cosmetic fixes to NamedValues() docstring
|
|
* the `instantiate=True` parameter added to constructed types .getComponentBy*()
* Choice.clear() fixed to fully reset its internal state
|
|
* rearranged `.clone()` and `.subtype()` docstrings
* legacy Asn1ItemBase.prettyPrinter() method removed
|
|
* `None` legacy initializer support removed
* Default value for `Null` removed
|
|
|
|
Docs rearranged, simplified and reworded, Sphinx theme changed.
|