]>
git.madduck.net Git - etc/vim.git/blobdiff - gallery/gallery.py
madduck's git repository
Every one of the projects in this repository is available at the canonical
URL git://git.madduck.net/madduck/pub/<projectpath> — see
each project's metadata for the exact URL.
All patches and comments are welcome. Please squash your changes to logical
commits before using git-format-patch and git-send-email to
patches@ git. madduck. net .
If you'd read over the Git project's submission guidelines and adhered to them,
I'd be especially grateful.
SSH access, as well as push access can be individually
arranged .
If you use my repositories frequently, consider adding the following
snippet to ~/.gitconfig and using the third clone URL listed for each
project:
[url "git://git.madduck.net/madduck/"]
insteadOf = madduck:
from concurrent.futures import ThreadPoolExecutor
from functools import lru_cache, partial
from pathlib import Path
from concurrent.futures import ThreadPoolExecutor
from functools import lru_cache, partial
from pathlib import Path
-from typing import ( # type: ignore # typing can't see Literal
- Generator,
- List,
- Literal,
- NamedTuple,
- Optional,
- Tuple,
- Union,
- cast,
-)
+from typing import Generator, List, NamedTuple, Optional, Tuple, Union, cast
from urllib.request import urlopen, urlretrieve
PYPI_INSTANCE = "https://pypi.org/pypi"
PYPI_TOP_PACKAGES = (
from urllib.request import urlopen, urlretrieve
PYPI_INSTANCE = "https://pypi.org/pypi"
PYPI_TOP_PACKAGES = (
- "https://hugovk.github.io/top-pypi-packages/top-pypi-packages-{days}-days .json"
+ "https://hugovk.github.io/top-pypi-packages/top-pypi-packages-30-days.min .json"
)
INTERNAL_BLACK_REPO = f"{tempfile.gettempdir()}/__black"
ArchiveKind = Union[tarfile.TarFile, zipfile.ZipFile]
)
INTERNAL_BLACK_REPO = f"{tempfile.gettempdir()}/__black"
ArchiveKind = Union[tarfile.TarFile, zipfile.ZipFile]
-Days = Union[Literal[30], Literal[365]]
subprocess.run = partial(subprocess.run, check=True) # type: ignore
# https://github.com/python/mypy/issues/1484
subprocess.run = partial(subprocess.run, check=True) # type: ignore
# https://github.com/python/mypy/issues/1484
sources = metadata["releases"][version]
else:
raise ValueError(
sources = metadata["releases"][version]
else:
raise ValueError(
- f"No releases found with given version ('{version}') tag. "
+ f"No releases found with version ('{version}') tag. "
f"Found releases: {metadata['releases'].keys()}"
)
f"Found releases: {metadata['releases'].keys()}"
)
return cast(str, source["url"])
return cast(str, source["url"])
-def get_top_packages(days: Days ) -> List[str]:
- with urlopen(PYPI_TOP_PACKAGES.format(days=days) ) as page:
+def get_top_packages() -> List[str]:
+ with urlopen(PYPI_TOP_PACKAGES) as page:
result = json.load(page)
return [package["project"] for package in result["rows"]]
result = json.load(page)
return [package["project"] for package in result["rows"]]
def get_package_source(package: str, version: Optional[str]) -> str:
if package == "cpython":
if version is None:
def get_package_source(package: str, version: Optional[str]) -> str:
if package == "cpython":
if version is None:
return f"https://github.com/python/cpython/archive/{version}.zip"
elif package == "pypy":
if version is None:
return f"https://github.com/python/cpython/archive/{version}.zip"
elif package == "pypy":
if version is None:
def download_and_extract_top_packages(
def download_and_extract_top_packages(
- directory: Path, days: Days = 365, workers: int = 8, limit: slice = DEFAULT_SLICE,
+ directory: Path,
+ workers: int = 8,
+ limit: slice = DEFAULT_SLICE,
) -> Generator[Path, None, None]:
with ThreadPoolExecutor(max_workers=workers) as executor:
bound_downloader = partial(get_package, version=None, directory=directory)
) -> Generator[Path, None, None]:
with ThreadPoolExecutor(max_workers=workers) as executor:
bound_downloader = partial(get_package, version=None, directory=directory)
- for package in executor.map(bound_downloader, get_top_packages(days )[limit]):
+ for package in executor.map(bound_downloader, get_top_packages()[limit]):
if package is not None:
yield package
def git_create_repository(repo: Path) -> None:
subprocess.run(["git", "init"], cwd=repo)
if package is not None:
yield package
def git_create_repository(repo: Path) -> None:
subprocess.run(["git", "init"], cwd=repo)
- git_add_and_commit(msg="Inital commit", repo=repo)
+ git_add_and_commit(msg="Initi al commit", repo=repo)
def git_add_and_commit(msg: str, repo: Path) -> None:
def git_add_and_commit(msg: str, repo: Path) -> None:
black_version=black_version,
input_directory=options.input,
)
black_version=black_version,
input_directory=options.input,
)
- git_switch_branch("master ", repo=repo)
+ git_switch_branch("main ", repo=repo)
- git_switch_branch("master ", repo=options.black_repo)
+ git_switch_branch("main ", repo=options.black_repo)
def main() -> None:
parser = ArgumentParser(
description="""Black Gallery is a script that
def main() -> None:
parser = ArgumentParser(
description="""Black Gallery is a script that
- automates process of applying different b lack versions to a selected
+ automates the process of applying different B lack versions to a selected
PyPI package and seeing the results between versions."""
)
group = parser.add_mutually_exclusive_group(required=True)
group.add_argument("-p", "--pypi-package", help="PyPI package to download.")
group.add_argument(
PyPI package and seeing the results between versions."""
)
group = parser.add_mutually_exclusive_group(required=True)
group.add_argument("-p", "--pypi-package", help="PyPI package to download.")
group.add_argument(
- "-t", "--top-packages", help="Top n PyPI package to download.", type=int
+ "-t", "--top-packages", help="Top n PyPI packages to download.", type=int
- parser.add_argument("-b", "--black-repo", help="Black's g it repository.", type=Path)
+ parser.add_argument("-b", "--black-repo", help="Black's G it repository.", type=Path)
parser.add_argument(
"-v",
"--version",
help=(
parser.add_argument(
"-v",
"--version",
help=(
- "Version for PyPI given pypi package. "
- "Will be discarded if used with -t option."
+ "Version for given PyPI package. Will be discarded if used with -t option."
),
)
parser.add_argument(
"-w",
"--workers",
help=(
),
)
parser.add_argument(
"-w",
"--workers",
help=(
- "Maximum amount of threads to download at the same time. "
- "Will be discard if used with -p option."
+ "Maximum number of threads to download with at the same time. "
+ "Will be discarded if used with -p option."
),
)
parser.add_argument(
),
)
parser.add_argument(
"--input",
default=Path("/input"),
type=Path,
"--input",
default=Path("/input"),
type=Path,
- help="Input directory to read configurations .",
+ help="Input directory to read configuration.",
)
parser.add_argument(
"-o",
)
parser.add_argument(
"-o",
type=Path,
help="Output directory to download and put result artifacts.",
)
type=Path,
help="Output directory to download and put result artifacts.",
)
- parser.add_argument("versions", nargs="*", default=("master ",), help="")
+ parser.add_argument("versions", nargs="*", default=("main ",), help="")
options = parser.parse_args()
repos = init_repos(options)
options = parser.parse_args()
repos = init_repos(options)