half-orm-dev 0.17.5a4__tar.gz → 0.17.5a5__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 (72) hide show
  1. {half_orm_dev-0.17.5a4/half_orm_dev.egg-info → half_orm_dev-0.17.5a5}/PKG-INFO +1 -1
  2. {half_orm_dev-0.17.5a4 → half_orm_dev-0.17.5a5}/half_orm_dev/patch_manager.py +11 -9
  3. {half_orm_dev-0.17.5a4 → half_orm_dev-0.17.5a5}/half_orm_dev/release_manager.py +4 -6
  4. half_orm_dev-0.17.5a5/half_orm_dev/version.txt +1 -0
  5. {half_orm_dev-0.17.5a4 → half_orm_dev-0.17.5a5/half_orm_dev.egg-info}/PKG-INFO +1 -1
  6. half_orm_dev-0.17.5a4/half_orm_dev/version.txt +0 -1
  7. {half_orm_dev-0.17.5a4 → half_orm_dev-0.17.5a5}/AUTHORS +0 -0
  8. {half_orm_dev-0.17.5a4 → half_orm_dev-0.17.5a5}/LICENSE +0 -0
  9. {half_orm_dev-0.17.5a4 → half_orm_dev-0.17.5a5}/README.md +0 -0
  10. {half_orm_dev-0.17.5a4 → half_orm_dev-0.17.5a5}/half_orm_dev/__init__.py +0 -0
  11. {half_orm_dev-0.17.5a4 → half_orm_dev-0.17.5a5}/half_orm_dev/bootstrap_manager.py +0 -0
  12. {half_orm_dev-0.17.5a4 → half_orm_dev-0.17.5a5}/half_orm_dev/cli/__init__.py +0 -0
  13. {half_orm_dev-0.17.5a4 → half_orm_dev-0.17.5a5}/half_orm_dev/cli/commands/__init__.py +0 -0
  14. {half_orm_dev-0.17.5a4 → half_orm_dev-0.17.5a5}/half_orm_dev/cli/commands/apply.py +0 -0
  15. {half_orm_dev-0.17.5a4 → half_orm_dev-0.17.5a5}/half_orm_dev/cli/commands/bootstrap.py +0 -0
  16. {half_orm_dev-0.17.5a4 → half_orm_dev-0.17.5a5}/half_orm_dev/cli/commands/check.py +0 -0
  17. {half_orm_dev-0.17.5a4 → half_orm_dev-0.17.5a5}/half_orm_dev/cli/commands/clone.py +0 -0
  18. {half_orm_dev-0.17.5a4 → half_orm_dev-0.17.5a5}/half_orm_dev/cli/commands/init.py +0 -0
  19. {half_orm_dev-0.17.5a4 → half_orm_dev-0.17.5a5}/half_orm_dev/cli/commands/migrate.py +0 -0
  20. {half_orm_dev-0.17.5a4 → half_orm_dev-0.17.5a5}/half_orm_dev/cli/commands/patch.py +0 -0
  21. {half_orm_dev-0.17.5a4 → half_orm_dev-0.17.5a5}/half_orm_dev/cli/commands/release.py +0 -0
  22. {half_orm_dev-0.17.5a4 → half_orm_dev-0.17.5a5}/half_orm_dev/cli/commands/restore.py +0 -0
  23. {half_orm_dev-0.17.5a4 → half_orm_dev-0.17.5a5}/half_orm_dev/cli/commands/sync.py +0 -0
  24. {half_orm_dev-0.17.5a4 → half_orm_dev-0.17.5a5}/half_orm_dev/cli/commands/todo.py +0 -0
  25. {half_orm_dev-0.17.5a4 → half_orm_dev-0.17.5a5}/half_orm_dev/cli/commands/undo.py +0 -0
  26. {half_orm_dev-0.17.5a4 → half_orm_dev-0.17.5a5}/half_orm_dev/cli/commands/update.py +0 -0
  27. {half_orm_dev-0.17.5a4 → half_orm_dev-0.17.5a5}/half_orm_dev/cli/commands/upgrade.py +0 -0
  28. {half_orm_dev-0.17.5a4 → half_orm_dev-0.17.5a5}/half_orm_dev/cli/main.py +0 -0
  29. {half_orm_dev-0.17.5a4 → half_orm_dev-0.17.5a5}/half_orm_dev/cli_extension.py +0 -0
  30. {half_orm_dev-0.17.5a4 → half_orm_dev-0.17.5a5}/half_orm_dev/database.py +0 -0
  31. {half_orm_dev-0.17.5a4 → half_orm_dev-0.17.5a5}/half_orm_dev/decorators.py +0 -0
  32. {half_orm_dev-0.17.5a4 → half_orm_dev-0.17.5a5}/half_orm_dev/file_executor.py +0 -0
  33. {half_orm_dev-0.17.5a4 → half_orm_dev-0.17.5a5}/half_orm_dev/hgit.py +0 -0
  34. {half_orm_dev-0.17.5a4 → half_orm_dev-0.17.5a5}/half_orm_dev/migration_manager.py +0 -0
  35. {half_orm_dev-0.17.5a4 → half_orm_dev-0.17.5a5}/half_orm_dev/migrations/0/17/1/00_move_to_hop.py +0 -0
  36. {half_orm_dev-0.17.5a4 → half_orm_dev-0.17.5a5}/half_orm_dev/migrations/0/17/1/01_txt_to_toml.py +0 -0
  37. {half_orm_dev-0.17.5a4 → half_orm_dev-0.17.5a5}/half_orm_dev/migrations/0/17/4/00_toml_dict_format.py +0 -0
  38. {half_orm_dev-0.17.5a4 → half_orm_dev-0.17.5a5}/half_orm_dev/migrations/0/17/4/01_add_bootstrap_table.py +0 -0
  39. {half_orm_dev-0.17.5a4 → half_orm_dev-0.17.5a5}/half_orm_dev/migrations/0/17/4/02_move_patches_to_subdirs.py +0 -0
  40. {half_orm_dev-0.17.5a4 → half_orm_dev-0.17.5a5}/half_orm_dev/migrations/0/17/5/01_update_pyproject_dependency.py +0 -0
  41. {half_orm_dev-0.17.5a4 → half_orm_dev-0.17.5a5}/half_orm_dev/modules.py +0 -0
  42. {half_orm_dev-0.17.5a4 → half_orm_dev-0.17.5a5}/half_orm_dev/patch_validator.py +0 -0
  43. {half_orm_dev-0.17.5a4 → half_orm_dev-0.17.5a5}/half_orm_dev/patches/0/1/0/00_half_orm_meta.database.sql +0 -0
  44. {half_orm_dev-0.17.5a4 → half_orm_dev-0.17.5a5}/half_orm_dev/patches/0/1/0/01_alter_half_orm_meta.hop_release.sql +0 -0
  45. {half_orm_dev-0.17.5a4 → half_orm_dev-0.17.5a5}/half_orm_dev/patches/0/1/0/02_half_orm_meta.view.hop_penultimate_release.sql +0 -0
  46. {half_orm_dev-0.17.5a4 → half_orm_dev-0.17.5a5}/half_orm_dev/patches/log +0 -0
  47. {half_orm_dev-0.17.5a4 → half_orm_dev-0.17.5a5}/half_orm_dev/patches/sql/half_orm_meta.sql +0 -0
  48. {half_orm_dev-0.17.5a4 → half_orm_dev-0.17.5a5}/half_orm_dev/release_file.py +0 -0
  49. {half_orm_dev-0.17.5a4 → half_orm_dev-0.17.5a5}/half_orm_dev/repo.py +0 -0
  50. {half_orm_dev-0.17.5a4 → half_orm_dev-0.17.5a5}/half_orm_dev/scripts/repair-metadata.py +0 -0
  51. {half_orm_dev-0.17.5a4 → half_orm_dev-0.17.5a5}/half_orm_dev/templates/.gitignore +0 -0
  52. {half_orm_dev-0.17.5a4 → half_orm_dev-0.17.5a5}/half_orm_dev/templates/MANIFEST.in +0 -0
  53. {half_orm_dev-0.17.5a4 → half_orm_dev-0.17.5a5}/half_orm_dev/templates/README +0 -0
  54. {half_orm_dev-0.17.5a4 → half_orm_dev-0.17.5a5}/half_orm_dev/templates/conftest_template +0 -0
  55. {half_orm_dev-0.17.5a4 → half_orm_dev-0.17.5a5}/half_orm_dev/templates/git-hooks/pre-commit +0 -0
  56. {half_orm_dev-0.17.5a4 → half_orm_dev-0.17.5a5}/half_orm_dev/templates/git-hooks/prepare-commit-msg +0 -0
  57. {half_orm_dev-0.17.5a4 → half_orm_dev-0.17.5a5}/half_orm_dev/templates/init_module_template +0 -0
  58. {half_orm_dev-0.17.5a4 → half_orm_dev-0.17.5a5}/half_orm_dev/templates/module_template_1 +0 -0
  59. {half_orm_dev-0.17.5a4 → half_orm_dev-0.17.5a5}/half_orm_dev/templates/module_template_2 +0 -0
  60. {half_orm_dev-0.17.5a4 → half_orm_dev-0.17.5a5}/half_orm_dev/templates/module_template_3 +0 -0
  61. {half_orm_dev-0.17.5a4 → half_orm_dev-0.17.5a5}/half_orm_dev/templates/pyproject.toml +0 -0
  62. {half_orm_dev-0.17.5a4 → half_orm_dev-0.17.5a5}/half_orm_dev/templates/relation_test +0 -0
  63. {half_orm_dev-0.17.5a4 → half_orm_dev-0.17.5a5}/half_orm_dev/templates/sql_adapter +0 -0
  64. {half_orm_dev-0.17.5a4 → half_orm_dev-0.17.5a5}/half_orm_dev/templates/warning +0 -0
  65. {half_orm_dev-0.17.5a4 → half_orm_dev-0.17.5a5}/half_orm_dev/utils.py +0 -0
  66. {half_orm_dev-0.17.5a4 → half_orm_dev-0.17.5a5}/half_orm_dev.egg-info/SOURCES.txt +0 -0
  67. {half_orm_dev-0.17.5a4 → half_orm_dev-0.17.5a5}/half_orm_dev.egg-info/dependency_links.txt +0 -0
  68. {half_orm_dev-0.17.5a4 → half_orm_dev-0.17.5a5}/half_orm_dev.egg-info/requires.txt +0 -0
  69. {half_orm_dev-0.17.5a4 → half_orm_dev-0.17.5a5}/half_orm_dev.egg-info/top_level.txt +0 -0
  70. {half_orm_dev-0.17.5a4 → half_orm_dev-0.17.5a5}/pyproject.toml +0 -0
  71. {half_orm_dev-0.17.5a4 → half_orm_dev-0.17.5a5}/setup.cfg +0 -0
  72. {half_orm_dev-0.17.5a4 → half_orm_dev-0.17.5a5}/setup.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: half_orm_dev
3
- Version: 0.17.5a4
3
+ Version: 0.17.5a5
4
4
  Summary: half_orm development Framework.
5
5
  Author-email: Joël Maïzi <joel.maizi@collorg.org>
6
6
  License-Expression: GPL-3.0-or-later
@@ -572,9 +572,10 @@ class PatchManager:
572
572
 
573
573
  if release_schema_path and release_schema_path.exists():
574
574
  # New workflow: restore from release schema (includes all staged patches)
575
- # Bootstrap scripts run automatically, excluding current patch
575
+ # Exclude bootstraps for this version apply_patch_files will
576
+ # execute the current patch's bootstrap below.
576
577
  self._repo.restore_database_from_release_schema(
577
- version, exclude_bootstrap_patch_id=patch_id
578
+ version, exclude_bootstrap_version=version
578
579
  )
579
580
 
580
581
  # Apply only the current patch
@@ -583,9 +584,10 @@ class PatchManager:
583
584
  else:
584
585
  # Backward compatibility: old workflow
585
586
  # Also generates release schema for migration of existing projects
586
- # Bootstrap scripts run automatically, excluding current patch
587
+ # Exclude bootstraps for this version apply_patch_files will
588
+ # execute them when applying staged patches below.
587
589
  self._repo.restore_database_from_schema(
588
- exclude_bootstrap_patch_id=patch_id
590
+ exclude_bootstrap_version=version
589
591
  )
590
592
 
591
593
  # Get and apply all staged release patches
@@ -692,11 +694,6 @@ class PatchManager:
692
694
 
693
695
  # Apply files in lexicographic order
694
696
  for patch_file in structure.files:
695
- # Skip bootstrap files - they are executed via run_bootstrap() after merge
696
- if is_bootstrap_file(patch_file.path):
697
- click.echo(f" • {patch_file.name} (bootstrap - skipped, will run after merge)")
698
- continue
699
-
700
697
  if patch_file.is_sql:
701
698
  click.echo(f" • {patch_file.name}")
702
699
  try:
@@ -1061,6 +1058,11 @@ class PatchManager:
1061
1058
  shutil.copy(file_path, dest)
1062
1059
  copied.append(new_name)
1063
1060
 
1061
+ # Record as already executed — the bootstrap SQL was already
1062
+ # run by apply_patch_files during validation, so run_bootstrap
1063
+ # must skip it to avoid double execution.
1064
+ bootstrap_mgr.record_execution(new_name, version)
1065
+
1064
1066
  click.echo(f" • Copied bootstrap file: {new_name}")
1065
1067
 
1066
1068
  return copied
@@ -2499,16 +2499,14 @@ class ReleaseManager:
2499
2499
  self._repo.hgit.checkout("-b", temp_branch)
2500
2500
 
2501
2501
  # 6. Apply patches to database (validation)
2502
- # Exclude current version's bootstraps they run at step 7 after patches
2502
+ # Bootstrap SQL in patches is executed by apply_patch_files.
2503
+ # Bootstraps from bootstrap/ for OTHER versions run during restore.
2504
+ # Bootstraps for THIS version are excluded (already run via patches).
2503
2505
  self._apply_release_patches(
2504
2506
  version, force_apply=is_prod, exclude_bootstrap_version=version
2505
2507
  )
2506
2508
 
2507
- # 7. Execute bootstrap scripts for the version being promoted
2508
- # (excluded from restore at step 6, run now that patches are applied)
2509
- self._run_bootstrap_scripts(for_version=version)
2510
-
2511
- # 8. Register version in database
2509
+ # 7. Register version in database
2512
2510
  version_parts = version.split('.')
2513
2511
  major, minor, patch_num = map(int, version_parts)
2514
2512
  if is_prod:
@@ -0,0 +1 @@
1
+ 0.17.5-a5
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: half_orm_dev
3
- Version: 0.17.5a4
3
+ Version: 0.17.5a5
4
4
  Summary: half_orm development Framework.
5
5
  Author-email: Joël Maïzi <joel.maizi@collorg.org>
6
6
  License-Expression: GPL-3.0-or-later
@@ -1 +0,0 @@
1
- 0.17.5-a4
File without changes
File without changes