B
    
E^                 @   sh   d Z ddlmZmZ ddlZddlZddlZddlmZ dZ	dZ
dZd	d
 Zdd ZG dd deZdS )z configuration     )print_functionunicode_literalsN   )tracez@^(?:[\w-]+-)?(?P<version>[vV]?\d+(?:\.\d+){0,2}[^\+]+)(?:\+.*)?$zguess-next-devznode-and-datec             C   sF   | st } t| }|j }|jdks8|jdkrBd|krBtd |S )Nr   r   versionzvExpected tag_regex to contain a single match group or a group named 'version' to identify the version part of any tag.)DEFAULT_TAG_REGEXrecompile
groupindexkeysgroupswarningswarn)valueregexgroup_names r   _/home/fristb/BIRCH/lib-linux-x86_64/python/lib/python3.7/site-packages/setuptools_scm/config.py_check_tag_regex   s    

r   c             C   sN   |rBt j| r,| |s,td| |f  t jt j|| } t j| S )Nz2absolute root path '%s' overrides relative_to '%s')	ospathisabs
startswithr   r   joindirnameabspath)rootrelative_tor   r   r   _check_absolute_root   s    r   c               @   s   e Zd ZdZddeeddeddddfddZedd Z	e	j
dd Z	ed	d
 Zedd Zej
dd Zedd Zej
dd Zedd Zej
dd ZedddZdS )Configurationz Global configuration model N.c             C   sL   || _ d| _|| _|| _|| _|| _|| _|| _|	| _|
| _	|| _
|| _d S )Nr    )_relative_to_rootr   version_schemelocal_schemewrite_towrite_to_templatefallback_versionfallback_rootparse	tag_regexgit_describe_command)selfr   r   r#   r$   r%   r&   r*   r'   r(   r)   r+   r   r   r   __init__+   s    zConfiguration.__init__c             C   s   | j S )N)_fallback_root)r,   r   r   r   r(   H   s    zConfiguration.fallback_rootc             C   s   t j|| _d S )N)r   r   r   r.   )r,   r   r   r   r   r(   L   s    c             C   s   | j S )N)_absolute_root)r,   r   r   r   absolute_rootP   s    zConfiguration.absolute_rootc             C   s   | j S )N)r!   )r,   r   r   r   r   T   s    zConfiguration.relative_toc             C   s(   t | j|| _|| _tdt| j d S )Nr   )r   r"   r/   r!   r   repr)r,   r   r   r   r   r   X   s    c             C   s   | j S )N)r"   )r,   r   r   r   r   ^   s    zConfiguration.rootc             C   s(   t || j| _|| _tdt| j d S )Nr   )r   r!   r/   r"   r   r1   )r,   r   r   r   r   r   b   s    c             C   s   | j S )N)
_tag_regex)r,   r   r   r   r*   h   s    zConfiguration.tag_regexc             C   s   t || _d S )N)r   r2   )r,   r   r   r   r   r*   l   s    pyproject.tomlc          	   C   s<   t |}td|}W dQ R X |di d }| f |S )z
        Read Configuration from pyproject.toml (or similar).
        Raises exceptions when file is not found or toml is
        not installed or the file has invalid format or does
        not contain the [tool.setuptools_scm] section.
        tomlNtoolsetuptools_scm)open
__import__loadget)clsnamestrmdefnsectionr   r   r   	from_filep   s    
zConfiguration.from_file)r3   )__name__
__module____qualname____doc__DEFAULT_VERSION_SCHEMEDEFAULT_LOCAL_SCHEMEr   r-   propertyr(   setterr0   r   r   r*   classmethodr@   r   r   r   r   r   (   s.   r   )rD   
__future__r   r   r   r   r   utilsr   r   rE   rF   r   r   objectr   r   r   r   r   <module>   s   