HEX
Server: Apache
System: Linux www3.pit.tblive.com 5.14.0-687.38.1.el9_8.x86_64 #1 SMP PREEMPT_DYNAMIC Wed Aug 12 17:19:12 EDT 2026 x86_64
User: awaldron (1020)
PHP: 8.1.34
Disabled: exec,passthru,shell_exec,system
Upload Files
File: //opt/imunify360/venv/lib/python3.11/site-packages/pip/_internal/models/direct_url.py
"""PEP 610"""

from __future__ import annotations

import json
from typing import Any

from pip._vendor.packaging.direct_url import (
    ArchiveInfo,
    DirectUrlValidationError,
    DirInfo,
    VcsInfo,
)
from pip._vendor.packaging.direct_url import (
    DirectUrl as PackagingDirectUrl,
)

__all__ = [
    "ArchiveInfo",
    "DirInfo",
    "DirectUrl",
    "DirectUrlValidationError",
    "DIRECT_URL_METADATA_NAME",
    "VcsInfo",
]

DIRECT_URL_METADATA_NAME = "direct_url.json"


class DirectUrl(PackagingDirectUrl):
    def to_dict_compat(self) -> dict[str, Any]:
        return dict(super().to_dict(generate_legacy_hash=True))

    @classmethod
    def from_json(cls, s: str) -> DirectUrl:
        return cls.from_dict(json.loads(s))

    def to_json(self) -> str:
        return json.dumps(self.to_dict_compat(), sort_keys=True)

    def is_local_editable(self) -> bool:
        return bool(self.dir_info and self.dir_info.editable)