Skip to content

Commit f8e27cc

Browse files
committed
Add CHANGELOG.md and version 0.9.0
- Add CHANGELOG.md following Keep a Changelog format - Add DEVELOPMENT.md with project maintenance guidelines - Update version to 0.9.0 in _version.py and pyproject.toml - Add changelog link to README and docs navigation - Add changelog maintenance guidelines to CONTRIBUTING.md
1 parent 502b7e0 commit f8e27cc

8 files changed

Lines changed: 223 additions & 11 deletions

File tree

CHANGELOG.md

Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
# Changelog
2+
3+
All notable changes to this project will be documented in this file.
4+
5+
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
6+
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7+
8+
## [Unreleased]
9+
10+
## [0.9.0] - 2026-01-11
11+
12+
### Added
13+
- Initial release of Tempest
14+
- Persistent Sampling (PS) algorithm implementation for accelerated Bayesian inference
15+
- Hierarchical Gaussian mixture clustering for multimodal distributions
16+
- MCMC proposal mechanisms with periodic and reflective boundary conditions
17+
- Multiprocessing and MPI parallelization support
18+
- Vectorized likelihood calculations for improved performance
19+
- State saving and loading functionality
20+
- Weighted posterior sample generation with trimming options
21+
- Bayesian model evidence (logZ) estimation with uncertainty
22+
- Multivariate Student's t-distribution fitting for heavy-tailed posteriors
23+
- Normalizing flow training for adaptive proposals
24+
- Dynamic ESS threshold adjustment
25+
- Effective and unique sample size metrics
26+
- Blobs support for storing additional likelihood data
27+
28+
### Changed
29+
- Migrated from setup.py/setup.cfg to pyproject.toml for modern packaging
30+
- Removed torch from requirements (Python-only implementation)
31+
32+
### Dependencies
33+
- numpy>=1.20.0
34+
- tqdm>=4.60.0
35+
- scipy>=1.4.0
36+
- dill>=0.3.8
37+
- multiprocess>=0.70.15
38+
39+
### Platform
40+
- Python 3.8+
41+
42+
### Testing
43+
- Unit tests for core functionality (1,251 lines of tests)
44+
- Integration tests for sampler features
45+
- Edge case and state management tests
46+
- CI/CD pipeline with Python 3.8-3.11 testing
47+
48+
[Unreleased]: https://github.com/minaskar/tempest/compare/v0.9.0...HEAD
49+
[0.9.0]: https://github.com/minaskar/tempest/releases/tag/v0.9.0

CONTRIBUTING.md

Lines changed: 19 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -11,9 +11,8 @@ responsive, I don't always get to every issue immediately.
1111
[Issues](https://github.com/minaskar/tempest/issues). If you're unable to find an
1212
open issue addressing the problem, [open a new
1313
one](https://github.com/minaskar/tempest/issues/new). Be sure to include a **title
14-
and clear description**, as much relevant information as possible, and the
15-
simplest possible **code sample** demonstrating the expected behavior that is
16-
not occurring.
14+
and clear description**, as much relevant information as possible, and the **simplest possible
15+
**code sample** demonstrating the expected behavior that is not occurring.
1716

1817
### Did you write a patch that fixes a bug?
1918

@@ -24,10 +23,26 @@ if applicable.
2423
### Do you intend to add a new feature or change an existing one?
2524

2625
First, [open a new issue](https://github.com/minaskar/tempest/issues/new) and
27-
clearly describe your idea. We will then let you know if what you suggest
26+
clearly describe your idea. We will then let you know if what you suggest
2827
aligns with the vision of Tempest. This way you might avoid doing unnecessary
2928
work and might even find some help from other people.
3029

30+
### Updating the Changelog
31+
32+
When contributing changes to Tempest, please update `CHANGELOG.md`:
33+
34+
1. Add entries to the `[Unreleased]` section
35+
2. Use the appropriate category:
36+
- `Added` for new features
37+
- `Changed` for changes in existing functionality
38+
- `Deprecated` for soon-to-be removed features
39+
- `Removed` for now removed features
40+
- `Fixed` for bug fixes
41+
- `Security` for security vulnerability fixes
42+
3. Provide clear, user-friendly descriptions of changes
43+
44+
The changelog follows the [Keep a Changelog](https://keepachangelog.com) format.
45+
3146
Cheers,
3247

3348
Minas

DEVELOPMENT.md

Lines changed: 139 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,139 @@
1+
# Development Guide
2+
3+
This guide covers the development workflow and best practices for maintaining Tempest.
4+
5+
## Changelog Maintenance
6+
7+
The changelog follows the [Keep a Changelog](https://keepachangelog.com) format and documents all notable changes to the project.
8+
9+
### When to Update
10+
11+
Update `CHANGELOG.md` when:
12+
- Adding new features
13+
- Changing existing functionality
14+
- Fixing bugs
15+
- Deprecating or removing features
16+
- Addressing security vulnerabilities
17+
18+
### Adding Entries
19+
20+
1. Add entries to the `[Unreleased]` section at the top of `CHANGELOG.md`
21+
2. Use appropriate category:
22+
- **Added**: New features
23+
- **Changed**: Changes in existing functionality
24+
- **Deprecated**: Soon-to-be removed features
25+
- **Removed**: Now removed features
26+
- **Fixed**: Bug fixes
27+
- **Security**: Security vulnerability fixes
28+
29+
3. Provide clear, user-friendly descriptions:
30+
```markdown
31+
### Added
32+
- Support for custom proposal distributions
33+
- New method for computing posterior summaries
34+
35+
### Fixed
36+
- Fixed memory leak in parallel MCMC sampling
37+
- Corrected handling of NaN values in likelihood
38+
```
39+
40+
### Release Process
41+
42+
1. Update version in `tempest/_version.py`
43+
2. Move `[Unreleased]` entries to new version section:
44+
```markdown
45+
## [1.1.0] - 2026-01-15
46+
47+
### Added
48+
- (moved from Unreleased)
49+
```
50+
3. Add release date in ISO 8601 format (YYYY-MM-DD)
51+
4. Create git tag:
52+
```bash
53+
git tag v1.1.0
54+
git push origin v1.1.0
55+
```
56+
5. Push to main branch to trigger release workflow in `.github/workflows/release_to_pypi.yml`
57+
6. Create new `[Unreleased]` section for next version
58+
59+
### Version Links
60+
61+
After creating a release tag, update the version links at the bottom of `CHANGELOG.md`:
62+
```markdown
63+
[Unreleased]: https://github.com/minaskar/tempest/compare/v1.1.0...HEAD
64+
[1.1.0]: https://github.com/minaskar/tempest/releases/tag/v1.1.0
65+
[1.0.0]: https://github.com/minaskar/tempest/releases/tag/v1.0.0
66+
```
67+
68+
## Testing
69+
70+
### Running Tests
71+
72+
```bash
73+
# Run all tests
74+
python -m unittest discover tests
75+
76+
# Run specific test file
77+
python -m unittest tests.test_sampler
78+
79+
# Run with pytest (if installed)
80+
pytest tests/
81+
```
82+
83+
### Test Coverage
84+
85+
Ensure new features include corresponding tests. Test files are in the `tests/` directory.
86+
87+
## Code Style
88+
89+
Tempest uses the following conventions:
90+
- Type hints where appropriate (Python 3.8+)
91+
- Docstrings following NumPy style
92+
- PEP 8 formatting
93+
94+
## Dependencies
95+
96+
Core dependencies are defined in:
97+
- `pyproject.toml` (project dependencies)
98+
- `requirements.txt` (simplified list)
99+
100+
When adding new dependencies:
101+
1. Update both `pyproject.toml` and `requirements.txt`
102+
2. Consider impact on existing users
103+
3. Document in changelog
104+
105+
## Documentation
106+
107+
Documentation is built using MkDocs. To build locally:
108+
109+
```bash
110+
# Install docs requirements
111+
pip install -r docs/requirements.txt
112+
113+
# Serve docs
114+
mkdocs serve
115+
116+
# Build docs
117+
mkdocs build
118+
```
119+
120+
## Pull Requests
121+
122+
When submitting a PR:
123+
1. Update CHANGELOG.md with relevant entries
124+
2. Add or update tests
125+
3. Ensure all tests pass
126+
4. Update documentation if needed
127+
5. Reference any related issues
128+
129+
## Release Checklist
130+
131+
Before creating a release:
132+
- [ ] Update version number in `tempest/_version.py`
133+
- [ ] Update CHANGELOG.md with all changes
134+
- [ ] Ensure all tests pass
135+
- [ ] Update documentation if needed
136+
- [ ] Tag release with `git tag v{version}`
137+
- [ ] Push tag to trigger PyPI release
138+
- [ ] Verify release on PyPI
139+
- [ ] Update GitHub Release notes (manual step)

README.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ in cosmology and astronomy, ``Tempest`` is user-friendly, flexible, and actively
1919

2020
## Documentation
2121

22-
Read the docs at [tempest.readthedocs.io](https://tempest.readthedocs.io) for more information, examples and tutorials.
22+
Read the docs at [tempest.readthedocs.io](https://tempest.readthedocs.io) for more information, examples and tutorials. For a detailed list of changes, see the [CHANGELOG.md](https://github.com/minaskar/tempest/blob/main/CHANGELOG.md).
2323

2424
## Installation
2525

@@ -42,7 +42,7 @@ python setup.py install
4242
For instance, if you wanted to draw samples from a 10-dimensional Rosenbrock distribution with a uniform prior, you would do something like:
4343

4444
```python
45-
import tempest as pc
45+
import tempest as tp
4646
import numpy as np
4747

4848
n_dim = 10 # Number of dimensions
@@ -57,7 +57,7 @@ def log_likelihood(x):
5757
+ (x[:,::2] - 1.0)**2.0, axis=1)
5858

5959
# Create and run sampler
60-
sampler = pc.Sampler(
60+
sampler = tp.Sampler(
6161
prior_transform=prior_transform,
6262
log_likelihood=log_likelihood,
6363
n_dim=n_dim,

docs/index.md

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ Tempest is ideal for:
3939
Here's a simple example showing how to sample from a 10-dimensional Rosenbrock distribution:
4040

4141
```python
42-
import tempest as pc
42+
import tempest as tp
4343
import numpy as np
4444
from scipy.stats import uniform
4545

@@ -55,7 +55,7 @@ def log_likelihood(x):
5555
+ (x[:, ::2] - 1.0)**2.0, axis=1)
5656

5757
# Create the sampler
58-
sampler = pc.Sampler(
58+
sampler = tp.Sampler(
5959
prior_transform=prior_transform,
6060
log_likelihood=log_likelihood,
6161
n_dim=n_dim,
@@ -130,6 +130,14 @@ See the [Installation Guide](installation.md) for more details.
130130

131131
[:octicons-arrow-right-24: Examples](examples/rosenbrock.md)
132132

133+
- :material-history:{ .lg .middle } **Changelog**
134+
135+
---
136+
137+
Detailed history of changes for each version
138+
139+
[:octicons-arrow-right-24: Changelog](https://github.com/minaskar/tempest/blob/main/CHANGELOG.md)
140+
133141
</div>
134142

135143
---

mkdocs.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -105,3 +105,4 @@ nav:
105105
- Tools: api/tools.md
106106
- Clustering: api/cluster.md
107107
- Citation: citation.md
108+
- Changelog: https://github.com/minaskar/tempest/blob/main/CHANGELOG.md

pyproject.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
44

55
[project]
66
name = "tempest"
7-
version = "1.0.0"
7+
version = "0.9.0"
88
authors = [
99
{name = "Minas Karamanis", email = "minaskar@gmail.com"},
1010
]

tempest/_version.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
version = "1.0.0"
1+
version = "0.9.0"

0 commit comments

Comments
 (0)