blob: e1ea60c9667578b2002d5782a56793a55c140c4d (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
|
from __future__ import annotations
import logging
import os
from pathlib import Path
from typing import TYPE_CHECKING
if TYPE_CHECKING:
from . import _types as _t
from . import Configuration
from .integration import data_from_mime
from .version import meta
from .version import ScmVersion
from .version import tag_to_version
log = logging.getLogger(__name__)
_UNKNOWN = "UNKNOWN"
def parse_pkginfo(root: _t.PathT, config: Configuration) -> ScmVersion | None:
pkginfo = Path(root) / "PKG-INFO"
log.debug("pkginfo %s", pkginfo)
data = data_from_mime(pkginfo)
version = data.get("Version", _UNKNOWN)
if version != _UNKNOWN:
return meta(version, preformatted=True, config=config)
else:
return None
def fallback_version(root: _t.PathT, config: Configuration) -> ScmVersion | None:
if config.parentdir_prefix_version is not None:
_, parent_name = os.path.split(os.path.abspath(root))
if parent_name.startswith(config.parentdir_prefix_version):
version = tag_to_version(
parent_name[len(config.parentdir_prefix_version) :], config
)
if version is not None:
return meta(str(version), preformatted=True, config=config)
if config.fallback_version is not None:
log.debug("FALLBACK %s", config.fallback_version)
return meta(config.fallback_version, preformatted=True, config=config)
return None
|