1313 $ ./validate_docstrings.py
1414 $ ./validate_docstrings.py pandas.DataFrame.head
1515"""
16+
1617from __future__ import annotations
1718
1819import argparse
6970}
7071ALL_ERRORS = set (NUMPYDOC_ERROR_MSGS ).union (set (ERROR_MSGS ))
7172duplicated_errors = set (NUMPYDOC_ERROR_MSGS ).intersection (set (ERROR_MSGS ))
72- assert not duplicated_errors , (f"Errors { duplicated_errors } exist in both pandas "
73- "and numpydoc, should they be removed from pandas?" )
73+ assert not duplicated_errors , (
74+ f"Errors { duplicated_errors } exist in both pandas "
75+ "and numpydoc, should they be removed from pandas?"
76+ )
7477
7578
7679def pandas_error (code , ** kwargs ):
@@ -257,7 +260,7 @@ def pandas_validate(func_name: str):
257260 pandas_error (
258261 "SA05" ,
259262 reference_name = rel_name ,
260- right_reference = rel_name [len ("pandas." ):],
263+ right_reference = rel_name [len ("pandas." ) :],
261264 )
262265 for rel_name in doc .see_also
263266 if rel_name .startswith ("pandas." )
@@ -365,17 +368,18 @@ def print_validate_all_results(
365368 for func_name , res in result .items ():
366369 error_messages = dict (res ["errors" ])
367370 actual_failures = set (error_messages )
368- expected_failures = (ignore_errors .get (func_name , set ())
369- | ignore_errors .get (None , set ()))
371+ expected_failures = ignore_errors .get (func_name , set ()) | ignore_errors .get (
372+ None , set ()
373+ )
370374 for err_code in actual_failures - expected_failures :
371375 sys .stdout .write (
372- f' { prefix } { res [" file" ]} :{ res [" file_line" ]} :'
373- f' { err_code } :{ func_name } :{ error_messages [err_code ]} \n '
376+ f" { prefix } { res [' file' ]} :{ res [' file_line' ]} :"
377+ f" { err_code } :{ func_name } :{ error_messages [err_code ]} \n "
374378 )
375379 exit_status += 1
376380 for err_code in ignore_errors .get (func_name , set ()) - actual_failures :
377381 sys .stdout .write (
378- f' { prefix } { res [" file" ]} :{ res [" file_line" ]} :'
382+ f" { prefix } { res [' file' ]} :{ res [' file_line' ]} :"
379383 f"{ err_code } :{ func_name } :"
380384 "EXPECTED TO FAIL, BUT NOT FAILING\n "
381385 )
@@ -384,8 +388,9 @@ def print_validate_all_results(
384388 return exit_status
385389
386390
387- def print_validate_one_results (func_name : str ,
388- ignore_errors : dict [str , set [str ]]) -> int :
391+ def print_validate_one_results (
392+ func_name : str , ignore_errors : dict [str , set [str ]]
393+ ) -> int :
389394 def header (title , width = 80 , char = "#" ) -> str :
390395 full_line = char * width
391396 side_len = (width - len (title ) - 2 ) // 2
@@ -396,15 +401,18 @@ def header(title, width=80, char="#") -> str:
396401
397402 result = pandas_validate (func_name )
398403
399- result ["errors" ] = [(code , message ) for code , message in result ["errors" ]
400- if code not in ignore_errors .get (None , set ())]
404+ result ["errors" ] = [
405+ (code , message )
406+ for code , message in result ["errors" ]
407+ if code not in ignore_errors .get (None , set ())
408+ ]
401409
402410 sys .stderr .write (header (f"Docstring ({ func_name } )" ))
403411 sys .stderr .write (f"{ result ['docstring' ]} \n " )
404412
405413 sys .stderr .write (header ("Validation" ))
406414 if result ["errors" ]:
407- sys .stderr .write (f' { len (result [" errors" ])} Errors found for `{ func_name } `:\n ' )
415+ sys .stderr .write (f" { len (result [' errors' ])} Errors found for `{ func_name } `:\n " )
408416 for err_code , err_desc in result ["errors" ]:
409417 sys .stderr .write (f"\t { err_code } \t { err_desc } \n " )
410418 else :
@@ -431,14 +439,16 @@ def _format_ignore_errors(raw_ignore_errors):
431439 raise ValueError (
432440 f"Object `{ obj_name } ` is present in more than one "
433441 "--ignore_errors argument. Please use it once and specify "
434- "the errors separated by commas." )
442+ "the errors separated by commas."
443+ )
435444 ignore_errors [obj_name ] = set (error_codes .split ("," ))
436445
437446 unknown_errors = ignore_errors [obj_name ] - ALL_ERRORS
438447 if unknown_errors :
439448 raise ValueError (
440449 f"Object `{ obj_name } ` is ignoring errors { unknown_errors } "
441- f"which are not known. Known errors are: { ALL_ERRORS } " )
450+ f"which are not known. Known errors are: { ALL_ERRORS } "
451+ )
442452
443453 # global errors "PR02,ES01"
444454 else :
@@ -448,27 +458,19 @@ def _format_ignore_errors(raw_ignore_errors):
448458 if unknown_errors :
449459 raise ValueError (
450460 f"Unknown errors { unknown_errors } specified using --ignore_errors "
451- "Known errors are: {ALL_ERRORS}" )
461+ "Known errors are: {ALL_ERRORS}"
462+ )
452463
453464 return ignore_errors
454465
455466
456- def main (
457- func_name ,
458- output_format ,
459- prefix ,
460- ignore_deprecated ,
461- ignore_errors
462- ):
467+ def main (func_name , output_format , prefix , ignore_deprecated , ignore_errors ):
463468 """
464469 Main entry point. Call the validation for one or for all docstrings.
465470 """
466471 if func_name is None :
467472 return print_validate_all_results (
468- output_format ,
469- prefix ,
470- ignore_deprecated ,
471- ignore_errors
473+ output_format , prefix , ignore_deprecated , ignore_errors
472474 )
473475 else :
474476 return print_validate_one_results (func_name , ignore_errors )
@@ -524,10 +526,11 @@ def main(
524526 args = argparser .parse_args (sys .argv [1 :])
525527
526528 sys .exit (
527- main (args .function ,
528- args .format ,
529- args .prefix ,
530- args .ignore_deprecated ,
531- _format_ignore_errors (args .ignore_errors ),
532- )
529+ main (
530+ args .function ,
531+ args .format ,
532+ args .prefix ,
533+ args .ignore_deprecated ,
534+ _format_ignore_errors (args .ignore_errors ),
535+ )
533536 )
0 commit comments