aboutsummaryrefslogtreecommitdiff
path: root/setup.py
blob: ad1ed8d6c73746846fa168dd1774d0a7004a8fdb (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
45
46
# SPDX-FileCopyrightText: Copyright 2022, Arm Limited and/or its affiliates.
# SPDX-License-Identifier: Apache-2.0
"""Module to setup the python package."""
from __future__ import annotations

import os
import re
from pathlib import Path
from string import Template

from setuptools import setup


def replace_markdown_relative_paths(
    path: Path, file_name: str, revision_tag: str
) -> str:
    """Replace relative paths in md file with links to review.mlplatform.org."""
    md_url = Template(
        "https://review.mlplatform.org/plugins/gitiles/ml/mlia/+/refs/tags/$tag/$link"
    )
    img_url = Template("https://git.mlplatform.org/ml/mlia.git/plain/$link?h=$tag")
    md_link_pattern = r"(!?\[.+?\]\((.+?)\))"

    content = path.joinpath(file_name).read_text()
    # Find all md links with these formats: [title](url) or ![title](url)
    for match, link in re.findall(md_link_pattern, content):
        if path.joinpath(link).exists():
            # Choose appropriate url template depending on wheteher the
            # orginal link points to a file or an image.
            template = img_url if match[0] == "!" else md_url
            new_url = template.substitute(tag=revision_tag, link=link)
            md_link = match.replace(link, new_url)
            # Replace existing links with new ones
            content = content.replace(match, md_link)
    if os.getenv("MLIA_DEBUG"):
        # Generate an md file to verify the changes
        path.joinpath("PYPI.md").write_text(content)
    return content


if __name__ == "__main__":
    from setuptools_scm import get_version  # pylint: disable=import-error

    tag = get_version()
    long_description = replace_markdown_relative_paths(Path.cwd(), "README.md", tag)
    setup(long_description=long_description)