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.
Files changed (59) hide show
  1. {alberta_framework-0.3.0 → alberta_framework-0.3.2}/CLAUDE.md +5 -0
  2. {alberta_framework-0.3.0 → alberta_framework-0.3.2}/PKG-INFO +1 -1
  3. {alberta_framework-0.3.0 → alberta_framework-0.3.2}/pyproject.toml +3 -1
  4. {alberta_framework-0.3.0 → alberta_framework-0.3.2}/src/alberta_framework/core/types.py +1 -1
  5. {alberta_framework-0.3.0 → alberta_framework-0.3.2}/tests/test_learners.py +4 -4
  6. {alberta_framework-0.3.0 → alberta_framework-0.3.2}/.github/workflows/ci.yml +0 -0
  7. {alberta_framework-0.3.0 → alberta_framework-0.3.2}/.github/workflows/docs.yml +0 -0
  8. {alberta_framework-0.3.0 → alberta_framework-0.3.2}/.github/workflows/publish.yml +0 -0
  9. {alberta_framework-0.3.0 → alberta_framework-0.3.2}/.gitignore +0 -0
  10. {alberta_framework-0.3.0 → alberta_framework-0.3.2}/ALBERTA_PLAN.md +0 -0
  11. {alberta_framework-0.3.0 → alberta_framework-0.3.2}/CHANGELOG.md +0 -0
  12. {alberta_framework-0.3.0 → alberta_framework-0.3.2}/LICENSE +0 -0
  13. {alberta_framework-0.3.0 → alberta_framework-0.3.2}/README.md +0 -0
  14. {alberta_framework-0.3.0 → alberta_framework-0.3.2}/ROADMAP.md +0 -0
  15. {alberta_framework-0.3.0 → alberta_framework-0.3.2}/docs/contributing.md +0 -0
  16. {alberta_framework-0.3.0 → alberta_framework-0.3.2}/docs/gen_ref_pages.py +0 -0
  17. {alberta_framework-0.3.0 → alberta_framework-0.3.2}/docs/getting-started/installation.md +0 -0
  18. {alberta_framework-0.3.0 → alberta_framework-0.3.2}/docs/getting-started/quickstart.md +0 -0
  19. {alberta_framework-0.3.0 → alberta_framework-0.3.2}/docs/guide/concepts.md +0 -0
  20. {alberta_framework-0.3.0 → alberta_framework-0.3.2}/docs/guide/experiments.md +0 -0
  21. {alberta_framework-0.3.0 → alberta_framework-0.3.2}/docs/guide/gymnasium.md +0 -0
  22. {alberta_framework-0.3.0 → alberta_framework-0.3.2}/docs/guide/optimizers.md +0 -0
  23. {alberta_framework-0.3.0 → alberta_framework-0.3.2}/docs/guide/streams.md +0 -0
  24. {alberta_framework-0.3.0 → alberta_framework-0.3.2}/docs/index.md +0 -0
  25. {alberta_framework-0.3.0 → alberta_framework-0.3.2}/docs/javascripts/mathjax.js +0 -0
  26. {alberta_framework-0.3.0 → alberta_framework-0.3.2}/examples/The Alberta Plan/Step1/README.md +0 -0
  27. {alberta_framework-0.3.0 → alberta_framework-0.3.2}/examples/The Alberta Plan/Step1/autostep_comparison.py +0 -0
  28. {alberta_framework-0.3.0 → alberta_framework-0.3.2}/examples/The Alberta Plan/Step1/external_normalization_study.py +0 -0
  29. {alberta_framework-0.3.0 → alberta_framework-0.3.2}/examples/The Alberta Plan/Step1/idbd_lms_autostep_comparison.py +0 -0
  30. {alberta_framework-0.3.0 → alberta_framework-0.3.2}/examples/The Alberta Plan/Step1/normalization_study.py +0 -0
  31. {alberta_framework-0.3.0 → alberta_framework-0.3.2}/examples/The Alberta Plan/Step1/sutton1992_experiment1.py +0 -0
  32. {alberta_framework-0.3.0 → alberta_framework-0.3.2}/examples/The Alberta Plan/Step1/sutton1992_experiment2.py +0 -0
  33. {alberta_framework-0.3.0 → alberta_framework-0.3.2}/examples/gymnasium_reward_prediction.py +0 -0
  34. {alberta_framework-0.3.0 → alberta_framework-0.3.2}/examples/publication_experiment.py +0 -0
  35. {alberta_framework-0.3.0 → alberta_framework-0.3.2}/examples/td_cartpole_lms.py +0 -0
  36. {alberta_framework-0.3.0 → alberta_framework-0.3.2}/mkdocs.yml +0 -0
  37. {alberta_framework-0.3.0 → alberta_framework-0.3.2}/papers/mahmood-msc-thesis-summary.md +0 -0
  38. {alberta_framework-0.3.0 → alberta_framework-0.3.2}/src/alberta_framework/__init__.py +0 -0
  39. {alberta_framework-0.3.0 → alberta_framework-0.3.2}/src/alberta_framework/core/__init__.py +0 -0
  40. {alberta_framework-0.3.0 → alberta_framework-0.3.2}/src/alberta_framework/core/learners.py +0 -0
  41. {alberta_framework-0.3.0 → alberta_framework-0.3.2}/src/alberta_framework/core/normalizers.py +0 -0
  42. {alberta_framework-0.3.0 → alberta_framework-0.3.2}/src/alberta_framework/core/optimizers.py +0 -0
  43. {alberta_framework-0.3.0 → alberta_framework-0.3.2}/src/alberta_framework/py.typed +0 -0
  44. {alberta_framework-0.3.0 → alberta_framework-0.3.2}/src/alberta_framework/streams/__init__.py +0 -0
  45. {alberta_framework-0.3.0 → alberta_framework-0.3.2}/src/alberta_framework/streams/base.py +0 -0
  46. {alberta_framework-0.3.0 → alberta_framework-0.3.2}/src/alberta_framework/streams/gymnasium.py +0 -0
  47. {alberta_framework-0.3.0 → alberta_framework-0.3.2}/src/alberta_framework/streams/synthetic.py +0 -0
  48. {alberta_framework-0.3.0 → alberta_framework-0.3.2}/src/alberta_framework/utils/__init__.py +0 -0
  49. {alberta_framework-0.3.0 → alberta_framework-0.3.2}/src/alberta_framework/utils/experiments.py +0 -0
  50. {alberta_framework-0.3.0 → alberta_framework-0.3.2}/src/alberta_framework/utils/export.py +0 -0
  51. {alberta_framework-0.3.0 → alberta_framework-0.3.2}/src/alberta_framework/utils/metrics.py +0 -0
  52. {alberta_framework-0.3.0 → alberta_framework-0.3.2}/src/alberta_framework/utils/statistics.py +0 -0
  53. {alberta_framework-0.3.0 → alberta_framework-0.3.2}/src/alberta_framework/utils/timing.py +0 -0
  54. {alberta_framework-0.3.0 → alberta_framework-0.3.2}/src/alberta_framework/utils/visualization.py +0 -0
  55. {alberta_framework-0.3.0 → alberta_framework-0.3.2}/tests/conftest.py +0 -0
  56. {alberta_framework-0.3.0 → alberta_framework-0.3.2}/tests/test_gymnasium_streams.py +0 -0
  57. {alberta_framework-0.3.0 → alberta_framework-0.3.2}/tests/test_normalizers.py +0 -0
  58. {alberta_framework-0.3.0 → alberta_framework-0.3.2}/tests/test_optimizers.py +0 -0
  59. {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.0
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.0"
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, PRNGKeyArray
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."""