tol-sdk 1.7.2__py3-none-any.whl → 1.7.3__py3-none-any.whl

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.
@@ -37,6 +37,7 @@ class StandardModels(IterableABC[type[Model]]):
37
37
  data_source_config: type[Model]
38
38
  data_source_config_attribute: type[Model]
39
39
  data_source_config_relationship: type[Model]
40
+ data_source_config_summary: type[Model]
40
41
  component: type[Model]
41
42
  component_zone: type[Model]
42
43
  zone: type[Model]
@@ -61,6 +62,7 @@ class StandardModels(IterableABC[type[Model]]):
61
62
  self.view_board,
62
63
  self.view,
63
64
  self.board,
65
+ self.data_source_config_summary,
64
66
  self.data_source_config_relationship,
65
67
  self.data_source_config_attribute,
66
68
  self.loader_instance,
@@ -458,7 +460,6 @@ def create_standard_models(
458
460
 
459
461
  name: Mapped[str] = mapped_column(nullable=False)
460
462
  object_type: Mapped[str] = mapped_column(nullable=False)
461
- name: Mapped[str] = mapped_column(nullable=False)
462
463
  display_name: Mapped[str] = mapped_column(nullable=True)
463
464
  description: Mapped[str] = mapped_column(nullable=True)
464
465
  available_on_relationships: Mapped[bool] = mapped_column(nullable=False, default=True)
@@ -484,6 +485,53 @@ def create_standard_models(
484
485
  foreign_keys=[data_source_config_id]
485
486
  )
486
487
 
488
+ class DataSourceConfigSummary(base_model_class):
489
+ __tablename__ = 'data_source_config_summary'
490
+
491
+ id: Mapped[int] = mapped_column(primary_key=True, autoincrement=True) # noqa A003
492
+
493
+ source_object_type: Mapped[str] = mapped_column(nullable=False)
494
+ destination_object_type: Mapped[str] = mapped_column(nullable=True)
495
+
496
+ object_filters: Mapped[dict] = mapped_column(
497
+ JSONB,
498
+ nullable=False,
499
+ default={}
500
+ )
501
+
502
+ group_by: Mapped[dict] = mapped_column(
503
+ JSONB,
504
+ nullable=False,
505
+ default=[]
506
+ )
507
+
508
+ stats_fields: Mapped[dict] = mapped_column(
509
+ JSONB,
510
+ nullable=False,
511
+ default=[]
512
+ )
513
+
514
+ stats: Mapped[dict] = mapped_column(
515
+ JSONB,
516
+ nullable=False,
517
+ default=[]
518
+ )
519
+
520
+ prefix: Mapped[str] = mapped_column(
521
+ nullable=False,
522
+ default=''
523
+ )
524
+
525
+ data_source_config_id: Mapped[int] = mapped_column(
526
+ ForeignKey('data_source_config.id'),
527
+ nullable=False
528
+ )
529
+
530
+ data_source_config: Mapped['DataSourceConfig'] = relationship( # noqa F821
531
+ back_populates='data_source_config_summaries',
532
+ foreign_keys=[data_source_config_id]
533
+ )
534
+
487
535
  class DataSourceConfig(base_model_class):
488
536
  __tablename__ = 'data_source_config'
489
537
 
@@ -504,6 +552,10 @@ def create_standard_models(
504
552
  back_populates='data_source_config',
505
553
  foreign_keys=[DataSourceConfigRelationship.data_source_config_id]
506
554
  )
555
+ data_source_config_summaries: Mapped[list['DataSourceConfigSummary']] = relationship(
556
+ back_populates='data_source_config',
557
+ foreign_keys=[DataSourceConfigSummary.data_source_config_id]
558
+ )
507
559
 
508
560
  class _UserMixin:
509
561
 
@@ -538,6 +590,7 @@ def create_standard_models(
538
590
  data_source_config=DataSourceConfig,
539
591
  data_source_config_attribute=DataSourceConfigAttribute,
540
592
  data_source_config_relationship=DataSourceConfigRelationship,
593
+ data_source_config_summary=DataSourceConfigSummary,
541
594
  component=Component,
542
595
  component_zone=ComponentZone,
543
596
  zone=Zone,
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: tol-sdk
3
- Version: 1.7.2
3
+ Version: 1.7.3
4
4
  Summary: SDK for interaction with ToL, Sanger and external services
5
5
  Author-email: ToL Platforms Team <tol-platforms@sanger.ac.uk>
6
6
  License: MIT
@@ -305,9 +305,7 @@ tol/sql/auth/models.py,sha256=4xNWBvyGiI3mwRyDY5ty48Bv9178ApQXPR-YjIdCsvk,11879
305
305
  tol/sql/pipeline_step/__init__.py,sha256=O7u4RrLfuoB0mwLcPxFoUrdTBZGB_4bE1vWCn5ho-qw,147
306
306
  tol/sql/pipeline_step/factory.py,sha256=SFJ-BE1I_qmEsqrJ10evdGCdoUHjdiJq6iqrzIlX2jU,5132
307
307
  tol/sql/standard/__init__.py,sha256=2NbLXFk0rneGZosZ2ESIRcT0WMK0KncmPWaLPqvX-i4,142
308
- tol/sql/standard/factory.py,sha256=4bg6omWsa223y5nEqz_DDp1om6Ip-NlYm3JoT1EQGMM,18361
309
- tol/sql/summary/__init__.py,sha256=5fNYAeOJ-XOdG9cgu7cUgDBwzG89cuc6RGGw_ZOjURk,143
310
- tol/sql/summary/factory.py,sha256=F01du9HYl4kmUBHGxgpibSi651GAI5wsRUdk7LBZzzI,2009
308
+ tol/sql/standard/factory.py,sha256=yY8iWmZRMvUqphwnzBeOIQtKGgxsU6AcA7YTz53UYvc,20010
311
309
  tol/status/__init__.py,sha256=sBo-j1wCmberl89uryVCBEJk8ohbfsYhaNpIp_brR9Y,146
312
310
  tol/status/status_datasource.py,sha256=UYU2vB561XRWY8y2dY96qHiWXy15xaHxsbGCVCIUnqs,1916
313
311
  tol/sts/__init__.py,sha256=1nb_lBWDwxJo3hutxSid2rqMIpfZ4GHxDS6cfj-FKv4,187
@@ -325,9 +323,9 @@ tol/validators/allowed_values.py,sha256=yJ5SdiUlV7PSKORtsBJ9hYSqwvlx_esbFmFL_Gxh
325
323
  tol/validators/regex.py,sha256=dKodGH0sv6DbqWeV6QXE6-GYjnG4rMO0rg8IEIaQG60,2364
326
324
  tol/validators/regex_by_value.py,sha256=o99NJlWPgQ0GrpVnep8-cHfjWnc9F2rChmXHIxjrMrk,2543
327
325
  tol/validators/unique_values.py,sha256=stI-1i006WEbERcjSMapRggJkEF-RFDzw2uUtXBAE_M,1885
328
- tol_sdk-1.7.2.dist-info/licenses/LICENSE,sha256=RF9Jacy-9BpUAQQ20INhTgtaNBkmdTolYCHtrrkM2-8,1077
329
- tol_sdk-1.7.2.dist-info/METADATA,sha256=FOII5eZYn_0x2XpUiv_dTnTUBz7_ZArof7jrD5NZHms,3079
330
- tol_sdk-1.7.2.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
331
- tol_sdk-1.7.2.dist-info/entry_points.txt,sha256=jH3HfTwxjzog7E3lq8CKpUWGIRY9FSXbyL6CpUmv6D0,36
332
- tol_sdk-1.7.2.dist-info/top_level.txt,sha256=PwKMQLphyZNvagBoriVbl8uwHXQl8IC1niawVG0iXMM,10
333
- tol_sdk-1.7.2.dist-info/RECORD,,
326
+ tol_sdk-1.7.3.dist-info/licenses/LICENSE,sha256=RF9Jacy-9BpUAQQ20INhTgtaNBkmdTolYCHtrrkM2-8,1077
327
+ tol_sdk-1.7.3.dist-info/METADATA,sha256=2_ZEKrI2dmJ-OUhYB16-GpGr4Mb6ybceAvXL4GcPU0E,3079
328
+ tol_sdk-1.7.3.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
329
+ tol_sdk-1.7.3.dist-info/entry_points.txt,sha256=jH3HfTwxjzog7E3lq8CKpUWGIRY9FSXbyL6CpUmv6D0,36
330
+ tol_sdk-1.7.3.dist-info/top_level.txt,sha256=PwKMQLphyZNvagBoriVbl8uwHXQl8IC1niawVG0iXMM,10
331
+ tol_sdk-1.7.3.dist-info/RECORD,,
@@ -1,6 +0,0 @@
1
- # SPDX-FileCopyrightText: 2025 Genome Research Ltd.
2
- #
3
- # SPDX-License-Identifier: MIT
4
-
5
-
6
- from .factory import create_summary_models # noqa F401
@@ -1,91 +0,0 @@
1
- # SPDX-FileCopyrightText: 2025 Genome Research Ltd.
2
- #
3
- # SPDX-License-Identifier: MIT
4
-
5
- from __future__ import annotations
6
-
7
- from collections.abc import Iterable as IterableABC
8
- from dataclasses import dataclass
9
- from typing import Iterator
10
-
11
- from sqlalchemy.dialects.postgresql import JSONB
12
- from sqlalchemy.orm import (
13
- Mapped,
14
- mapped_column
15
- )
16
-
17
- from ..model import Model
18
-
19
-
20
- @dataclass(frozen=True, kw_only=True)
21
- class SummaryModels(IterableABC[type[Model]]):
22
- """
23
- Contains the needed models for summarys.
24
-
25
- """
26
-
27
- summary: type[Model]
28
-
29
- def __iter__(self) -> Iterator[type[Model]]:
30
- """
31
- Returns in order they should be deleted
32
- """
33
-
34
- return iter(
35
- [
36
- self.summary
37
- ]
38
- )
39
-
40
-
41
- def create_summary_models(
42
- base_model_class: type[Model]
43
- ) -> SummaryModels:
44
- """
45
- Creates all needed models (and joining tables) for
46
- summaries.
47
-
48
- Returns a `SummaryModels` instance that functions like an
49
- `Iterable`.
50
- """
51
-
52
- class Summary(base_model_class):
53
- __tablename__ = 'summary'
54
-
55
- id: Mapped[int] = mapped_column(primary_key=True, autoincrement=True) # noqa A003
56
-
57
- source_object_type: Mapped[str] = mapped_column(nullable=False)
58
- destination_object_type: Mapped[str] = mapped_column(nullable=True)
59
-
60
- object_filters: Mapped[dict] = mapped_column(
61
- JSONB,
62
- nullable=False,
63
- default={}
64
- )
65
-
66
- group_by: Mapped[dict] = mapped_column(
67
- JSONB,
68
- nullable=False,
69
- default=[]
70
- )
71
-
72
- stats_fields: Mapped[dict] = mapped_column(
73
- JSONB,
74
- nullable=False,
75
- default=[]
76
- )
77
-
78
- stats: Mapped[dict] = mapped_column(
79
- JSONB,
80
- nullable=False,
81
- default=[]
82
- )
83
-
84
- prefix: Mapped[str] = mapped_column(
85
- nullable=False,
86
- default=''
87
- )
88
-
89
- return SummaryModels(
90
- summary=Summary,
91
- )