From 02dd7b69130887cfaebbc8f524e0d6fc77d7990d Mon Sep 17 00:00:00 2001 From: Jiaming Yuan Date: Thu, 31 Mar 2022 19:03:10 +0800 Subject: [PATCH] Remove use of distutils. (#7770) distutils is deprecated and replaced by other stdlib constructs. --- dev/release-py-r.py | 30 ++++++++++++++++++------------ python-package/setup.cfg | 2 +- python-package/setup.py | 5 ++--- 3 files changed, 21 insertions(+), 16 deletions(-) diff --git a/dev/release-py-r.py b/dev/release-py-r.py index 3d58c83c6..115c65e78 100644 --- a/dev/release-py-r.py +++ b/dev/release-py-r.py @@ -3,11 +3,10 @@ tqdm, sh are required to run this script. """ from urllib.request import urlretrieve -from typing import cast, Tuple import argparse -from typing import List +from typing import List, Optional from sh.contrib import git -from distutils import version +from packaging import version import subprocess import tqdm import os @@ -27,7 +26,8 @@ def show_progress(block_num, block_size, total_size): downloaded = block_num * block_size if downloaded < total_size: - pbar.update(block_size / 1024) + upper = (total_size - downloaded) / 1024 + pbar.update(min(block_size / 1024, upper)) else: pbar.close() pbar = None @@ -136,19 +136,25 @@ def check_path(): def main(args: argparse.Namespace) -> None: 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) - if len(rel.version) == 3: + if not rel.is_prerelease: # Major release - major, minor, patch = version.StrictVersion(args.release).version - rc = None - rc_ver = None + rc: Optional[str] = None + rc_ver: Optional[int] = None else: # RC release - major, minor, patch, rc, rc_ver = cast( - Tuple[int, int, int, str, int], rel.version - ) + major = rel.major + minor = rel.minor + patch = rel.micro + assert rel.pre is not None + rc, rc_ver = rel.pre assert rc == "rc" release = str(major) + "." + str(minor) + "." + str(patch) diff --git a/python-package/setup.cfg b/python-package/setup.cfg index 9337cad1d..415f32010 100644 --- a/python-package/setup.cfg +++ b/python-package/setup.cfg @@ -1,5 +1,5 @@ [metadata] -description-file = README.rst +description_file = README.rst [mypy] ignore_missing_imports = True diff --git a/python-package/setup.py b/python-package/setup.py index 648c042b2..35314ab21 100644 --- a/python-package/setup.py +++ b/python-package/setup.py @@ -3,7 +3,6 @@ import os import shutil import subprocess import logging -import distutils from typing import Optional, List import sys from platform import system @@ -51,11 +50,11 @@ def lib_name() -> str: def copy_tree(src_dir: str, target_dir: str) -> None: '''Copy source tree into build directory.''' 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)) 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)) src = os.path.join(src_dir, 'src')