
    j              
          d Z ddl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xZ
Zd	Zd
Z ej        d          ZerY eed          rMe                    d          D ]7Z eeef          5   ej        e           ddd           n# 1 swxY w Y   8d Z ee	dd          Z G d de          Z G d de          ZeZej        eej        e ej!        e ej"        e ej#        eiZ$d Z%d Z&d Z'd Z(ddl)m*Z*m+Z+m,Z,m-Z-m.Z.m/Z/m0Z0m1Z1 	 ddl2m3Z3 n# e4$ r Y nw xY wddl5m6Z6m7Z7m8Z8m9Z9m:Z:m;Z; ddl<m=Z=m>Z>m?Z?m@Z@ ddlAmBZB ddlCmDZD ddlT dS ) z
    cairocffi
    ~~~~~~~~~

    CFFI-based cairo bindings for Python. See README for details.

    :copyright: Copyright 2013-2019 by Simon Sapin
    :license: BSD, see LICENSE for details.

    N)suppress)find_library   )	constants)ffiz1.7.1z1.17.2)r         CAIROCFFI_DLL_DIRECTORIESadd_dll_directory;c                 r   g }|D ]B}t          |          }|r|g|R }|                    d                    |                     C|D ]@}	  | j        |          c S # t          $ r}|                    |           Y d}~9d}~ww xY wd                    d |D                       }t	          |          )z@Try various names for the same library, for different platforms.z no library called "{}" was foundN
c              3   4   K   | ]}t          |          V  d S N)str).0	exceptions     Y/home/ubuntu/budget-transfer-bot/.venv/lib/python3.11/site-packages/cairocffi/__init__.py	<genexpr>zdlopen.<locals>.<genexpr>7   s9       4 4$I4 4 4 4 4 4    )r   appendformatdlopenOSErrorjoin)	r   library_names	filenames
exceptionslibrary_namelibrary_filenamefilenamer   error_messages	            r   r   r   %   s"   J% I I'55 	I)6I66II299,GGI I I I  ) )	)3:h''''' 	) 	) 	)i((((((((	) II 4 4(24 4 4 4 4M
-
 
  s   A
B)BB)zcairo-2cairoz
libcairo-2)zlibcairo.so.2zlibcairo.2.dylibzlibcairo-2.dllc                       e Zd ZdZd Zd ZdS )_keeprefz:Function wrapper that keeps a reference to another object.c                 "    || _         || _        d S r   )reffunc)selfr'   r(   s      r   __init__z_keepref.__init__C   s    			r   c                       | j         |i | d S r   )r(   )r)   argskwargss      r   __call__z_keepref.__call__G   s    	4"6"""""r   N)__name__
__module____qualname____doc__r*   r.    r   r   r%   r%   A   s8        DD  # # # # #r   r%   c                   "     e Zd ZdZ fdZ xZS )
CairoErrorz*Raised when cairo returns an error status.c                 f    t          t          |                               |           || _        d S r   )superr5   r*   status)r)   messager8   	__class__s      r   r*   zCairoError.__init__M   s,    j$((111r   )r/   r0   r1   r2   r*   __classcell__)r:   s   @r   r5   r5   K   s>        44        r   r5   c                 0   | t           j        k    rt                              | t                    }t          j        t          j        d|                     }d|dt          j        t          	                    |                     } |||           dS )zBTake a cairo status code and raise an exception if/as appropriate.cairo_status_tzcairo returned z: N)
r   STATUS_SUCCESSSTATUS_TO_EXCEPTIONgetr5   r   stringcastr#   cairo_status_to_string)r8   r   status_namer9   s       r   _check_statusrE   ]   s    )))'++FJ??	j*:F!C!CDDKKE$@$@$H$HIIIKi((( *)r   c                  4    t                                           S )a^  Return the cairo version number as a single integer,
    such as 11208 for ``1.12.8``.
    Major, minor and micro versions are "worth" 10000, 100 and 1 respectively.

    Can be useful as a guard for method not available in older cairo versions::

        if cairo_version() >= 11000:
            surface.set_mime_data('image/jpeg', jpeg_bytes)

    )r#   cairo_versionr3   r   r   rG   rG   g   s        r   c                  ~    t          j        t                                                                        d          S )z@Return the cairo version number as a string, such as ``1.12.8``.ascii)r   rA   r#   cairo_version_stringdecoder3   r   r   rJ   rJ   u   s,    :e002233::7CCCr   c                  N    t           j        t                   t           j        d<   dS )u   Install cairocffi so that ``import cairo`` imports it.

    cairoffi’s API is compatible with pycairo as much as possible.

    r#   N)sysmodulesr/   r3   r   r   install_as_pycairorO   z   s     ;x0CKr   )SurfaceImageSurface
PDFSurface	PSSurface
SVGSurfaceRecordingSurfaceWin32SurfaceWin32PrintingSurface)
XCBSurface)PatternSolidPatternSurfacePatternGradientLinearGradientRadialGradient)FontFaceToyFontFace
ScaledFontFontOptions)Context)Matrix)*)Er2   osrM   
contextlibr   ctypes.utilr    r   r   VERSION__version__versionversion_infogetenvdll_directorieshasattrsplitpathr   FileNotFoundErrorr   r   r#   objectr%   	Exceptionr5   ErrorSTATUS_NO_MEMORYMemoryErrorSTATUS_READ_ERRORIOErrorSTATUS_WRITE_ERRORSTATUS_TEMP_FILE_ERRORSTATUS_FILE_NOT_FOUNDr?   rE   rG   rJ   rO   surfacesrP   rQ   rR   rS   rT   rU   rV   rW   xcbrX   ImportErrorpatternsrY   rZ   r[   r\   r]   r^   fontsr_   r`   ra   rb   contextrc   matrixrd   r3   r   r   <module>r      s  	 	 
			 



       $ $ $ $ $ $             +
 ")788 'wwr#677 '%%c** ' 'Xw 1233 	' 	' B &&&	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	'! ! !. 		+;	= 	=
# # # # #v # # #        	  '$g#%6 ) ) )! ! !D D D
1 1 1( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( (	 	 	 	D	               4 4 4 4 4 4 4 4 4 4 4 4                  s$   -B

B	B	
D DD