Exemple #1
0
    def test_Function_params(self):
        mod = pdoc.Module(pdoc)
        func = pdoc.Function('f', mod, lambda a, _a, _b=None: None)
        self.assertEqual(func.params(), ['a', '_a'])

        func = pdoc.Function(
            'f', mod, lambda _ok, a, _a, *args, _b=None, c=None, _d=None: None)
        self.assertEqual(func.params(), ['_ok', 'a', '_a', '*args', 'c=None'])

        func = pdoc.Function('f', mod, lambda a, b, *, _c=1: None)
        self.assertEqual(func.params(), ['a', 'b'])

        func = pdoc.Function('f', mod, lambda a, *, b, c: None)
        self.assertEqual(func.params(), ['a', '*', 'b', 'c'])

        func = pdoc.Function('f', mod, lambda a=os.environ, b=sys.stdout: None)
        self.assertEqual(func.params(), ['a=os.environ', 'b=sys.stdout'])

        class Foo(enum.Enum):
            a, b = 1, 2

        func = pdoc.Function('f', mod, lambda a=Foo.a: None)
        self.assertEqual(func.params(), ['a=Foo.a'])

        func = pdoc.Function('f', mod, lambda a=object(): None)
        self.assertEqual(func.params(), ['a=<object object>'])

        func = pdoc.Function('f', mod, lambda a=object(): None)
        self.assertEqual(func.params(link=lambda x: ''),
                         ['a=&lt;object object&gt;'])

        # typed
        def f(a: int, *b, c: typing.List[pdoc.Doc] = []):
            pass

        func = pdoc.Function('f', mod, f)
        self.assertEqual(func.params(), ['a', '*b', "c=[]"])
        self.assertEqual(func.params(annotate=True), [
            'a:\N{NBSP}int', '*b',
            "c:\N{NBSP}List[pdoc.Doc]\N{NBSP}=\N{NBSP}[]"
        ])

        # typed, linked
        def link(dobj):
            return '<a href="{}">{}</a>'.format(dobj.url(relative_to=mod),
                                                dobj.qualname)

        self.assertEqual(func.params(annotate=True, link=link), [
            'a:\N{NBSP}int', '*b',
            "c:\N{NBSP}List[<a href=\"#pdoc.Doc\">Doc</a>]\N{NBSP}=\N{NBSP}[]"
        ])

        def bug130_str_annotation(a: "str"):
            return

        self.assertEqual(
            pdoc.Function('bug130', mod,
                          bug130_str_annotation).params(annotate=True),
            ['a:\N{NBSP}str'])
Exemple #2
0
    def test_Function_private_params(self):
        func = pdoc.Function('f', pdoc.Module(pdoc),
                             lambda a, _a, _b=None: None)
        self.assertEqual(func.params(), ['a', '_a'])

        func = pdoc.Function('f', pdoc.Module(pdoc),
                             lambda _ok, a, _a, *args, _b=None, c=None, _d=None: None)
        self.assertEqual(func.params(), ['_ok', 'a', '_a', '*args', 'c=None'])

        func = pdoc.Function('f', pdoc.Module(pdoc),
                             lambda a, b, *, _c=1: None)
        self.assertEqual(func.params(), ['a', 'b'])
Exemple #3
0
    def test_Function_return_annotation(self):
        import typing

        def f() -> typing.List[typing.Union[str, pdoc.Doc]]:
            pass

        func = pdoc.Function('f', pdoc.Module(pdoc), f)
        self.assertEqual(func.return_annotation(),
                         'List[Union[str,\N{NBSP}pdoc.Doc]]')
Exemple #4
0
    def test_to_html_refname_warning(self):
        mod = pdoc.Module(EXAMPLE_MODULE)

        def f():
            """Reference to some `example_pkg.nonexisting` object"""

        mod.doc['__f'] = pdoc.Function('__f', mod, f)
        with self.assertWarns(ReferenceWarning) as cm:
            mod.html()
        del mod.doc['__f']
        self.assertIn('example_pkg.nonexisting', cm.warning.args[0])
Exemple #5
0
    def test_Function_params(self):
        mod = pdoc.Module(pdoc)
        func = pdoc.Function('f', mod, lambda a, _a, _b=None: None)
        self.assertEqual(func.params(), ['a', '_a'])

        func = pdoc.Function(
            'f', mod, lambda _ok, a, _a, *args, _b=None, c=None, _d=None: None)
        self.assertEqual(func.params(), ['_ok', 'a', '_a', '*args', 'c=None'])

        func = pdoc.Function('f', mod, lambda a, b, *, _c=1: None)
        self.assertEqual(func.params(), ['a', 'b'])

        func = pdoc.Function('f', mod, lambda a, *, b, c: None)
        self.assertEqual(func.params(), ['a', '*', 'b', 'c'])

        func = pdoc.Function('f', mod, lambda a=os.environ: None)
        self.assertEqual(func.params(), ['a=os.environ'])

        # typed
        def f(a: int, *b, c: typing.List[pdoc.Doc] = []):
            pass

        func = pdoc.Function('f', mod, f)
        self.assertEqual(func.params(), ['a', '*b', "c=[]"])
        self.assertEqual(func.params(annotate=True), [
            'a:\N{NBSP}int', '*b',
            "c:\N{NBSP}List[pdoc.Doc]\N{NBSP}=\N{NBSP}[]"
        ])

        # typed, linked
        def link(dobj):
            return '<a href="{}">{}</a>'.format(dobj.url(relative_to=mod),
                                                dobj.qualname)

        self.assertEqual(func.params(annotate=True, link=link), [
            'a:\N{NBSP}int', '*b',
            "c:\N{NBSP}List[<a href=\"#pdoc.Doc\">Doc</a>]\N{NBSP}=\N{NBSP}[]"
        ])