uf.rjsf_config#

RJSF customization layer for uf.

Provides configuration classes and builders for customizing RJSF form generation beyond the defaults, including field widgets, UI options, and validation rules.

Functions

apply_field_configs(schema, ui_schema, ...)

Apply field configurations to existing schemas.

get_field_config(config_name)

Get a predefined field configuration by name.

Classes

ConditionalFieldConfig(field_name, *, condition)

Configuration for conditional field display.

RjsfConfigBuilder()

Builder for RJSF configurations with sensible defaults.

RjsfFieldConfig([widget, ui_options, ...])

Configuration for individual form fields.

class uf.rjsf_config.ConditionalFieldConfig(field_name, *, condition, then_schema=None, else_schema=None)[source]#

Bases: object

Configuration for conditional field display.

Allows fields to be shown/hidden based on the values of other fields.

Example

>>> # Show 'other_reason' field only when reason is 'other'
>>> config = ConditionalFieldConfig(
...     'other_reason',
...     condition={'reason': {'const': 'other'}}
... )
to_json_schema()[source]#

Convert to JSON Schema if/then/else structure.

Return type:

dict

Returns:

JSON Schema conditional structure

class uf.rjsf_config.RjsfConfigBuilder[source]#

Bases: object

Builder for RJSF configurations with sensible defaults.

This class helps construct RJSF specifications by providing a fluent interface for configuring fields.

Example

>>> builder = RjsfConfigBuilder()
>>> builder.field('email', RjsfFieldConfig(format='email'))
>>> builder.field('message', RjsfFieldConfig(widget='textarea'))
>>> spec = builder.build(base_schema)
build(base_schema, base_ui_schema=None)[source]#

Build the final RJSF specification.

Parameters:
  • base_schema (dict) – Base JSON Schema to augment

  • base_ui_schema (Optional[dict]) – Optional base UI Schema to augment

Return type:

dict

Returns:

Dictionary with ‘schema’ and ‘uiSchema’ keys

class_names(class_names)[source]#

Set CSS class names for the form.

Parameters:

class_names (str) – Space-separated CSS class names

Return type:

RjsfConfigBuilder

Returns:

Self for method chaining

field(param_name, config)[source]#

Configure a specific field.

Parameters:
  • param_name (str) – Name of the parameter/field

  • config (RjsfFieldConfig) – Configuration for the field

Return type:

RjsfConfigBuilder

Returns:

Self for method chaining

order(field_order)[source]#

Set the order of fields in the form.

Parameters:

field_order (list[str]) – List of field names in desired order

Return type:

RjsfConfigBuilder

Returns:

Self for method chaining

class uf.rjsf_config.RjsfFieldConfig(widget=None, ui_options=<factory>, format=None, enum=None, description=None, placeholder=None, title=None, disabled=False, readonly=False, hidden=False, default=None)[source]#

Bases: object

Configuration for individual form fields.

This class allows fine-grained control over how form fields are rendered in the RJSF interface.

widget#

Widget type (e.g., ‘textarea’, ‘select’, ‘radio’, ‘date’)

ui_options#

Additional UI options for the widget

format#

JSON Schema format (e.g., ‘email’, ‘uri’, ‘date-time’)

enum#

List of allowed values (for dropdowns)

description#

Field description/help text

placeholder#

Placeholder text for the input

title#

Custom title for the field

disabled#

Whether the field is disabled

readonly#

Whether the field is read-only

hidden#

Whether to hide the field

default#

Default value for the field

Example

>>> email_config = RjsfFieldConfig(
...     widget='email',
...     format='email',
...     placeholder='user@example.com'
... )
to_json_schema_patch()[source]#

Convert to JSON Schema properties.

Return type:

dict

Returns:

Dictionary of JSON Schema properties to merge into schema

to_ui_schema_patch()[source]#

Convert to RJSF UI Schema properties.

Return type:

dict

Returns:

Dictionary of UI Schema properties for this field

uf.rjsf_config.apply_field_configs(schema, ui_schema, field_configs)[source]#

Apply field configurations to existing schemas.

Parameters:
  • schema (dict) – JSON Schema to modify

  • ui_schema (dict) – UI Schema to modify

  • field_configs (dict[str, RjsfFieldConfig]) – Mapping of field names to configurations

Return type:

tuple[dict, dict]

Returns:

Tuple of (modified_schema, modified_ui_schema)

Example

>>> configs = {
...     'email': get_field_config('email'),
...     'bio': get_field_config('multiline_text'),
... }
>>> schema, ui_schema = apply_field_configs(schema, ui_schema, configs)
uf.rjsf_config.get_field_config(config_name)[source]#

Get a predefined field configuration by name.

Parameters:

config_name (str) – Name of the configuration (e.g., ‘email’, ‘multiline_text’)

Return type:

RjsfFieldConfig

Returns:

RjsfFieldConfig instance

Raises:

KeyError – If config_name not found

Example

>>> email_config = get_field_config('email')
>>> email_config.format
'email'