o
    ni                     @   st   d Z ddlmZ ddlmZ ddlm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dS )zPublic API: projects.    )gql)public)Attrs)normalize_exceptions)	Paginator)ipythonzdfragment ProjectFragment on Project {
    id
    name
    entityName
    createdAt
    isBenchmark
}c                       sd   e Zd ZdZedeZd fdd	Ze	dd Z
e	dd	 Ze	d
d Zdd Zdd Z  ZS )Projectsz,An iterable collection of `Project` objects.a  
        query Projects($entity: String, $cursor: String, $perPage: Int = 50) {{
            models(entityName: $entity, after: $cursor, first: $perPage) {{
                edges {{
                    node {{
                        ...ProjectFragment
                    }}
                    cursor
                }}
                pageInfo {{
                    endCursor
                    hasNextPage
                }}
            }}
        }}
        {}
        2   c                    s*   || _ || _d| ji}t ||| d S )Nentity)clientr
   super__init__)selfr   r
   per_page	variables	__class__ X/home/ubuntu/SoloSpeech/.venv/lib/python3.10/site-packages/wandb/apis/public/projects.pyr   +   s
   zProjects.__init__c                 C   s   d S Nr   r   r   r   r   length3   s   zProjects.lengthc                 C   s   | j r| j d d d S dS )NmodelspageInfohasNextPageTlast_responser   r   r   r   more7   s   zProjects.morec                 C   s    | j r| j d d d d S d S )Nr   edgescursorr   r   r   r   r   r    >   s   zProjects.cursorc                    s    fdd j d d D S )Nc                    s*   g | ]}t  j j|d  d |d  qS nodename)Projectr   r
   ).0pr   r   r   
<listcomp>F   s    z,Projects.convert_objects.<locals>.<listcomp>r   r   r   r   r   r   r   convert_objectsE   s   
zProjects.convert_objectsc                 C   s   d| j  dS )Nz
<Projects >)r
   r   r   r   r   __repr__K   s   zProjects.__repr__r	   )__name__
__module____qualname____doc__r   formatPROJECT_FRAGMENTQUERYr   propertyr   r   r    r(   r*   __classcell__r   r   r   r   r      s    


r   c                       sr   e Zd ZdZ fddZedd Zedd Zdd
dZde	fddZ
dd ZedddZedd Z  ZS )r$   z"A project is a namespace for runs.c                    s&   t  t| || _|| _|| _d S r   )r   r   dictr   r#   r
   )r   r   r
   projectattrsr   r   r   r   R   s   
zProject.__init__c                 C   s   | j | jgS r   )r
   r#   r   r   r   r   pathX   s   zProject.pathc                 C   s   | j jd| jdg  S )N/	workspace)r   app_urljoinr8   r   r   r   r   url\   s   zProject.url  Fc                 C   sF   | j d }d| d}d}|r|d7 }td}|d|d|d	 S )
z;Generate HTML containing an iframe displaying this project.z?jupyter=truezborder:none;width:100%;height:zpx; zdisplay:none;r6   z<iframe src=z style=z
></iframe>)r=   r   toggle_button)r   heighthiddenr=   styleprefixr   r   r   to_html`   s   

zProject.to_htmlreturnc                 C   s   |   S r   )rE   r   r   r   r   _repr_html_j   s   zProject._repr_html_c                 C   s   d d| jS )Nz<Project {}>r9   )r0   r<   r8   r   r   r   r   r*   m   s   zProject.__repr__r	   c                 C   s   t | j| j| jS r   )r   ArtifactTypesr   r
   r#   )r   r   r   r   r   artifacts_typesp   s   zProject.artifacts_typesc                    s^   t dtj} j jd} j||}|d d dk r g S  fdd|d d d	 D S )
Naw  
            query GetSweeps($project: String!, $entity: String!) {{
                project(name: $project, entityName: $entity) {{
                    totalSweeps
                    sweeps {{
                        edges {{
                            node {{
                                ...SweepFragment
                            }}
                            cursor
                        }}
                        pageInfo {{
                            endCursor
                            hasNextPage
                        }}
                    }}
                }}
            }}
            {}
            )r6   r
   r6   totalSweeps   c              	      s*   g | ]}t  j j j|d  d qS r!   )r   Sweepr   r
   r#   )r%   er   r   r   r'      s    
z"Project.sweeps.<locals>.<listcomp>sweepsr   )r   r0   r   SWEEP_FRAGMENTr#   r
   r   execute)r   queryvariable_valuesretr   r   r   rN   t   s   
zProject.sweeps)r>   Fr+   )r,   r-   r.   r/   r   r3   r8   r=   rE   strrG   r*   r   rI   rN   r4   r   r   r   r   r$   O   s    



r$   N)r/   	wandb_gqlr   
wandb.apisr   wandb.apis.attrsr   wandb.apis.normalizer   wandb.apis.paginatorr   wandb.sdk.libr   r1   r   r$   r   r   r   r   <module>   s    	;