o
    pf                     @   s   d Z ddlmZmZmZ ddlZddlmZ ddlm	Z	 ddl
m
Z
 ejr?d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)OpenerError)registry)TextUnion   )_AppFS)SubFS)ParseResultc                   @   s$   e Zd ZdZg dZdZdd ZdS )AppFSOpenerz``AppFS`` opener.userdatauserconfsitedatasiteconf	usercache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   )appfs)ClosingSubFSr   /:   zEresource should be <appname>:<author> or <appname>:<author>:<version>)authorversioncreateT)recreate)factory) r   subfsr   _protocol_mapping
UserDataFSUserConfigFS
SiteDataFSSiteConfigFSUserCacheFS	UserLogFSprotocolresource	partitionsplitlenr   makediropendir)selffs_urlparse_result	writeabler   cwdr   r   fs_classr+   delimpathtokensappnamer   r   app_fs r<   H/home/ertert/spirit/venv/lib/python3.10/site-packages/fs/opener/appfs.pyopen_fs   s6   

	zAppFSOpener.open_fs)__name__
__module____qualname____doc__	protocolsr#   r>   r<   r<   r<   r=   r      s
    r   )rB   
__future__r   r   r   typingbaser   errorsr   r   TYPE_CHECKINGr	   r
   r   r   r"   r   parser   installr   r<   r<   r<   r=   <module>   s   