minix 0.2.2__tar.gz → 0.2.3__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 (119) hide show
  1. {minix-0.2.2 → minix-0.2.3}/PKG-INFO +4 -2
  2. {minix-0.2.2 → minix-0.2.3}/README.md +3 -1
  3. {minix-0.2.2 → minix-0.2.3}/minix/core/cli/commands/init_scaffold.py +47 -2
  4. {minix-0.2.2 → minix-0.2.3}/pyproject.toml +1 -1
  5. {minix-0.2.2 → minix-0.2.3}/minix/__init__.py +0 -0
  6. {minix-0.2.2 → minix-0.2.3}/minix/core/__init__.py +0 -0
  7. {minix-0.2.2 → minix-0.2.3}/minix/core/bootstrap/__init__.py +0 -0
  8. {minix-0.2.2 → minix-0.2.3}/minix/core/bootstrap/bootstrap.py +0 -0
  9. {minix-0.2.2 → minix-0.2.3}/minix/core/cli/__init__.py +0 -0
  10. {minix-0.2.2 → minix-0.2.3}/minix/core/cli/cli.py +0 -0
  11. {minix-0.2.2 → minix-0.2.3}/minix/core/cli/commands/__init__.py +0 -0
  12. {minix-0.2.2 → minix-0.2.3}/minix/core/cli/commands/init.py +0 -0
  13. {minix-0.2.2 → minix-0.2.3}/minix/core/cli/options.py +0 -0
  14. {minix-0.2.2 → minix-0.2.3}/minix/core/conf/__init__.py +0 -0
  15. {minix-0.2.2 → minix-0.2.3}/minix/core/conf/builders.py +0 -0
  16. {minix-0.2.2 → minix-0.2.3}/minix/core/conf/env.py +0 -0
  17. {minix-0.2.2 → minix-0.2.3}/minix/core/conf/global_settings.py +0 -0
  18. {minix-0.2.2 → minix-0.2.3}/minix/core/conf/minix_settings.py +0 -0
  19. {minix-0.2.2 → minix-0.2.3}/minix/core/conf/project_template/.dockerignore +0 -0
  20. {minix-0.2.2 → minix-0.2.3}/minix/core/conf/project_template/.env.example +0 -0
  21. {minix-0.2.2 → minix-0.2.3}/minix/core/conf/project_template/.gitignore +0 -0
  22. {minix-0.2.2 → minix-0.2.3}/minix/core/conf/project_template/Dockerfile +0 -0
  23. {minix-0.2.2 → minix-0.2.3}/minix/core/conf/project_template/config.py +0 -0
  24. {minix-0.2.2 → minix-0.2.3}/minix/core/conf/project_template/docker-compose.yml +0 -0
  25. {minix-0.2.2 → minix-0.2.3}/minix/core/conf/project_template/entries/__init__.py +0 -0
  26. {minix-0.2.2 → minix-0.2.3}/minix/core/conf/project_template/entries/api.py +0 -0
  27. {minix-0.2.2 → minix-0.2.3}/minix/core/conf/project_template/entries/beat.py +0 -0
  28. {minix-0.2.2 → minix-0.2.3}/minix/core/conf/project_template/entries/worker.py +0 -0
  29. {minix-0.2.2 → minix-0.2.3}/minix/core/connectors/__init__.py +0 -0
  30. {minix-0.2.2 → minix-0.2.3}/minix/core/connectors/connector.py +0 -0
  31. {minix-0.2.2 → minix-0.2.3}/minix/core/connectors/object_storage_connector/__init__.py +0 -0
  32. {minix-0.2.2 → minix-0.2.3}/minix/core/connectors/object_storage_connector/config.py +0 -0
  33. {minix-0.2.2 → minix-0.2.3}/minix/core/connectors/object_storage_connector/connector.py +0 -0
  34. {minix-0.2.2 → minix-0.2.3}/minix/core/connectors/qdrant_connector/__init__.py +0 -0
  35. {minix-0.2.2 → minix-0.2.3}/minix/core/connectors/qdrant_connector/connector.py +0 -0
  36. {minix-0.2.2 → minix-0.2.3}/minix/core/connectors/redis_connector/__init__.py +0 -0
  37. {minix-0.2.2 → minix-0.2.3}/minix/core/connectors/redis_connector/redis_connector.py +0 -0
  38. {minix-0.2.2 → minix-0.2.3}/minix/core/connectors/sql_connector/__init__.py +0 -0
  39. {minix-0.2.2 → minix-0.2.3}/minix/core/connectors/sql_connector/sql_connector.py +0 -0
  40. {minix-0.2.2 → minix-0.2.3}/minix/core/consumer/__init__.py +0 -0
  41. {minix-0.2.2 → minix-0.2.3}/minix/core/consumer/async_consumer.py +0 -0
  42. {minix-0.2.2 → minix-0.2.3}/minix/core/controller/__init__.py +0 -0
  43. {minix-0.2.2 → minix-0.2.3}/minix/core/controller/controller.py +0 -0
  44. {minix-0.2.2 → minix-0.2.3}/minix/core/entity/__init__.py +0 -0
  45. {minix-0.2.2 → minix-0.2.3}/minix/core/entity/entity.py +0 -0
  46. {minix-0.2.2 → minix-0.2.3}/minix/core/entity/qdrant_entity.py +0 -0
  47. {minix-0.2.2 → minix-0.2.3}/minix/core/entity/redis_entity.py +0 -0
  48. {minix-0.2.2 → minix-0.2.3}/minix/core/entity/sql_entity.py +0 -0
  49. {minix-0.2.2 → minix-0.2.3}/minix/core/install/__init__.py +0 -0
  50. {minix-0.2.2 → minix-0.2.3}/minix/core/install/installable.py +0 -0
  51. {minix-0.2.2 → minix-0.2.3}/minix/core/model/__init__.py +0 -0
  52. {minix-0.2.2 → minix-0.2.3}/minix/core/model/embedding_model.py +0 -0
  53. {minix-0.2.2 → minix-0.2.3}/minix/core/model/mlflow_model.py +0 -0
  54. {minix-0.2.2 → minix-0.2.3}/minix/core/model/model.py +0 -0
  55. {minix-0.2.2 → minix-0.2.3}/minix/core/model/model_registry.py +0 -0
  56. {minix-0.2.2 → minix-0.2.3}/minix/core/module/__init__.py +0 -0
  57. {minix-0.2.2 → minix-0.2.3}/minix/core/module/business_module/__init__.py +0 -0
  58. {minix-0.2.2 → minix-0.2.3}/minix/core/module/business_module/business_module.py +0 -0
  59. {minix-0.2.2 → minix-0.2.3}/minix/core/module/module.py +0 -0
  60. {minix-0.2.2 → minix-0.2.3}/minix/core/modules/__init__.py +0 -0
  61. {minix-0.2.2 → minix-0.2.3}/minix/core/modules/auth/__init__.py +0 -0
  62. {minix-0.2.2 → minix-0.2.3}/minix/core/modules/auth/dependencies.py +0 -0
  63. {minix-0.2.2 → minix-0.2.3}/minix/core/modules/auth/entities/__init__.py +0 -0
  64. {minix-0.2.2 → minix-0.2.3}/minix/core/modules/auth/entities/api_key_entity.py +0 -0
  65. {minix-0.2.2 → minix-0.2.3}/minix/core/modules/auth/module.py +0 -0
  66. {minix-0.2.2 → minix-0.2.3}/minix/core/modules/auth/repositories/__init__.py +0 -0
  67. {minix-0.2.2 → minix-0.2.3}/minix/core/modules/auth/repositories/api_key_repository.py +0 -0
  68. {minix-0.2.2 → minix-0.2.3}/minix/core/modules/auth/services/__init__.py +0 -0
  69. {minix-0.2.2 → minix-0.2.3}/minix/core/modules/auth/services/api_key_service.py +0 -0
  70. {minix-0.2.2 → minix-0.2.3}/minix/core/modules/oidc/__init__.py +0 -0
  71. {minix-0.2.2 → minix-0.2.3}/minix/core/modules/oidc/config.py +0 -0
  72. {minix-0.2.2 → minix-0.2.3}/minix/core/modules/oidc/controllers/__init__.py +0 -0
  73. {minix-0.2.2 → minix-0.2.3}/minix/core/modules/oidc/controllers/oidc_controller.py +0 -0
  74. {minix-0.2.2 → minix-0.2.3}/minix/core/modules/oidc/dependencies.py +0 -0
  75. {minix-0.2.2 → minix-0.2.3}/minix/core/modules/oidc/entities/__init__.py +0 -0
  76. {minix-0.2.2 → minix-0.2.3}/minix/core/modules/oidc/entities/oidc_user_entity.py +0 -0
  77. {minix-0.2.2 → minix-0.2.3}/minix/core/modules/oidc/module.py +0 -0
  78. {minix-0.2.2 → minix-0.2.3}/minix/core/modules/oidc/repositories/__init__.py +0 -0
  79. {minix-0.2.2 → minix-0.2.3}/minix/core/modules/oidc/repositories/oidc_user_repository.py +0 -0
  80. {minix-0.2.2 → minix-0.2.3}/minix/core/modules/oidc/services/__init__.py +0 -0
  81. {minix-0.2.2 → minix-0.2.3}/minix/core/modules/oidc/services/oidc_discovery_service.py +0 -0
  82. {minix-0.2.2 → minix-0.2.3}/minix/core/modules/oidc/services/oidc_user_service.py +0 -0
  83. {minix-0.2.2 → minix-0.2.3}/minix/core/modules/oidc/session.py +0 -0
  84. {minix-0.2.2 → minix-0.2.3}/minix/core/object_storage/__init__.py +0 -0
  85. {minix-0.2.2 → minix-0.2.3}/minix/core/object_storage/config.py +0 -0
  86. {minix-0.2.2 → minix-0.2.3}/minix/core/object_storage/connector.py +0 -0
  87. {minix-0.2.2 → minix-0.2.3}/minix/core/registry/__init__.py +0 -0
  88. {minix-0.2.2 → minix-0.2.3}/minix/core/registry/registry.py +0 -0
  89. {minix-0.2.2 → minix-0.2.3}/minix/core/repository/__init__.py +0 -0
  90. {minix-0.2.2 → minix-0.2.3}/minix/core/repository/qdrant/__init__.py +0 -0
  91. {minix-0.2.2 → minix-0.2.3}/minix/core/repository/qdrant/qdrant_repository.py +0 -0
  92. {minix-0.2.2 → minix-0.2.3}/minix/core/repository/redis/__init__.py +0 -0
  93. {minix-0.2.2 → minix-0.2.3}/minix/core/repository/redis/redis_repository.py +0 -0
  94. {minix-0.2.2 → minix-0.2.3}/minix/core/repository/repository.py +0 -0
  95. {minix-0.2.2 → minix-0.2.3}/minix/core/repository/sql/__init__.py +0 -0
  96. {minix-0.2.2 → minix-0.2.3}/minix/core/repository/sql/sql_repository.py +0 -0
  97. {minix-0.2.2 → minix-0.2.3}/minix/core/scheduler/__init__.py +0 -0
  98. {minix-0.2.2 → minix-0.2.3}/minix/core/scheduler/scheduler.py +0 -0
  99. {minix-0.2.2 → minix-0.2.3}/minix/core/scheduler/task/__init__.py +0 -0
  100. {minix-0.2.2 → minix-0.2.3}/minix/core/scheduler/task/task.py +0 -0
  101. {minix-0.2.2 → minix-0.2.3}/minix/core/scheduler/task/workflow_tasks.py +0 -0
  102. {minix-0.2.2 → minix-0.2.3}/minix/core/scheduler/workflow.py +0 -0
  103. {minix-0.2.2 → minix-0.2.3}/minix/core/service/__init__.py +0 -0
  104. {minix-0.2.2 → minix-0.2.3}/minix/core/service/base_service.py +0 -0
  105. {minix-0.2.2 → minix-0.2.3}/minix/core/service/helper_service.py +0 -0
  106. {minix-0.2.2 → minix-0.2.3}/minix/core/service/qdrant/__init__.py +0 -0
  107. {minix-0.2.2 → minix-0.2.3}/minix/core/service/qdrant/qdrant_service.py +0 -0
  108. {minix-0.2.2 → minix-0.2.3}/minix/core/service/redis/__init__.py +0 -0
  109. {minix-0.2.2 → minix-0.2.3}/minix/core/service/redis/redis_service.py +0 -0
  110. {minix-0.2.2 → minix-0.2.3}/minix/core/service/service.py +0 -0
  111. {minix-0.2.2 → minix-0.2.3}/minix/core/service/sql/__init__.py +0 -0
  112. {minix-0.2.2 → minix-0.2.3}/minix/core/service/sql/sql_service.py +0 -0
  113. {minix-0.2.2 → minix-0.2.3}/minix/core/utils/__init__.py +0 -0
  114. {minix-0.2.2 → minix-0.2.3}/minix/core/utils/mlflow/__init__.py +0 -0
  115. {minix-0.2.2 → minix-0.2.3}/minix/core/utils/mlflow/log_metric.py +0 -0
  116. {minix-0.2.2 → minix-0.2.3}/minix/core/utils/singleton/__init__.py +0 -0
  117. {minix-0.2.2 → minix-0.2.3}/minix/core/utils/singleton/singleton.py +0 -0
  118. {minix-0.2.2 → minix-0.2.3}/minix/core/utils/string/__init__.py +0 -0
  119. {minix-0.2.2 → minix-0.2.3}/minix/core/utils/string/to_snake_case.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: minix
3
- Version: 0.2.2
3
+ Version: 0.2.3
4
4
  Summary: A modular Python framework for backend, AI, and data projects
5
5
  Author: AmirHossein Advari
6
6
  Author-email: amiradvari@gmail.com
@@ -742,7 +742,7 @@ minix init APP_NAME [OPTIONS]
742
742
  | `.env.example` | Documented env keys with copy instructions (commit this) |
743
743
  | `.env` | Local overrides without the copy header (gitignored) |
744
744
  | `.gitignore` | Python / IDE / dotenv ignores |
745
- | `Dockerfile` | App image (`pip install minix` or `minix[vdb,…]` from PyPI) |
745
+ | `Dockerfile` | App image (`pip install "minix~=X.Y.Z"` / extras from PyPI) |
746
746
  | `docker-compose.yml` | MySQL, Redis, MinIO, API, Celery; optional Qdrant / ClickHouse / MLflow |
747
747
  | `.dockerignore` | Build context excludes |
748
748
  | `entries/` | `api.py`, `worker.py`, `beat.py` process entrypoints |
@@ -757,6 +757,8 @@ minix init APP_NAME [OPTIONS]
757
757
  (e.g. `pip install "minix[vdb]"`), `minix init` adds matching `pip install`
758
758
  in the Dockerfile and enables the related compose services and config blocks.
759
759
  Override with `--extras vdb,clickhouse,ai` or use `--no-extras` for a minimal stack.
760
+ - **Version pin:** The Dockerfile uses a compatible release on the installed minor
761
+ (e.g. ``minix~=0.2.2`` → latest ``0.2.x`` ≥ ``0.2.2``, not ``0.3``).
760
762
 
761
763
  ```bash
762
764
  minix init my_app
@@ -702,7 +702,7 @@ minix init APP_NAME [OPTIONS]
702
702
  | `.env.example` | Documented env keys with copy instructions (commit this) |
703
703
  | `.env` | Local overrides without the copy header (gitignored) |
704
704
  | `.gitignore` | Python / IDE / dotenv ignores |
705
- | `Dockerfile` | App image (`pip install minix` or `minix[vdb,…]` from PyPI) |
705
+ | `Dockerfile` | App image (`pip install "minix~=X.Y.Z"` / extras from PyPI) |
706
706
  | `docker-compose.yml` | MySQL, Redis, MinIO, API, Celery; optional Qdrant / ClickHouse / MLflow |
707
707
  | `.dockerignore` | Build context excludes |
708
708
  | `entries/` | `api.py`, `worker.py`, `beat.py` process entrypoints |
@@ -717,6 +717,8 @@ minix init APP_NAME [OPTIONS]
717
717
  (e.g. `pip install "minix[vdb]"`), `minix init` adds matching `pip install`
718
718
  in the Dockerfile and enables the related compose services and config blocks.
719
719
  Override with `--extras vdb,clickhouse,ai` or use `--no-extras` for a minimal stack.
720
+ - **Version pin:** The Dockerfile uses a compatible release on the installed minor
721
+ (e.g. ``minix~=0.2.2`` → latest ``0.2.x`` ≥ ``0.2.2``, not ``0.3``).
720
722
 
721
723
  ```bash
722
724
  minix init my_app
@@ -54,11 +54,56 @@ def resolve_minix_extras(
54
54
  return detect_installed_minix_extras()
55
55
 
56
56
 
57
+ # First PyPI release that exports ``bootstrap_from_settings`` for the Docker template.
58
+ _MIN_DOCKER_MINIX = "0.2.2"
59
+
60
+
61
+ def _version_tuple(value: str) -> tuple[int, ...]:
62
+ parts: list[int] = []
63
+ for piece in value.split("."):
64
+ digits = "".join(ch for ch in piece if ch.isdigit())
65
+ if not digits:
66
+ break
67
+ parts.append(int(digits))
68
+ return tuple(parts) or (0,)
69
+
70
+
71
+ def _compatible_release_constraint(version: str) -> str:
72
+ """``~=X.Y.Z`` → latest patch on the same minor (e.g. 0.2.2 → any 0.2.x ≥ 0.2.2)."""
73
+ parts = list(_version_tuple(version))
74
+ while len(parts) < 3:
75
+ parts.append(0)
76
+ major, minor, patch = parts[0], parts[1], parts[2]
77
+ return f"~={major}.{minor}.{patch}"
78
+
79
+
80
+ def _minix_version_constraint() -> str:
81
+ """Pin Docker to the installed minor line, allowing newer patch releases."""
82
+ floor = _version_tuple(_MIN_DOCKER_MINIX)
83
+ try:
84
+ from importlib.metadata import version
85
+
86
+ installed = version("minix")
87
+ parts = list(_version_tuple(installed))
88
+ while len(parts) < 3:
89
+ parts.append(0)
90
+ if tuple(parts[:2]) == floor[:2] and parts[2] < floor[2]:
91
+ parts[2] = floor[2]
92
+ if tuple(parts) < floor:
93
+ return _compatible_release_constraint(_MIN_DOCKER_MINIX)
94
+ return _compatible_release_constraint(
95
+ f"{parts[0]}.{parts[1]}.{parts[2]}"
96
+ )
97
+ except Exception:
98
+ return _compatible_release_constraint(_MIN_DOCKER_MINIX)
99
+
100
+
57
101
  def minix_pip_install_spec(extras: Iterable[str]) -> str:
58
102
  chosen = [e for e in _EXTRA_ORDER if e in extras]
103
+ constraint = _minix_version_constraint()
59
104
  if not chosen:
60
- return "minix"
61
- return f'minix[{",".join(chosen)}]'
105
+ return f"minix{constraint}"
106
+ return f'minix[{",".join(chosen)}]{constraint}'
62
107
 
63
108
 
64
109
  def apply_feature_blocks(text: str, extras: set[str]) -> str:
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "minix"
3
- version = "0.2.2"
3
+ version = "0.2.3"
4
4
  description = "A modular Python framework for backend, AI, and data projects"
5
5
  authors = [
6
6
  { name = "AmirHossein Advari", email = "amiradvari@gmail.com" }
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes