File: setup.py

package info (click to toggle)
debugpy 1.8.12%2Bds-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 1,424 kB
  • sloc: python: 14,451; sh: 184; makefile: 33
file content (158 lines) | stat: -rw-r--r-- 5,285 bytes parent folder | download
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
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
#!/usr/bin/env python

# Copyright (c) Microsoft Corporation. All rights reserved.
# Licensed under the MIT License. See LICENSE in the project root
# for license information.

import os
import os.path
import setuptools
import subprocess
import sys


sys.path.insert(0, os.path.dirname(os.path.abspath(__file__)))
import versioneer  # noqa

del sys.path[0]

sys.path.insert(0, os.path.join(os.path.dirname(os.path.abspath(__file__)), "src"))
import debugpy
import debugpy._vendored

del sys.path[0]


PYDEVD_ROOT = debugpy._vendored.project_root("pydevd")
DEBUGBY_ROOT = os.path.dirname(os.path.abspath(debugpy.__file__))


def get_buildplatform():
    if "-p" in sys.argv:
        return sys.argv[sys.argv.index("-p") + 1]
    return None


def override_build(cmds):
    def finalize_options(self):
        # Mark all packages as pure if requested to build a universal wheel.
        # Otherwise, bdist_wheel will silently ignore the request.
        bdist_wheel = self.distribution.get_command_obj("bdist_wheel", 0)
        if bdist_wheel is not None and bdist_wheel.universal:
            self.distribution.ext_modules = []
            self.distribution.has_ext_modules = lambda: False
        original(self)

    try:
        build = cmds["build"]
    except KeyError:
        from setuptools.command.build import build
    original = build.finalize_options
    build.finalize_options = finalize_options


def override_build_py(cmds):
    # Add vendored packages as data files for this package, and filter platform-specific binaries
    # in data files for binary builds.
    def finalize_options(self):
        original(self)

        # Register pydevd and other vendored packages as package data for debugpy.
        vendored_files = self.package_data["debugpy._vendored"]
        for project in debugpy._vendored.list_all():
            for filename in debugpy._vendored.iter_packaging_files(project):
                vendored_files.append(filename)

        # Don't filter anything for universal wheels.
        if not self.distribution.ext_modules:
            return

        plat = self.get_finalized_command("build").plat_name

        def is_applicable(filename):
            def tail_is(*suffixes):
                return any((filename.endswith(ext) for ext in suffixes))

            if tail_is(".dylib"):
                return plat.startswith("macosx")
            if tail_is(".exe", ".dll", ".pdb", ".pyd"):
                return plat in ("win32", "win-amd64")
            if tail_is("-i386-linux-gnu.so", "_linux_x86.so"):
                return plat == "linux-i686"
            if tail_is("-x86_64-linux-gnu.so", "_linux_amd64.so"):
                return plat == "linux-x86_64"
            return True

        vendored_files[:] = list(filter(is_applicable, vendored_files))

    try:
        build_py = cmds["build_py"]
    except KeyError:
        from setuptools.command.build_py import build_py
    original = build_py.finalize_options
    build_py.finalize_options = finalize_options


with open("DESCRIPTION.md", "r") as fh:
    long_description = fh.read()


if __name__ == "__main__":
    extras = {}
    platforms = get_buildplatform()
    if platforms is not None:
        extras["platforms"] = platforms

    cmds = versioneer.get_cmdclass()
    override_build(cmds)
    override_build_py(cmds)

    setuptools.setup(
        name="debugpy",
        version=versioneer.get_version(),
        description="An implementation of the Debug Adapter Protocol for Python",  # noqa
        long_description=long_description,
        long_description_content_type="text/markdown",
        license="MIT",
        author="Microsoft Corporation",
        author_email="ptvshelp@microsoft.com",
        url="https://aka.ms/debugpy",
        project_urls={
            "Source": "https://github.com/microsoft/debugpy",
        },
        python_requires=">=3.8",
        classifiers=[
            "Development Status :: 5 - Production/Stable",
            "Programming Language :: Python :: 3.8",
            "Programming Language :: Python :: 3.9",
            "Programming Language :: Python :: 3.10",
            "Programming Language :: Python :: 3.11",
            "Programming Language :: Python :: 3.12",
            "Topic :: Software Development :: Debuggers",
            "Operating System :: Microsoft :: Windows",
            "Operating System :: MacOS",
            "Operating System :: POSIX",
            "License :: OSI Approved :: MIT License",
        ],
        package_dir={"": "src"},
        packages=[
            "debugpy",
            "debugpy.adapter",
            "debugpy.common",
            "debugpy.launcher",
            "debugpy.server",
            "debugpy._vendored",
        ],
        package_data={
            "debugpy": ["ThirdPartyNotices.txt"],
            "debugpy._vendored": [
                # pydevd extensions must be built before this list can be computed properly,
                # so it is populated in the overridden build_py.finalize_options().
            ],
        },
        has_ext_modules=lambda: False,
        cmdclass=cmds,
        # allow the user to call "debugpy" instead of "python -m debugpy"
        entry_points={"console_scripts": ["debugpy = debugpy.server.cli:main"]},
        **extras
    )