half-orm-dev 1.0.0a10__tar.gz → 1.0.0a12__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 (79) hide show
  1. {half_orm_dev-1.0.0a10/half_orm_dev.egg-info → half_orm_dev-1.0.0a12}/PKG-INFO +1 -1
  2. {half_orm_dev-1.0.0a10 → half_orm_dev-1.0.0a12}/half_orm_dev/modules.py +25 -11
  3. half_orm_dev-1.0.0a12/half_orm_dev/version.txt +1 -0
  4. {half_orm_dev-1.0.0a10 → half_orm_dev-1.0.0a12/half_orm_dev.egg-info}/PKG-INFO +1 -1
  5. half_orm_dev-1.0.0a10/half_orm_dev/version.txt +0 -1
  6. {half_orm_dev-1.0.0a10 → half_orm_dev-1.0.0a12}/AUTHORS +0 -0
  7. {half_orm_dev-1.0.0a10 → half_orm_dev-1.0.0a12}/LICENSE +0 -0
  8. {half_orm_dev-1.0.0a10 → half_orm_dev-1.0.0a12}/README.md +0 -0
  9. {half_orm_dev-1.0.0a10 → half_orm_dev-1.0.0a12}/half_orm_dev/__init__.py +0 -0
  10. {half_orm_dev-1.0.0a10 → half_orm_dev-1.0.0a12}/half_orm_dev/bootstrap_manager.py +0 -0
  11. {half_orm_dev-1.0.0a10 → half_orm_dev-1.0.0a12}/half_orm_dev/cli/__init__.py +0 -0
  12. {half_orm_dev-1.0.0a10 → half_orm_dev-1.0.0a12}/half_orm_dev/cli/commands/__init__.py +0 -0
  13. {half_orm_dev-1.0.0a10 → half_orm_dev-1.0.0a12}/half_orm_dev/cli/commands/apply.py +0 -0
  14. {half_orm_dev-1.0.0a10 → half_orm_dev-1.0.0a12}/half_orm_dev/cli/commands/bootstrap.py +0 -0
  15. {half_orm_dev-1.0.0a10 → half_orm_dev-1.0.0a12}/half_orm_dev/cli/commands/check.py +0 -0
  16. {half_orm_dev-1.0.0a10 → half_orm_dev-1.0.0a12}/half_orm_dev/cli/commands/clone.py +0 -0
  17. {half_orm_dev-1.0.0a10 → half_orm_dev-1.0.0a12}/half_orm_dev/cli/commands/init.py +0 -0
  18. {half_orm_dev-1.0.0a10 → half_orm_dev-1.0.0a12}/half_orm_dev/cli/commands/migrate.py +0 -0
  19. {half_orm_dev-1.0.0a10 → half_orm_dev-1.0.0a12}/half_orm_dev/cli/commands/patch.py +0 -0
  20. {half_orm_dev-1.0.0a10 → half_orm_dev-1.0.0a12}/half_orm_dev/cli/commands/release.py +0 -0
  21. {half_orm_dev-1.0.0a10 → half_orm_dev-1.0.0a12}/half_orm_dev/cli/commands/restore.py +0 -0
  22. {half_orm_dev-1.0.0a10 → half_orm_dev-1.0.0a12}/half_orm_dev/cli/commands/revert_migration.py +0 -0
  23. {half_orm_dev-1.0.0a10 → half_orm_dev-1.0.0a12}/half_orm_dev/cli/commands/set_git_origin.py +0 -0
  24. {half_orm_dev-1.0.0a10 → half_orm_dev-1.0.0a12}/half_orm_dev/cli/commands/sync.py +0 -0
  25. {half_orm_dev-1.0.0a10 → half_orm_dev-1.0.0a12}/half_orm_dev/cli/commands/todo.py +0 -0
  26. {half_orm_dev-1.0.0a10 → half_orm_dev-1.0.0a12}/half_orm_dev/cli/commands/undo.py +0 -0
  27. {half_orm_dev-1.0.0a10 → half_orm_dev-1.0.0a12}/half_orm_dev/cli/commands/update.py +0 -0
  28. {half_orm_dev-1.0.0a10 → half_orm_dev-1.0.0a12}/half_orm_dev/cli/commands/upgrade.py +0 -0
  29. {half_orm_dev-1.0.0a10 → half_orm_dev-1.0.0a12}/half_orm_dev/cli/main.py +0 -0
  30. {half_orm_dev-1.0.0a10 → half_orm_dev-1.0.0a12}/half_orm_dev/cli_extension.py +0 -0
  31. {half_orm_dev-1.0.0a10 → half_orm_dev-1.0.0a12}/half_orm_dev/database.py +0 -0
  32. {half_orm_dev-1.0.0a10 → half_orm_dev-1.0.0a12}/half_orm_dev/decorators.py +0 -0
  33. {half_orm_dev-1.0.0a10 → half_orm_dev-1.0.0a12}/half_orm_dev/file_executor.py +0 -0
  34. {half_orm_dev-1.0.0a10 → half_orm_dev-1.0.0a12}/half_orm_dev/hgit.py +0 -0
  35. {half_orm_dev-1.0.0a10 → half_orm_dev-1.0.0a12}/half_orm_dev/migration_manager.py +0 -0
  36. {half_orm_dev-1.0.0a10 → half_orm_dev-1.0.0a12}/half_orm_dev/migrations/0/17/1/00_move_to_hop.py +0 -0
  37. {half_orm_dev-1.0.0a10 → half_orm_dev-1.0.0a12}/half_orm_dev/migrations/0/17/1/01_txt_to_toml.py +0 -0
  38. {half_orm_dev-1.0.0a10 → half_orm_dev-1.0.0a12}/half_orm_dev/migrations/0/17/4/00_toml_dict_format.py +0 -0
  39. {half_orm_dev-1.0.0a10 → half_orm_dev-1.0.0a12}/half_orm_dev/migrations/0/17/4/01_add_bootstrap_table.py +0 -0
  40. {half_orm_dev-1.0.0a10 → half_orm_dev-1.0.0a12}/half_orm_dev/migrations/0/17/4/02_move_patches_to_subdirs.py +0 -0
  41. {half_orm_dev-1.0.0a10 → half_orm_dev-1.0.0a12}/half_orm_dev/migrations/0/17/5/01_update_pyproject_dependency.py +0 -0
  42. {half_orm_dev-1.0.0a10 → half_orm_dev-1.0.0a12}/half_orm_dev/migrations/0/18/0/00_add_async_support.py +0 -0
  43. {half_orm_dev-1.0.0a10 → half_orm_dev-1.0.0a12}/half_orm_dev/migrations/0/18/0/01_update_default_tests.py +0 -0
  44. {half_orm_dev-1.0.0a10 → half_orm_dev-1.0.0a12}/half_orm_dev/migrations/hop/BREAKING_CHANGES-1.0.0.md +0 -0
  45. {half_orm_dev-1.0.0a10 → half_orm_dev-1.0.0a12}/half_orm_dev/patch_manager.py +0 -0
  46. {half_orm_dev-1.0.0a10 → half_orm_dev-1.0.0a12}/half_orm_dev/patch_validator.py +0 -0
  47. {half_orm_dev-1.0.0a10 → half_orm_dev-1.0.0a12}/half_orm_dev/patches/0/1/0/00_half_orm_meta.database.sql +0 -0
  48. {half_orm_dev-1.0.0a10 → half_orm_dev-1.0.0a12}/half_orm_dev/patches/0/1/0/01_alter_half_orm_meta.hop_release.sql +0 -0
  49. {half_orm_dev-1.0.0a10 → half_orm_dev-1.0.0a12}/half_orm_dev/patches/0/1/0/02_half_orm_meta.view.hop_penultimate_release.sql +0 -0
  50. {half_orm_dev-1.0.0a10 → half_orm_dev-1.0.0a12}/half_orm_dev/patches/log +0 -0
  51. {half_orm_dev-1.0.0a10 → half_orm_dev-1.0.0a12}/half_orm_dev/patches/sql/half_orm_meta.sql +0 -0
  52. {half_orm_dev-1.0.0a10 → half_orm_dev-1.0.0a12}/half_orm_dev/release_file.py +0 -0
  53. {half_orm_dev-1.0.0a10 → half_orm_dev-1.0.0a12}/half_orm_dev/release_manager.py +0 -0
  54. {half_orm_dev-1.0.0a10 → half_orm_dev-1.0.0a12}/half_orm_dev/repo.py +0 -0
  55. {half_orm_dev-1.0.0a10 → half_orm_dev-1.0.0a12}/half_orm_dev/scripts/repair-metadata.py +0 -0
  56. {half_orm_dev-1.0.0a10 → half_orm_dev-1.0.0a12}/half_orm_dev/templates/.gitignore +0 -0
  57. {half_orm_dev-1.0.0a10 → half_orm_dev-1.0.0a12}/half_orm_dev/templates/MANIFEST.in +0 -0
  58. {half_orm_dev-1.0.0a10 → half_orm_dev-1.0.0a12}/half_orm_dev/templates/README +0 -0
  59. {half_orm_dev-1.0.0a10 → half_orm_dev-1.0.0a12}/half_orm_dev/templates/conftest_template +0 -0
  60. {half_orm_dev-1.0.0a10 → half_orm_dev-1.0.0a12}/half_orm_dev/templates/git-hooks/pre-commit +0 -0
  61. {half_orm_dev-1.0.0a10 → half_orm_dev-1.0.0a12}/half_orm_dev/templates/git-hooks/prepare-commit-msg +0 -0
  62. {half_orm_dev-1.0.0a10 → half_orm_dev-1.0.0a12}/half_orm_dev/templates/init_module_template +0 -0
  63. {half_orm_dev-1.0.0a10 → half_orm_dev-1.0.0a12}/half_orm_dev/templates/module_stub_template +0 -0
  64. {half_orm_dev-1.0.0a10 → half_orm_dev-1.0.0a12}/half_orm_dev/templates/module_template_1 +0 -0
  65. {half_orm_dev-1.0.0a10 → half_orm_dev-1.0.0a12}/half_orm_dev/templates/module_template_2 +0 -0
  66. {half_orm_dev-1.0.0a10 → half_orm_dev-1.0.0a12}/half_orm_dev/templates/module_template_3 +0 -0
  67. {half_orm_dev-1.0.0a10 → half_orm_dev-1.0.0a12}/half_orm_dev/templates/pyproject.toml +0 -0
  68. {half_orm_dev-1.0.0a10 → half_orm_dev-1.0.0a12}/half_orm_dev/templates/relation_test +0 -0
  69. {half_orm_dev-1.0.0a10 → half_orm_dev-1.0.0a12}/half_orm_dev/templates/sql_adapter +0 -0
  70. {half_orm_dev-1.0.0a10 → half_orm_dev-1.0.0a12}/half_orm_dev/templates/warning +0 -0
  71. {half_orm_dev-1.0.0a10 → half_orm_dev-1.0.0a12}/half_orm_dev/utils.py +0 -0
  72. {half_orm_dev-1.0.0a10 → half_orm_dev-1.0.0a12}/half_orm_dev.egg-info/SOURCES.txt +0 -0
  73. {half_orm_dev-1.0.0a10 → half_orm_dev-1.0.0a12}/half_orm_dev.egg-info/dependency_links.txt +0 -0
  74. {half_orm_dev-1.0.0a10 → half_orm_dev-1.0.0a12}/half_orm_dev.egg-info/entry_points.txt +0 -0
  75. {half_orm_dev-1.0.0a10 → half_orm_dev-1.0.0a12}/half_orm_dev.egg-info/requires.txt +0 -0
  76. {half_orm_dev-1.0.0a10 → half_orm_dev-1.0.0a12}/half_orm_dev.egg-info/top_level.txt +0 -0
  77. {half_orm_dev-1.0.0a10 → half_orm_dev-1.0.0a12}/pyproject.toml +0 -0
  78. {half_orm_dev-1.0.0a10 → half_orm_dev-1.0.0a12}/setup.cfg +0 -0
  79. {half_orm_dev-1.0.0a10 → half_orm_dev-1.0.0a12}/setup.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: half_orm_dev
3
- Version: 1.0.0a10
3
+ Version: 1.0.0a12
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
@@ -423,14 +423,27 @@ def __get_inheritance_info(rel, package_name):
423
423
 
424
424
 
425
425
  def __get_fkeys(repo, class_name, module_path):
426
+ """Read the Fkeys dict from the module file using AST, without importing.
427
+
428
+ Importing via importlib requires the project package to be on sys.path,
429
+ which is not guaranteed during `hop migrate`. Parsing with ast reads
430
+ directly from the file on disk regardless of installation state.
431
+ """
432
+ if not os.path.exists(module_path):
433
+ return {}
426
434
  try:
427
- mod_path = module_path.replace(str(repo.base_dir), '').replace(os.path.sep, '.')[1:-3]
428
- mod = importlib.import_module(mod_path)
429
- importlib.reload(mod)
430
- cls = mod.__dict__[class_name]
431
- fkeys = cls.__dict__.get('Fkeys', {})
432
- return fkeys
433
- except ModuleNotFoundError:
435
+ import ast
436
+ source = utils.read(module_path)
437
+ tree = ast.parse(source)
438
+ for node in ast.walk(tree):
439
+ if isinstance(node, ast.ClassDef) and node.name == class_name:
440
+ for stmt in node.body:
441
+ if (isinstance(stmt, ast.Assign)
442
+ and len(stmt.targets) == 1
443
+ and isinstance(stmt.targets[0], ast.Name)
444
+ and stmt.targets[0].id == 'Fkeys'):
445
+ return ast.literal_eval(stmt.value)
446
+ except Exception:
434
447
  pass
435
448
  return {}
436
449
 
@@ -450,7 +463,8 @@ def __apply_fkey_aliases_to_doc(documentation: str, rel, existing_fkeys: dict) -
450
463
  # Invert existing_fkeys: constraint_name → alias (skip empty aliases)
451
464
  aliases = {constraint: alias for alias, constraint in existing_fkeys.items() if alias}
452
465
 
453
- lines = [" Fkeys = {"]
466
+ # documentation adds 4 spaces to each line from str(rel), so Fkeys = { is at 4 spaces
467
+ lines = [" Fkeys = {"]
454
468
  for constraint_name in rel._ho_fkeys:
455
469
  if constraint_name in aliases:
456
470
  key = aliases[constraint_name]
@@ -458,12 +472,12 @@ def __apply_fkey_aliases_to_doc(documentation: str, rel, existing_fkeys: dict) -
458
472
  key = 'rfk_' + constraint_name[len('_reverse_fkey_'):]
459
473
  else:
460
474
  key = 'fk_' + constraint_name
461
- lines.append(f" '{key}': '{constraint_name}',")
462
- lines.append(" }")
475
+ lines.append(f" '{key}': '{constraint_name}',")
476
+ lines.append(" }")
463
477
  new_block = '\n'.join(lines)
464
478
 
465
479
  return re.sub(
466
- r' Fkeys = \{[^}]*\}',
480
+ r' Fkeys = \{[^}]*\}',
467
481
  new_block,
468
482
  documentation,
469
483
  flags=re.DOTALL,
@@ -0,0 +1 @@
1
+ 1.0.0-a12
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: half_orm_dev
3
- Version: 1.0.0a10
3
+ Version: 1.0.0a12
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
- 1.0.0-a10
File without changes
File without changes