half-orm-dev 1.0.0a14__tar.gz → 1.0.0a15__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 (80) hide show
  1. {half_orm_dev-1.0.0a14/half_orm_dev.egg-info → half_orm_dev-1.0.0a15}/PKG-INFO +1 -1
  2. {half_orm_dev-1.0.0a14 → half_orm_dev-1.0.0a15}/half_orm_dev/modules.py +85 -36
  3. {half_orm_dev-1.0.0a14 → half_orm_dev-1.0.0a15}/half_orm_dev/templates/module_template_1 +1 -2
  4. half_orm_dev-1.0.0a15/half_orm_dev/templates/module_template_2 +7 -0
  5. {half_orm_dev-1.0.0a14 → half_orm_dev-1.0.0a15}/half_orm_dev/templates/module_template_3 +1 -1
  6. half_orm_dev-1.0.0a15/half_orm_dev/version.txt +1 -0
  7. {half_orm_dev-1.0.0a14 → half_orm_dev-1.0.0a15/half_orm_dev.egg-info}/PKG-INFO +1 -1
  8. {half_orm_dev-1.0.0a14 → half_orm_dev-1.0.0a15}/half_orm_dev.egg-info/SOURCES.txt +0 -1
  9. half_orm_dev-1.0.0a14/half_orm_dev/templates/module_stub_template +0 -8
  10. half_orm_dev-1.0.0a14/half_orm_dev/templates/module_template_2 +0 -7
  11. half_orm_dev-1.0.0a14/half_orm_dev/version.txt +0 -1
  12. {half_orm_dev-1.0.0a14 → half_orm_dev-1.0.0a15}/AUTHORS +0 -0
  13. {half_orm_dev-1.0.0a14 → half_orm_dev-1.0.0a15}/LICENSE +0 -0
  14. {half_orm_dev-1.0.0a14 → half_orm_dev-1.0.0a15}/README.md +0 -0
  15. {half_orm_dev-1.0.0a14 → half_orm_dev-1.0.0a15}/half_orm_dev/__init__.py +0 -0
  16. {half_orm_dev-1.0.0a14 → half_orm_dev-1.0.0a15}/half_orm_dev/bootstrap_manager.py +0 -0
  17. {half_orm_dev-1.0.0a14 → half_orm_dev-1.0.0a15}/half_orm_dev/cli/__init__.py +0 -0
  18. {half_orm_dev-1.0.0a14 → half_orm_dev-1.0.0a15}/half_orm_dev/cli/commands/__init__.py +0 -0
  19. {half_orm_dev-1.0.0a14 → half_orm_dev-1.0.0a15}/half_orm_dev/cli/commands/apply.py +0 -0
  20. {half_orm_dev-1.0.0a14 → half_orm_dev-1.0.0a15}/half_orm_dev/cli/commands/bootstrap.py +0 -0
  21. {half_orm_dev-1.0.0a14 → half_orm_dev-1.0.0a15}/half_orm_dev/cli/commands/check.py +0 -0
  22. {half_orm_dev-1.0.0a14 → half_orm_dev-1.0.0a15}/half_orm_dev/cli/commands/clone.py +0 -0
  23. {half_orm_dev-1.0.0a14 → half_orm_dev-1.0.0a15}/half_orm_dev/cli/commands/init.py +0 -0
  24. {half_orm_dev-1.0.0a14 → half_orm_dev-1.0.0a15}/half_orm_dev/cli/commands/migrate.py +0 -0
  25. {half_orm_dev-1.0.0a14 → half_orm_dev-1.0.0a15}/half_orm_dev/cli/commands/patch.py +0 -0
  26. {half_orm_dev-1.0.0a14 → half_orm_dev-1.0.0a15}/half_orm_dev/cli/commands/release.py +0 -0
  27. {half_orm_dev-1.0.0a14 → half_orm_dev-1.0.0a15}/half_orm_dev/cli/commands/restore.py +0 -0
  28. {half_orm_dev-1.0.0a14 → half_orm_dev-1.0.0a15}/half_orm_dev/cli/commands/revert_migration.py +0 -0
  29. {half_orm_dev-1.0.0a14 → half_orm_dev-1.0.0a15}/half_orm_dev/cli/commands/set_git_origin.py +0 -0
  30. {half_orm_dev-1.0.0a14 → half_orm_dev-1.0.0a15}/half_orm_dev/cli/commands/sync.py +0 -0
  31. {half_orm_dev-1.0.0a14 → half_orm_dev-1.0.0a15}/half_orm_dev/cli/commands/todo.py +0 -0
  32. {half_orm_dev-1.0.0a14 → half_orm_dev-1.0.0a15}/half_orm_dev/cli/commands/undo.py +0 -0
  33. {half_orm_dev-1.0.0a14 → half_orm_dev-1.0.0a15}/half_orm_dev/cli/commands/update.py +0 -0
  34. {half_orm_dev-1.0.0a14 → half_orm_dev-1.0.0a15}/half_orm_dev/cli/commands/upgrade.py +0 -0
  35. {half_orm_dev-1.0.0a14 → half_orm_dev-1.0.0a15}/half_orm_dev/cli/main.py +0 -0
  36. {half_orm_dev-1.0.0a14 → half_orm_dev-1.0.0a15}/half_orm_dev/cli_extension.py +0 -0
  37. {half_orm_dev-1.0.0a14 → half_orm_dev-1.0.0a15}/half_orm_dev/database.py +0 -0
  38. {half_orm_dev-1.0.0a14 → half_orm_dev-1.0.0a15}/half_orm_dev/decorators.py +0 -0
  39. {half_orm_dev-1.0.0a14 → half_orm_dev-1.0.0a15}/half_orm_dev/file_executor.py +0 -0
  40. {half_orm_dev-1.0.0a14 → half_orm_dev-1.0.0a15}/half_orm_dev/hgit.py +0 -0
  41. {half_orm_dev-1.0.0a14 → half_orm_dev-1.0.0a15}/half_orm_dev/migration_manager.py +0 -0
  42. {half_orm_dev-1.0.0a14 → half_orm_dev-1.0.0a15}/half_orm_dev/migrations/0/17/1/00_move_to_hop.py +0 -0
  43. {half_orm_dev-1.0.0a14 → half_orm_dev-1.0.0a15}/half_orm_dev/migrations/0/17/1/01_txt_to_toml.py +0 -0
  44. {half_orm_dev-1.0.0a14 → half_orm_dev-1.0.0a15}/half_orm_dev/migrations/0/17/4/00_toml_dict_format.py +0 -0
  45. {half_orm_dev-1.0.0a14 → half_orm_dev-1.0.0a15}/half_orm_dev/migrations/0/17/4/01_add_bootstrap_table.py +0 -0
  46. {half_orm_dev-1.0.0a14 → half_orm_dev-1.0.0a15}/half_orm_dev/migrations/0/17/4/02_move_patches_to_subdirs.py +0 -0
  47. {half_orm_dev-1.0.0a14 → half_orm_dev-1.0.0a15}/half_orm_dev/migrations/0/17/5/01_update_pyproject_dependency.py +0 -0
  48. {half_orm_dev-1.0.0a14 → half_orm_dev-1.0.0a15}/half_orm_dev/migrations/0/18/0/00_add_async_support.py +0 -0
  49. {half_orm_dev-1.0.0a14 → half_orm_dev-1.0.0a15}/half_orm_dev/migrations/0/18/0/01_update_default_tests.py +0 -0
  50. {half_orm_dev-1.0.0a14 → half_orm_dev-1.0.0a15}/half_orm_dev/migrations/hop/BREAKING_CHANGES-1.0.0.md +0 -0
  51. {half_orm_dev-1.0.0a14 → half_orm_dev-1.0.0a15}/half_orm_dev/patch_manager.py +0 -0
  52. {half_orm_dev-1.0.0a14 → half_orm_dev-1.0.0a15}/half_orm_dev/patch_validator.py +0 -0
  53. {half_orm_dev-1.0.0a14 → half_orm_dev-1.0.0a15}/half_orm_dev/patches/0/1/0/00_half_orm_meta.database.sql +0 -0
  54. {half_orm_dev-1.0.0a14 → half_orm_dev-1.0.0a15}/half_orm_dev/patches/0/1/0/01_alter_half_orm_meta.hop_release.sql +0 -0
  55. {half_orm_dev-1.0.0a14 → half_orm_dev-1.0.0a15}/half_orm_dev/patches/0/1/0/02_half_orm_meta.view.hop_penultimate_release.sql +0 -0
  56. {half_orm_dev-1.0.0a14 → half_orm_dev-1.0.0a15}/half_orm_dev/patches/log +0 -0
  57. {half_orm_dev-1.0.0a14 → half_orm_dev-1.0.0a15}/half_orm_dev/patches/sql/half_orm_meta.sql +0 -0
  58. {half_orm_dev-1.0.0a14 → half_orm_dev-1.0.0a15}/half_orm_dev/release_file.py +0 -0
  59. {half_orm_dev-1.0.0a14 → half_orm_dev-1.0.0a15}/half_orm_dev/release_manager.py +0 -0
  60. {half_orm_dev-1.0.0a14 → half_orm_dev-1.0.0a15}/half_orm_dev/repo.py +0 -0
  61. {half_orm_dev-1.0.0a14 → half_orm_dev-1.0.0a15}/half_orm_dev/scripts/repair-metadata.py +0 -0
  62. {half_orm_dev-1.0.0a14 → half_orm_dev-1.0.0a15}/half_orm_dev/templates/.gitignore +0 -0
  63. {half_orm_dev-1.0.0a14 → half_orm_dev-1.0.0a15}/half_orm_dev/templates/MANIFEST.in +0 -0
  64. {half_orm_dev-1.0.0a14 → half_orm_dev-1.0.0a15}/half_orm_dev/templates/README +0 -0
  65. {half_orm_dev-1.0.0a14 → half_orm_dev-1.0.0a15}/half_orm_dev/templates/conftest_template +0 -0
  66. {half_orm_dev-1.0.0a14 → half_orm_dev-1.0.0a15}/half_orm_dev/templates/git-hooks/pre-commit +0 -0
  67. {half_orm_dev-1.0.0a14 → half_orm_dev-1.0.0a15}/half_orm_dev/templates/git-hooks/prepare-commit-msg +0 -0
  68. {half_orm_dev-1.0.0a14 → half_orm_dev-1.0.0a15}/half_orm_dev/templates/init_module_template +0 -0
  69. {half_orm_dev-1.0.0a14 → half_orm_dev-1.0.0a15}/half_orm_dev/templates/pyproject.toml +0 -0
  70. {half_orm_dev-1.0.0a14 → half_orm_dev-1.0.0a15}/half_orm_dev/templates/relation_test +0 -0
  71. {half_orm_dev-1.0.0a14 → half_orm_dev-1.0.0a15}/half_orm_dev/templates/sql_adapter +0 -0
  72. {half_orm_dev-1.0.0a14 → half_orm_dev-1.0.0a15}/half_orm_dev/templates/warning +0 -0
  73. {half_orm_dev-1.0.0a14 → half_orm_dev-1.0.0a15}/half_orm_dev/utils.py +0 -0
  74. {half_orm_dev-1.0.0a14 → half_orm_dev-1.0.0a15}/half_orm_dev.egg-info/dependency_links.txt +0 -0
  75. {half_orm_dev-1.0.0a14 → half_orm_dev-1.0.0a15}/half_orm_dev.egg-info/entry_points.txt +0 -0
  76. {half_orm_dev-1.0.0a14 → half_orm_dev-1.0.0a15}/half_orm_dev.egg-info/requires.txt +0 -0
  77. {half_orm_dev-1.0.0a14 → half_orm_dev-1.0.0a15}/half_orm_dev.egg-info/top_level.txt +0 -0
  78. {half_orm_dev-1.0.0a14 → half_orm_dev-1.0.0a15}/pyproject.toml +0 -0
  79. {half_orm_dev-1.0.0a14 → half_orm_dev-1.0.0a15}/setup.cfg +0 -0
  80. {half_orm_dev-1.0.0a14 → half_orm_dev-1.0.0a15}/setup.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: half_orm_dev
3
- Version: 1.0.0a14
3
+ Version: 1.0.0a15
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
@@ -48,11 +48,12 @@ HO_DATACLASSES = []
48
48
  HO_DATACLASSES_IMPORTS = set()
49
49
  HO_TYPEDICTS: list = []
50
50
  HO_TYPEDICTS_IMPORTS: set = set()
51
+ HO_BASECLASSES: list = []
52
+ HO_BASECLASSES_DICT_NAMES: set = set()
51
53
  INIT_MODULE_TEMPLATE = read_template('init_module_template')
52
54
  MODULE_TEMPLATE_1 = read_template('module_template_1')
53
55
  MODULE_TEMPLATE_2 = read_template('module_template_2')
54
56
  MODULE_TEMPLATE_3 = read_template('module_template_3')
55
- MODULE_STUB_TEMPLATE = read_template('module_stub_template')
56
57
  WARNING_TEMPLATE = read_template('warning')
57
58
  CONFTEST = read_template('conftest_template')
58
59
  TEST = read_template('relation_test')
@@ -335,18 +336,6 @@ def __gen_typedict(relation, fkeys) -> list:
335
336
  return extra_classes + [main_class]
336
337
 
337
338
 
338
- def __gen_stub_file(module_path: str, class_name: str, dict_class_name: str, package_name: str) -> str:
339
- """Generate a .pyi stub alongside the module for IDE type inference."""
340
- stub_path = module_path[:-3] + '.pyi'
341
- with open(stub_path, 'w', encoding='utf-8') as f:
342
- f.write(MODULE_STUB_TEMPLATE.format(
343
- package_name=package_name,
344
- dict_class_name=dict_class_name,
345
- class_name=class_name,
346
- ))
347
- return stub_path
348
-
349
-
350
339
  def __gen_typedicts(package_dir: str, package_name: str) -> None:
351
340
  with open(os.path.join(package_dir, "ho_typeddicts.py"), "w", encoding='utf-8') as file_:
352
341
  file_.write(f"# TypedDicts for {package_name}\n\n")
@@ -563,7 +552,9 @@ def __update_this_module(
563
552
  rel, package_name)
564
553
 
565
554
  t_qrn = list(rel._t_fqrn)[1:]
566
- dict_class_name = f'{__get_full_class_name(*t_qrn)}Dict'
555
+ full_name = __get_full_class_name(*t_qrn)
556
+ dict_class_name = f'{full_name}Dict'
557
+ bc_name = f'BC_{full_name}'
567
558
 
568
559
  # Generate Python module
569
560
  with open(module_path, 'w', encoding='utf-8') as file_:
@@ -580,6 +571,7 @@ def __update_this_module(
580
571
  class_name=class_name,
581
572
  dc_name=rel._ho_dataclass_name(),
582
573
  dict_class_name=dict_class_name,
574
+ bc_name=bc_name,
583
575
  fqtn=fqtn,
584
576
  kwargs=kwargs,
585
577
  arg_names=arg_names,
@@ -605,19 +597,9 @@ def __update_this_module(
605
597
 
606
598
  HO_DATACLASSES.append(__gen_dataclass(rel, existing_fkeys))
607
599
  HO_TYPEDICTS.extend(__gen_typedict(rel, existing_fkeys))
600
+ HO_BASECLASSES.append(__gen_baseclass(rel, existing_fkeys))
608
601
 
609
- stub_path = __gen_stub_file(module_path, class_name, dict_class_name, package_name)
610
-
611
- return [module_path, stub_path]
612
-
613
-
614
- def __reset_dataclasses(repo, package_dir):
615
- with open(os.path.join(package_dir, "ho_dataclasses.py"), "w", encoding='utf-8') as file_:
616
- for relation in repo.database.model._relations():
617
- t_qrn = relation[1][1:]
618
- if t_qrn[0].find('half_orm') == 0:
619
- continue
620
- file_.write(f'class DC_{__get_full_class_name(*t_qrn)}: ...\n')
602
+ return module_path
621
603
 
622
604
 
623
605
  _TYPING_NAMES = frozenset(('Any', 'Dict', 'Iterator', 'List', 'Optional', 'Tuple', 'Union'))
@@ -675,20 +657,80 @@ def __gen_dc_relation() -> tuple:
675
657
  return class_str, needed_typing
676
658
 
677
659
 
678
- def __gen_dataclasses(package_dir, package_name):
660
+ def __gen_baseclass(relation, fkeys) -> str:
661
+ """Generate a BC_* base class string with TypedDict-typed method overrides."""
662
+ rel = relation()
663
+ t_qrn = list(rel._t_fqrn)[1:]
664
+ full_name = __get_full_class_name(*t_qrn)
665
+ fqtn = '.'.join(t_qrn)
666
+ bc_name = f'BC_{full_name}'
667
+ dc_name = rel._ho_dataclass_name()
668
+ d = f'{full_name}Dict'
669
+ HO_BASECLASSES_DICT_NAMES.add(d)
670
+ lines = [
671
+ f"class {bc_name}(",
672
+ f" MODEL.get_relation_class('{fqtn}', fields_aliases=None),",
673
+ f" {dc_name}",
674
+ f"):",
675
+ f" def __iter__(self) -> Iterator[{d}]:",
676
+ f" return super().__iter__()",
677
+ f"",
678
+ f" def ho_select(self, *args, distinct: bool = False, order_by: str = None, limit: int = None, offset: int = None, json_agg=None) -> Iterator[{d}]:",
679
+ f" return super().ho_select(*args, distinct=distinct, order_by=order_by, limit=limit, offset=offset, json_agg=json_agg)",
680
+ f"",
681
+ f" def ho_get(self, *args) -> {d}:",
682
+ f" return super().ho_get(*args)",
683
+ f"",
684
+ f" def ho_insert(self, *args, upsert: Optional[bool] = False) -> {d}:",
685
+ f" return super().ho_insert(*args, upsert=upsert)",
686
+ f"",
687
+ f" async def ho_aselect(self, *args, distinct: bool = False, order_by: str = None, limit: int = None, offset: int = None) -> List[{d}]:",
688
+ f" return await super().ho_aselect(*args, distinct=distinct, order_by=order_by, limit=limit, offset=offset)",
689
+ f"",
690
+ f" async def ho_aget(self, *args) -> {d}:",
691
+ f" return await super().ho_aget(*args)",
692
+ f"",
693
+ f" async def ho_ainsert(self, *args, upsert: bool = False) -> {d}:",
694
+ f" return await super().ho_ainsert(*args, upsert=upsert)",
695
+ ]
696
+ return '\n'.join(lines)
697
+
698
+
699
+ def __reset_baseclasses(repo, package_dir):
700
+ with open(os.path.join(package_dir, "ho_baseclasses.py"), "w", encoding='utf-8') as file_:
701
+ for relation in repo.database.model._relations():
702
+ t_qrn = relation[1][1:]
703
+ if t_qrn[0].find('half_orm') == 0:
704
+ continue
705
+ full_name = __get_full_class_name(*t_qrn)
706
+ file_.write(f'class DC_{full_name}: ...\n')
707
+ file_.write(f'class BC_{full_name}: ...\n')
708
+
709
+
710
+ def __gen_baseclasses(package_dir, package_name):
679
711
  dc_relation_str, dc_typing = __gen_dc_relation()
680
- with open(os.path.join(package_dir, "ho_dataclasses.py"), "w", encoding='utf-8') as file_:
681
- file_.write(f"# DO NOT EDIT — auto-generated by half-orm-dev\n\n")
712
+ with open(os.path.join(package_dir, "ho_baseclasses.py"), "w", encoding='utf-8') as file_:
713
+ file_.write("# DO NOT EDIT — auto-generated by half-orm-dev\n\n")
714
+ file_.write("from __future__ import annotations\n")
715
+ typing_names = sorted(dc_typing | {'Iterator', 'List', 'Optional', 'TYPE_CHECKING'})
716
+ file_.write(f"from typing import {', '.join(typing_names)}\n")
682
717
  file_.write("import dataclasses\n")
683
718
  file_.write("from half_orm.field import Field\n")
684
- if dc_typing:
685
- file_.write(f"from typing import {', '.join(sorted(dc_typing))}\n")
686
719
  for mod in sorted(HO_DATACLASSES_IMPORTS):
687
720
  file_.write(f"import {mod}\n")
721
+ file_.write(f"from {package_name} import MODEL\n")
722
+ if HO_BASECLASSES_DICT_NAMES:
723
+ file_.write("if TYPE_CHECKING:\n")
724
+ file_.write(f" from {package_name}.ho_typeddicts import (\n")
725
+ for name in sorted(HO_BASECLASSES_DICT_NAMES):
726
+ file_.write(f" {name},\n")
727
+ file_.write(" )\n")
688
728
  file_.write("\n\n")
689
729
  file_.write(dc_relation_str)
690
730
  for dc in HO_DATACLASSES:
691
731
  file_.write(f"\n\n{dc}\n")
732
+ for bc in HO_BASECLASSES:
733
+ file_.write(f"\n\n{bc}\n")
692
734
 
693
735
 
694
736
  def generate(repo):
@@ -698,6 +740,8 @@ def generate(repo):
698
740
  HO_DATACLASSES_IMPORTS.clear()
699
741
  HO_TYPEDICTS.clear()
700
742
  HO_TYPEDICTS_IMPORTS.clear()
743
+ HO_BASECLASSES.clear()
744
+ HO_BASECLASSES_DICT_NAMES.clear()
701
745
  NO_APAPTER.clear()
702
746
 
703
747
  package_name = repo.name
@@ -721,7 +765,11 @@ def generate(repo):
721
765
  if not package_dir.exists():
722
766
  package_dir.mkdir(parents=True)
723
767
 
724
- __reset_dataclasses(repo, str(package_dir))
768
+ __reset_baseclasses(repo, str(package_dir))
769
+ # Remove legacy ho_dataclasses.py if present (merged into ho_baseclasses.py)
770
+ legacy = Path(package_dir) / "ho_dataclasses.py"
771
+ if legacy.exists():
772
+ legacy.unlink()
725
773
 
726
774
  # Generate package __init__.py
727
775
  with open(package_dir / INIT_PY, 'w', encoding='utf-8') as file_:
@@ -742,12 +790,13 @@ def generate(repo):
742
790
 
743
791
  # Generate modules for each relation
744
792
  for relation in repo.database.model._relations():
745
- paths = __update_this_module(repo, relation, str(package_dir), package_name)
746
- if paths:
747
- files_list.extend(paths)
793
+ module_path = __update_this_module(repo, relation, str(package_dir), package_name)
794
+ if module_path:
795
+ files_list.append(module_path)
796
+ # Tests are no longer added to files_list (they live in tests/ directory)
748
797
 
749
- __gen_dataclasses(str(package_dir), package_name)
750
798
  __gen_typedicts(str(package_dir), package_name)
799
+ __gen_baseclasses(str(package_dir), package_name)
751
800
 
752
801
  if len(NO_APAPTER):
753
802
  print("MISSING ADAPTER FOR SQL TYPE")
@@ -7,6 +7,5 @@ WARNING!
7
7
  {warning}
8
8
  """
9
9
  from half_orm.model import register
10
- from {package_name} import MODEL, ho_dataclasses
11
- fields_aliases=None
10
+ from {package_name} import MODEL, ho_baseclasses
12
11
 
@@ -0,0 +1,7 @@
1
+
2
+ @register
3
+ class {class_name}(ho_baseclasses.{bc_name}):
4
+ """
5
+ {documentation}
6
+ """
7
+
@@ -1,3 +1,3 @@
1
1
  #pylint: disable=line-too-long, too-many-arguments, redefined-builtin, too-many-positional-arguments
2
2
  def __init__(self, {kwargs}):
3
- super().__init__({arg_names}, **kwargs)
3
+ super().__init__({arg_names}, **kwargs)
@@ -0,0 +1 @@
1
+ 1.0.0-a15
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: half_orm_dev
3
- Version: 1.0.0a14
3
+ Version: 1.0.0a15
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
@@ -64,7 +64,6 @@ half_orm_dev/templates/MANIFEST.in
64
64
  half_orm_dev/templates/README
65
65
  half_orm_dev/templates/conftest_template
66
66
  half_orm_dev/templates/init_module_template
67
- half_orm_dev/templates/module_stub_template
68
67
  half_orm_dev/templates/module_template_1
69
68
  half_orm_dev/templates/module_template_2
70
69
  half_orm_dev/templates/module_template_3
@@ -1,8 +0,0 @@
1
- # DO NOT EDIT — auto-generated by half-orm-dev
2
- from typing import Iterator
3
- from {package_name}.ho_typeddicts import {dict_class_name}
4
-
5
- class {class_name}:
6
- def __iter__(self) -> Iterator[{dict_class_name}]: ...
7
- def ho_get(self, *args) -> {dict_class_name}: ...
8
- async def ho_aget(self, *args) -> {dict_class_name}: ...
@@ -1,7 +0,0 @@
1
-
2
- @register
3
- class {class_name}(MODEL.get_relation_class('{fqtn}', fields_aliases=fields_aliases), ho_dataclasses.{dc_name}):
4
- """
5
- {documentation}
6
- """
7
-
@@ -1 +0,0 @@
1
- 1.0.0-a14
File without changes
File without changes