projectdavid-orm 1.3.0__tar.gz → 1.5.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.3.0 → projectdavid_orm-1.5.0}/CHANGELOG.md +16 -0
  2. {projectdavid_orm-1.3.0/src/projectdavid_orm.egg-info → projectdavid_orm-1.5.0}/PKG-INFO +1 -1
  3. {projectdavid_orm-1.3.0 → projectdavid_orm-1.5.0}/pyproject.toml +1 -1
  4. {projectdavid_orm-1.3.0 → projectdavid_orm-1.5.0}/src/projectdavid_orm/projectdavid_orm/models.py +15 -13
  5. {projectdavid_orm-1.3.0 → projectdavid_orm-1.5.0/src/projectdavid_orm.egg-info}/PKG-INFO +1 -1
  6. {projectdavid_orm-1.3.0 → projectdavid_orm-1.5.0}/LICENSE +0 -0
  7. {projectdavid_orm-1.3.0 → projectdavid_orm-1.5.0}/MANIFEST.in +0 -0
  8. {projectdavid_orm-1.3.0 → projectdavid_orm-1.5.0}/README.md +0 -0
  9. {projectdavid_orm-1.3.0 → projectdavid_orm-1.5.0}/setup.cfg +0 -0
  10. {projectdavid_orm-1.3.0 → projectdavid_orm-1.5.0}/src/projectdavid_common.egg-info/PKG-INFO +0 -0
  11. {projectdavid_orm-1.3.0 → projectdavid_orm-1.5.0}/src/projectdavid_common.egg-info/SOURCES.txt +0 -0
  12. {projectdavid_orm-1.3.0 → projectdavid_orm-1.5.0}/src/projectdavid_common.egg-info/dependency_links.txt +0 -0
  13. {projectdavid_orm-1.3.0 → projectdavid_orm-1.5.0}/src/projectdavid_common.egg-info/entry_points.txt +0 -0
  14. {projectdavid_orm-1.3.0 → projectdavid_orm-1.5.0}/src/projectdavid_common.egg-info/requires.txt +0 -0
  15. {projectdavid_orm-1.3.0 → projectdavid_orm-1.5.0}/src/projectdavid_common.egg-info/top_level.txt +0 -0
  16. {projectdavid_orm-1.3.0 → projectdavid_orm-1.5.0}/src/projectdavid_orm/__init__.py +0 -0
  17. {projectdavid_orm-1.3.0 → projectdavid_orm-1.5.0}/src/projectdavid_orm/constants/__init__.py +0 -0
  18. {projectdavid_orm-1.3.0 → projectdavid_orm-1.5.0}/src/projectdavid_orm/ormInterface.py +0 -0
  19. {projectdavid_orm-1.3.0 → projectdavid_orm-1.5.0}/src/projectdavid_orm/projectdavid_orm/__init__.py +0 -0
  20. {projectdavid_orm-1.3.0 → projectdavid_orm-1.5.0}/src/projectdavid_orm/projectdavid_orm/base.py +0 -0
  21. {projectdavid_orm-1.3.0 → projectdavid_orm-1.5.0}/src/projectdavid_orm/utilities/__init__.py +0 -0
  22. {projectdavid_orm-1.3.0 → projectdavid_orm-1.5.0}/src/projectdavid_orm.egg-info/SOURCES.txt +0 -0
  23. {projectdavid_orm-1.3.0 → projectdavid_orm-1.5.0}/src/projectdavid_orm.egg-info/dependency_links.txt +0 -0
  24. {projectdavid_orm-1.3.0 → projectdavid_orm-1.5.0}/src/projectdavid_orm.egg-info/requires.txt +0 -0
  25. {projectdavid_orm-1.3.0 → projectdavid_orm-1.5.0}/src/projectdavid_orm.egg-info/top_level.txt +0 -0
  26. {projectdavid_orm-1.3.0 → projectdavid_orm-1.5.0}/tests/test_clients.py +0 -0
@@ -1,3 +1,19 @@
1
+ # [1.5.0](https://github.com/project-david-ai/projectdavid-orm/compare/v1.4.0...v1.5.0) (2026-03-24)
2
+
3
+
4
+ ### Features
5
+
6
+ * add nullable endpoint field to BaseModel ([a902d5b](https://github.com/project-david-ai/projectdavid-orm/commit/a902d5ba45852cfbb8f6cd31ebcfed3850fc2354))
7
+ * Phase 4 ([fb58012](https://github.com/project-david-ai/projectdavid-orm/commit/fb580125b975369c3a3a089f177c31e74561c72e))
8
+ * Phase 5a ([0ea00c5](https://github.com/project-david-ai/projectdavid-orm/commit/0ea00c5ccde65c4e9d191ed1239e0fe1d069c4d0))
9
+
10
+ # [1.4.0](https://github.com/project-david-ai/projectdavid-orm/compare/v1.3.0...v1.4.0) (2026-03-23)
11
+
12
+
13
+ ### Features
14
+
15
+ * Phase 5a ([7213c69](https://github.com/project-david-ai/projectdavid-orm/commit/7213c698beb56eddb5230bbcf609f250e6b20c5e))
16
+
1
17
  # [1.3.0](https://github.com/project-david-ai/projectdavid-orm/compare/v1.2.0...v1.3.0) (2026-03-23)
2
18
 
3
19
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: projectdavid-orm
3
- Version: 1.3.0
3
+ Version: 1.5.0
4
4
  Summary: Shared SQLAlchemy ORM models for ProjectDavid services
5
5
  Author-email: "Francis N." <francis.neequaye@projectdavid.co.uk>
6
6
  License: Polyform
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "projectdavid-orm"
7
- version = "1.3.0"
7
+ version = "1.5.0"
8
8
  description = "Shared SQLAlchemy ORM models for ProjectDavid services"
9
9
  readme = "README.md"
10
10
  authors = [
@@ -821,8 +821,7 @@ class TrainingJob(Base):
821
821
  output_path = Column(String(512), nullable=True)
822
822
 
823
823
  # Phase 4: node_id stores the Ray node ID (hex string) for traceability.
824
- # FK to compute_nodes retained for legacy compatibility — will be dropped
825
- # in Phase 5 when compute_nodes table is removed entirely.
824
+ # FK to compute_nodes retained for legacy compatibility — dropped in Phase 5.
826
825
  node_id = Column(String(64), ForeignKey("compute_nodes.id", ondelete="SET NULL"), nullable=True)
827
826
 
828
827
  dataset = relationship("Dataset", back_populates="training_jobs", lazy="select")
@@ -881,8 +880,8 @@ class ComputeNode(Base):
881
880
  """
882
881
  Phase 4 status: LEGACY.
883
882
  Node registration and heartbeat are now handled by Ray natively.
884
- This table is retained for FK compatibility with TrainingJob and
885
- FineTunedModel. Will be dropped in Phase 5 cleanup.
883
+ Retained for FK compatibility with TrainingJob and FineTunedModel.
884
+ Will be dropped in Phase 5 cleanup.
886
885
  """
887
886
 
888
887
  __tablename__ = "compute_nodes"
@@ -898,15 +897,13 @@ class ComputeNode(Base):
898
897
  allocations = relationship("GPUAllocation", back_populates="node", cascade="all, delete-orphan")
899
898
  training_jobs = relationship("TrainingJob", back_populates="node")
900
899
  active_models = relationship("FineTunedModel", back_populates="node")
901
- # Phase 4: InferenceDeployment no longer has a FK back to compute_nodes
902
- # so the deployments relationship is removed from this side too.
903
900
 
904
901
 
905
902
  class GPUAllocation(Base):
906
903
  """
907
904
  Phase 4 status: LEGACY.
908
905
  VRAM reservation is now handled by Ray resource scheduling.
909
- Table retained for schema compatibility. Will be dropped in Phase 5.
906
+ Retained for schema compatibility. Will be dropped in Phase 5.
910
907
  """
911
908
 
912
909
  __tablename__ = "gpu_allocations"
@@ -925,8 +922,6 @@ class GPUAllocation(Base):
925
922
  # ---------------------------------------------------------------------------
926
923
  # Model Catalog & Live Deployments
927
924
  # ---------------------------------------------------------------------------
928
-
929
-
930
925
  class BaseModel(Base):
931
926
  __tablename__ = "base_models"
932
927
  id = Column(String(128), primary_key=True, index=True)
@@ -935,15 +930,18 @@ class BaseModel(Base):
935
930
  parameter_count = Column(String(32))
936
931
  is_multimodal = Column(Boolean, default=False)
937
932
  created_at = Column(BigInteger, default=lambda: int(time.time()))
933
+ endpoint = Column(
934
+ String(256),
935
+ nullable=True,
936
+ comment="HuggingFace model path or custom inference endpoint identifier.",
937
+ )
938
938
 
939
939
 
940
940
  class InferenceDeployment(Base):
941
941
  __tablename__ = "inference_deployments"
942
942
  id = Column(String(64), primary_key=True, index=True)
943
943
 
944
- # Phase 4: node_id is now a plain string storing the Ray node ID (hex).
945
- # FK to compute_nodes and uq_node_port_deployment unique constraint have
946
- # been dropped from the DB — this column is no longer constrained.
944
+ # Phase 4: plain string storing the Ray node ID (hex). No FK constraint.
947
945
  node_id = Column(String(128), nullable=True)
948
946
 
949
947
  internal_hostname = Column(String(128), nullable=True)
@@ -954,6 +952,10 @@ class InferenceDeployment(Base):
954
952
  current_throughput = Column(Float, default=0.0)
955
953
  last_seen = Column(BigInteger, default=lambda: int(time.time()))
956
954
 
957
- # Phase 4: node relationship removed — node_id is no longer a FK.
955
+ # Inference sharding: number of GPUs this deployment spans.
956
+ # 1 = single GPU (default, backward compatible).
957
+ # N > 1 = tensor parallel across N GPUs via vLLM --tensor-parallel-size.
958
+ tensor_parallel_size = Column(Integer, nullable=False, default=1)
959
+
958
960
  base_model = relationship("BaseModel")
959
961
  fine_tuned_model = relationship("FineTunedModel")
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: projectdavid-orm
3
- Version: 1.3.0
3
+ Version: 1.5.0
4
4
  Summary: Shared SQLAlchemy ORM models for ProjectDavid services
5
5
  Author-email: "Francis N." <francis.neequaye@projectdavid.co.uk>
6
6
  License: Polyform