Actualizacion maquina principal
[dotfiles/.git] / .config / coc / extensions / node_modules / coc-python / pythonFiles / testing_tools / adapter / info.py
diff --git a/.config/coc/extensions/node_modules/coc-python/pythonFiles/testing_tools/adapter/info.py b/.config/coc/extensions/node_modules/coc-python/pythonFiles/testing_tools/adapter/info.py
new file mode 100644 (file)
index 0000000..c9c1457
--- /dev/null
@@ -0,0 +1,114 @@
+# Copyright (c) Microsoft Corporation. All rights reserved.
+# Licensed under the MIT License.
+
+from collections import namedtuple
+
+
+class TestPath(namedtuple('TestPath', 'root relfile func sub')):
+    """Where to find a single test."""
+
+    def __new__(cls, root, relfile, func, sub=None):
+        self = super(TestPath, cls).__new__(
+                cls,
+                str(root) if root else None,
+                str(relfile) if relfile else None,
+                str(func) if func else None,
+                [str(s) for s in sub] if sub else None,
+                )
+        return self
+
+    def __init__(self, *args, **kwargs):
+        if self.root is None:
+            raise TypeError('missing id')
+        if self.relfile is None:
+            raise TypeError('missing kind')
+        # self.func may be None (e.g. for doctests).
+        # self.sub may be None.
+
+
+class ParentInfo(namedtuple('ParentInfo', 'id kind name root parentid')):
+
+    KINDS = ('folder', 'file', 'suite', 'function', 'subtest')
+
+    def __new__(cls, id, kind, name, root=None, parentid=None):
+        self = super(ParentInfo, cls).__new__(
+                cls,
+                str(id) if id else None,
+                str(kind) if kind else None,
+                str(name) if name else None,
+                str(root) if root else None,
+                str(parentid) if parentid else None,
+                )
+        return self
+
+    def __init__(self, *args, **kwargs):
+        if self.id is None:
+            raise TypeError('missing id')
+        if self.kind is None:
+            raise TypeError('missing kind')
+        if self.kind not in self.KINDS:
+            raise ValueError('unsupported kind {!r}'.format(self.kind))
+        if self.name is None:
+            raise TypeError('missing name')
+        if self.root is None:
+            if self.parentid is not None or self.kind != 'folder':
+                raise TypeError('missing root')
+        elif self.parentid is None:
+            raise TypeError('missing parentid')
+
+
+class TestInfo(namedtuple('TestInfo', 'id name path source markers parentid kind')):
+    """Info for a single test."""
+
+    MARKERS = ('skip', 'skip-if', 'expected-failure')
+    KINDS = ('function', 'doctest')
+
+    def __new__(cls, id, name, path, source, markers, parentid, kind='function'):
+        self = super(TestInfo, cls).__new__(
+                cls,
+                str(id) if id else None,
+                str(name) if name else None,
+                path or None,
+                str(source) if source else None,
+                [str(marker) for marker in markers or ()],
+                str(parentid) if parentid else None,
+                str(kind) if kind else None,
+                )
+        return self
+
+    def __init__(self, *args, **kwargs):
+        if self.id is None:
+            raise TypeError('missing id')
+        if self.name is None:
+            raise TypeError('missing name')
+        if self.path is None:
+            raise TypeError('missing path')
+        if self.source is None:
+            raise TypeError('missing source')
+        else:
+            srcfile, _, lineno = self.source.rpartition(':')
+            if not srcfile or not lineno or int(lineno) < 0:
+                raise ValueError('bad source {!r}'.format(self.source))
+        if self.markers:
+            badmarkers = [m for m in self.markers if m not in self.MARKERS]
+            if badmarkers:
+                raise ValueError('unsupported markers {!r}'.format(badmarkers))
+        if self.parentid is None:
+            raise TypeError('missing parentid')
+        if self.kind is None:
+            raise TypeError('missing kind')
+        elif self.kind not in self.KINDS:
+            raise ValueError('unsupported kind {!r}'.format(self.kind))
+
+
+    @property
+    def root(self):
+        return self.path.root
+
+    @property
+    def srcfile(self):
+        return self.source.rpartition(':')[0]
+
+    @property
+    def lineno(self):
+        return int(self.source.rpartition(':')[-1])