gformlib.utils
Validation utilities for gformlib.
This module provides helpers that validate user-supplied configuration
dictionaries and convert them into typed gformlib.models objects
before any API call is made.
- gformlib.utils.parse_question(data, index=0)[source]
Parse and validate a single question configuration dict.
- Parameters:
- Returns:
A validated
QuestionConfiginstance.- Raises:
InvalidConfigError – If a required key is missing, the type is unknown, or type-specific constraints are violated.
- Return type:
Example:
from gformlib.utils import parse_question q = parse_question( {"title": "Pick one", "type": "multiple_choice", "options": ["A", "B"]}, index=0, )
- gformlib.utils.parse_form_config(data)[source]
Parse and validate a complete form configuration dict.
- Parameters:
data (Dict[str, Any]) – Raw form configuration dict. Must contain at least a
"title"key. The optional"questions"key should be a list of question dicts (seeparse_question()).- Returns:
A validated
FormConfiginstance.- Raises:
InvalidConfigError – If the configuration is structurally invalid.
TypeError – If data is not a dict.
- Return type:
Example:
from gformlib.utils import parse_form_config cfg = parse_form_config( { "title": "My Survey", "questions": [ {"title": "Name?", "type": "short_answer"}, ], } )
- gformlib.utils.parse_update_config(data)[source]
Parse and validate a form update configuration dict.
All keys are optional. At least one of
title,description, oradd_questionsshould normally be present, though an empty update is accepted (it simply returns the current form state unchanged).- Parameters:
Raw update configuration dict. Recognised keys:
"title"(str) – new form title."description"(str) – new form description."add_questions"(list) – question dicts to append (same format as inparse_form_config()).
- Returns:
A validated
UpdateFormConfiginstance.- Raises:
InvalidConfigError – If
add_questionsis present but not a list, or if any individual question dict is invalid.TypeError – If data is not a dict.
- Return type:
Example:
from gformlib.utils import parse_update_config cfg = parse_update_config( { "title": "Revised Survey", "add_questions": [ {"title": "Comments", "type": "paragraph"}, ], } )