o
    ni                  	   @   s   d Z ddl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 G dd dZ		dd	eeeee f  d
eeeee f  ddfddZdddZdS )a&  Feature Flags Module.

This module implements a feature flag system for the wandb library to require experimental features
and notify the user when features have been deprecated.

Example:
    import wandb
    wandb.require("wandb-service@beta")
    wandb.require("incremental-artifacts@beta")
    N)OptionalSequenceUnion)_REQUIRE_LEGACY_SERVICE)UnsupportedError)	wandb_runc                   @   sx   e Zd ZU dZee ed< deeee f ddfddZddd	Z	dd
dZ
dddZdddZdddZdddZdS )	_RequireszInternal feature class.	_featuresfeaturesreturnNc                 C   s(   t |trt|g| _d S t|| _d S N)
isinstancestrtupler	   )selfr
    r   U/home/ubuntu/SoloSpeech/.venv/lib/python3.10/site-packages/wandb/sdk/wandb_require.py__init__   s   z_Requires.__init__c                 C   s   d S r   r   r   r   r   r   require_require   s   z_Requires.require_requirec                 C   s    t jt _t jt _tjjtj_d S r   )	wandb	_teardownteardown_attachattachr   Run_detachdetachr   r   r   r   _require_service"   s   z_Requires._require_servicec                 C   s   |    d S r   )r   r   r   r   r   require_service'   s   z_Requires.require_servicec                 C   s   t d d S )NzG`wandb.require('core')` is redundant as it is now the default behavior.)r   termwarnr   r   r   r   require_core*   s   z_Requires.require_corec                 C   s   dt jt< d S )Ntrue)osenvironr   r   r   r   r   require_legacy_service/   s   z _Requires.require_legacy_servicec                 C   s   d}| j D ]1}|ddd }|ddd }d|dd}t| |d	}|s3d
| }t| q|  q|rBtd t|d	S )z-Call require_* method for supported features. @   r   :z
require_{}-_Nz#require() unsupported requirement: z8Supported requirements are: `legacy-service`, `service`.)r	   splitformatreplacegetattrr   r    r   )r   last_messagefeature_itemfull_featurefeaturefunc_strfuncr   r   r   apply2   s   



z_Requires.applyr   N)__name__
__module____qualname____doc__r   r   __annotations__r   r   r   r   r   r!   r%   r6   r   r   r   r   r      s   
 




r   requirement
experimentr   c                 C   s&   | p|}|sdS t |d}|  dS )zIndicate which experimental features are used by the script.

    Args:
        requirement: (str or list) Features to require
        experiment: (str or list) Features to require

    Raises:
        wandb.errors.UnsupportedError: if not supported
    N)r
   )r   r6   )r=   r>   r
   fr   r   r   requireE   s
   
r@   c                   C   s   t d dS )zMOn wandb import, setup anything needed based on parent process require calls.serviceN)r@   r   r   r   r   _import_module_hookZ   s   rB   )NNr7   )r;   r#   typingr   r   r   r   	wandb.envr   wandb.errorsr   	wandb.sdkr   r   r   r@   rB   r   r   r   r   <module>   s$    1
