Ë
    daºiv  ã                   óT   — d dl mZ ddlmZ ddlmZ  G d„ de«      Z G d„ de«      Zy	)
é    )Ú	HTTPErroré   )ÚBitbucketCloudBase)ÚProjectRepositoriesc                   óH   ‡ — e Zd Zˆ fd„Zd„ Zdd„Zdd„Zd	ˆ fd„	Zd	d„Zˆ xZ	S )
ÚProjectsc                 ó4   •— t        t        | �
  |g|¢­i |¤Ž y ©N)Úsuperr   Ú__init__)ÚselfÚurlÚargsÚkwargsÚ	__class__s       €úe/var/www/timesheet/venv/lib/python3.12/site-packages/atlassian/bitbucket/cloud/workspaces/projects.pyr   zProjects.__init__
   s   ø€ ÜŒh˜Ñ& sÐ<¨TÒ<°VÓ<ó    c                 ó.   — t        |fi | j                  ¤ŽS r
   )ÚProjectÚ_new_session_args)r   Údatas     r   Ú__get_objectzProjects.__get_object   s   € Ü�tÑ6˜t×5Ñ5Ñ6Ð6r   c                 ób   — ||||dœ}|r||d<   | j                  | j                  d|¬«      «      S )aÅ  
        Creates a new project with the given values

        Note that the avatar has to be embedded as either a data-url or a URL to an external image as shown in
        the examples below:

            w.projects.create( "Mars Project", "MARS", "Software for colonizing mars.",
                avatar="data:image/gif;base64,R0lGODlhEAAQAMQAAORHHOVSKudfOulrSOp3WOyDZu6QdvCchPGolfO0o/...",
                is_private=False
            )

            w.projects.create( "Mars Project", "MARS", "Software for colonizing mars.",
                avatar="http://i.imgur.com/72tRx4w.gif",
                is_private=False
            )

        :param name: string:                       The name of the project.
        :param key: string:                        The key of the project.
        :param description: string:                The description of the project.
        :param is_private: bool (default is True): True if it is a private project.
        :param avatar: string (default is None):   The avatar of the project.

        :return: The created project object

        API docs:
            https://developer.atlassian.com/bitbucket/api/2/reference/resource/workspaces/%7Bworkspace%7D/projects#post
        )ÚnameÚkeyÚdescriptionÚ
is_privateÚavatarN©r   )Ú_Projects__get_objectÚpost)r   r   r   r   r   r   r   s          r   ÚcreatezProjects.create   sC   € ð: ØØ&Ø$ñ	
ˆñ Ø#ˆD�‰NØ× Ñ  §¡¨4°d Ó!;Ó<Ð<r   c              #   ó‚   K  — i }|�||d<   |�||d<   | j                  d|¬«      D ]  }| j                  |«      –— Œ y­w)a"  
        Get all projects in the workspace matching the criteria.
        :param q: string (default is None):    Query string to narrow down the response.
                                               See for details:
                                               https://developer.atlassian.com/bitbucket/api/2/reference/meta/filtering
        :param sort: string (default is None): Name of a response property to sort results.
                                               See for details:
                                               https://developer.atlassian.com/bitbucket/api/2/reference/meta/filtering
        :return: A generator for the project objects

        API docs: https://developer.atlassian.com/bitbucket/api/2/reference/resource/workspaces/%7Bworkspace%7D/projects#get
        NÚsortÚq)Úparams)Ú
_get_pagedr    )r   r%   r$   r&   Úprojects        r   ÚeachzProjects.each6   s\   è ø€ ð ˆØÐØ!ˆF�6‰NØˆ=ØˆF�3‰KØ—‘ t°F�Ó;ò 	-ˆGØ×#Ñ# GÓ,Ó,ð	-ð 	ùs   ‚=?c                 óð   •— |dk(  r"| j                  t        t        | �  |«      «      S |dk(  r)| j	                  «       D ]  }|j
                  |k(  sŒ|c S  nt        d|› d�«       t        d|› d|› d�«      ‚)a†  
        Returns the requested project

        :param project: string: The requested project.
        :param by: string (default is "key"): How to interpret project, can be 'key' or 'name'.

        :return: The requested Project object

        API docs: https://developer.atlassian.com/bitbucket/api/2/reference/resource/workspaces/%7Bworkspace%7D/projects/%7Bproject_key%7D#get
        r   r   zUnknown value 'z-' for argument [by], expected 'key' or 'name'úUnknown project ú 'ú')r    r   r   Úgetr)   r   Ú
ValueErrorÚ	Exception)r   r(   ÚbyÚpr   s       €r   r.   zProjects.getM   s…   ø€ ð �Š;Ø×$Ñ$¤U¬8°TÑ%>¸wÓ%GÓHÐHØ�6Š\Ø—Y‘Y“[ò �Ø—6‘6˜WÓ$Ø’Hñô ˜¨¨Ð,YÐZÔ[äÐ*¨2¨$¨b°°	¸Ð;Ó<Ð<r   c                 óæ   — d}	 | j                  ||«       d}|S # t        $ r$}|j                  j                  dv r	 Y d}~|S d}~wt        $ r"}t        |«      d|› d|› d�k(  s|‚Y d}~|S d}~ww xY w)a~  
        Check if project exist.

        :param project: string: The requested project.
        :param by: string (default is "key"): How to interpret project, can be 'key' or 'name'.

        :return: True if the project exists

        API docs: https://developer.atlassian.com/bitbucket/api/2/reference/resource/workspaces/%7Bworkspace%7D/projects/%7Bproject_key%7D#get
        FT)i‘  i”  Nr+   r,   r-   )r.   r   ÚresponseÚstatus_coder0   Ústr)r   r(   r1   ÚexistsÚes        r   r7   zProjects.existsc   sŽ   € ð ˆð	Ø�H‰H�W˜bÔ!ØˆFð ˆøô ò 	Ø�z‰z×%Ñ%¨Ñ3Øûð ˆûô ò 	Ü�q“6Ð/°¨t°2°g°Y¸aÐ@Ò@Ø�ó Aàˆûð	ús    „ š	A0£AÁA0ÁA+Á+A0)TN)NN©r   )
Ú__name__Ú
__module__Ú__qualname__r   r    r"   r)   r.   r7   Ú__classcell__©r   s   @r   r   r   	   s"   ø„ ô=ò7ó$=óLõ.=÷,r   r   c                   ó4  ‡ — e Zd Zˆ fd„Zd„ Zˆ fd„Zed„ «       Zej                  d„ «       Zed„ «       Z	e	j                  d„ «       Z	ed„ «       Z
e
j                  d	„ «       Z
ed
„ «       Zej                  d„ «       Zed„ «       Zed„ «       Zd„ Zed„ «       Zˆ xZS )r   c                 óö   •— t        t        | �
  d g|¢­|ddœ|¤Ž 	 | j                  d«      }t        |fi | j                  ¤Ž| _        y # t        $ r% | j                  d«      }|d   d   › d|d   › d	�}Y ŒIw xY w)
Nr(   )r   Úexpected_typeÚrepositoriesÚ	workspaceÚlinksr   z/?q=project.key="Úslugú")	r   r   r   Úget_linkÚKeyErrorÚget_datar   r   Ú_Project__repositories)r   r   r   r   r   rC   r   s         €r   r   zProject.__init__|   s˜   ø€ ÜŒg�tÑ% dÐ`¨TÑ`¸ÈIÑ`ÐY_Ò`ð	WØ—-‘- Ó/ˆCô 2°#ÑP¸×9OÑ9OÑPˆÕøô ò 	WØŸ™ kÓ2ˆIØ˜wÑ'¨Ñ/Ð0Ð0AÀ)ÈFÑBSÐATÐTUÐVŠCð	Wús   �A
 Á
+A8Á7A8c                 óF   — | j                  | j                  d|¬«      «      S )aL  
        Update the project properties. Fields not present in the request body are ignored.

        :param kwargs: dict: The data to update.

        :return: The updated project

        API docs: https://developer.atlassian.com/bitbucket/api/2/reference/resource/workspaces/%7Bworkspace%7D/projects/%7Bproject_key%7D#put
        Nr   )Ú_update_dataÚput)r   r   s     r   ÚupdatezProject.update…   s"   € ð × Ñ  §¡¨$°V Ó!<Ó=Ð=r   c                 ó<   •— t         t        | �  d«      }|�d|v ry|S )zâ
        Delete the project.

        :return: The response on success

        API docs: https://developer.atlassian.com/bitbucket/api/2/reference/resource/workspaces/%7Bworkspace%7D/projects/%7Bproject_key%7D#delete
        NÚerrors)r   r   Údelete)r   r   r   s     €r   rQ   zProject.delete‘   s*   ø€ ô ”W˜dÑ*¨4Ó0ˆØˆ<˜8 tÑ+ØØˆr   c                 ó$   — | j                  d«      S )zThe project namer   ©rI   ©r   s    r   r   zProject.namež   s   € ð �}‰}˜VÓ$Ð$r   c                 ó&   — | j                  |¬«      S )zSetter for the project name)r   ©rN   )r   r   s     r   r   zProject.name£   s   € ð �{‰{ ˆ{Ó%Ð%r   c                 ó$   — | j                  d«      S )zThe project keyr   rS   rT   s    r   r   zProject.key¨   s   € ð �}‰}˜UÓ#Ð#r   c                 ó&   — | j                  |¬«      S )zSetter for the project keyr9   rV   )r   r   s     r   r   zProject.key­   s   € ð �{‰{˜sˆ{Ó#Ð#r   c                 ó$   — | j                  d«      S )zThe project descriptionr   rS   rT   s    r   r   zProject.description²   s   € ð �}‰}˜]Ó+Ð+r   c                 ó&   — | j                  |¬«      S )z"Setter for the project description)r   rV   )r   r   s     r   r   zProject.description·   s   € ð �{‰{ {ˆ{Ó3Ð3r   c                 ó$   — | j                  d«      S )zThe project private flagr   rS   rT   s    r   r   zProject.is_private¼   ó   € ð �}‰}˜\Ó*Ð*r   c                 ó&   — | j                  |¬«      S )z#Setter for the project private flag)r   rV   )r   r   s     r   r   zProject.is_privateÁ   s   € ð �{‰{ jˆ{Ó1Ð1r   c                 ó$   — | j                  d«      S )zThe project creation timeÚ
created_onrS   rT   s    r   r_   zProject.created_onÆ   r\   r   c                 ó&   — | j                  dd«      S )zThe project last update timeÚ
updated_onznever updatedrS   rT   s    r   ra   zProject.updated_onË   s   € ð �}‰}˜\¨?Ó;Ð;r   c                 óF   — | j                  | j                  d«      d¬«      S )zThe project avatarr   T)Úabsolute)r.   rG   rT   s    r   Ú
get_avatarzProject.get_avatarÐ   s   € à�x‰x˜Ÿ™ hÓ/¸$ˆxÓ?Ð?r   c                 ó   — | j                   S )zThe project repositories)rJ   rT   s    r   rB   zProject.repositoriesÔ   s   € ð ×"Ñ"Ð"r   )r:   r;   r<   r   rN   rQ   Úpropertyr   Úsetterr   r   r   r_   ra   rd   rB   r=   r>   s   @r   r   r   {   s	  ø„ ôQò
>ôð ñ%ó ð%ð 
‡[�[ñ&ó ð&ð ñ$ó ð$ð 	‡Z�Zñ$ó ð$ð ñ,ó ð,ð ×Ññ4ó ð4ð ñ+ó ð+ð ×Ññ2ó ð2ð ñ+ó ð+ð ñ<ó ð<ò@ð ñ#ó ô#r   r   N)Úrequestsr   Úbaser   rB   r   r   r   © r   r   ú<module>rk      s/   ðõ Ý %å .ôoÐ!ô oôd\#Ð õ \#r   