Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
180 commits
Select commit Hold shift + click to select a range
0b48518
`args.time_delay` -> `args.run.time_delay` in `Runner`
simeoncarstens Jan 16, 2024
412f3e0
Uncomment `enrich_args()` call
simeoncarstens Jan 16, 2024
146ce16
Fix `lump` argument type
simeoncarstens Jan 16, 2024
7068f1c
Fix argument accessions in `Runner`
simeoncarstens Jan 16, 2024
0037c02
Print separator line for better visibility
simeoncarstens Jan 16, 2024
081acc4
Formatting changes
simeoncarstens Jan 17, 2024
4462d51
Add LOOPER_CONFIG as an argument
simeoncarstens Jan 17, 2024
8edc9be
Formatting changes
simeoncarstens Jan 17, 2024
c9bdac8
Un-uncomment `enrich_args_via_cfg()` call
simeoncarstens Jan 17, 2024
d1ca6a7
Modify enrich_args_via_cfg to get nested CLI args
simeoncarstens Jan 17, 2024
a13c5d4
Refactor `enrich_args_via_cfg`
simeoncarstens Jan 17, 2024
df10a9b
Add `DIVVY` argument
simeoncarstens Jan 17, 2024
564e017
Fix `divvy` argument accession
simeoncarstens Jan 17, 2024
d25e186
Clean up imports
simeoncarstens Jan 17, 2024
8e40b21
Add docstring to `cli_pydantic.py`
simeoncarstens Jan 17, 2024
f48c99d
Add docstrings
simeoncarstens Jan 17, 2024
bbebe3e
Refactor to easily support future commands
simeoncarstens Jan 17, 2024
8487d4b
HTTP API settings
zz1874 Jan 18, 2024
d8a106f
Run formatter
simeoncarstens Jan 18, 2024
4acb00f
Create an argparse.Namespace
zz1874 Jan 19, 2024
3483e7f
Add run function from cli_pydantic
zz1874 Jan 19, 2024
73151e9
Adjust enrich_args_via_cfg to http api
zz1874 Jan 19, 2024
f4d684e
Run adjusted enrich_args_via_cfg in http api
zz1874 Jan 19, 2024
0141fb3
Re-organize cli_pydantic.py to run looper run via CLI and http-api
zz1874 Jan 19, 2024
ceb2f99
Infer currently used subcommand instead of hardcoding it
simeoncarstens Jan 19, 2024
def280d
Format `setup.py`
simeoncarstens Jan 19, 2024
17cf965
Loosen `pydantic-argparse` version constraint
simeoncarstens Jan 19, 2024
e0338ff
Apply suggestions from code review
simeoncarstens Jan 19, 2024
74dbd1f
Slight refactor of `create_argparse_namespace`
simeoncarstens Jan 19, 2024
ee69d0c
Remove `run` from route
simeoncarstens Jan 19, 2024
e241898
Capture stderr / stdout and return in HTTP response
simeoncarstens Jan 19, 2024
a739555
Rename `run_endpoint` -> `main_endpoint`
simeoncarstens Jan 19, 2024
9b9c0a9
Add response model
simeoncarstens Jan 19, 2024
1ee1d47
Add a comment about the endpoint likely being blocking
simeoncarstens Jan 19, 2024
97b3157
Apply formatter
zz1874 Jan 22, 2024
8f7e275
Apply formatter
zz1874 Jan 22, 2024
09b057f
Add arguments for logging
zz1874 Jan 22, 2024
4cf48bc
Add logger def to be captured by API and also CLI
zz1874 Jan 22, 2024
6a53856
Add README for the API
zz1874 Jan 22, 2024
93a1c07
Merge branch 'tweag/run-hello-world' into tweag/http-api
zz1874 Jan 23, 2024
6c13bb9
Adjust run_looper to get which subcommand was used
zz1874 Jan 23, 2024
7cd099f
Add endpoint "\status" to capture UUID
zz1874 Jan 23, 2024
0cf4ecc
Create 2-step job submission and result workflow
zz1874 Jan 24, 2024
e68c542
Allow `None` stderr / stdout in job model
simeoncarstens Jan 24, 2024
d0ab17e
Run `run_looper()` in FastAPI background task
simeoncarstens Jan 24, 2024
903c626
Document / make self-documenting `Job` fields
simeoncarstens Jan 24, 2024
1714de1
Make `/` route return a 202 (Accepted) HTTP status code
simeoncarstens Jan 24, 2024
76ca1aa
Replace job UUID with a shorter random string
simeoncarstens Jan 24, 2024
3d081ee
Reorder imports
simeoncarstens Jan 24, 2024
18b293c
Fix a typo
simeoncarstens Jan 24, 2024
33ce883
Fix typing to support Python 3.8
zz1874 Jan 26, 2024
0b7f237
Remove `uuid` dependency
simeoncarstens Jan 27, 2024
0cf000e
Change `yacman` dependency to a hacked, but threadable version
simeoncarstens Jan 27, 2024
429e665
Add lower bound for FastAPI version
simeoncarstens Jan 27, 2024
b5e723f
Add lower bound for uvicorn version
simeoncarstens Jan 27, 2024
f92be03
Make background task function non-`async`
simeoncarstens Jan 27, 2024
693e56e
Add logging setup
simeoncarstens Jan 29, 2024
efc70aa
Make CLI script accept `looper-config` argument
simeoncarstens Jan 29, 2024
d71763b
Add arguments for logging
zz1874 Jan 22, 2024
07fea99
Add `SKIP_FILE_CHECKS`, `PACKAGE` and `COMPUTE` arguments to list
simeoncarstens Jan 26, 2024
65e0689
Add `SKIP_FILE_CHECKS`, `PACKAGE` and `COMPUTE` arguments to `run`
simeoncarstens Jan 26, 2024
e45425a
Add `pipestat` argument to CLI
zz1874 Jan 26, 2024
907acc6
[DELETE ME] hack to use local `yacman` copy
simeoncarstens Jan 29, 2024
4461670
Don't call `logmuse.init_logger()` in `looper.__init__.py`
simeoncarstens Jan 29, 2024
643779c
Explicitly initialize `logmuse` logger with `sys.stderr` as stream
simeoncarstens Jan 29, 2024
a6762fa
Apply formatter
zz1874 Jan 30, 2024
dcb0ce2
Add documentation for `POST` and `GET` requests
zz1874 Jan 30, 2024
dacbb03
Add defaultdict as an import
zz1874 Jan 31, 2024
fef6b4b
Modify argument namespace when the command is `run`
zz1874 Jan 31, 2024
df0eb81
Refactor `modify_args_namespace`
zz1874 Jan 31, 2024
247a204
Adapt `divvy` argument retrieval to run command
zz1874 Jan 31, 2024
6d6fac7
Fix `run` command model options
simeoncarstens Jan 31, 2024
6bd9ffb
Take `run` special case into account in `_proc_resources_spec`
simeoncarstens Jan 31, 2024
9e0cc35
Pass top-level namespace to `select_samples`
simeoncarstens Jan 31, 2024
2f8e7a6
Take into account `run` special case in `validate_post_parse`
simeoncarstens Jan 31, 2024
bf35224
Take into account `run` special case when passing project CLI attrs
simeoncarstens Jan 31, 2024
6e4e9d4
HTTP API settings
zz1874 Jan 18, 2024
eab5127
Create an argparse.Namespace
zz1874 Jan 19, 2024
72087ee
Add run function from cli_pydantic
zz1874 Jan 19, 2024
1734c80
Adjust enrich_args_via_cfg to http api
zz1874 Jan 19, 2024
e0e3a6f
Run adjusted enrich_args_via_cfg in http api
zz1874 Jan 19, 2024
67182dd
Re-organize cli_pydantic.py to run looper run via CLI and http-api
zz1874 Jan 19, 2024
6346654
Slight refactor of `create_argparse_namespace`
simeoncarstens Jan 19, 2024
e1f7308
Remove `run` from route
simeoncarstens Jan 19, 2024
dd978c8
Capture stderr / stdout and return in HTTP response
simeoncarstens Jan 19, 2024
e010f75
Rename `run_endpoint` -> `main_endpoint`
simeoncarstens Jan 19, 2024
8af2bb2
Add response model
simeoncarstens Jan 19, 2024
a89e7bc
Add a comment about the endpoint likely being blocking
simeoncarstens Jan 19, 2024
1880372
Apply formatter
zz1874 Jan 22, 2024
42119f0
Add logger def to be captured by API and also CLI
zz1874 Jan 22, 2024
f0c749d
Add README for the API
zz1874 Jan 22, 2024
6d146b5
Add endpoint "\status" to capture UUID
zz1874 Jan 23, 2024
59869fa
Create 2-step job submission and result workflow
zz1874 Jan 24, 2024
384a898
Allow `None` stderr / stdout in job model
simeoncarstens Jan 24, 2024
0161cc6
Run `run_looper()` in FastAPI background task
simeoncarstens Jan 24, 2024
67c5d34
Document / make self-documenting `Job` fields
simeoncarstens Jan 24, 2024
8869378
Make `/` route return a 202 (Accepted) HTTP status code
simeoncarstens Jan 24, 2024
e76c135
Replace job UUID with a shorter random string
simeoncarstens Jan 24, 2024
adc451a
Reorder imports
simeoncarstens Jan 24, 2024
a3b85de
Fix a typo
simeoncarstens Jan 24, 2024
ea81cb1
Remove `uuid` dependency
simeoncarstens Jan 27, 2024
279d24f
Change `yacman` dependency to a hacked, but threadable version
simeoncarstens Jan 27, 2024
4c88788
Add lower bound for FastAPI version
simeoncarstens Jan 27, 2024
a82a8f7
Add lower bound for uvicorn version
simeoncarstens Jan 27, 2024
f995b47
Make background task function non-`async`
simeoncarstens Jan 27, 2024
3c54546
[DELETE ME] hack to use local `yacman` copy
simeoncarstens Jan 29, 2024
9b3a1da
Don't call `logmuse.init_logger()` in `looper.__init__.py`
simeoncarstens Jan 29, 2024
16f0ab5
Explicitly initialize `logmuse` logger with `sys.stderr` as stream
simeoncarstens Jan 29, 2024
2370aa6
Selectively capture logs from separate jobs
zz1874 Jan 30, 2024
8ffaef7
Add source for `stdout_redirects.py`
simeoncarstens Jan 30, 2024
d8ae6ec
Add a comment about not calling `stdout_redirect.stop_redirect()`
simeoncarstens Jan 30, 2024
db9f8f5
Remove superfluous import
simeoncarstens Jan 30, 2024
ad621c6
Remove `progress` field from `Job` model
simeoncarstens Jan 30, 2024
95278b3
Capture subprocess output to `sys.stdout`/`sys.stderr`
simeoncarstens Jan 30, 2024
6870bcd
Make CLI for HTTP API server
simeoncarstens Feb 1, 2024
8ead693
Add entry point console script for HTTP API server
simeoncarstens Feb 1, 2024
8b1b2ca
Replace `stdout` / `stderr` job fields with `job_output` field
simeoncarstens Feb 1, 2024
0d6b016
Add return type to `/status` endpoint
simeoncarstens Feb 1, 2024
2b4a962
Add HTTP API Documentation (#3)
zz1874 Feb 1, 2024
6619440
Run formatter
simeoncarstens Feb 1, 2024
b3aa4aa
Make HTTP API code Python 3.8 compatible
simeoncarstens Feb 2, 2024
d75942c
Update README with more detailed usage instructions
simeoncarstens Feb 2, 2024
ebd2fb8
Merge pull request #441 from tweag/tweag/http-api
simeoncarstens Feb 8, 2024
480c4df
Replace wildcard imports with explicit imports for mkdocstrings compa…
claude Nov 5, 2025
eac3306
Apply black formatting to plugins.py
claude Nov 5, 2025
e8a7a2f
Fix import errors in project.py
claude Nov 5, 2025
acda347
Fix missing imports causing test failures
claude Nov 5, 2025
4103a56
Update looper/project.py
nsheff Nov 5, 2025
af05ddd
remove unused imports
nsheff Nov 5, 2025
e26ca88
Merge pull request #556 from pepkit/claude/fix-wildcard-imports-011CU…
nsheff Nov 5, 2025
8b9722f
update to newest yacman
nsheff Nov 5, 2025
f3e43e6
update test to python 3.13
nsheff Nov 5, 2025
9141abd
Merge pull request #557 from pepkit/update-yacman
nsheff Nov 5, 2025
7251e7e
Convert docstrings to Google style in utils.py and conductor.py
claude Nov 5, 2025
58d1dc5
Convert docstrings to Google style in exceptions.py, const.py, and pl…
claude Nov 5, 2025
28713ef
Convert docstrings to Google style in parser_types.py and command_models
claude Nov 5, 2025
b843f39
Convert docstrings to Google style in remaining core files
claude Nov 5, 2025
90a2e62
Update looper/utils.py
nsheff Nov 6, 2025
e518d64
Update looper/project.py
nsheff Nov 6, 2025
cf7f2f1
clarify docstring
nsheff Nov 6, 2025
64d9bbf
Merge branch 'dev' into claude/update-docstrings-google-style-011CUqZ…
nsheff Nov 6, 2025
f91c619
Merge pull request #558 from pepkit/claude/update-docstrings-google-s…
nsheff Nov 6, 2025
7faf2d6
prep for yacman update
nsheff Feb 10, 2026
eebe47b
prep for yacman 0.9.5
nsheff Feb 11, 2026
f8b66ac
python modernization update
nsheff Feb 11, 2026
f686ee7
Merge pull request #561 from pepkit/modernize-2
nsheff Feb 11, 2026
bb7c506
Merge dev into feature-http-api
nsheff Feb 11, 2026
32e7ffb
Merge branch 'dev' into tweag/fix-test-suite
nsheff Feb 11, 2026
7070c00
Merge branch 'dev' into tweag/http-api-add-documentation
nsheff Feb 11, 2026
e344bc0
Merge feature-http-api into consolidated branch
nsheff Feb 11, 2026
c9af8da
Merge branch 'tweag/fix-test-suite' into feature-http-api-consolidated
nsheff Feb 11, 2026
d621595
Merge branch 'tweag/http-api-add-documentation' into feature-http-api…
nsheff Feb 11, 2026
cb6513d
merge
nsheff Feb 11, 2026
ae74628
make serve alpha; add jobs endpoint and fix some api bugs
nsheff Feb 11, 2026
f696255
format
nsheff Feb 11, 2026
0c0d91c
cleanup stdout redirects
nsheff Feb 11, 2026
95451e3
Merge pull request #562 from pepkit/feature-http-api-consolidated
nsheff Feb 11, 2026
3c420a1
Use better shell inference for submission commands. See #282
nsheff Feb 11, 2026
a2ee46b
update actions, etc
nsheff Feb 11, 2026
8130304
remove old docs
nsheff Feb 12, 2026
6f018f3
Complete pydantic-settings migration
nsheff Feb 12, 2026
cbdcf46
improve cli startup time by moving deps to module level
nsheff Feb 12, 2026
1858f52
format
nsheff Feb 12, 2026
3ebcf6c
clean up cruft
nsheff Feb 12, 2026
eaa799d
clean up json parsing of pydantic parsed cli
nsheff Feb 12, 2026
c7b771b
bring back logo
nsheff Feb 12, 2026
1cb2fcd
add new stricter looper-pipestat interface
nsheff Feb 12, 2026
1aa2294
simplify tests
nsheff Feb 12, 2026
ba3c3d2
Merge pull request #564 from pepkit/pipestat-error-helps
nsheff Feb 12, 2026
d38ea00
Merge pull request #563 from pepkit/pydantic-settings
nsheff Feb 12, 2026
c663224
format
nsheff Feb 12, 2026
0989370
Separate fast unit tests from slow CLI integration tests. version bum…
nsheff Feb 13, 2026
aca80f0
format
nsheff Feb 19, 2026
1c55211
make signal handling thread-safe
nsheff Feb 20, 2026
41d644f
update pipestat constructor format
nsheff Feb 21, 2026
a94abb5
Add Donald Campbell to author list
donaldcampbelljr Feb 24, 2026
1299a0d
format, changelog
nsheff Feb 25, 2026
eea38aa
Merge branch 'dev' of github.com:pepkit/looper into dev
nsheff Feb 25, 2026
42452f7
ruff
nsheff Feb 25, 2026
e09daa5
update changelog
nsheff Feb 25, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
13 changes: 7 additions & 6 deletions .github/workflows/black.yml
Original file line number Diff line number Diff line change
@@ -1,14 +1,15 @@
name: Lint

on: [pull_request]
on: [push, pull_request]

jobs:
lint:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- uses: actions/setup-python@v2
- uses: psf/black@stable
- uses: actions/checkout@v6
- uses: actions/setup-python@v5
with:
options: "--check --diff --color --verbose"
jupyter: true
python-version: "3.12"
- run: pip install ruff==0.15.0
- run: ruff check .
- run: ruff format --check .
32 changes: 14 additions & 18 deletions .github/workflows/python-publish.yml
Original file line number Diff line number Diff line change
@@ -1,6 +1,3 @@
# This workflows will upload a Python Package using Twine when a release is created
# For more information see: https://help.github.com/en/actions/language-and-framework-guides/using-python-with-github-actions#publishing-to-package-registries

name: Upload Python Package

on:
Expand All @@ -12,19 +9,18 @@ jobs:
runs-on: ubuntu-latest
name: upload release to PyPI
permissions:
id-token: write # IMPORTANT: this permission is mandatory for trusted publishing
contents: read
id-token: write

steps:
- uses: actions/checkout@v4
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: "3.x"
- name: Install dependencies
run: |
python -m pip install --upgrade pip
pip install setuptools wheel twine
- name: Build and publish
run: |
python setup.py sdist bdist_wheel
- name: Publish package distributions to PyPI
uses: pypa/gh-action-pypi-publish@release/v1
- uses: actions/checkout@v6
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: '3.x'
- name: Install build dependencies
run: python -m pip install --upgrade pip build
- name: Build package
run: python -m build
- name: Publish package distributions to PyPI
uses: pypa/gh-action-pypi-publish@release/v1
25 changes: 11 additions & 14 deletions .github/workflows/run-pytest.yml
Original file line number Diff line number Diff line change
Expand Up @@ -9,22 +9,19 @@ jobs:
runs-on: ${{ matrix.os }}
strategy:
matrix:
python-version: ["3.8", "3.11"]
os: [ubuntu-latest]
python-version: ["3.10", "3.14"]
os: [ubuntu-latest, macos-latest]

steps:
- uses: actions/checkout@v2
- uses: actions/checkout@v6

- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v2
with:
python-version: ${{ matrix.python-version }}
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python-version }}

- name: Install test dependencies
run: if [ -f requirements/requirements-test.txt ]; then pip install -r requirements/requirements-test.txt; fi
- name: Install package with test dependencies
run: python -m pip install ".[test]"

- name: Install package
run: python -m pip install .

- name: Run pytest tests
run: pytest tests -x -vv --remote-data
- name: Run pytest tests
run: pytest tests
19 changes: 7 additions & 12 deletions .pre-commit-config.yaml
Original file line number Diff line number Diff line change
@@ -1,20 +1,15 @@
repos:
- repo: https://github.com/pre-commit/pre-commit-hooks
rev: v4.0.1
rev: v5.0.0
hooks:
- id: trailing-whitespace
- id: check-yaml
- id: end-of-file-fixer
- id: requirements-txt-fixer
- id: trailing-whitespace

- repo: https://github.com/PyCQA/isort
rev: 5.9.1
hooks:
- id: isort
args: ["--profile", "black"]
- id: check-ast

- repo: https://github.com/psf/black
rev: 21.6b0
- repo: https://github.com/astral-sh/ruff-pre-commit
rev: v0.15.0
hooks:
- id: black
- id: ruff
args: [--fix]
- id: ruff-format
9 changes: 0 additions & 9 deletions MANIFEST.in

This file was deleted.

2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# <img src="docs/img/looper_logo.svg" alt="looper logo" height="70">
# <img src="looper_logo.svg" alt="looper logo" height="70">

![Run pytests](https://github.com/pepkit/looper/workflows/Run%20pytests/badge.svg)
[![PEP compatible](http://pepkit.github.io/img/PEP-compatible-green.svg)](http://pepkit.github.io)
Expand Down
19 changes: 19 additions & 0 deletions docs/changelog.md → changelog.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,25 @@

This project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html) and [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) format.

## [2.1.0] -- 2026-02-25
### Changed
- Migrated to new yacman API (`YAMLConfigManager.from_yaml_file()`, `write_lock`/`read_lock` context managers); requires yacman >=0.9.5
- Migrated CLI configuration to pydantic-settings
- Improved CLI startup time by deferring heavy imports to module level
- Made signal handling thread-safe
- Replaced wildcard imports with explicit imports
- Converted docstrings to Google style
- Better shell inference for submission commands (#282)
- Updated pipestat constructor usage to classmethod format
- Separated fast unit tests from slow CLI integration tests

### Added
- HTTP API server (experimental/alpha) with FastAPI: `looper serve`
- Stricter looper-pipestat interface validation

### Removed
- Old documentation files (moved to separate docs site)

## [2.0.3] -- 2025-09-23
### Fixed
- Fixed [#543](https://github.com/pepkit/looper/issues/543)
Expand Down
57 changes: 0 additions & 57 deletions docs/README.md

This file was deleted.

85 changes: 0 additions & 85 deletions docs/advanced.md

This file was deleted.

2 changes: 0 additions & 2 deletions docs/autodoc_build/.gitignore

This file was deleted.

60 changes: 0 additions & 60 deletions docs/concentric-templates.md

This file was deleted.

Loading