
    11ie                     &   S SK r S SKrS SKrS SKrS SKrS SKrS SKrS SKrS SKrS SK	J
r
JrJr  S SKJr  S SKJr  SSKJr  / SQrS r\R*                   " S	 S
5      5       rS\S\4S jrSS jrS\R4                  \   S\R6                  \   4S jrg)    N)GraphURIRefLiteral)URIReference)Duration   )is_url)group_triplesto_jsonTripleformat_valuec                 x   [        U [        R                  [        R                  [        R                  45      (       a  U R	                  5       nU(       a.  UR
                  R                  S:X  a  UR                  S5      S   nU(       a2  UR
                  R                  S:X  a  [        R                  " SSU5      n[        U [        R                  [        R                  45      (       aM  UR                  S5      u  p4nU(       a   SR                  X5R                  S	5      5      $ UR                  S
S5      $ U$ [        U [        R                  5      (       a  UR
                  R                  U 5      $ [        U [         5      (       a  UR
                  R                  U 5      $ [        U ["        R$                  5      (       a  ['        U 5      n [        U [(        5      (       a  U R+                  5       $ [        U [,        5      (       a  UR
                  R                  U 5      $ [        U [.        R0                  5      (       a  [3        U 5      $ [        U [&        5      (       aW  [4        R6                  " U 5      (       a  S$ [4        R8                  " U 5      (       a  SR                  U S:  a  S5      $ S5      $ U $ U $ )z$
Format values as JSON-LD literals.
timeTdatez	T[0-9.:]+ .z{}.{}0z+00:00ZNaNz{}INFr   -)
isinstancedatetimer   r   	isoformatdatatypebasesplitresub	partitionformatrstripreplace	timedelta	formattedr   decimalDecimalfloatr   unsplitbytespathlibPathstrmathisnanisinf)valuecolresstamp_millisecondss         E/home/james-whalen/.local/lib/python3.13/site-packages/csvw/jsonld.pyr   r      s    %(--):):HMMJKKoo3<<$$.))C.$C3<<$$.&&b#.Ceh//?@@%(]]3%7"ElFR7>>%)<)<S)AB 2]]8S12
%++,,||%%e,,%""||%%e,,%))e%&&}}%||%%e,,%&&5z%

5))u 	V8<

58I8IGNN%!)34	V134	VOT	VL    c                       \ rS rSrSr\R                  " 5       r\R                  " 5       r\R                  " 5       r	S r
\S 5       rSrg)r   5   z$
A table cell's data as RDF triple.
c                     [        U R                  5      [        U R                  5      [        U R                  5      (       a  [        U R                  5      4$ [        U R                  5      4$ )N)r   aboutpropertyr	   r2   r   )selfs    r8   as_rdflib_tripleTriple.as_rdflib_triple>   s[    4::4==!"("4"4F4::O 	O ;B$**:MO 	Or9   c                    U(       a  UR                   OSnU(       a  UR                  OUR                  S5      nU(       a  UR                  XXgSS9nUS:H  n	U(       a  UR                  OUR                  S5      n
U
(       a  UR                  XXgU	S9n[        XR5      nSnU(       a  UR                  OSnU(       a  UR                  XXgS9=(       d    UnU " XUS9$ )	z


        NpropertyUrlT)_row_nameqnamerdf:typevalueUrl)rD   rE   r=   r>   r2   )headerrC   inheritexpandrH   r   aboutUrl)clstabler3   rowpropvalrownumrE   rC   is_typerH   srM   s                r8   from_colTriple.from_colD   s    
 "

t),coo%--2N<<vRV<WD*$#&3<<EMM*,E,,x6g,VC3$#&3<<DXEJA55r9    N)__name__
__module____qualname____firstlineno____doc__attribr=   r>   r2   r@   classmethodrV   __static_attributes__rX   r9   r8   r   r   5   sD     GGIEwwyHGGIEO 6 6r9   r   datareturnc                 v   [         R                  " 5       0 p!U  H  nUR                  S5      nU(       a  X1U'   UR                  5        Hz  n[	        U[
        5      (       d  U/OU HY  n[	        U[        5      (       d  M  UR                  S5      nU(       d  M4  UR                  Xv/ 45      S   R                  U5        M[     M|     M     UR                  5        HD  u  p[        U	5      S:X  d  M  US   U;   d  M!  UR                  UR                  US   5      5        MF     [        UR                  5       5      $ )z~
Inline referenced items to force a deterministic graph layout.

.. see:: https://w3c.github.io/json-ld-framing/#introduction
@idr   )collectionsOrderedDictgetvaluesr   listdict
setdefaultappendlenupdatepop)
rb   itemsrefsitemitemidvsvrefidrefsubjectss
             r8   framerz   [   s     ))+R4% &M++-B!+B!5!5bT2=a&&EE%LEu2w7:AA$G	 >  	  x=A#e*"5JJuyyU,- ' r9   c           
         [        U [        5      (       a%  SU ;   a  U S   n [        U 5      S:X  a  SU ;   a  U S   n [        U [        5      (       a5  U R                  5        VVs0 s H  u  p#US:X  a  SOU[	        X1S9_M     snn$ [        U [
        5      (       a=  [        U 5      S:X  a  U(       a  [	        U S   US9$ U  Vs/ s H  n[	        X1S9PM     sn$ U $ s  snnf s  snf )z7
Simplify JSON-LD data by refactoring trivial objects.
z@valuer   re   rG   z@typeflatten_listr   )r   rk   rn   rq   r   rj   )objr}   krv   s       r8   r   r   r   s     #ts?h-Cs8q=Uc\e*C#t 		%# JGAwq/TT#% 	% #ts8q=\3q6==?BCs!5sCCJ% Ds   #CCtriplesc           
        ^ / nU  H  n[        UR                  [        5      (       a  U Hf  nUR                  UR                  :X  d  M  [        UR                  [        5      (       d  M@  UR                  R	                  UR                  5          M     UR                  U5        M  UR                  U5        M     [        R                  " 5       m/ n U H  nUR                  c+  UR                  S:X  a  UR                  TUR                  '   M;  UR                  (       d  UR                  T;   ai  [        TUR                     [        5      (       d  TUR                     /TUR                  '   TUR                     R                  UR                  5        M  UR                  TUR                  '   M  U R                  U5        M     U (       d  T/$ [        5       nU  H"  nUR                  UR                  5       5        M$     ST;   aK  TR                  5        H7  u  pVUS:w  d  M  UR                  [        TS   XVS9R                  5       5        M9     UR                  SS9n[        [!        ["        R$                  " U5      5      5       VV	s/ s H  u  pU['        U	SS94PM     nnn	[)        UU4S jS9 V
s/ s H  oS	   PM	     nn
T(       a,  ST;  a&  [+        U5      S	:X  a  TR-                  US
   5        T/$ U$ s  sn	nf s  sn
f )z8
Group and frame triples into a `list` of JSON objects.
re   rI   zjson-ld)r"   Tr|   c                 `   > U S   R                  S5      TR                  S5      :X  a  S$ U S   $ )Nr   re   r   r   )rh   )ogroupeds    r8   <lambda>group_triples.<locals>.<lambda>   s-    1%GKK4F!F2PAaDPr9   )keyr   r   )r   r2   rj   r>   extendrm   rf   rg   r=   r   addr@   rq   r   	serialize	enumeraterz   jsonloadsr   sortedrn   ro   )r   mergedtripletgrQ   rR   r4   irv   r   r   s              @r8   r
   r
      sn    FfllD))::0Z5N5NGGNN6<<0 
 f%MM&!  %%'GG<<FOOu$<'-||GFOO$<<??g-%gfoo&>EE4;FOO4L3M0FOO,33FLLA/5||GFOO,v&  yA	f%%'(  IDu}f75>DL]]_` ) ++Y+
'C:CE$**UX/DZ:[
\:[$!Awqt,-:[C
\PR S RAQ4 RC S E(c#h!ms1vyJ ]Ss   L<L)F)r   r   r/   typingr'   r,   r   rf   r^   rdflibr   r   r   rfc3986r   isodate.durationr   utilsr	   __all__r   rU   r   rj   rz   r   IterableListrk   r
   rX   r9   r8   <module>r      s    	         ) )   % 
@B "6 "6 "6J     .(76??62 7v{{47H 7r9   