
    eiH                         d Z ddlmZ ddlZddlmZ ddlZddlZddlm	Z
 ddlZddlZddlZddlZddlZ ej                   dej"                        Z ej                   dej"                        ZdZ G d d	e      Z G d
 de      Z G d dej0                        Z G d de      Z G d de      ZddZddZddZddZ e!dk(  rddl"Z" e"jD                   e d             yy)z7Discover and load entry points from installed packages.    )contextmanagerN)import_modulezY
(?P<modulename>\w+(\.\w+)*)
(:(?P<objectname>\w+(\.\w+)*))?
\s*
(\[(?P<extras>.+)\])?
$
zC
(?P<dist_version>[^/\\]+)\.(dist|egg)-info
[/\\]entry_points.txt$
z0.4c                   6    e Zd ZdZd Zd Zeed               Zy)BadEntryPointz0Raised when an entry point can't be parsed.
    c                     || _         y Nepstr)selfr
   s     M/var/www/html/glpi_dashboard/venv/lib/python3.12/site-packages/entrypoints.py__init__zBadEntryPoint.__init__$   s	    
    c                      d| j                   z  S )Nz#Couldn't parse entry point spec: %rr	   r   s    r   __str__zBadEntryPoint.__str__'   s    4tzzAAr   c               #   ~   K   	 d  y # t         $ r(} t        j                  t        |              Y d } ~ y d } ~ ww xY wwr   )r   warningswarnstr)es    r   err_to_warningszBadEntryPoint.err_to_warnings*   s0     	" 	"MM#a&!!	"s    =	 =	:5=:=N)	__name__
__module____qualname____doc__r   r   staticmethodr   r    r   r   r   r   !   s.    B "  "r   r   c                       e Zd ZdZd Zd Zy)NoSuchEntryPointzCRaised by :func:`get_single` when no matching entry point is found.c                      || _         || _        y r   )groupname)r   r!   r"   s      r   r   zNoSuchEntryPoint.__init__4   s    
	r   c                 N    dj                  | j                  | j                        S )Nz'No {!r} entry point found in group {!r})formatr"   r!   r   s    r   r   zNoSuchEntryPoint.__str__8   s    8??		4::VVr   N)r   r   r   r   r   r   r   r   r   r   r   2   s    MWr   r   c                       e Zd Z ee      Zy)CaseSensitiveConfigParserN)r   r   r   r   r   optionxformr   r   r   r&   r&   <   s    s#Kr   r&   c                   2    e Zd ZddZd Zd Zedd       Zy)
EntryPointNc                 J    || _         || _        || _        || _        || _        y r   )r"   module_nameobject_nameextrasdistro)r   r"   r+   r,   r-   r.   s         r   r   zEntryPoint.__init__A   s'    	&&r   c           	      p    d| j                   d| j                  d| j                  d| j                  d	S )NzEntryPoint(, ))r"   r+   r,   r.   r   s    r   __repr__zEntryPoint.__repr__H   s+    YY(($*:*:DKKI 	Ir   c                     t        | j                        }|}| j                  r,| j                  j                  d      D ]  }t	        ||      } |S )z:Load the object to which this entry point refers.
        .)r   r+   r,   splitgetattr)r   modobjattrs       r   loadzEntryPoint.loadL   sS     D,,-((..s3 )c4()
r   c                     t         j                  |      }|r;|j                  ddd      \  }}}|t        j                  d|      } | |||||      S t        |      )a  Parse an entry point from the syntax in entry_points.txt

        :param str epstr: The entry point string (not including 'name =')
        :param str name: The name of this entry point
        :param Distribution distro: The distribution in which the entry point was found
        :rtype: EntryPoint
        :raises BadEntryPoint: if *epstr* can't be parsed as an entry point.
        
modulename
objectnamer-   z,\s*)entry_point_patternmatchr!   rer5   r   )clsr
   r"   r.   mr7   r8   r-   s           r   from_stringzEntryPoint.from_stringV   sd      %%e, ww|\8LCf!'62tS#vv66&&r   )NNr   )r   r   r   r   r2   r:   classmethodrC   r   r   r   r)   r)   @   s&    I ' 'r   r)   c                   (    e Zd Zd Zed        Zd Zy)Distributionc                      || _         || _        y r   r"   version)r   r"   rI   s      r   r   zDistribution.__init__j   s    	r   c                 J    d}d|v r|j                  dd      \  }} | ||      S )zParse a distribution from a "name-version" string

        :param str name: The name-version string (entrypoints-0.3)
        Returns an :class:`Distribution` object
        N-   )r5   )rA   r"   rI   s      r   from_name_versionzDistribution.from_name_versionn   s1     $; JJsA.MD'4!!r   c                 <    d| j                   d| j                  dS )NzDistribution(r0   r1   rH   r   s    r   r2   zDistribution.__repr__z   s    )-DLLAAr   N)r   r   r   r   rD   rM   r2   r   r   r   rF   rF   i   s!     	" 	"Br   rF   c              #     K   | t         j                  } t               }| D ]	  }|j                  d      j	                  d      r{t        j                  |      }t        j                  |j                  d      d         }|dk(  r|j                  |v ru|j                  |j                         t        j                  |      rSt        j                  |dd      }t        j                  |      rt        d      }|j!                  |g       ||f nt#        j$                  |      rt#        j&                  |      }	 |j)                  d	      }	t        d      }|j-                  |	      5 }
t/        j0                  |
      }|j3                  |t        j                  |dd      
       d d d        ||f n3t#        j$                  |      rt#        j&                  |      5 }|j5                         D ]  }	t6        j9                  |	j:                        }|s%|j=                  d      }t        j                  |      }|dk(  r|j                  |v r_|j                  |j                         t        d      }|j-                  |	      5 }
t/        j0                  |
      }|j3                  |t        j                  ||	j:                        
       d d d        ||f  	 d d d        t?        j@                  tC        jD                  t        j                  tC        jF                  |      dd            tC        jD                  t        j                  tC        jF                  |      dd                  D ]  } t        jH                  t        j                  t        jJ                  |                   d   }t        j                  |      }|dk(  r|j                  |v rj|j                  |j                         t        d      }|j!                  | g       ||f   y # t*        $ r Y w xY w# 1 sw Y   xY w# 1 sw Y   sxY w# 1 sw Y   oxY ww)Nz/\z.eggr   firstzEGG-INFOzentry_points.txt)=)
delimiterszEGG-INFO/entry_points.txt)sourcedist_versionz*.dist-infoz
*.egg-info)&syspathsetrstripendswithospbasenamerF   rM   r5   r"   addisdirjoinisfiler&   readzipfile
is_zipfileZipFilegetinfoKeyErroropenioTextIOWrapper	read_fileinfolistfile_in_zip_patternr?   filenamer!   	itertoolschainglobiglobescapesplitextdirname)rV   repeated_distrodistro_names_seenfolderegg_namer.   ep_pathcpzinfoffuzfrB   distro_name_versions                  r   iter_files_distrosr   ~   s    |xx  D==((0||F+H!33HNN64J14MNF7*(99!!&++.yy ((6:7IJ::g&2fEBGGWI&f*$##F+OOF+99%@AD /&AVVD\ AQ))!,BLLCHH
,>-@L AA &j  '( %BKKM %D+11$--@A *+''.*A');;<OPF'72!'0A!A %))&++62fEB Q!--a0R0OPQ f*$#%%* OOJJsxxF 3]DVWXJJsxxF 3\CUVW
 	D #&,,s||CKK<M/N"OPQ"R!334GHF7*(99!!&++.*f=BGGTFOf*	mD,   A A.Q Q% %su   EQ&P/Q&3>P?1;Q&,B(QAQ	Q,EQ&/	P<8Q&;P<<Q&?Q		Q&QQQ#	Q&c                     t        |      D ]P  \  }}| |v s|||    v s||    |   }t        j                         5  t        j	                  |||      cddd       c S  t        | |      # 1 sw Y   hxY w)zFind a single entry point.

    Returns an :class:`EntryPoint` object, or raises :exc:`NoSuchEntryPoint`
    if no match is found.
    rV   N)r   r   r   r)   rC   r   )r!   r"   rV   configr.   r
   s         r   
get_singler      s     -$7 CVO$&-"75M$'E..0 C!--eT6BC CC 5$
''C Cs   A,,A5	c                 j    i }t        | |      D ]   }|j                  |vs|||j                  <   " |S )zwFind a group of entry points with unique names.

    Returns a dictionary of names to :class:`EntryPoint` objects.
    r   )get_group_allr"   )r!   rV   resulteps       r   get_group_namedr      s?    
 FE- !77&  F277O! Mr   c           
         g }t        |      D ]h  \  }}| |v s||    j                         D ]H  \  }}t        j                         5  |j	                  t
        j                  |||             ddd       J j |S # 1 sw Y   XxY w)zZFind all entry points in a group.

    Returns a list of :class:`EntryPoint` objects.
    r   N)r   itemsr   r   appendr)   rC   )r!   rV   r   r   r.   r"   r
   s          r   r   r      s    
 F,$7 OF?%e}224 Oe"224 OMM*"8"8f"MNO OOO MO Os   'A<<B__main__console_scripts)NrP   r   )#r   
contextlibr   ro   	importlibr   rg   rm   os.pathrV   rZ   r@   rU   r   ra   configparsercompileVERBOSEr>   rk   __version__	Exceptionr   r   ConfigParserr&   objectr)   rF   r   r   r   r   r   pprintr   r   r   <module>r      s    = &  # 	   	 
    bjj " ZZ  !bjj " ZZ 
 "I ""Wy W$ 9 9 $'' ''RB6 B*N`(	 zFMM- 123 r   