alberta-framework 0.3.0__tar.gz → 0.3.2__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.
- {alberta_framework-0.3.0 → alberta_framework-0.3.2}/CLAUDE.md +5 -0
- {alberta_framework-0.3.0 → alberta_framework-0.3.2}/PKG-INFO +1 -1
- {alberta_framework-0.3.0 → alberta_framework-0.3.2}/pyproject.toml +3 -1
- {alberta_framework-0.3.0 → alberta_framework-0.3.2}/src/alberta_framework/core/types.py +1 -1
- {alberta_framework-0.3.0 → alberta_framework-0.3.2}/tests/test_learners.py +4 -4
- {alberta_framework-0.3.0 → alberta_framework-0.3.2}/.github/workflows/ci.yml +0 -0
- {alberta_framework-0.3.0 → alberta_framework-0.3.2}/.github/workflows/docs.yml +0 -0
- {alberta_framework-0.3.0 → alberta_framework-0.3.2}/.github/workflows/publish.yml +0 -0
- {alberta_framework-0.3.0 → alberta_framework-0.3.2}/.gitignore +0 -0
- {alberta_framework-0.3.0 → alberta_framework-0.3.2}/ALBERTA_PLAN.md +0 -0
- {alberta_framework-0.3.0 → alberta_framework-0.3.2}/CHANGELOG.md +0 -0
- {alberta_framework-0.3.0 → alberta_framework-0.3.2}/LICENSE +0 -0
- {alberta_framework-0.3.0 → alberta_framework-0.3.2}/README.md +0 -0
- {alberta_framework-0.3.0 → alberta_framework-0.3.2}/ROADMAP.md +0 -0
- {alberta_framework-0.3.0 → alberta_framework-0.3.2}/docs/contributing.md +0 -0
- {alberta_framework-0.3.0 → alberta_framework-0.3.2}/docs/gen_ref_pages.py +0 -0
- {alberta_framework-0.3.0 → alberta_framework-0.3.2}/docs/getting-started/installation.md +0 -0
- {alberta_framework-0.3.0 → alberta_framework-0.3.2}/docs/getting-started/quickstart.md +0 -0
- {alberta_framework-0.3.0 → alberta_framework-0.3.2}/docs/guide/concepts.md +0 -0
- {alberta_framework-0.3.0 → alberta_framework-0.3.2}/docs/guide/experiments.md +0 -0
- {alberta_framework-0.3.0 → alberta_framework-0.3.2}/docs/guide/gymnasium.md +0 -0
- {alberta_framework-0.3.0 → alberta_framework-0.3.2}/docs/guide/optimizers.md +0 -0
- {alberta_framework-0.3.0 → alberta_framework-0.3.2}/docs/guide/streams.md +0 -0
- {alberta_framework-0.3.0 → alberta_framework-0.3.2}/docs/index.md +0 -0
- {alberta_framework-0.3.0 → alberta_framework-0.3.2}/docs/javascripts/mathjax.js +0 -0
- {alberta_framework-0.3.0 → alberta_framework-0.3.2}/examples/The Alberta Plan/Step1/README.md +0 -0
- {alberta_framework-0.3.0 → alberta_framework-0.3.2}/examples/The Alberta Plan/Step1/autostep_comparison.py +0 -0
- {alberta_framework-0.3.0 → alberta_framework-0.3.2}/examples/The Alberta Plan/Step1/external_normalization_study.py +0 -0
- {alberta_framework-0.3.0 → alberta_framework-0.3.2}/examples/The Alberta Plan/Step1/idbd_lms_autostep_comparison.py +0 -0
- {alberta_framework-0.3.0 → alberta_framework-0.3.2}/examples/The Alberta Plan/Step1/normalization_study.py +0 -0
- {alberta_framework-0.3.0 → alberta_framework-0.3.2}/examples/The Alberta Plan/Step1/sutton1992_experiment1.py +0 -0
- {alberta_framework-0.3.0 → alberta_framework-0.3.2}/examples/The Alberta Plan/Step1/sutton1992_experiment2.py +0 -0
- {alberta_framework-0.3.0 → alberta_framework-0.3.2}/examples/gymnasium_reward_prediction.py +0 -0
- {alberta_framework-0.3.0 → alberta_framework-0.3.2}/examples/publication_experiment.py +0 -0
- {alberta_framework-0.3.0 → alberta_framework-0.3.2}/examples/td_cartpole_lms.py +0 -0
- {alberta_framework-0.3.0 → alberta_framework-0.3.2}/mkdocs.yml +0 -0
- {alberta_framework-0.3.0 → alberta_framework-0.3.2}/papers/mahmood-msc-thesis-summary.md +0 -0
- {alberta_framework-0.3.0 → alberta_framework-0.3.2}/src/alberta_framework/__init__.py +0 -0
- {alberta_framework-0.3.0 → alberta_framework-0.3.2}/src/alberta_framework/core/__init__.py +0 -0
- {alberta_framework-0.3.0 → alberta_framework-0.3.2}/src/alberta_framework/core/learners.py +0 -0
- {alberta_framework-0.3.0 → alberta_framework-0.3.2}/src/alberta_framework/core/normalizers.py +0 -0
- {alberta_framework-0.3.0 → alberta_framework-0.3.2}/src/alberta_framework/core/optimizers.py +0 -0
- {alberta_framework-0.3.0 → alberta_framework-0.3.2}/src/alberta_framework/py.typed +0 -0
- {alberta_framework-0.3.0 → alberta_framework-0.3.2}/src/alberta_framework/streams/__init__.py +0 -0
- {alberta_framework-0.3.0 → alberta_framework-0.3.2}/src/alberta_framework/streams/base.py +0 -0
- {alberta_framework-0.3.0 → alberta_framework-0.3.2}/src/alberta_framework/streams/gymnasium.py +0 -0
- {alberta_framework-0.3.0 → alberta_framework-0.3.2}/src/alberta_framework/streams/synthetic.py +0 -0
- {alberta_framework-0.3.0 → alberta_framework-0.3.2}/src/alberta_framework/utils/__init__.py +0 -0
- {alberta_framework-0.3.0 → alberta_framework-0.3.2}/src/alberta_framework/utils/experiments.py +0 -0
- {alberta_framework-0.3.0 → alberta_framework-0.3.2}/src/alberta_framework/utils/export.py +0 -0
- {alberta_framework-0.3.0 → alberta_framework-0.3.2}/src/alberta_framework/utils/metrics.py +0 -0
- {alberta_framework-0.3.0 → alberta_framework-0.3.2}/src/alberta_framework/utils/statistics.py +0 -0
- {alberta_framework-0.3.0 → alberta_framework-0.3.2}/src/alberta_framework/utils/timing.py +0 -0
- {alberta_framework-0.3.0 → alberta_framework-0.3.2}/src/alberta_framework/utils/visualization.py +0 -0
- {alberta_framework-0.3.0 → alberta_framework-0.3.2}/tests/conftest.py +0 -0
- {alberta_framework-0.3.0 → alberta_framework-0.3.2}/tests/test_gymnasium_streams.py +0 -0
- {alberta_framework-0.3.0 → alberta_framework-0.3.2}/tests/test_normalizers.py +0 -0
- {alberta_framework-0.3.0 → alberta_framework-0.3.2}/tests/test_optimizers.py +0 -0
- {alberta_framework-0.3.0 → alberta_framework-0.3.2}/tests/test_streams.py +0 -0
|
@@ -470,6 +470,11 @@ The publish workflow uses OpenID Connect (no API tokens). Configure on PyPI:
|
|
|
470
470
|
|
|
471
471
|
## Changelog
|
|
472
472
|
|
|
473
|
+
### v0.3.2 (2026-02-03)
|
|
474
|
+
- **FIX**: Relaxed test tolerance in batched vs sequential comparison tests (`rtol=1e-5`) to account for floating-point differences between vmap and sequential execution paths
|
|
475
|
+
- **FIX**: Added `ignore = ["F722"]` to ruff config for jaxtyping shape annotation syntax that ruff doesn't understand
|
|
476
|
+
- **FIX**: Removed unused `PRNGKeyArray` import from `core/types.py`
|
|
477
|
+
|
|
473
478
|
### v0.3.0 (2026-02-03)
|
|
474
479
|
- **FEATURE**: Migrated all state types from NamedTuple to `@chex.dataclass(frozen=True)` for DeepMind-style JAX compatibility
|
|
475
480
|
- **FEATURE**: Added jaxtyping shape annotations for compile-time type safety (`Float[Array, " feature_dim"]`, `PRNGKeyArray`, etc.)
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: alberta-framework
|
|
3
|
-
Version: 0.3.
|
|
3
|
+
Version: 0.3.2
|
|
4
4
|
Summary: Implementation of the Alberta Plan for AI Research - continual learning with meta-learned step-sizes
|
|
5
5
|
Project-URL: Homepage, https://github.com/j-klawson/alberta-framework
|
|
6
6
|
Project-URL: Repository, https://github.com/j-klawson/alberta-framework
|
|
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "alberta-framework"
|
|
7
|
-
version = "0.3.
|
|
7
|
+
version = "0.3.2"
|
|
8
8
|
description = "Implementation of the Alberta Plan for AI Research - continual learning with meta-learned step-sizes"
|
|
9
9
|
readme = "README.md"
|
|
10
10
|
license = "Apache-2.0"
|
|
@@ -71,6 +71,8 @@ target-version = "py313"
|
|
|
71
71
|
|
|
72
72
|
[tool.ruff.lint]
|
|
73
73
|
select = ["E", "F", "I", "N", "W", "UP"]
|
|
74
|
+
# F722: Syntax error in forward annotation - ruff doesn't understand jaxtyping shape annotations
|
|
75
|
+
ignore = ["F722"]
|
|
74
76
|
|
|
75
77
|
[tool.mypy]
|
|
76
78
|
python_version = "3.13"
|
|
@@ -9,7 +9,7 @@ from typing import TYPE_CHECKING
|
|
|
9
9
|
import chex
|
|
10
10
|
import jax.numpy as jnp
|
|
11
11
|
from jax import Array
|
|
12
|
-
from jaxtyping import Float, Int
|
|
12
|
+
from jaxtyping import Float, Int
|
|
13
13
|
|
|
14
14
|
if TYPE_CHECKING:
|
|
15
15
|
from alberta_framework.core.learners import NormalizedLearnerState
|
|
@@ -576,8 +576,8 @@ class TestBatchedLearningLoop:
|
|
|
576
576
|
sequential_metrics.append(metrics)
|
|
577
577
|
sequential_metrics = jnp.stack(sequential_metrics)
|
|
578
578
|
|
|
579
|
-
# Should match
|
|
580
|
-
chex.assert_trees_all_close(batched_result.metrics, sequential_metrics)
|
|
579
|
+
# Should match (use rtol=1e-5 to account for vmap vs sequential floating-point differences)
|
|
580
|
+
chex.assert_trees_all_close(batched_result.metrics, sequential_metrics, rtol=1e-5)
|
|
581
581
|
|
|
582
582
|
def test_batched_with_step_size_tracking(self, rng_key):
|
|
583
583
|
"""Batched loop should support step-size tracking."""
|
|
@@ -704,8 +704,8 @@ class TestBatchedNormalizedLearningLoop:
|
|
|
704
704
|
sequential_metrics.append(metrics)
|
|
705
705
|
sequential_metrics = jnp.stack(sequential_metrics)
|
|
706
706
|
|
|
707
|
-
# Should match
|
|
708
|
-
chex.assert_trees_all_close(batched_result.metrics, sequential_metrics)
|
|
707
|
+
# Should match (use rtol=1e-5 to account for vmap vs sequential floating-point differences)
|
|
708
|
+
chex.assert_trees_all_close(batched_result.metrics, sequential_metrics, rtol=1e-5)
|
|
709
709
|
|
|
710
710
|
def test_normalized_batched_with_both_tracking(self, rng_key):
|
|
711
711
|
"""Batched normalized loop should support both tracking options."""
|
|
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
|
{alberta_framework-0.3.0 → alberta_framework-0.3.2}/examples/The Alberta Plan/Step1/README.md
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
|
{alberta_framework-0.3.0 → alberta_framework-0.3.2}/src/alberta_framework/core/normalizers.py
RENAMED
|
File without changes
|
{alberta_framework-0.3.0 → alberta_framework-0.3.2}/src/alberta_framework/core/optimizers.py
RENAMED
|
File without changes
|
|
File without changes
|
{alberta_framework-0.3.0 → alberta_framework-0.3.2}/src/alberta_framework/streams/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
{alberta_framework-0.3.0 → alberta_framework-0.3.2}/src/alberta_framework/streams/gymnasium.py
RENAMED
|
File without changes
|
{alberta_framework-0.3.0 → alberta_framework-0.3.2}/src/alberta_framework/streams/synthetic.py
RENAMED
|
File without changes
|
|
File without changes
|
{alberta_framework-0.3.0 → alberta_framework-0.3.2}/src/alberta_framework/utils/experiments.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{alberta_framework-0.3.0 → alberta_framework-0.3.2}/src/alberta_framework/utils/statistics.py
RENAMED
|
File without changes
|
|
File without changes
|
{alberta_framework-0.3.0 → alberta_framework-0.3.2}/src/alberta_framework/utils/visualization.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|