<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha1/dist/css/bootstrap.min.css" rel="stylesheet"
        integrity="sha384-GLhlTQ8iRABdZLl6O3oVMWSktQOp6b7In1Zl3/Jr59b6EGGoI1aFkw7cmDA6j6gD" crossorigin="anonymous">
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.3.0/css/all.min.css"
        integrity="sha512-SzlrxWUlpfuzQ+pcUCosxcglQRNAq/DZjVsC0lE40xsADsfeQoEypE+enwcOiGjk/bSuGGKHEyjSoQ1zVisanQ=="
        crossorigin="anonymous" referrerpolicy="no-referrer" />
</head>
</html>
a
    `8a^
                     @   st   d dl Zd dlmZ ddlmZ ddlmZ dZG dd	 d	e	Z
G d
d de
ZG dd de
ZG dd deZdS )    N)deepcopy   )Configuration   )Source)HomeDirectoryConfigDirectoryFileBasedSourcec                   @   s   e Zd Zdd Zdd ZdS )DirectoryModifierc                 C   s
   || _ d S N)target_file)selfr    r   Q/home/carl/code/landscape/setoptconf-tmp/build/lib/setoptconf/source/filebased.py__init__   s    zDirectoryModifier.__init__c                 C   s
   t  d S r   NotImplementedErrorr   r   r   r   __call__   s    zDirectoryModifier.__call__N)__name__
__module____qualname__r   r   r   r   r   r   r
      s   r
   c                   @   s   e Zd Zdd ZdS )r   c                 C   s   t jt jd| jS )N~)ospath
expanduserjoinr   r   r   r   r   r      s    zHomeDirectory.__call__Nr   r   r   r   r   r   r   r   r      s   r   c                   @   s   e Zd Zdd ZdS )r   c                 C   s0   t dpt jt jdd}t j|| jS )NXDG_CONFIG_HOMEr   z.config)r   getenvr   r   r   r   )r   Z
config_dirr   r   r   r      s    zConfigDirectory.__call__Nr   r   r   r   r   r      s   r   c                       s2   e Zd Zd	 fdd	Zd
ddZdddZ  ZS )r	   NFc                    s   t t|   t|ttfr$|g}nt|ttfs:tdg | _	|D ]>}t|tr`| j	
| qDt|trz| j	
|  qDtdqD|pt | _|| _d S )Nz)files must be a string or list of strings)superr	   r   
isinstance
basestringr
   tuplelist	TypeErrorfilesappendr   getcwd	base_pathcombine)r   r&   r)   r*   target	__class__r   r   r   #   s    


zFileBasedSource.__init__c           
      C   s   g }| j D ]^}tj|r |}ntj| j|}tj|r
| j|t||d}|r
|	| | j
s
 qjq
|r|}t|D ]}	t|	|d}qznt||d}|S )N)manager)settingsparent)r&   r   r   isabsr   r)   existsget_settings_from_filer   r'   r*   reversedr   )
r   r/   r.   r0   Zparsed_settingsZfile_source	file_pathZfile_settingsconfigZparsed_settingr   r   r   
get_config7   s&    


zFileBasedSource.get_configc                 C   s
   t  d S r   r   )r   r5   r/   r.   r   r   r   r3   V   s    z&FileBasedSource.get_settings_from_file)NF)NN)N)r   r   r   r   r7   r3   __classcell__r   r   r,   r   r	   "   s   
r	   )os.pathr   copyr   r6   r   baser   __all__objectr
   r   r   r	   r   r   r   r   <module>   s   	