5
5
"""
6
6
import re
7
7
8
+ supports_ignore_inline_noqa = False
9
+ supports_property_decorators = False
10
+ supports_ignore_self_only_init = False
8
11
try :
9
12
import pydocstyle as pep257
10
13
11
14
module_name = "pydocstyle"
15
+
16
+ pydocstyle_version = tuple (int (num ) for num in pep257 .__version__ .split ("." ))
17
+ supports_ignore_inline_noqa = pydocstyle_version > (5 , 1 , 1 )
18
+ supports_property_decorators = pydocstyle_version >= (6 , 2 , 0 )
19
+ supports_ignore_self_only_init = pydocstyle_version >= (6 , 3 , 0 )
12
20
except ImportError :
13
21
import pep257
14
22
@@ -94,6 +102,31 @@ def add_options(cls, parser):
94
102
),
95
103
)
96
104
105
+ if supports_property_decorators :
106
+ from pydocstyle .config import ConfigurationParser
107
+
108
+ default_property_decorators = ConfigurationParser .DEFAULT_PROPERTY_DECORATORS
109
+ parser .add_option (
110
+ "--property-decorators" ,
111
+ action = "store" ,
112
+ parse_from_config = True ,
113
+ default = default_property_decorators ,
114
+ help = (
115
+ "consider any method decorated with one of these "
116
+ "decorators as a property, and consequently allow "
117
+ "a docstring which is not in imperative mood; default "
118
+ f"is --property-decorators='{ default_property_decorators } '"
119
+ ),
120
+ )
121
+
122
+ if supports_ignore_self_only_init :
123
+ parser .add_option (
124
+ "--ignore-self-only-init" ,
125
+ action = "store_true" ,
126
+ parse_from_config = True ,
127
+ help = "ignore __init__ methods which only have a self param." ,
128
+ )
129
+
97
130
@classmethod
98
131
def parse_options (cls , options ):
99
132
"""Parse the configuration options given to flake8."""
@@ -103,21 +136,30 @@ def parse_options(cls, options):
103
136
if options .ignore_decorators
104
137
else None
105
138
)
139
+ if supports_property_decorators :
140
+ cls .property_decorators = options .property_decorators
141
+ if supports_ignore_self_only_init :
142
+ cls .ignore_self_only_init = options .ignore_self_only_init
106
143
107
144
def _call_check_source (self ):
108
- try :
109
- return self .checker .check_source (
110
- self .source ,
111
- self .filename ,
112
- ignore_decorators = self .ignore_decorators ,
113
- ignore_inline_noqa = True ,
114
- )
115
- except TypeError : # for versions of pydocstyle 5.1.1 and below
116
- return self .checker .check_source (
117
- self .source ,
118
- self .filename ,
119
- ignore_decorators = self .ignore_decorators ,
145
+ check_source_kwargs = {}
146
+ if supports_ignore_inline_noqa :
147
+ check_source_kwargs ["ignore_inline_noqa" ] = True
148
+ if supports_property_decorators :
149
+ check_source_kwargs ["property_decorators" ] = (
150
+ set (self .property_decorators .split ("," ))
151
+ if self .property_decorators
152
+ else None
120
153
)
154
+ if supports_ignore_self_only_init :
155
+ check_source_kwargs ["ignore_self_only_init" ] = self .ignore_self_only_init
156
+
157
+ return self .checker .check_source (
158
+ self .source ,
159
+ self .filename ,
160
+ ignore_decorators = self .ignore_decorators ,
161
+ ** check_source_kwargs
162
+ )
121
163
122
164
def _check_source (self ):
123
165
try :
0 commit comments