Coverage for /pythoncovmergedfiles/medio/medio/usr/local/lib/python3.11/site-packages/pip/_internal/models/direct_url.py: 78%

Shortcuts on this page

r m x   toggle line displays

j k   next/prev highlighted chunk

0   (zero) top of page

1   (one) first highlighted chunk

18 statements  

1"""PEP 610""" 

2 

3from __future__ import annotations 

4 

5import json 

6from typing import Any 

7 

8from pip._vendor.packaging.direct_url import ( 

9 ArchiveInfo, 

10 DirectUrlValidationError, 

11 DirInfo, 

12 VcsInfo, 

13) 

14from pip._vendor.packaging.direct_url import ( 

15 DirectUrl as PackagingDirectUrl, 

16) 

17 

18__all__ = [ 

19 "ArchiveInfo", 

20 "DirInfo", 

21 "DirectUrl", 

22 "DirectUrlValidationError", 

23 "DIRECT_URL_METADATA_NAME", 

24 "VcsInfo", 

25] 

26 

27DIRECT_URL_METADATA_NAME = "direct_url.json" 

28 

29 

30class DirectUrl(PackagingDirectUrl): 

31 def to_dict_compat(self) -> dict[str, Any]: 

32 return dict(super().to_dict(generate_legacy_hash=True)) 

33 

34 @classmethod 

35 def from_json(cls, s: str) -> DirectUrl: 

36 return cls.from_dict(json.loads(s)) 

37 

38 def to_json(self) -> str: 

39 return json.dumps(self.to_dict_compat(), sort_keys=True) 

40 

41 def is_local_editable(self) -> bool: 

42 return bool(self.dir_info and self.dir_info.editable)