File: setup.py

package info (click to toggle)
streamlink 8.1.0-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 5,564 kB
  • sloc: python: 51,188; sh: 184; makefile: 152
file content (89 lines) | stat: -rw-r--r-- 2,833 bytes parent folder | download | duplicates (2)
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
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
import sys
from textwrap import dedent


CURRENT_PYTHON = sys.version_info[:2]
REQUIRED_PYTHON = (3, 10)

# This check and everything above must remain compatible with older Python versions
if CURRENT_PYTHON < REQUIRED_PYTHON:
    raise SystemExit(
        dedent(
            """
                ========================================================
                               Unsupported Python version
                ========================================================
                Streamlink requires at least Python {}.{},
                but you're trying to install it on Python {}.{}.

                This may be because you are using a version of pip that
                doesn't understand the python_requires classifier.
                Make sure you have pip >= 9.0 and setuptools >= 24.2
            """,
        )
        .strip(" \n")
        .format(*REQUIRED_PYTHON, *CURRENT_PYTHON),
    )


from pathlib import Path  # noqa: E402


def is_wheel_for_windows(argv):
    if "bdist_wheel" in argv:
        names = ["win32", "win-amd64", "cygwin"]
        length = len(argv)
        for pos in range(argv.index("bdist_wheel") + 1, length):
            if argv[pos] == "--plat-name" and pos + 1 < length:
                return argv[pos + 1] in names
            elif argv[pos][:12] == "--plat-name=":
                return argv[pos][12:] in names
    return False


entry_points = {
    "console_scripts": ["streamlink=streamlink_cli.main:main"],
}

if is_wheel_for_windows(sys.argv):
    entry_points["gui_scripts"] = ["streamlinkw=streamlink_cli.main:main"]


# optional data files
data_files = [
    # shell completions:
    #  requires pre-built completion files via shtab ("build" dependency group)
    #  `./script/build-shell-completions.sh`
    ("share/bash-completion/completions", ["completions/bash/streamlink"]),
    ("share/zsh/site-functions", ["completions/zsh/_streamlink"]),
    # man page:
    #  requires the pre-built man page file via sphinx ("docs" dependency group)
    #  `make --directory=docs clean man`
    ("share/man/man1", ["docs/_build/man/streamlink.1"]),
]
data_files = [
    (destdir, [file for file in srcfiles if Path(file).exists()])
    for destdir, srcfiles in data_files
]  # fmt: skip


if __name__ == "__main__":
    sys.path.insert(0, str(Path(__file__).parent))

    from build_backend.commands import cmdclass
    from setuptools import setup

    try:
        # versioningit is only required when building from git (see pyproject.toml)
        from versioningit import get_cmdclasses
    except ImportError:  # pragma: no cover

        def get_cmdclasses(_):  # type: ignore[misc]
            return _

    setup(
        cmdclass=get_cmdclasses(cmdclass),
        entry_points=entry_points,
        data_files=data_files,
        version="8.1.0",
    )