vega-framework 0.1.26__tar.gz → 0.1.28__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 (78) hide show
  1. {vega_framework-0.1.26 → vega_framework-0.1.28}/PKG-INFO +1 -1
  2. {vega_framework-0.1.26 → vega_framework-0.1.28}/pyproject.toml +1 -1
  3. {vega_framework-0.1.26 → vega_framework-0.1.28}/vega/cli/commands/add.py +1 -4
  4. {vega_framework-0.1.26 → vega_framework-0.1.28}/vega/cli/commands/generate.py +1 -29
  5. {vega_framework-0.1.26 → vega_framework-0.1.28}/vega/cli/templates/domain/repository_interface.py.j2 +1 -1
  6. {vega_framework-0.1.26 → vega_framework-0.1.28}/vega/cli/templates/project/pyproject.toml.j2 +0 -4
  7. {vega_framework-0.1.26 → vega_framework-0.1.28}/vega/cli/utils/__init__.py +5 -1
  8. {vega_framework-0.1.26 → vega_framework-0.1.28}/vega/cli/utils/naming.py +20 -0
  9. {vega_framework-0.1.26 → vega_framework-0.1.28}/LICENSE +0 -0
  10. {vega_framework-0.1.26 → vega_framework-0.1.28}/README.md +0 -0
  11. {vega_framework-0.1.26 → vega_framework-0.1.28}/vega/__init__.py +0 -0
  12. {vega_framework-0.1.26 → vega_framework-0.1.28}/vega/cli/__init__.py +0 -0
  13. {vega_framework-0.1.26 → vega_framework-0.1.28}/vega/cli/commands/__init__.py +0 -0
  14. {vega_framework-0.1.26 → vega_framework-0.1.28}/vega/cli/commands/init.py +0 -0
  15. {vega_framework-0.1.26 → vega_framework-0.1.28}/vega/cli/commands/migrate.py +0 -0
  16. {vega_framework-0.1.26 → vega_framework-0.1.28}/vega/cli/commands/update.py +0 -0
  17. {vega_framework-0.1.26 → vega_framework-0.1.28}/vega/cli/commands/web.py +0 -0
  18. {vega_framework-0.1.26 → vega_framework-0.1.28}/vega/cli/main.py +0 -0
  19. {vega_framework-0.1.26 → vega_framework-0.1.28}/vega/cli/scaffolds/__init__.py +0 -0
  20. {vega_framework-0.1.26 → vega_framework-0.1.28}/vega/cli/scaffolds/fastapi.py +0 -0
  21. {vega_framework-0.1.26 → vega_framework-0.1.28}/vega/cli/scaffolds/sqlalchemy.py +0 -0
  22. {vega_framework-0.1.26 → vega_framework-0.1.28}/vega/cli/templates/__init__.py +0 -0
  23. {vega_framework-0.1.26 → vega_framework-0.1.28}/vega/cli/templates/cli/command.py.j2 +0 -0
  24. {vega_framework-0.1.26 → vega_framework-0.1.28}/vega/cli/templates/cli/command_simple.py.j2 +0 -0
  25. {vega_framework-0.1.26 → vega_framework-0.1.28}/vega/cli/templates/cli/commands_init.py.j2 +0 -0
  26. {vega_framework-0.1.26 → vega_framework-0.1.28}/vega/cli/templates/components.py +0 -0
  27. {vega_framework-0.1.26 → vega_framework-0.1.28}/vega/cli/templates/domain/entity.py.j2 +0 -0
  28. {vega_framework-0.1.26 → vega_framework-0.1.28}/vega/cli/templates/domain/interactor.py.j2 +0 -0
  29. {vega_framework-0.1.26 → vega_framework-0.1.28}/vega/cli/templates/domain/mediator.py.j2 +0 -0
  30. {vega_framework-0.1.26 → vega_framework-0.1.28}/vega/cli/templates/domain/service_interface.py.j2 +0 -0
  31. {vega_framework-0.1.26 → vega_framework-0.1.28}/vega/cli/templates/infrastructure/model.py.j2 +0 -0
  32. {vega_framework-0.1.26 → vega_framework-0.1.28}/vega/cli/templates/infrastructure/repository_impl.py.j2 +0 -0
  33. {vega_framework-0.1.26 → vega_framework-0.1.28}/vega/cli/templates/infrastructure/service_impl.py.j2 +0 -0
  34. {vega_framework-0.1.26 → vega_framework-0.1.28}/vega/cli/templates/loader.py +0 -0
  35. {vega_framework-0.1.26 → vega_framework-0.1.28}/vega/cli/templates/project/.env.example +0 -0
  36. {vega_framework-0.1.26 → vega_framework-0.1.28}/vega/cli/templates/project/.gitignore +0 -0
  37. {vega_framework-0.1.26 → vega_framework-0.1.28}/vega/cli/templates/project/ARCHITECTURE.md.j2 +0 -0
  38. {vega_framework-0.1.26 → vega_framework-0.1.28}/vega/cli/templates/project/README.md.j2 +0 -0
  39. {vega_framework-0.1.26 → vega_framework-0.1.28}/vega/cli/templates/project/config.py.j2 +0 -0
  40. {vega_framework-0.1.26 → vega_framework-0.1.28}/vega/cli/templates/project/main.py.j2 +0 -0
  41. {vega_framework-0.1.26 → vega_framework-0.1.28}/vega/cli/templates/project/main_fastapi.py.j2 +0 -0
  42. {vega_framework-0.1.26 → vega_framework-0.1.28}/vega/cli/templates/project/main_standard.py.j2 +0 -0
  43. {vega_framework-0.1.26 → vega_framework-0.1.28}/vega/cli/templates/project/settings.py.j2 +0 -0
  44. {vega_framework-0.1.26 → vega_framework-0.1.28}/vega/cli/templates/sqlalchemy/alembic.ini.j2 +0 -0
  45. {vega_framework-0.1.26 → vega_framework-0.1.28}/vega/cli/templates/sqlalchemy/database_manager.py.j2 +0 -0
  46. {vega_framework-0.1.26 → vega_framework-0.1.28}/vega/cli/templates/sqlalchemy/env.py.j2 +0 -0
  47. {vega_framework-0.1.26 → vega_framework-0.1.28}/vega/cli/templates/sqlalchemy/script.py.mako +0 -0
  48. {vega_framework-0.1.26 → vega_framework-0.1.28}/vega/cli/templates/web/__init__.py.j2 +0 -0
  49. {vega_framework-0.1.26 → vega_framework-0.1.28}/vega/cli/templates/web/app.py.j2 +0 -0
  50. {vega_framework-0.1.26 → vega_framework-0.1.28}/vega/cli/templates/web/health_route.py.j2 +0 -0
  51. {vega_framework-0.1.26 → vega_framework-0.1.28}/vega/cli/templates/web/main.py.j2 +0 -0
  52. {vega_framework-0.1.26 → vega_framework-0.1.28}/vega/cli/templates/web/middleware.py.j2 +0 -0
  53. {vega_framework-0.1.26 → vega_framework-0.1.28}/vega/cli/templates/web/models_init.py.j2 +0 -0
  54. {vega_framework-0.1.26 → vega_framework-0.1.28}/vega/cli/templates/web/request_model.py.j2 +0 -0
  55. {vega_framework-0.1.26 → vega_framework-0.1.28}/vega/cli/templates/web/response_model.py.j2 +0 -0
  56. {vega_framework-0.1.26 → vega_framework-0.1.28}/vega/cli/templates/web/router.py.j2 +0 -0
  57. {vega_framework-0.1.26 → vega_framework-0.1.28}/vega/cli/templates/web/routes_init.py.j2 +0 -0
  58. {vega_framework-0.1.26 → vega_framework-0.1.28}/vega/cli/templates/web/routes_init_autodiscovery.py.j2 +0 -0
  59. {vega_framework-0.1.26 → vega_framework-0.1.28}/vega/cli/templates/web/user_models.py.j2 +0 -0
  60. {vega_framework-0.1.26 → vega_framework-0.1.28}/vega/cli/templates/web/users_route.py.j2 +0 -0
  61. {vega_framework-0.1.26 → vega_framework-0.1.28}/vega/cli/utils/async_support.py +0 -0
  62. {vega_framework-0.1.26 → vega_framework-0.1.28}/vega/cli/utils/messages.py +0 -0
  63. {vega_framework-0.1.26 → vega_framework-0.1.28}/vega/cli/utils/validators.py +0 -0
  64. {vega_framework-0.1.26 → vega_framework-0.1.28}/vega/di/__init__.py +0 -0
  65. {vega_framework-0.1.26 → vega_framework-0.1.28}/vega/di/container.py +0 -0
  66. {vega_framework-0.1.26 → vega_framework-0.1.28}/vega/di/decorators.py +0 -0
  67. {vega_framework-0.1.26 → vega_framework-0.1.28}/vega/di/errors.py +0 -0
  68. {vega_framework-0.1.26 → vega_framework-0.1.28}/vega/di/scope.py +0 -0
  69. {vega_framework-0.1.26 → vega_framework-0.1.28}/vega/discovery/__init__.py +0 -0
  70. {vega_framework-0.1.26 → vega_framework-0.1.28}/vega/discovery/commands.py +0 -0
  71. {vega_framework-0.1.26 → vega_framework-0.1.28}/vega/discovery/routes.py +0 -0
  72. {vega_framework-0.1.26 → vega_framework-0.1.28}/vega/patterns/__init__.py +0 -0
  73. {vega_framework-0.1.26 → vega_framework-0.1.28}/vega/patterns/interactor.py +0 -0
  74. {vega_framework-0.1.26 → vega_framework-0.1.28}/vega/patterns/mediator.py +0 -0
  75. {vega_framework-0.1.26 → vega_framework-0.1.28}/vega/patterns/repository.py +0 -0
  76. {vega_framework-0.1.26 → vega_framework-0.1.28}/vega/patterns/service.py +0 -0
  77. {vega_framework-0.1.26 → vega_framework-0.1.28}/vega/settings/__init__.py +0 -0
  78. {vega_framework-0.1.26 → vega_framework-0.1.28}/vega/settings/base.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: vega-framework
3
- Version: 0.1.26
3
+ Version: 0.1.28
4
4
  Summary: Enterprise-ready Python framework that enforces Clean Architecture for building maintainable and scalable applications.
5
5
  License: MIT
6
6
  License-File: LICENSE
@@ -1,6 +1,6 @@
1
1
  [tool.poetry]
2
2
  name = "vega-framework"
3
- version = "0.1.26"
3
+ version = "0.1.28"
4
4
  description = "Enterprise-ready Python framework that enforces Clean Architecture for building maintainable and scalable applications."
5
5
  authors = ["Roberto Ferro"]
6
6
  license = "MIT"
@@ -114,9 +114,6 @@ def add_sqlalchemy_feature(project_path: Path, project_name: str):
114
114
  def _create_user_example_repository(project_path: Path, project_name: str):
115
115
  """Create example User entity, repository, and SQLAlchemy implementation"""
116
116
  from vega.cli.commands.generate import _generate_entity, _generate_repository, _generate_sqlalchemy_model, _generate_infrastructure_repository
117
- from vega.cli.utils import to_pascal_case, to_snake_case
118
-
119
- # Suppress verbose output temporarily by redirecting
120
117
  import sys
121
118
  from io import StringIO
122
119
 
@@ -153,7 +150,7 @@ def _create_user_example_repository(project_path: Path, project_name: str):
153
150
  'sql'
154
151
  )
155
152
 
156
- click.echo(click.style("\n Example User repository created!", fg='green'))
153
+ click.echo(click.style("\n [OK] Example User repository created!", fg='green'))
157
154
  click.echo("\nGenerated files:")
158
155
  click.echo(" - domain/entities/user.py")
159
156
  click.echo(" - domain/repositories/user_repository.py")
@@ -1,6 +1,5 @@
1
1
  """Generate command - Create components in Vega project"""
2
2
  import click
3
- import re
4
3
  from pathlib import Path
5
4
 
6
5
  from vega.cli.templates import (
@@ -19,34 +18,7 @@ from vega.cli.templates import (
19
18
  render_template,
20
19
  )
21
20
  from vega.cli.scaffolds import create_fastapi_scaffold
22
-
23
-
24
-
25
- def to_snake_case(name: str) -> str:
26
- """Convert CamelCase to snake_case"""
27
- name = re.sub('(.)([A-Z][a-z]+)', r'\1_\2', name)
28
- return re.sub('([a-z0-9])([A-Z])', r'\1_\2', name).lower()
29
-
30
-
31
- def to_pascal_case(name: str) -> str:
32
- """Convert strings to PascalCase, handling separators and camelCase input"""
33
- cleaned = name.strip()
34
- if not cleaned:
35
- return ""
36
-
37
- # Normalize common separators to spaces
38
- normalized = cleaned.replace('-', ' ').replace('_', ' ')
39
- if ' ' in normalized:
40
- parts = normalized.split()
41
- else:
42
- parts = re.findall(r'[A-Z]+(?=$|[A-Z][a-z0-9])|[A-Z]?[a-z0-9]+|[0-9]+', cleaned)
43
- if not parts:
44
- parts = [cleaned]
45
-
46
- def _pascal_piece(piece: str) -> str:
47
- return piece if piece.isupper() else piece[:1].upper() + piece[1:].lower()
48
-
49
- return ''.join(_pascal_piece(part) for part in parts if part)
21
+ from vega.cli.utils import to_snake_case, to_pascal_case
50
22
 
51
23
 
52
24
  def _resolve_implementation_names(class_name: str, implementation: str) -> tuple[str, str]:
@@ -3,7 +3,7 @@ from abc import abstractmethod
3
3
  from typing import List, Optional
4
4
 
5
5
  from vega.patterns import Repository
6
- from ..entities.{{ entity_file }} import {{ entity_name }}
6
+ from entities.{{ entity_file }} import {{ entity_name }}
7
7
 
8
8
 
9
9
  class {{ class_name }}(Repository[{{ entity_name }}]):
@@ -12,11 +12,7 @@ vega-framework = "^{{ vega_version }}"
12
12
  pydantic = "^2.0"
13
13
  pydantic-settings = "^2.0"
14
14
  click = "^8.1.0"
15
- {% if template == "fastapi" -%}
16
- fastapi = "^0.115.0"
17
- uvicorn = {extras = ["standard"], version = "^0.32.0"}
18
15
  email-validator = "^2.0"
19
- {% endif -%}
20
16
 
21
17
  [tool.poetry.group.dev.dependencies]
22
18
  pytest = "^7.0"
@@ -1,11 +1,15 @@
1
1
  """Utility modules for Vega CLI"""
2
- from .naming import NamingConverter
2
+ from .naming import NamingConverter, to_snake_case, to_pascal_case, to_camel_case, to_kebab_case
3
3
  from .messages import CLIMessages
4
4
  from .validators import validate_project_name, validate_path_exists
5
5
  from .async_support import async_command, coro
6
6
 
7
7
  __all__ = [
8
8
  "NamingConverter",
9
+ "to_snake_case",
10
+ "to_pascal_case",
11
+ "to_camel_case",
12
+ "to_kebab_case",
9
13
  "CLIMessages",
10
14
  "validate_project_name",
11
15
  "validate_path_exists",
@@ -2,6 +2,26 @@
2
2
  import re
3
3
 
4
4
 
5
+ def to_snake_case(name: str) -> str:
6
+ """Convert CamelCase/PascalCase to snake_case (standalone function for convenience)"""
7
+ return NamingConverter.to_snake_case(name)
8
+
9
+
10
+ def to_pascal_case(name: str) -> str:
11
+ """Convert any format to PascalCase (standalone function for convenience)"""
12
+ return NamingConverter.to_pascal_case(name)
13
+
14
+
15
+ def to_camel_case(name: str) -> str:
16
+ """Convert any format to camelCase (standalone function for convenience)"""
17
+ return NamingConverter.to_camel_case(name)
18
+
19
+
20
+ def to_kebab_case(name: str) -> str:
21
+ """Convert any format to kebab-case (standalone function for convenience)"""
22
+ return NamingConverter.to_kebab_case(name)
23
+
24
+
5
25
  class NamingConverter:
6
26
  """Utility class for converting between naming conventions"""
7
27
 
File without changes