o
    nin                     @   sb  d Z ddlZddlZddlmZ ddlmZmZmZmZm	Z	m
Z
mZ ddlmZmZ ddl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 erVddlmZmZ dZdZG dd deZG dd dZ G dd deZ!G dd dZ"G dd deZ#G dd deZ$G dd deZ%	d(ddde&d e&fd!d"Z'd#e&d e(fd$d%Z)d#e&d e(fd&d'Z*dS ))zPublic API: artifacts.    N)copy)TYPE_CHECKINGAnyListMappingOptionalSequenceUnion)Clientgql)public)normalize_exceptions)	Paginator)termlog)	deprecate)RetryingClientRuna  
fragment ArtifactTypesFragment on ArtifactTypeConnection {
    edges {
         node {
             id
             name
             description
             createdAt
         }
         cursor
    }
    pageInfo {
        endCursor
        hasNextPage
    }
}
a
  fragment ArtifactFilesFragment on Artifact {
    files(names: $fileNames, after: $fileCursor, first: $fileLimit) {
        edges {
            node {
                id
                name: displayName
                url
                sizeBytes
                storagePath
                mimetype
                updatedAt
                digest
                md5
                directUrl
            }
            cursor
        }
        pageInfo {
            endCursor
            hasNextPage
        }
    }
}c                
       sx   e Zd ZedeZ	ddededede	e
 f fddZed	d
 Zedd Zedd Zdd Zdd Z  ZS )ArtifactTypesan  
        query ProjectArtifacts(
            $entityName: String!,
            $projectName: String!,
            $cursor: String,
        ) {{
            project(name: $projectName, entityName: $entityName) {{
                artifactTypes(after: $cursor) {{
                    ...ArtifactTypesFragment
                }}
            }}
        }}
        {}
    2   cliententityprojectper_pagec                    s*   || _ || _||d}t ||| d S )N)
entityNameprojectName)r   r   super__init__)selfr   r   r   r   variable_values	__class__ Y/home/ubuntu/SoloSpeech/.venv/lib/python3.10/site-packages/wandb/apis/public/artifacts.pyr   S   s   zArtifactTypes.__init__c                 C   s   d S Nr!   r   r!   r!   r"   lengthd   s   zArtifactTypes.lengthc                 C   s    | j r| j d d d d S dS )Nr   artifactTypespageInfohasNextPageTlast_responser$   r!   r!   r"   morei   
   zArtifactTypes.morec                 C   $   | j r| j d d d d d S d S )Nr   r&   edgescursorr)   r$   r!   r!   r"   r0   r   s   zArtifactTypes.cursorc                 C      | j d| ji d S Nr0   	variablesupdater0   r$   r!   r!   r"   update_variablesy      zArtifactTypes.update_variablesc                    s2    j d d u r	g S  fdd j d d d D S )Nr   c              	      s.   g | ]}t  j j j|d  d |d  qS nodename)ArtifactTyper   r   r   .0rr$   r!   r"   
<listcomp>   s    z1ArtifactTypes.convert_objects.<locals>.<listcomp>r&   r.   r)   r$   r!   r$   r"   convert_objects|   s
   
zArtifactTypes.convert_objectsr   )__name__
__module____qualname__r   formatARTIFACTS_TYPES_FRAGMENTQUERYr
   strr   intr   propertyr%   r+   r0   r6   r@   __classcell__r!   r!   r   r"   r   A   s.    


r   c                   @   sx   e Zd Z	ddededededeeeef  f
ddZd	d
 Z	e
dd Ze
dd ZedddZdd Zdd ZdS )r;   Nr   r   r   	type_nameattrsc                 C   s8   || _ || _|| _|| _|| _| jd u r|   d S d S r#   )r   r   r   type_attrsload)r   r   r   r   rL   rM   r!   r!   r"   r      s   
zArtifactType.__init__c                 C   sr   t d}| jj|| j| j| jdd}|d u s'|dd u s'|d dd u r/td| j|d d | _	| j	S )Na  
        query ProjectArtifactType(
            $entityName: String!,
            $projectName: String!,
            $artifactTypeName: String!
        ) {
            project(name: $projectName, entityName: $entityName) {
                artifactType(name: $artifactTypeName) {
                    id
                    name
                    description
                    createdAt
                }
            }
        }
        r   r   artifactTypeNamer   r   artifactTypeCould not find artifact type {})
r   r   executer   r   rN   get
ValueErrorrE   rO   )r   queryresponser!   r!   r"   rP      s    	zArtifactType.loadc                 C   
   | j d S NidrO   r$   r!   r!   r"   r]         
zArtifactType.idc                 C   r[   )Nr:   r^   r$   r!   r!   r"   r:      r_   zArtifactType.namer   c                 C   s   t | j| j| j| jS )zArtifact collections.)ArtifactCollectionsr   r   r   rN   r   r   r!   r!   r"   collections   s   zArtifactType.collectionsc                 C   s   t | j| j| j|| jS r#   )ArtifactCollectionr   r   r   rN   r   r:   r!   r!   r"   
collection   s   zArtifactType.collectionc                 C   s   d| j  dS )Nz<ArtifactType >)rN   r$   r!   r!   r"   __repr__   s   zArtifactType.__repr__r#   rA   )rB   rC   rD   r
   rH   r   r   r   r   rP   rJ   r]   r:   r   rb   re   rg   r!   r!   r!   r"   r;      s,    
$

r;   c                       sn   e Zd Z	ddededededee f
 fddZed	d
 Z	edd Z
edd Zdd Zdd Z  ZS )r`   r   r   r   r   rL   r   c                    sJ   || _ || _|| _|||d}tdtt|| _t 	||| d S )NrQ   a%  
            query ProjectArtifactCollections(
                $entityName: String!,
                $projectName: String!,
                $artifactTypeName: String!
                $cursor: String,
            ) {{
                project(name: $projectName, entityName: $entityName) {{
                    artifactType(name: $artifactTypeName) {{
                        artifactCollections: {}(after: $cursor) {{
                            pageInfo {{
                                endCursor
                                hasNextPage
                            }}
                            totalCount
                            edges {{
                                node {{
                                    id
                                    name
                                    description
                                    createdAt
                                }}
                                cursor
                            }}
                        }}
                    }}
                }}
            }}
        )
r   r   rL   r   rE   $artifact_collection_plural_edge_name.server_supports_artifact_collections_gql_edgesrG   r   r   )r   r   r   r   rL   r   r   r   r!   r"   r      s    $zArtifactCollections.__init__c                 C   s    | j r| j d d d d S d S )Nr   rT   artifactCollections
totalCountr)   r$   r!   r!   r"   r%     r,   zArtifactCollections.lengthc                 C   s$   | j r| j d d d d d S dS )Nr   rT   rj   r'   r(   Tr)   r$   r!   r!   r"   r+        zArtifactCollections.morec                 C   s(   | j r| j d d d d d d S d S )Nr   rT   rj   r.   r/   r0   r)   r$   r!   r!   r"   r0        zArtifactCollections.cursorc                 C   r1   r2   r3   r$   r!   r!   r"   r6   &  r7   z$ArtifactCollections.update_variablesc                    s$    fdd j d d d d D S )Nc                    s,   g | ]}t  j j j|d  d  jqS r8   )rc   r   r   r   rL   r<   r$   r!   r"   r?   *  s    
z7ArtifactCollections.convert_objects.<locals>.<listcomp>r   rT   rj   r.   r)   r$   r!   r$   r"   r@   )  s   
z#ArtifactCollections.convert_objectsrA   )rB   rC   rD   r
   rH   r   rI   r   rJ   r%   r+   r0   r6   r@   rK   r!   r!   r   r"   r`      s*    8


r`   c                   @   sr  e Zd Z	d7dedededededeeeef  fdd	Ze	d
d Z
ed8ddZe	dd Zdd ZdeddfddZdefddZedd Ze	dd Zejdee ddfddZe	dd  Zejd!ee ddfd"d Ze	d#d$ Zejdee ddfd%d$Ze	d&d' Zejdee ddfd(d'Zd)d* Zd+d, Zd-d. Zd/d0 Zd1d2 Zd9d3d4Zd5d6 ZdS ):rc   Nr   r   r   r:   rN   rM   c                 C   s   || _ || _|| _|| _|| _|| _|| _|| _|   dd | jd d D | _	| jd | _
dd | jd d D | _t| j| _d S )Nc                 S      g | ]}|d  d qS )r9   aliasr!   r=   ar!   r!   r"   r?   K      z/ArtifactCollection.__init__.<locals>.<listcomp>aliasesr.   descriptionc                 S   rn   r8   r!   rp   r!   r!   r"   r?   M  rr   tags)r   r   r   _name_saved_name_type_saved_typerO   rP   _aliases_description_tagsr   _saved_tags)r   r   r   r   r:   rN   rM   r!   r!   r"   r   9  s   	zArtifactCollection.__init__c                 C   r[   r\   r^   r$   r!   r!   r"   r]   P  r_   zArtifactCollection.idr   c                 C   s   t | j| j| j| j| j|dS )z
Artifacts.)r   )	Artifactsr   r   r   rw   ry   ra   r!   r!   r"   	artifactsT  s   zArtifactCollection.artifactsc                 C      | j S )zArtifact Collection Aliases.)rz   r$   r!   r!   r"   rs   `     zArtifactCollection.aliasesc                 C   s   t dtt| j}| jj|| j| j| j| j	dd}|d u s<|
dd u s<|d 
dd u s<|d d 
dd u rDtd| j|d d d }|d uoU|d	 d
k| _| jd u re|d d d | _| jS )Na  
        query ArtifactCollection(
            $entityName: String!,
            $projectName: String!,
            $artifactTypeName: String!,
            $artifactCollectionName: String!,
            $cursor: String,
            $perPage: Int = 1000
        ) {{
            project(name: $projectName, entityName: $entityName) {{
                artifactType(name: $artifactTypeName) {{
                    artifactCollection: {}(name: $artifactCollectionName) {{
                        id
                        name
                        description
                        createdAt
                        tags {{
                            edges {{
                                node {{
                                    id
                                    name
                                }}
                            }}
                        }}
                        aliases(after: $cursor, first: $perPage){{
                            edges {{
                                node {{
                                    alias
                                }}
                                cursor
                            }}
                            pageInfo {{
                                endCursor
                                hasNextPage
                            }}
                        }}
                    }}
                    artifactSequence(name: $artifactCollectionName) {{
                        __typename
                    }}
                }}
            }}
        }}
        )r   r   rR   artifactCollectionNamerS   r   rT   artifactCollectionrU   artifactSequence
__typenameArtifactSequence)r   rE   artifact_collection_edge_nameri   r   rV   r   r   ry   rw   rW   rX   _is_sequencerO   )r   rY   rZ   sequencer!   r!   r"   rP   e  s6   +2

zArtifactCollection.loadnew_typereturnc                 C   sp   t j t jjdd |  stdtd| j d|  d}| j|d}t|}| j	j
||d || _|| _d	S )
z5Deprecated, change type directly with `save` instead.zZArtifactCollection.change_type(type) is deprecated, use ArtifactCollection.save() instead.)
field_namewarning_messagez*Artifact collection needs to be a sequencez%Changing artifact collection type of z to ^  
            mutation MoveArtifactCollection(
                $artifactSequenceID: ID!
                $destinationArtifactTypeName: String!
            ) {
                moveArtifactSequence(
                input: {
                    artifactSequenceID: $artifactSequenceID
                    destinationArtifactTypeName: $destinationArtifactTypeName
                }
                ) {
                artifactCollection {
                    id
                    name
                    description
                    __typename
                }
                }
            }
            artifactSequenceIDdestinationArtifactTypeNamerS   N)r   
Deprecated artifact_collection__change_typeis_sequencerX   r   ry   r]   r   r   rV   rx   )r   r   templater   mutationr!   r!   r"   change_type  s"   
zArtifactCollection.change_typec                 C   r   )z5Return whether the artifact collection is a sequence.)r   r$   r!   r!   r"   r     s   zArtifactCollection.is_sequencec                 C   s4   |   r	td}ntd}| jj|d| jid dS )z&Delete the entire artifact collection.a[  
                mutation deleteArtifactSequence($id: ID!) {
                    deleteArtifactSequence(input: {
                        artifactSequenceID: $id
                    }) {
                        artifactCollection {
                            state
                        }
                    }
                }
                a^  
                mutation deleteArtifactPortfolio($id: ID!) {
                    deleteArtifactPortfolio(input: {
                        artifactPortfolioID: $id
                    }) {
                        artifactCollection {
                            state
                        }
                    }
                }
                r]   rS   N)r   r   r   rV   r]   )r   r   r!   r!   r"   delete  s   zArtifactCollection.deletec                 C   r   )z)A description of the artifact collection.r{   r$   r!   r!   r"   rt     r   zArtifactCollection.descriptionrt   c                 C   
   || _ d S r#   r   )r   rt   r!   r!   r"   rt     r_   c                 C   r   )z1The tags associated with the artifact collection.)r|   r$   r!   r!   r"   ru     r   zArtifactCollection.tagsru   c                 C   s$   t dd |D rtd|| _d S )Nc                 s   s    | ]
}t d | V  qdS )z^[-\w]+([ ]+[-\w]+)*$N)rematchr=   tagr!   r!   r"   	<genexpr>  s    z*ArtifactCollection.tags.<locals>.<genexpr>z\Tags must only contain alphanumeric characters or underscores separated by spaces or hyphens)anyrX   r|   )r   ru   r!   r!   r"   ru     s
   
c                 C   r   )z$The name of the artifact collection.rv   r$   r!   r!   r"   r:     r   zArtifactCollection.namec                 C   r   r#   r   rd   r!   r!   r"   r:     r_   c                 C   r   )z$The type of the artifact collection.)rx   r$   r!   r!   r"   rN     r   zArtifactCollection.typec                 C   s   |   std|| _d S )NzBType can only be changed if the artifact collection is a sequence.)r   rX   rx   )r   rN   r!   r!   r"   rN   #  s
   
c                 C   6   t d}| j| j| jd}| jj||d | j| _d S )NaL  
            mutation UpdateArtifactCollection(
                $artifactSequenceID: ID!
                $name: String
                $description: String
            ) {
                updateArtifactSequence(
                input: {
                    artifactSequenceID: $artifactSequenceID
                    name: $name
                    description: $description
                }
                ) {
                artifactCollection {
                    id
                    name
                    description
                }
                }
            }
        )r   r:   rt   rS   r   r]   rv   rt   r   rV   rw   r   r   r   r!   r!   r"   _update_collection+  s   z%ArtifactCollection._update_collectionc                 C   s2   t d}| j| jd}| jj||d | j| _d S )Nr   r   rS   )r   r]   rx   r   rV   ry   )r   type_mutationr   r!   r!   r"   _update_collection_typeJ  s   z*ArtifactCollection._update_collection_typec                 C   r   )NaO  
            mutation UpdateArtifactPortfolio(
                $artifactPortfolioID: ID!
                $name: String
                $description: String
            ) {
                updateArtifactPortfolio(
                input: {
                    artifactPortfolioID: $artifactPortfolioID
                    name: $name
                    description: $description
                }
                ) {
                artifactCollection {
                    id
                    name
                    description
                }
                }
            }
        )artifactPortfolioIDr:   rt   rS   r   r   r!   r!   r"   _update_portfoliog  s   z$ArtifactCollection._update_portfolioc                 C   6   t d}| jj|| j| j| jdd |D dd d S )Na  
            mutation CreateArtifactCollectionTagAssignments(
                $entityName: String!
                $projectName: String!
                $artifactCollectionName: String!
                $tags: [TagInput!]!
            ) {
                createArtifactCollectionTagAssignments(
                input: {
                    entityName: $entityName
                    projectName: $projectName
                    artifactCollectionName: $artifactCollectionName
                    tags: $tags
                }
                ) {
                tags {
                    id
                    name
                    tagCategoryName
                }
                }
            }
            c                 S      g | ]}d |iqS tagNamer!   r   r!   r!   r"   r?     
    z0ArtifactCollection._add_tags.<locals>.<listcomp>r   r   r   ru   rS   r   r   rV   r   r   rw   )r   tags_to_addadd_mutationr!   r!   r"   	_add_tags  s   
zArtifactCollection._add_tagsc                 C   r   )Nag  
            mutation DeleteArtifactCollectionTagAssignments(
                $entityName: String!
                $projectName: String!
                $artifactCollectionName: String!
                $tags: [TagInput!]!
            ) {
                deleteArtifactCollectionTagAssignments(
                input: {
                    entityName: $entityName
                    projectName: $projectName
                    artifactCollectionName: $artifactCollectionName
                    tags: $tags
                }
                ) {
                success
                }
            }
            c                 S   r   r   r!   r   r!   r!   r"   r?     r   z3ArtifactCollection._delete_tags.<locals>.<listcomp>r   rS   r   )r   tags_to_deletedelete_mutationr!   r!   r"   _delete_tags  s   
zArtifactCollection._delete_tagsc                 C   s   |   r|   | j| jkr|   n|   t| jt| j }t| jt| j }t	|dkr6| 
| t	|dkrA| | t| j| _dS )z4Persist any changes made to the artifact collection.r   N)r   r   ry   rx   r   r   setr|   r}   lenr   r   r   )r   r   r   r!   r!   r"   save  s   

zArtifactCollection.savec                 C   s   d| j  d| j dS )Nz<ArtifactCollection z (z)>)rv   rx   r$   r!   r!   r"   rg     r7   zArtifactCollection.__repr__r#   rA   )r   N) rB   rC   rD   r
   rH   r   r   r   r   rJ   r]   r   r   rs   rP   r   boolr   r   rt   setterru   r   r:   rN   r   r   r   r   r   r   rg   r!   r!   r!   r"   rc   8  sb    


L)
 



)
%rc   c                       s   e Zd ZdZ				ddededededed	eeeef  d
ee de	dee
eee f  f fddZedd Zedd Zedd Zdd Z  ZS )r~   zAn iterable collection of artifact versions associated with a project and optional filter.

    This is generally used indirectly via the `Api`.artifact_versions method.
    Nr   r   r   r   collection_namerN   filtersorderr   ru   c
                    s   ddl m}
 || _|| _|| _|| _|d u rddin|| _t|	tr%|	gn|	| _	|| _
| j| j| j
| j| jt| jd}tdtt||
 | _t ||| d S )Nr   _gql_artifact_fragmentstate	COMMITTED)r   r   r   rN   re   r   a  
            query Artifacts($project: String!, $entity: String!, $type: String!, $collection: String!, $cursor: String, $perPage: Int = 50, $order: String, $filters: JSONString) {{
                project(name: $project, entityName: $entity) {{
                    artifactType(name: $type) {{
                        artifactCollection: {}(name: $collection) {{
                            name
                            artifacts(filters: $filters, after: $cursor, first: $perPage, order: $order) {{
                                totalCount
                                edges {{
                                    node {{
                                        ...ArtifactFragment
                                    }}
                                    version
                                    cursor
                                }}
                                pageInfo {{
                                    endCursor
                                    hasNextPage
                                }}
                            }}
                        }}
                    }}
                }}
            }}
            {}
            )wandb.sdk.artifacts.artifactr   r   r   rN   r   r   
isinstancerH   ru   r   jsondumpsr   rE   r   ri   rG   r   r   )r   r   r   r   r   rN   r   r   r   ru   r   r4   r   r!   r"   r     s2   
!zArtifacts.__init__c                 C   r-   )Nr   rT   r   r   rk   r)   r$   r!   r!   r"   r%   /  rl   zArtifacts.lengthc                 C   (   | j r| j d d d d d d S dS )Nr   rT   r   r   r'   r(   Tr)   r$   r!   r!   r"   r+   8  rm   zArtifacts.morec                 C   ,   | j r| j d d d d d d d S d S )Nr   rT   r   r   r.   r/   r0   r)   r$   r!   r!   r"   r0   A  s   zArtifacts.cursorc                    sX   j d d d }|di dg }fdd|D }tjp!g   fdd	|D S )
Nr   rT   r   r   r.   c                 3   s<    | ]}t j j j jd  |d  |d  jV  qdS ):versionr9   N)wandbArtifact_from_attrsr   r   r   r   rp   r$   r!   r"   r   M  s    
z,Artifacts.convert_objects.<locals>.<genexpr>c                    s   g | ]
}  |jr|qS r!   )issubsetru   )r=   artifact)required_tagsr!   r"   r?   X  s
    z-Artifacts.convert_objects.<locals>.<listcomp>)r*   rW   r   ru   )r   re   artifact_edgesr   r!   )r   r   r"   r@   J  s   


zArtifacts.convert_objects)NNr   N)rB   rC   rD   __doc__r
   rH   r   r   r   rI   r	   r   r   rJ   r%   r+   r0   r@   rK   r!   r!   r   r"   r~     s@    	
@


r~   c                       s^   e Zd Z	ddedddee f fddZed	d
 Zedd Z	edd Z
dd Z  ZS )RunArtifactsloggedr   r   runr   r   c           	         s   ddl m} td|  }td|  }|| _|dkr"d| _|| _n|dkr-d| _|| _ntd	|j|j|j	d
}t
 ||| d S )Nr   r   a[  
            query RunOutputArtifacts(
                $entity: String!, $project: String!, $runName: String!, $cursor: String, $perPage: Int,
            ) {
                project(name: $project, entityName: $entity) {
                    run(name: $runName) {
                        outputArtifacts(after: $cursor, first: $perPage) {
                            totalCount
                            edges {
                                node {
                                    ...ArtifactFragment
                                }
                                cursor
                            }
                            pageInfo {
                                endCursor
                                hasNextPage
                            }
                        }
                    }
                }
            }
            aY  
            query RunInputArtifacts(
                $entity: String!, $project: String!, $runName: String!, $cursor: String, $perPage: Int,
            ) {
                project(name: $project, entityName: $entity) {
                    run(name: $runName) {
                        inputArtifacts(after: $cursor, first: $perPage) {
                            totalCount
                            edges {
                                node {
                                    ...ArtifactFragment
                                }
                                cursor
                            }
                            pageInfo {
                                endCursor
                                hasNextPage
                            }
                        }
                    }
                }
            }
            r   outputArtifactsusedinputArtifactszmode must be logged or used)r   r   runName)r   r   r   r   run_keyrG   rX   r   r   r]   r   r   )	r   r   r   moder   r   output_queryinput_queryr   r   r!   r"   r   ^  s0   zRunArtifacts.__init__c                 C   s"   | j r| j d d | j d S d S )Nr   r   rk   r*   r   r$   r!   r!   r"   r%     s   zRunArtifacts.lengthc                 C   s&   | j r| j d d | j d d S dS )Nr   r   r'   r(   Tr   r$   r!   r!   r"   r+     s
   zRunArtifacts.morec                 C   s*   | j r| j d d | j d d d S d S )Nr   r   r.   r/   r0   r   r$   r!   r!   r"   r0     s
   zRunArtifacts.cursorc                    s&    fdd j d d  j d D S )Nc                    sb   g | ]-}t j|d  d d d |d  d d d d|d  d d |d  d |d   jqS )r9   r   r   r   r:   z{}:v{}versionIndex)r   r   r   rE   r   r<   r$   r!   r"   r?     s    
z0RunArtifacts.convert_objects.<locals>.<listcomp>r   r   r.   r   r$   r!   r$   r"   r@     s   

zRunArtifacts.convert_objects)r   r   )rB   rC   rD   r
   r   rI   r   rJ   r%   r+   r0   r@   rK   r!   r!   r   r"   r   ]  s     M


r   c                	       s   e Zd ZedeZ		ddedddee	e
  def fd	d
Zedd Zedd Zedd Zedd Zdd Zdd Zdd Z  ZS )ArtifactFilesaV  
        query ArtifactFiles(
            $entityName: String!,
            $projectName: String!,
            $artifactTypeName: String!,
            $artifactName: String!
            $fileNames: [String!],
            $fileCursor: String,
            $fileLimit: Int = 50
        ) {{
            project(name: $projectName, entityName: $entityName) {{
                artifactType(name: $artifactTypeName) {{
                    artifact(name: $artifactName) {{
                        ...ArtifactFilesFragment
                    }}
                }}
            }}
        }}
        {}
    Nr   r   r   zwandb.Artifactnamesr   c                    sV   || _ |j|j|j|j|d}|ds!t| jjj	j
dd| _t ||| d S )N)r   r   rR   artifactName	fileNamesz0.12.21zstoragePath
 )r   source_entitysource_projectrN   source_nameversion_supportedr   rG   locsourcebodyreplacer   r   )r   r   r   r   r   r4   r   r!   r"   r     s   
	zArtifactFiles.__init__c                 C   s   | j j| j j| j jgS r#   )r   r   r   r:   r$   r!   r!   r"   path   s   zArtifactFiles.pathc                 C   s   | j jS r#   )r   
file_countr$   r!   r!   r"   r%     s   zArtifactFiles.lengthc                 C   r   )Nr   rT   r   filesr'   r(   Tr)   r$   r!   r!   r"   r+     s   zArtifactFiles.morec                 C   r   )Nr   rT   r   r   r.   r/   r0   r)   r$   r!   r!   r"   r0     s   zArtifactFiles.cursorc                 C   s   | j | j| jd d S )N)	fileLimit
fileCursor)r4   r5   r   r0   r$   r!   r!   r"   r6     s   zArtifactFiles.update_variablesc                    s(    fdd j d d d d d D S )Nc                    s   g | ]}t  j|d  qS )r9   )r   Filer   r<   r$   r!   r"   r?     s    z1ArtifactFiles.convert_objects.<locals>.<listcomp>r   rT   r   r   r.   r)   r$   r!   r$   r"   r@     s
   
zArtifactFiles.convert_objectsc                 C   s   d d| jt| S )Nz<ArtifactFiles {} ({})>/)rE   joinr   r   r$   r!   r!   r"   rg   %  s   zArtifactFiles.__repr__)Nr   )rB   rC   rD   r   rE   ARTIFACT_FILES_FRAGMENTrG   r
   r   r   rH   rI   r   rJ   r   r%   r+   r0   r6   r@   rg   rK   r!   r!   r   r"   r     s6    




r   Fr   r   warnr   c                 C   s    |  d}|s|rtd |S )Nz0.12.11zW&B Local Server version does not support ArtifactCollection gql edges; falling back to using legacy ArtifactSequence. Please update server to at least version 0.9.50.)r   r   termwarn)r   r   	supportedr!   r!   r"   ri   )  s   
ri   $server_supports_artifact_collectionsc                 C      | rdS dS )Nr   r   r!   r   r!   r!   r"   r   8  s
   r   c                 C   r   )Nrj   artifactSequencesr!   r   r!   r!   r"   rh   @  s
   rh   )F)+r   r   r   r   typingr   r   r   r   r   r   r	   	wandb_gqlr
   r   r   
wandb.apisr   wandb.apis.normalizer   wandb.apis.paginatorr   wandb.errors.termr   wandb.sdk.libr   wandb.apis.publicr   r   rF   r   r   r;   r`   rc   r~   r   r   r   ri   rH   r   rh   r!   r!   r!   r"   <module>   sP    $FKf   4tvW
