o
    Q `;                     @   s   d Z ddlmZ ddlmZ ddlmZ ddlZddlmZ ddlmZ dd	l	m
Z
 ejrGdd
lmZmZ ddlmZ ddlmZ ddlmZ ejG dd deZdS )z``AppFS`` opener definition.
    )absolute_import)print_function)unicode_literalsN   )Opener)registry)OpenerError)TextUnion)ParseResult   )_AppFS)SubFSc                   @   s$   e Zd ZdZg dZdZdd ZdS )AppFSOpenerz``AppFS`` opener.
    ZuserdataZuserconfZsitedataZsiteconfZ	usercacheZuserlogNc                 C   s   ddl m} ddlm} | jd u r!|j|j|j|j|j	|j
d| _| j|j }|jd\}	}
}|	dd}t|dkrC|\}}d }nt|dkrO|\}}}ntd|||||d	}|
rm|rf|j|d
d |j||dS |S )Nr   )ClosingSubFS)appfsr   /:   zEresource should be <appname>:<author> or <appname>:<author>:<version>)authorversioncreateT)Zrecreate)factory)subfsr    r   _protocol_mappingZ
UserDataFSZUserConfigFSZ
SiteDataFSZSiteConfigFSZUserCacheFSZ	UserLogFSZprotocolresource	partitionsplitlenr   ZmakedirZopendir)selfZfs_urlZparse_resultZ	writeabler   cwdr   r   Zfs_classr   ZdelimpathtokensZappnamer   r   Zapp_fs r%   1/usr/lib/python3/dist-packages/fs/opener/appfs.pyopen_fs   s6   

	zAppFSOpener.open_fs)__name__
__module____qualname____doc__Z	protocolsr   r'   r%   r%   r%   r&   r      s
    r   )r+   Z
__future__r   r   r   typingbaser   r   errorsr   ZTYPE_CHECKINGr	   r
   parser   r   r   r   r   installr   r%   r%   r%   r&   <module>   s   