code: def source_file_name(self):
          
          try:
              fname = inspect.getsourcefile(self.code_obj)
          except TypeError:
              # In some cases the object is something complex like a cython
              # object that can't be easily introspected. An it's better to
              # return the source code file of the object as None, than crash
              pass
          else:
              if fname:
                  fname = os.path.relpath(fname, BASE_PATH)
                  return fname
docs: File name where the object is implemented (e.g. pandas/core/frame.py).