cursus.steps.configs.config_graph_subgraph_extraction_step

Graph Subgraph Extraction Configuration with Self-Contained Derivation Logic.

Configuration for the GraphSubgraphExtraction Processing step — a point-in-time k-hop subgraph pull from a property-graph DB (NebulaGraph) for seed order IDs, run inside the custom GraphStorm image (BYO container) and VPC-bound to reach the graph cluster.

Three-tier field design: 1. Essential User Inputs (Tier 1) - Required fields users must provide. 2. System Fields (Tier 2) - Defaults that can be overridden. 3. Derived Fields (Tier 3) - Private, exposed via read-only properties.

The compute descriptor lives in the .step.yaml (compute.kind: byo_container + network_mode: config); this config supplies the image_uri, VPC subnets/security_group_ids, and the graph-traversal knobs the ported script reads.

class GraphSubgraphExtractionConfig(*, author, bucket, role, region, service_name, pipeline_version, model_class='xgboost', current_date=<factory>, framework_version='2.1.0', py_version='py310', image_uri=None, subnets=None, security_group_ids=None, enable_network_isolation=None, source_dir=None, enable_caching=False, use_secure_pypi=False, max_runtime_seconds=432000, project_root_folder, processing_instance_count=1, processing_volume_size=500, processing_instance_type_large='ml.m5.4xlarge', processing_instance_type_small='ml.m5.2xlarge', use_large_processing_instance=False, skip_volume_kms=None, processing_source_dir=None, processing_entry_point='graph_subgraph_extraction.py', processing_script_arguments=None, processing_framework_version='1.2-1', seed_s3_uri, output_s3_uri, nebula_cluster='gamma', num_parallel_jobs=1, max_workers=100, session_pool_min_size=100, session_pool_max_size=300, nebula_timeout_ms=10000, code_s3_uri=None, **extra_data)[source]

Bases: ProcessingStepConfigBase

Configuration for the GraphSubgraphExtraction step with three-tier field categorization. Inherits from ProcessingStepConfigBase.

subnets / security_group_ids are inherited from BasePipelineConfig (the VPC fields read when compute.network_mode == ‘config’); image_uri is inherited too (read when compute.kind == ‘byo_container’). This class adds the graph-traversal-specific fields.

seed_s3_uri: str
output_s3_uri: str
processing_entry_point: str
nebula_cluster: str
num_parallel_jobs: int
max_workers: int
session_pool_min_size: int
session_pool_max_size: int
nebula_timeout_ms: int
max_runtime_seconds: int
code_s3_uri: str | None
property output_bucket: str

the bucket of output_s3_uri.

Type:

The –bucket-name arg

property output_key_prefix: str

the key prefix of output_s3_uri.

Type:

The –traversal-out-dir arg

model_config: ClassVar[ConfigDict] = {'arbitrary_types_allowed': True, 'extra': 'allow', 'protected_namespaces': (), 'validate_assignment': True}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

model_post_init(context, /)

This function is meant to behave like a BaseModel method to initialize private attributes.

It takes context as an argument since that’s what pydantic-core passes when calling it.

Parameters:
  • self (BaseModel) – The BaseModel instance.

  • context (Any) – The context.