chapkit 2.1.0__tar.gz → 2.1.1__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 (93) hide show
  1. {chapkit-2.1.0 → chapkit-2.1.1}/PKG-INFO +1 -1
  2. {chapkit-2.1.0 → chapkit-2.1.1}/pyproject.toml +1 -1
  3. {chapkit-2.1.0 → chapkit-2.1.1}/pyproject.toml.orig +1 -1
  4. {chapkit-2.1.0 → chapkit-2.1.1}/src/chapkit/api/apps/console/manifest.json +1 -1
  5. {chapkit-2.1.0 → chapkit-2.1.1}/src/chapkit/cli/test/command.py +1 -0
  6. {chapkit-2.1.0 → chapkit-2.1.1}/src/chapkit/data/generator.py +7 -4
  7. {chapkit-2.1.0 → chapkit-2.1.1}/src/chapkit/ml/router.py +3 -1
  8. {chapkit-2.1.0 → chapkit-2.1.1}/README.md +0 -0
  9. {chapkit-2.1.0 → chapkit-2.1.1}/src/chapkit/__init__.py +0 -0
  10. {chapkit-2.1.0 → chapkit-2.1.1}/src/chapkit/alembic/__init__.py +0 -0
  11. {chapkit-2.1.0 → chapkit-2.1.1}/src/chapkit/alembic/env.py +0 -0
  12. {chapkit-2.1.0 → chapkit-2.1.1}/src/chapkit/alembic/script.py.mako +0 -0
  13. {chapkit-2.1.0 → chapkit-2.1.1}/src/chapkit/alembic/versions/20251010_0927_4d869b5fb06e_initial_schema.py +0 -0
  14. {chapkit-2.1.0 → chapkit-2.1.1}/src/chapkit/alembic/versions/__init__.py +0 -0
  15. {chapkit-2.1.0 → chapkit-2.1.1}/src/chapkit/alembic_helpers.py +0 -0
  16. {chapkit-2.1.0 → chapkit-2.1.1}/src/chapkit/api/__init__.py +0 -0
  17. {chapkit-2.1.0 → chapkit-2.1.1}/src/chapkit/api/apps/console/assets/dist-CjxGhzN4.js +0 -0
  18. {chapkit-2.1.0 → chapkit-2.1.1}/src/chapkit/api/apps/console/assets/index-BEhTq576.js +0 -0
  19. {chapkit-2.1.0 → chapkit-2.1.1}/src/chapkit/api/apps/console/assets/index-HY9NoZeE.css +0 -0
  20. {chapkit-2.1.0 → chapkit-2.1.1}/src/chapkit/api/apps/console/assets/javascript-CppQSorr.js +0 -0
  21. {chapkit-2.1.0 → chapkit-2.1.1}/src/chapkit/api/apps/console/assets/roboto-cyrillic-ext-wght-normal-BCp_3N7R.woff2 +0 -0
  22. {chapkit-2.1.0 → chapkit-2.1.1}/src/chapkit/api/apps/console/assets/roboto-cyrillic-wght-normal-fOt7epNf.woff2 +0 -0
  23. {chapkit-2.1.0 → chapkit-2.1.1}/src/chapkit/api/apps/console/assets/roboto-greek-ext-wght-normal-Bgw4czJT.woff2 +0 -0
  24. {chapkit-2.1.0 → chapkit-2.1.1}/src/chapkit/api/apps/console/assets/roboto-greek-wght-normal-DlT9XTxE.woff2 +0 -0
  25. {chapkit-2.1.0 → chapkit-2.1.1}/src/chapkit/api/apps/console/assets/roboto-latin-ext-wght-normal-DYIxWhlt.woff2 +0 -0
  26. {chapkit-2.1.0 → chapkit-2.1.1}/src/chapkit/api/apps/console/assets/roboto-latin-wght-normal-ccAYIvAh.woff2 +0 -0
  27. {chapkit-2.1.0 → chapkit-2.1.1}/src/chapkit/api/apps/console/assets/roboto-math-wght-normal-4a3xuzGk.woff2 +0 -0
  28. {chapkit-2.1.0 → chapkit-2.1.1}/src/chapkit/api/apps/console/assets/roboto-symbols-wght-normal-B7iHSfaG.woff2 +0 -0
  29. {chapkit-2.1.0 → chapkit-2.1.1}/src/chapkit/api/apps/console/assets/roboto-vietnamese-wght-normal-_f1XEJpo.woff2 +0 -0
  30. {chapkit-2.1.0 → chapkit-2.1.1}/src/chapkit/api/apps/console/assets/vitesse-dark-BZCL-v6S.js +0 -0
  31. {chapkit-2.1.0 → chapkit-2.1.1}/src/chapkit/api/apps/console/assets/vitesse-light-VbXTXTou.js +0 -0
  32. {chapkit-2.1.0 → chapkit-2.1.1}/src/chapkit/api/apps/console/favicon.svg +0 -0
  33. {chapkit-2.1.0 → chapkit-2.1.1}/src/chapkit/api/apps/console/icons.svg +0 -0
  34. {chapkit-2.1.0 → chapkit-2.1.1}/src/chapkit/api/apps/console/index.html +0 -0
  35. {chapkit-2.1.0 → chapkit-2.1.1}/src/chapkit/api/dependencies.py +0 -0
  36. {chapkit-2.1.0 → chapkit-2.1.1}/src/chapkit/api/service_builder.py +0 -0
  37. {chapkit-2.1.0 → chapkit-2.1.1}/src/chapkit/artifact/__init__.py +0 -0
  38. {chapkit-2.1.0 → chapkit-2.1.1}/src/chapkit/artifact/manager.py +0 -0
  39. {chapkit-2.1.0 → chapkit-2.1.1}/src/chapkit/artifact/models.py +0 -0
  40. {chapkit-2.1.0 → chapkit-2.1.1}/src/chapkit/artifact/repository.py +0 -0
  41. {chapkit-2.1.0 → chapkit-2.1.1}/src/chapkit/artifact/router.py +0 -0
  42. {chapkit-2.1.0 → chapkit-2.1.1}/src/chapkit/artifact/schemas.py +0 -0
  43. {chapkit-2.1.0 → chapkit-2.1.1}/src/chapkit/cli/__init__.py +0 -0
  44. {chapkit-2.1.0 → chapkit-2.1.1}/src/chapkit/cli/__main__.py +0 -0
  45. {chapkit-2.1.0 → chapkit-2.1.1}/src/chapkit/cli/artifact.py +0 -0
  46. {chapkit-2.1.0 → chapkit-2.1.1}/src/chapkit/cli/cli.py +0 -0
  47. {chapkit-2.1.0 → chapkit-2.1.1}/src/chapkit/cli/init.py +0 -0
  48. {chapkit-2.1.0 → chapkit-2.1.1}/src/chapkit/cli/migrate.py +0 -0
  49. {chapkit-2.1.0 → chapkit-2.1.1}/src/chapkit/cli/mlproject.py +0 -0
  50. {chapkit-2.1.0 → chapkit-2.1.1}/src/chapkit/cli/requirements.py +0 -0
  51. {chapkit-2.1.0 → chapkit-2.1.1}/src/chapkit/cli/run.py +0 -0
  52. {chapkit-2.1.0 → chapkit-2.1.1}/src/chapkit/cli/templates/.dockerignore +0 -0
  53. {chapkit-2.1.0 → chapkit-2.1.1}/src/chapkit/cli/templates/.gitignore +0 -0
  54. {chapkit-2.1.0 → chapkit-2.1.1}/src/chapkit/cli/templates/.python-version +0 -0
  55. {chapkit-2.1.0 → chapkit-2.1.1}/src/chapkit/cli/templates/Dockerfile.jinja2 +0 -0
  56. {chapkit-2.1.0 → chapkit-2.1.1}/src/chapkit/cli/templates/README.md.jinja2 +0 -0
  57. {chapkit-2.1.0 → chapkit-2.1.1}/src/chapkit/cli/templates/compose.yml.jinja2 +0 -0
  58. {chapkit-2.1.0 → chapkit-2.1.1}/src/chapkit/cli/templates/main.py.jinja2 +0 -0
  59. {chapkit-2.1.0 → chapkit-2.1.1}/src/chapkit/cli/templates/main_shell.py.jinja2 +0 -0
  60. {chapkit-2.1.0 → chapkit-2.1.1}/src/chapkit/cli/templates/migrate/CHAPKIT_migrate.md.jinja2 +0 -0
  61. {chapkit-2.1.0 → chapkit-2.1.1}/src/chapkit/cli/templates/migrate/Dockerfile_migrate.jinja2 +0 -0
  62. {chapkit-2.1.0 → chapkit-2.1.1}/src/chapkit/cli/templates/migrate/Makefile_migrate.jinja2 +0 -0
  63. {chapkit-2.1.0 → chapkit-2.1.1}/src/chapkit/cli/templates/migrate/README_migrate.md.jinja2 +0 -0
  64. {chapkit-2.1.0 → chapkit-2.1.1}/src/chapkit/cli/templates/migrate/dockerignore_migrate.jinja2 +0 -0
  65. {chapkit-2.1.0 → chapkit-2.1.1}/src/chapkit/cli/templates/migrate/gitignore_migrate.jinja2 +0 -0
  66. {chapkit-2.1.0 → chapkit-2.1.1}/src/chapkit/cli/templates/migrate/main_migrate.py.jinja2 +0 -0
  67. {chapkit-2.1.0 → chapkit-2.1.1}/src/chapkit/cli/templates/migrate/pyproject_migrate.toml.jinja2 +0 -0
  68. {chapkit-2.1.0 → chapkit-2.1.1}/src/chapkit/cli/templates/migrate/requirements_migrate.txt.jinja2 +0 -0
  69. {chapkit-2.1.0 → chapkit-2.1.1}/src/chapkit/cli/templates/publish-docker.yml.jinja2 +0 -0
  70. {chapkit-2.1.0 → chapkit-2.1.1}/src/chapkit/cli/templates/pyproject.toml.jinja2 +0 -0
  71. {chapkit-2.1.0 → chapkit-2.1.1}/src/chapkit/cli/templates/scripts/predict.R.jinja2 +0 -0
  72. {chapkit-2.1.0 → chapkit-2.1.1}/src/chapkit/cli/templates/scripts/predict_model.py.jinja2 +0 -0
  73. {chapkit-2.1.0 → chapkit-2.1.1}/src/chapkit/cli/templates/scripts/train.R.jinja2 +0 -0
  74. {chapkit-2.1.0 → chapkit-2.1.1}/src/chapkit/cli/templates/scripts/train_model.py.jinja2 +0 -0
  75. {chapkit-2.1.0 → chapkit-2.1.1}/src/chapkit/cli/test/__init__.py +0 -0
  76. {chapkit-2.1.0 → chapkit-2.1.1}/src/chapkit/cli/test/runner.py +0 -0
  77. {chapkit-2.1.0 → chapkit-2.1.1}/src/chapkit/cli/test/utils.py +0 -0
  78. {chapkit-2.1.0 → chapkit-2.1.1}/src/chapkit/config/__init__.py +0 -0
  79. {chapkit-2.1.0 → chapkit-2.1.1}/src/chapkit/config/manager.py +0 -0
  80. {chapkit-2.1.0 → chapkit-2.1.1}/src/chapkit/config/models.py +0 -0
  81. {chapkit-2.1.0 → chapkit-2.1.1}/src/chapkit/config/repository.py +0 -0
  82. {chapkit-2.1.0 → chapkit-2.1.1}/src/chapkit/config/router.py +0 -0
  83. {chapkit-2.1.0 → chapkit-2.1.1}/src/chapkit/config/schemas.py +0 -0
  84. {chapkit-2.1.0 → chapkit-2.1.1}/src/chapkit/data/__init__.py +0 -0
  85. {chapkit-2.1.0 → chapkit-2.1.1}/src/chapkit/data/dataframe.py +0 -0
  86. {chapkit-2.1.0 → chapkit-2.1.1}/src/chapkit/data/geo.py +0 -0
  87. {chapkit-2.1.0 → chapkit-2.1.1}/src/chapkit/ml/__init__.py +0 -0
  88. {chapkit-2.1.0 → chapkit-2.1.1}/src/chapkit/ml/manager.py +0 -0
  89. {chapkit-2.1.0 → chapkit-2.1.1}/src/chapkit/ml/runner.py +0 -0
  90. {chapkit-2.1.0 → chapkit-2.1.1}/src/chapkit/ml/schemas.py +0 -0
  91. {chapkit-2.1.0 → chapkit-2.1.1}/src/chapkit/py.typed +0 -0
  92. {chapkit-2.1.0 → chapkit-2.1.1}/src/chapkit/scheduler.py +0 -0
  93. {chapkit-2.1.0 → chapkit-2.1.1}/src/chapkit/utils.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: chapkit
3
- Version: 2.1.0
3
+ Version: 2.1.1
4
4
  Summary: ML and data service modules built on servicekit - config, artifacts, and ML workflows
5
5
  Keywords: ml,machine-learning,data-science,artifacts,config,servicekit
6
6
  Author: Morten Hansen
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "chapkit"
3
- version = "2.1.0"
3
+ version = "2.1.1"
4
4
  description = "ML and data service modules built on servicekit - config, artifacts, and ML workflows"
5
5
  readme = "README.md"
6
6
  requires-python = ">=3.13"
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "chapkit"
3
- version = "2.1.0"
3
+ version = "2.1.1"
4
4
  description = "ML and data service modules built on servicekit - config, artifacts, and ML workflows"
5
5
  readme = "README.md"
6
6
  authors = [{ name = "Morten Hansen", email = "morten@dhis2.org" }]
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "Chapkit Console",
3
- "version": "2.1.0",
3
+ "version": "2.1.1",
4
4
  "prefix": "/",
5
5
  "description": "Default web console for exploring and operating a chapkit service",
6
6
  "author": "Chapkit Team",
@@ -415,6 +415,7 @@ def test_command(
415
415
  historic, future = generator.generate_prediction_data(
416
416
  num_locations=5,
417
417
  num_periods=future_periods,
418
+ historic_periods=max(1, num_predict_rows // 5),
418
419
  required_covariates=runner.required_covariates,
419
420
  additional_covariates=pred_acc,
420
421
  extra_covariates=extra_covariates,
@@ -155,12 +155,15 @@ class TestDataGenerator:
155
155
  additional_covariates: list[str] | None = None,
156
156
  extra_covariates: int = 0,
157
157
  period_type: Literal["monthly", "weekly"] = "monthly",
158
+ historic_periods: int | None = None,
158
159
  ) -> tuple[dict[str, Any], dict[str, Any]]:
159
- """Generate historic and future DataFrames for prediction."""
160
+ """Generate historic and future DataFrames for prediction; historic_periods defaults to num_periods."""
161
+ if historic_periods is None:
162
+ historic_periods = num_periods
160
163
  # Historic data: actual observations from earlier time periods
161
164
  historic = self.generate_training_data(
162
165
  num_locations=num_locations,
163
- num_periods=num_periods,
166
+ num_periods=historic_periods,
164
167
  num_features=num_features,
165
168
  required_covariates=required_covariates,
166
169
  additional_covariates=additional_covariates,
@@ -170,7 +173,7 @@ class TestDataGenerator:
170
173
  )
171
174
 
172
175
  # Future data: continue immediately after the historic span (same origin year,
173
- # offset by num_periods) so the future horizon is contiguous with history
176
+ # offset by historic_periods) so the future horizon is contiguous with history
174
177
  # instead of jumping to a fixed year and leaving a calendar gap. Then null out
175
178
  # disease_cases for prediction.
176
179
  future = self.generate_training_data(
@@ -181,7 +184,7 @@ class TestDataGenerator:
181
184
  additional_covariates=additional_covariates,
182
185
  extra_covariates=extra_covariates,
183
186
  start_year=2020,
184
- start_period=num_periods,
187
+ start_period=historic_periods,
185
188
  period_type=period_type,
186
189
  )
187
190
 
@@ -117,10 +117,12 @@ class MLRouter(Router):
117
117
 
118
118
  if kind == "predict":
119
119
  # The future frame's period count is the horizon the service will resolve
120
- # at $predict, so keep it inside the bounds the service declares.
120
+ # at $predict, so keep it inside the bounds the service declares. The
121
+ # historic frame keeps the full requested length as model context.
121
122
  historic, future = generator.generate_prediction_data(
122
123
  num_locations=num_locations,
123
124
  num_periods=_clamp_horizon(num_periods, sample_metadata),
125
+ historic_periods=max(1, num_periods),
124
126
  num_features=num_features,
125
127
  required_covariates=required_covariates,
126
128
  period_type=resolved_period,
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes