pip_rating.sources package

Submodules

pip_rating.sources.audit module

class pip_rating.sources.audit.Audit(package_name: str, version: str)[source]

Bases: SourceBase

Audit source

property cache_file: Path
get_cache_data() dict[source]
property is_vulnerable: bool
source_name: str = 'audit'
property vulnerabilities: List[Vulnerability]
class pip_rating.sources.audit.Vulnerability[source]

Bases: TypedDict

aliases: List[str]
description: str
fix_versions: List[str]
id: str
published_iso_dt: str | None
pip_rating.sources.audit.vulns_to_dict(vulnerabilities: List[VulnerabilityResult]) List[Vulnerability][source]

pip_rating.sources.base module

class pip_rating.sources.base.SourceBase(package_name: str)[source]

Bases: object

Base class for all sources

property cache_dir: Path
property cache_file: Path
get_cache_data() dict[source]
get_from_cache() dict[source]
property is_cache_expired: bool
max_cache_age = datetime.timedelta(days=7)
save_to_cache() dict[source]
source_name: str

pip_rating.sources.pypi module

class pip_rating.sources.pypi.PyPackageInfo[source]

Bases: TypedDict

author: str
author_email: str
bugtrack_url: str
classifiers: List[str]
description: str
description_content_type: str
docs_url: str
download_url: str
downloads: Dict[str, int]
home_page: str
keywords: str
license: str
maintainer: str
maintainer_email: str
name: str
package_url: str
platform: str | None
project_url: str
project_urls: Dict[str, str]
release_url: str
requires_dist: List[str]
requires_python: str | None
summary: str
version: str
yanked: bool
yanked_reason: str | None
class pip_rating.sources.pypi.Pypi(package_name: str)[source]

Bases: SourceBase

property first_upload: PypiPackageReleaseUpload | None
property first_upload_iso_dt: str | None
get_cache_data() dict[source]
get_package() PypiPackage[source]
property latest_upload: PypiPackageReleaseUpload | None
property latest_upload_iso_dt: str | None
property package: PypiPackage
source_name: str = 'pypi'
property uploads: List[PypiPackageReleaseUpload]
class pip_rating.sources.pypi.PypiCacheDict[source]

Bases: TypedDict

package: PypiPackage
package_name: str
updated_at: str
class pip_rating.sources.pypi.PypiPackage[source]

Bases: TypedDict

info: PyPackageInfo
last_serial: int
releases: Dict[str, List[PypiPackageReleaseUpload]]
class pip_rating.sources.pypi.PypiPackageReleaseUpload[source]

Bases: TypedDict

comment_text: str
digests: Dict[str, str]
downloads: int
filename: str
has_sig: bool
md5_digest: str
packagetype: str
python_version: str
requires_python: str | None
size: int
upload_time: str
upload_time_iso_8601: str
url: str
yanked: bool
yanked_reason: str | None

pip_rating.sources.sourcecode_page module

class pip_rating.sources.sourcecode_page.Sourcecode[source]

Bases: TypedDict

package_in_readme: bool | None
readme_content: str
class pip_rating.sources.sourcecode_page.SourcecodeCacheDict[source]

Bases: TypedDict

package_name: str
source: str
sourcecode: Sourcecode
updated_at: str
class pip_rating.sources.sourcecode_page.SourcecodePage(package: Package)[source]

Bases: SourceBase

get_cache_data() SourcecodeCacheDict[source]
property package_in_readme: bool | None
source_name: str = 'sourcecode_page'
pip_rating.sources.sourcecode_page.get_github_readme(owner: str, repo: str) str[source]

Get the readme content from GitHub.

pip_rating.sources.sourcecode_page.replace_chars(package_name: str)[source]

Replace characters in package name to match the pattern in readme.

pip_rating.sources.sourcecode_page.search_in_readme(content: str, package_name: str) bool | None[source]

Search for patterns in readme. If found the pattern, check if the package name is package_name. If the package name found is package_name, return True, else continues searching. If after all patterns are searched and no package name is found, return False. If any pattern matches, return None.

pip_rating.sources.sourcerank module

class pip_rating.sources.sourcerank.SourceRank(package: Package)[source]

Bases: SourceBase

property breakdown: SourceRankBreakdown
get_breakdown() Iterator[Tuple[str, int]][source]
get_cache_data() dict[source]
request() bytes[source]

Request the sourcerank page and return the content

source_name: str = 'sourcerank'
class pip_rating.sources.sourcerank.SourceRankBreakdown[source]

Bases: TypedDict

basic_info_present: int
contributors: int
dependent_projects: int
dependent_repositories: int
follows_semver: int
has_multiple_versions: int
is_1_or_greater: int
librariesio_subscribers: int
license_present: int
not_brand_new: int
readme_present: int
recent_release: int
source_repository_present: int
stars: int
total: int
class pip_rating.sources.sourcerank.SourceRankCacheDict[source]

Bases: TypedDict

breakdown: SourceRankBreakdown
package_name: str
updated_at: str

Module contents