torchdeltaflow 0.2.3.dev23__tar.gz → 0.2.4__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- torchdeltaflow-0.2.4/.github/workflows/publish.yml +175 -0
- {torchdeltaflow-0.2.3.dev23 → torchdeltaflow-0.2.4}/PKG-INFO +2 -2
- {torchdeltaflow-0.2.3.dev23 → torchdeltaflow-0.2.4}/README.md +1 -1
- {torchdeltaflow-0.2.3.dev23 → torchdeltaflow-0.2.4}/pyproject.toml +5 -4
- {torchdeltaflow-0.2.3.dev23 → torchdeltaflow-0.2.4}/torchdeltaflow.egg-info/PKG-INFO +2 -2
- torchdeltaflow-0.2.4/torchdeltaflow.egg-info/scm_version.json +8 -0
- torchdeltaflow-0.2.3.dev23/.github/workflows/publish.yml +0 -78
- torchdeltaflow-0.2.3.dev23/torchdeltaflow.egg-info/scm_version.json +0 -8
- {torchdeltaflow-0.2.3.dev23 → torchdeltaflow-0.2.4}/.github/workflows/ci.yml +0 -0
- {torchdeltaflow-0.2.3.dev23 → torchdeltaflow-0.2.4}/.github/workflows/docs.yml +0 -0
- {torchdeltaflow-0.2.3.dev23 → torchdeltaflow-0.2.4}/.gitignore +0 -0
- {torchdeltaflow-0.2.3.dev23 → torchdeltaflow-0.2.4}/CHANGELOG.md +0 -0
- {torchdeltaflow-0.2.3.dev23 → torchdeltaflow-0.2.4}/CITATION.cff +0 -0
- {torchdeltaflow-0.2.3.dev23 → torchdeltaflow-0.2.4}/CODE_OF_CONDUCT.md +0 -0
- {torchdeltaflow-0.2.3.dev23 → torchdeltaflow-0.2.4}/CONTRIBUTING.md +0 -0
- {torchdeltaflow-0.2.3.dev23 → torchdeltaflow-0.2.4}/LICENSE +0 -0
- {torchdeltaflow-0.2.3.dev23 → torchdeltaflow-0.2.4}/MANIFEST.in +0 -0
- {torchdeltaflow-0.2.3.dev23 → torchdeltaflow-0.2.4}/benchmarks/README.md +0 -0
- {torchdeltaflow-0.2.3.dev23 → torchdeltaflow-0.2.4}/deltaflow/__init__.py +0 -0
- {torchdeltaflow-0.2.3.dev23 → torchdeltaflow-0.2.4}/deltaflow/core/__init__.py +0 -0
- {torchdeltaflow-0.2.3.dev23 → torchdeltaflow-0.2.4}/deltaflow/core/base.py +0 -0
- {torchdeltaflow-0.2.3.dev23 → torchdeltaflow-0.2.4}/deltaflow/core/base_coupling.py +0 -0
- {torchdeltaflow-0.2.3.dev23 → torchdeltaflow-0.2.4}/deltaflow/core/base_equilibrium_field.py +0 -0
- {torchdeltaflow-0.2.3.dev23 → torchdeltaflow-0.2.4}/deltaflow/core/base_equilibrium_interpolant.py +0 -0
- {torchdeltaflow-0.2.3.dev23 → torchdeltaflow-0.2.4}/deltaflow/core/base_interpolant.py +0 -0
- {torchdeltaflow-0.2.3.dev23 → torchdeltaflow-0.2.4}/deltaflow/core/base_loss.py +0 -0
- {torchdeltaflow-0.2.3.dev23 → torchdeltaflow-0.2.4}/deltaflow/core/base_solver.py +0 -0
- {torchdeltaflow-0.2.3.dev23 → torchdeltaflow-0.2.4}/deltaflow/core/base_velocity_field.py +0 -0
- {torchdeltaflow-0.2.3.dev23 → torchdeltaflow-0.2.4}/deltaflow/datasets/__init__.py +0 -0
- {torchdeltaflow-0.2.3.dev23 → torchdeltaflow-0.2.4}/deltaflow/datasets/radiograph.py +0 -0
- {torchdeltaflow-0.2.3.dev23 → torchdeltaflow-0.2.4}/deltaflow/interpolants/__init__.py +0 -0
- {torchdeltaflow-0.2.3.dev23 → torchdeltaflow-0.2.4}/deltaflow/interpolants/base.py +0 -0
- {torchdeltaflow-0.2.3.dev23 → torchdeltaflow-0.2.4}/deltaflow/interpolants/equilibrium.py +0 -0
- {torchdeltaflow-0.2.3.dev23 → torchdeltaflow-0.2.4}/deltaflow/interpolants/linear.py +0 -0
- {torchdeltaflow-0.2.3.dev23 → torchdeltaflow-0.2.4}/deltaflow/interpolants/ot.py +0 -0
- {torchdeltaflow-0.2.3.dev23 → torchdeltaflow-0.2.4}/deltaflow/interpolants/schrodinger_bridge.py +0 -0
- {torchdeltaflow-0.2.3.dev23 → torchdeltaflow-0.2.4}/deltaflow/interpolants/variance_preserving.py +0 -0
- {torchdeltaflow-0.2.3.dev23 → torchdeltaflow-0.2.4}/deltaflow/inverse/__init__.py +0 -0
- {torchdeltaflow-0.2.3.dev23 → torchdeltaflow-0.2.4}/deltaflow/inverse/likelihood.py +0 -0
- {torchdeltaflow-0.2.3.dev23 → torchdeltaflow-0.2.4}/deltaflow/inverse/operators.py +0 -0
- {torchdeltaflow-0.2.3.dev23 → torchdeltaflow-0.2.4}/deltaflow/inverse/tweedie.py +0 -0
- {torchdeltaflow-0.2.3.dev23 → torchdeltaflow-0.2.4}/deltaflow/losses/__init__.py +0 -0
- {torchdeltaflow-0.2.3.dev23 → torchdeltaflow-0.2.4}/deltaflow/losses/conditional_flow_matching.py +0 -0
- {torchdeltaflow-0.2.3.dev23 → torchdeltaflow-0.2.4}/deltaflow/losses/delta_alignment.py +0 -0
- {torchdeltaflow-0.2.3.dev23 → torchdeltaflow-0.2.4}/deltaflow/losses/equilibrium_matching.py +0 -0
- {torchdeltaflow-0.2.3.dev23 → torchdeltaflow-0.2.4}/deltaflow/losses/flow_matching.py +0 -0
- {torchdeltaflow-0.2.3.dev23 → torchdeltaflow-0.2.4}/deltaflow/models/__init__.py +0 -0
- {torchdeltaflow-0.2.3.dev23 → torchdeltaflow-0.2.4}/deltaflow/models/backbone.py +0 -0
- {torchdeltaflow-0.2.3.dev23 → torchdeltaflow-0.2.4}/deltaflow/models/dit.py +0 -0
- {torchdeltaflow-0.2.3.dev23 → torchdeltaflow-0.2.4}/deltaflow/models/ema.py +0 -0
- {torchdeltaflow-0.2.3.dev23 → torchdeltaflow-0.2.4}/deltaflow/models/projector.py +0 -0
- {torchdeltaflow-0.2.3.dev23 → torchdeltaflow-0.2.4}/deltaflow/samplers/__init__.py +0 -0
- {torchdeltaflow-0.2.3.dev23 → torchdeltaflow-0.2.4}/deltaflow/samplers/euler.py +0 -0
- {torchdeltaflow-0.2.3.dev23 → torchdeltaflow-0.2.4}/deltaflow/solvers/__init__.py +0 -0
- {torchdeltaflow-0.2.3.dev23 → torchdeltaflow-0.2.4}/deltaflow/solvers/euler.py +0 -0
- {torchdeltaflow-0.2.3.dev23 → torchdeltaflow-0.2.4}/deltaflow/solvers/gradient_descent.py +0 -0
- {torchdeltaflow-0.2.3.dev23 → torchdeltaflow-0.2.4}/deltaflow/solvers/heun.py +0 -0
- {torchdeltaflow-0.2.3.dev23 → torchdeltaflow-0.2.4}/deltaflow/solvers/posterior_solver.py +0 -0
- {torchdeltaflow-0.2.3.dev23 → torchdeltaflow-0.2.4}/deltaflow/trainer/__init__.py +0 -0
- {torchdeltaflow-0.2.3.dev23 → torchdeltaflow-0.2.4}/deltaflow/trainer/coupling.py +0 -0
- {torchdeltaflow-0.2.3.dev23 → torchdeltaflow-0.2.4}/deltaflow/trainer/data.py +0 -0
- {torchdeltaflow-0.2.3.dev23 → torchdeltaflow-0.2.4}/deltaflow/trainer/loop.py +0 -0
- {torchdeltaflow-0.2.3.dev23 → torchdeltaflow-0.2.4}/deltaflow/utils/__init__.py +0 -0
- {torchdeltaflow-0.2.3.dev23 → torchdeltaflow-0.2.4}/deltaflow/utils/numerical.py +0 -0
- {torchdeltaflow-0.2.3.dev23 → torchdeltaflow-0.2.4}/deltaflow/utils/ot.py +0 -0
- {torchdeltaflow-0.2.3.dev23 → torchdeltaflow-0.2.4}/docs/api/core.md +0 -0
- {torchdeltaflow-0.2.3.dev23 → torchdeltaflow-0.2.4}/docs/api/datasets.md +0 -0
- {torchdeltaflow-0.2.3.dev23 → torchdeltaflow-0.2.4}/docs/api/index.md +0 -0
- {torchdeltaflow-0.2.3.dev23 → torchdeltaflow-0.2.4}/docs/api/interpolants.md +0 -0
- {torchdeltaflow-0.2.3.dev23 → torchdeltaflow-0.2.4}/docs/api/inverse.md +0 -0
- {torchdeltaflow-0.2.3.dev23 → torchdeltaflow-0.2.4}/docs/api/losses.md +0 -0
- {torchdeltaflow-0.2.3.dev23 → torchdeltaflow-0.2.4}/docs/api/models.md +0 -0
- {torchdeltaflow-0.2.3.dev23 → torchdeltaflow-0.2.4}/docs/api/samplers.md +0 -0
- {torchdeltaflow-0.2.3.dev23 → torchdeltaflow-0.2.4}/docs/api/solvers.md +0 -0
- {torchdeltaflow-0.2.3.dev23 → torchdeltaflow-0.2.4}/docs/api/trainer.md +0 -0
- {torchdeltaflow-0.2.3.dev23 → torchdeltaflow-0.2.4}/docs/api/utils.md +0 -0
- {torchdeltaflow-0.2.3.dev23 → torchdeltaflow-0.2.4}/docs/assets/algorithm-comparison/comparison.gif +0 -0
- {torchdeltaflow-0.2.3.dev23 → torchdeltaflow-0.2.4}/docs/assets/algorithm-comparison/comparison.png +0 -0
- {torchdeltaflow-0.2.3.dev23 → torchdeltaflow-0.2.4}/docs/assets/algorithm-comparison/trajectories_comparison.png +0 -0
- {torchdeltaflow-0.2.3.dev23 → torchdeltaflow-0.2.4}/docs/assets/css/extra.css +0 -0
- {torchdeltaflow-0.2.3.dev23 → torchdeltaflow-0.2.4}/docs/assets/equilibrium-matching/energy_landscape.png +0 -0
- {torchdeltaflow-0.2.3.dev23 → torchdeltaflow-0.2.4}/docs/assets/equilibrium-matching/eqm_sampling.gif +0 -0
- {torchdeltaflow-0.2.3.dev23 → torchdeltaflow-0.2.4}/docs/assets/equilibrium-matching/gd_snapshots.png +0 -0
- {torchdeltaflow-0.2.3.dev23 → torchdeltaflow-0.2.4}/docs/assets/equilibrium-matching/gd_trajectories.png +0 -0
- {torchdeltaflow-0.2.3.dev23 → torchdeltaflow-0.2.4}/docs/assets/favicon.ico +0 -0
- {torchdeltaflow-0.2.3.dev23 → torchdeltaflow-0.2.4}/docs/assets/favicon.png +0 -0
- {torchdeltaflow-0.2.3.dev23 → torchdeltaflow-0.2.4}/docs/assets/guidance-alignment/features.png +0 -0
- {torchdeltaflow-0.2.3.dev23 → torchdeltaflow-0.2.4}/docs/assets/inverse-posterior/inverse_posterior.gif +0 -0
- {torchdeltaflow-0.2.3.dev23 → torchdeltaflow-0.2.4}/docs/assets/inverse-posterior/inverse_posterior.png +0 -0
- {torchdeltaflow-0.2.3.dev23 → torchdeltaflow-0.2.4}/docs/assets/js/mathjax.js +0 -0
- {torchdeltaflow-0.2.3.dev23 → torchdeltaflow-0.2.4}/docs/assets/landmark-detection/landmark_detection.png +0 -0
- {torchdeltaflow-0.2.3.dev23 → torchdeltaflow-0.2.4}/docs/assets/logo.svg +0 -0
- {torchdeltaflow-0.2.3.dev23 → torchdeltaflow-0.2.4}/docs/assets/minibatch-ot/minibatch_ot.gif +0 -0
- {torchdeltaflow-0.2.3.dev23 → torchdeltaflow-0.2.4}/docs/assets/minibatch-ot/minibatch_ot.png +0 -0
- {torchdeltaflow-0.2.3.dev23 → torchdeltaflow-0.2.4}/docs/assets/sampling-flow/flow.gif +0 -0
- {torchdeltaflow-0.2.3.dev23 → torchdeltaflow-0.2.4}/docs/assets/sampling-flow/snapshots.png +0 -0
- {torchdeltaflow-0.2.3.dev23 → torchdeltaflow-0.2.4}/docs/assets/sampling-flow/trajectories.png +0 -0
- {torchdeltaflow-0.2.3.dev23 → torchdeltaflow-0.2.4}/docs/assets/sampling-flow/velocity_field.png +0 -0
- {torchdeltaflow-0.2.3.dev23 → torchdeltaflow-0.2.4}/docs/assets/schrodinger-bridge/bridge_paths.gif +0 -0
- {torchdeltaflow-0.2.3.dev23 → torchdeltaflow-0.2.4}/docs/assets/schrodinger-bridge/bridge_paths.png +0 -0
- {torchdeltaflow-0.2.3.dev23 → torchdeltaflow-0.2.4}/docs/assets/schrodinger-bridge/sb_flow.gif +0 -0
- {torchdeltaflow-0.2.3.dev23 → torchdeltaflow-0.2.4}/docs/assets/schrodinger-bridge/sb_snapshots.png +0 -0
- {torchdeltaflow-0.2.3.dev23 → torchdeltaflow-0.2.4}/docs/assets/schrodinger-bridge/sb_trajectories.png +0 -0
- {torchdeltaflow-0.2.3.dev23 → torchdeltaflow-0.2.4}/docs/concepts/architecture.md +0 -0
- {torchdeltaflow-0.2.3.dev23 → torchdeltaflow-0.2.4}/docs/contributing.md +0 -0
- {torchdeltaflow-0.2.3.dev23 → torchdeltaflow-0.2.4}/docs/examples.md +0 -0
- {torchdeltaflow-0.2.3.dev23 → torchdeltaflow-0.2.4}/docs/getting-started/installation.md +0 -0
- {torchdeltaflow-0.2.3.dev23 → torchdeltaflow-0.2.4}/docs/getting-started/quickstart.md +0 -0
- {torchdeltaflow-0.2.3.dev23 → torchdeltaflow-0.2.4}/docs/guides/delta-alignment.md +0 -0
- {torchdeltaflow-0.2.3.dev23 → torchdeltaflow-0.2.4}/docs/guides/flow-matching.md +0 -0
- {torchdeltaflow-0.2.3.dev23 → torchdeltaflow-0.2.4}/docs/guides/inverse-problems.md +0 -0
- {torchdeltaflow-0.2.3.dev23 → torchdeltaflow-0.2.4}/docs/guides/training.md +0 -0
- {torchdeltaflow-0.2.3.dev23 → torchdeltaflow-0.2.4}/docs/index.md +0 -0
- {torchdeltaflow-0.2.3.dev23 → torchdeltaflow-0.2.4}/examples/00-foundations/01-linear-interpolant/main.py +0 -0
- {torchdeltaflow-0.2.3.dev23 → torchdeltaflow-0.2.4}/examples/10-sampling/01-euler-flow/main.py +0 -0
- {torchdeltaflow-0.2.3.dev23 → torchdeltaflow-0.2.4}/examples/10-sampling/02-equilibrium-matching/main.py +0 -0
- {torchdeltaflow-0.2.3.dev23 → torchdeltaflow-0.2.4}/examples/20-training/01-flow-matching/main.py +0 -0
- {torchdeltaflow-0.2.3.dev23 → torchdeltaflow-0.2.4}/examples/20-training/02-delta-alignment/main.py +0 -0
- {torchdeltaflow-0.2.3.dev23 → torchdeltaflow-0.2.4}/examples/20-training/03-conditional-dit/main.py +0 -0
- {torchdeltaflow-0.2.3.dev23 → torchdeltaflow-0.2.4}/examples/30-inverse/01-posterior/main.py +0 -0
- {torchdeltaflow-0.2.3.dev23 → torchdeltaflow-0.2.4}/examples/90-showcase/01-landmark-viz/main.py +0 -0
- {torchdeltaflow-0.2.3.dev23 → torchdeltaflow-0.2.4}/examples/90-showcase/02-sampling-flow-viz/main.py +0 -0
- {torchdeltaflow-0.2.3.dev23 → torchdeltaflow-0.2.4}/examples/90-showcase/03-minibatch-ot-viz/main.py +0 -0
- {torchdeltaflow-0.2.3.dev23 → torchdeltaflow-0.2.4}/examples/90-showcase/04-inverse-posterior-viz/main.py +0 -0
- {torchdeltaflow-0.2.3.dev23 → torchdeltaflow-0.2.4}/examples/90-showcase/05-schrodinger-bridge-viz/main.py +0 -0
- {torchdeltaflow-0.2.3.dev23 → torchdeltaflow-0.2.4}/examples/90-showcase/06-algorithm-comparison/main.py +0 -0
- {torchdeltaflow-0.2.3.dev23 → torchdeltaflow-0.2.4}/examples/90-showcase/07-landmark-detection/main.py +0 -0
- {torchdeltaflow-0.2.3.dev23 → torchdeltaflow-0.2.4}/examples/90-showcase/08-guidance-alignment-pretraining/main.py +0 -0
- {torchdeltaflow-0.2.3.dev23 → torchdeltaflow-0.2.4}/examples/90-showcase/09-equilibrium-matching-viz/main.py +0 -0
- {torchdeltaflow-0.2.3.dev23 → torchdeltaflow-0.2.4}/examples/90-showcase/README.md +0 -0
- {torchdeltaflow-0.2.3.dev23 → torchdeltaflow-0.2.4}/mkdocs.yml +0 -0
- {torchdeltaflow-0.2.3.dev23 → torchdeltaflow-0.2.4}/overrides/main.html +0 -0
- {torchdeltaflow-0.2.3.dev23 → torchdeltaflow-0.2.4}/requirements-docs.txt +0 -0
- {torchdeltaflow-0.2.3.dev23 → torchdeltaflow-0.2.4}/requirements.txt +0 -0
- {torchdeltaflow-0.2.3.dev23 → torchdeltaflow-0.2.4}/setup.cfg +0 -0
- {torchdeltaflow-0.2.3.dev23 → torchdeltaflow-0.2.4}/tests/__init__.py +0 -0
- {torchdeltaflow-0.2.3.dev23 → torchdeltaflow-0.2.4}/tests/conftest.py +0 -0
- {torchdeltaflow-0.2.3.dev23 → torchdeltaflow-0.2.4}/tests/test_coupling.py +0 -0
- {torchdeltaflow-0.2.3.dev23 → torchdeltaflow-0.2.4}/tests/test_dit.py +0 -0
- {torchdeltaflow-0.2.3.dev23 → torchdeltaflow-0.2.4}/tests/test_equilibrium.py +0 -0
- {torchdeltaflow-0.2.3.dev23 → torchdeltaflow-0.2.4}/tests/test_interpolants.py +0 -0
- {torchdeltaflow-0.2.3.dev23 → torchdeltaflow-0.2.4}/tests/test_interpolants_new.py +0 -0
- {torchdeltaflow-0.2.3.dev23 → torchdeltaflow-0.2.4}/tests/test_inverse.py +0 -0
- {torchdeltaflow-0.2.3.dev23 → torchdeltaflow-0.2.4}/tests/test_losses.py +0 -0
- {torchdeltaflow-0.2.3.dev23 → torchdeltaflow-0.2.4}/tests/test_models.py +0 -0
- {torchdeltaflow-0.2.3.dev23 → torchdeltaflow-0.2.4}/tests/test_samplers.py +0 -0
- {torchdeltaflow-0.2.3.dev23 → torchdeltaflow-0.2.4}/tests/test_solvers.py +0 -0
- {torchdeltaflow-0.2.3.dev23 → torchdeltaflow-0.2.4}/tests/test_trainer.py +0 -0
- {torchdeltaflow-0.2.3.dev23 → torchdeltaflow-0.2.4}/torchdeltaflow.egg-info/SOURCES.txt +0 -0
- {torchdeltaflow-0.2.3.dev23 → torchdeltaflow-0.2.4}/torchdeltaflow.egg-info/dependency_links.txt +0 -0
- {torchdeltaflow-0.2.3.dev23 → torchdeltaflow-0.2.4}/torchdeltaflow.egg-info/requires.txt +0 -0
- {torchdeltaflow-0.2.3.dev23 → torchdeltaflow-0.2.4}/torchdeltaflow.egg-info/scm_file_list.json +0 -0
- {torchdeltaflow-0.2.3.dev23 → torchdeltaflow-0.2.4}/torchdeltaflow.egg-info/top_level.txt +0 -0
|
@@ -0,0 +1,175 @@
|
|
|
1
|
+
name: publish
|
|
2
|
+
|
|
3
|
+
# Automated tagging and release for torchdeltaflow.
|
|
4
|
+
#
|
|
5
|
+
# On every merge to main this pipeline cuts a new release:
|
|
6
|
+
#
|
|
7
|
+
# 1. update-tag derives the next semantic version from the latest tag and the
|
|
8
|
+
# merge-commit message (include "#major" or "#minor" to bump those
|
|
9
|
+
# components, otherwise the patch component bumps), then creates and pushes
|
|
10
|
+
# the "vX.Y.Z" tag. The tag is the single source of truth for the version,
|
|
11
|
+
# setuptools_scm derives the package version from it (distance 0 -> clean
|
|
12
|
+
# PEP 440 release, e.g. v0.2.3 -> "0.2.3").
|
|
13
|
+
#
|
|
14
|
+
# 2. release checks out that tag, builds and validates the sdist + wheel,
|
|
15
|
+
# runs the test suite, verifies the built version matches the tag, publishes
|
|
16
|
+
# to PyPI, and opens a GitHub Release whose notes come from the matching
|
|
17
|
+
# CHANGELOG.md section (falling back to GitHub's generated notes).
|
|
18
|
+
#
|
|
19
|
+
# Because the tag is pushed with the workflow's GITHUB_TOKEN, it does not
|
|
20
|
+
# recursively trigger this workflow, so there is no separate tag-push trigger.
|
|
21
|
+
# Use "Run workflow" (workflow_dispatch) to cut a release manually.
|
|
22
|
+
#
|
|
23
|
+
# Authentication uses a PyPI API token stored as the repository secret
|
|
24
|
+
# PYPI_API_TOKEN. Create the token at https://pypi.org/manage/account/token/
|
|
25
|
+
# (scope it to the torchdeltaflow project), then add it under
|
|
26
|
+
# Settings > Secrets and variables > Actions as PYPI_API_TOKEN.
|
|
27
|
+
|
|
28
|
+
on:
|
|
29
|
+
push:
|
|
30
|
+
branches: [main]
|
|
31
|
+
workflow_dispatch:
|
|
32
|
+
|
|
33
|
+
permissions:
|
|
34
|
+
contents: write
|
|
35
|
+
|
|
36
|
+
jobs:
|
|
37
|
+
update-tag:
|
|
38
|
+
runs-on: ubuntu-latest
|
|
39
|
+
outputs:
|
|
40
|
+
new_tag: ${{ steps.create_tag.outputs.new_tag }}
|
|
41
|
+
steps:
|
|
42
|
+
- uses: actions/checkout@v4
|
|
43
|
+
with:
|
|
44
|
+
# Need the full history and all tags to find the latest version.
|
|
45
|
+
fetch-depth: 0
|
|
46
|
+
fetch-tags: true
|
|
47
|
+
|
|
48
|
+
- name: Determine version bump from commit message
|
|
49
|
+
id: bump
|
|
50
|
+
run: |
|
|
51
|
+
message=$(git log -1 --pretty=%B)
|
|
52
|
+
if echo "$message" | grep -qiE '#major'; then
|
|
53
|
+
echo "type=major" >> "$GITHUB_OUTPUT"
|
|
54
|
+
elif echo "$message" | grep -qiE '#minor'; then
|
|
55
|
+
echo "type=minor" >> "$GITHUB_OUTPUT"
|
|
56
|
+
else
|
|
57
|
+
echo "type=patch" >> "$GITHUB_OUTPUT"
|
|
58
|
+
fi
|
|
59
|
+
|
|
60
|
+
- name: Compute and push the next tag
|
|
61
|
+
id: create_tag
|
|
62
|
+
run: |
|
|
63
|
+
latest_tag=$(git tag --list 'v*' --sort=-v:refname | head -n 1)
|
|
64
|
+
bump=${{ steps.bump.outputs.type }}
|
|
65
|
+
|
|
66
|
+
if [ -z "$latest_tag" ]; then
|
|
67
|
+
new_tag="v0.1.0"
|
|
68
|
+
else
|
|
69
|
+
version=${latest_tag#v}
|
|
70
|
+
IFS='.' read -r major minor patch <<< "$version"
|
|
71
|
+
case "$bump" in
|
|
72
|
+
major) major=$((major + 1)); minor=0; patch=0 ;;
|
|
73
|
+
minor) minor=$((minor + 1)); patch=0 ;;
|
|
74
|
+
patch) patch=$((patch + 1)) ;;
|
|
75
|
+
esac
|
|
76
|
+
new_tag="v${major}.${minor}.${patch}"
|
|
77
|
+
fi
|
|
78
|
+
|
|
79
|
+
if git rev-parse "$new_tag" >/dev/null 2>&1; then
|
|
80
|
+
echo "Tag $new_tag already exists, skipping tag creation."
|
|
81
|
+
else
|
|
82
|
+
git config user.name "github-actions[bot]"
|
|
83
|
+
git config user.email "github-actions[bot]@users.noreply.github.com"
|
|
84
|
+
git tag -a "$new_tag" -m "Release $new_tag"
|
|
85
|
+
git push origin "$new_tag"
|
|
86
|
+
fi
|
|
87
|
+
|
|
88
|
+
echo "new_tag=${new_tag}" >> "$GITHUB_OUTPUT"
|
|
89
|
+
echo "Release tag: ${new_tag}"
|
|
90
|
+
|
|
91
|
+
release:
|
|
92
|
+
needs: update-tag
|
|
93
|
+
runs-on: ubuntu-latest
|
|
94
|
+
environment:
|
|
95
|
+
name: pypi
|
|
96
|
+
url: https://pypi.org/project/torchdeltaflow/
|
|
97
|
+
steps:
|
|
98
|
+
- uses: actions/checkout@v4
|
|
99
|
+
with:
|
|
100
|
+
# Check out the freshly created tag so setuptools_scm resolves the
|
|
101
|
+
# version to the tag exactly (distance 0, no ".devN").
|
|
102
|
+
ref: ${{ needs.update-tag.outputs.new_tag }}
|
|
103
|
+
fetch-depth: 0
|
|
104
|
+
fetch-tags: true
|
|
105
|
+
|
|
106
|
+
- uses: actions/setup-python@v5
|
|
107
|
+
with:
|
|
108
|
+
python-version: "3.12"
|
|
109
|
+
|
|
110
|
+
- name: Build sdist and wheel
|
|
111
|
+
run: |
|
|
112
|
+
python -m pip install --upgrade pip build
|
|
113
|
+
python -m build
|
|
114
|
+
|
|
115
|
+
- name: Check distributions
|
|
116
|
+
run: |
|
|
117
|
+
python -m pip install --upgrade twine
|
|
118
|
+
python -m twine check dist/*
|
|
119
|
+
|
|
120
|
+
- name: Verify built version matches the tag
|
|
121
|
+
run: |
|
|
122
|
+
tag="${{ needs.update-tag.outputs.new_tag }}"
|
|
123
|
+
expected="${tag#v}"
|
|
124
|
+
built=$(ls dist/*.whl | sed -E 's#.*/torchdeltaflow-([^-]+)-.*#\1#')
|
|
125
|
+
echo "Tag version: ${expected}"
|
|
126
|
+
echo "Built version: ${built}"
|
|
127
|
+
if [ "$built" != "$expected" ]; then
|
|
128
|
+
echo "::error::Built version ${built} does not match tag ${expected}."
|
|
129
|
+
exit 1
|
|
130
|
+
fi
|
|
131
|
+
|
|
132
|
+
- name: Run tests
|
|
133
|
+
run: |
|
|
134
|
+
pip install -e ".[dev]"
|
|
135
|
+
pytest --cov=deltaflow
|
|
136
|
+
|
|
137
|
+
- name: Publish to PyPI
|
|
138
|
+
uses: pypa/gh-action-pypi-publish@release/v1
|
|
139
|
+
with:
|
|
140
|
+
password: ${{ secrets.PYPI_API_TOKEN }}
|
|
141
|
+
# A manual re-run against an already-published version should be a
|
|
142
|
+
# no-op rather than a hard failure.
|
|
143
|
+
skip-existing: true
|
|
144
|
+
|
|
145
|
+
- name: Extract release notes from CHANGELOG.md
|
|
146
|
+
env:
|
|
147
|
+
RELEASE_TAG: ${{ needs.update-tag.outputs.new_tag }}
|
|
148
|
+
run: |
|
|
149
|
+
awk -v ver="${RELEASE_TAG#v}" '
|
|
150
|
+
$0 ~ ("^## \\[" ver "\\]") {found=1; next}
|
|
151
|
+
/^## \[/ {found=0}
|
|
152
|
+
found
|
|
153
|
+
' CHANGELOG.md > release_body.md
|
|
154
|
+
echo "Release notes for ${RELEASE_TAG}:"
|
|
155
|
+
cat release_body.md
|
|
156
|
+
|
|
157
|
+
- name: Create GitHub Release
|
|
158
|
+
uses: actions/github-script@v7
|
|
159
|
+
env:
|
|
160
|
+
RELEASE_TAG: ${{ needs.update-tag.outputs.new_tag }}
|
|
161
|
+
with:
|
|
162
|
+
script: |
|
|
163
|
+
const fs = require('fs');
|
|
164
|
+
let body = '';
|
|
165
|
+
try { body = fs.readFileSync('release_body.md', 'utf8').trim(); } catch {}
|
|
166
|
+
await github.rest.repos.createRelease({
|
|
167
|
+
owner: context.repo.owner,
|
|
168
|
+
repo: context.repo.repo,
|
|
169
|
+
tag_name: process.env.RELEASE_TAG,
|
|
170
|
+
name: process.env.RELEASE_TAG,
|
|
171
|
+
body: body,
|
|
172
|
+
draft: false,
|
|
173
|
+
prerelease: false,
|
|
174
|
+
generate_release_notes: true,
|
|
175
|
+
});
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: torchdeltaflow
|
|
3
|
-
Version: 0.2.
|
|
3
|
+
Version: 0.2.4
|
|
4
4
|
Summary: Flow matching, mini-batch optimal transport coupling, and posterior sampling for inverse problems in PyTorch
|
|
5
5
|
Author-email: Phrugsa Limbunlom <phrugsa.lim@gmail.com>
|
|
6
6
|
Maintainer-email: Phrugsa Limbunlom <phrugsa.lim@gmail.com>
|
|
@@ -93,7 +93,7 @@ Dynamic: license-file
|
|
|
93
93
|
<img alt="GitHub Stars" src="https://img.shields.io/github/stars/phrugsa-limbunlom/deltaflow?style=social">
|
|
94
94
|
</a>
|
|
95
95
|
<a href="https://deepwiki.com/phrugsa-limbunlom/deltaflow" target="_blank" title="Ask DeepWiki">
|
|
96
|
-
<img alt="Ask DeepWiki" src="https://deepwiki.com/badge.svg">
|
|
96
|
+
<img alt="Ask DeepWiki" src="https://deepwiki.com/badge.svg?v=1">
|
|
97
97
|
</a>
|
|
98
98
|
<a href="https://github.com/phrugsa-limbunlom/deltaflow/actions/workflows/ci.yml" target="_blank" title="Build Status">
|
|
99
99
|
<img alt="Build Status" src="https://img.shields.io/github/actions/workflow/status/phrugsa-limbunlom/deltaflow/ci.yml?branch=main&style=flat-square&label=build&color=3f9e73">
|
|
@@ -16,7 +16,7 @@
|
|
|
16
16
|
<img alt="GitHub Stars" src="https://img.shields.io/github/stars/phrugsa-limbunlom/deltaflow?style=social">
|
|
17
17
|
</a>
|
|
18
18
|
<a href="https://deepwiki.com/phrugsa-limbunlom/deltaflow" target="_blank" title="Ask DeepWiki">
|
|
19
|
-
<img alt="Ask DeepWiki" src="https://deepwiki.com/badge.svg">
|
|
19
|
+
<img alt="Ask DeepWiki" src="https://deepwiki.com/badge.svg?v=1">
|
|
20
20
|
</a>
|
|
21
21
|
<a href="https://github.com/phrugsa-limbunlom/deltaflow/actions/workflows/ci.yml" target="_blank" title="Build Status">
|
|
22
22
|
<img alt="Build Status" src="https://img.shields.io/github/actions/workflow/status/phrugsa-limbunlom/deltaflow/ci.yml?branch=main&style=flat-square&label=build&color=3f9e73">
|
|
@@ -103,10 +103,11 @@ include = ["deltaflow*"]
|
|
|
103
103
|
# Auto-derive the version from the nearest git tag (e.g. v0.1.0 -> 0.1.0).
|
|
104
104
|
# Falls back to "0.0.0.dev0" only when the tree has no tags at all.
|
|
105
105
|
fallback_version = "0.0.0.dev0"
|
|
106
|
-
# Drop the "+g<hash>" local segment. PyPI rejects local versions, so
|
|
107
|
-
#
|
|
108
|
-
#
|
|
109
|
-
#
|
|
106
|
+
# Drop the "+g<hash>" local segment. PyPI rejects local versions, so any
|
|
107
|
+
# untagged build (e.g. a local editable install between releases) still yields
|
|
108
|
+
# a clean PEP 440 dev version like "0.2.3.dev4" instead of "0.2.3.dev4+g1a2b3c4".
|
|
109
|
+
# Released builds are unaffected (the publish workflow checks out the fresh tag,
|
|
110
|
+
# so distance is 0 and the version is exactly the tag, e.g. "0.2.3").
|
|
110
111
|
local_scheme = "no-local-version"
|
|
111
112
|
|
|
112
113
|
[tool.pytest.ini_options]
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: torchdeltaflow
|
|
3
|
-
Version: 0.2.
|
|
3
|
+
Version: 0.2.4
|
|
4
4
|
Summary: Flow matching, mini-batch optimal transport coupling, and posterior sampling for inverse problems in PyTorch
|
|
5
5
|
Author-email: Phrugsa Limbunlom <phrugsa.lim@gmail.com>
|
|
6
6
|
Maintainer-email: Phrugsa Limbunlom <phrugsa.lim@gmail.com>
|
|
@@ -93,7 +93,7 @@ Dynamic: license-file
|
|
|
93
93
|
<img alt="GitHub Stars" src="https://img.shields.io/github/stars/phrugsa-limbunlom/deltaflow?style=social">
|
|
94
94
|
</a>
|
|
95
95
|
<a href="https://deepwiki.com/phrugsa-limbunlom/deltaflow" target="_blank" title="Ask DeepWiki">
|
|
96
|
-
<img alt="Ask DeepWiki" src="https://deepwiki.com/badge.svg">
|
|
96
|
+
<img alt="Ask DeepWiki" src="https://deepwiki.com/badge.svg?v=1">
|
|
97
97
|
</a>
|
|
98
98
|
<a href="https://github.com/phrugsa-limbunlom/deltaflow/actions/workflows/ci.yml" target="_blank" title="Build Status">
|
|
99
99
|
<img alt="Build Status" src="https://img.shields.io/github/actions/workflow/status/phrugsa-limbunlom/deltaflow/ci.yml?branch=main&style=flat-square&label=build&color=3f9e73">
|
|
@@ -1,78 +0,0 @@
|
|
|
1
|
-
name: publish
|
|
2
|
-
|
|
3
|
-
# Publishes torchdeltaflow to PyPI in two cases:
|
|
4
|
-
#
|
|
5
|
-
# 1. A version tag (e.g. v0.2.2) is pushed -> a stable release. The version is
|
|
6
|
-
# derived from the tag by setuptools_scm, so the tag is the single source
|
|
7
|
-
# of truth. To cut a release, run:
|
|
8
|
-
#
|
|
9
|
-
# git tag v0.2.2
|
|
10
|
-
# git push origin v0.2.2
|
|
11
|
-
#
|
|
12
|
-
# 2. A pull request is merged into main -> a dev pre-release. setuptools_scm
|
|
13
|
-
# derives a clean PEP 440 version from the commit distance to the last tag
|
|
14
|
-
# (e.g. "0.2.3.dev4"), which is unique per merge. "skip-existing" below
|
|
15
|
-
# guards against the rare case where the same version was already uploaded.
|
|
16
|
-
#
|
|
17
|
-
# Authentication uses a PyPI API token stored as the repository secret
|
|
18
|
-
# PYPI_API_TOKEN. Create the token at https://pypi.org/manage/account/token/
|
|
19
|
-
# (scope it to the torchdeltaflow project), then add it under
|
|
20
|
-
# Settings > Secrets and variables > Actions as PYPI_API_TOKEN.
|
|
21
|
-
|
|
22
|
-
on:
|
|
23
|
-
push:
|
|
24
|
-
tags:
|
|
25
|
-
- "v*"
|
|
26
|
-
pull_request:
|
|
27
|
-
branches: [main]
|
|
28
|
-
types: [closed]
|
|
29
|
-
|
|
30
|
-
permissions:
|
|
31
|
-
contents: read
|
|
32
|
-
|
|
33
|
-
jobs:
|
|
34
|
-
build:
|
|
35
|
-
# Run for pushed version tags, or when a PR is actually merged (not just
|
|
36
|
-
# closed). Plain "closed" without merge must not publish.
|
|
37
|
-
if: github.event_name == 'push' || github.event.pull_request.merged == true
|
|
38
|
-
runs-on: ubuntu-latest
|
|
39
|
-
steps:
|
|
40
|
-
- uses: actions/checkout@v4
|
|
41
|
-
with:
|
|
42
|
-
# setuptools_scm needs the full history and tags to derive the version.
|
|
43
|
-
fetch-depth: 0
|
|
44
|
-
fetch-tags: true
|
|
45
|
-
- uses: actions/setup-python@v5
|
|
46
|
-
with:
|
|
47
|
-
python-version: "3.12"
|
|
48
|
-
- name: Build sdist and wheel
|
|
49
|
-
run: |
|
|
50
|
-
python -m pip install --upgrade pip build
|
|
51
|
-
python -m build
|
|
52
|
-
- name: Check distributions
|
|
53
|
-
run: |
|
|
54
|
-
python -m pip install --upgrade twine
|
|
55
|
-
python -m twine check dist/*
|
|
56
|
-
- uses: actions/upload-artifact@v4
|
|
57
|
-
with:
|
|
58
|
-
name: dist
|
|
59
|
-
path: dist/
|
|
60
|
-
|
|
61
|
-
publish:
|
|
62
|
-
needs: build
|
|
63
|
-
runs-on: ubuntu-latest
|
|
64
|
-
environment:
|
|
65
|
-
name: pypi
|
|
66
|
-
url: https://pypi.org/project/torchdeltaflow/
|
|
67
|
-
steps:
|
|
68
|
-
- uses: actions/download-artifact@v4
|
|
69
|
-
with:
|
|
70
|
-
name: dist
|
|
71
|
-
path: dist/
|
|
72
|
-
- name: Publish to PyPI
|
|
73
|
-
uses: pypa/gh-action-pypi-publish@release/v1
|
|
74
|
-
with:
|
|
75
|
-
password: ${{ secrets.PYPI_API_TOKEN }}
|
|
76
|
-
# Merge builds may reproduce an existing dev version if no new commits
|
|
77
|
-
# changed the distance to the last tag. Skip rather than fail.
|
|
78
|
-
skip-existing: true
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{torchdeltaflow-0.2.3.dev23 → torchdeltaflow-0.2.4}/deltaflow/core/base_equilibrium_field.py
RENAMED
|
File without changes
|
{torchdeltaflow-0.2.3.dev23 → torchdeltaflow-0.2.4}/deltaflow/core/base_equilibrium_interpolant.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{torchdeltaflow-0.2.3.dev23 → torchdeltaflow-0.2.4}/deltaflow/interpolants/schrodinger_bridge.py
RENAMED
|
File without changes
|
{torchdeltaflow-0.2.3.dev23 → torchdeltaflow-0.2.4}/deltaflow/interpolants/variance_preserving.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{torchdeltaflow-0.2.3.dev23 → torchdeltaflow-0.2.4}/deltaflow/losses/conditional_flow_matching.py
RENAMED
|
File without changes
|
|
File without changes
|
{torchdeltaflow-0.2.3.dev23 → torchdeltaflow-0.2.4}/deltaflow/losses/equilibrium_matching.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{torchdeltaflow-0.2.3.dev23 → torchdeltaflow-0.2.4}/docs/assets/algorithm-comparison/comparison.gif
RENAMED
|
File without changes
|
{torchdeltaflow-0.2.3.dev23 → torchdeltaflow-0.2.4}/docs/assets/algorithm-comparison/comparison.png
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{torchdeltaflow-0.2.3.dev23 → torchdeltaflow-0.2.4}/docs/assets/guidance-alignment/features.png
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{torchdeltaflow-0.2.3.dev23 → torchdeltaflow-0.2.4}/docs/assets/minibatch-ot/minibatch_ot.gif
RENAMED
|
File without changes
|
{torchdeltaflow-0.2.3.dev23 → torchdeltaflow-0.2.4}/docs/assets/minibatch-ot/minibatch_ot.png
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{torchdeltaflow-0.2.3.dev23 → torchdeltaflow-0.2.4}/docs/assets/sampling-flow/trajectories.png
RENAMED
|
File without changes
|
{torchdeltaflow-0.2.3.dev23 → torchdeltaflow-0.2.4}/docs/assets/sampling-flow/velocity_field.png
RENAMED
|
File without changes
|
{torchdeltaflow-0.2.3.dev23 → torchdeltaflow-0.2.4}/docs/assets/schrodinger-bridge/bridge_paths.gif
RENAMED
|
File without changes
|
{torchdeltaflow-0.2.3.dev23 → torchdeltaflow-0.2.4}/docs/assets/schrodinger-bridge/bridge_paths.png
RENAMED
|
File without changes
|
{torchdeltaflow-0.2.3.dev23 → torchdeltaflow-0.2.4}/docs/assets/schrodinger-bridge/sb_flow.gif
RENAMED
|
File without changes
|
{torchdeltaflow-0.2.3.dev23 → torchdeltaflow-0.2.4}/docs/assets/schrodinger-bridge/sb_snapshots.png
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{torchdeltaflow-0.2.3.dev23 → torchdeltaflow-0.2.4}/examples/10-sampling/01-euler-flow/main.py
RENAMED
|
File without changes
|
|
File without changes
|
{torchdeltaflow-0.2.3.dev23 → torchdeltaflow-0.2.4}/examples/20-training/01-flow-matching/main.py
RENAMED
|
File without changes
|
{torchdeltaflow-0.2.3.dev23 → torchdeltaflow-0.2.4}/examples/20-training/02-delta-alignment/main.py
RENAMED
|
File without changes
|
{torchdeltaflow-0.2.3.dev23 → torchdeltaflow-0.2.4}/examples/20-training/03-conditional-dit/main.py
RENAMED
|
File without changes
|
{torchdeltaflow-0.2.3.dev23 → torchdeltaflow-0.2.4}/examples/30-inverse/01-posterior/main.py
RENAMED
|
File without changes
|
{torchdeltaflow-0.2.3.dev23 → torchdeltaflow-0.2.4}/examples/90-showcase/01-landmark-viz/main.py
RENAMED
|
File without changes
|
|
File without changes
|
{torchdeltaflow-0.2.3.dev23 → torchdeltaflow-0.2.4}/examples/90-showcase/03-minibatch-ot-viz/main.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{torchdeltaflow-0.2.3.dev23 → torchdeltaflow-0.2.4}/torchdeltaflow.egg-info/dependency_links.txt
RENAMED
|
File without changes
|
|
File without changes
|
{torchdeltaflow-0.2.3.dev23 → torchdeltaflow-0.2.4}/torchdeltaflow.egg-info/scm_file_list.json
RENAMED
|
File without changes
|
|
File without changes
|