Accessibility
This module provides accessibility enhancements for QR code generation.
Accessibility System
Accessibility enhancement subsystem.
This package provides comprehensive accessibility features for QR code generation, ensuring compliance with accessibility standards and best practices for assistive technologies.
Key Components:
- ARIA Support:
Role definitions and management
Label and description generation
Live region support
- ID Management:
Stable, predictable ID generation
Configurable prefixes and schemes
Conflict resolution
- Screen Reader Optimization:
Semantic SVG structure
Alternative text generation
Content description
- Keyboard Navigation:
Focus management
Tab order optimization
Keyboard shortcuts
The accessibility subsystem handles:
ARIA attribute management
Screen reader compatibility
Keyboard navigation support
ID generation and management
Accessibility validation
WCAG compliance checking
Alternative content generation
Example
Basic accessibility enhancement:
from segnomms.a11y import AccessibilityEnhancer, ARIARole
enhancer = AccessibilityEnhancer(
id_prefix="qr",
default_role=ARIARole.IMG
)
# Generate stable IDs
module_id = enhancer.generate_id("module", 5, 3)
# Add ARIA attributes
aria_attrs = enhancer.get_aria_attributes(
role=ARIARole.GRAPHICS_OBJECT,
label="QR code module at position 5,3"
)
See also
segnomms.a11y.accessibility: Core accessibility features
- class segnomms.a11y.AccessibilityEnhancer(config)[source]
Bases:
objectEnhances SVG elements with comprehensive accessibility features.
- Parameters:
config (AccessibilityConfig)
- __init__(config)[source]
- Parameters:
config (AccessibilityConfig)
- create_description_element(parent_element, description, ref_id)[source]
Create a description element and return its ID.
- enhance_module_element(element, row, col, module_type='data')[source]
Enhance a QR module element with accessibility features.
- enhance_pattern_group(group_element, pattern_type, index=0)[source]
Enhance a pattern group (finder, timing, etc.) with accessibility.
- enhance_root_element(svg_element, title=None, description=None)[source]
Enhance the root SVG element with accessibility features.
- class segnomms.a11y.ARIARole(*values)[source]
-
Standard ARIA roles for QR code elements.
- IMG = 'img'
- GRAPHICS_DOCUMENT = 'graphics-document'
- GRAPHICS_OBJECT = 'graphics-object'
- APPLICATION = 'application'
- GROUP = 'group'
- PRESENTATION = 'presentation'
- class segnomms.a11y.AccessibilityConfig(**data)[source]
Bases:
BaseModelComprehensive accessibility configuration.
- Parameters:
enabled (bool)
id_prefix (str)
use_stable_ids (bool)
include_coordinates (bool)
enable_aria (bool)
root_role (ARIARole)
module_role (ARIARole | None)
root_label (str)
root_description (str | None)
include_module_labels (bool)
include_pattern_labels (bool)
optimize_for_screen_readers (bool)
group_similar_elements (bool)
add_structural_markup (bool)
enable_keyboard_navigation (bool)
target_compliance (AccessibilityLevel)
- model_config: ClassVar[ConfigDict] = {'extra': 'forbid', 'validate_default': True}
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
-
target_compliance:
AccessibilityLevel
Accessibility Enhancer
- class segnomms.a11y.AccessibilityEnhancer(config)[source]
Bases:
objectEnhances SVG elements with comprehensive accessibility features.
- Parameters:
config (AccessibilityConfig)
- __init__(config)[source]
- Parameters:
config (AccessibilityConfig)
- enhance_root_element(svg_element, title=None, description=None)[source]
Enhance the root SVG element with accessibility features.
- enhance_module_element(element, row, col, module_type='data')[source]
Enhance a QR module element with accessibility features.
- enhance_pattern_group(group_element, pattern_type, index=0)[source]
Enhance a pattern group (finder, timing, etc.) with accessibility.
- create_description_element(parent_element, description, ref_id)[source]
Create a description element and return its ID.
- generate_accessibility_report()[source]
Generate a report of accessibility features applied.
ARIA Roles
Configuration
- class segnomms.a11y.AccessibilityConfig(**data)[source]
Bases:
BaseModelComprehensive accessibility configuration.
- Parameters:
enabled (bool)
id_prefix (str)
use_stable_ids (bool)
include_coordinates (bool)
enable_aria (bool)
root_role (ARIARole)
module_role (ARIARole | None)
root_label (str)
root_description (str | None)
include_module_labels (bool)
include_pattern_labels (bool)
optimize_for_screen_readers (bool)
group_similar_elements (bool)
add_structural_markup (bool)
enable_keyboard_navigation (bool)
target_compliance (AccessibilityLevel)
- model_config: ClassVar[ConfigDict] = {'extra': 'forbid', 'validate_default': True}
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
-
enabled:
bool
-
id_prefix:
str
-
use_stable_ids:
bool
-
include_coordinates:
bool
-
enable_aria:
bool
-
root_role:
ARIARole
-
root_label:
str
-
include_module_labels:
bool
-
include_pattern_labels:
bool
-
optimize_for_screen_readers:
bool
-
group_similar_elements:
bool
-
add_structural_markup:
bool
-
enable_keyboard_navigation:
bool
-
target_compliance:
AccessibilityLevel
- classmethod validate_id_prefix(v)[source]
Validate ID prefix follows HTML standards.
Example Usage
Basic accessibility enhancement:
from segnomms.a11y import AccessibilityEnhancer, ARIARole
enhancer = AccessibilityEnhancer(
id_prefix="qr",
default_role=ARIARole.IMG
)
# Generate stable IDs
module_id = enhancer.generate_id("module", 5, 3)
# Add ARIA attributes
aria_attrs = enhancer.get_aria_attributes(
role=ARIARole.GRAPHICS_OBJECT,
label="QR code module at position 5,3"
)
Configuration setup:
from segnomms.a11y import AccessibilityConfig
config = AccessibilityConfig(
enable_aria=True,
enable_screen_reader=True,
enable_keyboard_nav=True,
default_title="Interactive QR Code",
default_description="Scannable QR code with custom styling"
)