Data Transfer Objects
Co2LoadDTO
- class applications.load.dto.load.Co2LoadDTO(*, timestamps: list[str], co2_values: list[Annotated[float, FieldInfo(annotation=NoneType, required=True, metadata=[Ge(ge=0)])]], resolution: ComputeLoadResolution, running_stats: LoadStats | None = None)
Bases:
BaseDTOCluster CO₂ footprint timeseries.
Contains estimated carbon footprint values over time.
- timestamps
List of timestamp strings in “YYYY-MM-DD HH:MM:SS” format.
- Type:
list[str]
- co2_values
CO₂ footprint at each timestamp (kgCO₂e).
- Type:
list[float]
- resolution
Time bucket size.
- running_stats
Descriptive statistics over co2_values, or None.
- Type:
- property avg_co2: float
Average CO₂ per bucket (kgCO₂e).
- property max_co2: float
Peak CO₂ in a single bucket (kgCO₂e).
- model_config: ClassVar[ConfigDict] = {'frozen': True}
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- property total_co2: float
Total CO₂ footprint across all buckets (kgCO₂e).
CongestionMetricsDTO
- class applications.congestion.dto.congestion.CongestionMetricsDTO(*, dates: list[str], running_pct: list[float], waiting_pct: list[float], max_running_pct: ~typing.Annotated[float, ~annotated_types.Ge(ge=0)], max_waiting_pct: ~typing.Annotated[float, ~annotated_types.Ge(ge=0)], avg_running_pct: ~typing.Annotated[float, ~annotated_types.Ge(ge=0)], avg_waiting_pct: ~typing.Annotated[float, ~annotated_types.Ge(ge=0)], start_date: str, end_date: str, duration_hours: ~typing.Annotated[float, ~annotated_types.Gt(gt=0)], resolution: ~applications.ait.enums.ComputeLoadResolution, data_type: ~applications.ait.enums.DataType, period: list[~applications.congestion.dto.congestion.PeriodEntryDTO], exceed_periods: list[str] = <factory>)
Bases:
BaseDTOCongestion analysis: running vs waiting resource utilization over time.
- dates
Date labels for each time bucket.
- Type:
list[str]
- running_pct
Running utilization percentage per bucket.
- Type:
list[float]
- waiting_pct
Waiting utilization percentage per bucket.
- Type:
list[float]
- max_running_pct
Peak running utilization across all buckets.
- Type:
float
- max_waiting_pct
Peak waiting utilization across all buckets.
- Type:
float
- avg_running_pct
Mean running utilization across all buckets.
- Type:
float
- avg_waiting_pct
Mean waiting utilization across all buckets.
- Type:
float
- start_date
First date in the timeseries (YYYY-MM-DD).
- Type:
str
- end_date
Last date in the timeseries (YYYY-MM-DD).
- Type:
str
- duration_hours
Hours per resolution bucket (e.g. 24 for 1day).
- Type:
float
- resolution
Time bucket size used for the aggregation.
- data_type
Resource type: ‘core’ for CPU, ‘GPU’ for GPU.
- period
Per-bucket breakdown with date and percentages.
- hardware_mismatch
True when any running percentage exceeds 100%, indicating a hardware config issue.
- model_config: ClassVar[ConfigDict] = {'frozen': True}
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
CoreLoadDTO
- class applications.load.dto.load.CoreLoadDTO(*, running_timestamps: list[str], waiting_timestamps: list[str], allocated_cores: list[Annotated[float, FieldInfo(annotation=NoneType, required=True, metadata=[Ge(ge=0)])]], requested_cores: list[Annotated[float, FieldInfo(annotation=NoneType, required=True, metadata=[Ge(ge=0)])]], total_capacity: list[Annotated[float, FieldInfo(annotation=NoneType, required=True, metadata=[Ge(ge=0)])]], resolution: ComputeLoadResolution, running_stats: LoadStats | None = None, waiting_stats: LoadStats | None = None)
Bases:
BaseDTOCore load with hardware capacity context.
Contains allocated and requested cores over time, along with hardware capacity information for computing utilization rates.
- running_timestamps
Timestamps aligned with
allocated_coresandtotal_capacity.- Type:
list[str]
- waiting_timestamps
Timestamps aligned with
requested_cores.- Type:
list[str]
- allocated_cores
Cores currently allocated at each running timestamp.
- Type:
list[float]
- requested_cores
Cores requested (waiting) at each waiting timestamp.
- Type:
list[float]
- total_capacity
Hardware capacity aligned with
running_timestamps.- Type:
list[float]
- resolution
Time bucket size.
- running_stats
Descriptive statistics over allocated_cores, or None.
- Type:
- waiting_stats
Descriptive statistics over requested_cores, or None.
- Type:
Note
compute_loadcollapses consecutive nulls per state, so the RUNNING and WAITING timelines are not guaranteed to share an index.- property avg_allocated: float
Average allocated cores.
- property avg_capacity: float
Average hardware capacity.
- property max_allocated: float
Peak allocated cores.
- model_config: ClassVar[ConfigDict] = {'frozen': True}
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- property utilization_rate: float
Average utilization (allocated / capacity).
- property utilization_series: list[float]
Per-running-timestamp utilization (allocated / capacity). 0.0 where capacity is zero.
CorehourLoadDTO
- class applications.load.dto.load.CorehourLoadDTO(*, status: ResultStatus = ResultStatus.OK, running_timestamps: list[str], waiting_timestamps: list[str], allocated_cores: list[Annotated[float, FieldInfo(annotation=NoneType, required=True, metadata=[Ge(ge=0)])]], requested_cores: list[Annotated[float, FieldInfo(annotation=NoneType, required=True, metadata=[Ge(ge=0)])]], total_capacity: list[Annotated[float, FieldInfo(annotation=NoneType, required=True, metadata=[Ge(ge=0)])]], resolution: ComputeLoadResolution, running_stats: LoadStats | None = None, waiting_stats: LoadStats | None = None)
Bases:
BaseDTOCore-hour load timeseries (allocated cores × elapsed time).
Same underlying data as CoreLoadDTO but with computed fields oriented toward core-hour accounting rather than instantaneous utilization.
- running_timestamps
Timestamps aligned with
allocated_coresandtotal_capacity.- Type:
list[str]
- waiting_timestamps
Timestamps aligned with
requested_cores.- Type:
list[str]
- allocated_cores
Allocated cores per running timestamp.
- Type:
list[float]
- requested_cores
Requested (waiting) cores per waiting timestamp.
- Type:
list[float]
- total_capacity
Hardware capacity per running timestamp.
- Type:
list[float]
- resolution
Time bucket size.
- running_stats
Descriptive statistics over allocated_cores, or None.
- Type:
- waiting_stats
Descriptive statistics over requested_cores, or None.
- Type:
- property avg_allocated: float
Average allocated cores.
- property avg_capacity: float
Average hardware capacity.
- model_config: ClassVar[ConfigDict] = {'frozen': True}
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- property total_allocated: float
sum of per-bucket average allocated cores × bucket duration in hours.
- Type:
Core-hours
- property utilization_rate: float
Average utilization (allocated / capacity).
- property utilization_series: list[float]
Per-timestamp utilization (allocated / capacity). 0.0 where capacity is zero.
CoresFlatDistributionDTO
- class applications.resources.dto.cores.CoresFlatDistributionDTO(*, bins: list[~applications.resources.dto.cores.CoreBinStats] = <factory>, extended_stats: ~applications.resources.dto.stats.ExtendedStats | None = None)
Bases:
BaseDTOResult of a flat (ungrouped) core allocation distribution query.
- bins
Per-bin statistics ordered by bin range.
- Type:
- extended_stats
Descriptive statistics over the full distribution (keys:
min,max,mean,count,std).- Type:
- model_config: ClassVar[ConfigDict] = {'frozen': True}
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
CoresGroupedDistributionDTO
- class applications.resources.dto.cores.CoresGroupedDistributionDTO(*, groups: list[~applications.resources.dto.cores.CoresGroupStats] = <factory>, description: dict[str, ~typing.Any] = <factory>)
Bases:
BaseDTOResult of a grouped core allocation distribution query.
- groups
One entry per group, each carrying all three metrics.
- Type:
- description
Grouping summary produced by
grouping_resources_description.- Type:
dict[str, Any]
- model_config: ClassVar[ConfigDict] = {'frozen': True}
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
CoresMemoryFlatMatrixDTO
- class applications.resources.dto.cores_memory.CoresMemoryFlatMatrixDTO(*, core_bin_labels: list[str] = <factory>, bins: list[~applications.resources.dto.cores_memory.CoresMemoryBinStats] = <factory>)
Bases:
BaseDTOResult of an ungrouped cores-vs-memory 2D matrix query.
- core_bin_labels
Ordered core-allocation bin labels shared across all memory bins (the Y axis in bar charts).
- Type:
list[str]
- bins
One entry per memory bin, carrying job counts and core-hours across all core bins.
- model_config: ClassVar[ConfigDict] = {'frozen': True}
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
CoresMemoryGroupedMatrixDTO
- class applications.resources.dto.cores_memory.CoresMemoryGroupedMatrixDTO(*, groups: list[~applications.resources.dto.cores_memory.CoresMemoryGroupStats] = <factory>, description: dict[str, ~typing.Any] = <factory>)
Bases:
BaseDTOResult of a grouped cores-vs-memory 2D matrix query.
- groups
One entry per group, each carrying a per-memory-bin matrix.
- description
Grouping summary produced by
grouping_resources_description.- Type:
dict[str, Any]
- model_config: ClassVar[ConfigDict] = {'frozen': True}
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
CoresOccupancyDTO
- class applications.load.dto.occupancy.CoresOccupancyDTO(*, timestamps: list[str], unavailable: list[Annotated[float, FieldInfo(annotation=NoneType, required=True, metadata=[Ge(ge=0)])]], available: list[Annotated[float, FieldInfo(annotation=NoneType, required=True, metadata=[Ge(ge=0)])]], allocated: list[Annotated[float, FieldInfo(annotation=NoneType, required=True, metadata=[Ge(ge=0)])]], not_allocatable: list[Annotated[float, FieldInfo(annotation=NoneType, required=True, metadata=[Ge(ge=0)])]], powered_down: list[Annotated[float, FieldInfo(annotation=NoneType, required=True, metadata=[Ge(ge=0)])]], total_occupancy: list[Annotated[float, FieldInfo(annotation=NoneType, required=True, metadata=[Ge(ge=0)])]], total_capacity: list[Annotated[float, FieldInfo(annotation=NoneType, required=True, metadata=[Ge(ge=0)])]], resolution: Resolution)
Bases:
BaseDTOCores occupancy timeseries from the cores_stats index.
- timestamps
Timestamp strings after resolution aggregation.
- Type:
list[str]
Average cores in unavailable nodes per bucket.
- Type:
list[float]
- available
Average cores available for allocation per bucket.
- Type:
list[float]
- allocated
Average allocated cores per bucket.
- Type:
list[float]
- not_allocatable
Average cores in memory-bound nodes per bucket.
- Type:
list[float]
- powered_down
Average cores in powered-down nodes per bucket.
- Type:
list[float]
- total_occupancy
Max total occupancy (cores with jobs) per bucket.
- Type:
list[float]
- total_capacity
Average total hardware cores per bucket.
- Type:
list[float]
- resolution
Time bucket size.
- model_config: ClassVar[ConfigDict] = {'frozen': True}
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
CoresOccupancyGroupEntryDTO
- class applications.load.dto.occupancy.CoresOccupancyGroupEntryDTO(*, group: str, timestamps: list[str], unavailable: list[Annotated[float, FieldInfo(annotation=NoneType, required=True, metadata=[Ge(ge=0)])]], available: list[Annotated[float, FieldInfo(annotation=NoneType, required=True, metadata=[Ge(ge=0)])]], allocated: list[Annotated[float, FieldInfo(annotation=NoneType, required=True, metadata=[Ge(ge=0)])]], not_allocatable: list[Annotated[float, FieldInfo(annotation=NoneType, required=True, metadata=[Ge(ge=0)])]], powered_down: list[Annotated[float, FieldInfo(annotation=NoneType, required=True, metadata=[Ge(ge=0)])]], total_occupancy: list[Annotated[float, FieldInfo(annotation=NoneType, required=True, metadata=[Ge(ge=0)])]], total_capacity: list[Annotated[float, FieldInfo(annotation=NoneType, required=True, metadata=[Ge(ge=0)])]])
Bases:
BaseDTOA single group’s cores occupancy timeseries.
- group
Group identifier or ‘Others’.
- Type:
str
- timestamps
Timestamp strings after resolution aggregation.
- Type:
list[str]
Average cores in unavailable nodes per bucket.
- Type:
list[float]
- available
Average cores available for allocation per bucket.
- Type:
list[float]
- allocated
Average allocated cores per bucket.
- Type:
list[float]
- not_allocatable
Average cores in memory-bound nodes per bucket.
- Type:
list[float]
- powered_down
Average cores in powered-down nodes per bucket.
- Type:
list[float]
- total_occupancy
Max total occupancy (cores with jobs) per bucket.
- Type:
list[float]
- total_capacity
Average total hardware cores per bucket.
- Type:
list[float]
- model_config: ClassVar[ConfigDict] = {'frozen': True}
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
CostLoadDTO
- class applications.load.dto.load.CostLoadDTO(*, timestamps: list[str], cost_values: list[Annotated[float, FieldInfo(annotation=NoneType, required=True, metadata=[Ge(ge=0)])]], unit: str, resolution: ComputeLoadResolution, running_stats: LoadStats | None = None)
Bases:
BaseDTOCluster cost load timeseries.
Contains computed cost values over time (currency unit depends on cluster configuration).
- timestamps
List of timestamp strings in “YYYY-MM-DD HH:MM:SS” format.
- Type:
list[str]
- cost_values
Cost at each timestamp (in cluster’s configured currency).
- Type:
list[float]
- unit
Currency unit string (e.g., “EUR”, “USD”).
- Type:
str
- resolution
Time bucket size.
- running_stats
Descriptive statistics over cost_values, or None.
- Type:
- property avg_cost: float
Average cost per bucket.
- property max_cost: float
Peak cost in a single bucket.
- model_config: ClassVar[ConfigDict] = {'frozen': True}
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- property total_cost: float
Total cost across all buckets.
DetailStatsBucketDTO
- class applications.consumers.dto.consumers.DetailStatsBucketDTO(*, count: int, data: list[~applications.consumers.dto.consumers.MetricStatsDTO] = <factory>)
Bases:
BaseDTOOne filtered bucket of per-field statistics.
- model_config: ClassVar[ConfigDict] = {'frozen': True}
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
DetailStatsDTO
- class applications.consumers.dto.consumers.DetailStatsDTO(*, currency: str, data: list[~applications.consumers.dto.consumers.DetailStatsBucketDTO] = <factory>)
Bases:
BaseDTOResult of a detail (per-field stats) query.
- model_config: ClassVar[ConfigDict] = {'frozen': True}
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
EnergyMetricsDTO
- class applications.kpi.dto.energy.EnergyMetricsDTO(*, avg_power: float | None = None, max_power: float | None = None, power_unit: str | None = None, total_energy: float | None = None, power_error: str | None = None, energy_error: str | None = None)
Bases:
BaseDTOPower and energy consumption KPI metrics.
The energy endpoint returns two independent sub-results (power and energy), each of which may succeed or fail independently. When both fail, the overall status is
NO_DATA.- avg_power
Average power in watts, or None if unavailable.
- Type:
float | None
- max_power
Maximum power in watts, or None if unavailable.
- Type:
float | None
- power_unit
Power unit label (e.g.
"watts"), or None.- Type:
str | None
- total_energy
Total energy in Wh, or None if unavailable.
- Type:
float | None
- power_error
Error message from the power sub-query, or None.
- Type:
str | None
- energy_error
Error message from the energy sub-query, or None.
- Type:
str | None
- model_config: ClassVar[ConfigDict] = {'frozen': True}
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
ExecTimeDistributionDTO
- class applications.throughput.dto.exec_time.ExecTimeDistributionDTO(*, bin_upper_hours: list[str] = <factory>, job_counts: list[int] = <factory>, resource_hour_sums: list[float] = <factory>, resource_field_available: bool = True)
Bases:
BaseDTOExecution time distribution histogram result.
- bin_upper_hours
Upper bound of each bin in hours.
- Type:
list[str]
- job_counts
Number of jobs per bin.
- Type:
list[int]
- resource_hour_sums
Sum of resource-hours per bin.
- Type:
list[float]
- resource_field_available
Whether the resource-hours field exists in the index.
- Type:
bool
- model_config: ClassVar[ConfigDict] = {'frozen': True}
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
ExecTimeVsTimelimitConfig
- class applications.throughput.dto.exec_time.ExecTimeVsTimelimitConfig(*, filters: ~applications.throughput.dto.exec_time.ExecTimeFilterConfig = <factory>, thresholds: list[~applications.throughput.dto.exec_time.CategoryThreshold] = <factory>)
Bases:
BaseDTOFull configuration for the execution time vs timelimit analysis.
Loaded from
UIConfigurationwhen not overridden by the caller. Passed tocompute_exec_time_vs_timelimit()and saved viasave_exec_time_vs_timelimit_config().- filters
State-inclusion settings controlling which jobs are analysed.
- thresholds
Ordered list of ratio range categories shown in the sunburst.
- model_config: ClassVar[ConfigDict] = {'frozen': True}
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
ExecTimeVsTimelimitDTO
- class applications.throughput.dto.exec_time.ExecTimeVsTimelimitDTO(*, categories: list[~applications.throughput.dto.exec_time.RatioCategoryDTO] = <factory>, total_jobs: int = 0, no_limit_jobs: int = 0)
Bases:
BaseDTOExecution time vs timelimit ratio result.
- categories
Per-category job counts.
- total_jobs
Sum of all category counts.
- Type:
int
- no_limit_jobs
Number of jobs without a timelimit.
- Type:
int
- model_config: ClassVar[ConfigDict] = {'frozen': True}
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
GpuFlatDistributionDTO
- class applications.resources.dto.gpu.GpuFlatDistributionDTO(*, bins: list[~applications.resources.dto.gpu.GpuBinStats] = <factory>, extended_stats: ~applications.resources.dto.stats.ExtendedStats | None = None)
Bases:
BaseDTOResult of a flat (ungrouped) GPU distribution query.
- bins
Per-bin statistics ordered by bin range.
- Type:
- extended_stats
Descriptive statistics over the full distribution (keys:
min,max,mean,count,std).- Type:
- model_config: ClassVar[ConfigDict] = {'frozen': True}
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
GpuGroupedDistributionDTO
- class applications.resources.dto.gpu.GpuGroupedDistributionDTO(*, groups: list[~applications.resources.dto.gpu.GpuGroupStats] = <factory>, description: dict[str, ~typing.Any] = <factory>)
Bases:
BaseDTOResult of a grouped GPU distribution query.
- groups
One entry per group, each carrying all metrics.
- Type:
- description
Grouping summary produced by
grouping_resources_description.- Type:
dict[str, Any]
- model_config: ClassVar[ConfigDict] = {'frozen': True}
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
GpuLoadDTO
- class applications.load.dto.load.GpuLoadDTO(*, running_timestamps: list[str], waiting_timestamps: list[str], allocated_gpus: list[Annotated[float, FieldInfo(annotation=NoneType, required=True, metadata=[Ge(ge=0)])]], requested_gpus: list[Annotated[float, FieldInfo(annotation=NoneType, required=True, metadata=[Ge(ge=0)])]], total_capacity: list[Annotated[float, FieldInfo(annotation=NoneType, required=True, metadata=[Ge(ge=0)])]], resolution: ComputeLoadResolution, running_stats: LoadStats | None = None, waiting_stats: LoadStats | None = None)
Bases:
BaseDTOGPU load with hardware capacity context.
Contains allocated and requested GPUs over time, along with hardware capacity information for computing utilization rates.
- running_timestamps
Timestamps aligned with
allocated_gpusandtotal_capacity.- Type:
list[str]
- waiting_timestamps
Timestamps aligned with
requested_gpus.- Type:
list[str]
- allocated_gpus
GPUs currently allocated at each running timestamp.
- Type:
list[float]
- requested_gpus
GPUs requested (waiting) at each waiting timestamp.
- Type:
list[float]
- total_capacity
Hardware capacity aligned with
running_timestamps.- Type:
list[float]
- resolution
Time bucket size.
- running_stats
Descriptive statistics over allocated_gpus, or None.
- Type:
- waiting_stats
Descriptive statistics over requested_gpus, or None.
- Type:
Note
compute_loadcollapses consecutive nulls per state, so the RUNNING and WAITING timelines are not guaranteed to share an index.- property avg_allocated: float
Average allocated GPUs.
- property avg_capacity: float
Average hardware capacity.
- property max_allocated: float
Peak allocated GPUs.
- model_config: ClassVar[ConfigDict] = {'frozen': True}
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- property utilization_rate: float
Average utilization (allocated / capacity).
- property utilization_series: list[float]
Per-timestamp utilization (allocated / capacity). 0.0 where capacity is zero.
GpuhourLoadDTO
- class applications.load.dto.load.GpuhourLoadDTO(*, running_timestamps: list[str], waiting_timestamps: list[str], allocated_gpus: list[Annotated[float, FieldInfo(annotation=NoneType, required=True, metadata=[Ge(ge=0)])]], requested_gpus: list[Annotated[float, FieldInfo(annotation=NoneType, required=True, metadata=[Ge(ge=0)])]], total_capacity: list[Annotated[float, FieldInfo(annotation=NoneType, required=True, metadata=[Ge(ge=0)])]], resolution: ComputeLoadResolution)
Bases:
BaseDTOGPU-hour load timeseries (allocated GPUs × elapsed time).
Same underlying data as GpuLoadDTO but with computed fields oriented toward GPU-hour accounting rather than instantaneous utilization.
- running_timestamps
Timestamps aligned with
allocated_gpusandtotal_capacity.- Type:
list[str]
- waiting_timestamps
Timestamps aligned with
requested_gpus.- Type:
list[str]
- allocated_gpus
Allocated GPUs per running timestamp.
- Type:
list[float]
- requested_gpus
Requested (waiting) GPUs per waiting timestamp.
- Type:
list[float]
- total_capacity
Hardware GPU capacity per running timestamp.
- Type:
list[float]
- resolution
Time bucket size.
- property avg_allocated: float
Average allocated GPUs.
- property avg_capacity: float
Average hardware GPU capacity.
- model_config: ClassVar[ConfigDict] = {'frozen': True}
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- property total_allocated: float
Sum of allocated GPUs across all buckets (proxy for GPU-hours).
- property utilization_rate: float
Average utilization (allocated / capacity).
- property utilization_series: list[float]
Per-timestamp utilization (allocated / capacity). 0.0 where capacity is zero.
GroupAggregationDTO
- class applications.consumers.dto.consumers.GroupAggregationDTO(*, global_summary: ~applications.consumers.dto.consumers.GroupGlobalDTO, data: list[~applications.consumers.dto.consumers.GroupRowDTO] = <factory>, cost_configured: bool = False, energy_configured: bool = False, co2_configured: bool = False)
Bases:
BaseDTOResult of a group-aggregation query.
- model_config: ClassVar[ConfigDict] = {'frozen': True}
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
GroupEntryDTO
- class applications.load.dto.load.GroupEntryDTO(*, group: str, running_timestamps: list[str], waiting_timestamps: list[str] | None = None, running_values: list[Annotated[float, FieldInfo(annotation=NoneType, required=True, metadata=[Ge(ge=0)])]], waiting_values: list[Annotated[float, FieldInfo(annotation=NoneType, required=True, metadata=[Ge(ge=0)])]] | None = None, avg_running: float, max_running: float, running_stats: LoadStats | None = None, waiting_stats: LoadStats | None = None)
Bases:
BaseDTOA single group’s timeseries data within a grouped load result.
- group
Group identifier (e.g., “project_alpha”, “Others”).
- Type:
str
- running_timestamps
Timestamps aligned with
running_values.- Type:
list[str]
- waiting_timestamps
Timestamps aligned with
waiting_values, or None for metrics that only have a RUNNING state (cost, CO₂, power).- Type:
list[str] | None
- running_values
Primary metric values (RUNNING state).
- Type:
list[float]
- waiting_values
Secondary metric values (WAITING state), or None for metrics that only have a RUNNING state (e.g., cost, CO₂, power).
- Type:
list[float] | None
- avg_running
Average of running_values.
- Type:
float
- max_running
Peak value in running_values.
- Type:
float
- running_stats
Descriptive statistics over running_values, or None.
- Type:
- waiting_stats
Descriptive statistics over waiting_values, or None.
- Type:
Note
compute_loadcollapses consecutive nulls per state, so the RUNNING and WAITING timelines are not guaranteed to share an index.- model_config: ClassVar[ConfigDict] = {'frozen': True}
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
GroupGlobalDTO
- class applications.consumers.dto.consumers.GroupGlobalDTO(*, total_count: int = 0, total_core_hours: float | None = None, total_gpu_hours: float | None = None, total_cost: float | None = None, total_energy: float | None = None, total_co2: float | None = None, groups: list[str] = <factory>)
Bases:
BaseDTOAggregated totals across all group rows.
- model_config: ClassVar[ConfigDict] = {'frozen': True}
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
GroupRowDTO
- class applications.consumers.dto.consumers.GroupRowDTO(*, name: str | int, count: int, core_hours: float | None = None, gpu_hours: float | None = None, allocated_cores: float | None = None, allocated_gpus: float | None = None, execution_time: float | None = None, waiting_time: float | None = None, slowdown: float | None = None, cost: float | None = None, energy: float | None = None, co2: float | None = None, regroup_name: str | None = None)
Bases:
BaseDTOA single row in the group-aggregation result.
Numeric fields are raw values from ES (or
Nonewhen the metric was not configured for the cluster). Presentation rules (rounding, null placeholders) are applied by the view layer.- model_config: ClassVar[ConfigDict] = {'frozen': True}
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
GroupedCo2LoadDTO
- class applications.load.dto.load.GroupedCo2LoadDTO(*, status: ResultStatus = ResultStatus.OK, groups: list[GroupEntryDTO], resolution: ComputeLoadResolution, grouping_key: str, grouping_size: Annotated[int, Ge(ge=1)])
Bases:
BaseDTOGrouped CO₂ load — one GroupEntryDTO per group (waiting_values is None).
- status
Query outcome — OK if data is present, otherwise the reason.
- groups
Per-group CO₂ timeseries.
- Type:
- resolution
Time bucket resolution.
- grouping_key
Field used for grouping.
- Type:
str
- grouping_size
Max groups returned (excluding Others).
- Type:
int
- model_config: ClassVar[ConfigDict] = {'frozen': True}
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
GroupedCoreLoadDTO
- class applications.load.dto.load.GroupedCoreLoadDTO(*, groups: list[GroupEntryDTO], resolution: ComputeLoadResolution, grouping_key: str, grouping_size: Annotated[int, Ge(ge=1)])
Bases:
BaseDTOGrouped core load — one GroupEntryDTO per group.
- groups
Per-group core load timeseries.
- Type:
- resolution
Time bucket resolution.
- grouping_key
Field used for grouping.
- Type:
str
- grouping_size
Max groups returned (excluding Others).
- Type:
int
- model_config: ClassVar[ConfigDict] = {'frozen': True}
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
GroupedCoresOccupancyDTO
- class applications.load.dto.occupancy.GroupedCoresOccupancyDTO(*, groups: list[CoresOccupancyGroupEntryDTO], resolution: Resolution, grouping_key: str, grouping_size: Annotated[int, Ge(ge=1)])
Bases:
BaseDTOGrouped cores occupancy — one CoresOccupancyGroupEntryDTO per group.
- groups
Per-group cores occupancy timeseries.
- resolution
Time bucket resolution.
- grouping_key
Field used for grouping.
- Type:
str
- grouping_size
Max groups returned (excluding Others).
- Type:
int
- model_config: ClassVar[ConfigDict] = {'frozen': True}
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
GroupedCostLoadDTO
- class applications.load.dto.load.GroupedCostLoadDTO(*, status: ResultStatus = ResultStatus.OK, groups: list[GroupEntryDTO], unit: str, resolution: ComputeLoadResolution, grouping_key: str, grouping_size: Annotated[int, Ge(ge=1)])
Bases:
BaseDTOGrouped cost load — one GroupEntryDTO per group (waiting_values is None).
- status
Query outcome — OK if data is present, otherwise the reason.
- groups
Per-group cost timeseries.
- Type:
- unit
Currency unit (e.g. ‘EUR’, ‘USD’).
- Type:
str
- resolution
Time bucket resolution.
- grouping_key
Field used for grouping.
- Type:
str
- grouping_size
Max groups returned (excluding Others).
- Type:
int
- model_config: ClassVar[ConfigDict] = {'frozen': True}
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
GroupedExecTimeEntryDTO
- class applications.throughput.dto.exec_time.GroupedExecTimeEntryDTO(*, grouping: str, group_type: str, bin_upper_hours: list[str], job_counts: list[int], resource_hour_sums: list[float], resource_field_available: bool = True)
Bases:
BaseDTOOne group’s execution time distribution histogram.
- grouping
ES field used for grouping (e.g.
"Account","UID").- Type:
str
- group_type
The group value (e.g.
"physics"), or"Others"for the overflow bucket.- Type:
str
- bin_upper_hours
Upper bound of each bin in hours (as strings).
- Type:
list[str]
- job_counts
Number of jobs per bin.
- Type:
list[int]
- resource_hour_sums
Sum of resource-hours (core or GPU) per bin.
- Type:
list[float]
- resource_field_available
Falsewhen the resource-hours field is absent from the index — callers should omit the resource chart in that case.- Type:
bool
- model_config: ClassVar[ConfigDict] = {'frozen': True}
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
GroupedExecTimeVsTimelimitEntryDTO
- class applications.throughput.dto.exec_time.GroupedExecTimeVsTimelimitEntryDTO(*, grouping: str, group_type: str, categories: list[RatioCategoryDTO])
Bases:
BaseDTOOne group’s exec-time vs timelimit ratio breakdown.
- grouping
ES field used for grouping (e.g.
"Account").- Type:
str
- group_type
The group value (e.g.
"physics"), or"Others"for the overflow bucket.- Type:
str
- categories
Per-threshold job counts, including an optional
"No Limit"entry for jobs without a timelimit.
- model_config: ClassVar[ConfigDict] = {'frozen': True}
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
GroupedGpuLoadDTO
- class applications.load.dto.load.GroupedGpuLoadDTO(*, groups: list[GroupEntryDTO], resolution: ComputeLoadResolution, grouping_key: str, grouping_size: Annotated[int, Ge(ge=1)])
Bases:
BaseDTOGrouped GPU load — one GroupEntryDTO per group.
- groups
Per-group GPU load timeseries.
- Type:
- resolution
Time bucket resolution.
- grouping_key
Field used for grouping.
- Type:
str
- grouping_size
Max groups returned (excluding Others).
- Type:
int
- model_config: ClassVar[ConfigDict] = {'frozen': True}
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
GroupedJobLoadDTO
- class applications.load.dto.load.GroupedJobLoadDTO(*, groups: list[GroupEntryDTO], resolution: ComputeLoadResolution, grouping_key: str, grouping_size: Annotated[int, Ge(ge=1)])
Bases:
BaseDTOGrouped job count load — one GroupEntryDTO per group.
- groups
Per-group job load timeseries.
- Type:
- resolution
Time bucket resolution.
- grouping_key
Field used for grouping.
- Type:
str
- grouping_size
Max groups returned (excluding Others).
- Type:
int
- model_config: ClassVar[ConfigDict] = {'frozen': True}
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
GroupedJobsStatusDTO
- class applications.state.dto.state.GroupedJobsStatusDTO(*, data: dict[~applications.ait.enums.JobState, list[~applications.state.dto.state.StateGroupEntryDTO]] = <factory>)
Bases:
BaseDTOGrouped job status result, keyed by state name.
Each key is a job state (e.g. COMPLETED), and the value is a list of
StateGroupEntryDTO— one per group (e.g. per user account). Returned as part of atuple[GroupedJobsStatusDTO | None, ResultStatus].- data
Groups keyed by state name (e.g. COMPLETED -> [group1, group2]).
- Type:
dict[applications.ait.enums.JobState, list[applications.state.dto.state.StateGroupEntryDTO]]
- model_config: ClassVar[ConfigDict] = {'frozen': True}
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
GroupedJobsStatusYmsDTO
- class applications.state.dto.state.GroupedJobsStatusYmsDTO(*, groups: list[~applications.state.dto.state.GroupedYmsEntryDTO] = <factory>)
Bases:
BaseDTOGrouped year-month status result: one entry per group.
Returned by
compute_jobs_status_yms_groupedas part of atuple[GroupedJobsStatusYmsDTO | None, ResultStatus]. Each group contains a full month-by-month breakdown with per-state counts.- groups
Per-group year-month data.
- Type:
- model_config: ClassVar[ConfigDict] = {'frozen': True}
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
GroupedNodesOccupancyDTO
- class applications.load.dto.occupancy.GroupedNodesOccupancyDTO(*, groups: list[NodesOccupancyGroupEntryDTO], resolution: Resolution, grouping_key: str, grouping_size: Annotated[int, Ge(ge=1)])
Bases:
BaseDTOGrouped nodes occupancy — one NodesOccupancyGroupEntryDTO per group.
- groups
Per-group nodes occupancy timeseries.
- resolution
Time bucket resolution.
- grouping_key
Field used for grouping.
- Type:
str
- grouping_size
Max groups returned (excluding Others).
- Type:
int
- model_config: ClassVar[ConfigDict] = {'frozen': True}
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
GroupedPowerLoadDTO
- class applications.load.dto.load.GroupedPowerLoadDTO(*, status: ResultStatus = ResultStatus.OK, groups: list[GroupEntryDTO], resolution: ComputeLoadResolution, grouping_key: str, grouping_size: Annotated[int, Ge(ge=1)])
Bases:
BaseDTOGrouped power load — one GroupEntryDTO per group (waiting_values is None).
- status
Query outcome — OK if data is present, otherwise the reason.
- groups
Per-group power timeseries.
- Type:
- resolution
Time bucket resolution.
- grouping_key
Field used for grouping.
- Type:
str
- grouping_size
Max groups returned (excluding Others).
- Type:
int
- model_config: ClassVar[ConfigDict] = {'frozen': True}
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
GroupedYmsEntryDTO
- class applications.state.dto.state.GroupedYmsEntryDTO(*, group_name: str | int, total_count: ~typing.Annotated[float, ~annotated_types.Ge(ge=0)], states: list[~applications.ait.enums.JobState] = <factory>, year_months: list[str] = <factory>, entries: list[~applications.state.dto.state.YmsEntryDTO] = <factory>)
Bases:
BaseDTOOne group’s complete year-month data in a grouped YMS query.
Contains the same structure as
JobsStatusYmsDTObut scoped to a single group value (e.g. all months for user “alice”). Groups beyondgrouping_sizeare aggregated into an “Others” entry.- group_name
Group identifier (e.g. user name, account, ‘Others’).
- Type:
str | int
- total_count
Sum across all months in this group.
- Type:
float
- states
Unique state names in this group.
- Type:
- year_months
Ordered YYYY-MM labels.
- Type:
list[str]
- entries
Per-month data with state breakdowns.
- Type:
- model_config: ClassVar[ConfigDict] = {'frozen': True}
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
HardwareStatsDTO
- class applications.kpi.dto.logs.HardwareStatsDTO(*, min_value: int | None = None, max_value: int | None = None, avg_value: int = 0)
Bases:
BaseDTOMin/max/avg hardware counts over a time range.
- min_value
Minimum hardware count in the period, or None if unavailable.
- Type:
int | None
- max_value
Maximum hardware count in the period, or None if unavailable.
- Type:
int | None
- avg_value
Average hardware count in the period.
- Type:
int
- model_config: ClassVar[ConfigDict] = {'frozen': True}
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
JobCountDTO
- class applications.ait.dto.jobs.JobCountDTO(*, total_jobs_count: Annotated[int, Ge(ge=0)])
Bases:
BaseDTOTotal count of jobs matching the current filters.
- total_jobs_count
Number of jobs matching the current filters.
- Type:
int
- model_config: ClassVar[ConfigDict] = {'frozen': True}
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
JobFieldsDTO
- class applications.ait.dto.jobs.JobFieldsDTO(*, fields: list[str], total_available: Annotated[int, Ge(ge=0)])
Bases:
BaseDTOAvailable fields from the Elasticsearch mapping, priority-ordered.
- fields
Priority-ordered list of available field names.
- Type:
list[str]
- total_available
Total number of fields in the mapping.
- Type:
int
- model_config: ClassVar[ConfigDict] = {'frozen': True}
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
JobFrequencyDTO
- class applications.throughput.dto.job_freq.JobFrequencyDTO(*, job_count: ~pandas.core.series.Series | None = None, date: ~pandas.core.indexes.base.Index | None = None, description: dict = <factory>, resolution: ~applications.ait.enums.Resolution | None = None, datetime_col: ~applications.throughput.dto.common.ThroughputDatetimeCol = ThroughputDatetimeCol.SUBMIT)
Bases:
BaseDTOJob frequency timeseries result.
Contains job counts per time bucket with descriptive statistics.
- job_count
Job counts per time bucket, or None when the query returned no data.
- Type:
pandas.core.series.Series | None
- date
Formatted date strings for each time bucket, or None when no data.
- Type:
pandas.core.indexes.base.Index | None
- description
Descriptive statistics dict with keys: data, columns.
- Type:
dict
- resolution
Time bucket size used for aggregation, or None when no data.
- Type:
- datetime_col
Timestamp column used for bucketing.
- model_config: ClassVar[ConfigDict] = {'arbitrary_types_allowed': True, 'frozen': True}
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
JobLoadDTO
- class applications.load.dto.load.JobLoadDTO(*, running_timestamps: list[str], waiting_timestamps: list[str], running_jobs: list[Annotated[int, FieldInfo(annotation=NoneType, required=True, metadata=[Ge(ge=0)])]], waiting_jobs: list[Annotated[int, FieldInfo(annotation=NoneType, required=True, metadata=[Ge(ge=0)])]], resolution: ComputeLoadResolution, running_stats: LoadStats | None = None, waiting_stats: LoadStats | None = None)
Bases:
BaseDTOJob load timeseries with key statistics.
Contains running and waiting job counts over time, along with computed statistics like averages and maximums.
- running_timestamps
Timestamps aligned with
running_jobs.- Type:
list[str]
- waiting_timestamps
Timestamps aligned with
waiting_jobs.- Type:
list[str]
- running_jobs
Jobs currently running at each running timestamp.
- Type:
list[int]
- waiting_jobs
Jobs waiting to run at each waiting timestamp.
- Type:
list[int]
- resolution
Time bucket size (e.g., “1hour”, “1day”).
- running_stats
Descriptive statistics over running_jobs, or None.
- Type:
- waiting_stats
Descriptive statistics over waiting_jobs, or None.
- Type:
Note
compute_loadcollapses consecutive nulls per state, so the RUNNING and WAITING timelines are not guaranteed to share an index. Always pairrunning_jobswithrunning_timestampsandwaiting_jobswithwaiting_timestamps.- property avg_running: float
Average number of running jobs.
- property avg_waiting: float
Average number of waiting jobs.
- property max_running: int
Maximum running jobs at any point.
- property max_waiting: int
Maximum waiting jobs at any point.
- model_config: ClassVar[ConfigDict] = {'frozen': True}
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
JobsPageDTO
- class applications.ait.dto.jobs.JobsPageDTO(*, jobs: list[dict[str, Any]], total_count: Annotated[int, Ge(ge=0)], navigable_count: Annotated[int, Ge(ge=0)], offset: Annotated[int, Ge(ge=0)], limit: Annotated[int, Ge(ge=1)], truncated: bool = False)
Bases:
BaseDTOA page of job records with pagination metadata.
- jobs
Job records for the current page.
- Type:
list[dict[str, Any]]
- total_count
True total number of matching jobs.
- Type:
int
Capped at 10k for Elasticsearch pagination.
- Type:
int
- offset
Starting index of this page.
- Type:
int
- limit
Maximum number of jobs per page.
- Type:
int
- truncated
True when total_count exceeds the 10k ES pagination window.
- Type:
bool
- model_config: ClassVar[ConfigDict] = {'frozen': True}
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
JobsStatusDTO
- class applications.state.dto.state.JobsStatusDTO(*, total_count: ~typing.Annotated[float, ~annotated_types.Ge(ge=0)] = 0, states: list[~applications.ait.enums.JobState] = <factory>, entries: list[~applications.state.dto.state.StateCountDTO] = <factory>)
Bases:
BaseDTOFlat job status aggregation: one entry per scheduler state.
Returned by
compute_jobs_statusas part of atuple[JobsStatusDTO | None, ResultStatus].- total_count
Sum of all state counts.
- Type:
float
- states
Ordered list of state names.
- Type:
- entries
Per-state counts.
- Type:
- model_config: ClassVar[ConfigDict] = {'frozen': True}
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
JobsStatusYmsDTO
- class applications.state.dto.state.JobsStatusYmsDTO(*, total_count: ~typing.Annotated[float, ~annotated_types.Ge(ge=0)] = 0, states: list[~applications.ait.enums.JobState] = <factory>, year_months: list[str] = <factory>, entries: list[~applications.state.dto.state.YmsEntryDTO] = <factory>)
Bases:
BaseDTOFlat year-month status aggregation.
Returned by
compute_jobs_status_ymsas part of atuple[JobsStatusYmsDTO | None, ResultStatus]. Contains oneYmsEntryDTOper month, ordered chronologically.- total_count
Sum across all months.
- Type:
float
- states
Unique state names across all months.
- Type:
- year_months
Ordered YYYY-MM labels.
- Type:
list[str]
- entries
Per-month data with state breakdowns.
- Type:
- model_config: ClassVar[ConfigDict] = {'frozen': True}
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
LogsMetricsDTO
- class applications.kpi.dto.logs.LogsMetricsDTO(*, date_from: str = 'forever', date_to: str = 'the end of time', job_count: int = 0, total_core_hours: float = 0, total_gpu_hours: float | None = None, cluster_usage: float = 0, gpu_usage: float = 0, core_stats: ~applications.kpi.dto.logs.HardwareStatsDTO = <factory>, gpu_stats: ~applications.kpi.dto.logs.HardwareStatsDTO = <factory>, user_count: int = 0)
Bases:
BaseDTOJob-level KPI metrics: counts, resource hours, usage, hardware info.
- date_from
Start of the date range (formatted string).
- Type:
str
- date_to
End of the date range (formatted string).
- Type:
str
- job_count
Total number of jobs.
- Type:
int
- total_core_hours
Sum of core-hours across all jobs.
- Type:
float
- total_gpu_hours
Sum of GPU-hours, or
Noneif the field is absent.- Type:
float | None
- cluster_usage
Cluster CPU usage percentage.
- Type:
float
- gpu_usage
Cluster GPU usage percentage.
- Type:
float
- core_stats
Core count statistics (min/max/avg).
- gpu_stats
GPU count statistics (min/max/avg).
- user_count
Number of unique users.
- Type:
int
- model_config: ClassVar[ConfigDict] = {'frozen': True}
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
MemoryFlatDistributionDTO
- class applications.resources.dto.memory.MemoryFlatDistributionDTO(*, bins: list[~applications.resources.dto.memory.MemoryBinStats] = <factory>, extended_stats: ~applications.resources.dto.stats.ExtendedStats | None = None)
Bases:
BaseDTOResult of a flat (ungrouped) memory distribution query.
- bins
Per-bin job counts ordered by memory range.
- Type:
- extended_stats
Rounded descriptive statistics over the full distribution (keys:
min,max,mean,count,std).- Type:
- model_config: ClassVar[ConfigDict] = {'frozen': True}
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
MemoryGroupedDistributionDTO
- class applications.resources.dto.memory.MemoryGroupedDistributionDTO(*, groups: list[~applications.resources.dto.memory.MemoryGroupStats] = <factory>, description: dict[str, ~typing.Any] = <factory>)
Bases:
BaseDTOResult of a grouped memory distribution query.
- groups
One entry per group, each carrying per-bin job counts.
- description
Grouping summary produced by
grouping_resources_description.- Type:
dict[str, Any]
- model_config: ClassVar[ConfigDict] = {'frozen': True}
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
MemoryRatioFlatDistributionDTO
- class applications.resources.dto.consumed_vs_requested_memory.MemoryRatioFlatDistributionDTO(*, bins: list[~applications.resources.dto.consumed_vs_requested_memory.MemoryRatioBinStats] = <factory>, extended_stats: ~applications.resources.dto.stats.ExtendedStats | None = None)
Bases:
BaseDTOFlat (ungrouped) memory ratio distribution query result.
- bins
Per-bin job counts ordered by percentage range.
- extended_stats
Rounded descriptive statistics over the full distribution (keys:
min,max,mean,count,std).- Type:
- model_config: ClassVar[ConfigDict] = {'frozen': True}
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
MemoryRatioGroupedDistributionDTO
- class applications.resources.dto.consumed_vs_requested_memory.MemoryRatioGroupedDistributionDTO(*, groups: list[~applications.resources.dto.consumed_vs_requested_memory.MemoryRatioGroupStats] = <factory>, description: dict[str, ~typing.Any] = <factory>)
Bases:
BaseDTOGrouped memory ratio distribution query result.
- groups
One entry per group, each carrying per-bin job counts.
- description
Grouping summary produced by
grouping_resources_description.- Type:
dict[str, Any]
- model_config: ClassVar[ConfigDict] = {'frozen': True}
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
MetricStatsDTO
- class applications.consumers.dto.consumers.MetricStatsDTO(*, name: str, count: int, min: float | None = None, max: float | None = None, avg: float | None = None, sum: float | None = None)
Bases:
BaseDTOOne ES
statsaggregation result for a single metric field.- model_config: ClassVar[ConfigDict] = {'frozen': True}
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
NodesFlatDistributionDTO
- class applications.resources.dto.nodes.NodesFlatDistributionDTO(*, bins: list[~applications.resources.dto.nodes.NodesBinStats] = <factory>, extended_stats: ~applications.resources.dto.stats.ExtendedStats | None = None)
Bases:
BaseDTOResult of a flat (ungrouped) node allocation distribution query.
- bins
Per-bin job counts ordered by node range.
- Type:
- extended_stats
Rounded descriptive statistics over the full distribution (keys:
min,max,mean,count,std).- Type:
- model_config: ClassVar[ConfigDict] = {'frozen': True}
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
NodesGroupedDistributionDTO
- class applications.resources.dto.nodes.NodesGroupedDistributionDTO(*, groups: list[~applications.resources.dto.nodes.NodesGroupStats] = <factory>, description: dict[str, ~typing.Any] = <factory>)
Bases:
BaseDTOResult of a grouped node allocation distribution query.
- groups
One entry per group, each carrying per-bin job counts.
- Type:
- description
Grouping summary produced by
grouping_resources_description.- Type:
dict[str, Any]
- model_config: ClassVar[ConfigDict] = {'frozen': True}
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
NodesOccupancyDTO
- class applications.load.dto.occupancy.NodesOccupancyDTO(*, timestamps: list[str], unavailable: list[Annotated[float, FieldInfo(annotation=NoneType, required=True, metadata=[Ge(ge=0)])]], available: list[Annotated[float, FieldInfo(annotation=NoneType, required=True, metadata=[Ge(ge=0)])]], partially_available: list[Annotated[float, FieldInfo(annotation=NoneType, required=True, metadata=[Ge(ge=0)])]], fully_occupied: list[Annotated[float, FieldInfo(annotation=NoneType, required=True, metadata=[Ge(ge=0)])]], memory_bound: list[Annotated[float, FieldInfo(annotation=NoneType, required=True, metadata=[Ge(ge=0)])]], compute_bound: list[Annotated[float, FieldInfo(annotation=NoneType, required=True, metadata=[Ge(ge=0)])]], powered_down: list[Annotated[float, FieldInfo(annotation=NoneType, required=True, metadata=[Ge(ge=0)])]], total: list[Annotated[float, FieldInfo(annotation=NoneType, required=True, metadata=[Ge(ge=0)])]], resolution: Resolution)
Bases:
BaseDTONodes occupancy timeseries from the cores_stats index.
- timestamps
Timestamp strings after resolution aggregation.
- Type:
list[str]
Average unavailable nodes per bucket.
- Type:
list[float]
- available
Average fully available nodes per bucket.
- Type:
list[float]
- partially_available
Average partially available nodes per bucket.
- Type:
list[float]
- fully_occupied
Average fully occupied nodes per bucket.
- Type:
list[float]
- memory_bound
Average memory-bound nodes per bucket.
- Type:
list[float]
- compute_bound
Average compute-bound nodes per bucket.
- Type:
list[float]
- powered_down
Average powered-down nodes per bucket.
- Type:
list[float]
- total
Average total node count per bucket.
- Type:
list[float]
- resolution
Time bucket size.
- model_config: ClassVar[ConfigDict] = {'frozen': True}
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
NodesOccupancyGroupEntryDTO
- class applications.load.dto.occupancy.NodesOccupancyGroupEntryDTO(*, group: str, timestamps: list[str], unavailable: list[Annotated[float, FieldInfo(annotation=NoneType, required=True, metadata=[Ge(ge=0)])]], available: list[Annotated[float, FieldInfo(annotation=NoneType, required=True, metadata=[Ge(ge=0)])]], partially_available: list[Annotated[float, FieldInfo(annotation=NoneType, required=True, metadata=[Ge(ge=0)])]], fully_occupied: list[Annotated[float, FieldInfo(annotation=NoneType, required=True, metadata=[Ge(ge=0)])]], memory_bound: list[Annotated[float, FieldInfo(annotation=NoneType, required=True, metadata=[Ge(ge=0)])]], compute_bound: list[Annotated[float, FieldInfo(annotation=NoneType, required=True, metadata=[Ge(ge=0)])]], powered_down: list[Annotated[float, FieldInfo(annotation=NoneType, required=True, metadata=[Ge(ge=0)])]], total: list[Annotated[float, FieldInfo(annotation=NoneType, required=True, metadata=[Ge(ge=0)])]])
Bases:
BaseDTOA single group’s nodes occupancy timeseries.
- group
Group identifier or ‘Others’.
- Type:
str
- timestamps
Timestamp strings after resolution aggregation.
- Type:
list[str]
Average unavailable nodes per bucket.
- Type:
list[float]
- available
Average fully available nodes per bucket.
- Type:
list[float]
- partially_available
Average partially available nodes per bucket.
- Type:
list[float]
- fully_occupied
Average fully occupied nodes per bucket.
- Type:
list[float]
- memory_bound
Average memory-bound nodes per bucket.
- Type:
list[float]
- compute_bound
Average compute-bound nodes per bucket.
- Type:
list[float]
- powered_down
Average powered-down nodes per bucket.
- Type:
list[float]
- total
Average total node count per bucket.
- Type:
list[float]
- model_config: ClassVar[ConfigDict] = {'frozen': True}
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
PeriodEntryDTO
- class applications.congestion.dto.congestion.PeriodEntryDTO(*, date: str, running_pct: Annotated[float, Ge(ge=0)], waiting_pct: Annotated[float, Ge(ge=0)])
Bases:
BaseDTOSingle time bucket with running/waiting percentages.
- date
Date label for the bucket (YYYY-MM-DD).
- Type:
str
- running_pct
Running resource utilization as a percentage.
- Type:
float
- waiting_pct
Waiting resource utilization as a percentage.
- Type:
float
- model_config: ClassVar[ConfigDict] = {'frozen': True}
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
PowerLoadDTO
- class applications.load.dto.load.PowerLoadDTO(*, timestamps: list[str], power_values: list[Annotated[float, FieldInfo(annotation=NoneType, required=True, metadata=[Ge(ge=0)])]], resolution: ComputeLoadResolution, running_stats: LoadStats | None = None)
Bases:
BaseDTOCluster power consumption timeseries.
Contains power draw values over time (in watts).
- timestamps
List of timestamp strings in “YYYY-MM-DD HH:MM:SS” format.
- Type:
list[str]
- power_values
Power consumption at each timestamp (watts).
- Type:
list[float]
- resolution
Time bucket size.
- running_stats
Descriptive statistics over power_values, or None.
- Type:
- property avg_power: float
Average power draw (watts).
- property max_power: float
Peak power draw (watts).
- model_config: ClassVar[ConfigDict] = {'frozen': True}
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
RatioCategoryDTO
- class applications.throughput.dto.exec_time.RatioCategoryDTO(*, name: str, count: int)
Bases:
BaseDTOA single category bucket from the exec-time / timelimit ratio aggregation.
- name
Category display name (e.g.
"Optimal","No Limit").- Type:
str
- count
Number of jobs in this category.
- Type:
int
- model_config: ClassVar[ConfigDict] = {'frozen': True}
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
RunningAndWaitingUsersDTO
- class applications.concusers.dto.concurrent_users.RunningAndWaitingUsersDTO(*, resolution: ComputeLoadResolution, dates: list[str] = [], user_counts: list[int] = [], stats: UserCountStats | None = None)
Bases:
BaseDTOResult of a run-and-wait concurrent users query.
- resolution
Time resolution for bucketing (subset of full Resolution enum).
- dates
Formatted timestamps, one per time bucket.
- Type:
list[str]
- user_counts
Distinct user count per time bucket.
- Type:
list[int]
- stats
Descriptive statistics over the user-count series, or
None.
- model_config: ClassVar[ConfigDict] = {'frozen': True}
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
SlowdownDistributionDTO
- class applications.throughput.dto.slowdown.SlowdownDistributionDTO(*, slowdown: DataFrame | None = None, datetime_col: SubmissionDatetimeCol = SubmissionDatetimeCol.SUBMIT)
Bases:
BaseDTOSlowdown PDF/CDF distribution result.
- slowdown
DataFrame with columns [value, frequency, cdf].
- Type:
pandas.core.frame.DataFrame | None
- datetime_col
The timestamp column used (Submit or Eligible).
- model_config: ClassVar[ConfigDict] = {'arbitrary_types_allowed': True, 'frozen': True}
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
SlowdownStatsDTO
- class applications.throughput.dto.slowdown.SlowdownStatsDTO(*, description: dict = <factory>, datetime_col: ~applications.throughput.dto.common.SubmissionDatetimeCol = SubmissionDatetimeCol.SUBMIT)
Bases:
BaseDTOSlowdown descriptive statistics result.
- description
Descriptive statistics dict with keys: data, columns, median.
- Type:
dict
- datetime_col
The timestamp column used (Submit or Eligible).
- model_config: ClassVar[ConfigDict] = {'arbitrary_types_allowed': True, 'frozen': True}
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
StateCountDTO
- class applications.state.dto.state.StateCountDTO(*, state: JobState, count: Annotated[float, Ge(ge=0)])
Bases:
BaseDTOAggregated metric value for a single job state.
Used as a building block in both flat and grouped results. The
countfield holds whatever metric was requested — job count when the category is STATE, or core-hours / cost / energy when a metric category is selected.- state
Job state (e.g. COMPLETED, FAILED, CANCELLED).
- count
Aggregated value for this state (jobs, core-hours, cost, etc.).
- Type:
float
- model_config: ClassVar[ConfigDict] = {'frozen': True}
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
StateGroupEntryDTO
- class applications.state.dto.state.StateGroupEntryDTO(*, group_name: str | int, grouping_type: ~applications.state.dto.state.GroupingField | str, total_count: ~typing.Annotated[float, ~annotated_types.Ge(ge=0)], states: list[~applications.ait.enums.JobState] = <factory>, entries: list[~applications.state.dto.state.StateCountDTO])
Bases:
BaseDTOOne group’s contribution to a single state in a grouped status query.
When jobs are grouped by a field (e.g. Account, UID), each state (COMPLETED, FAILED, …) contains a list of these entries — one per group value (e.g. “user1”, “user2”, “Others”).
entrieslists the per-state counts within this group, whiletotal_countis their sum.- group_name
Group identifier (e.g. user name, account, ‘Others’).
- Type:
str | int
- grouping_type
Grouping field used (e.g. ‘Account’, ‘UID’, ‘GID’).
- Type:
- total_count
Sum of all state counts in this group.
- Type:
float
- states
State names present in this group.
- Type:
- entries
Per-state counts within this group.
- Type:
- model_config: ClassVar[ConfigDict] = {'frozen': True}
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
SubmitHourDTO
- class applications.throughput.dto.submit_date.SubmitHourDTO(*, submit_hour: list = <factory>, submit_hour_count: list = <factory>)
Bases:
BaseDTOHour-of-day submission histogram.
- submit_hour
Hour values (0–23).
- Type:
list
- submit_hour_count
Job counts per hour.
- Type:
list
- model_config: ClassVar[ConfigDict] = {'frozen': True}
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
SubmitUserCountsDTO
- class applications.concusers.dto.concurrent_users.SubmitUserCountsDTO(*, resolution: ComputeLoadResolution, dates: list[str] = [], user_counts: list[int] = [], stats: UserCountStats | None = None)
Bases:
BaseDTOResult of a submit-based concurrent users query.
- resolution
Time resolution for bucketing (subset of full Resolution enum).
- dates
Formatted timestamps, one per time bucket.
- Type:
list[str]
- user_counts
Distinct user count per time bucket.
- Type:
list[int]
- stats
Descriptive statistics over the user-count series, or
None.
- model_config: ClassVar[ConfigDict] = {'frozen': True}
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
SubmitWeekdayDTO
- class applications.throughput.dto.submit_date.SubmitWeekdayDTO(*, submit_weekday: list[str] = <factory>, submit_weekday_count: list = <factory>)
Bases:
BaseDTODay-of-week submission histogram.
- submit_weekday
Weekday names (Monday–Sunday).
- Type:
list[str]
- submit_weekday_count
Job counts per weekday.
- Type:
list
- model_config: ClassVar[ConfigDict] = {'frozen': True}
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
UserCountStats
- class applications.concusers.dto.concurrent_users.UserCountStats(*, mean: float | None = None, std: float | None = None, min: float | None = None, p10: float | None = None, p20: float | None = None, p30: float | None = None, p40: float | None = None, median: float | None = None, p60: float | None = None, p70: float | None = None, p80: float | None = None, p90: float | None = None, max: float | None = None)
Bases:
BaseDTODescriptive statistics for a user-count series.
All values are rounded to one decimal place. A field is
Nonewhen the underlying value is NaN (e.g. empty input series).- mean
Arithmetic mean of user counts.
- Type:
float | None
- std
Standard deviation.
- Type:
float | None
- min
Minimum observed count.
- Type:
float | None
- p10
10th percentile.
- Type:
float | None
- p20
20th percentile.
- Type:
float | None
- p30
30th percentile.
- Type:
float | None
- p40
40th percentile.
- Type:
float | None
- median
50th percentile (median).
- Type:
float | None
- p60
60th percentile.
- Type:
float | None
- p70
70th percentile.
- Type:
float | None
- p80
80th percentile.
- Type:
float | None
- p90
90th percentile.
- Type:
float | None
- max
Maximum observed count.
- Type:
float | None
- model_config: ClassVar[ConfigDict] = {'frozen': True}
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
WaitTimeDistributionDTO
- class applications.throughput.dto.wait_time.WaitTimeDistributionDTO(*, wait_time: DataFrame | None = None, datetime_col: SubmissionDatetimeCol = SubmissionDatetimeCol.SUBMIT)
Bases:
BaseDTOWait time PDF/CDF distribution result.
- wait_time
DataFrame with columns [value, frequency, cdf], or None.
- Type:
pandas.core.frame.DataFrame | None
- datetime_col
The timestamp column used (Submit or Eligible).
- model_config: ClassVar[ConfigDict] = {'arbitrary_types_allowed': True, 'frozen': True}
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
WaitTimeStatsDTO
- class applications.throughput.dto.wait_time.WaitTimeStatsDTO(*, description: dict = <factory>, datetime_col: ~applications.throughput.dto.common.SubmissionDatetimeCol = SubmissionDatetimeCol.SUBMIT)
Bases:
BaseDTOWait time descriptive statistics result.
- description
Descriptive statistics dict with keys: data, columns, median.
- Type:
dict
- datetime_col
The timestamp column used (Submit or Eligible).
- model_config: ClassVar[ConfigDict] = {'arbitrary_types_allowed': True, 'frozen': True}
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
YmsEntryDTO
- class applications.state.dto.state.YmsEntryDTO(*, year_month: str, count: Annotated[float, Ge(ge=0)], state_counts: list[YmsStateCountDTO])
Bases:
BaseDTOA single year-month bucket with its per-state breakdown.
Represents one month’s worth of data.
countis the month total, andstate_countsbreaks it down by scheduler state.- year_month
Year-month label (YYYY-MM).
- Type:
str
- count
Total count for this month.
- Type:
float
- state_counts
Per-state breakdown within this month.
- Type:
- model_config: ClassVar[ConfigDict] = {'frozen': True}
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
YmsStateCountDTO
- class applications.state.dto.state.YmsStateCountDTO(*, state: JobState, count: Annotated[float, Ge(ge=0)])
Bases:
BaseDTOAggregated metric value for a single state within a year-month bucket.
Similar to
StateCountDTObut used in the YMS (year-month-status) context where results are further bucketed by month.- state
Job state.
- count
Aggregated value for this state in this month.
- Type:
float
- model_config: ClassVar[ConfigDict] = {'frozen': True}
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].