From b44ac231c1b18263a26e865303c7864eff33c515 Mon Sep 17 00:00:00 2001 From: Paul Pfeister Date: Wed, 17 Sep 2025 17:47:45 -0400 Subject: [PATCH] chore: move SSOT to pyproject.toml Co-authored-by: ByteXenon <125568681+ByteXenon@users.noreply.github.com> --- pyproject.toml | 4 ++-- sherlock_project/__init__.py | 17 ++++++++++++++++- 2 files changed, 18 insertions(+), 3 deletions(-) diff --git a/pyproject.toml b/pyproject.toml index 76a6fab3..b1ca18d7 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -8,8 +8,7 @@ source = "init" [tool.poetry] name = "sherlock-project" -# single source of truth for version is __init__.py -version = "0" +version = "0.16.0" description = "Hunt down social media accounts by username across social networks" license = "MIT" authors = [ @@ -50,6 +49,7 @@ stem = "^1.8.0" torrequest = "^0.1.0" pandas = "^2.2.1" openpyxl = "^3.0.10" +tomli = "^2.2.1" [tool.poetry.extras] tor = ["torrequest"] diff --git a/sherlock_project/__init__.py b/sherlock_project/__init__.py index 382d7cd0..ad6c9e30 100644 --- a/sherlock_project/__init__.py +++ b/sherlock_project/__init__.py @@ -5,11 +5,26 @@ networks. """ +from importlib.metadata import version as pkg_version, PackageNotFoundError +import pathlib +import tomli + + +def get_version() -> str: + """Fetch the version number of the installed package.""" + try: + return pkg_version("sherlock_project") + except PackageNotFoundError: + pyproject_path: pathlib.Path = pathlib.Path(__file__).resolve().parent.parent / "pyproject.toml" + with pyproject_path.open("rb") as f: + pyproject_data = tomli.load(f) + return pyproject_data["tool"]["poetry"]["version"] + # This variable is only used to check for ImportErrors induced by users running as script rather than as module or package import_error_test_var = None __shortname__ = "Sherlock" __longname__ = "Sherlock: Find Usernames Across Social Networks" -__version__ = "0.16.0" +__version__ = get_version() forge_api_latest_release = "https://api.github.com/repos/sherlock-project/sherlock/releases/latest"