Repository navigation
Releases: Rapid-Medical/time_executioner
Releases · Rapid-Medical/time_executioner
Release list
v0.2.0
Added
TimeExecutioner.accumulate(), a companion totime()for code that
times the same phase across many iterations. Innerphases.time("fetch")
blocks accumulate instead of logging,phases.count("skipped")tallies
alongside them, and one summary line is logged on exit — including
unaccounted, the wall clock the timed phases do not explain. The summary is
flushed on exception too, at error level, so a run that dies still reports
where its time went.
Changed
- Code analysis moved from SonarQube Cloud Automatic Analysis to a scan run from
CI, with a coverage report attached. Automatic Analysis cannot import coverage,
so the dashboard reported none for a suite that in fact covers 96% of the
package. Configuration moved from.sonarcloud.propertiesto
sonar-project.propertiesaccordingly; the latter also supports
sonar.issue.ignore.multicriteria, so known false positives are now recorded
in the repository and reviewable in a diff instead of marked won't-fix in the
dashboard.
v0.1.0
Changelog
All notable changes to this project are documented in this file.
The format is based on Keep a Changelog,
and this project adheres to Semantic Versioning.
Unreleased
Nothing yet.
0.1.0 - 2026-08-18
First release published to PyPI. Earlier 0.0.x tags were never published, and
their build metadata always resolved to 0.0.0 (see Fixed), so 0.1.0 is the
first version with a correct, installable distribution.
Fixed
- Packaging: no more stray
__init__.pyinsite-packages.src-layout
auto-discovery treatedsrc/as the package root, sosrc/__init__.pywas
installed as a bare__init__.pyat the top level ofsite-packages, where it
collided with any other package doing the same and was removed by
pip uninstall. The module now lives in a realsrc/time_executioner/package. - Packaging: the version no longer resolves to
0.0.0.dynamic = ["version"]
had no corresponding[tool.setuptools.dynamic]section, so every build
silently produced0.0.0while__init__.pyclaimed0.0.2. Version is now
read fromtime_executioner.__version__as a single source of truth. - Python 3.16 compatibility. Replaced
asyncio.iscoroutinefunction()with
inspect.iscoroutinefunction(); the former is deprecated and scheduled for
removal in Python 3.16. The test suite's blanket-W ignore::DeprecationWarning
had been hiding this. - Corrected a typo in the
Homepageproject URL. - The test suite no longer leaks a
set_logger()call into the process-wide
default, which previously persisted past the run that made it.
Added
logger=argument onTimeExecutioner.log()andTimeExecutioner.time(),
for overriding the logger per use.set_logger()mutates process-wide state, so
two consumers in one process previously had no way to avoid clobbering each
other.TimeExecutioner.reset_logger(), restoring the built-in default logger.py.typedmarker. The library was fully annotated but shipped no PEP 561
marker, so type checkers in consuming projects silently ignored every
annotation. Type information is now published.- A
devextra (pip install -e '.[dev]') replacingrequirements.txt. - CI now tests on Python 3.11–3.14, runs the
pre-commitsuite, and builds the
distribution to verify it is installable, importable, correctly versioned, and
free of stray top-level files. - A tag-triggered PyPI publish workflow using trusted publishing.
- PyPI keywords and classifiers, including
Typing :: Typed. - This changelog and
CONTRIBUTING.md. - All GitHub Actions references pinned to commit SHAs rather than mutable tags,
with Dependabot configured to keep them current. requirements-publish.txt, a hash-pinned build toolchain for the release
workflow. The publish job previously installed the full unpinned dev extra
before building the artifact it uploads to PyPI, so a compromised release of
any build-time dependency could have altered what users receive. It now
installs onlybuildandtwine, with--require-hashes.- Explicit least-privilege
permissionsdeclared per job on both workflows. pylock.toml, a PEP 751 lock file pinning every development dependency to an
exact version and hash, installed by pip in CI so contributors and CI run
identical tooling.
Changed
__version__is now a string attribute rather than a zero-argument function.
Breaking for anyone who calledtime_executioner.__version__(); use
time_executioner.__version__instead.- The default logger name moved from
time_executionerto
time_executioner._core, following the module split. Configuration applied to
thetime_executionerlogger still applies, since child loggers propagate to
their parent. - Tests import the installed
time_executionerpackage rather than the in-tree
src.time_executionerpath, so they exercise the built artifact. - pytest configuration moved from
pytest.iniintopyproject.toml, which also
removes an inert[tool.pytest.ini_options]block thatpytest.ininever read.
DeprecationWarningis now an error in the test suite.
v0.0.2
v0.0.1 -- initial release
This is the initial release of the library, to see how we like working in this pattern.
Initial release: 0.0.1-alpha
v0.0.1-alpha Delete setup.py