.. SegnoMMS documentation master file
Welcome to SegnoMMS
===================
SegnoMMS extends `Segno `_ with advanced SVG rendering capabilities, providing various shape options and interactive features for QR codes.
.. toctree::
:maxdepth: 2
:caption: Contents:
installation
quickstart
api/index
shapes
visual-gallery
examples
testing/index
decoder_compatibility
contributing
Features
--------
* **Intent-Based API**: High-level, declarative QR generation with :doc:`error handling ` and :doc:`graceful degradation `
* **Type-Safe Configuration**: Pydantic-powered configuration with automatic validation and JSON Schema generation
* **Multiple Shape Types**: 14+ different module shapes including squares, circles, stars, and more
* **Connected Shapes**: Context-aware shapes that adapt based on neighboring modules
* **Safe Mode**: Preserves QR code scannability by using simple shapes for critical patterns
* **Customizable**: Full control over colors, sizes, and shape-specific parameters
* **Interactive SVG**: CSS classes for styling and animation
* **CSS Animations**: Fade-in, staggered reveals, and pulse effects with accessibility support
* **Phase 4 Features**: Custom frame shapes, centerpiece logo areas, and gradient backgrounds
* **Production Ready**: Comprehensive :doc:`error handling ` and :doc:`testing framework `
Quick Example
-------------
Modern Intent-Based API:
.. code-block:: python
from segnomms.intents import render_with_intents
from segnomms.intents.models import PayloadConfig, IntentsConfig, StyleIntents
# Define your intentions declaratively
intents = IntentsConfig(
style=StyleIntents(
module_shape="squircle",
palette={"fg": "#1a1a2e", "bg": "#ffffff"}
)
)
# Generate with automatic error handling and degradation
payload = PayloadConfig(text="Hello, World!")
result = render_with_intents(payload, intents)
# Check for any warnings
if result.has_warnings:
for warning in result.warnings:
print(f"Notice: {warning.detail}")
with open('modern-qr.svg', 'w') as f:
f.write(result.svg_content)
Traditional Write API (for simple cases):
.. code-block:: python
import segno
from segnomms import write
# Create a QR code
qr = segno.make("Hello, World!")
# Basic connected shape
with open('basic.svg', 'w') as f:
write(qr, f, shape='connected', scale=10, border=2)
Indices and tables
==================
* :ref:`genindex`
* :ref:`modindex`
* :ref:`search`