
    ܖi                        U g d Z ddlmZ ddlmZ ddlmZ ddlmZ	 ddl
mZmZmZmZmZmZ ddlmZ erdd	lmZ dd
lmZ ddlmZmZmZmZmZ  ddl!m"Z"m#Z#m$Z$ dZ%ee&ee'f      e(d<   	 ddl)m*Z* ddl+m,Z, ddl-m.Z. erddl/m$Z0 ddl1m2Z3  G d de$      Z5 G d de"e      Z6 G d de6e"e#      Z7 G d de6e"e#      Z8y# e'$ rZ4 ed      e4fZ%Y dZ4[4FdZ4[4ww xY w))JsonValidatorJsonStrictValidatorJsonValidationError    )ABC)Iterable)chain)loads)TYPE_CHECKINGAnyLiteralOptionalUnionoverload   )OutputFormat)SchemaVersion)"MissingOptionalDependencyException)BOM_JSONBOM_JSON_STRICTCRYPTOGRAPHY_DEFSJSF	SPDX_JSON   )BaseSchemabasedValidatorSchemabasedValidatorValidationErrorN_missing_deps_error)Draft7Validator)Registry)DRAFT7)r   )	Validatorz{This functionality requires optional dependencies.
Please install `cyclonedx-python-lib` with the extra "json-validation".
c                       e Zd Zedd       Zy)r   c                      | |      S )ue   ⚠️ This is an internal API. It is not part of the public interface and may change without notice. )clses     ]/var/www/html/content-pipeline/venv/lib/python3.12/site-packages/cyclonedx/validation/json.py_make_from_jsvez#JsonValidationError._make_from_jsve;   s     1v    N)r&   JsonSchemaValidationErrorreturnr   )__name__
__module____qualname__classmethodr(   r$   r)   r'   r   r   :   s     r)   r   c                       e Zd ZU edeej                     fd       Zd fdZe	ddde
ded	   dee   fd
       Ze	de
ded   deee      fd       Zd	dde
dededeee   f   fdZereZd	dde
dededeee   f   fdZ xZS d	dde
dededeee   f   fdZdZed   ed<   edd       Zedee   fd       Z xZS )_BaseJsonValidatorr+   c                 "    t         j                  S N)r   JSONselfs    r'   output_formatz _BaseJsonValidator.output_formatC   s       r)   Nc                 $    t         |   |       y r3   )super__init__)r6   schema_version	__class__s     r'   r:   z_BaseJsonValidator.__init__G   s    (r)   .)
all_errorsdatar=   Fc                     y r3   r$   r6   r>   r=   s      r'   validate_strz_BaseJsonValidator.validate_strM       r)   Tc                     y r3   r$   r@   s      r'   rA   z_BaseJsonValidator.validate_strQ   rB   r)   c                     y r3   r$   r@   s      r'   rA   z_BaseJsonValidator.validate_strU   s     	r)   c                <    | j                   d   | j                   d   )Nr   r   )_BaseJsonValidator__MDERRORr@   s      r'   rA   z_BaseJsonValidator.validate_str_   s     ..#)::r)   c                    | j                   }t        |      }|j                  |      }t        |d       }|y t        j                  |      }|r%t        |ft        t        j
                  |            S |S r3   )
_validator
json_loadsiter_errorsnextr   r(   r   map)r6   r>   r=   	validator	structureerrorsfirst_errors          r'   rA   z_BaseJsonValidator.validate_strf   sy     I"4(I**95Fvt,K"-==kJK +-@-P-PRX)YZ ! !r)   JsonSchemaValidator_BaseJsonValidator__validatorc                 ^   | j                   s| j                  }|t        d      t        |      5 }t	        t        |j                               | j                         t        j                        | _         d d d        | j                   S | j                   S # 1 sw Y   | j                   S xY w)Nzmissing schema file)registryformat_checker)	rR   _schema_fileNotImplementedErroropenr   rI   read+_BaseJsonValidator__make_validator_registryFORMAT_CHECKER)r6   schema_filesfs      r'   rH   z_BaseJsonValidator._validatorv   s    ##"//&-.CDD+& G"'6"2779-!%!?!?!A'6'E'E(GD$G
 ###4###G
 ###s   ABB,c                  Z   d} t        t              5 }t        t              5 }t        t              5 }t	               j                  |  dt        j                  t        |j                                     f|  dt        j                  t        |j                                     f|  dt        j                  t        |j                                     fg      cd d d        cd d d        cd d d        S # 1 sw Y   nxY wd d d        n# 1 sw Y   nxY wd d d        y # 1 sw Y   y xY w)Nzhttp://cyclonedx.org/schema/zspdx.SNAPSHOT.schema.jsonz&cryptography-defs.SNAPSHOT.schema.jsonzjsf-0.82.SNAPSHOT.schema.json)
rX   _S_SPDX_S_JSF_S_CDEFSr   with_resourcesr    create_resourcerI   rY   )schema_prefixspdxjsfcdefss       r'   __make_validator_registryz,_BaseJsonValidator.__make_validator_registry   s    :Mg $V T(^ uz00%&?@&BXBXYcdhdmdmdoYpBqr%&LM++Juzz|,DEG%&CDfF\F\]ghkhphphr]sFtu	2           s@   D!DB)C7	D$	D!7D <D	D!D	D!!D*)r;   r   r+   N)r+   rQ   )r,   r-   r.   propertyr   r   r4   r7   r:   r   strr   r   rA   r   boolr   r   rF   rR   __annotations__rH   staticmethodr   r   rZ   __classcell__)r<   s   @r'   r1   r1   B   s   !w|'8'89 ! !) FI  WU^ hWjNk    WT] xPXYlPmGn   05(,	t((3F*GG	H '	 49	;	;,0	;4,h7J.KKL	; 49	!	!,0	!4,h7J.KKL	! 8<X34;	
	$ 

	$ 
	8C= 	 
	r)   r1   c                   ,    e Zd ZdZedee   fd       Zy)r   z1Validator for CycloneDX documents in JSON format.r+   c                 @    t        j                  | j                        S r3   )_S_BOMgetr;   r5   s    r'   rV   zJsonValidator._schema_file   s    zz$--..r)   Nr,   r-   r.   __doc__ri   r   rj   rV   r$   r)   r'   r   r      s"    ;/hsm / /r)   r   c                   ,    e Zd ZdZedee   fd       Zy)r   zStrict validator for CycloneDX documents in JSON format.

    In contrast to :class:`~JsonValidator`,
    the document must not have additional or unknown JSON properties.
    r+   c                 @    t        j                  | j                        S r3   )_S_BOM_STRICTrr   r;   r5   s    r'   rV   z JsonStrictValidator._schema_file   s      !4!455r)   Nrs   r$   r)   r'   r   r      s&    
 6hsm 6 6r)   r   )9__all__abcr   collections.abcr   	itertoolsr   jsonr	   rI   typingr
   r   r   r   r   r   schemar   r   	exceptionr   schema._resr   rq   r   rw   r   ra   r   r`   r   r_    r   r   r   r   tupleImportErrorrl   jsonschema.validatorsr   referencingr   referencing.jsonschemar    jsonschema.exceptionsr*   jsonschema.protocolsr!   rQ   errr   r1   r   r   r$   r)   r'   <module>r      s   & J
I  $  $ I I !& :  N MX\ Xe$F$STU \5$-VI/ J13 JZ/&(@BV /6,.FH\ 6I  <	T s   * B< <C
CC