Skip to content

Commit a753991

Browse files
authored
s3_management: Hide specific packages between dates (#1256)
1 parent 6d4caac commit a753991

File tree

1 file changed

+22
-5
lines changed

1 file changed

+22
-5
lines changed

s3_management/manage.py

+22-5
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,15 @@
11
#!/usr/bin/env python
22

33
import argparse
4-
import tempfile
54
import time
65

76
from os import path, makedirs
7+
from datetime import datetime
88
from collections import defaultdict
99
from typing import Iterator, List, Type, Dict, Set, TypeVar, Optional
10-
from re import sub, match
10+
from re import sub, match, search
1111
from packaging.version import parse
1212

13-
import botocore
1413
import boto3
1514

1615

@@ -31,11 +30,27 @@
3130
"whl/test": "torch_test.html",
3231
}
3332

33+
# Should match torch-2.0.0.dev20221221+cu118-cp310-cp310-linux_x86_64.whl as:
34+
# Group 1: torch-2.0.0.dev
35+
# Group 2: 20221221
36+
PACKAGE_DATE_REGEX = r"([a-zA-z]*-[0-9.]*.dev)([0-9]*)"
37+
3438
# How many packages should we keep of a specific package?
3539
KEEP_THRESHOLD = 60
3640

3741
S3IndexType = TypeVar('S3IndexType', bound='S3Index')
3842

43+
def extract_package_build_time(full_package_name: str) -> datetime:
44+
result = search(PACKAGE_DATE_REGEX, full_package_name)
45+
if result is not None:
46+
return datetime.strptime(result.group(2), "%Y%M%d")
47+
return datetime.now()
48+
49+
def between_bad_dates(package_build_time: datetime):
50+
start_bad = datetime(year=2022, month=11, day=29)
51+
end_bad = datetime(year=2022, month=12, day=29)
52+
return start_bad <= package_build_time <= end_bad
53+
3954

4055
class S3Index:
4156
def __init__(self: S3IndexType, objects: List[str], prefix: str) -> None:
@@ -70,8 +85,10 @@ def nightly_packages_to_show(self: S3IndexType) -> Set[str]:
7085
packages: Dict[str, int] = defaultdict(int)
7186
to_hide: Set[str] = set()
7287
for obj in all_sorted_packages:
73-
package_name = path.basename(obj).split('-')[0]
74-
if packages[package_name] >= KEEP_THRESHOLD:
88+
full_package_name = path.basename(obj)
89+
package_name = full_package_name.split('-')[0]
90+
package_build_time = extract_package_build_time(full_package_name)
91+
if packages[package_name] >= KEEP_THRESHOLD or between_bad_dates(package_build_time):
7592
to_hide.add(obj)
7693
else:
7794
packages[package_name] += 1

0 commit comments

Comments
 (0)