ó
    †~i*"  ã                   óÊ   • S r SSKrSSKrSSKJr  / SQrS r\" SSS9SS	 j5       r\" SS
S9\R                  " SSS9SS j5       5       r
\R                  " SSS9S 5       rS rg)a
  
*****
Pajek
*****
Read graphs in Pajek format.

This implementation handles directed and undirected graphs including
those with self loops and parallel edges.

Format
------
See http://vlado.fmf.uni-lj.si/pub/networks/pajek/doc/draweps.htm
for format information.

é    N)Ú	open_file)Ú
read_pajekÚparse_pajekÚgenerate_pajekÚwrite_pajekc              #   óð  #   • U R                   S:X  a  SnOU R                   nSU R                  5        3v •  [        U 5      n[        [	        U[        S[        U5      S-   5      5      5      nU GHA  nU R                  R                  U0 5      R                  5       nUR                  SS5      nUR                  SS5      n [        UR                  SX4   5      5      nXƒU'   UR                  SS5      n
SR                  [        [         X„XgU
45      5      nUR#                  5        H�  u  pÍ[%        U[&        5      (       a3  UR)                  5       S:w  a  US[!        U5       S[!        U5       3-  nMM  [*        R,                  " SU S[%        U[&        5      (       a  SOS S35        Mƒ     Uv •  GMD     U R/                  5       (       a  Sv •  OSv •  U R1                  SS9 Hç  u  pínUR                  5       nUR                  SS5      nSR                  [        [         X>   X=   U45      5      nUR#                  5        H�  u  pÍ[%        U[&        5      (       a3  UR)                  5       S:w  a  US[!        U5       S[!        U5       3-  nMM  [*        R,                  " SU S[%        U[&        5      (       a  SOS S35        Mƒ     Uv •  Mé     g
! [         a  n	U	=R                  S	-  sl        e S
n	A	ff = f7f)zÌGenerate lines in Pajek graph format.

Parameters
----------
G : graph
   A Networkx graph

References
----------
See http://vlado.fmf.uni-lj.si/pub/networks/pajek/doc/draweps.htm
for format information.
Ú ÚNetworkXz
*vertices é   Úxg        ÚyÚid)zSPajek format requires 'id' to be an int(). Refer to the 'Relabeling nodes' section.NÚshapeÚellipseÚ zNode attribute z is not processed. zEmpty attributezNon-string attributeÚ.ú*arcsú*edgesT)ÚdataÚweightg      ð?zEdge attribute )ÚnameÚorderÚlistÚdictÚzipÚrangeÚlenÚnodesÚgetÚcopyÚpopÚintÚ
ValueErrorÚargsÚjoinÚmapÚ	make_qstrÚitemsÚ
isinstanceÚstrÚstripÚwarningsÚwarnÚis_directedÚedges)ÚGr   r   Ú
nodenumberÚnÚnar   r   r   Úerrr   ÚsÚkÚvÚuÚedgedataÚdÚvalues                     ÚU/home/mande/repo/quber/.venv/lib/python3.13/site-packages/networkx/readwrite/pajek.pyr   r      s²  é € ð 	‡v�v�ƒ|Ø‰à�v‰vˆð �q—w‘w“y�kÐ
"Ò"Ü�‹G€Eä”c˜%¤ q¬#¨e«*°q©.Ó!9Ó:Ó;€JÜˆð �W‰W�[‰[˜˜BÓ×$Ñ$Ó&ˆØ�F‰F�3˜ÓˆØ�F‰F�3˜Óˆð		Ü�R—V‘V˜D *¡-Ó0Ó1ˆBð �1‰Ø—‘�w 	Ó*ˆØ�H‰H”Sœ R¨A°%Ð$8Ó9Ó:ˆà—H‘H–J‰DˆAÜ˜!œS×!Ñ! a§g¡g£i°2£oØ�qœ 1›˜ a¬	°!« ~Ð6Ñ6’ä—’Ø% a SÐ(;ÔR\Ð]^Ô`c×RdÑRdÑ=Nð  kAð  <Cð  CDð  Eöñ	 ð �ñ7 ð< 	‡}�}‡�Ø‹àŠØŸ'™' t˜'Ó,‰ˆˆhØ�M‰M‹OˆØ—‘�h Ó$ˆØ�H‰H”Sœ Z¡]°J±MÀ5Ð$IÓJÓKˆØ—G‘G–I‰DˆAÜ˜!œS×!Ñ! a§g¡g£i°2£oØ�qœ 1›˜ a¬	°!« ~Ð6Ñ6’ä—’Ø% a SÐ(;ÔR\Ð]^Ô`c×RdÑRdÑ=Nð  kAð  <Cð  CDð  Eöñ	 ð Œò -øô5 ó 	Ø�HŠHð ñ �Hð ûð	üs+   ‚B?K6ÃKÃG/K6Ë
K3ËK.Ë.K3Ë3K6r   Úwb)Úmodec                 ór   • [        U 5       H(  nUS-  nUR                  UR                  U5      5        M*     g)a`  Write graph in Pajek format to path.

Parameters
----------
G : graph
   A Networkx graph
path : file or string
   File or filename to write.
   Filenames ending in .gz or .bz2 will be compressed.

Examples
--------
>>> G = nx.path_graph(4)
>>> nx.write_pajek(G, "test.netP4")

Warnings
--------
Optional node attributes and edge attributes must be non-empty strings.
Otherwise it will not be written into the file. You will need to
convert those attributes to strings if you want to keep them.

References
----------
See http://vlado.fmf.uni-lj.si/pub/networks/pajek/doc/draweps.htm
for format information.
Ú
N)r   ÚwriteÚencode)r0   ÚpathÚencodingÚlines       r<   r   r   c   s1   € ô8 ˜qÖ!ˆØ�‰ˆØ�
‰
�4—;‘;˜xÓ(Ö)ò "ó    ÚrbT)ÚgraphsÚreturns_graphc                 ó2   ^• U4S jU  5       n[        U5      $ )a  Read graph in Pajek format from path.

Parameters
----------
path : file or string
   Filename or file handle to read.
   Filenames ending in .gz or .bz2 will be decompressed.

Returns
-------
G : NetworkX MultiGraph or MultiDiGraph.

Examples
--------
>>> G = nx.path_graph(4)
>>> nx.write_pajek(G, "test.net")
>>> G = nx.read_pajek("test.net")

To create a Graph instead of a MultiGraph use

>>> G1 = nx.Graph(G)

References
----------
See http://vlado.fmf.uni-lj.si/pub/networks/pajek/doc/draweps.htm
for format information.
c              3   óD   >#   • U  H  oR                  T5      v •  M     g 7f)N)Údecode)Ú.0rE   rD   s     €r<   Ú	<genexpr>Úread_pajek.<locals>.<genexpr>¢   s   øé € Ð4ªt t�[‰[˜×"Ð"ªtùs   ƒ )r   )rC   rD   Úliness    ` r<   r   r   „   s   ø€ ô< 5©tÓ4€EÜ�uÓÐrF   c                 ó¤	  ^• SSK n[        U [        5      (       a  [        U R	                  S5      5      n [        U  Vs/ s H  o"R                  S5      PM     sn5      n [        R                  " 5       n/ mU (       GaÅ   [        U 5      nUR                  5       R                  S5      (       a%   UR	                  SS5      u  pVXcR                  S'   GOfUR                  5       R                  S5      (       Ga7  0 nUR	                  5       u  pH[        [        U5      5       GH  n	[        U 5      n UR	                  [        U5      R                  S5      5       V
s/ s H  oªR!                  S5      PM     nn
USS	 u  pÅTR%                  U5        UR'                  U5        XWU'   XÃR(                  U   S
'    US	S u  p­nUR(                  U   R+                  [-        U
5      [-        U5      US.5        [/        USSS	2   USSS	2   5      nUR(                  U   R+                  U5        GM     GO
UR                  5       R                  S5      (       d%  UR                  5       R                  S5      (       Gaa  UR                  5       R                  S5      (       a  [        R0                  " U5      nUR                  5       R                  S5      (       a  UR3                  5       nU  Hì  n UR	                  [        U5      R                  S5      5       V
s/ s H  oªR!                  S5      PM     nn
[5        U5      S	:  a  M\  USS	 u  nnWR7                  UU5      nUR7                  UU5      n0 n US	S nUR+                  S[-        US   5      05        [/        USSS	2   USSS	2   5      nUR+                  U5        UR8                  " UU40 UD6  Mî     O`UR                  5       R                  S5      (       a<  [        R:                  " U5      nU4S j[=        U 5       5       nUR?                  U5        U (       a  GMÅ  U$ s  snf !    U$ = f! [         a     N%f = fs  sn
f ! ["         a    UR	                  [        U5      5      n GNf = f!    GN¥= fs  sn
f ! ["         a    UR	                  [        U5      5      n GN“f = f!    GN8= f)zÀParse Pajek format graph from string or iterable.

Parameters
----------
lines : string or iterable
   Data in Pajek format.

Returns
-------
G : NetworkX graph

See Also
--------
read_pajek

r   Nr@   z*networkr   r   z	*verticeszutf-8é   r   é   )r   r   r   é   r   r   z*edgeé   r   é   z*matrixc              3   ó¼   >#   • U  HQ  u  p[        UR                  5       5        H.  u  p4[        U5      S :w  d  M  TU   TU   S[        U5      04v •  M0     MS     g7f)r   r   N)Ú	enumerateÚsplitr"   )rM   ÚrowrE   Úcolr   Úlabelss        €r<   rN   Úparse_pajek.<locals>.<genexpr>  s[   øé € ð â#3‘K�SÜ#,¨T¯Z©Z«\×#:‘K�SÜ�t“9 ‘>ó B�˜‘˜f S™k¨H´c¸$³iÐ+@ÕAá#:ñ BÚ#3ùs
   ƒ4A»!A) Úshlexr)   r*   ÚiterrY   ÚrstripÚnxÚMultiDiGraphÚnextÚlowerÚ
startswithÚgraphr#   r   r"   rB   rL   ÚAttributeErrorÚappendÚadd_noder   ÚupdateÚfloatr   Ú
MultiGraphÚto_directedr   r   Úadd_edgeÚDiGraphrX   Úadd_edges_from)rP   r^   rE   r0   ÚlÚlabelr   Ú
nodelabelsÚnnodesÚir   Ú	splitliner   r   r   Ú
extra_attrÚuiÚvir8   r7   Ú	edge_dataÚwÚadj_listr\   s                          @r<   r   r   ¦   s9  ø€ ó$ ô �%œ×ÑÜ�U—[‘[ Ó&Ó'ˆÜ±Ó6²¨—+‘+˜dÖ#±Ñ6Ó7€EÜ
�ŠÓ€AØ€Fß
ð	Ü�U“ˆAð �7‰7‹9×Ñ 
×+Ñ+ð'ØŸg™g d¨AÓ.‘�ð
 #'—‘˜“Ø�W‰W‹Y×!Ñ! +×.Ò.ØˆJØŸ™›	‰IˆAÜœ3˜v›;×'�Ü˜“K�ð4à38·;±;¼sÀ1»v¿}¹}ÈWÓ?UÔ3Vó!Ú3V¨aŸ™ Ö)Ñ3Vð ð !ð
 & a¨˜N‘	�Ø—‘˜eÔ$Ø—
‘
˜5Ô!Ø!&˜2‘Ø')—‘˜‘˜tÑ$ðØ"+¨A¨a .‘K�A˜%Ø—G‘G˜E‘N×)Ñ)Ü# A›h¬U°1«XÀÑFôô
 ! ¨1¨4¨a¨4¡°)¸A¸D¸q¸D±/ÓB�
Ø—‘˜‘×%Ñ% j×1ó+ (ð, �W‰W‹Y×!Ñ! (×+Ñ+¨q¯w©w«y×/CÑ/CÀG×/LÒ/LØ�w‰w‹y×#Ñ# G×,Ñ,ä—M’M !Ó$�Ø�w‰w‹y×#Ñ# G×,Ñ,à—M‘M“O�Û�ð4à38·;±;¼sÀ1»v¿}¹}ÈWÓ?UÔ3Vó!Ú3V¨aŸ™ Ö)Ñ3Vð ð !ô �y“> AÓ%ÙØ" 1 Q˜‘��BØ—N‘N 2 rÓ*�Ø—N‘N 2 rÓ*�à�	ðà! ! A˜�AØ×$Ñ$ h´°a¸±d³Ð%<Ô=ô
 ! ¨1¨4¨a¨4¡°)¸A¸D¸q¸D±/ÓB�
Ø× Ñ  Ô,ð —
’
˜1˜aÑ- 9Ô-ò7 ð8 �W‰W‹Y×!Ñ! )×,Ñ,Ü—
’
˜1“ˆAôä#,¨UÔ#3óˆHð ×Ñ˜XÔ&÷c ‰%ðf €Hùòm 7øð	Øð^ €HûôW ó áðüò!øô &ó 4Ø %§¡¬C°«FÓ 3“Ið4ûðÚüò!øô &ó 4Ø %§¡¬C°«FÓ 3“Ið4ûðÚúsƒ   ¾QÁ?Q
 Â/Q Ä0+Q'ÅQ"Å5Q'Æ6<RË,+RÌRÌ1RÍ3$S
Ñ
QÑ
QÑQÑ"Q'Ñ'$RÒRÒRÒRÒ$SÓSÓ
Sc                 ó^   • [        U [        5      (       d  [        U 5      n SU ;   a  SU  S3n U $ )z[Returns the string representation of t.
Add outer double-quotes if the string has a space.
r   Ú")r)   r*   )Úts    r<   r'   r'     s3   € ô �aœ×ÑÜ�‹FˆØ
ˆaƒxØ�ˆs�!ˆHˆØ€HrF   )zUTF-8)Ú__doc__r,   Únetworkxra   Únetworkx.utilsr   Ú__all__r   r   Ú_dispatchabler   r   r'   © rF   r<   Ú<module>r†      s—   ðñó  ã Ý $â
H€òGñT ˆ1�4Ñó*ó ð*ñ@ ˆ1�4ÑØ×Ò˜¨TÑ2óó 3ó ðð@ ×Ò˜¨TÑ2ñló 3ðló^rF   