From 1fd671cc2290b6cdde8373798613ce972f87a1c0 Mon Sep 17 00:00:00 2001 From: Calum Eadie <199819990+ce10-sanger@users.noreply.github.com> Date: Wed, 20 May 2026 13:54:51 +0100 Subject: [PATCH 1/3] Safer for tests to use secure variant i.e. might be copied to production code --- CHANGELOG | 5 +++++ tests/conftest.py | 5 +++-- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/CHANGELOG b/CHANGELOG index 18709fd..ffe2d23 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -5,6 +5,11 @@ and this project adheres to [Semantic Versioning](http://semver.org/). ## Unreleased +### Changes + +* Change tests to use secure variant of database config that stops logging secrets + * i.e. might be copied to production code + ## [1.0.0] - 2026-04-24 ### Changed diff --git a/tests/conftest.py b/tests/conftest.py index bd1b4da..ec826bd 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -20,7 +20,7 @@ import json import os import re -from dataclasses import dataclass +from dataclasses import dataclass, field from importlib import import_module from pathlib import Path @@ -39,7 +39,8 @@ class TrackingConfig: dbport: str dbuser: str dbname: str - dbpass: str + # Safer for tests to use secure variant i.e. might be copied to production code + dbpass: str = field(repr=False) @property def url(self): From e79a8cdffff1398a103d1d7146a7a08b8b910144 Mon Sep 17 00:00:00 2001 From: Kieron Taylor Date: Wed, 10 Jun 2026 16:21:18 +0100 Subject: [PATCH 2/3] Allow retrieval of run objects by their runfolder name (not full path) --- CHANGELOG | 6 +++++- src/npgtracking/db/retrieval.py | 6 ++++++ tests/test_retrieval.py | 17 +++++++++++++++++ 3 files changed, 28 insertions(+), 1 deletion(-) diff --git a/CHANGELOG b/CHANGELOG index ffe2d23..124efef 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -5,6 +5,10 @@ and this project adheres to [Semantic Versioning](http://semver.org/). ## Unreleased +### Added + +* New function for retrieving runs by their run folder name. + ### Changes * Change tests to use secure variant of database config that stops logging secrets @@ -23,7 +27,7 @@ and this project adheres to [Semantic Versioning](http://semver.org/). ### Added -* `validate_runfolder` function to npgtracking.db.retrieval +* `validate_runfolder` function to npgtracking.db.retrieval ## [0.2.0] - 2025-12-12 diff --git a/src/npgtracking/db/retrieval.py b/src/npgtracking/db/retrieval.py index 0ab8cdb..8e53317 100644 --- a/src/npgtracking/db/retrieval.py +++ b/src/npgtracking/db/retrieval.py @@ -129,3 +129,9 @@ def validate_runfolder(session: Session, id_run: int, runfolder_name: str) -> bo if not run: raise ValueError(f"Run with ID {id_run} does not exist.") return run.folder_name == runfolder_name + + +def get_run_by_runfolder(session: Session, run_folder_name: str) -> Run: + return session.execute( + select(Run).where(Run.folder_name == run_folder_name) + ).scalar_one() diff --git a/tests/test_retrieval.py b/tests/test_retrieval.py index 52d01f6..ed77367 100644 --- a/tests/test_retrieval.py +++ b/tests/test_retrieval.py @@ -17,9 +17,11 @@ from pytest import mark as m from pytest import raises +from sqlalchemy.exc import NoResultFound from npgtracking.db.retrieval import ( get_run_by_id, + get_run_by_runfolder, get_runs_by_currentstatus, validate_runfolder, ) @@ -119,3 +121,18 @@ def test_validate_runfolder(self, tracking_session): def test_validate_runfolder_error(self, tracking_session): with raises(ValueError, match="Run with ID 1 does not exist"): validate_runfolder(tracking_session, 1, "430591-20251204_1628") + + @m.context("When retrieving a Run by an invalid runfolder_name") + @m.it("An exception is raised") + def test_run_by_bad_runfolder_name(self, tracking_session): + with raises(NoResultFound): + get_run_by_runfolder(tracking_session, "/not/here") + + with raises(NoResultFound): + get_run_by_runfolder(tracking_session, None) + + @m.context("When retrieving a Run by a valid runfolder_name") + @m.it("A single valid Run object is returned") + def test_run_by_runfolder_name(self, tracking_session): + run = get_run_by_runfolder(tracking_session, "424091-20250823_0117") + assert run.id_run == 50001 From f2fa24bbd1af3949bfbdbdcf2c8a9749af763529 Mon Sep 17 00:00:00 2001 From: Kieron Taylor Date: Fri, 7 Aug 2026 12:47:05 +0000 Subject: [PATCH 3/3] Update changelog for release --- CHANGELOG | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG b/CHANGELOG index 124efef..3b2e488 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -3,7 +3,7 @@ The format is based on [Keep a Changelog](http://keepachangelog.com/) and this project adheres to [Semantic Versioning](http://semver.org/). -## Unreleased +## [1.1.0] - 2026-08-07 ### Added