Remove use of distutils. (#7770)

distutils is deprecated and replaced by other stdlib constructs.
This commit is contained in:
Jiaming Yuan 2022-03-31 19:03:10 +08:00 committed by GitHub
parent e8eff3581b
commit 02dd7b6913
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 21 additions and 16 deletions

View File

@ -3,11 +3,10 @@
tqdm, sh are required to run this script. tqdm, sh are required to run this script.
""" """
from urllib.request import urlretrieve from urllib.request import urlretrieve
from typing import cast, Tuple
import argparse import argparse
from typing import List from typing import List, Optional
from sh.contrib import git from sh.contrib import git
from distutils import version from packaging import version
import subprocess import subprocess
import tqdm import tqdm
import os import os
@ -27,7 +26,8 @@ def show_progress(block_num, block_size, total_size):
downloaded = block_num * block_size downloaded = block_num * block_size
if downloaded < total_size: if downloaded < total_size:
pbar.update(block_size / 1024) upper = (total_size - downloaded) / 1024
pbar.update(min(block_size / 1024, upper))
else: else:
pbar.close() pbar.close()
pbar = None pbar = None
@ -136,19 +136,25 @@ def check_path():
def main(args: argparse.Namespace) -> None: def main(args: argparse.Namespace) -> None:
check_path() check_path()
rel = version.LooseVersion(args.release) rel = version.parse(args.release)
assert isinstance(rel, version.Version)
major = rel.major
minor = rel.minor
patch = rel.micro
print("Release:", rel) print("Release:", rel)
if len(rel.version) == 3: if not rel.is_prerelease:
# Major release # Major release
major, minor, patch = version.StrictVersion(args.release).version rc: Optional[str] = None
rc = None rc_ver: Optional[int] = None
rc_ver = None
else: else:
# RC release # RC release
major, minor, patch, rc, rc_ver = cast( major = rel.major
Tuple[int, int, int, str, int], rel.version minor = rel.minor
) patch = rel.micro
assert rel.pre is not None
rc, rc_ver = rel.pre
assert rc == "rc" assert rc == "rc"
release = str(major) + "." + str(minor) + "." + str(patch) release = str(major) + "." + str(minor) + "." + str(patch)

View File

@ -1,5 +1,5 @@
[metadata] [metadata]
description-file = README.rst description_file = README.rst
[mypy] [mypy]
ignore_missing_imports = True ignore_missing_imports = True

View File

@ -3,7 +3,6 @@ import os
import shutil import shutil
import subprocess import subprocess
import logging import logging
import distutils
from typing import Optional, List from typing import Optional, List
import sys import sys
from platform import system from platform import system
@ -51,11 +50,11 @@ def lib_name() -> str:
def copy_tree(src_dir: str, target_dir: str) -> None: def copy_tree(src_dir: str, target_dir: str) -> None:
'''Copy source tree into build directory.''' '''Copy source tree into build directory.'''
def clean_copy_tree(src: str, dst: str) -> None: def clean_copy_tree(src: str, dst: str) -> None:
distutils.dir_util.copy_tree(src, dst) shutil.copytree(src, dst)
NEED_CLEAN_TREE.add(os.path.abspath(dst)) NEED_CLEAN_TREE.add(os.path.abspath(dst))
def clean_copy_file(src: str, dst: str) -> None: def clean_copy_file(src: str, dst: str) -> None:
distutils.file_util.copy_file(src, dst) shutil.copy(src, dst)
NEED_CLEAN_FILE.add(os.path.abspath(dst)) NEED_CLEAN_FILE.add(os.path.abspath(dst))
src = os.path.join(src_dir, 'src') src = os.path.join(src_dir, 'src')