Exemple #1
0
    def test_from_function(self):
        function = lambda: None
        signature = Signature.from_function(function)
        self.assert_equal(signature.positional_arguments, [])
        self.assert_equal(signature.keyword_arguments, [])
        self.assert_equal(signature.annotations, {})
        self.assert_equal(signature.arbitary_positional_arguments, None)
        self.assert_equal(signature.arbitary_keyword_arguments, None)
        self.assert_equal(signature.defaults, {})
        self.assert_equal(signature.documentation, None)

        function = lambda a, b: None
        signature = Signature.from_function(function)
        self.assert_equal(signature.positional_arguments, ["a", "b"])

        function = lambda a=1, b=2: None
        signature = Signature.from_function(function)
        self.assert_equal(signature.positional_arguments, ["a", "b"])
        self.assert_equal(signature.keyword_arguments, [])
        self.assert_equal(signature.defaults, {"a": 1, "b": 2})

        def function():
            """Test"""

        signature = Signature.from_function(function)
        self.assert_equal(signature.documentation, "Test")
Exemple #2
0
 def decorate(function):
     signature = Signature.from_function(function)
     if not signature.annotations:
         signature.annotations = dict(zip(signature.names, positionals))
     command = type(
         function.__name__,
         (cls, ),
         {
             "__module__": function.__module__,
             "__doc__": function.__doc__
         }
     )()
     command.main = function
     cls._populate_from_signature(command, signature)
     return command
Exemple #3
0
    def test_names(self):
        def function(a, b, c=None, *args, **kwargs):
            pass

        self.assert_equal(Signature.from_function(function).names, ["a", "b", "c", "args", "kwargs"])