Index: tools/telemetry/third_party/gsutilz/third_party/pyasn1/pyasn1/type/tagmap.py |
diff --git a/tools/telemetry/third_party/gsutilz/third_party/pyasn1/pyasn1/type/tagmap.py b/tools/telemetry/third_party/gsutilz/third_party/pyasn1/pyasn1/type/tagmap.py |
new file mode 100644 |
index 0000000000000000000000000000000000000000..7cec3a10e4d894ffbee925e59193f94bc05f1ea6 |
--- /dev/null |
+++ b/tools/telemetry/third_party/gsutilz/third_party/pyasn1/pyasn1/type/tagmap.py |
@@ -0,0 +1,52 @@ |
+from pyasn1 import error |
+ |
+class TagMap: |
+ def __init__(self, posMap={}, negMap={}, defType=None): |
+ self.__posMap = posMap.copy() |
+ self.__negMap = negMap.copy() |
+ self.__defType = defType |
+ |
+ def __contains__(self, tagSet): |
+ return tagSet in self.__posMap or \ |
+ self.__defType is not None and tagSet not in self.__negMap |
+ |
+ def __getitem__(self, tagSet): |
+ if tagSet in self.__posMap: |
+ return self.__posMap[tagSet] |
+ elif tagSet in self.__negMap: |
+ raise error.PyAsn1Error('Key in negative map') |
+ elif self.__defType is not None: |
+ return self.__defType |
+ else: |
+ raise KeyError() |
+ |
+ def __repr__(self): |
+ s = '%r/%r' % (self.__posMap, self.__negMap) |
+ if self.__defType is not None: |
+ s = s + '/%r' % (self.__defType,) |
+ return s |
+ |
+ def clone(self, parentType, tagMap, uniq=False): |
+ if self.__defType is not None and tagMap.getDef() is not None: |
+ raise error.PyAsn1Error('Duplicate default value at %s' % (self,)) |
+ if tagMap.getDef() is not None: |
+ defType = tagMap.getDef() |
+ else: |
+ defType = self.__defType |
+ |
+ posMap = self.__posMap.copy() |
+ for k in tagMap.getPosMap(): |
+ if uniq and k in posMap: |
+ raise error.PyAsn1Error('Duplicate positive key %s' % (k,)) |
+ posMap[k] = parentType |
+ |
+ negMap = self.__negMap.copy() |
+ negMap.update(tagMap.getNegMap()) |
+ |
+ return self.__class__( |
+ posMap, negMap, defType, |
+ ) |
+ |
+ def getPosMap(self): return self.__posMap.copy() |
+ def getNegMap(self): return self.__negMap.copy() |
+ def getDef(self): return self.__defType |