Home > Mobile >  Listing all possible OSErrors in Python's Stdlib
Listing all possible OSErrors in Python's Stdlib

Time:08-11

I would like to list all the functions and methods in the Python standard library that could throw an OSError. Do you know of a way to find that out per python version?

I thought about running an AST on the C code, but I wonder if there is a simpler way (maybe dynamically).

CodePudding user response:

Enumerate the contents of the target module, use inspect to filter for classes, and then test if OSError is part of the base class list:

import inspect

module = globals()['__builtins__']

for name, value in module.__dict__.items():
    if inspect.isclass(value) and OSError in value.__bases__:
        print(name)

CodePudding user response:

I will tell you hard/Ugly process

  1. Import 'library` that you want to analyze

  2. use inspect library to get source code of the particular library like

     import re
    
     import inspect
    
     lines = inspect.getsource(re)
    
     print(lines)
    

runing type(lines) ---> output: str

so we can apply some thing like regurlar expressions? to hunt that keyword aka os error...

To list all the fun inside program

import re
re.findall('def (. ?)\s?\(', lines)

output

['__repr__',
 'match',
 'fullmatch',
 'search',
 'sub',
 'subn',
 'split',
 'findall',
 'finditer',
 'compile',
 'purge',
 'template',
 'escape',
 '_compile',
 '_compile_repl',
 '_expand',
 '_subx',
 'filter',
 '_pickle',
 '__init__',
 'scan']

 

to get all the errors inside the programs

re.findall('raise (. ?)\s?\(', lines)

output

['ValueError', 'TypeError']

still program is not finished...Next steps you need to implement is

using Regx you need to find text between 2 keywords in our case def & os error (you have to do it)....It will spit out some text...

def name():
    some code
    some code
    raise error()
    return

After the extracting text between keywords output will be something like

#output str after applying `re`
     name():
          some code
          some code
          raise error(

From the output just print the text before ( using regex as program pattern gives function name with particular error you looking for

  • Related