@@ -34,13 +34,30 @@ global !p
3434NORMAL = 0x 1
3535DOXYGEN = 0x 2
3636SPHINX = 0x 3
37+ GOOGLE = 0x 4
3738
3839SINGLE_QUOTES = 0x 1
3940DOUBLE_QUOTES = 0x 2
4041
42+
43+ class Arg (object ):
44+ def __init__ (self , arg ):
45+ self .arg = arg
46+ self .name = arg.split(' =' )[0 ].strip()
47+
48+ def __str__ (self ):
49+ return self .name
50+
51+ def __unicode__ (self ):
52+ return self .name
53+
54+ def is_kwarg (self ):
55+ return ' =' in self .arg
56+
57+
4158def get_args (arglist ):
42- args = [arg.split( ' = ' )[ 0 ].strip( ) for arg in arglist.split(' ,' ) if arg]
43- args = [arg for arg in args if arg and arg != " self" ]
59+ args = [Arg(arg ) for arg in arglist.split(' ,' ) if arg]
60+ args = [arg for arg in args if arg.name != ' self' ]
4461
4562 return args
4663
@@ -61,6 +78,7 @@ def get_style(snip):
6178
6279 if style == " doxygen" : return DOXYGEN
6380 elif style == " sphinx" : return SPHINX
81+ elif style == " google" : return GOOGLE
6482 else : return NORMAL
6583
6684
@@ -71,13 +89,17 @@ def format_arg(arg, style):
7189 return " :param %s : @todo" % arg
7290 elif style == NORMAL :
7391 return " :%s : @todo" % arg
92+ elif style == GOOGLE :
93+ return " %s (@todo): @todo" % arg
7494
7595
7696def format_return (style ):
7797 if style == DOXYGEN :
7898 return " @return: @todo"
7999 elif style in (NORMAL , SPHINX ):
80100 return " :returns: @todo"
101+ elif style == GOOGLE :
102+ return " Returns: @todo"
81103
82104
83105def write_docstring_args (args , snip ):
@@ -89,8 +111,32 @@ def write_docstring_args(args, snip):
89111
90112 style = get_style(snip)
91113
92- for arg in args:
93- snip += format_arg(arg, style)
114+ if style == GOOGLE :
115+ write_google_docstring_args(args, snip)
116+ else :
117+ for arg in args:
118+ snip += format_arg(arg, style)
119+
120+
121+ def write_google_docstring_args (args , snip ):
122+ kwargs = [arg for arg in args if arg.is_kwarg()]
123+ args = [arg for arg in args if not arg.is_kwarg()]
124+
125+ if args:
126+ snip += " Args:"
127+ snip.shift()
128+ for arg in args:
129+ snip += format_arg(arg, GOOGLE )
130+ snip.unshift()
131+ snip.rv += ' \n ' + snip.mkline(' ' , indent = ' ' )
132+
133+ if kwargs:
134+ snip += " Kwargs:"
135+ snip.shift()
136+ for kwarg in kwargs:
137+ snip += format_arg(kwarg, GOOGLE )
138+ snip.unshift()
139+ snip.rv += ' \n ' + snip.mkline(' ' , indent = ' ' )
94140
95141
96142def write_init_body (args , parents , snip ):
0 commit comments