Index: tools/telemetry/third_party/gsutil/third_party/pyasn1/doc/constructed.html |
diff --git a/tools/telemetry/third_party/gsutil/third_party/pyasn1/doc/constructed.html b/tools/telemetry/third_party/gsutil/third_party/pyasn1/doc/constructed.html |
deleted file mode 100644 |
index 88de750758a5301030c7392faae2881cf44c8382..0000000000000000000000000000000000000000 |
--- a/tools/telemetry/third_party/gsutil/third_party/pyasn1/doc/constructed.html |
+++ /dev/null |
@@ -1,377 +0,0 @@ |
-<html> |
-<title> |
-PyASN1 Constructed types |
-</title> |
-<head> |
-</head> |
-<body> |
-<center> |
-<table width=60%> |
-<tr> |
-<td> |
- |
-<h4> |
-1.3 PyASN1 Constructed types |
-</h4> |
- |
-<p> |
-Besides scalar types, ASN.1 specifies so-called constructed ones - these |
-are capable of holding one or more values of other types, both scalar |
-and constructed. |
-</p> |
- |
-<p> |
-In pyasn1 implementation, constructed ASN.1 types behave like |
-Python sequences, and also support additional component addressing methods, |
-specific to particular constructed type. |
-</p> |
- |
-<a name="1.3.1"></a> |
-<h4> |
-1.3.1 Sequence and Set types |
-</h4> |
- |
-<p> |
-The Sequence and Set types have many similar properties: |
-</p> |
-<ul> |
-<li>they can hold any number of inner components of different types |
-<li>every component has a human-friendly identifier |
-<li>any component can have a default value |
-<li>some components can be absent. |
-</ul> |
- |
-<p> |
-However, Sequence type guarantees the ordering of Sequence value components |
-to match their declaration order. By contrast, components of the |
-Set type can be ordered to best suite application's needs. |
-<p> |
- |
-<table bgcolor="lightgray" border=0 width=100%><TR><TD> |
-<pre> |
-Record ::= SEQUENCE { |
- id INTEGER, |
- room [0] INTEGER OPTIONAL, |
- house [1] INTEGER DEFAULT 0 |
-} |
-</pre> |
-</td></tr></table> |
- |
-<p> |
-Up to this moment, the only method we used for creating new pyasn1 types |
-is Python sub-classing. With this method, a new, named Python class is created |
-what mimics type derivation in ASN.1 grammar. However, ASN.1 also allows for |
-defining anonymous subtypes (room and house components in the example above). |
-To support anonymous subtyping in pyasn1, a cloning operation on an existing |
-pyasn1 type object can be invoked what creates a new instance of original |
-object with possibly modified properties. |
-</p> |
- |
-<table bgcolor="lightgray" border=0 width=100%><TR><TD> |
-<pre> |
->>> from pyasn1.type import univ, namedtype, tag |
->>> class Record(univ.Sequence): |
-... componentType = namedtype.NamedTypes( |
-... namedtype.NamedType('id', univ.Integer()), |
-... namedtype.OptionalNamedType( |
-... 'room', |
-... univ.Integer().subtype( |
-... implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 0) |
-... ) |
-... ), |
-... namedtype.DefaultedNamedType( |
-... 'house', |
-... univ.Integer(0).subtype( |
-... implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 1) |
-... ) |
-... ) |
-... ) |
->>> |
-</pre> |
-</td></tr></table> |
- |
-<p> |
-All pyasn1 constructed type classes have a class attribute <b>componentType</b> |
-that represent default type specification. Its value is a NamedTypes object. |
-</p> |
- |
-<p> |
-The NamedTypes class instance holds a sequence of NameType, OptionalNamedType |
-or DefaultedNamedType objects which, in turn, refer to pyasn1 type objects that |
-represent inner SEQUENCE components specification. |
-</p> |
- |
-<p> |
-Finally, invocation of a subtype() method of pyasn1 type objects in the code |
-above returns an implicitly tagged copy of original object. |
-</p> |
- |
-<p> |
-Once a SEQUENCE or SET type is decleared with pyasn1, it can be instantiated |
-and initialized (continuing the above code): |
-</p> |
- |
-<table bgcolor="lightgray" border=0 width=100%><TR><TD> |
-<pre> |
->>> record = Record() |
->>> record.setComponentByName('id', 123) |
->>> print(record.prettyPrint()) |
-Record: |
- id=123 |
->>> |
->>> record.setComponentByPosition(1, 321) |
->>> print(record.prettyPrint()) |
-Record: |
- id=123 |
- room=321 |
->>> |
->>> record.setDefaultComponents() |
->>> print(record.prettyPrint()) |
-Record: |
- id=123 |
- room=321 |
- house=0 |
-</pre> |
-</td></tr></table> |
- |
-<p> |
-Inner components of pyasn1 Sequence/Set objects could be accessed using the |
-following methods: |
-</p> |
- |
-<table bgcolor="lightgray" border=0 width=100%><TR><TD> |
-<pre> |
->>> record.getComponentByName('id') |
-Integer(123) |
->>> record.getComponentByPosition(1) |
-Integer(321) |
->>> record[2] |
-Integer(0) |
->>> for idx in range(len(record)): |
-... print(record.getNameByPosition(idx), record.getComponentByPosition(idx)) |
-id 123 |
-room 321 |
-house 0 |
->>> |
-</pre> |
-</td></tr></table> |
- |
-<p> |
-The Set type share all the properties of Sequence type, and additionally |
-support by-tag component addressing (as all Set components have distinct |
-types). |
-</p> |
- |
-<table bgcolor="lightgray" border=0 width=100%><TR><TD> |
-<pre> |
->>> from pyasn1.type import univ, namedtype, tag |
->>> class Gamer(univ.Set): |
-... componentType = namedtype.NamedTypes( |
-... namedtype.NamedType('score', univ.Integer()), |
-... namedtype.NamedType('player', univ.OctetString()), |
-... namedtype.NamedType('id', univ.ObjectIdentifier()) |
-... ) |
->>> gamer = Gamer() |
->>> gamer.setComponentByType(univ.Integer().getTagSet(), 121343) |
->>> gamer.setComponentByType(univ.OctetString().getTagSet(), 'Pascal') |
->>> gamer.setComponentByType(univ.ObjectIdentifier().getTagSet(), (1,3,7,2)) |
->>> print(gamer.prettyPrint()) |
-Gamer: |
- score=121343 |
- player=b'Pascal' |
- id=1.3.7.2 |
->>> |
-</pre> |
-</td></tr></table> |
- |
-<a name="1.3.2"></a> |
-<h4> |
-1.3.2 SequenceOf and SetOf types |
-</h4> |
- |
-<p> |
-Both, SequenceOf and SetOf types resemble an unlimited size list of components. |
-All the components must be of the same type. |
-</p> |
- |
-<table bgcolor="lightgray" border=0 width=100%><TR><TD> |
-<pre> |
-Progression ::= SEQUENCE OF INTEGER |
- |
-arithmeticProgression Progression ::= { 1, 3, 5, 7 } |
-</pre> |
-</td></tr></table> |
- |
-<p> |
-SequenceOf and SetOf types are expressed by the very similar pyasn1 type |
-objects. Their components can only be addressed by position and they |
-both have a property of automatic resize. |
-</p> |
- |
-<p> |
-To specify inner component type, the <b>componentType</b> class attribute |
-should refer to another pyasn1 type object. |
-</p> |
- |
-<table bgcolor="lightgray" border=0 width=100%><TR><TD> |
-<pre> |
->>> from pyasn1.type import univ |
->>> class Progression(univ.SequenceOf): |
-... componentType = univ.Integer() |
->>> arithmeticProgression = Progression() |
->>> arithmeticProgression.setComponentByPosition(1, 111) |
->>> print(arithmeticProgression.prettyPrint()) |
-Progression: |
--empty- 111 |
->>> arithmeticProgression.setComponentByPosition(0, 100) |
->>> print(arithmeticProgression.prettyPrint()) |
-Progression: |
-100 111 |
->>> |
->>> for idx in range(len(arithmeticProgression)): |
-... arithmeticProgression.getComponentByPosition(idx) |
-Integer(100) |
-Integer(111) |
->>> |
-</pre> |
-</td></tr></table> |
- |
-<p> |
-Any scalar or constructed pyasn1 type object can serve as an inner component. |
-Missing components are prohibited in SequenceOf/SetOf value objects. |
-</p> |
- |
-<a name="1.3.3"></a> |
-<h4> |
-1.3.3 Choice type |
-</h4> |
- |
-<p> |
-Values of ASN.1 CHOICE type can contain only a single value of a type from a |
-list of possible alternatives. Alternatives must be ASN.1 types with |
-distinct tags for the whole structure to remain unambiguous. Unlike most |
-other types, CHOICE is an untagged one, e.g. it has no base tag of its own. |
-</p> |
- |
-<table bgcolor="lightgray" border=0 width=100%><TR><TD> |
-<pre> |
-CodeOrMessage ::= CHOICE { |
- code INTEGER, |
- message OCTET STRING |
-} |
-</pre> |
-</td></tr></table> |
- |
-<p> |
-In pyasn1 implementation, Choice object behaves like Set but accepts only |
-a single inner component at a time. It also offers a few additional methods |
-specific to its behaviour. |
-</p> |
- |
-<table bgcolor="lightgray" border=0 width=100%><TR><TD> |
-<pre> |
->>> from pyasn1.type import univ, namedtype |
->>> class CodeOrMessage(univ.Choice): |
-... componentType = namedtype.NamedTypes( |
-... namedtype.NamedType('code', univ.Integer()), |
-... namedtype.NamedType('message', univ.OctetString()) |
-... ) |
->>> |
->>> codeOrMessage = CodeOrMessage() |
->>> print(codeOrMessage.prettyPrint()) |
-CodeOrMessage: |
->>> codeOrMessage.setComponentByName('code', 123) |
->>> print(codeOrMessage.prettyPrint()) |
-CodeOrMessage: |
- code=123 |
->>> codeOrMessage.setComponentByName('message', 'my string value') |
->>> print(codeOrMessage.prettyPrint()) |
-CodeOrMessage: |
- message=b'my string value' |
->>> |
-</pre> |
-</td></tr></table> |
- |
-<p> |
-Since there could be only a single inner component value in the pyasn1 Choice |
-value object, either of the following methods could be used for fetching it |
-(continuing previous code): |
-</p> |
- |
-<table bgcolor="lightgray" border=0 width=100%><TR><TD> |
-<pre> |
->>> codeOrMessage.getName() |
-'message' |
->>> codeOrMessage.getComponent() |
-OctetString(b'my string value') |
->>> |
-</pre> |
-</td></tr></table> |
- |
-<a name="1.3.4"></a> |
-<h4> |
-1.3.4 Any type |
-</h4> |
- |
-<p> |
-The ASN.1 ANY type is a kind of wildcard or placeholder that matches |
-any other type without knowing it in advance. Like CHOICE type, ANY |
-has no base tag. |
-</p> |
- |
-<table bgcolor="lightgray" border=0 width=100%><TR><TD> |
-<pre> |
-Error ::= SEQUENCE { |
- code INTEGER, |
- parameter ANY DEFINED BY code |
-} |
-</pre> |
-</td></tr></table> |
- |
-<p> |
-The ANY type is frequently used in specifications, where exact type is not |
-yet agreed upon between communicating parties or the number of possible |
-alternatives of a type is infinite. |
-Sometimes an auxiliary selector is kept around to help parties indicate |
-the kind of ANY payload in effect ("code" in the example above). |
-</p> |
- |
-<p> |
-Values of the ANY type contain serialized ASN.1 value(s) in form of |
-an octet string. Therefore pyasn1 Any value object share the properties of |
-pyasn1 OctetString object. |
-</p> |
- |
-<table bgcolor="lightgray" border=0 width=100%><TR><TD> |
-<pre> |
->>> from pyasn1.type import univ |
->>> someValue = univ.Any(b'\x02\x01\x01') |
->>> someValue |
-Any(b'\x02\x01\x01') |
->>> str(someValue) |
-'\x02\x01\x01' |
->>> bytes(someValue) |
-b'\x02\x01\x01' |
->>> |
-</pre> |
-</td></tr></table> |
- |
-<p> |
-Receiving application is supposed to explicitly deserialize the content of Any |
-value object, possibly using auxiliary selector for figuring out its ASN.1 |
-type to pick appropriate decoder. |
-</p> |
- |
-<p> |
-There will be some more talk and code snippets covering Any type in the codecs |
-chapters that follow. |
-</p> |
- |
-<hr> |
- |
-</td> |
-</tr> |
-</table> |
-</center> |
-</body> |
-</html> |