projectdavid-orm 1.6.2__tar.gz → 1.7.0__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 (26) hide show
  1. {projectdavid_orm-1.6.2 → projectdavid_orm-1.7.0}/CHANGELOG.md +14 -0
  2. {projectdavid_orm-1.6.2/src/projectdavid_orm.egg-info → projectdavid_orm-1.7.0}/PKG-INFO +1 -1
  3. {projectdavid_orm-1.6.2 → projectdavid_orm-1.7.0}/pyproject.toml +1 -1
  4. {projectdavid_orm-1.6.2 → projectdavid_orm-1.7.0}/src/projectdavid_orm/projectdavid_orm/models.py +76 -5
  5. {projectdavid_orm-1.6.2 → projectdavid_orm-1.7.0/src/projectdavid_orm.egg-info}/PKG-INFO +1 -1
  6. {projectdavid_orm-1.6.2 → projectdavid_orm-1.7.0}/LICENSE +0 -0
  7. {projectdavid_orm-1.6.2 → projectdavid_orm-1.7.0}/MANIFEST.in +0 -0
  8. {projectdavid_orm-1.6.2 → projectdavid_orm-1.7.0}/README.md +0 -0
  9. {projectdavid_orm-1.6.2 → projectdavid_orm-1.7.0}/setup.cfg +0 -0
  10. {projectdavid_orm-1.6.2 → projectdavid_orm-1.7.0}/src/projectdavid_common.egg-info/PKG-INFO +0 -0
  11. {projectdavid_orm-1.6.2 → projectdavid_orm-1.7.0}/src/projectdavid_common.egg-info/SOURCES.txt +0 -0
  12. {projectdavid_orm-1.6.2 → projectdavid_orm-1.7.0}/src/projectdavid_common.egg-info/dependency_links.txt +0 -0
  13. {projectdavid_orm-1.6.2 → projectdavid_orm-1.7.0}/src/projectdavid_common.egg-info/entry_points.txt +0 -0
  14. {projectdavid_orm-1.6.2 → projectdavid_orm-1.7.0}/src/projectdavid_common.egg-info/requires.txt +0 -0
  15. {projectdavid_orm-1.6.2 → projectdavid_orm-1.7.0}/src/projectdavid_common.egg-info/top_level.txt +0 -0
  16. {projectdavid_orm-1.6.2 → projectdavid_orm-1.7.0}/src/projectdavid_orm/__init__.py +0 -0
  17. {projectdavid_orm-1.6.2 → projectdavid_orm-1.7.0}/src/projectdavid_orm/constants/__init__.py +0 -0
  18. {projectdavid_orm-1.6.2 → projectdavid_orm-1.7.0}/src/projectdavid_orm/ormInterface.py +0 -0
  19. {projectdavid_orm-1.6.2 → projectdavid_orm-1.7.0}/src/projectdavid_orm/projectdavid_orm/__init__.py +0 -0
  20. {projectdavid_orm-1.6.2 → projectdavid_orm-1.7.0}/src/projectdavid_orm/projectdavid_orm/base.py +0 -0
  21. {projectdavid_orm-1.6.2 → projectdavid_orm-1.7.0}/src/projectdavid_orm/utilities/__init__.py +0 -0
  22. {projectdavid_orm-1.6.2 → projectdavid_orm-1.7.0}/src/projectdavid_orm.egg-info/SOURCES.txt +0 -0
  23. {projectdavid_orm-1.6.2 → projectdavid_orm-1.7.0}/src/projectdavid_orm.egg-info/dependency_links.txt +0 -0
  24. {projectdavid_orm-1.6.2 → projectdavid_orm-1.7.0}/src/projectdavid_orm.egg-info/requires.txt +0 -0
  25. {projectdavid_orm-1.6.2 → projectdavid_orm-1.7.0}/src/projectdavid_orm.egg-info/top_level.txt +0 -0
  26. {projectdavid_orm-1.6.2 → projectdavid_orm-1.7.0}/tests/test_clients.py +0 -0
@@ -1,3 +1,17 @@
1
+ # [1.7.0](https://github.com/project-david-ai/projectdavid-orm/compare/v1.6.3...v1.7.0) (2026-04-12)
2
+
3
+
4
+ ### Features
5
+
6
+ * **inference_deployment:** add vLLM hyperparam columns ([6c6de67](https://github.com/project-david-ai/projectdavid-orm/commit/6c6de67eca69c7e71c9c3755765254fe1aeac25d))
7
+
8
+ ## [1.6.3](https://github.com/project-david-ai/projectdavid-orm/compare/v1.6.2...v1.6.3) (2026-04-11)
9
+
10
+
11
+ ### Bug Fixes
12
+
13
+ * **orm:** declare Base locally in models.py — remove dependency on projectdavid_common.projectdavid_orm.base ([0d43ad1](https://github.com/project-david-ai/projectdavid-orm/commit/0d43ad1984a72765d651b4080325cecbe35ca3ef))
14
+
1
15
  ## [1.6.2](https://github.com/project-david-ai/projectdavid-orm/compare/v1.6.1...v1.6.2) (2026-04-05)
2
16
 
3
17
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: projectdavid-orm
3
- Version: 1.6.2
3
+ Version: 1.7.0
4
4
  Summary: Shared SQLAlchemy ORM models for ProjectDavid services
5
5
  Author-email: "Francis N." <engineering@projectdavid.co.uk>
6
6
  License: PolyForm Noncommercial License 1.0.0
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "projectdavid-orm"
7
- version = "1.6.2"
7
+ version = "1.7.0"
8
8
  description = "Shared SQLAlchemy ORM models for ProjectDavid services"
9
9
  readme = "README.md"
10
10
  authors = [
@@ -1,11 +1,9 @@
1
1
  import secrets
2
2
  import time
3
3
  from datetime import datetime
4
- from enum import Enum as PyEnum
5
4
 
6
5
  from passlib.context import CryptContext
7
6
  from projectdavid_common import ValidationInterface
8
- from projectdavid_common.projectdavid_orm.base import Base
9
7
  from projectdavid_common.schemas.enums import StatusEnum
10
8
  from projectdavid_common.utilities.logging_service import LoggingUtility
11
9
  from sqlalchemy import JSON, BigInteger, Boolean, Column, DateTime
@@ -23,6 +21,8 @@ from sqlalchemy import (
23
21
  from sqlalchemy.ext.mutable import MutableDict
24
22
  from sqlalchemy.orm import joinedload, relationship
25
23
 
24
+ from .base import Base
25
+
26
26
  logger = LoggingUtility()
27
27
 
28
28
  validation = ValidationInterface
@@ -886,22 +886,93 @@ class BaseModel(Base):
886
886
 
887
887
 
888
888
  class InferenceDeployment(Base):
889
+ """
890
+ Tracks a live vLLM deployment on Ray Serve.
891
+
892
+ Hyperparams stored here override environment-level defaults at deploy time.
893
+ The reconciler reads these fields and passes them directly to vLLM engine args.
894
+ None values fall back to the VLLM_DEFAULT_* env vars in inference_worker.py.
895
+ """
896
+
889
897
  __tablename__ = "inference_deployments"
890
- id = Column(String(64), primary_key=True, index=True)
891
898
 
899
+ # --- Identity ---
900
+ id = Column(String(64), primary_key=True, index=True)
892
901
  node_id = Column(String(128), nullable=True)
893
-
894
902
  internal_hostname = Column(String(128), nullable=True)
903
+
904
+ # --- Foreign Keys ---
895
905
  base_model_id = Column(String(128), ForeignKey("base_models.id"))
896
906
  fine_tuned_model_id = Column(
897
907
  String(64), ForeignKey("fine_tuned_models.id"), nullable=True
898
908
  )
909
+
910
+ # --- Deployment State ---
899
911
  port = Column(Integer, default=8000)
900
912
  status = Column(SAEnum(StatusEnum), default=StatusEnum.active)
901
913
  current_throughput = Column(Float, default=0.0)
902
914
  last_seen = Column(BigInteger, default=lambda: int(time.time()))
903
915
 
904
- tensor_parallel_size = Column(Integer, nullable=False, default=1)
916
+ # --- Parallelism ---
917
+ tensor_parallel_size = Column(
918
+ Integer,
919
+ nullable=False,
920
+ default=1,
921
+ comment="Number of GPUs for tensor parallelism. 1 = single GPU.",
922
+ )
923
+
924
+ # --- Memory & Context ---
925
+ gpu_memory_utilization = Column(
926
+ Float,
927
+ nullable=False,
928
+ default=0.90,
929
+ server_default="0.90",
930
+ comment="Fraction of GPU VRAM vLLM may allocate. Overrides VLLM_DEFAULT_GPU_MEM_UTIL.",
931
+ )
932
+ max_model_len = Column(
933
+ Integer,
934
+ nullable=True,
935
+ default=None,
936
+ comment="Max sequence length in tokens. Overrides VLLM_DEFAULT_MAX_MODEL_LEN. None = env default.",
937
+ )
938
+ max_num_seqs = Column(
939
+ Integer,
940
+ nullable=True,
941
+ default=None,
942
+ comment="Max concurrent sequences. Critical for vision — each image eats slots. None = vLLM default.",
943
+ )
944
+
945
+ # --- Quantization & Precision ---
946
+ quantization = Column(
947
+ String(32),
948
+ nullable=True,
949
+ default=None,
950
+ comment="Quantization scheme: 'awq', 'awq_marlin', 'gptq', 'bitsandbytes', or None for full precision.",
951
+ )
952
+ dtype = Column(
953
+ String(16),
954
+ nullable=True,
955
+ default=None,
956
+ comment="Compute dtype: 'float16', 'bfloat16', 'auto', or None to let vLLM decide.",
957
+ )
958
+
959
+ # --- Runtime Behaviour ---
960
+ enforce_eager = Column(
961
+ Boolean,
962
+ nullable=False,
963
+ default=False,
964
+ server_default="0",
965
+ comment="Disable CUDA graphs. Slower but useful for debugging OOM crashes.",
966
+ )
967
+
968
+ # --- Multimodal Limits ---
969
+ limit_mm_per_prompt = Column(
970
+ JSON,
971
+ nullable=True,
972
+ default=None,
973
+ comment='Per-modality token cap per request. e.g. {"image": 2, "video": 0}. None = vLLM default.',
974
+ )
905
975
 
976
+ # --- Relationships (always last) ---
906
977
  base_model = relationship("BaseModel")
907
978
  fine_tuned_model = relationship("FineTunedModel")
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: projectdavid-orm
3
- Version: 1.6.2
3
+ Version: 1.7.0
4
4
  Summary: Shared SQLAlchemy ORM models for ProjectDavid services
5
5
  Author-email: "Francis N." <engineering@projectdavid.co.uk>
6
6
  License: PolyForm Noncommercial License 1.0.0