1313 $ ./validate_docstrings.py
1414 $ ./validate_docstrings.py pandas.DataFrame.head
1515"""
16-
1716from __future__ import annotations
1817
1918import argparse
7069}
7170ALL_ERRORS = set (NUMPYDOC_ERROR_MSGS ).union (set (ERROR_MSGS ))
7271duplicated_errors = set (NUMPYDOC_ERROR_MSGS ).intersection (set (ERROR_MSGS ))
73- assert not duplicated_errors , (
74- f"Errors { duplicated_errors } exist in both pandas "
75- "and numpydoc, should they be removed from pandas?"
76- )
72+ assert not duplicated_errors , (f"Errors { duplicated_errors } exist in both pandas "
73+ "and numpydoc, should they be removed from pandas?" )
7774
7875
7976def pandas_error (code , ** kwargs ):
@@ -260,7 +257,7 @@ def pandas_validate(func_name: str):
260257 pandas_error (
261258 "SA05" ,
262259 reference_name = rel_name ,
263- right_reference = rel_name [len ("pandas." ) :],
260+ right_reference = rel_name [len ("pandas." ):],
264261 )
265262 for rel_name in doc .see_also
266263 if rel_name .startswith ("pandas." )
@@ -368,18 +365,17 @@ def print_validate_all_results(
368365 for func_name , res in result .items ():
369366 error_messages = dict (res ["errors" ])
370367 actual_failures = set (error_messages )
371- expected_failures = ignore_errors .get (func_name , set ()) | ignore_errors .get (
372- None , set ()
373- )
368+ expected_failures = (ignore_errors .get (func_name , set ())
369+ | ignore_errors .get (None , set ()))
374370 for err_code in actual_failures - expected_failures :
375371 sys .stdout .write (
376- f" { prefix } { res [' file' ]} :{ res [' file_line' ]} :"
377- f" { err_code } :{ func_name } :{ error_messages [err_code ]} \n "
372+ f' { prefix } { res [" file" ]} :{ res [" file_line" ]} :'
373+ f' { err_code } :{ func_name } :{ error_messages [err_code ]} \n '
378374 )
379375 exit_status += 1
380376 for err_code in ignore_errors .get (func_name , set ()) - actual_failures :
381377 sys .stdout .write (
382- f" { prefix } { res [' file' ]} :{ res [' file_line' ]} :"
378+ f' { prefix } { res [" file" ]} :{ res [" file_line" ]} :'
383379 f"{ err_code } :{ func_name } :"
384380 "EXPECTED TO FAIL, BUT NOT FAILING\n "
385381 )
@@ -388,9 +384,8 @@ def print_validate_all_results(
388384 return exit_status
389385
390386
391- def print_validate_one_results (
392- func_name : str , ignore_errors : dict [str , set [str ]]
393- ) -> int :
387+ def print_validate_one_results (func_name : str ,
388+ ignore_errors : dict [str , set [str ]]) -> int :
394389 def header (title , width = 80 , char = "#" ) -> str :
395390 full_line = char * width
396391 side_len = (width - len (title ) - 2 ) // 2
@@ -401,18 +396,15 @@ def header(title, width=80, char="#") -> str:
401396
402397 result = pandas_validate (func_name )
403398
404- result ["errors" ] = [
405- (code , message )
406- for code , message in result ["errors" ]
407- if code not in ignore_errors .get (None , set ())
408- ]
399+ result ["errors" ] = [(code , message ) for code , message in result ["errors" ]
400+ if code not in ignore_errors .get (None , set ())]
409401
410402 sys .stderr .write (header (f"Docstring ({ func_name } )" ))
411403 sys .stderr .write (f"{ result ['docstring' ]} \n " )
412404
413405 sys .stderr .write (header ("Validation" ))
414406 if result ["errors" ]:
415- sys .stderr .write (f" { len (result [' errors' ])} Errors found for `{ func_name } `:\n " )
407+ sys .stderr .write (f' { len (result [" errors" ])} Errors found for `{ func_name } `:\n ' )
416408 for err_code , err_desc in result ["errors" ]:
417409 sys .stderr .write (f"\t { err_code } \t { err_desc } \n " )
418410 else :
@@ -439,16 +431,14 @@ def _format_ignore_errors(raw_ignore_errors):
439431 raise ValueError (
440432 f"Object `{ obj_name } ` is present in more than one "
441433 "--ignore_errors argument. Please use it once and specify "
442- "the errors separated by commas."
443- )
434+ "the errors separated by commas." )
444435 ignore_errors [obj_name ] = set (error_codes .split ("," ))
445436
446437 unknown_errors = ignore_errors [obj_name ] - ALL_ERRORS
447438 if unknown_errors :
448439 raise ValueError (
449440 f"Object `{ obj_name } ` is ignoring errors { unknown_errors } "
450- f"which are not known. Known errors are: { ALL_ERRORS } "
451- )
441+ f"which are not known. Known errors are: { ALL_ERRORS } " )
452442
453443 # global errors "PR02,ES01"
454444 else :
@@ -458,19 +448,27 @@ def _format_ignore_errors(raw_ignore_errors):
458448 if unknown_errors :
459449 raise ValueError (
460450 f"Unknown errors { unknown_errors } specified using --ignore_errors "
461- "Known errors are: {ALL_ERRORS}"
462- )
451+ "Known errors are: {ALL_ERRORS}" )
463452
464453 return ignore_errors
465454
466455
467- def main (func_name , output_format , prefix , ignore_deprecated , ignore_errors ):
456+ def main (
457+ func_name ,
458+ output_format ,
459+ prefix ,
460+ ignore_deprecated ,
461+ ignore_errors
462+ ):
468463 """
469464 Main entry point. Call the validation for one or for all docstrings.
470465 """
471466 if func_name is None :
472467 return print_validate_all_results (
473- output_format , prefix , ignore_deprecated , ignore_errors
468+ output_format ,
469+ prefix ,
470+ ignore_deprecated ,
471+ ignore_errors
474472 )
475473 else :
476474 return print_validate_one_results (func_name , ignore_errors )
@@ -526,11 +524,10 @@ def main(func_name, output_format, prefix, ignore_deprecated, ignore_errors):
526524 args = argparser .parse_args (sys .argv [1 :])
527525
528526 sys .exit (
529- main (
530- args .function ,
531- args .format ,
532- args .prefix ,
533- args .ignore_deprecated ,
534- _format_ignore_errors (args .ignore_errors ),
535- )
527+ main (args .function ,
528+ args .format ,
529+ args .prefix ,
530+ args .ignore_deprecated ,
531+ _format_ignore_errors (args .ignore_errors ),
532+ )
536533 )
0 commit comments