Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
845 commits
Select commit Hold shift + click to select a range
e9368a7
ci: `uv` for `docs-build` (#21206)
matsumotosan Sep 15, 2025
18ceb67
Add documentation on multi test dataloaders (#21215)
SkafteNicki Sep 15, 2025
e088694
fix: failing ci linkcheck in markdown (#21222)
deependujha Sep 15, 2025
9d40bc8
Add MPS accelerator support for mixed precision (#21209)
bhimrazy Sep 25, 2025
7606207
Add note on accessing last and best checkpoint (#21241)
SkafteNicki Sep 25, 2025
08875e8
build(deps): update psutil requirement from <7.0.1 to <7.1.1 in /requ…
dependabot[bot] Sep 25, 2025
4662d0c
build(deps): bump mypy from 1.18.1 to 1.18.2 in /requirements (#21235)
dependabot[bot] Sep 25, 2025
0943546
build(deps): update docutils requirement from <=0.22,>=0.18.1 to >=0.…
dependabot[bot] Sep 25, 2025
2b7197a
simplify lit CI config (#21220)
Borda Sep 26, 2025
4e262bc
Docs: skip flaky link to Medium post (#21249)
Borda Sep 26, 2025
3726e54
Update webdataset integration example with missing ddp params (#21243)
SkafteNicki Sep 26, 2025
dfbee80
Fix LightningCLI loading of hyperparameters from ckpt_path failing fo…
mauvilsa Sep 29, 2025
e21b172
build(deps): bump click from 8.2.1 to 8.3.0 in /requirements (#21237)
dependabot[bot] Sep 30, 2025
7c0d36f
Update readme (#21263)
williamFalcon Oct 3, 2025
d7a92ee
Update heading from 'Why PyTorch Lightning?' to 'Convert from PyTorch…
williamFalcon Oct 3, 2025
918a1a6
Fix heading formatting in README.md
williamFalcon Oct 3, 2025
46a406a
Add UTM parameters to links in README
williamFalcon Oct 5, 2025
c944c2d
readme
williamFalcon Oct 5, 2025
192daa8
readme updates
williamFalcon Oct 5, 2025
4dc1dbc
update readme
williamFalcon Oct 5, 2025
4be131d
build(deps): update onnxruntime requirement from <1.23.0,>=1.12.0 to …
dependabot[bot] Oct 7, 2025
79dc82c
build(deps): update ipython[notebook] requirement from <9.6.0 to <9.7…
dependabot[bot] Oct 7, 2025
feb8fa1
Fix spelling error in README description
williamFalcon Oct 12, 2025
851e66f
fix:docs build errors (#21286)
bhimrazy Oct 13, 2025
701e560
build(deps): bump astral-sh/setup-uv from 6 to 7 (#21284)
dependabot[bot] Oct 15, 2025
3abe314
build(deps): bump pytest-rerunfailures from 16.0.1 to 16.1 in /requir…
dependabot[bot] Oct 15, 2025
dc64c9a
[pre-commit.ci] pre-commit suggestions (#21273)
pre-commit-ci[bot] Oct 15, 2025
4cd2336
build(deps): bump coverage from 7.10.6 to 7.10.7 in /requirements (#2…
dependabot[bot] Oct 15, 2025
e0e42a0
fix pylint E1120 error. (#21230)
GdoongMathew Oct 15, 2025
ec09487
fix: setup in Lightning Studio by uninstalling pre-installed lightnin…
deependujha Oct 15, 2025
02f92a9
nitpick: remove unnecessary type ignore & comment (#21274)
deependujha Oct 16, 2025
7fa8fe4
[Hotfix] Remove reference to `torch.jit.export` (#21292)
SkafteNicki Oct 16, 2025
7323bb8
Fix logged sparsity calculation in `ModelPruning` (#21223)
SkafteNicki Oct 16, 2025
c943c05
bump: `deepspeed` to be 0.16 (#21194)
Borda Oct 17, 2025
9fa10f8
build(deps): bump pytest-doctestplus from 1.4.0 to 1.5.0 in /requirem…
dependabot[bot] Oct 20, 2025
7d0d0ad
build(deps): update jsonargparse[jsonnet,signatures] requirement from…
dependabot[bot] Oct 20, 2025
29ddf82
build(deps): update psutil requirement from <7.1.1 to <7.1.2 in /requ…
dependabot[bot] Oct 21, 2025
56204d8
docs: Add float16 precision warning for optimizer eps and small value…
bhimrazy Oct 21, 2025
bef9e6b
fix: mps related tests (#21270)
bhimrazy Oct 22, 2025
f58a176
Smaller docfix for cli scheduler documentation (#21228)
SkafteNicki Oct 22, 2025
6a8d943
Fix EADDRINUSE errors in distributed tests with port manager and retr…
littlebullGit Oct 23, 2025
dd7b2f3
tests: fix skipif condition for `deepspeed` (#21195)
Borda Oct 23, 2025
b554e99
Fix calculate training time by summing all elapsed times instead the …
itzhakstern Oct 24, 2025
1ef27ce
Docs: drop deprecated project (#21250)
Borda Oct 28, 2025
2f448e1
drop dumping wheels after UV switch (#21217)
Borda Oct 28, 2025
10675b4
Synchronize gradients in manual optimization with DDPStrategy(static_…
Sohaib-Ahmed21 Oct 29, 2025
3bcfc17
build(deps): update torchvision requirement from <0.24.0,>=0.16.0 to …
dependabot[bot] Oct 29, 2025
25cc7b2
build(deps): bump actions/download-artifact from 5 to 6 (#21316)
dependabot[bot] Oct 29, 2025
41c49a7
build(deps): bump actions/upload-artifact from 4 to 5 (#21315)
dependabot[bot] Oct 29, 2025
a883890
Remove S105, S106, S107 ignores (#21196)
matsumotosan Oct 29, 2025
739cf13
Remove Support For Deprecated Habana (#21327)
justusschock Nov 3, 2025
32442c2
Add name to accelerator interface (#21325)
justusschock Nov 4, 2025
573828a
fix(tests): update fsspec version check causing failure on master (#2…
bhimrazy Nov 4, 2025
0bd1993
chore(`ci/litjob`): fix and optimize GPU related tests (#21290)
bhimrazy Nov 5, 2025
6900045
docs(trainer): add note for NumPy randomness (#21310)
adosar Nov 5, 2025
5337abd
build(deps): update fsspec[http] requirement from <2025.10.0,>=2022.5…
dependabot[bot] Nov 5, 2025
19912d0
fix: broken links in READMEs and resolve link check issue (#21314)
minashkinvladislav Nov 5, 2025
c913649
fix: port already in use & nccl errors in gpu tests (#21335)
deependujha Nov 6, 2025
0380e5a
Remove unviolated linting rules (#21229)
matsumotosan Nov 6, 2025
a7cb33a
Adding test for legacy checkpoint created with 2.5.6 (#21338)
pl-ghost Nov 6, 2025
bd27dbf
Add new args to `BatchSizeFinder` (#21163)
SkafteNicki Nov 6, 2025
c603433
Changelog after 2.5.6 Release (#21337)
justusschock Nov 6, 2025
4deb413
build(deps): bump coverage from 7.10.7 to 7.11.0 in /requirements (#2…
dependabot[bot] Nov 6, 2025
e561c2c
chore: retire Azure CI configs (moved to .azure/legacy) (#21342)
deependujha Nov 6, 2025
b3e0df0
Bugfix for `BackboneFinetuning` + `LearningRateFinder` (#21224)
SkafteNicki Nov 6, 2025
e5a616f
check the init args only when the given frames are in `__init__` meth…
GdoongMathew Nov 6, 2025
40b7766
Add link to pytorch profiler API (#21218)
SkafteNicki Nov 6, 2025
21523a6
build(deps): bump pytest-cov from 6.3.0 to 7.0.0 in /requirements (#2…
dependabot[bot] Nov 6, 2025
74b3fd5
build(deps): update onnxscript requirement from <0.5.0,>=0.1.0 to >=0…
dependabot[bot] Nov 6, 2025
fa4003b
Docs finetuning callback example (#21216)
SkafteNicki Nov 7, 2025
b82db78
Fix `last.ckpt` only being saved when another checkpoint has been cre…
SkafteNicki Nov 7, 2025
29abe6e
Expose `weights_only` for loading checkpoints with `Trainer`, `Lightn…
matsumotosan Nov 7, 2025
72dffa0
tests for python version in req. for split dependencies (#21305)
Borda Nov 7, 2025
d046a96
build(deps): update psutil requirement from <7.1.2 to <7.2 in /requir…
dependabot[bot] Nov 7, 2025
4c58992
Remove unused empty requirements.txt (#21346)
matsumotosan Nov 7, 2025
2337948
Update ci to min python v3.10 (#21344)
SkafteNicki Nov 7, 2025
35c0617
build(deps): update docutils requirement from <=0.22.2,>=0.18.1 to >=…
dependabot[bot] Nov 10, 2025
36d4c7b
build(deps): update ipython[notebook] requirement from <9.7.0 to <9.8…
dependabot[bot] Nov 10, 2025
b15d394
build(deps): update rich requirement from <14.2.0,>=12.3.0 to >=12.3.…
dependabot[bot] Nov 10, 2025
126fa6f
test(ci): add pytorch version `2.9` for CPU tests (#21352)
bhimrazy Nov 15, 2025
9bcba1c
Add `EMAWeightAveraging` callback to `weight_averaging.py` (#21260)
amorehead Nov 19, 2025
8f1c1ac
Update CONTRIBUTING.md with changelog instructions (#21364)
justusschock Nov 19, 2025
f7692a6
LRs updates are called at the end of a skipped epoch (#21307)
LTMeyer Nov 19, 2025
5b52e8f
Fix trainer.fit docstring render bug (#21362)
ritoban23 Nov 19, 2025
c76cec6
Fix `ModelCheckpoint` with manual optimization and `every_n_train_ste…
littlebullGit Nov 19, 2025
8ac4843
Catch issue with partial mpi4py installation. (#21353)
roccomoretti Nov 19, 2025
9a10959
Internal Refactor: Reroute Implementations (#21354)
justusschock Nov 21, 2025
05ae8b3
Fix FSDP mixed precision semantics and add user warning (#21361)
deependujha Nov 21, 2025
eec92a9
Prepare release 2.6.0 (#21368)
justusschock Nov 21, 2025
e98df3c
update maintainers/codeowners (#21240)
Borda Nov 21, 2025
8f702b3
Change Import Error Message (#21370)
deependujha Nov 21, 2025
5ea509a
build(deps): update jsonargparse[jsonnet,signatures] requirement from…
dependabot[bot] Nov 25, 2025
ef489f2
[Fabric] Ignore Keyword Arguments Outside of Callback Signature (#21258)
SkafteNicki Nov 25, 2025
b09e96e
Fix ModelCheckpoint file_exists OOM in DDP (#21380)
littlebullGit Nov 25, 2025
25c9922
Revert Rerouting (#21385)
justusschock Nov 27, 2025
8540370
update changelog (#21387)
deependujha Nov 28, 2025
79ffe50
Adding test for legacy checkpoint created with 2.6.0 (#21388)
pl-ghost Nov 28, 2025
49772c3
Fix `_generate_seed_sequence` sampling (#21399)
SkafteNicki Dec 10, 2025
1d062fc
build(deps): bump mypy from 1.18.2 to 1.19.0 in /requirements (#21394)
dependabot[bot] Dec 10, 2025
adb7c65
build(deps): bump click from 8.3.0 to 8.3.1 in /requirements (#21378)
dependabot[bot] Dec 10, 2025
2561e44
build(deps): update awscli requirement from <1.43.0,>=1.30.0 to >=1.3…
dependabot[bot] Dec 10, 2025
0cb5ed5
build(deps): bump actions/checkout from 5 to 6 (#21375)
dependabot[bot] Dec 10, 2025
9ae18f7
build(deps): bump pytest-doctestplus from 1.5.0 to 1.6.0 in /requirem…
dependabot[bot] Dec 10, 2025
fc39230
fix torch-tensorrt dependency in testing (#21413)
GdoongMathew Dec 15, 2025
3876cc5
Deprecate Python 3.9 support (#21398)
SkafteNicki Dec 15, 2025
f3f6605
Fix `StochasticWeightAveraging` with infinite epochs (#21396)
SkafteNicki Dec 15, 2025
ad7a958
Deprecate method `to_torchscript` (#21397)
SkafteNicki Dec 16, 2025
716c2c6
build(deps): update jsonargparse[jsonnet,signatures] requirement from…
dependabot[bot] Dec 16, 2025
04baf7f
Sanitize profile filename (#21395)
SkafteNicki Dec 16, 2025
5130530
build(deps): bump torch & torchvision from 2.8.0 to 2.9.0 in /require…
dependabot[bot] Dec 17, 2025
419b37b
Fix ddp_notebook CUDA fork check to allow passive initialization (#21…
arrdel Dec 18, 2025
8f683c2
ci: revert part of #21413 (#21427)
GdoongMathew Dec 19, 2025
fe48fb0
build(deps): bump actions/cache from 4 to 5 (#21423)
dependabot[bot] Dec 19, 2025
8df577d
build(deps): bump actions/upload-artifact from 5 to 6 (#21421)
dependabot[bot] Dec 19, 2025
7ac9699
build(deps): bump peter-evans/create-pull-request from 7 to 8 (#21422)
dependabot[bot] Dec 19, 2025
d67a282
build(deps): bump actions/download-artifact from 6 to 7 (#21419)
dependabot[bot] Dec 19, 2025
6ee3b57
build(deps): update scikit-learn requirement from <1.8.0,>0.22.1 to >…
dependabot[bot] Dec 19, 2025
ba83de3
build(deps): update ipython[notebook] requirement from <9.8.0 to <9.9…
dependabot[bot] Dec 19, 2025
32a1b4f
build(deps): bump coverage from 7.11.0 to 7.13.0 in /requirements (#2…
dependabot[bot] Dec 19, 2025
9e1b038
build(deps): bump pytest from 8.4.2 to 9.0.2 in /requirements (#21415)
dependabot[bot] Dec 19, 2025
28f18dc
Fix ModelParallelStrategy fails with non-distributed checkpoint. (#21…
littlebullGit Dec 19, 2025
dae60cc
build(deps): update nbsphinx requirement from <=0.9.7,>=0.8.5 to >=0.…
dependabot[bot] Dec 19, 2025
a6701aa
Improve RichProgreasBar speed performance (#21321)
GdoongMathew Dec 19, 2025
2e25642
Adds litlogger integration (#21430)
justusschock Dec 20, 2025
1e7abb0
Remove duplicate 'Why PyTorch Lightning?' section
williamFalcon Dec 21, 2025
027455b
Revise README for clarity on model serving and training
williamFalcon Dec 22, 2025
786ac40
build(deps): update fsspec[http] requirement from <2025.11.0,>=2022.5…
dependabot[bot] Jan 8, 2026
8652b8d
build(deps): bump torch from 2.9.0 to 2.9.1 in /requirements (#21439)
dependabot[bot] Jan 8, 2026
84e61e2
build(deps): update awscli requirement from <1.44.0,>=1.30.0 to >=1.3…
dependabot[bot] Jan 8, 2026
904b094
build(deps): bump sphinx-toolbox from 4.0.0 to 4.1.0 in /requirements…
dependabot[bot] Jan 8, 2026
b908ba1
build(deps): update onnx requirement from <1.20.0,>1.12.0 to >1.12.0,…
dependabot[bot] Jan 8, 2026
7f75ba1
build(deps): update docutils requirement from <=0.22.3,>=0.18.1 to >=…
dependabot[bot] Jan 8, 2026
7050b9d
build(deps): bump coverage from 7.13.0 to 7.13.1 in /requirements (#2…
dependabot[bot] Jan 8, 2026
78908aa
[pre-commit.ci] pre-commit suggestions (#21471)
pre-commit-ci[bot] Jan 8, 2026
04f4ea5
fix changelog format (#21460)
deependujha Jan 8, 2026
00a9b12
fix: fix typo in logging_advanced.rst (#21468)
GdoongMathew Jan 8, 2026
fd0f86b
build(deps): bump mypy from 1.19.0 to 1.19.1 in /requirements (#21444)
dependabot[bot] Jan 8, 2026
affee28
Add Python 3.13 to CI (#21360)
matsumotosan Jan 8, 2026
30afb12
build(deps): update psutil requirement from <7.2.0 to <7.3.0 in /requ…
dependabot[bot] Jan 12, 2026
a775144
build(deps): update fsspec[http] requirement from <2025.13.0,>=2022.5…
dependabot[bot] Jan 12, 2026
4769146
build(deps): bump pytest-doctestplus from 1.6.0 to 1.7.0 in /requirem…
dependabot[bot] Jan 12, 2026
bbd72db
build(deps): bump sphinx-toolbox from 4.1.0 to 4.1.1 in /requirements…
dependabot[bot] Jan 12, 2026
38983ab
build(deps): update ipython[notebook] requirement from <9.9.0 to <9.1…
dependabot[bot] Jan 12, 2026
494b83d
build(deps): update jsonargparse[jsonnet,signatures] requirement from…
dependabot[bot] Jan 12, 2026
2060299
Expose `weights_only` argument for loading checkpoints in `Fabric.loa…
CodeVishal-17 Jan 12, 2026
f2da71f
Fix LightningDataModule.load_from_checkpoint to restore subclass and …
aditya0by0 Jan 12, 2026
be2e8d0
Enable windows in unittest `test_fetching_is_profiled` (#21479)
GdoongMathew Jan 12, 2026
36998f5
Adds method chaining support to `LightningModule.freeze()` and `Light…
GdoongMathew Jan 12, 2026
9df1910
build(deps): update numpy requirement from <2.3.5,>2.1.0 to >2.1.0,<2…
dependabot[bot] Jan 12, 2026
aa0ee0d
Fix warning frequency in throughput monitor callback (#21453)
GdoongMathew Jan 14, 2026
79a39c0
fix(fabric): forward set_epoch to underlying sampler in DistributedSa…
littlebullGit Jan 14, 2026
0a0f061
fix(link-check): resolve broken URLs (#21493)
deependujha Jan 20, 2026
a25515e
CI: fix doctest failure from PyTorch LeafSpec FutureWarning (#21502)
deependujha Jan 28, 2026
14a3902
Fix `save_hyperparameters` ignore precedence in subclasses (#21490)
aditya0by0 Jan 28, 2026
bf24d6b
build(deps): update torchvision requirement from <0.25.0,>=0.16.0 to …
dependabot[bot] Jan 28, 2026
0c2025d
build(deps): update setuptools requirement from <80.9.1 to <80.10.3 i…
dependabot[bot] Jan 28, 2026
360bd5b
Prepare release 2.6.1 (#21516)
bhimrazy Jan 30, 2026
4024b80
bump(deps): bump `litlogger` version to `>=0.1.7` (#21517)
bhimrazy Jan 30, 2026
d59d67a
chore: update changelog and add missing entry for lit-logger integrat…
bhimrazy Jan 30, 2026
7d2de87
Adding test for legacy checkpoint created with 2.6.1 (#21520)
pl-ghost Jan 30, 2026
215d7d9
Use math.fsum for duration aggregation in SimpleProfiler (#21525)
KAVYANSHTYAGI Feb 3, 2026
8d86b24
fix: resolve pkg-resources deprecation issue (#21538)
deependujha Feb 16, 2026
92a5474
Bump `pyyaml` in CI (#21558)
deependujha Feb 28, 2026
4984eac
build(deps): bump actions/download-artifact from 7 to 8 (#21562)
dependabot[bot] Mar 2, 2026
a3a28b3
build(deps): bump actions/upload-artifact from 6 to 7 (#21563)
dependabot[bot] Mar 2, 2026
8e805f9
Docs: pin Intel Neural Compressor validated model list link (#21565)
deependujha Mar 4, 2026
d27d2b9
CI: ignore neptune links for linkcheck (#21570)
deependujha Mar 6, 2026
9dc525c
fix: Skip val_check_interval validation when limit_val_batches=0 (#21…
ManasVardhan Mar 6, 2026
cb460da
docs: add LR scheduler section with automatic optimization examples (…
TanvirTurja Mar 6, 2026
c05cadb
Fix RichModelSummary model size display (#21467)
AsherJingkongChen Mar 6, 2026
283ce77
ci: move torch-tensorrt to GPU-only test requirements (#21575)
bhimrazy Mar 9, 2026
2816d8c
fix(strategies): correct `device_mesh` type hint in FSDP strategies (…
littlebullGit Mar 17, 2026
8956ecc
chore(pre-commit) : pin docformatter to python3.12 for compatibility …
bhimrazy Mar 17, 2026
aa6a6f9
chore(tests): update PyTorch versions in CI workflows to include 2.10…
bhimrazy Mar 17, 2026
54390b2
build(deps): bump sphinx-toolbox from 4.1.1 to 4.1.2 in /requirements…
dependabot[bot] Mar 17, 2026
2e184b1
build(deps): update sphinx-togglebutton requirement from <=0.3.2,>=0.…
dependabot[bot] Mar 17, 2026
bc100eb
build(deps): update myst-parser requirement from <5.0.0,>=0.18.1 to >…
dependabot[bot] Mar 17, 2026
884c172
build(deps): bump sphinxcontrib-video from 0.4.1 to 0.4.2 in /require…
dependabot[bot] Mar 17, 2026
81a57f3
build(deps): bump coverage from 7.13.1 to 7.13.2 in /requirements (#2…
dependabot[bot] Mar 17, 2026
82c6fe0
build(deps): update pandas requirement from <2.4.0,>2.0 to >2.0,<3.1.…
dependabot[bot] Mar 17, 2026
b5b6c09
build(deps): update wheel requirement from <0.46.0 to <0.47.0 in /req…
dependabot[bot] Mar 17, 2026
a6845bb
build(deps): bump Lightning-AI/utilities/.github/workflows/cleanup-ca…
dependabot[bot] Mar 17, 2026
df28744
build(deps): bump Lightning-AI/utilities/.github/workflows/check-sche…
dependabot[bot] Mar 17, 2026
5730e81
build(deps): update nbconvert requirement from <7.17,>7.14 to >7.14,<…
dependabot[bot] Mar 17, 2026
a13361d
build(deps): update rich requirement from <14.3.0,>=12.3.0 to >=12.3.…
dependabot[bot] Mar 17, 2026
6c92678
fix: FSDP mixed precision initializes params in fp32, not bf16/fp16 (…
bhimrazy Mar 17, 2026
1690c21
Update Litlogger Integration to latest version (#21591)
justusschock Mar 19, 2026
73f593d
Remove NeptuneLogger integration from PyTorch Lightning (#21572)
deependujha Mar 19, 2026
9f074af
Prepare Release Note for 2.6.2 Release (#21592)
justusschock Mar 19, 2026
7983ecb
Fix LearningRateMonitor TypeError on MPS with float64 lr values (#21545)
veeceey Mar 20, 2026
6805188
Use fs.pipe() for S3/GCS checkpoint uploads in _atomic_save (#21595)
c-pozzi Mar 21, 2026
03442a5
build(deps): bump coverage from 7.13.4 to 7.13.5 in /requirements (#2…
dependabot[bot] Mar 30, 2026
73e5100
build(deps): update jsonargparse[jsonnet,signatures] requirement from…
dependabot[bot] Mar 30, 2026
7148eea
build(deps): update ipython[notebook] requirement from <9.10.0 to <9.…
dependabot[bot] Mar 30, 2026
a74468b
build(deps): bump pytest-doctestplus from 1.7.0 to 1.7.1 in /requirem…
dependabot[bot] Mar 30, 2026
eb9073e
build(deps): update onnxruntime requirement from <1.24.0,>=1.12.0 to …
dependabot[bot] Mar 30, 2026
3f5dd98
build(deps): update fsspec[http] requirement from <2026.2.0,>=2022.5.…
dependabot[bot] Mar 30, 2026
44fd142
Docs: avoid unresolved torch.jit Sphinx refs to fix the CICD doc buil…
littlebullGit Mar 30, 2026
b929d39
drop deprecated stale.yml config (#21597)
Borda Mar 30, 2026
648ec13
Update issue templates and labeler for v2.6 release (#21598)
Borda Mar 30, 2026
82085bf
build(deps): update numpy requirement from <2.4.2,>2.1.0 to >2.1.0,<2…
dependabot[bot] Mar 30, 2026
ce79feb
build(deps): bump codecov/codecov-action from 5 to 6 (#21625)
dependabot[bot] Mar 30, 2026
0f3691b
build(deps): update importlib-metadata requirement from <9.0.0 to <10…
dependabot[bot] Mar 30, 2026
f4027f7
fix: set nonzero exit code for SIGTERMException (#21623)
javierdejesusda Mar 30, 2026
612ab08
build(deps): update ipython requirement from <9.12.0 to <9.13.0 in /r…
dependabot[bot] Mar 30, 2026
d3b25f8
Add `log_key_prefix` parameter to `LearningRateMonitor` (#21612)
Krishnachaitanyakc Apr 1, 2026
4a548c9
fix: restore cached AMP step context after no_grad workaround (#21616)
littlebullGit Apr 1, 2026
0a60211
feat: add `suggest_integrations` flag to toggle `integration suggesti…
deependujha Apr 1, 2026
bb7820f
Fix free-threaded cleanup race in _replace_dunder_methods (#21618)
Furkan-rgb Apr 1, 2026
bf93b18
Remove unnecessary TODO comment in fit_loop.py (#21265)
Copilot Apr 13, 2026
52f6016
build(deps): update packaging requirement from <25.1 to <26.1 in /req…
dependabot[bot] Apr 13, 2026
88fd39e
build(deps): update sphinx-togglebutton requirement from <=0.4.4,>=0.…
dependabot[bot] Apr 13, 2026
8dc2234
build(deps): update requests requirement from <2.33.0 to <2.34.0 in /…
dependabot[bot] Apr 13, 2026
fff262d
build(deps): update onnx requirement from <1.21.0,>1.12.0 to >1.12.0,…
dependabot[bot] Apr 13, 2026
7c0d9df
build(deps): bump mypy from 1.19.1 to 1.20.0 in /requirements (#21650)
dependabot[bot] Apr 13, 2026
06b1e3c
[pre-commit.ci] pre-commit suggestions (#21653)
pre-commit-ci[bot] Apr 13, 2026
7e3c0cd
build(deps): bump Lightning-AI/probot from 1 to 5 (#21658)
dependabot[bot] Apr 13, 2026
4ea9b01
Warn when FSDP auto-wrap policy splits tied weights (#21613)
c-pozzi Apr 13, 2026
cd9f72d
build(deps): update fsspec requirement from <2026.3.0,>=2022.5.0 to >…
dependabot[bot] Apr 13, 2026
efb7328
build(deps): update onnxscript requirement from <0.6.0,>=0.2.2 to >=0…
dependabot[bot] Apr 13, 2026
7fa8bb4
chore: add make command for running standalone tests (#21668)
deependujha Apr 21, 2026
0e20e15
fix (ci): allow `probot` comment posting on fork PRs (#21670)
deependujha Apr 28, 2026
78bf021
Setup package publishing via PyPi Trusted Publisher Management (#21594)
justusschock May 5, 2026
88352b7
ci: bump auto-label-merge-conflicts commit hash (#21704)
bhimrazy May 11, 2026
196de4d
Pin low-risk GitHub workflow actions to SHAs (1/n) (#21719)
bhimrazy May 18, 2026
c7eae51
ci: delete all pull_request_target workflows (#21721)
bhimrazy May 19, 2026
0d6ad3e
ci: add 2-day package install cooldown (supply-chain guard) (1/n) (#2…
bhimrazy May 19, 2026
513d859
chore: prepare changelog for 2.6.4 release (#21729)
bhimrazy May 20, 2026
5f98958
Pin PyPI publish action for trusted publishing (#21730)
justusschock May 20, 2026
f1d6af4
Pin official GitHub workflow actions to SHAs (2/n) (#21735)
bhimrazy May 25, 2026
019bed2
Pin cloud and release workflow actions to SHAs (4/n) (#21737)
bhimrazy May 25, 2026
619c88a
Pin disabled TPU workflow actions to SHAs (6/n) (#21739)
bhimrazy May 25, 2026
642778b
Pin third-party CI workflow actions to SHAs (3/n) (#21736)
bhimrazy May 25, 2026
c863ae5
Pin internal workflow actions to SHAs (5/n) (#21738)
bhimrazy May 25, 2026
1b21a0a
[Docs] Fix Sphinx parameter permalink positioning (#21734)
james47 May 27, 2026
5135a7f
ci: grant minimum permissions to probot (#21687)
deependujha May 27, 2026
a8d32b0
ci: temporarily disable litbot checkgroup (#21713)
deependujha May 27, 2026
932b7e3
docs: expand DDP metric synchronization guidance (#21685)
c-pozzi May 27, 2026
1bd737a
fix: use del instead of explicit shutdown in CombinedLoader.reset() (…
michaelvay Jun 1, 2026
261df0c
build(deps): bump pypa/gh-action-pypi-publish from 1.13.0 to 1.14.0 (…
dependabot[bot] Jun 1, 2026
b4b5f6d
build(deps): bump astral-sh/setup-uv from 7.6.0 to 8.1.0 (#21750)
dependabot[bot] Jun 1, 2026
1120456
Fix torch.compile breaking toggle_optimizer / untoggle_optimizer (#21…
gaurav0107 Jun 1, 2026
2849907
feat: add `filter_keys​` to log only specified device stats (#21707)
deependujha Jun 1, 2026
35e56ef
fix: AccumulateGrad stream mismatch warning when using DDP with Fabri…
deependujha Jun 1, 2026
4f87061
Fix FLOPs inconsistency and add using_sparse_model flag (#21743)
Devesh-Maheshwari Jun 8, 2026
d9a9766
jsonargparse 4.39 required for CLI, check at run-time (#21747)
adamjstewart Jun 9, 2026
fe6b1cc
Fix: Add `weights_only` parameter to LearningRateFinder checkpoint re…
cngmid Jun 9, 2026
908064e
fix(FSDP): pass explicit CPU device to satisfy torch>=2.5 device_i…
zhixiangli Jul 2, 2026
4819088
Profile dataloader initialization in FitLoop and update outdated docs…
yuxin00j Jul 2, 2026
eb7a651
docs: fix typo in Lightning Trainer documentation
mayank-dev-15 Jul 3, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
191 changes: 76 additions & 115 deletions .actions/assistant.py
Original file line number Diff line number Diff line change
Expand Up @@ -14,19 +14,18 @@
import glob
import logging
import os
import pathlib
import re
import shutil
import tarfile
import tempfile
import urllib.request
from distutils.version import LooseVersion
from collections.abc import Iterable, Iterator, Sequence
from itertools import chain
from os.path import dirname, isfile
from pathlib import Path
from typing import Any, Dict, Iterable, Iterator, List, Optional, Sequence, Tuple, Union
from typing import Any, Optional

from pkg_resources import Requirement, parse_requirements, yield_lines
from packaging.requirements import Requirement
from packaging.version import Version

REQUIREMENT_FILES = {
"pytorch": (
Expand All @@ -35,11 +34,6 @@
"requirements/pytorch/strategies.txt",
"requirements/pytorch/examples.txt",
),
"app": (
"requirements/app/app.txt",
"requirements/app/cloud.txt",
"requirements/app/ui.txt",
),
"fabric": (
"requirements/fabric/base.txt",
"requirements/fabric/strategies.txt",
Expand All @@ -52,14 +46,14 @@


class _RequirementWithComment(Requirement):
strict_string = "# strict"
strict_cmd = "strict"

def __init__(self, *args: Any, comment: str = "", pip_argument: Optional[str] = None, **kwargs: Any) -> None:
super().__init__(*args, **kwargs)
self.comment = comment
assert pip_argument is None or pip_argument # sanity check that it's not an empty str
self.pip_argument = pip_argument
self.strict = self.strict_string in comment.lower()
self.strict = self.strict_cmd in comment.lower()

def adjust(self, unfreeze: str) -> str:
"""Remove version restrictions unless they are strict.
Expand All @@ -68,33 +62,35 @@ def adjust(self, unfreeze: str) -> str:
'arrow<=1.2.2,>=1.2.0'
>>> _RequirementWithComment("arrow<=1.2.2,>=1.2.0", comment="# strict").adjust("none")
'arrow<=1.2.2,>=1.2.0 # strict'
>>> _RequirementWithComment("arrow<=1.2.2,>=1.2.0", comment="# my name").adjust("all")
'arrow>=1.2.0'
>>> _RequirementWithComment('arrow<=1.2.2,>=1.2.0; python_version >= "3.10"', comment="# my name").adjust("all")
'arrow>=1.2.0; python_version >= "3.10"'
>>> _RequirementWithComment("arrow>=1.2.0, <=1.2.2", comment="# strict").adjust("all")
'arrow<=1.2.2,>=1.2.0 # strict'
>>> _RequirementWithComment("arrow").adjust("all")
'arrow'
>>> _RequirementWithComment('arrow; python_version >= "3.10"').adjust("all")
'arrow; python_version >= "3.10"'
>>> _RequirementWithComment("arrow>=1.2.0, <=1.2.2", comment="# cool").adjust("major")
'arrow<2.0,>=1.2.0'
>>> _RequirementWithComment("arrow>=1.2.0, <=1.2.2", comment="# strict").adjust("major")
'arrow<=1.2.2,>=1.2.0 # strict'
>>> _RequirementWithComment("arrow>=1.2.0").adjust("major")
'arrow>=1.2.0'
>>> _RequirementWithComment('arrow>=1.2.0; python_version >= "3.10"').adjust("major")
'arrow>=1.2.0; python_version >= "3.10"'
>>> _RequirementWithComment("arrow").adjust("major")
'arrow'

"""
out = str(self)
if self.strict:
return f"{out} {self.strict_string}"
return f"{out} # {self.strict_cmd}"

specs = [(spec.operator, spec.version) for spec in self.specifier]
if unfreeze == "major":
for operator, version in self.specs:
for operator, version in specs:
if operator in ("<", "<="):
major = LooseVersion(version).version[0]
major = Version(version).major
# replace upper bound with major version increased by one
return out.replace(f"{operator}{version}", f"<{major + 1}.0")
elif unfreeze == "all":
for operator, version in self.specs:
for operator, version in specs:
if operator in ("<", "<="):
# drop upper bound
return out.replace(f"{operator}{version},", "")
Expand All @@ -103,33 +99,25 @@ def adjust(self, unfreeze: str) -> str:
return out


def _parse_requirements(strs: Union[str, Iterable[str]]) -> Iterator[_RequirementWithComment]:
def _parse_requirements(lines: Iterable[str]) -> Iterator[_RequirementWithComment]:
"""Adapted from `pkg_resources.parse_requirements` to include comments.

>>> txt = ['# ignored', '', 'this # is an', '--piparg', 'example', 'foo # strict', 'thing', '-r different/file.txt']
>>> [r.adjust('none') for r in _parse_requirements(txt)]
['this', 'example', 'foo # strict', 'thing']
>>> txt = '\\n'.join(txt)
>>> [r.adjust('none') for r in _parse_requirements(txt)]
['this', 'example', 'foo # strict', 'thing']

"""
lines = yield_lines(strs)
pip_argument = None
for line in lines:
line = line.strip()
if not line or line.startswith("#"):
continue
# Drop comments -- a hash without a space may be in a URL.
if " #" in line:
comment_pos = line.find(" #")
line, comment = line[:comment_pos], line[comment_pos:]
else:
comment = ""
# If there is a line continuation, drop it, and append the next line.
if line.endswith("\\"):
line = line[:-2].strip()
try:
line += next(lines)
except StopIteration:
return
# If there's a pip argument, save it
if line.startswith("--"):
pip_argument = line
Expand All @@ -141,7 +129,7 @@ def _parse_requirements(strs: Union[str, Iterable[str]]) -> Iterator[_Requiremen
pip_argument = None


def load_requirements(path_dir: str, file_name: str = "base.txt", unfreeze: str = "all") -> List[str]:
def load_requirements(path_dir: str, file_name: str = "base.txt", unfreeze: str = "all") -> list[str]:
"""Loading requirements from a file.

>>> path_req = os.path.join(_PROJECT_ROOT, "requirements")
Expand All @@ -155,7 +143,7 @@ def load_requirements(path_dir: str, file_name: str = "base.txt", unfreeze: str
logging.warning(f"Folder {path_dir} does not have any base requirements.")
return []
assert path.exists(), (path_dir, file_name, path)
text = path.read_text()
text = path.read_text().splitlines()
return [req.adjust(unfreeze) for req in _parse_requirements(text)]


Expand All @@ -167,8 +155,8 @@ def load_readme_description(path_dir: str, homepage: str, version: str) -> str:

"""
path_readme = os.path.join(path_dir, "README.md")
with open(path_readme, encoding="utf-8") as fo:
text = fo.read()
with open(path_readme, encoding="utf-8") as fopen:
text = fopen.read()

# drop images from readme
text = text.replace(
Expand Down Expand Up @@ -216,30 +204,6 @@ def distribute_version(src_folder: str, ver_file: str = "version.info") -> None:
shutil.copy2(ver_template, fpath)


def _download_frontend(pkg_path: str, version: str = "v0.0.0"):
"""Downloads an archive file for a specific release of the Lightning frontend and extracts it to the correct
directory."""

try:
frontend_dir = pathlib.Path(pkg_path, "ui")
download_dir = tempfile.mkdtemp()

shutil.rmtree(frontend_dir, ignore_errors=True)
# TODO: remove this once lightning-ui package is ready as a dependency
frontend_release_url = f"https://lightning-packages.s3.amazonaws.com/ui/{version}.tar.gz"
response = urllib.request.urlopen(frontend_release_url)

file = tarfile.open(fileobj=response, mode="r|gz")
file.extractall(path=download_dir) # noqa: S202

shutil.move(download_dir, frontend_dir)
print("The Lightning UI has successfully been downloaded!")

# If installing from source without internet connection, we don't want to break the installation
except Exception:
print("The Lightning UI downloading has failed!")


def _load_aggregate_requirements(req_dir: str = "requirements", freeze_requirements: bool = False) -> None:
"""Load all base requirements from all particular packages and prune duplicates.

Expand All @@ -260,7 +224,7 @@ def _load_aggregate_requirements(req_dir: str = "requirements", freeze_requireme
fp.writelines([ln + os.linesep for ln in requires] + [os.linesep])


def _retrieve_files(directory: str, *ext: str) -> List[str]:
def _retrieve_files(directory: str, *ext: str) -> list[str]:
all_files = []
for root, _, files in os.walk(directory):
for fname in files:
Expand All @@ -270,7 +234,7 @@ def _retrieve_files(directory: str, *ext: str) -> List[str]:
return all_files


def _replace_imports(lines: List[str], mapping: List[Tuple[str, str]], lightning_by: str = "") -> List[str]:
def _replace_imports(lines: list[str], mapping: list[tuple[str, str]], lightning_by: str = "") -> list[str]:
"""Replace imports of standalone package to lightning.

>>> lns = [
Expand Down Expand Up @@ -345,20 +309,20 @@ def copy_replace_imports(
if ext in (".pyc",):
continue
# Try to parse everything else
with open(fp, encoding="utf-8") as fo:
with open(fp, encoding="utf-8") as fopen:
try:
lines = fo.readlines()
lines = fopen.readlines()
except UnicodeDecodeError:
# a binary file, skip
print(f"Skipped replacing imports for {fp}")
continue
lines = _replace_imports(lines, list(zip(source_imports, target_imports)), lightning_by=lightning_by)
os.makedirs(os.path.dirname(fp_new), exist_ok=True)
with open(fp_new, "w", encoding="utf-8") as fo:
fo.writelines(lines)
with open(fp_new, "w", encoding="utf-8") as fopen:
fopen.writelines(lines)


def create_mirror_package(source_dir: str, package_mapping: Dict[str, str]) -> None:
def create_mirror_package(source_dir: str, package_mapping: dict[str, str]) -> None:
"""Create a mirror package with adjusted imports."""
# replace imports and copy the code
mapping = package_mapping.copy()
Expand All @@ -378,47 +342,6 @@ def create_mirror_package(source_dir: str, package_mapping: Dict[str, str]) -> N


class AssistantCLI:
@staticmethod
def requirements_prune_pkgs(packages: Sequence[str], req_files: Sequence[str] = REQUIREMENT_FILES_ALL) -> None:
"""Remove some packages from given requirement files."""
if isinstance(req_files, str):
req_files = [req_files]
for req in req_files:
AssistantCLI._prune_packages(req, packages)

@staticmethod
def _prune_packages(req_file: str, packages: Sequence[str]) -> None:
"""Remove some packages from given requirement files."""
path = Path(req_file)
assert path.exists()
text = path.read_text()
lines = text.splitlines()
final = []
for line in lines:
ln_ = line.strip()
if not ln_ or ln_.startswith("#"):
final.append(line)
continue
req = list(parse_requirements(ln_))[0]
if req.name not in packages:
final.append(line)
print(final)
path.write_text("\n".join(final) + "\n")

@staticmethod
def _replace_min(fname: str) -> None:
with open(fname, encoding="utf-8") as fo:
req = fo.read().replace(">=", "==")
with open(fname, "w", encoding="utf-8") as fw:
fw.write(req)

@staticmethod
def replace_oldest_ver(requirement_fnames: Sequence[str] = REQUIREMENT_FILES_ALL) -> None:
"""Replace the min package version by fixed one."""
for fname in requirement_fnames:
print(fname)
AssistantCLI._replace_min(fname)

@staticmethod
def copy_replace_imports(
source_dir: str,
Expand Down Expand Up @@ -466,7 +389,7 @@ def pull_docs_files(
raise RuntimeError(f"Requesting file '{zip_url}' does not exist or it is just unavailable.")

with zipfile.ZipFile(zip_file, "r") as zip_ref:
zip_ref.extractall(tmp) # noqa: S202
zip_ref.extractall(tmp)

zip_dirs = [d for d in glob.glob(os.path.join(tmp, "*")) if os.path.isdir(d)]
# check that the extracted archive has only repo folder
Expand Down Expand Up @@ -508,15 +431,53 @@ def convert_version2nightly(ver_file: str = "src/version.info") -> None:
"""Load the actual version and convert it to the nightly version."""
from datetime import datetime

with open(ver_file) as fo:
version = fo.read().strip()
with open(ver_file) as fopen:
version = fopen.read().strip()
# parse X.Y.Z version and prune any suffix
vers = re.match(r"(\d+)\.(\d+)\.(\d+).*", version)
# create timestamp YYYYMMDD
timestamp = datetime.now().strftime("%Y%m%d")
version = f"{'.'.join(vers.groups())}.dev{timestamp}"
with open(ver_file, "w") as fo:
fo.write(version + os.linesep)
with open(ver_file, "w") as fopen:
fopen.write(version + os.linesep)

@staticmethod
def generate_docker_tags(
release_version: str,
python_version: str,
torch_version: str,
cuda_version: str,
docker_project: str = "pytorchlightning/pytorch_lightning",
add_latest: bool = False,
) -> None:
"""Generate docker tags for the given versions."""
tags = [f"latest-py{python_version}-torch{torch_version}-cuda{cuda_version}"]
if release_version:
tags += [f"{release_version}-py{python_version}-torch{torch_version}-cuda{cuda_version}"]
if add_latest:
tags += ["latest"]

tags = [f"{docker_project}:{tag}" for tag in tags]
print(",".join(tags))

@staticmethod
def prune_pytest_as_errors(
pyproject_toml: str = "pyproject.toml", errors: tuple = ("FutureWarning", "DeprecationWarning")
) -> None:
"""Prune pytest warnings as errors from the pyproject.toml file."""
import tomlkit

with open(pyproject_toml, encoding="utf-8") as fopen:
content = fopen.read()
pyproject = tomlkit.parse(content)
filterwarnings = pyproject.get("tool", {}).get("pytest", {}).get("ini_options", {}).get("filterwarnings", [])
if not filterwarnings:
return
filterwarnings = [wrn for wrn in filterwarnings if not any(f"error::{err}" in wrn for err in errors)]
pyproject["tool"]["pytest"]["ini_options"]["filterwarnings"] = filterwarnings

with open(pyproject_toml, "w", encoding="utf-8") as fopen:
fopen.write(tomlkit.dumps(pyproject))


if __name__ == "__main__":
Expand Down
3 changes: 2 additions & 1 deletion .actions/requirements.txt
Original file line number Diff line number Diff line change
@@ -1,2 +1,3 @@
jsonargparse >=4.16.0, <4.28.0
jsonargparse
requests
packaging
Loading