Chenzo1001 opened a new issue, #35780:
URL: https://github.com/apache/beam/issues/35780

   ### What would you like to happen?
   
   ## Background
   Currently, when using `apache_beam.yaml` to parse and validate YAML 
pipelines, transforms such as `ReadFromCsv` or other IO-related transforms may 
attempt to access real files or data sources during pipeline construction or 
parameter validation. This leads to errors like `FileNotFoundError`, even if 
the user only wants to check the syntax, structure, and transform parameter 
correctness of the YAML file, not actually run any data processing.
   
   ## Problem
   This behavior prevents users and tools from performing lightweight 
validation ("validate-only" or "dry-run") of YAML pipelines. It is especially 
problematic for CI, code review, or plugin scenarios where users want to:
   - Check for YAML syntax correctness
   - Validate required fields and config types for transforms
   - Ensure wiring of inputs/outputs is correct
   - But do **not** want to require the presence of real data files, databases, 
or external services
   
   Currently, there is no official API or option to trigger a validate-only 
mode that avoids all IO/data access.
   
   ## Proposal
   - Add an official `validate_only` or `dry_run` mode/flag to YAML pipeline 
parsing and transform construction.
   - In this mode, all IO/data transforms should **not** attempt to access or 
glob real files, open network/database connections, or perform any side effects.
   - Only the transform schema, parameters, input/output structure, and wiring 
should be checked.
   - Ideally, this should be available both via the Python API and the CLI.
   
   ## Impact
   - This would greatly improve the developer experience for YAML/Beam users.
   - It would enable safer CI/linting, better code review automation, and more 
robust plugin development.
   - It would prevent false negatives and usability issues for users who only 
want to check pipeline structure.
   
   ## Example
   ```python
   # Current (undesired):
   # Raises FileNotFoundError if /fake/path.csv doesn't exist
   options, constructor = build_pipeline_components_from_yaml(yaml_str, [], 
validate_schema='per_transform')
   
   # Desired:
   options, constructor = build_pipeline_components_from_yaml(yaml_str, [], 
validate_schema='per_transform', validate_only=True)  # No IO attempted
   ```
   
   Please consider this feature to improve YAML pipeline validation usability!
   
   ### Issue Priority
   
   Priority: 2 (default / most feature requests should be filed as P2)
   
   ### Issue Components
   
   - [ ] Component: Python SDK
   - [ ] Component: Java SDK
   - [ ] Component: Go SDK
   - [ ] Component: Typescript SDK
   - [ ] Component: IO connector
   - [x] Component: Beam YAML
   - [ ] Component: Beam examples
   - [ ] Component: Beam playground
   - [ ] Component: Beam katas
   - [ ] Component: Website
   - [ ] Component: Infrastructure
   - [ ] Component: Spark Runner
   - [ ] Component: Flink Runner
   - [ ] Component: Samza Runner
   - [ ] Component: Twister2 Runner
   - [ ] Component: Hazelcast Jet Runner
   - [ ] Component: Google Cloud Dataflow Runner


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: github-unsubscr...@beam.apache.org.apache.org

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org

Reply via email to