'The name of the application.  This is usually the import name
with the difference that it\'s guessed from the run file if the
import name is main.  This name is used as a display name when
Flask needs the name of the application.  It can be set and overridden
to change the value.
.. versionadded:: 0.8'

@locked_cached_property
def name(self):

    if (self.import_name == '__main__'):
        fn = getattr(sys.modules['__main__'], '__file__', None)
        if (fn is None):
            return '__main__'
        return os.path.splitext(os.path.basename(fn))[0]
    return self.import_name
