# mode: run # tag: pep489 import os.path module_spec = __spec__ module_file = __file__ def check_spec(spec=__spec__): """ >>> check_spec() """ assert __spec__ is not None assert __spec__ is spec assert __name__ assert __name__ == spec.name assert spec.loader is not None assert spec.loader is __loader__ assert not spec.parent assert not __package__ assert spec.origin assert spec.origin == module_file assert spec.origin == __file__ assert os.path.basename(spec.origin).startswith(__name__) # validate that ModuleSpec is already complete at module initialisation time check_spec() check_spec(__spec__) check_spec(module_spec) def file_in_module(): """ >>> print(file_in_module()) mod__spec__ """ return os.path.basename(module_file).split('.', 1)[0] def file_in_function(): """ >>> print(file_in_function()) mod__spec__ """ return os.path.basename(__file__).split('.', 1)[0]