o 0¦i– ã@sêddlZddlZddlZddlZddlZddlZddlZddlmZm Z m Z ddl m Z m Z ddlmZeejefZdd„Zdd „Zd d „Zd d „Zdd„Zdd„Zejdejdœdd„ƒZejdd„ƒZe ej¡ejdd„ƒƒZ dS)éN)ÚUnionÚAnyÚOptionalé)ÚResourceReaderÚ Traversable)Ú wrap_speccCs tt|ƒƒS)z3 Get a Traversable resource from a package )Ú from_packageÚ get_package)Úpackage©r ú8/opt/alt/python310/lib64/python3.10/importlib/_common.pyÚfiless rcCs.t|ƒ}tj |¡\}}|rt|›d�ƒ‚|S)z€Normalize a path by ensuring it is a string. If the resulting string contains path separators, an exception is raised. z must be only a file name)ÚstrÚosÚpathÚsplitÚ ValueError)rZstr_pathÚparentÚ file_namer r r Únormalize_paths rcCs*|j}t|jddƒ}|durdS||jƒS)z? Return the package's loader if it's a ResourceReader. Úget_resource_readerN)Ú__spec__ÚgetattrÚloaderÚname©r ÚspecÚreaderr r r r&s   rcCst|tjƒr|St |¡S)N)Ú isinstanceÚtypesÚ ModuleTypeÚ importlibÚ import_module)Zcandr r r Úresolve7sr$cCs(t|ƒ}t|ƒjdurt|›d�ƒ‚|S)z�Take a package name or module object and return the module. Raise an exception if the resolved module is not a package. Nz is not a package)r$rÚsubmodule_search_locationsÚ TypeError)r Zresolvedr r r r <sr cCst|ƒ}|j |j¡}| ¡S)z= Return a Traversable object for the given package. )rrrrrrr r r r Hsr Ú)Ú _os_removeccs€�tj|d�\}}z&t ||ƒ¡t |¡~t |¡VWz||ƒWdSty/YdSwz||ƒWwty?Yww)N©Úsuffix)ÚtempfileZmkstemprÚwriteÚcloseÚpathlibÚPathÚFileNotFoundError)rr*r(ÚfdZraw_pathr r r Ú _tempfileRs"€  ÿþ  ÿr2cCst|j|jd�S)zu Given a Traversable object, return that object as a path on the local file system in a context manager. r))r2Z read_bytesr©rr r r Úas_filegsr4ccs �|VdS)z7 Degenerate behavior for pathlib.Path objects. Nr r3r r r Ú_ps€ r5)r')!rr.r+Ú functoolsÚ contextlibr r"ÚtypingrrrÚabcrrZ _adaptersrr!rZPackagerrrr$r r ÚcontextmanagerÚremover2Úsingledispatchr4Úregisterr/r5r r r r Ús4    ý