Ë
    hKêj*  ã                   ó®   — 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
 dZ G d„ d«      Z G d	„ d
eej                  «      Z G d„ dej                  «      Zy)é    )ÚValidationError)Úmodels)Úgettext_lazy)Ú
PackageURL)Úpurl_to_lookups)ÚtypeÚ	namespaceÚnameÚversionÚ
qualifiersÚsubpathc                   ó0   — e Zd ZdZdd„Zd„ Zd„ Zd„ Zd„ Zy)	ÚPackageURLQuerySetMixinzK
    Add Package URL filtering methods to a django.db.models.QuerySet.
    c                 óf   — t        |||¬«      }|r | j                  di |¤ŽS | j                  «       S )ao  
        Filter the QuerySet based on a Package URL (purl) string with an option for
        exact match filtering.

        When `exact_match` is False (default), the method will match any purl with the
        same base fields as `purl_str` and allow variations in other fields.
        When `exact_match` is True, only the identical purl will be returned.
        )Úpurl_strÚencodeÚinclude_empty_fields© )r   ÚfilterÚnone)Úselfr   r   Úexact_matchÚlookupss        úe/home/oem/CyberBrain26-unified/.venv/lib/python3.12/site-packages/packageurl/contrib/django/models.pyÚfor_package_urlz'PackageURLQuerySetMixin.for_package_url*   s:   € ô "Ø fÀ;ô
ˆñ Ø�4—;‘;Ñ) Ñ)Ð)Ø�y‰y‹{Ðó    c                 ó~   — | j                  t        j                  d¬«       t        j                  d¬«       z  «      S )z(Return objects with Package URL defined.Ú ©r   ©r
   ©r   r   ÚQ©r   s    r   Úwith_package_urlz(PackageURLQuerySetMixin.with_package_url:   s.   € à�{‰{œFŸH™H¨"Ô-Ð-´·±¸rÔ1BÐ0BÑBÓCÐCr   c                 óz   — | j                  t        j                  d¬«      t        j                  d¬«      z  «      S )z&Return objects with empty Package URL.r   r   r    r!   r#   s    r   Úwithout_package_urlz+PackageURLQuerySetMixin.without_package_url>   s(   € à�{‰{œ6Ÿ8™8¨Ô,¬v¯x©x¸RÔ/@Ñ@ÓAÐAr   c                 ó"   — | j                  «       S )zDReturn objects with empty Package URL. Alias of without_package_url.)r&   r#   s    r   Úempty_package_urlz)PackageURLQuerySetMixin.empty_package_urlB   s   € à×'Ñ'Ó)Ð)r   c                 ó(   —  | j                   t        Ž S )zOrder by Package URL fields.)Úorder_byÚPACKAGE_URL_FIELDSr#   s    r   Úorder_by_package_urlz,PackageURLQuerySetMixin.order_by_package_urlF   s   € àˆt�}‰}Ô0Ð1Ð1r   N)TF)	Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r$   r&   r(   r,   r   r   r   r   r   %   s"   „ ñóò DòBò*ó2r   r   c                   ó   — e Zd Zy)ÚPackageURLQuerySetN)r-   r.   r/   r   r   r   r2   r2   K   s   „ Ør   r2   c                   ó¤  — e Zd ZdZ ej
                  dd ed«      ¬«      Z ej
                  dd ed«      ¬«      Z ej
                  dd ed	«      ¬«      Z	 ej
                  dd ed
«      ¬«      Z
 ej
                  dd ed«      ¬«      Z ej
                  dd ed«      ¬«      Zej                  «       Z G d„ d«      Zed„ «       Zd„ Zd„ Zy)ÚPackageURLMixinz?
    Abstract Model for Package URL "purl" fields support.
    é   TzÀA short code to identify the type of this package. For example: gem for a Rubygem, docker for a container, pypi for a Python Wheel or Egg, maven for a Maven Jar, deb for a Debian package, etc.)Ú
max_lengthÚblankÚ	help_textéÿ   zaPackage name prefix, such as Maven groupid, Docker image owner, GitHub user or organization, etc.éd   zName of the package.zVersion of the package.i   zYExtra qualifying data for a package such as the name of an OS, architecture, distro, etc.éÈ   z=Extra subpath within a package, relative to the package root.c                   ó   — e Zd ZdZy)úPackageURLMixin.MetaTN)r-   r.   r/   Úabstractr   r   r   ÚMetar=   …   s   „ Ø‰r   r?   c                 óX   — 	 | j                  «       }t        |«      S # t        $ r Y yw xY w)z7
        Return the Package URL "purl" string.
        r   )Úget_package_urlÚ
ValueErrorÚstr)r   Úpackage_urls     r   rD   zPackageURLMixin.package_urlˆ   s6   € ð
	Ø×.Ñ.Ó0ˆKô �;ÓÐøô ò 	Ùð	ús   ‚ �	)¨)c                 óš   — t        | j                  | j                  | j                  | j                  | j
                  | j                  «      S )z.
        Get the PackageURL instance.
        )r   r   r	   r
   r   r   r   r#   s    r   rA   zPackageURLMixin.get_package_url”   s;   € ô Ø�I‰IØ�N‰NØ�I‰IØ�L‰LØ�O‰OØ�L‰Ló
ð 	
r   c                 ó\  — t        |t        «      st        j                  |«      }|j                  dd¬«      }|j	                  «       D ]a  \  }}| j
                  j                  |«      }|r2t        |«      |j                  kD  rt        d|› d�«      }t        |«      ‚t        | ||«       Œc y)a3  
        Set each field values to the values of the provided `package_url` string
        or PackageURL object.
        Existing values are always overwritten, forcing the new value or an
        empty string on all the `package_url` fields since we do not want to
        keep any previous values.
        Tr   )r   ÚemptyzValue too long for field "z".N)Ú
isinstancer   Úfrom_stringÚto_dictÚitemsÚ_metaÚ	get_fieldÚlenr6   Ú_r   Úsetattr)r   rD   Úpackage_url_dictÚ
field_nameÚvalueÚmodel_fieldÚmessages          r   Úset_package_urlzPackageURLMixin.set_package_url¡   s¤   € ô ˜+¤zÔ2Ü$×0Ñ0°Ó=ˆKà&×.Ñ.°dÀ"Ð.ÓEÐØ!1×!7Ñ!7Ó!9ò 	-ÑˆJ˜ØŸ*™*×.Ñ.¨zÓ:ˆKáœ˜U› k×&<Ñ&<Ò<ÜÐ8¸¸ÀBÐGÓH�Ü% gÓ.Ð.ä�D˜* eÕ,ñ	-r   N)r-   r.   r/   r0   r   Ú	CharFieldrO   r   r	   r
   r   r   r   r2   Ú
as_managerÚobjectsr?   ÚpropertyrD   rA   rV   r   r   r   r4   r4   O   s  „ ñð ˆ6×ÑØØÙð-ó
ô	€Dð !�× Ñ ØØÙð0ó
ô€Ið ˆ6×ÑØØÙÐ*Ó+ô€Dð ˆf×ÑØØÙÐ-Ó.ô€Gð "�×!Ñ!ØØÙð)ó
ô€Jð ˆf×ÑØØÙÐSÓTô€Gð !×+Ñ+Ó-€G÷ñ ð ñ	 ó ð	 ò
ó-r   r4   N)Údjango.core.exceptionsr   Ú	django.dbr   Údjango.utils.translationr   rO   Ú
packageurlr   Úpackageurl.contrib.django.utilsr   r+   r   ÚQuerySetr2   ÚModelr4   r   r   r   ú<module>rb      sL   ðõ6 3Ý Ý 6å !Ý ;àVÐ ÷#2ñ #2ôL	Ð0°&·/±/ô 	ôe-�f—l‘lõ e-r   