diff --git a/DEVELOP.md b/DEVELOP.md index 353a9ea..868f2da 100644 --- a/DEVELOP.md +++ b/DEVELOP.md @@ -3,16 +3,16 @@ Clone repository (fork and clone your own repo for contributions) and install project with [Poetry](https://python-poetry.org/docs/) ```bash -$ git clone git@github.com:bmwant/leak.git -$ cd leak -$ poetry install +git clone git@github.com:bmwant/leak.git +cd leak +poetry install ``` Set `LEAK_DEBUG` environment variable for the extra internal logging while developing ```bash -$ export LEAK_DEBUG=1 -$ poetry run leak requests +export LEAK_DEBUG=1 +poetry run leak requests ``` ### Testing @@ -20,15 +20,15 @@ $ poetry run leak requests Unittests are written using [pytest](https://docs.pytest.org/en/latest/). ```bash -$ poetry run pytest -sv tests +poetry run pytest -sv tests # or -$ make tests +make tests ``` or to test on all possible environments ```bash -$ poetry run tox +poetry run tox ``` ### Releasing @@ -36,17 +36,17 @@ $ poetry run tox Bump a version with features you want to include and build a package ```bash -$ poetry version patch # patch version update -$ poetry version minor -$ poetry version major # choose one based on semver rules -$ poetry build # just builds a package -$ make release # clean + build + publish +poetry version patch # patch version update +poetry version minor +poetry version major # choose one based on semver rules +poetry build # just builds a package +make release # clean + build + publish ``` Upload package to GitHub and PyPI ```bash -$ git tag -a 1.3.0 -m "Version 1.3.0" -$ git push --tags -$ poetry publish # only uploads package to PyPI +git tag -a 1.3.0 -m "Version 1.3.0" +git push --tags +poetry publish # only uploads package to PyPI ``` diff --git a/LICENSE b/LICENSE index 873268b..8ded47f 100644 --- a/LICENSE +++ b/LICENSE @@ -1,6 +1,6 @@ The MIT License (MIT) -Copyright (c) 202 Misha Behersky +Copyright (c) 2025 Misha Behersky Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/leak/main.py b/leak/main.py index 3cf94d1..533fc42 100644 --- a/leak/main.py +++ b/leak/main.py @@ -1,6 +1,5 @@ import sys from contextlib import contextmanager -from typing import Dict import requests @@ -12,7 +11,7 @@ def dummy_context(*args, **kwargs): yield -def get_package_data(package_name: str) -> Dict: +def get_package_data(package_name: str) -> dict: url = f"https://pypi.org/pypi/{package_name}/json" resp = requests.get(url) if resp.status_code != 200: @@ -22,7 +21,7 @@ def get_package_data(package_name: str) -> Dict: return data -def get_downloads_data(package_name: str) -> Dict: +def get_downloads_data(package_name: str) -> dict: url = f"https://api.pepy.tech/api/v2/projects/{package_name}" resp = requests.get(url) if resp.status_code != 200: diff --git a/leak/parser.py b/leak/parser.py index 1b302ac..3d17453 100644 --- a/leak/parser.py +++ b/leak/parser.py @@ -1,10 +1,9 @@ -import datetime -from typing import Dict, List +from datetime import datetime from leak import config, logger -def versions_split(version_str, type_applyer=int): +def versions_split(version_str, type_applyer=int) -> list[int]: dots_count = version_str.count(".") if dots_count == 0: major, minor, patch = version_str, 0, 0 @@ -24,7 +23,7 @@ def versions_split(version_str, type_applyer=int): return list(map(type_applyer, (major, minor, patch))) -def get_max_downloads_for_release(release: List[Dict]) -> int: +def get_max_downloads_for_release(release: list[dict]) -> int: max_downloads = 0 for release_record in release: if release_record["downloads"] > max_downloads: @@ -32,19 +31,17 @@ def get_max_downloads_for_release(release: List[Dict]) -> int: return max_downloads -def get_latest_time_for_release(release: List[Dict]) -> str: +def get_latest_time_for_release(release: list[dict]) -> datetime: latest_time = config.EPOCH_BEGIN date_format = "%Y-%m-%dT%H:%M:%S" for release_record in release: - upload_time = datetime.datetime.strptime( - release_record["upload_time"], date_format - ) + upload_time = datetime.strptime(release_record["upload_time"], date_format) if upload_time > latest_time: latest_time = upload_time return latest_time -def get_downloads_for_version(version: str, downloads_data: Dict) -> int: +def get_downloads_for_version(version: str, downloads_data: dict) -> int: downloads = 0 for date, data in downloads_data.items(): downloads += data.get(version, 0) diff --git a/leak/ui.py b/leak/ui.py index b8723c1..cb59982 100644 --- a/leak/ui.py +++ b/leak/ui.py @@ -1,5 +1,4 @@ import functools -from typing import Dict, Optional from packaging.version import parse as parse_version from rich import box @@ -52,9 +51,7 @@ def show_package_info(data): rprint(panel) -def show_package_versions( - releases, downloads: Optional[Dict] = None, showall: bool = False -): +def show_package_versions(releases, downloads: dict, showall: bool = False): most_popular_count = 0 # noqa most_popular_release = None # noqa most_recent_release = None