Path: blob/master/ invest-robot-contest_TinkoffBotTwitch-main/venv/lib/python3.8/site-packages/setuptools/command/rotate.py
7757 views
from distutils.util import convert_path1from distutils import log2from distutils.errors import DistutilsOptionError3import os4import shutil56from setuptools.extern import six78from setuptools import Command91011class rotate(Command):12"""Delete older distributions"""1314description = "delete older distributions, keeping N newest files"15user_options = [16('match=', 'm', "patterns to match (required)"),17('dist-dir=', 'd', "directory where the distributions are"),18('keep=', 'k', "number of matching distributions to keep"),19]2021boolean_options = []2223def initialize_options(self):24self.match = None25self.dist_dir = None26self.keep = None2728def finalize_options(self):29if self.match is None:30raise DistutilsOptionError(31"Must specify one or more (comma-separated) match patterns "32"(e.g. '.zip' or '.egg')"33)34if self.keep is None:35raise DistutilsOptionError("Must specify number of files to keep")36try:37self.keep = int(self.keep)38except ValueError as e:39raise DistutilsOptionError("--keep must be an integer") from e40if isinstance(self.match, six.string_types):41self.match = [42convert_path(p.strip()) for p in self.match.split(',')43]44self.set_undefined_options('bdist', ('dist_dir', 'dist_dir'))4546def run(self):47self.run_command("egg_info")48from glob import glob4950for pattern in self.match:51pattern = self.distribution.get_name() + '*' + pattern52files = glob(os.path.join(self.dist_dir, pattern))53files = [(os.path.getmtime(f), f) for f in files]54files.sort()55files.reverse()5657log.info("%d file(s) matching %s", len(files), pattern)58files = files[self.keep:]59for (t, f) in files:60log.info("Deleting %s", f)61if not self.dry_run:62if os.path.isdir(f):63shutil.rmtree(f)64else:65os.unlink(f)666768