
    01i                       S SK Jr  S SKrS SKJrJrJr  S SKJ	r	  S SK
JrJr  S SKJr  \" SS9 " S	 S
5      5       r\" SS9 " S S5      5       r\" SS9 " S S5      5       r\" SS9 " S S5      5       r\" SS9 " S S5      5       r\" SS9 " S S5      5       r\" SS9 " S S5      5       r\" SS9 " S S5      5       r\" SS9 " S S5      5       r\" SS9 " S S5      5       r\" SS9 " S S5      5       r\" SS9 " S S 5      5       r\" SS9 " S! S"5      5       r\" SS9 " S# S$5      5       r\" SS9 " S% S&5      5       r\" SS9 " S' S(5      5       r\" SS9 " S) S*5      5       r\" SS9 " S+ S,5      5       r \" SS9 " S- S.5      5       r!\" SS9 " S/ S05      5       r"\" SS9 " S1 S25      5       r#\" SS9 " S3 S45      5       r$\" SS9 " S5 S65      5       r%\" SS9 " S7 S85      5       r&\" SS9 " S9 S:5      5       r'\" SS9 " S; S<5      5       r( " S= S>\)\	5      r*\ " S? S@5      5       r+\ " SA SB5      5       r,\ " SC SD\,5      5       r-\ " SE SF\,5      5       r.\ " SG SH\,5      5       r/\ " SI SJ\,5      5       r01 SKkr11 SLkr21 SMkr3SXSN jr4SYSO jr5SZSP jr6S[SQ jr7S\SR jr8S]SS jr9S^ST jr:S_SU jr;S`SV jr<SaSW jr=g)b    )annotationsN)asdict	dataclassfield)Enum)LiteralURIRef)from_n3T)frozenc                  4    \ rS rSr% S\S'   S\S'   S	S jrSrg)
TopologyStatus   strstatedict[str, t.Any]primaryTagsc                V   / n[         R                  " [         R                  U R                  5      n[         R                  " [         R                  U R                  5      n[        U[        5      (       d  UR                  SU[        U5      45        [        U[        5      (       d  UR                  SU[        U5      45        OQUR                  5        H=  u  pE[        U[        5      (       a  M  UR                  SU S3U[        U5      45        M?     U(       a  [        SU5      eg )Nr   r   zprimaryTags key ''zInvalid TopologyStatus values: )tcastAnyr   r   
isinstancer   appendtypedictitems
ValueError)selfinvalidr   primary_tagskeyvalues         W/home/james-whalen/.local/lib/python3.13/site-packages/rdflib/contrib/graphdb/models.py__post_init__TopologyStatus.__post_init__   s    13quudjj)vvaeeT%5%56%%%NNGUDK89,--NNM<l9KLM*002
!#s++NN&7uA$>T#Y#OP 3 >HH      NreturnNone__name__
__module____qualname____firstlineno____annotations__r$   __static_attributes__r'   r&   r#   r   r      s    J!!Ir&   r   c                  4    \ rS rSr% S\S'   S\S'   SS jrSrg)	RecoveryOperation"   r   namemessagec                   / n[         R                  " [         R                  U R                  5      n[         R                  " [         R                  U R                  5      n[        U[        5      (       d  UR                  SU[        U5      45        [        U[        5      (       d  UR                  SU[        U5      45        U(       a  [        SU5      eg )Nr5   r6   z"Invalid RecoveryOperation values: )
r   r   r   r5   r6   r   r   r   r   r   )r   r   r5   r6   s       r#   r$   RecoveryOperation.__post_init__'   s    13vvaeeTYY'&&-$$$NNFD$t*56'3''NNIwW>?A7KK r&   r'   Nr(   r+   r'   r&   r#   r3   r3   "   s    
ILLr&   r3   c                  f    \ rS rSr% SrS\S'   SrS\S'   \" \S9r	S\S	'   SS
 jr
\SS j5       rSrg)RecoveryStatus5   NzRecoveryOperation | Noner   
str | Noner6   default_factory	list[str]affectedNodesc                   / n[         R                  " [         R                  U R                  5      n[         R                  " [         R                  U R                  5      n[         R                  " [         R                  U R
                  5      nUb2  [        U[        5      (       d  UR                  SU[        U5      45        Ub2  [        U[        5      (       d  UR                  SU[        U5      45        [        U[        5      (       d  UR                  SU[        U5      45        OL[        U5       H=  u  pV[        U[        5      (       a  M  UR                  SU S3U[        U5      45        M?     U(       a  [        SU5      eg )Nr   r6   r@   zaffectedNodes[]zInvalid RecoveryStatus values: )r   r   r   r   r6   r@   r   r3   r   r   r   list	enumerater   )r   r   r   r6   affected_nodesindexr"   s          r#   r$   RecoveryStatus.__post_init__;   s   13quudjj)&&-t'9'9:Z7H%I%INNGUDK89z'3'?'?NNIwW>?.$//NNO^T.=QRS ). 9!%--NNnUG1$=ud5k#RS !: >HH r&   c                    U(       d  U " 5       $ SnSU;   a  US   b  [        S0 US   D6nU " UUR                  S5      UR                  S/ 5      S9$ )a  Create a RecoveryStatus instance from a dict.

This is useful for converting JSON response data into the dataclass structure.
Handles empty dict {} by returning a RecoveryStatus with all None/default values.
The nested 'state' dict (if present) is automatically converted to
a RecoveryOperation instance.

Parameters:
    data: A dict containing the recovery status data, typically
        parsed from a JSON response. Can be an empty dict.

Returns:
    A RecoveryStatus instance with nested dataclass objects.

Raises:
    KeyError: If required keys are missing from the input dict.
    TypeError: If nested 'state' cannot be unpacked into RecoveryOperation.
    ValueError: If field validation fails in RecoveryOperation or
        RecoveryStatus (e.g., invalid types).
Nr   r6   r@   )r   r6   r@   r'   )r3   get)clsdatar   s      r#   	from_dictRecoveryStatus.from_dictO   s^    . 5Ld?tG}8%6W6EHHY'((?B7
 	
r&   r'   r(   )rK   r   r)   r:   )r,   r-   r.   r/   r   r0   r6   r   rC   r@   r$   classmethodrL   r1   r'   r&   r#   r:   r:   5   s@    &*E#*GZ$T:M9:I( !
 !
r&   r:   c                      \ rS rSr% S\S'   S\S'   S\S'   S\S'   S\S	'   S\S
'   S\S'   S\S'   S\S'   S\S'   SS jr\SS j5       rSrg)
NodeStatust   r   address	nodeStateinttermzdict[str, str]
syncStatuslastLogTermlastLogIndexendpointzRecoveryStatus | NonerecoveryStatuszTopologyStatus | NonetopologyStatuszbool | NoneclusterEnabledc                   / n[         R                  " [         R                  U R                  5      n[         R                  " [         R                  U R                  5      n[         R                  " [         R                  U R
                  5      n[         R                  " [         R                  U R                  5      n[         R                  " [         R                  U R                  5      n[         R                  " [         R                  U R                  5      n[         R                  " [         R                  U R                  5      n[         R                  " [         R                  U R                  5      n	[         R                  " [         R                  U R                  5      n
[         R                  " [         R                  U R                  5      n[        U[        5      (       d  UR                  SU[!        U5      45        [        U[        5      (       d  UR                  SU[!        U5      45        [!        U5      ["        La  UR                  SU[!        U5      45        [        U[$        5      (       d  UR                  SU[!        U5      45        OUR'                  5        Hs  u  p[        U[        5      (       d!  UR                  SU S3U[!        U5      45        [        U[        5      (       a  MR  UR                  SU S3U[!        U5      45        Mu     [!        U5      ["        La  UR                  S	U[!        U5      45        [!        U5      ["        La  UR                  S
U[!        U5      45        [        U[        5      (       d  UR                  SU[!        U5      45        U	b2  [        U	[(        5      (       d  UR                  SU	[!        U	5      45        U
b2  [        U
[*        5      (       d  UR                  SU
[!        U
5      45        Ub/  [!        U5      [,        La  UR                  SU[!        U5      45        U(       a  [/        SU5      eg )NrR   rS   rU   rV   zsyncStatus key 'r   zsyncStatus['z']rW   rX   rY   rZ   r[   r\   zInvalid NodeStatus values: )r   r   r   rR   rS   rU   rV   rW   rX   rY   rZ   r[   r\   r   r   r   r   rT   r   r   r:   r   boolr   )r   r   rR   
node_staterU   sync_statuslast_log_termlast_log_indexrY   recovery_statustopology_statuscluster_enabledr!   r"   s                 r#   r$   NodeStatus.__post_init__   s   13&&-VVAEE4>>2
vvaeeTYY'ffQUUDOO4quud&6&67t'8'8966!%%/&&(;(;<&&(;(;<&&(;(;<'3''NNIwW>?*c**NNKT*5EFG:S NNFD$t*56+t,,NNL+tK7HIJ)//1
!#s++NN&6se1$=sDI#NO!%--NNl3%r$:E4;#OP	 2
 c)NNM=$}:MNOs*NNNND<PQR(C((NNJ$x.AB&z^0
 0
 NN,otO?TUV&z^0
 0
 NN,otO?TUV&4+@+LNN,otO?TUV:GDD r&   c                4   SnSU;   a#  US   (       a  [         R                  US   5      nOSU;   a  [         R                  0 5      nSnSU;   a  US   (       a  [        S0 US   D6nU " US   US   US   US   US   US	   US
   UUUR                  S5      S9
$ )a  Create a NodeStatus instance from a dict.

This is useful for converting JSON response data into the dataclass structure.
The nested 'recoveryStatus' and 'topologyStatus' dicts are automatically
converted to their respective dataclass instances.

Parameters:
    data: A dict containing the node status data, typically
        parsed from a JSON response.

Returns:
    A NodeStatus instance with nested dataclass objects.

Raises:
    KeyError: If required keys are missing from the input dict.
    TypeError: If nested dicts cannot be unpacked into their respective
        dataclass instances.
    ValueError: If field validation fails in TopologyStatus, RecoveryOperation,
        RecoveryStatus, or NodeStatus (e.g., invalid types).
NrZ   r[   rR   rS   rU   rV   rW   rX   rY   r\   )
rR   rS   rU   rV   rW   rX   rY   rZ   r[   r\   r'   )r:   rL   r   rI   )rJ   rK   rc   rd   s       r#   rL   NodeStatus.from_dict   s    . t#-=(>,66t<L7MNO%,66r:O t#-=(>,Ft4D/EFOO;'fL)]+n-*%**88$45
 	
r&   r'   Nr(   )rK   r   r)   rP   	r,   r-   r.   r/   r0   r$   rN   rL   r1   r'   r&   r#   rP   rP   t   sU    LN
IM))))-E^ -
 -
r&   rP   c                      \ rS rSr% S\S'   S\S'   S\S'   S\S'   S\S'   S\S'   S\S	'   S
\S'   SS jr\SS j5       rSrg)ClusterRequest   rT   electionMinTimeoutelectionRangeTimeoutheartbeatIntervalmessageSizeKBverificationTimeouttransactionLogMaximumSizeGBbatchUpdateIntervalr?   nodesc                   / n[         R                  " [         R                  U R                  5      n[         R                  " [         R                  U R                  5      n[         R                  " [         R                  U R
                  5      n[         R                  " [         R                  U R                  5      n[         R                  " [         R                  U R                  5      n[         R                  " [         R                  U R                  5      n[         R                  " [         R                  U R                  5      n[         R                  " [         R                  U R                  5      n	[        U5      [        La  UR                  SU[        U5      45        [        U5      [        La  UR                  SU[        U5      45        [        U5      [        La  UR                  SU[        U5      45        [        U5      [        La  UR                  SU[        U5      45        [        U5      [        La  UR                  SU[        U5      45        [        U5      [        La  UR                  SU[        U5      45        [        U5      [        La  UR                  SU[        U5      45        [        U	[        5      (       d  UR                  SU	[        U	5      45        OL[!        U	5       H=  u  p[        U["        5      (       a  M  UR                  S	U
 S
3U[        U5      45        M?     U(       a  [%        SU5      eg )Nrm   rn   ro   rp   rq   rr   rs   rt   znodes[rB   zInvalid ClusterRequest values: )r   r   r   rm   rn   ro   rp   rq   rr   rs   rt   r   rT   r   r   rC   rD   r   r   )r   r   election_min_timeoutelection_range_timeoutheartbeat_intervalmessage_size_kbverification_timeouttransaction_log_maximum_size_gbbatch_update_intervalrt   rF   r"   s               r#   r$   ClusterRequest.__post_init__   s   13 vvaeeT-D-DE!"t/H/H!IVVAEE4+A+AB&&(:(:; vvaeeT-E-EF*+&&EE433+
' !"quud.F.F Gquudjj)$%S0NN%';TBV=WX &'s2NN**/0 "#3.NN$&8$?Q:RS  +NNO_d?>STU$%S0NN)(-. /0;NN1389 %&c1NN))./ %&&NNGUDK89 )% 0!%--NNfUG1$5ud5k#JK !1 >HH r&   c                L    U " US   US   US   US   US   US   US   US   S	9$ )
a  Create a ClusterRequest instance from a dict.

This is useful for converting JSON response data into the dataclass structure.

Parameters:
    data: A dict containing the cluster request data, typically
        parsed from a JSON response.

Returns:
    A ClusterRequest instance.

Raises:
    KeyError: If required keys are missing from the input dict.
    TypeError: If the dict cannot be unpacked into ClusterRequest.
    ValueError: If field validation fails in ClusterRequest
        (e.g., invalid types for integer fields or nodes).
rm   rn   ro   rp   rq   rr   rs   rt   )rm   rn   ro   rp   rq   rr   rs   rt   r'   )rJ   rK   s     r#   rL   ClusterRequest.from_dict.  sV    & #$89!%&<!="#67/ $%: ;(,-J(K $%: ;w-	
 		
r&   r'   Nr(   )rK   r   r)   rk   ri   r'   r&   r#   rk   rk      sN    !$$@ID 
 
r&   rk   c                  L    \ rS rSr% S\S'   S\S'   S\S'   SrS\S'   SS	 jrS
rg)SnapshotOptionsBeaniM  r^   withRepositoryDatawithSystemDatacleanDataDirNzlist[str] | Nonerepositoriesc                   / n[         R                  " [         R                  U R                  5      n[         R                  " [         R                  U R                  5      n[         R                  " [         R                  U R
                  5      n[         R                  " [         R                  U R                  5      n[        U5      [        La  UR                  SU[        U5      45        [        U5      [        La  UR                  SU[        U5      45        [        U5      [        La  UR                  SU[        U5      45        Ub  [        U[        5      (       d  UR                  SU[        U5      45        OL[        U5       H=  u  pg[        U[        5      (       a  M  UR                  SU S3U[        U5      45        M?     U(       a  [        SU5      eg )Nr   r   r   r   zrepositories[rB   z$Invalid SnapshotOptionsBean values: )r   r   r   r   r   r   r   r   r^   r   r   rC   rD   r   r   )r   r   with_repository_datawith_system_dataclean_data_dirr   rF   r"   s           r#   r$   !SnapshotOptionsBean.__post_init__T  sm   13 vvaeeT-D-DE66!%%)<)<=t'8'89vvaeeT%6%67$%T1NN%';TBV=WX  !-NN,.>EU@VWXt+NNNND<PQR#lD11d<>PQR$-l$;LE%eS11-wa(@%e'UV %< CWMM r&   r'   r(   )r,   r-   r.   r/   r0   r   r$   r1   r'   r&   r#   r   r   M  s%    %)L")Nr&   r   c                  ~    \ rS rSr% S\S'   S\S'   S\S'   S\S'   S	\S
'   S\S'   SrS\S'   SS jr\SS j5       rSr	g)BackupOperationBeanip  r   idusernamezt.Literal['CREATE_BACKUP_IN_PROGRESS', 'RESTORE_BACKUP_IN_PROGRESS', 'CREATE_CLOUD_BACKUP_IN_PROGRESS', 'RESTORE_CLOUD_BACKUP_IN_PROGRESS']	operationr?   affectedRepositoriesrT   msSinceCreatedr   snapshotOptionsNr<   nodePerformingClusterBackupc                (   1 Skn/ n[         R                  " [         R                  U R                  5      n[         R                  " [         R                  U R                  5      n[         R                  " [         R                  U R
                  5      n[         R                  " [         R                  U R                  5      n[         R                  " [         R                  U R                  5      n[         R                  " [         R                  U R                  5      n[         R                  " [         R                  U R                  5      n	[        U[        5      (       d  UR                  SU[        U5      45        [        U[        5      (       d  UR                  SU[        U5      45        [        U[        5      (       a  XQ;  a  UR                  SU[        U5      45        [        U[        5      (       d  UR                  SU[        U5      45        OL[        U5       H=  u  p[        U[        5      (       a  M  UR                  SU
 S3U[        U5      45        M?     [        U5      [         La  UR                  SU[        U5      45        [        U["        5      (       d  UR                  S	U[        U5      45        U	b2  [        U	[        5      (       d  UR                  S
U	[        U	5      45        U(       a  [%        SU5      eg )N>   CREATE_BACKUP_IN_PROGRESSRESTORE_BACKUP_IN_PROGRESSCREATE_CLOUD_BACKUP_IN_PROGRESS RESTORE_CLOUD_BACKUP_IN_PROGRESSr   r   r   r   zaffectedRepositories[rB   r   r   r   z$Invalid BackupOperationBean values: )r   r   r   r   r   r   r   r   r   r   r   r   r   r   rC   rD   rT   r   r   )r   _allowed_operationsr   id_r   r   affected_repositoriesms_since_createdsnapshot_optionsnode_performing_cluster_backuprF   r"   s               r#   r$   !BackupOperationBean.__post_init__  sS   
 24ffQUUDGG$66!%%/FF155$..1	 !quud.G.G H66!%%)<)<=66!%%)=)=>)*t7W7W)X&#s##NND#tCy12(C((NNJ$x.AB)S))Y-QNNKDODE/66NN*)./ !**? @!%--NN0q95$u+N !A
  !,NN,.>EU@VWX*,?@@NN"$4d;K6LM *5j*C?
 ?
 NN1278 CWMM r&   c                r    [        S	0 US   D6nU " US   US   US   US   US   UUR                  S5      S9$ )
a  Create a BackupOperationBean instance from a dict.

This is useful for converting JSON response data into the dataclass structure.
The nested 'snapshotOptions' dict is automatically converted to
a SnapshotOptionsBean instance.

Parameters:
    data: A dict containing the backup operation data, typically
        parsed from a JSON response.

Returns:
    A BackupOperationBean instance with nested dataclass objects.

Raises:
    KeyError: If required keys are missing from the input dict.
    TypeError: If nested 'snapshotOptions' cannot be unpacked into
        SnapshotOptionsBean.
    ValueError: If field validation fails in SnapshotOptionsBean or
        BackupOperationBean (e.g., invalid types or operation values).
r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r'   )r   rI   )rJ   rK   r   s      r#   rL   BackupOperationBean.from_dict  s^    , /I6G1HIDz*%;'!%&<!= 01,(,1N(O
 	
r&   r'   r(   )rK   r   r)   r   )
r,   r-   r.   r/   r0   r   r$   rN   rL   r1   r'   r&   r#   r   r   p  sP    GM  $#((.226Np 
 
r&   r   c                  4    \ rS rSr% S\S'   S\S'   SS jrSrg)	StructuresStatisticsi  rT   cacheHit	cacheMissc                   / n[         R                  " [         R                  U R                  5      n[         R                  " [         R                  U R                  5      n[        U5      [        La  UR                  SU[        U5      45        [        U5      [        La  UR                  SU[        U5      45        U(       a  [        SU5      eg )Nr   r   z%Invalid StructuresStatistics values: )	r   r   r   r   r   r   rT   r   r   )r   r   	cache_hit
cache_misss       r#   r$   "StructuresStatistics.__post_init__  s    13FF155$--0	VVAEE4>>2
	?#%NNJ	4	?CD
3&NNKT*5EFGDgNN r&   r'   Nr(   r+   r'   r&   r#   r   r     s    MNOr&   r   c                  4    \ rS rSr% S\S'   S\S'   SS jrSrg)	RepositoryStatisticsQueriesi  rT   slow
suboptimalc                   / n[         R                  " [         R                  U R                  5      n[         R                  " [         R                  U R                  5      n[        U5      [        La  UR                  SU[        U5      45        [        U5      [        La  UR                  SU[        U5      45        U(       a  [        SU5      eg )Nr   r   z,Invalid RepositoryStatisticsQueries values: )	r   r   r   r   r   r   rT   r   r   )r   r   r   r   s       r#   r$   )RepositoryStatisticsQueries.__post_init__  s    13vvaeeTYY'VVAEE4??3
:S NNFD$t*56
3&NNL*d:6FGHKWUU r&   r'   Nr(   r+   r'   r&   r#   r   r     s    
IOVr&   r   c                  >    \ rS rSr% S\S'   S\S'   S\S'   S	S jrSrg)
RepositoryStatisticsEntityPooli  rT   
epoolReadsepoolWrites	epoolSizec                b   / n[         R                  " [         R                  U R                  5      n[         R                  " [         R                  U R                  5      n[         R                  " [         R                  U R
                  5      n[        U5      [        La  UR                  SU[        U5      45        [        U5      [        La  UR                  SU[        U5      45        [        U5      [        La  UR                  SU[        U5      45        U(       a  [        SU5      eg )Nr   r   r   z/Invalid RepositoryStatisticsEntityPool values: )
r   r   r   r   r   r   r   rT   r   r   )r   r   epool_readsepool_writes
epool_sizes        r#   r$   ,RepositoryStatisticsEntityPool.__post_init__  s    13ffQUUDOO4vvaeeT%5%56VVAEE4>>2
C'NNL+tK7HIJS(NNM<l9KLM
3&NNKT*5EFGNPWXX r&   r'   Nr(   r+   r'   r&   r#   r   r     s    ONYr&   r   c                  \    \ rS rSr% S\S'   S\S'   S\S'   S\S'   SS	 jr\SS
 j5       rSrg)RepositoryStatisticsi  r   queriesr   
entityPoolrT   activeTransactionsopenConnectionsc                *   / n[         R                  " [         R                  U R                  5      n[         R                  " [         R                  U R                  5      n[         R                  " [         R                  U R
                  5      n[         R                  " [         R                  U R                  5      n[        U[        5      (       d  UR                  SU[        U5      45        [        U[        5      (       d  UR                  SU[        U5      45        [        U5      [        La  UR                  SU[        U5      45        [        U5      [        La  UR                  SU[        U5      45        U(       a  [        SU5      eg )Nr   r   r   r   z%Invalid RepositoryStatistics values: )r   r   r   r   r   r   r   r   r   r   r   r   rT   r   )r   r   r   entity_poolactive_transactionsopen_connectionss         r#   r$   "RepositoryStatistics.__post_init__  s(   13&&-ffQUUDOO4ffQUUD,C,CD66!%%)=)=>'#>??NNIwW>?+'EFFNNL+tK7HIJ#$C/NN%':DAT<UV  !,NN"$4d;K6LM DgNN r&   c                X    [        S0 US   D6n[        S0 US   D6nU " UUUS   US   S9$ )a  Create a RepositoryStatistics instance from a dict.

This is useful for converting JSON response data into the dataclass structure.
The nested 'queries' and 'entityPool' dicts are automatically converted to
their respective dataclass instances.

Parameters:
    data: A dict containing the repository statistics data, typically
        parsed from a JSON response.

Returns:
    A RepositoryStatistics instance with nested dataclass objects.

Raises:
    KeyError: If required keys are missing from the input dict.
    TypeError: If nested dicts cannot be unpacked into their respective
        dataclass instances.
    ValueError: If field validation fails in RepositoryStatisticsQueries,
        RepositoryStatisticsEntityPool, or RepositoryStatistics
        (e.g., invalid types).
r   r   r   r   )r   r   r   r   r'   )r   r   )rJ   rK   r   r   s       r#   rL   RepositoryStatistics.from_dict4  sL    . .@Y@4JtL7IJ"#$89 !23	
 	
r&   r'   Nr(   )rK   r   r)   r   ri   r'   r&   r#   r   r     s4    ((..O. 
 
r&   r   c                  H    \ rS rSr% S\S'   S\S'   S\S'   S\S'   S
S jrSrg	)InfrastructureMemoryUsageiU  rT   max	committedinitusedc                   / n[         R                  " [         R                  U R                  5      n[         R                  " [         R                  U R                  5      n[         R                  " [         R                  U R
                  5      n[         R                  " [         R                  U R                  5      n[        U5      [        La  UR                  SU[        U5      45        [        U5      [        La  UR                  SU[        U5      45        [        U5      [        La  UR                  SU[        U5      45        [        U5      [        La  UR                  SU[        U5      45        U(       a  [        SU5      eg )Nr   r   r   r   z*Invalid InfrastructureMemoryUsage values: )r   r   r   r   r   r   r   r   rT   r   r   )r   r   max_valr   r   r   s         r#   r$   'InfrastructureMemoryUsage.__post_init__\  s	   13&&)FF155$..1	vvaeeTYY'vvaeeTYY'=#NNE7DM:;	?#%NNKDODE:S NNFD$t*56:S NNFD$t*56I7SS r&   r'   Nr(   r+   r'   r&   r#   r   r   U  s    	HN
I
ITr&   r   c                  \    \ rS rSr% S\S'   S\S'   S\S'   S\S'   S\S'   S\S'   SS	 jrS
rg)InfrastructureStorageMemoryip  rT   dataDirUsedworkDirUsedlogsDirUseddataDirFreeworkDirFreelogsDirFreec                   / n[         R                  " [         R                  U R                  5      n[         R                  " [         R                  U R                  5      n[         R                  " [         R                  U R
                  5      n[         R                  " [         R                  U R                  5      n[         R                  " [         R                  U R                  5      n[         R                  " [         R                  U R                  5      n[        U5      [        La  UR                  SU[        U5      45        [        U5      [        La  UR                  SU[        U5      45        [        U5      [        La  UR                  SU[        U5      45        [        U5      [        La  UR                  SU[        U5      45        [        U5      [        La  UR                  SU[        U5      45        [        U5      [        La  UR                  SU[        U5      45        U(       a  [        SU5      eg )Nr   r   r   r   r   r   z,Invalid InfrastructureStorageMemory values: )r   r   r   r   r   r   r   r   r   r   rT   r   r   )r   r   data_dir_usedwork_dir_usedlogs_dir_useddata_dir_freework_dir_freelogs_dir_frees           r#   r$   )InfrastructureStorageMemory.__post_init__y  s   13quud&6&67quud&6&67quud&6&67quud&6&67quud&6&67quud&6&67c)NNM=$}:MNOc)NNM=$}:MNOc)NNM=$}:MNOc)NNM=$}:MNOc)NNM=$}:MNOc)NNM=$}:MNOKWUU r&   r'   Nr(   r+   r'   r&   r#   r   r   p  s,    Vr&   r   c                      \ rS rSr% S\S'   S\S'   S\S'   S\S'   S	\S
'   S\S'   S\S'   S\S'   S\S'   SS jr\SS j5       rSrg)InfrastructureStatisticsi  r   heapMemoryUsagenonHeapMemoryUsager   storageMemoryrT   threadCountfloatcpuLoad
classCountgcCountopenFileDescriptorsmaxFileDescriptorsc                    / n[         R                  " [         R                  U R                  5      n[         R                  " [         R                  U R                  5      n[         R                  " [         R                  U R
                  5      n[         R                  " [         R                  U R                  5      n[         R                  " [         R                  U R                  5      n[         R                  " [         R                  U R                  5      n[         R                  " [         R                  U R                  5      n[         R                  " [         R                  U R                  5      n	[         R                  " [         R                  U R                  5      n
[        U[        5      (       d  UR                  SU[        U5      45        [        U[        5      (       d  UR                  SU[        U5      45        [        U[         5      (       d  UR                  SU[        U5      45        [        U5      ["        La  UR                  SU[        U5      45        [        U5      [$        La/  [        U5      ["        La  UR                  SU[        U5      45        [        U5      ["        La  UR                  SU[        U5      45        [        U5      ["        La  UR                  SU[        U5      45        [        U	5      ["        La  UR                  SU	[        U	5      45        [        U
5      ["        La  UR                  S	U
[        U
5      45        U(       a  ['        S
U5      eg )Nr   r   r   r   r   r   r   r   r   z)Invalid InfrastructureStatistics values: )r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   rT   r   r   )r   r   heap_memory_usagenon_heap_memory_usagestorage_memorythread_countcpu_loadclass_countgc_countopen_file_descriptorsmax_file_descriptorss              r#   r$   &InfrastructureStatistics.__post_init__  s   13FF155$*>*>? !quud.E.E Ft'9'9:vvaeeT%5%5666!%%.ffQUUDOO466!%%. !quud.F.F G vvaeeT-D-DE+-FGGNN"$5t<M7NO /1JKKNN()./ .*EFFNNO^T.=QRSS(NNM<l9KLM>&4>+DNNIxh@AC'NNL+tK7HIJ>$NNIxh@A%&c1NN))./ $%S0NN%';TBV=WX H'RR r&   c                    [        S0 US   D6n[        S0 US   D6n[        S0 US   D6nU " UUUUS   [        US   5      US   US   US   US	   S
9	$ )a  Create an InfrastructureStatistics instance from a dict.

This is useful for converting JSON response data into the dataclass structure.
The nested memory and storage dicts are automatically converted to their
respective dataclass instances.

Parameters:
    data: A dict containing the infrastructure statistics data, typically
        parsed from a JSON response.

Returns:
    An InfrastructureStatistics instance with nested dataclass objects.

Raises:
    KeyError: If required keys are missing from the input dict.
    TypeError: If nested dicts cannot be unpacked into their respective
        dataclass instances.
    ValueError: If field validation fails in InfrastructureMemoryUsage,
        InfrastructureStorageMemory, or InfrastructureStatistics
        (e.g., invalid types).
r   r   r   r   r   r   r   r   r   )	r   r   r   r   r   r   r   r   r   r'   )r   r   r   )rJ   rK   r   r   r   s        r#   rL   "InfrastructureStatistics.from_dict  s    . 6P=N8OP 9 WDAU<V W4MtO7LM-4(]+$y/*L)O $%: ;#$89

 
	
r&   r'   Nr(   )rK   r   r)   r   ri   r'   r&   r#   r   r     sP    ..11..NOL0Sd #
 #
r&   r   c                      \ rS rSr% SrS\S'   SrS\S'   SrS\S'   SrS\S'   Sr	S\S'   S	r
S\S
'   SrS\S'   S	rS\S'   SrS\S'   SS jrSS jrSrg)ParserSettingsi  Fr^   preserveBNodeIdsfailOnUnknownDataTypesverifyDataTypeValuesnormalizeDataTypeValuesfailOnUnknownLanguageTagsTverifyLanguageTagsnormalizeLanguageTagsstopOnErrorNt.Any | NonecontextLinkc                   / n[         R                  " [         R                  U R                  5      n[         R                  " [         R                  U R                  5      n[         R                  " [         R                  U R
                  5      n[         R                  " [         R                  U R                  5      n[         R                  " [         R                  U R                  5      n[         R                  " [         R                  U R                  5      n[         R                  " [         R                  U R                  5      n[         R                  " [         R                  U R                  5      n	[        U5      [        La  UR                  SU[        U5      45        [        U5      [        La  UR                  SU[        U5      45        [        U5      [        La  UR                  SU[        U5      45        [        U5      [        La  UR                  SU[        U5      45        [        U5      [        La  UR                  SU[        U5      45        [        U5      [        La  UR                  SU[        U5      45        [        U5      [        La  UR                  SU[        U5      45        [        U	5      [        La  UR                  SU	[        U	5      45        U(       a  [        S	U5      eg )
Nr   r   r   r   r   r   r  r  zInvalid ParserSettings values: )r   r   r   r   r   r   r   r   r   r  r  r   r^   r   r   )
r   r   preserve_bnode_idsfail_on_unknown_data_typesverify_data_type_valuesnormalize_data_type_valuesfail_on_unknown_language_tagsverify_language_tagsnormalize_language_tagsstop_on_errors
             r#   r$   ParserSettings.__post_init__  se   13VVAEE4+@+@A%&VVAEE43N3N%O""#&&0I0I"J%&VVAEE43O3O%P"()quud6T6T(U% vvaeeT-D-DE"#&&0J0J"Kquud&6&67"#4/NN#%7>P9QR *+47NN,.34 '(4NN*+01 *+47NN-.34 -.d:NN/167 $%T1NN%';TBV=WX '(4NN++01 d*NNM=$}:MNO >HH r&   c                    [        U 5      $ Nr   r   s    r#   as_dictParserSettings.as_dictG      d|r&   r'   r(   r)   r   )r,   r-   r.   r/   r   r0   r   r   r   r   r   r  r  r  r$   r  r1   r'   r&   r#   r   r     sp    "d"#(D(!&$&$)T)&+t+##"'4'K $K$AIFr&   r   c                     \ rS rSr% S\S'   S\S'   S\S'   S\S'   S\S	'   S\S
'   S\S'   S\S'   SrS\S'   SrS\S'   \" \S9r	S\S'   Sr
S\S'   SrS\S'   SrS\S'   SrS\S'   SrS\S'   \" \S9rS\S'   S"S jrS#S  jrS!rg)$ImportSettingsiK  r   r5   zJt.Literal['PENDING', 'IMPORTING', 'DONE', 'ERROR', 'NONE', 'INTERRUPTING']statussizerT   lastModifiedimportedaddedStatementsremovedStatementsnumReplacedGraphs r6   Nr  contextr=   zt.ListreplaceGraphsbaseURIFr^   forceSerialfiler   formatrK   r   parserSettingsc                	   1 Skn/ n[         R                  " [         R                  U R                  5      n[         R                  " [         R                  U R                  5      n[         R                  " [         R                  U R
                  5      n[         R                  " [         R                  U R                  5      n[         R                  " [         R                  U R                  5      n[         R                  " [         R                  U R                  5      n[         R                  " [         R                  U R                  5      n	[         R                  " [         R                  U R                  5      n
[         R                  " [         R                  U R                  5      n[         R                  " [         R                  U R                  5      n[         R                  " [         R                  U R                  5      n[         R                  " [         R                  U R                  5      n[         R                  " [         R                  U R                  5      n[!        U["        5      (       d  UR%                  SU[        U5      45        XA;  a  UR%                  SU[        U5      45        [!        U["        5      (       d  UR%                  SU[        U5      45        [!        U[&        5      (       d  UR%                  SU[        U5      45        [        U5      [(        La  UR%                  SU[        U5      45        [!        U["        5      (       d  UR%                  SU[        U5      45        [!        U	[*        5      (       d  UR%                  SU	[        U	5      45        [!        U
["        5      (       d  UR%                  S	U
[        U
5      45        [        U5      [,        La  UR%                  S
U[        U5      45        [        U5      [,        La  UR%                  SU[        U5      45        [        U5      [,        La  UR%                  SU[        U5      45        [        U5      [,        La  UR%                  SU[        U5      45        [        U5      [,        La  UR%                  SU[        U5      45        U(       a  [/        SU5      eg )N>   DONENONEERRORPENDING	IMPORTINGINTERRUPTINGr5   r  r6   r"  r$  r   r'  r  r  r  r  r  r  zInvalid ImportSettings values: )r   r   r   r5   r  r6   r"  r$  r   r'  r  r  r  r  r  r  r   r   r   rC   r^   r   rT   r   )r   _allowed_statusr   r5   r  r6   replace_graphsforce_serialtype_parser_settingsr  last_modifiedr  added_statementsremoved_statementsnum_replaced_graphss                   r#   r$   ImportSettings.__post_init___  s[   
 24vvaeeTYY't{{+&&-t'9'9:vvaeeT%5%56quudii(&&(;(;<vvaeeTYY'quud&7&7866!%%/66!%%)=)=>VVAEE4+A+ABffQUUD,B,BC$$$NNFD$t*56(NNHfd6l;<'3''NNIwW>?.$//NNO^T.=QRST)NNM<l9KLM%%%NNFE4;78/>::NN,otO?TUV$$$NNFD$t*56c)NNNM4;NOP>$NNJ$x.AB !,NN"$4d;K6LM "#3.NN$&8$?Q:RS #$C/NN$&94@S;TU >HH r&   c                    [        U 5      $ r  r  r  s    r#   r  ImportSettings.as_dict  r  r&   r'   r(   r  )r,   r-   r.   r/   r0   r6   r!  r   rC   r"  r#  r$  r   r&  rK   r   r'  r$   r  r1   r'   r&   r#   r  r  K  s    
IVV
IMGS G\ !$7M67 G\ KD#FLD,%*>%JNNJ=I~r&   r  c                  B    \ rS rSr% S\S'   SrS\S'   S
S jrSS jrS	rg)ServerImportBodyi  r?   	fileNamesNzImportSettings | NoneimportSettingsc                R   / n[         R                  " [         R                  U R                  5      n[         R                  " [         R                  U R                  5      nUb2  [        U[        5      (       d  UR                  SU[        U5      45        [        U[        5      (       d  UR                  SU[        U5      45        OL[        U5       H=  u  pE[        U[        5      (       a  M  UR                  SU S3U[        U5      45        M?     U(       a  [        SU5      eg )Nr>  r=  z
fileNames[rB   z!Invalid ServerImportBody values: )r   r   r   r>  r=  r   r  r   r   rC   rD   r   r   )r   r   import_settings
file_namesrF   r"   s         r#   r$   ServerImportBody.__post_init__  s    13&&(;(;<VVAEE4>>2
&z^0
 0
 NN,otO?TUV*d++NNKT*5EFG )* 5!%--NNjq$95$u+#NO !6 @'JJ r&   c                Z    [        U 5      nU R                  c  UR                  SS 5        U$ )Nr>  )r   r>  pop)r   results     r#   r  ServerImportBody.as_dict  s+    &JJ'.r&   r'   r(   r  )	r,   r-   r.   r/   r0   r>  r$   r  r1   r'   r&   r#   r<  r<    s    ,0N)0K&r&   r<  c                  b    \ rS rSr% \" SS9rS\S'   \" \S9rS\S'   \" \	S9r
S	\S
'   SS jrSrg)
UserUpdatei  r   )defaultr   passwordr=   r   appSettingslist[t.Any]
gptThreadsc                    [        U 5      $ r  r  r  s    r#   r  UserUpdate.as_dict  r  r&   r'   Nr  )r,   r-   r.   r/   r   rJ  r0   r   rK  rC   rM  r  r1   r'   r&   r#   rH  rH    s5    "%Hc%$)$$?K!?#D9J9r&   rH  c                      \ rS rSr% SrS\S'   S\S'   \" \S9rS\S'   \" \	S9r
S	\S
'   \" \S9rS\S'   SS jrSS jrSrg)
UserCreatei  zDataclass for creating a new user in GraphDB.

Unlike `User`, this class does not include `dateCreated` since
GraphDB automatically assigns this value when the user is created.
r   r   rJ  r=   r?   grantedAuthoritiesr   rK  rL  rM  c                *   / n[         R                  " [         R                  U R                  5      n[         R                  " [         R                  U R                  5      n[         R                  " [         R                  U R
                  5      n[         R                  " [         R                  U R                  5      n[         R                  " [         R                  U R                  5      n[        U[        5      (       d  UR                  SU[        U5      45        [        U[        5      (       d  UR                  SU[        U5      45        [        U[        5      (       d  UR                  SU[        U5      45        OL[        U5       H=  u  px[        U[        5      (       a  M  UR                  SU S3U[        U5      45        M?     [        U[        5      (       d  UR                  SU[        U5      45        OKUR                  5        H7  n	[        U	[        5      (       a  M  UR                  SU	[        U	5      45          O   [        U[        5      (       d  UR                  SU[        U5      45        U(       a  [!        S	U5      eg )
Nr   rJ  rR  grantedAuthorities[rB   rK  appSettings keyrM  zInvalid UserCreate values: )r   r   r   r   rJ  rR  rK  rM  r   r   r   r   rC   rD   r   keysr   )
r   r   r   rJ  granted_authoritiesapp_settingsgpt_threadsrF   r"   r!   s
             r#   r$   UserCreate.__post_init__  s   1366!%%/66!%%/ffQUUD,C,CDvvaeeT%5%56ffQUUDOO4(C((NNJ$x.AB(C((NNJ$x.AB-t44NN%':DAT<UV !**= >!%--NN&9%$BE4PU;#WX !? ,--NNM<l9KLM#((*!#s++NN$5sDI#FG +
 +t,,NNL+tK7HIJ:GDD r&   c                    [        U 5      $ r  r  r  s    r#   r  UserCreate.as_dict  r  r&   r'   Nr(   r  )r,   r-   r.   r/   __doc__r0   r   rC   rR  r   rK  rM  r$   r  r1   r'   r&   r#   rQ  rQ    sN     MM$)$$?	?$)$$?K!?#D9J9"EHr&   rQ  c                      \ rS rSr% S\S'   S\S'   S\S'   \" \S9rS\S	'   \" \S9r	S
\S'   \" \S9r
S\S'   SS jrS rSrg)Useri  r   r   rJ  rT   dateCreatedr=   r?   rR  r   rK  rL  rM  c                   U R                   c  [        R                  U S/ 5        U R                  c  [        R                  U S0 5        U R                  c  [        R                  U S/ 5        / n[
        R                  " [
        R                  U R                  5      n[
        R                  " [
        R                  U R                  5      n[
        R                  " [
        R                  U R                  5      n[
        R                  " [
        R                  U R                   5      n[
        R                  " [
        R                  U R                  5      n[
        R                  " [
        R                  U R                  5      n[        U[        5      (       d  UR                  SU[        U5      45        [        U[        5      (       d  UR                  SU[        U5      45        [        U[        5      (       d  UR                  SU[        U5      45        [        U[         5      (       d  UR                  SU[        U5      45        OL[#        U5       H=  u  p[        U	[        5      (       a  M  UR                  SU S3U	[        U	5      45        M?     [        U[$        5      (       d  UR                  SU[        U5      45        OKUR'                  5        H7  n
[        U
[        5      (       a  M  UR                  S	U
[        U
5      45          O   [        U[         5      (       d  UR                  SU[        U5      45        U(       a  [)        S
U5      eg )NrR  rK  rM  r   rJ  r`  rT  rB   rU  zInvalid User values: )rR  object__setattr__rK  rM  r   r   r   r   rJ  r`  r   r   r   r   rT   rC   rD   r   rV  r   )r   r   r   rJ  date_createdrW  rX  rY  rF   r"   r!   s              r#   r$   User.__post_init__
  sq   ""*t%92>#t]B7??"t\261366!%%/66!%%/vvaeeT%5%56ffQUUD,C,CDvvaeeT%5%56ffQUUDOO4(C((NNJ$x.AB(C((NNJ$x.AB,,,NNM<l9KLM-t44NN%':DAT<UV !**= >!%--NN&9%$BE4PU;#WX !? ,--NNM<l9KLM#((*!#s++NN$5sDI#FG +
 +t,,NNL+tK7HIJ4g>> r&   c                    [        U 5      $ r  r  r  s    r#   r  User.as_dict9  r  r&   r'   Nr(   )r,   r-   r.   r/   r0   r   rC   rR  r   rK  rM  r$   r  r1   r'   r&   r#   r_  r_    sL    MM$)$$?	?$)$$?K!?#D9J9-?^r&   r_  c                      \ rS rSr% SrS\S'   \" \S9rS\S'   \" \	S9r
S\S	'   S
rS\S'   SrS\S'   SS jr\SS j5       rSrg)AuthenticatedUseri=  a  Represents an authenticated user returned from POST /rest/login.

Attributes:
    username: The username of the authenticated user.
    authorities: List of granted authorities/roles (e.g., ["ROLE_USER", "ROLE_ADMIN"]).
    appSettings: Application settings for the user.
    external: Whether the user is external (e.g., from LDAP/OAuth).
    token: The full Authorization header value (e.g., "GDB <token>").
        Can be passed directly to GraphDBClient's auth parameter.
r   r   r=   r?   authoritiesr   rK  Fr^   externalr   tokenc                   U R                   c  [        R                  U S/ 5        U R                  c  [        R                  U S0 5        / n[        R
                  " [        R                  U R                  5      n[        R
                  " [        R                  U R                   5      n[        R
                  " [        R                  U R                  5      n[        R
                  " [        R                  U R                  5      n[        R
                  " [        R                  U R                  5      n[        U[        5      (       d  UR                  SU[        U5      45        [        U[        5      (       d  UR                  SU[        U5      45        OL[        U5       H=  u  px[        U[        5      (       a  M  UR                  SU S3U[        U5      45        M?     [        U[         5      (       d  UR                  SU[        U5      45        OKUR#                  5        H7  n	[        U	[        5      (       a  M  UR                  SU	[        U	5      45          O   [        U5      [$        La  UR                  SU[        U5      45        [        U[        5      (       d  UR                  SU[        U5      45        U(       a  ['        S	U5      eg )
Nrj  rK  r   authorities[rB   rU  rk  rl  z"Invalid AuthenticatedUser values: )rj  rb  rc  rK  r   r   r   r   rk  rl  r   r   r   r   rC   rD   r   rV  r^   r   )
r   r   r   rj  rX  rk  rl  rF   r"   r!   s
             r#   r$   AuthenticatedUser.__post_init__P  s   #t]B7#t]B71366!%%/ffQUUD$4$45vvaeeT%5%5666!%%/quudjj)(C((NNJ$x.AB+t,,NNM;[8IJK )+ 6!%--NNl5'$;UDK#PQ !7 ,--NNM<l9KLM#((*!#s++NN$5sDI#FG + >%NNJ$x.AB%%%NNGUDK89A7KK r&   c           	         [        U[        5      (       d  [        S5      eSU;  a  [        S5      eU " US   UR	                  S/ 5      UR	                  S0 5      UR	                  SS5      US9$ )	a\  Create an AuthenticatedUser from API response data and token.

Parameters:
    data: The JSON response body from POST /rest/login.
    token: The GDB token extracted from the Authorization header.

Returns:
    An AuthenticatedUser instance.

Raises:
    ValueError: If required fields are missing or invalid.
    TypeError: If data is not a dict.
zResponse data must be a dictr   z%Response data must contain 'username'rj  rK  rk  F)r   rj  rK  rk  rl  )r   r   	TypeErrorr   rI   )rJ   rK   rl  s      r#   from_responseAuthenticatedUser.from_responseu  ss     $%%:;;T!DEE*%33XXj%0
 	
r&   r'   Nr(   )rK   r   rl  r   r)   ri  )r,   r-   r.   r/   r]  r0   r   rC   rj  r   rK  rk  rl  r$   rN   rr  r1   r'   r&   r#   ri  ri  =  s[    	 M"48K8$)$$?K!?HdE3O#LJ 
 
r&   ri  c                  \    \ rS rSr% S\S'   \" \S9rS\S'   \" \S9r	S\S'   SS	 jr
S
 rSrg)FreeAccessSettingsi  r^   enabledr=   r?   rj  r   rK  c                   / n[         R                  " [         R                  U R                  5      n[         R                  " [         R                  U R                  5      n[         R                  " [         R                  U R
                  5      n[        U5      [        La  UR                  SU[        U5      45        [        U[        5      (       d  UR                  SU[        U5      45        OL[        U5       H=  u  pV[        U[        5      (       a  M  UR                  SU S3U[        U5      45        M?     [        U[        5      (       d  UR                  SU[        U5      45        OKUR                  5        H7  n[        U[        5      (       a  M  UR                  SU[        U5      45          O   U(       a  [        SU5      eg )Nrv  rj  rn  rB   rK  rU  z#Invalid FreeAccessSettings values: )r   r   r   rv  rj  rK  r   r^   r   r   rC   rD   r   r   rV  r   )r   r   rv  rj  rX  rF   r"   r!   s           r#   r$    FreeAccessSettings.__post_init__  sS   13&&-ffQUUD$4$45vvaeeT%5%56=$NNIwW>?+t,,NNM;[8IJK )+ 6!%--NNl5'$;UDK#PQ !7 ,--NNM<l9KLM#((*!#s++NN$5sDI#FG +
 BGLL r&   c                    [        U 5      $ r  r  r  s    r#   r  FreeAccessSettings.as_dict  r  r&   r'   Nr(   )r,   r-   r.   r/   r0   r   rC   rj  r   rK  r$   r  r1   r'   r&   r#   ru  ru    s1    M"48K8$)$$?K!?M0r&   ru  c                  :    \ rS rSr% S\S'   S\S'   S\S'   S rSrg)	RepositorySizeInfoi  rT   inferredtotalexplicitc                   / n[        U R                  5      [        La  UR                  S5        [        U R                  5      [        La  UR                  S5        [        U R
                  5      [        La  UR                  S5        U(       aB  [        SU Vs/ s H*  o"U R                  U   [        U R                  U   5      4PM,     sn5      eg s  snf )Nr}  r~  r  z#Invalid RepositorySizeInfo values: )r   r}  rT   r   r~  r  r   __dict__)r   r   xs      r#   r$    RepositorySizeInfo.__post_init__  s    c)NN:&

3&NN7#c)NN:&5HOP1T]]1%tDMM!,<'=>P   Qs   1C
r'   Nr+   r'   r&   r#   r|  r|    s    MJMr&   r|  c                  4    \ rS rSr% S\S'   S\S'   S\S'   Srg)OWLimParameteri  r   r5   labelr"   r'   N)r,   r-   r.   r/   r0   r1   r'   r&   r#   r  r    s    
IJJr&   r  c                  ^    \ rS rSr% S\S'   S\S'   S\S'   S\S'   S\S'   \" \S9rS	\S
'   Srg)RepositoryConfigBeani  r   r   titler   
sesameTypelocationr=   dict[str, OWLimParameter]paramsr'   N)	r,   r-   r.   r/   r0   r   r   r  r1   r'   r&   r#   r  r    s+    GJ
IOM(-d(CF%Cr&   r  c                  ~    \ rS rSr% S\S'   S\S'   S\S'   S\S'   S\S'   \" \S9rS	\S
'   \" \S9rS	\S'   SS jr	Sr
g)RepositoryConfigBeanCreatei  r   r   r  r   r  r  r=   r  r  missingDefaultsc                    [        U 5      $ )a  Serialize the dataclass to a Python dict.

Returns:
    dict: A dictionary representation of the dataclass suitable for use
        with httpx POST requests (e.g., via the `json` parameter).

Examples:
    >>> config = RepositoryConfigBeanCreate(
    ...     id="test-repo",
    ...     title="Test Repository",
    ...     type="graphdb:FreeSailRepository",
    ...     sesameType="graphdb:FreeSailRepository",
    ...     location="",
    ... )
    >>> config_dict = config.as_dict()
    >>> isinstance(config_dict, dict)
    True
r  r  s    r#   r  "RepositoryConfigBeanCreate.as_dict  s    & d|r&   r'   N)r)   r   )r,   r-   r.   r/   r0   r   r   r  r  r  r1   r'   r&   r#   r  r    sE    GJ
IOM(-d(CF%C162O. r&   r  c                  ,    \ rS rSrSrSrSrSrSrSr	Sr
g	)
RepositoryStatei  z(Enumeration for repository state values.INACTIVESTARTINGRUNNING
RESTARTINGSTOPPINGr'   N)r,   r-   r.   r/   r]  r  r  r  r  r  r1   r'   r&   r#   r  r    s    2HHGJHr&   r  c                      \ rS rSr% SrS\S'   SrS\S'   SrS\S'   SrS\S'   Sr	S\S	'   Sr
S\S
'   SrS\S'   SrS\S'   SrS\S'   SrS\S'   SrS\S'   SrS\S'   \SS j5       rSrg)GraphDBRepositoryi  Nzt.Optional[str]r   r  uriexternalUrlzt.Optional[bool]localr   r  r  readablewritableunsupportedzt.Optional[RepositoryState]r   c                b    [        U5      nSU;   a  US   b  [        US   5      US'   U " S0 UD6$ )au  Create a GraphDBRepository instance from a dict.

Parameters:
    data: A dict containing the repository data, typically
        parsed from a JSON response.

Returns:
    A GraphDBRepository instance.

Raises:
    TypeError: If the dict contains keys that do not match
        GraphDBRepository fields.
    ValueError: If the 'state' value is not a valid RepositoryState.
r   r'   )r   r  )rJ   rK   	data_copys      r#   rL   GraphDBRepository.from_dict  sA      J	iIg$6$B!071C!DIgYr&   r'   )rK   r   r)   r  )r,   r-   r.   r/   r   r0   r  r  r  r  r   r  r  r  r  r  r   rN   rL   r1   r'   r&   r#   r  r    s    B!E?!C#'K'"E" D/ "&J& $Ho$!%H%!%H%$(K!()-E&-   r&   r  c                  Z    \ rS rSr% S\S'   S\S'   S\S'   SS jr\    SS	 j5       rS
rg)AccessControlEntryi,  z9t.Literal['statement', 'clear_graph', 'plugin', 'system']scope%t.Literal['allow', 'deny', 'abstain']policyr   rolec                    [        S5      e)Nz+Use a concrete AccessControlEntry subclass.)NotImplementedErrorr  s    r#   r  AccessControlEntry.as_dict2  s    !"OPPr&   c                   [        U[        5      (       d  [        S5      eUR                  S5      nUS:X  aZ  [	        UR                  S5      5      n[        UR                  S5      5      n[        UR                  S5      5      n[        SUUUS9$ US:X  a  [	        UR                  S5      5      n[        UR                  S5      5      n[        UR                  S5      5      n[        UR                  S	5      5      n[        UR                  S
5      5      n[        UR                  S5      5      n[        UR                  S5      5      n	[        SUUUUUUU	S9$ US:X  au  [	        UR                  S5      5      n[        UR                  S5      5      n[        UR                  S5      5      n[        UR                  S5      5      n
[        SUUUU
S9$ US:X  aZ  [	        UR                  S5      5      n[        UR                  S5      5      n[        UR                  S5      5      n	[        SUUU	S9$ [!        SU< 35      e)aM  Create an AccessControlEntry subclass instance from raw GraphDB data.

Note: we perform parse validation essentially twice (here and in the
subclass's __post_init__) to ensure mypy is satisfied with the value's type.

Parameters:
    data: A dict containing the access control entry data, typically
        parsed from a JSON response.

Returns:
    An AccessControlEntry subclass instance (SystemAccessControlEntry,
    StatementAccessControlEntry, PluginAccessControlEntry, or
    ClearGraphAccessControlEntry) depending on the 'scope' field.

Raises:
    TypeError: If data is not a dict.
    ValueError: If 'scope' is not a supported value ('system', 'statement',
        'plugin', 'clear_graph'), or if any field fails validation
        (e.g., invalid policy, operation, role, plugin, subject,
        predicate, object, or graph values).
zACL entry must be a mapping.r  systemr  r  r   r  r  r  r   	statementsubject	predicaterb  r!  )r  r  r  r   r  r  rb  graphpluginr  r  r  r   r  clear_graph)r  r  r  r  zUnsupported FGAC scope: )r   r   rq  rI   _parse_policy_parse_role_parse_operationSystemAccessControlEntry_parse_subject_parse_predicate_parse_object_parse_graphStatementAccessControlEntry_parse_pluginPluginAccessControlEntryClearGraphAccessControlEntryr   )rJ   rK   r  r  r  r   r  r  objr  r  s              r#   rL   AccessControlEntry.from_dict5  s   < $%%:;;!H"488H#56Ftxx/0D(+)>?I+#	  K"488H#56Ftxx/0D(+)>?I$TXXi%89G(+)>?I 23C )!45E.!##	 	 H"488H#56Ftxx/0D(+)>?I"488H#56F+#  M!"488H#56Ftxx/0D )!45E/#	  3E9=>>r&   r'   Nr  )rK   r   r)   zpSystemAccessControlEntry | StatementAccessControlEntry | PluginAccessControlEntry | ClearGraphAccessControlEntry)	r,   r-   r.   r/   r0   r  rN   rL   r1   r'   r&   r#   r  r  ,  sC    DD11
IQ T?T?	'T? T?r&   r  c                  R    \ rS rSr% S\S'   S\S'   S\S'   S\S	'   SS
 jrSS jrSrg)r  i  zt.Literal['system']r  r  r  r   r  t.Literal['read', 'write', '*']r   c                    [        U R                  5      U l        [        U R                  5      U l        [	        U R
                  5      U l        g r  )r  r  r  r  r  r   r  s    r#   r$   &SystemAccessControlEntry.__post_init__  s2    #DKK0		*	)$..9r&   c                `    U R                   U R                  U R                  U R                  S.$ )Nr  r  r  s    r#   r   SystemAccessControlEntry.as_dict  s(    ZZkkII	
 	
r&   )r   r  r  Nr(   r  r,   r-   r.   r/   r0   r$   r  r1   r'   r&   r#   r  r    s#    11
I..:

r&   r  c                  z    \ rS rSr% S\S'   S\S'   S\S'   S\S	'   S
\S'   S
\S'   S\S'   S\S'   SS jrSS jrSrg)r  i  zt.Literal['statement']r  r  r  r   r  r  r   t.Literal['*'] | URIRefr  r  !t.Literal['*'] | URIRef | Literalrb  +t.Literal['*', 'named', 'default'] | URIRefr  c                p   [        U R                  5      U l        [        U R                  5      U l        [	        U R
                  5      U l        [        U R                  5      U l        [        U R                  5      U l	        [        U R                  5      U l        [        U R                  5      U l        g r  )r  r  r  r  r  r   r  r  r  r  r  rb  r  r  r  s    r#   r$   )StatementAccessControlEntry.__post_init__  sr    #DKK0		*	)$..9%dll3)$..9#DKK0!$**-
r&   c           
         U R                   U R                  U R                  U R                  [	        U R
                  5      [	        U R                  5      [	        U R                  5      [	        U R                  5      S.$ )N)r  r  r  r   r  r  rb  r!  )	r  r  r  r   _format_termr  r  rb  r  r  s    r#   r  #StatementAccessControlEntry.as_dict  sX    ZZkkII#DLL1%dnn5"4;;/#DJJ/	
 		
r&   )r  rb  r   r  r  r  r  Nr(   r  r  r'   r&   r#   r  r    s;    !!11
I..$$&&--66.

r&   r  c                  \    \ rS rSr% S\S'   S\S'   S\S'   S\S	'   S\S
'   SS jrSS jrSrg)r  i  zt.Literal['plugin']r  r  r  r   r  r  r   r  c                    [        U R                  5      U l        [        U R                  5      U l        [	        U R
                  5      U l        [        U R                  5      U l        g r  )r  r  r  r  r  r   r  r  r  s    r#   r$   &PluginAccessControlEntry.__post_init__  sB    #DKK0		*	)$..9#DKK0r&   c                v    U R                   U R                  U R                  U R                  U R                  S.$ )Nr  r  r  s    r#   r   PluginAccessControlEntry.as_dict  s/    ZZkkIIkk
 	
r&   )r   r  r  r  Nr(   r  r  r'   r&   r#   r  r    s(    11
I..K1
r&   r  c                  R    \ rS rSr% S\S'   S\S'   S\S'   S\S	'   SS
 jrSS jrSrg)r  i  zt.Literal['clear_graph']r  r  r  r   r  r  r  c                    [        U R                  5      U l        [        U R                  5      U l        [	        U R
                  5      U l        g r  )r  r  r  r  r  r  r  s    r#   r$   *ClearGraphAccessControlEntry.__post_init__  s2    #DKK0		*	!$**-
r&   c                r    U R                   U R                  U R                  [        U R                  5      S.$ )N)r  r  r  r!  )r  r  r  r  r  r  s    r#   r  $ClearGraphAccessControlEntry.as_dict  s-    ZZkkII#DJJ/	
 	
r&   )r  r  r  Nr(   r  r  r'   r&   r#   r  r    s#    ##11
I66.

r&   r  >   denyallowabstain>   *readwrite>   r  namedrI  c                    U [         ;  a  [        SU < 35      e[        R                  " [        R                  S   U 5      $ )NzInvalid FGAC policy: )r  r  r  )_ALLOWED_POLICIESr   r   r   r   )r  s    r#   r  r    s9    &&0
;<<66!))67@@r&   c                    U [         ;  a  [        SU < 35      e[        R                  " [        R                  S   U 5      $ )NzInvalid FGAC operation: )r  r  r  )_ALLOWED_OPERATIONSr   r   r   r   )r   s    r#   r  r    s9    ++3I=ABB66!))019==r&   c                N    [        U [        5      (       d  [        SU < 35      eU $ )NzInvalid FGAC role: r   r   r   )r  s    r#   r  r    s'    dC  .th788Kr&   c                N    [        U [        5      (       d  [        SU < 35      eU $ )NzInvalid FGAC plugin: r  )r  s    r#   r  r    s'    fc""0
;<<Mr&   c                    U S:X  a  g[        U [        5      (       a  U $ [        U [        5      (       a"  [        U 5      n[        U[        5      (       a  U$ [	        SU < 35      e)Nr  zInvalid FGAC subject: r   r	   r   _parse_with_n3r   )r  parseds     r#   r  r    sZ    #~'6""'3(ff%%M
-g[9
::r&   c                    U S:X  a  g[        U [        5      (       a  U $ [        U [        5      (       a"  [        U 5      n[        U[        5      (       a  U$ [	        SU < 35      e)Nr  zInvalid FGAC predicate: r  )r  r  s     r#   r  r    s\    C)V$$)S!!	*ff%%M
/	}=
>>r&   c                    U S:X  a  g[        U [        [        45      (       a  U $ [        U [        5      (       a(  [	        U 5      n[        U[        [        45      (       a  U$ [        SU < 35      e)Nr  zInvalid FGAC object: )r   r	   r   r   r  r   )r  r  s     r#   r  r  %  sd    
cz#())
#s$fvw/00M
,SG4
55r&   c                    U [         ;   a(  [        R                  " [        R                  S   U 5      $ [	        U [
        5      (       a  U $ [	        U [        5      (       a"  [        U 5      n[	        U[
        5      (       a  U$ [        SU < 35      e)N)r  r  rI  zInvalid FGAC graph: )	_ALLOWED_GRAPHSr   r   r   r   r	   r   r  r   )r  r  s     r#   r  r  1  ss    vvaii 78%@@%  %&ff%%M
+E95
66r&   c                     [        U 5      n[        U[        [        45      (       a  U$  [        U 5      $ ! [         a    S n N7f = f! [         a  n[        SU < S35      UeS nAff = f)NzUnable to parse value z into an RDF term.)r
   	Exceptionr   r	   r   r   )r"   r  errs      r#   r  r  =  s{     &67+,,Xe}    X1%:LMNTWWXs&   6 
A AA
A(A##A(c                    [        U [        [        45      (       a  U R                  5       $ [        R
                  " [        U 5      $ r  )r   r	   r   n3r   r   r   )r"   s    r#   r  r  J  s1    %&'*++xxz66#ur&   )r  t.Anyr)   r  )r   r  r)   r  )r  r  r)   r   )r  r  r)   r   )r  r  r)   r  )r  r  r)   r  )r  r  r)   r  )r  r  r)   r  )r"   r   r)   zURIRef | Literal)r"   r  r)   r   )>
__future__r   typingr   dataclassesr   r   r   enumr   rdflibr   r	   rdflib.utilr
   r   r3   r:   rP   rk   r   r   r   r   r   r   r   r   r   r   r  r<  rH  rQ  r_  ri  ru  r|  r  r  r  r   r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r'   r&   r#   <module>r     sb   "  0 0  "  $I I I, $L L L$ $;
 ;
 ;
| $i
 i
 i
X $h
 h
 h
V $N N ND $e
 e
 e
P $O O O$ $V V V$ $Y Y Y, $;
 ;
 ;
| $T T T4 $V V VD $a
 a
 a
H $O O Od $S S Sl $  < $   $2 2 2j $8 8 8v $Q
 Q
 Q
h $  B $  * $   $D D D $  Bc4  !  !  ! H ]? ]? ]?@ 
1 
 
( 
"4 
 
@ 
1 
 
. 
#5 
 
( 1 , +A>	;	?	6	7
Xr&   