From eafab73c6af14896efda326f1a82126fa26c1eaf Mon Sep 17 00:00:00 2001 From: Kristofers Solo Date: Thu, 8 May 2025 11:11:27 +0300 Subject: [PATCH] build: fix installation --- pyproject.toml | 13 +++++++------ src/grovers_visualizer/__main__.py | 9 +++++++++ src/grovers_visualizer/gates.py | 0 src/grovers_visualizer/utils.py | 21 +++++++++------------ 4 files changed, 25 insertions(+), 18 deletions(-) delete mode 100644 src/grovers_visualizer/gates.py diff --git a/pyproject.toml b/pyproject.toml index a72cbba..a500ecd 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,7 +1,7 @@ [project] name = "grovers-visualizer" -version = "0.4.0" -description = "Add your description here" +version = "0.4.1" +description = "A tiny Python package that steps through Grover’s Search algorithm." readme = "README.md" requires-python = ">=3.13" dependencies = [ @@ -21,16 +21,17 @@ ui = ["dearpygui==2.0.0"] [dependency-groups] dev = ["mypy~=1.15", "ruff~=0.11"] -[build-system] -requires = ["hatchling"] -build-backend = "hatchling.build" - [tool.hatch.build] sources = ["src"] +packages = ["grovers_visualizer"] [tool.hatch.build.targets.wheel] packages = ["src/grovers_visualizer"] +[build-system] +requires = ["hatchling"] +build-backend = "hatchling.build" + [tool.mypy] mypy_path = "src" check_untyped_defs = true diff --git a/src/grovers_visualizer/__main__.py b/src/grovers_visualizer/__main__.py index 40e2b01..d3a69c5 100644 --- a/src/grovers_visualizer/__main__.py +++ b/src/grovers_visualizer/__main__.py @@ -1,3 +1,12 @@ +#!/usr/bin/env python + +"""Grover's Algorithm Visualizer. + +This script builds a Grover search circuit based on user input, runs the +simulation using Qiskit's Aer simulator, and visualizes the results +using matplotlib. +""" + from .main import main if __name__ == "__main__": diff --git a/src/grovers_visualizer/gates.py b/src/grovers_visualizer/gates.py deleted file mode 100644 index e69de29..0000000 diff --git a/src/grovers_visualizer/utils.py b/src/grovers_visualizer/utils.py index e90f9c6..be52cc6 100644 --- a/src/grovers_visualizer/utils.py +++ b/src/grovers_visualizer/utils.py @@ -1,8 +1,7 @@ -import tomllib from collections.abc import Iterator +from importlib.metadata import PackageNotFoundError, version from itertools import product from math import floor, pi, sqrt -from pathlib import Path from .state import QubitState @@ -31,14 +30,12 @@ def get_bar_color(state: str, target_state: QubitState | None, iteration: int, o return "orange" -def get_app_version(pyproject_path: str = "pyproject.toml") -> str: - """Reads the version from the [project] section of pyproject.toml.""" - path = Path(pyproject_path) - if not path.is_file(): - raise FileNotFoundError(f"{pyproject_path} not found.") - with path.open("rb") as f: - data = tomllib.load(f) +def get_app_version() -> str: + """Return the installed package version, e.g. '0.4.0'. + + Falls back to 'unknown' if not installed as a distribution. + """ try: - return str(data["project"]["version"]) - except KeyError: - raise KeyError("Version not found in [project] section of pyproject.toml.") + return version("grovers-visualizer") + except PackageNotFoundError: + return "unknown"