OpenViper

Getting Started

  • Installation
    • Requirements
    • Installing OpenViper
      • Optional Extras
      • Development Extras
    • Database Configuration
    • Message Broker Configuration
      • Redis
      • RabbitMQ
      • Amazon SQS
      • Stub (Testing)
      • Cache
    • Verifying the Installation
    • Development Server

Tutorial

  • Tutorial: Building a Blog
    • Step 1 - Create the Project
    • Step 2 - Create the Users App
      • Create Schemas and Migrate the Database
      • Add User model to admin
      • Create a Superuser
      • Login to the admin panel
    • Step 3 - Create the Blog App
    • Define the Post Model
    • Create the Serializer (Optional)
    • Step 4 - Write the Views
    • Step 5 - Register Routes
    • Step 6 - Register with the Admin Panel
      • Start the server and navigate to admin, see the left sidebar. create Post records.
    • Step 7 - Events
    • Step 8 - Optional: AI Content Generator
    • Explore the Tools
    • Testing with Swagger UI (OpenAPI)
    • Well Done!

Framework Reference

  • The OpenViper Application
    • OpenViper Class
      • openviper.app.OpenViper
        • openviper.app.OpenViper.get()
        • openviper.app.OpenViper.post()
        • openviper.app.OpenViper.put()
        • openviper.app.OpenViper.patch()
        • openviper.app.OpenViper.delete()
        • openviper.app.OpenViper.options()
        • openviper.app.OpenViper.route()
        • openviper.app.OpenViper.include_router()
        • openviper.app.OpenViper.on_startup()
        • openviper.app.OpenViper.on_shutdown()
        • openviper.app.OpenViper.exception_handler()
        • openviper.app.OpenViper.get_openapi_schema()
        • openviper.app.OpenViper.invalidate_openapi_schema()
        • openviper.app.OpenViper.invalidate_middleware_cache()
        • openviper.app.OpenViper.coerce_response()
        • openviper.app.OpenViper.call_handler()
        • openviper.app.OpenViper.resolve_middleware()
        • openviper.app.OpenViper.cors_kwargs()
        • openviper.app.OpenViper.run()
        • openviper.app.OpenViper.test_client()
    • Module-Level Helpers
      • openviper.app.get_handler_signature()
      • openviper.app.resolve_middleware_entry()
    • Lifecycle & App Discovery
      • Route Auto-Discovery
      • Installed App Hooks
    • Middleware Stack
    • Response Coercion
    • Exception Handling
    • Append-Slash Redirects
    • API Reference
      • HAS_PYDANTIC
  • HTTP - Requests, Responses & Views
    • Overview
    • Type Aliases & Protocols
      • openviper.http.types
        • ASGIMessage
        • ASGIScope
        • ASGIReceive
        • ASGISend
        • TemplateContext
        • AuthenticatorProtocol
        • PermissionProtocol
        • ThrottleProtocol
        • UserProtocol
        • SessionProtocol
        • MultipartField
        • MultipartFile
      • openviper.http.request
        • Request
        • UploadFile
        • sanitize_filename()
      • openviper.http.response
        • Response
        • JSONResponse
        • HTMLResponse
        • PlainTextResponse
        • RedirectResponse
        • StreamingResponse
        • FileResponse
        • GZipResponse
      • Common HTTP Status Codes
      • openviper.http.views
        • View
        • action()
      • openviper.http.permissions
        • BasePermission
        • AllowAny
        • IsAuthenticated
        • IsAdmin
        • IsAuthenticatedOrReadOnly
        • HasRole
        • HasPermission
    • Example Usage
      • Function-Based Views
      • Reading Query Parameters
      • Class-Based Views
      • Extra View Actions
      • File Upload
      • Cookie Handling
      • Streaming Response
      • File Download
      • Redirect
      • Template Rendering
      • GZip Compression
  • Routing
    • Overview
    • Key Classes
      • openviper.routing.router.Router
        • openviper.routing.router.Router.route()
        • openviper.routing.router.Router.get()
        • openviper.routing.router.Router.post()
        • openviper.routing.router.Router.put()
        • openviper.routing.router.Router.patch()
        • openviper.routing.router.Router.delete()
        • openviper.routing.router.Router.options()
        • openviper.routing.router.Router.any()
        • openviper.routing.router.Router.add()
        • openviper.routing.router.Router.include_router()
        • openviper.routing.router.Router.resolve()
        • openviper.routing.router.Router.url_for()
      • openviper.routing.router.Route
        • openviper.routing.router.Route.path
        • openviper.routing.router.Route.methods
        • openviper.routing.router.Route.handler
        • openviper.routing.router.Route.name
        • openviper.routing.router.Route.middlewares
        • openviper.routing.router.Route.tags
        • openviper.routing.router.Route.match()
      • openviper.routing.router.PathSecurityError
      • openviper.routing.router.include()
    • Path Security
      • openviper.routing.sanitize_request_path()
      • openviper.routing.router.normalize_path()
    • Path Compilation
      • openviper.routing.router.compile_path()
      • openviper.routing.router.route_first_segment()
      • openviper.routing.router.route_specificity()
    • View Inference Helpers
      • openviper.routing.router.infer_view_method_path()
      • openviper.routing.router.inferred_route_name()
    • Security Constants
      • openviper.routing.router.NULL_BYTE_RE
      • openviper.routing.router.TRAVERSAL_RE
      • openviper.routing.router.ENCODED_SLASH_RE
      • openviper.routing.router.MULTI_SLASH_RE
      • openviper.routing.router.PARAM_PLACEHOLDER_RE
      • openviper.routing.router.ANY_PARAM_RE
      • openviper.routing.router.VALID_PARAM_RE
      • openviper.routing.router.ANNOTATION_CONVERTERS
      • openviper.routing.router.CONVERTERS
      • openviper.routing.router.DYNAMIC
    • Type Aliases
      • openviper.routing.router.Handler
      • openviper.routing.router.Middleware
    • Example Usage
      • Basic Route Registration
      • Named Routes and URL Reversal
      • Non-Decorator Registration
      • Sub-Router / Blueprint Pattern
      • Router-level Middleware
      • Per-Route Middleware
      • Class-Based Views
      • Mounting in the Application
  • Middleware
    • Overview
    • Key Classes
      • openviper.middleware.cors
        • CORSMiddleware
      • openviper.middleware.csrf
        • CSRFMiddleware
      • openviper.middleware.ratelimit
        • RateLimitMiddleware
        • openviper.middleware.ratelimit.rate_limit()
      • openviper.middleware.security
        • SecurityMiddleware
      • openviper.middleware.db
        • DatabaseMiddleware
      • openviper.middleware.error
        • ServerErrorMiddleware
      • openviper.middleware.auth
      • openviper.middleware.base
        • BaseMiddleware
        • openviper.middleware.base.build_middleware_stack()
    • Example Usage
      • Registering via Settings
      • Programmatic Composition
      • Using build_middleware_stack
      • CSRF Token in Forms
      • Rate Limiting a Single View
      • Custom Middleware
  • Plugin Development
    • The ready() Hook
      • Where to define ready()
      • Sync ready() is also supported
      • Registering the plugin
      • Error handling
    • Middleware-based plugins
      • Combining ready() with middleware
    • INSTALLED_APPS auto-discovery
    • Full plugin example
  • Serializers
    • Overview
    • Key Classes & Functions
      • openviper.serializers.Serializer
        • openviper.serializers.Serializer.readonly_fields
        • openviper.serializers.Serializer.writeonly_fields
        • openviper.serializers.Serializer.PAGE_SIZE
        • openviper.serializers.Serializer.MAX_PAGE_SIZE
        • openviper.serializers.Serializer.permission_classes
        • openviper.serializers.Serializer.validated_data
        • openviper.serializers.Serializer.check_permissions()
        • openviper.serializers.Serializer.permission_denied()
        • openviper.serializers.Serializer.validate_data()
        • openviper.serializers.Serializer.validate
        • openviper.serializers.Serializer.validate_json_string()
        • openviper.serializers.Serializer.from_orm()
        • openviper.serializers.Serializer.from_orm_many()
        • openviper.serializers.Serializer.get_excluded_fields()
        • openviper.serializers.Serializer.serialize_value()
        • openviper.serializers.Serializer.obj_to_dict()
        • openviper.serializers.Serializer.build_partial_class()
        • openviper.serializers.Serializer.compute_excluded()
        • openviper.serializers.Serializer.serialize()
        • openviper.serializers.Serializer.serialize_json()
        • openviper.serializers.Serializer.serialize_many()
        • openviper.serializers.Serializer.serialize_many_json()
        • openviper.serializers.Serializer.paginate()
      • openviper.serializers.PaginatedSerializer
      • openviper.serializers.ModelSerializer
        • openviper.serializers.ModelSerializer.create()
        • openviper.serializers.ModelSerializer.update()
        • openviper.serializers.ModelSerializer.save()
        • openviper.serializers.ModelSerializer.get_file_fields()
        • openviper.serializers.ModelSerializer.validate_file_sizes()
        • openviper.serializers.ModelSerializer.persist_files()
        • openviper.serializers.ModelSerializer.validate_create_data()
        • openviper.serializers.ModelSerializer.integrity_error_to_validation_error()
        • openviper.serializers.ModelSerializer.openviper.serializers.base.ModelSerializerMeta
      • openviper.serializers.field_validator()
      • openviper.serializers.model_validator()
      • openviper.serializers.computed_field()
      • openviper.serializers.map_pydantic_errors()
      • openviper.serializers.python_type_for_field_by_name()
      • Contrib Field Serializer Registry
        • openviper.serializers.register_contrib_serializer()
        • openviper.serializers.serialize_contrib_value()
        • openviper.serializers.field_is_optional()
    • Security Constants
      • openviper.serializers.base.MAX_JSON_STRING_BYTES
      • openviper.serializers.base.UNSAFE_FILENAME_CHAR_RE
      • openviper.serializers.base.ALLOWED_URL_SCHEMES
    • Structural Protocols
      • openviper.serializers.base.OrmModelProtocol
      • openviper.serializers.base.OrmManagerProtocol
      • openviper.serializers.base.QuerySetProtocol
      • openviper.serializers.base.OrmFieldProtocol
      • openviper.serializers.base.RequestProtocol
      • openviper.serializers.base.PermissionProtocol
      • openviper.serializers.base.UploadValueProtocol
    • Field Type Mapping
    • Example Usage
      • Manual Serializer
      • Model Serializer
        • Exclude Fields
        • write_only and read_only Fields
      • Cross-Field Validation
      • Computed Fields
      • Partial Validation (PATCH)
      • serialize_many - Bulk Serialization
      • Pagination
      • Performance Optimizations
      • ModelSerializer CRUD Helpers
      • Nested Serializers
      • Error Handling
      • Using in a View
  • Database & ORM
    • Overview
    • Key Classes & Functions
      • openviper.db.models
        • Model
        • AbstractModel
        • Manager
        • QuerySet
        • F
        • Q
        • Page
      • openviper.db.fields
      • openviper.db.models.Index
        • Index
      • openviper.db.models.Constraint
        • Constraint
        • CheckConstraint
        • UniqueConstraint
      • openviper.db.models.TextChoice
        • TextChoice
      • openviper.db.connection
        • init_db()
        • close_db()
        • get_connection()
        • request_connection()
        • configure_db()
        • transaction()
        • atomic()
        • reset_engine()
        • cleanup_stale_locks()
    • Lifecycle Hooks
    • Model Events (Signals)
    • Example Usage
      • Defining Models
      • Querying
      • F() Expressions
      • Q() Objects - Complex Filters
      • Aggregate Functions
      • annotate
      • select_related vs prefetch_related
      • bulk_create and bulk_update
      • Large Dataset Iteration
      • Transactions
      • Bypassing Permissions
    • Migrations
    • Data Patches
      • openviper.db.executor
        • bypass_permissions()
        • validate_regex_pattern()
        • assert_safe_table_name()
        • escape_like()
      • openviper.db.utils
        • BoundedDict
        • validate_on_delete()
        • validate_sql_expression()
        • validate_identifier()
        • quote_identifier()
        • sql_literal()
        • cast_to_pk_type()
      • openviper.db.exceptions
      • openviper.db.events
        • model_event
        • SUPPORTED_EVENTS
      • ManyToManyField API
        • ManyToManyField
      • LazyFK - Lazy FK Loading
        • LazyFK
    • Virtual Models
      • VirtualBackendCapabilities
        • VirtualBackendCapabilities
      • VirtualBackend
        • VirtualBackend
  • Array Field
    • Overview
    • Installation
    • Basic Usage
    • Parameters
    • Database Column Types
      • PostgreSQL
      • Other Databases
    • Reading and Writing
    • Validation
    • Backend Selection
    • API Reference
      • ArrayField
        • ArrayField.db_column_type
        • ArrayField.to_python()
        • ArrayField.to_db()
        • ArrayField.validate()
        • ArrayField.get_sa_type()
      • PostgresArrayBackend
      • FallbackJsonBackend
      • get_array_backend()
      • reset_array_backend()
  • Database Backends
    • Overview
    • How OpenViper Database Backends Work
    • DATABASES Configuration
    • BACKEND is Optional
    • DatabaseBackend
      • DatabaseBackend
        • DatabaseBackend.vendor
        • DatabaseBackend.display_name
        • DatabaseBackend.features
        • DatabaseBackend.operations
        • DatabaseBackend.execution
        • DatabaseBackend.introspection
        • DatabaseBackend.creation
        • DatabaseBackend.client
        • DatabaseBackend.create_engine()
        • DatabaseBackend.connect()
        • DatabaseBackend.disconnect()
        • DatabaseBackend.execute()
        • DatabaseBackend.transaction()
        • DatabaseBackend.url
        • DatabaseBackend.is_read_only
        • DatabaseBackend.role
        • DatabaseBackend.get_option()
    • DatabaseFeatures
      • DatabaseFeatures
        • DatabaseFeatures.supports_transactions
        • DatabaseFeatures.supports_savepoints
        • DatabaseFeatures.supports_json
        • DatabaseFeatures.supports_uuid
        • DatabaseFeatures.supports_returning
        • DatabaseFeatures.supports_bulk_insert
        • DatabaseFeatures.supports_foreign_keys
        • DatabaseFeatures.supports_indexes
        • DatabaseFeatures.supports_partial_indexes
        • DatabaseFeatures.supports_check_constraints
        • DatabaseFeatures.supports_schema_comments
        • DatabaseFeatures.supports_read_only_connections
      • Feature flags by vendor
    • DatabaseOperations
      • DatabaseOperations
        • DatabaseOperations.normalize_url()
        • DatabaseOperations.extract_vendor()
        • DatabaseOperations.quote_identifier()
        • DatabaseOperations.adapt_value()
    • DatabaseExecution
      • DatabaseExecution
        • DatabaseExecution.pre_execute()
        • DatabaseExecution.post_execute()
        • DatabaseExecution.on_error()
        • DatabaseExecution.execute()
    • DatabaseIntrospection
      • DatabaseIntrospection
        • DatabaseIntrospection.get_table_names()
        • DatabaseIntrospection.get_columns()
        • DatabaseIntrospection.get_indexes()
        • DatabaseIntrospection.get_constraints()
        • DatabaseIntrospection.get_foreign_keys()
    • DatabaseCreation
      • DatabaseCreation
        • DatabaseCreation.create_test_database()
        • DatabaseCreation.destroy_test_database()
    • Default SQLAlchemy Backend
    • Creating a Custom Backend
      • Config access in backends
    • Instrumentation Example
    • Testing a Backend
    • Security Notes
    • Limitations
  • Database Routing and Read/Write Replicas
    • Overview
    • DATABASES ROUTERS Setting
    • Primary and Replica Databases
    • PrimaryReplicaRouter
    • Read-Your-Writes
    • QuerySet.using
    • Transactions
    • Migrations
    • Admin Behaviour
    • Testing Multi-Database Routing
    • Best Practices
    • Limitations
  • Single Models
    • Overview
    • Defining a Single Model
    • When To Use Single Models
    • Storage Behavior
    • get_single And get_or_create_single
    • Updating Single Models
    • Delete Is Forbidden
    • Admin Behavior
    • Permissions
    • Single Models With Virtual Models
    • Limitations
  • Authentication & Authorization
    • Overview
    • Key Classes & Functions
      • openviper.auth.jwt
        • create_access_token()
        • create_refresh_token()
        • decode_access_token()
        • decode_refresh_token()
        • decode_token_unverified()
      • openviper.auth.hashers
        • make_password()
        • check_password()
        • is_password_usable()
        • make_unusable_password()
      • openviper.auth.sessions
        • openviper.auth.session.manager.SessionManager
      • openviper.auth.decorators
        • login_required()
        • permission_required()
        • role_required()
        • superuser_required()
        • staff_required()
      • openviper.auth.models
        • AbstractUser
        • User
        • AnonymousUser
        • Permission
        • Role
        • RoleProfile
      • openviper.auth.authentications (token storage)
        • TokenAuthentication
        • create_token()
        • revoke_token()
        • clear_token_auth_cache()
      • openviper.auth.middleware
        • AuthenticationMiddleware
      • Auth Backends
      • Token Blocklist
      • Opaque Token Auth
      • API Key Management
        • create_api_key_credential()
        • create_api_key_pair()
        • reverse_api_key_credential()
        • revoke_api_key_pair()
        • clear_api_key_cache()
      • Auth Manager
        • AuthManager
        • load_backend()
      • ORM Permission System
        • openviper.auth.permission_core
        • openviper.auth.permission_checker
        • openviper.auth.types
      • Auth Lifecycle Hooks
        • AuthHookContext
        • AuthHookRegistry
        • register_auth_hook()
        • safe_credentials()
        • build_auth_hook_context()
      • Auth Exceptions
        • AuthHookError
        • AuthHookReject
        • AuthHookConfigError
        • AuthHookExecutionError
      • Request State
        • auth_state()
        • get_auth_state()
        • set_auth_state()
      • User Cache
        • USER_CACHE
        • get_user_cache_lock()
        • invalidate_user_cache()
      • Cache Utilities
        • lazy_async_lock()
        • evict_cache_if_full()
        • ensure_table()
      • Cookie Utilities
        • is_safe_cookie_value()
        • parse_session_key()
        • get_cookie_settings()
        • build_set_cookie_header()
      • Utility Functions
        • get_user_model()
        • openviper.auth.models.get_user_model_lazy()
        • discover_models()
        • sync_content_types()
        • get_user_by_id()
      • Admin Integration
    • Example Usage
      • Token Authentication (opaque tokens)
      • JWT Login & Protected Endpoint
      • Token Refresh
      • Session Login & Logout
      • Middleware Setup
      • Password Hashing
      • Role & Permission Management
      • Decorator Usage
    • Configuration
    • Built-in Authentication Views and Routes
      • Quick start
      • Adding auth routes to the project
      • Granular view imports
      • Extending the built-in views
      • openviper.auth.views.base_login
        • BaseLoginView
      • openviper.auth.views.jwt_login
        • JWTLoginView
      • openviper.auth.views.token_login
        • TokenLoginView
      • openviper.auth.views.session_login
        • SessionLoginView
      • openviper.auth.views.logout
      • openviper.auth.views.me
        • MeView
      • openviper.views.routes
        • jwt_routes
        • token_routes
        • session_routes
        • all_auth_routes
  • OAuth2 / Social Login
    • Google OAuth2 - Quick Start
      • Required Settings
      • Registering the Routes
      • Customising Redirects
    • Google OAuth2 - Authentication Flow
    • Choosing an Authentication Method
      • Session (default - browser web apps)
      • JWT (SPA / mobile - tokens in cookies)
      • JWT (SPA - tokens in URL fragment)
      • Opaque Token (API clients / CLI tools)
    • Adding a Custom Provider
      • Customising User Creation
    • OAuth2 Events
      • Event Handler Signature
      • Safety Guarantees
    • openviper.auth.views.oauth2 Reference
      • BaseOAuth2InitView
      • BaseOAuth2CallbackView
        • BaseOAuth2CallbackView.extract_user_info()
        • BaseOAuth2CallbackView.get_or_create_user()
        • BaseOAuth2CallbackView.get_token_request_data()
        • BaseOAuth2CallbackView.get_userinfo_headers()
        • BaseOAuth2CallbackView.complete_login()
      • GoogleOAuthInitView
      • GoogleOAuthCallbackView
      • google_oauth_routes
  • Auth Lifecycle Hooks
    • Overview
    • Hook Lifecycle
    • before_login
    • on_login
    • on_logout
    • AuthHookContext
    • Registering Hooks
    • Using Hooks from Apps
    • Error Handling
    • Security Notes
    • Testing Auth Hooks
    • Limitations
  • Admin Panel
    • Overview
    • Key Classes & Functions
      • openviper.admin.options.ModelAdmin
        • openviper.admin.options.ModelAdmin.list_display
        • openviper.admin.options.ModelAdmin.list_display_links
        • openviper.admin.options.ModelAdmin.list_filter
        • openviper.admin.options.ModelAdmin.list_editable
        • openviper.admin.options.ModelAdmin.search_fields
        • openviper.admin.options.ModelAdmin.ordering
        • openviper.admin.options.ModelAdmin.list_per_page
        • openviper.admin.options.ModelAdmin.list_max_show_all
        • openviper.admin.options.ModelAdmin.date_hierarchy
        • openviper.admin.options.ModelAdmin.list_select_related
        • openviper.admin.options.ModelAdmin.list_display_styles
        • openviper.admin.options.ModelAdmin.show_full_result_count
        • openviper.admin.options.ModelAdmin.fields
        • openviper.admin.options.ModelAdmin.exclude
        • openviper.admin.options.ModelAdmin.readonly_fields
        • openviper.admin.options.ModelAdmin.fieldsets
        • openviper.admin.options.ModelAdmin.form_fields
        • openviper.admin.options.ModelAdmin.sensitive_fields
        • openviper.admin.options.ModelAdmin.actions
        • openviper.admin.options.ModelAdmin.actions_on_top
        • openviper.admin.options.ModelAdmin.actions_on_bottom
        • openviper.admin.options.ModelAdmin.inlines
        • openviper.admin.options.ModelAdmin.child_tables
        • openviper.admin.options.ModelAdmin.save_on_top
        • openviper.admin.options.ModelAdmin.preserve_filters
        • openviper.admin.options.ModelAdmin.has_view_permission()
        • openviper.admin.options.ModelAdmin.has_add_permission()
        • openviper.admin.options.ModelAdmin.has_change_permission()
        • openviper.admin.options.ModelAdmin.has_delete_permission()
        • openviper.admin.options.ModelAdmin.save_model()
        • openviper.admin.options.ModelAdmin.delete_model()
        • openviper.admin.options.ModelAdmin.is_intrinsically_readonly()
        • openviper.admin.options.ModelAdmin.action_delete_selected()
      • openviper.admin.options.InlineModelAdmin
        • openviper.admin.options.InlineModelAdmin.model
        • openviper.admin.options.InlineModelAdmin.fk_name
        • openviper.admin.options.InlineModelAdmin.extra_filters
        • openviper.admin.options.InlineModelAdmin.fields
        • openviper.admin.options.InlineModelAdmin.exclude
        • openviper.admin.options.InlineModelAdmin.readonly_fields
        • openviper.admin.options.InlineModelAdmin.extra
        • openviper.admin.options.InlineModelAdmin.max_num
        • openviper.admin.options.InlineModelAdmin.min_num
        • openviper.admin.options.InlineModelAdmin.can_delete
        • openviper.admin.options.InlineModelAdmin.show_change_link
      • openviper.admin.options.TabularInline
      • openviper.admin.options.StackedInline
      • openviper.admin.options.ChildTable
      • openviper.admin.registry.AdminRegistry
        • openviper.admin.registry.AdminRegistry.register()
        • openviper.admin.registry.AdminRegistry.unregister()
        • openviper.admin.registry.AdminRegistry.is_registered()
        • openviper.admin.registry.AdminRegistry.get_model_admin()
        • openviper.admin.registry.AdminRegistry.get_model_admin_by_name()
        • openviper.admin.registry.AdminRegistry.get_model_admin_by_app_and_name()
        • openviper.admin.registry.AdminRegistry.get_model_by_name()
        • openviper.admin.registry.AdminRegistry.get_model_by_app_and_name()
        • openviper.admin.registry.AdminRegistry.get_all_models()
        • openviper.admin.registry.AdminRegistry.get_models_grouped_by_app()
        • openviper.admin.registry.AdminRegistry.auto_discover_from_installed_apps()
        • openviper.admin.registry.AdminRegistry.discover_from_app()
      • openviper.admin.registry.AlreadyRegistered
      • openviper.admin.registry.NotRegistered
      • openviper.admin.site.get_admin_site()
    • Actions System
      • openviper.admin.actions.AdminAction
        • openviper.admin.actions.AdminAction.name
        • openviper.admin.actions.AdminAction.description
        • openviper.admin.actions.AdminAction.confirm_message
        • openviper.admin.actions.AdminAction.permissions
        • openviper.admin.actions.AdminAction.execute()
        • openviper.admin.actions.AdminAction.has_permission()
        • openviper.admin.actions.AdminAction.get_info()
      • openviper.admin.actions.DeleteSelectedAction
      • openviper.admin.actions.action_registry
      • openviper.admin.actions.register_action()
      • openviper.admin.actions.get_action()
      • openviper.admin.actions.get_available_actions()
      • openviper.admin.actions.action()
      • openviper.admin.actions.ActionResult
        • openviper.admin.actions.ActionResult.success
        • openviper.admin.actions.ActionResult.count
        • openviper.admin.actions.ActionResult.message
        • openviper.admin.actions.ActionResult.errors
    • Change History
      • openviper.admin.history.ChangeHistory
        • openviper.admin.history.ChangeHistory.model_name
        • openviper.admin.history.ChangeHistory.object_id
        • openviper.admin.history.ChangeHistory.object_repr
        • openviper.admin.history.ChangeHistory.action
        • openviper.admin.history.ChangeHistory.changed_fields
        • openviper.admin.history.ChangeHistory.changed_by_id
        • openviper.admin.history.ChangeHistory.changed_by_username
        • openviper.admin.history.ChangeHistory.change_time
        • openviper.admin.history.ChangeHistory.change_message
        • openviper.admin.history.ChangeHistory.get_changed_fields_dict()
        • openviper.admin.history.ChangeHistory.get_for_object()
      • openviper.admin.history.ChangeAction
      • openviper.admin.history.log_change()
      • openviper.admin.history.get_change_history()
      • openviper.admin.history.get_recent_activity()
      • openviper.admin.history.compute_changes()
      • openviper.admin.history.normalize_for_compare()
    • Field Mapping
      • openviper.admin.fields.FIELD_COMPONENT_MAP
      • openviper.admin.fields.get_field_component_type()
      • openviper.admin.fields.get_filter_choices()
      • openviper.admin.fields.get_field_widget_config()
      • openviper.admin.fields.get_field_schema()
      • openviper.admin.fields.get_field_schema_cached()
      • openviper.admin.fields.coerce_field_value()
      • openviper.admin.fields.serialize_default()
    • Middleware
      • openviper.admin.middleware.AdminMiddleware
        • openviper.admin.middleware.AdminMiddleware.ADMIN_PATH_PREFIX
        • openviper.admin.middleware.AdminMiddleware.EXEMPT_PATHS
    • Permissions
      • openviper.admin.api.permissions.check_admin_access()
      • openviper.admin.api.permissions.check_model_permission()
      • openviper.admin.api.permissions.check_object_permission()
      • openviper.admin.api.permissions.PermissionChecker
    • Serialization
      • openviper.admin.api.serializers.serialize_instance()
      • openviper.admin.api.serializers.serialize_value()
      • openviper.admin.api.serializers.serialize_for_list()
      • openviper.admin.api.serializers.serialize_for_detail()
      • openviper.admin.api.views
        • openviper.admin.api.views.sanitize_csv_cell()
      • openviper.admin.types
        • JsonScalar
        • JsonValue
        • JsonObject
    • Auto-Discovery
      • openviper.admin.discovery.autodiscover()
      • openviper.admin.discovery.discover_admin_modules()
      • openviper.admin.discovery.import_admin_module()
      • openviper.admin.discovery.discover_extensions()
    • REST API Reference
    • Decorators
      • openviper.admin.decorators.register()
      • openviper.admin.unregister()
    • Auth Model Auto-Registration
    • Example Usage
      • Registering a Model
      • Mounting the Admin Site
      • Custom Actions
      • Inline Editing
      • Overriding Permissions
      • Overriding save_model
      • Sensitive Fields
      • Unregistering a Model
      • Global Search
      • Admin Extensions
      • Authentication Decorator
        • openviper.admin.api.permissions.require_admin()
  • Email
    • Settings
    • Sending Email
      • send_email()
      • Plain text
      • HTML
      • Multiple recipients, CC, and BCC
      • Custom sender
      • Error handling
    • Templates
      • Plain text template (.txt)
      • HTML template (.html)
      • Markdown template (.md)
      • Template + explicit body
    • Attachments
      • File path (string or Path)
      • Tuple - (filename, content) or (filename, content, mimetype)
      • Raw bytes
      • Dict - path, url, content, or content_b64
      • AttachmentData objects
      • Attachment limits
    • Background Delivery
      • Auto-detection
      • Explicit control
      • Safety fallback
      • Queue configuration
    • Backends
      • SMTPBackend
      • ConsoleBackend
    • API Reference
      • openviper.core.email.message
        • EmailMessageData
        • build_message()
      • openviper.core.email.attachments
        • AttachmentData
        • resolve_attachments()
      • openviper.core.email.backends
        • EmailSettings
        • get_backend()
      • openviper.core.email.queue
        • enqueue_email_job()
        • worker_available()
      • openviper.core.email.templates
        • render_template_content()
        • render_markdown()
  • OpenAPI & Swagger UI
    • Overview
    • Key Functions
      • openviper.openapi.schema
        • generate_openapi_schema()
        • reset_openapi_cache()
        • filter_openapi_routes()
        • request_schema()
        • tag_from_path()
        • python_type_to_schema()
        • extract_path_params()
        • openapi_path()
        • resolve_request_schema()
        • format_operation_description()
        • build_operation()
        • build_request_body()
        • build_per_route_security()
        • build_responses()
        • OPENAPI_REQUEST_SCHEMA_ATTR
      • openviper.openapi.router
        • read_openapi_settings()
        • should_register_openapi()
      • openviper.openapi.utils
      • openviper.openapi.ui
        • get_swagger_html()
        • get_redoc_html()
        • escape_html_attr()
      • openviper.openapi.schema - Types
        • RouteHandler
    • Example Usage
      • Automatic Schema (Zero Configuration)
      • Richer Schema via Pydantic Serializers
      • Method Documentation
      • Return Type Annotation for Response Schema
      • Accessing the Raw Schema
    • OpenAPI Exclusion
      • Disable OpenAPI
      • Exclude Routes by Prefix
      • Admin Routes
      • Prefix Matching Rules
      • Security Benefits
      • API Reference - Exclusion Helpers
        • openviper.openapi.schema
        • openviper.openapi.router
    • Configuration Reference
      • OPENAPI
      • Configuration Examples
      • Security Considerations
  • Templates
    • Overview
    • Key Classes & Functions
      • openviper.template.render_to_string()
      • openviper.template.environment.get_jinja2_env()
      • openviper.template.environment.get_template_directories()
      • openviper.template.environment.validate_path_within_root()
      • openviper.template.environment.resolve_project_root()
      • openviper.template.plugin_loader
        • openviper.template.plugin_loader.load()
        • openviper.template.plugin_loader.scan_directory()
        • openviper.template.plugin_loader.import_plugin_module()
        • openviper.template.plugin_loader.UNSAFE_CALLABLE_NAMES
        • openviper.template.plugin_loader.State
        • openviper.template.plugin_loader.discover_plugins()
        • openviper.template.plugin_loader.reset()
    • Example Usage
      • HTMLResponse with a Template
      • Template Structure
      • Custom Filter Plugin
    • Configuration
  • File Storage
    • Overview
    • Key Classes
    • Utilities
    • Module Constants
    • Type Aliases
    • Default Storage Proxy
    • Example Usage
      • Using default_storage Directly
      • FileField on a Model
      • Custom Storage Backend
    • Configuration
    • API Reference
      • FileSystemStorage
        • FileSystemStorage.CHUNK_SIZE
        • FileSystemStorage.location
        • FileSystemStorage.base_url
        • FileSystemStorage.validate_name()
        • FileSystemStorage.full_path()
        • FileSystemStorage.mkdir_async()
        • FileSystemStorage.resolved_path()
        • FileSystemStorage.save()
        • FileSystemStorage.delete()
        • FileSystemStorage.exists()
        • FileSystemStorage.url()
        • FileSystemStorage.size()
        • FileSystemStorage.read()
        • FileSystemStorage.listdir()
      • Storage
        • Storage.CHUNK_SIZE
        • Storage.save()
        • Storage.delete()
        • Storage.exists()
        • Storage.url()
        • Storage.size()
        • Storage.read()
        • Storage.listdir()
      • generate_unique_name()
      • StorageContent
      • Storage
        • Storage.CHUNK_SIZE
        • Storage.save()
        • Storage.delete()
        • Storage.exists()
        • Storage.url()
        • Storage.size()
        • Storage.read()
        • Storage.listdir()
      • generate_unique_name()
      • FileSystemStorage
        • FileSystemStorage.CHUNK_SIZE
        • FileSystemStorage.location
        • FileSystemStorage.base_url
        • FileSystemStorage.validate_name()
        • FileSystemStorage.full_path()
        • FileSystemStorage.mkdir_async()
        • FileSystemStorage.resolved_path()
        • FileSystemStorage.save()
        • FileSystemStorage.delete()
        • FileSystemStorage.exists()
        • FileSystemStorage.url()
        • FileSystemStorage.size()
        • FileSystemStorage.read()
        • FileSystemStorage.listdir()
      • DefaultStorage
        • DefaultStorage.get_storage()
        • DefaultStorage.configure()
        • DefaultStorage.save()
        • DefaultStorage.delete()
        • DefaultStorage.exists()
        • DefaultStorage.url()
        • DefaultStorage.size()
        • DefaultStorage.read()
        • DefaultStorage.listdir()
  • Static Files
    • Overview
    • Key Classes & Functions
      • openviper.staticfiles.StaticFilesMiddleware
      • openviper.staticfiles.static()
      • openviper.staticfiles.media()
      • openviper.staticfiles.is_static_enabled()
      • openviper.staticfiles.is_media_enabled()
      • openviper.staticfiles.collect_static()
      • openviper.staticfiles.handlers.discover_app_static_dirs()
      • openviper.staticfiles.handlers.sanitize_relative_path()
      • openviper.staticfiles.handlers.parse_range()
      • openviper.staticfiles.handlers.NotModifiedResponse
      • openviper.staticfiles.handlers.FileEntry
      • openviper.staticfiles.handlers.copy_tree()
    • Security
    • Example Usage
      • Development Static Serving
      • Direct Middleware Usage
      • Collecting Static Files for Production
    • Configuration
  • Exception Reference
    • Overview
    • Exception Hierarchy
    • Type Aliases
      • DetailValue
    • Key Exceptions
      • OpenViperException
      • ImproperlyConfigured
      • SettingsValidationError
      • HTTPException
      • NotFound
      • MethodNotAllowed
      • PermissionDenied
      • Unauthorized
      • ValidationError
      • Conflict
      • TooManyRequests
      • ServiceUnavailable
      • AuthenticationFailed
      • TokenExpired
      • ORMException
      • DoesNotExist
      • MultipleObjectsReturned
      • IntegrityError
      • TableNotFound
      • QueryError
      • FieldError
      • MigrationError
      • MiddlewareException
      • AIException
      • ModelNotFoundError
      • ModelCollisionError
    • Example Usage
      • Raising HTTP Exceptions in Views
      • Handling ORM Exceptions
      • Custom HTTP Exception
  • Debug Page
    • Overview
    • Credential Redaction
      • Exception messages
      • Source code frames
      • Request headers
      • Query parameters
    • API Reference
      • openviper.debug.traceback_page.SENSITIVE_HEADERS
      • openviper.debug.traceback_page.SENSITIVE_QUERY_PARAMS
      • openviper.debug.traceback_page.CREDENTIAL_PATTERNS
      • openviper.debug.traceback_page.redact_credentials()
      • openviper.debug.traceback_page.sanitize_header_value()
      • openviper.debug.traceback_page.sanitize_query_param()
      • openviper.debug.traceback_page.render_debug_page()
  • Cache Framework
    • Getting Started
    • Configuration
    • Built-in Backends
      • InMemoryCache
      • RedisCache
      • MemcachedCache
      • FileCache
      • DatabaseCache
      • DragonflyCache
    • Creating Custom Backends
    • API Reference
      • openviper.cache
        • get_cache()
        • cache_instances
        • cache_lock
      • openviper.cache.base
        • BaseCache
      • openviper.cache.memory
        • InMemoryCache
      • openviper.cache.redis
        • RedisCache
      • openviper.cache.memcached
        • MemcachedCache
      • openviper.cache.file
        • FileCache
      • openviper.cache.db_backend
        • DatabaseCache
      • openviper.cache.dragonfly
        • DragonflyCache
      • openviper.cache.redis
        • RedisCache
        • DEFAULT_KEY_PREFIX
      • openviper.cache.db_backend
        • DatabaseCache
        • is_entry_expired()
        • validate_table_name()
      • openviper.cache.db
        • CacheEntry
      • openviper.cache.validation
        • validate_cache_key()
        • CACHE_KEY_MAX_LEN
        • CACHE_KEY_RE
  • App Lifecycle
    • Overview
    • Hook Discovery
    • Execution Order
    • Key Classes
      • openviper.apps.lifecycle
        • AppLifecycle
        • AppLifecycleManager
      • openviper.apps.exceptions
        • AppLifecycleError
        • AppLifecycleConfigError
        • AppLifecycleImportError
        • AppReadyError
        • AppStartupError
        • AppShutdownError
    • Example
  • Background Tasks
    • Installation
    • Configuration
      • Configuration reference
    • Defining Tasks
    • Periodic Tasks
      • Periodic parameters
    • Running the Worker
    • Task Discovery
    • Testing
      • Fixtures
    • Persistence Models
    • Admin Integration
  • Testing
    • Overview
    • Installation and Setup
    • Configuration
    • Core Fixtures
    • Testing Routes
    • Testing the Database
      • Multi-Database Testing
    • Model Factories
    • Authentication Helpers
    • Settings Overrides
    • Assertion Helpers
    • Testing Mail, Events, Tasks, Cache, and Storage
    • Testing OpenAPI and Admin
    • CLI Testing
    • Pytest Markers
    • Public API Reference
    • Project Scaffold
    • Running Tests
    • Best Practices
    • Limitations

Configuration & Operations

  • Configuration
    • Overview
    • Key Classes & Functions
      • openviper.conf.Settings
        • openviper.conf.Settings.as_dict()
        • openviper.conf.Settings.__getitem__()
      • openviper.conf.settings.LazySettings
        • openviper.conf.settings.LazySettings.configure()
        • openviper.conf.settings.LazySettings._setup()
        • openviper.conf.settings.LazySettings.__repr__()
      • openviper.conf.settings.validate_settings()
      • openviper.conf.settings.generate_secret_key()
      • openviper.conf.settings.JsonFormatter
      • openviper.conf.settings.OVDefaultHandler
      • Package Exports
    • Example Usage
      • Defining Settings
      • Accessing Settings
      • Programmatic Configuration (Tests)
      • Environment Variable Overrides
    • Internal API Reference
      • openviper.conf.settings.cast_bool()
      • openviper.conf.settings.cast_tuple()
      • openviper.conf.settings.cast_timedelta()
      • openviper.conf.settings.cast_env_value()
      • openviper.conf.settings.auto_include_project_app()
      • openviper.conf.settings.apply_env_overrides()
      • openviper.conf.settings.configure_logging()
      • openviper.conf.settings.load_settings_from_module()
      • openviper.conf.settings.validate_production()
      • openviper.conf.settings.validate_production_security()
      • openviper.conf.settings.validate_production_cookies()
      • openviper.conf.settings.validate_production_api()
      • openviper.conf.settings.is_insecure_secret_key()
      • openviper.conf.settings.INSECURE_SECRET_KEYS
      • openviper.conf.settings.MIN_SECRET_KEY_LENGTH
      • openviper.conf.settings.MIN_HSTS_SECONDS
      • openviper.conf.settings.SENSITIVE_FIELDS
      • openviper.conf.settings.INSECURE_JWT_ALGORITHMS
      • openviper.conf.settings.ENV_CASTERS
      • openviper.conf.settings.MODULE_CACHE
      • openviper.conf.settings.SETTINGS_CLASS_CACHE
      • openviper.conf.settings.FIELD_METADATA_CACHE
      • openviper.conf.settings.DOTENV_LOADED
      • openviper.conf.settings.DOTENV_LOADED
      • openviper.conf.settings.dotenv_path
      • openviper.conf.settings.framework_version
      • openviper.conf.settings.JsonFormatter
      • openviper.conf.settings.OVDefaultHandler
      • Type Aliases
        • openviper.conf.types.ConfigValue
        • openviper.conf.types.ConfigMap
        • openviper.conf.types.EnvValue
  • Command-Line Interface
    • create-project
    • create-app
    • run
    • version
    • viperctl (sub-command)
  • Core & CLI
    • Overview
    • Key Classes & Functions
      • openviper.core.app_resolver.AppResolver
        • openviper.core.app_resolver.AppResolver.get_app_dirs()
      • openviper.core.context.current_user
      • openviper.core.context.ignore_permissions_ctx
      • openviper.core.context.current_request
      • openviper.core.context.request_perms_cache
      • openviper.core.context.current_router
      • openviper.core.email.sender.send_email()
      • openviper.core.email.attachments.AttachmentData
      • openviper.core.email.attachments.resolve_attachments()
      • openviper.core.email.templates.render_template_content()
      • openviper.core.email.backends.EmailBackend
      • openviper.core.email.backends.ConsoleBackend
      • openviper.core.email.backends.SMTPBackend
      • openviper.core.email.attachments.is_private_hostname()
      • openviper.core.email.attachments.detect_mimetype()
    • Example Usage
      • Running Management Commands
      • Command Reference
        • makemigrations
        • migrate
        • createsuperuser
        • changepassword
        • console
        • start-server
        • start-worker
        • collectstatic
        • create-app
        • create-provider
        • create-command
        • test
        • backup-db
        • restore-db
      • Accessing the Current User in Async Code
      • Bypassing Permissions for Internal Operations
    • Email Subsystem
      • Sending Email
      • Template Rendering
      • Attachments
      • Attachment Security
      • Delivery Backends
      • Background Queue
      • Context Variables
        • openviper.core.email.attachments.ATTACHMENT_ALLOWED_DIRS
        • openviper.core.email.attachments.MAX_ATTACHMENT_BYTES
        • openviper.core.email.attachments.ALLOWED_URL_SCHEMES
    • Database Backup & Restore
      • System Requirements
      • Usage
      • Supported Databases
      • Archive Format
      • Workflow Examples
      • Error Handling
      • Configuration Reference
  • Utilities
    • Overview
    • Key Modules
      • openviper.utils.timezone
        • now()
        • get_current_timezone()
        • get_settings()
        • make_aware()
        • make_naive()
        • is_aware()
        • is_naive()
        • localtime()
        • utc
      • openviper.utils.datastructures
        • check_no_crlf()
        • unique_keys()
        • unique_items()
        • Headers
        • MutableHeaders
        • QueryParams
        • ImmutableMultiDict
      • openviper.utils.importlib
        • import_string()
        • import_string_uncached()
        • reset_import_cache()
        • IMPORT_CACHE
      • openviper.utils.translation
        • get_language()
        • set_language()
        • gettext()
        • ngettext()
        • gettext_lazy()
        • get_translation_object()
        • translations_cache
        • LOCALE_DIR
        • DEFAULT_DOMAIN
        • LazyString
      • openviper.utils.logging
        • get_uvicorn_log_config()
      • openviper.utils.module_resolver
        • ResolvedModule
        • resolve_target()
        • resolve_root()
        • resolve_module()
      • openviper.utils.settings_discovery
        • discover_settings_module()
    • Example Usage
      • Timezone Helpers
      • Headers Usage
      • Dynamic Import
      • Translation
      • Module Resolution
  • Contrib
    • Country Field
      • Overview
      • Installation
      • Usage
        • Field options
      • Settings
      • Serializer usage
      • OpenAPI example
      • Utility helpers
        • validate_country()
        • get_country_name()
        • get_dial_code()
        • search_country()
        • get_country_choices()
      • Performance
      • Country value object
        • CountryField methods
      • Cache management
        • invalidate_cache()
        • get_cache_info()
      • Testing
    • Currency Field
      • Overview
      • Installation
      • Usage
        • Field options
        • Runtime formatting
        • Advanced field examples
      • Money value object
      • Utility helpers
        • validate_currency()
        • get_currency_name()
        • get_currency_symbol()
        • get_currency_choices()
        • search_currency()
        • resolve_currency()
        • convert_amount_to_words()
        • CurrencyField methods
      • Admin panel integration
      • Serializer usage
      • OpenAPI example
      • Performance
      • Testing
    • Geolocation
      • Overview
      • Installation
      • Basic Usage
      • Point Geometry
      • PointField
      • Backends
        • BACKEND_REGISTRY
        • SQLAlchemy type helpers
      • Utilities
      • Errors
      • Settings & Configuration
      • API Reference
        • BaseGeoBackend
        • GeoDependencyMissingError
        • GeoLocationError
        • InvalidPointError
        • Point
        • PointField
        • get_backend()
        • haversine_distance()
        • parse_point()
        • Point
        • PointField
        • BaseGeoBackend
        • PostGISBackend
        • FallbackTextBackend
        • get_backend()
        • require_shapely()
        • point_to_shapely()
        • point_from_shapely()
        • point_from_wkb_hex()
        • parse_point()
        • haversine_distance()
        • GeoLocationError
        • DependencyMissingError
        • InvalidPointError
    • Overview
    • Key Classes & Functions
      • openviper.contrib.default.middleware
        • DefaultLandingMiddleware
        • NOT_FOUND_RESPONSE
      • openviper.contrib.default.landing
        • LANDING_HTML
    • Example Usage
      • Replacing the Default Landing Page
      • Custom Welcome Page
  • Country Field
    • Overview
    • Installation
    • Usage
      • Field options
    • Settings
    • Serializer usage
    • OpenAPI example
    • Utility helpers
      • validate_country()
      • get_country_name()
      • get_dial_code()
      • search_country()
      • get_country_choices()
    • Performance
    • Country value object
      • CountryField methods
        • CountryField
    • Cache management
      • invalidate_cache()
      • get_cache_info()
    • Testing
  • Currency Field
    • Overview
    • Installation
    • Usage
      • Field options
      • Runtime formatting
      • Advanced field examples
    • Money value object
    • Utility helpers
      • validate_currency()
      • get_currency_name()
      • get_currency_symbol()
      • get_currency_choices()
      • search_currency()
      • resolve_currency()
      • convert_amount_to_words()
      • CurrencyField methods
        • CurrencyField
    • Admin panel integration
    • Serializer usage
    • OpenAPI example
    • Performance
    • Testing
  • Geolocation
    • Overview
    • Installation
    • Basic Usage
    • Point Geometry
    • PointField
    • Backends
      • BACKEND_REGISTRY
      • SQLAlchemy type helpers
        • register_postgis_types()
        • is_postgresql()
        • GeoType
        • AdaptiveGeometryType
    • Utilities
    • Errors
    • Settings & Configuration
    • API Reference
      • BaseGeoBackend
        • BaseGeoBackend.dialect
        • BaseGeoBackend.column_ddl()
        • BaseGeoBackend.to_db()
        • BaseGeoBackend.to_python()
      • GeoDependencyMissingError
      • GeoLocationError
      • InvalidPointError
      • Point
        • Point.longitude
        • Point.latitude
        • Point.srid
        • Point.to_wkt()
        • Point.to_ewkt()
        • Point.to_geojson()
        • Point.distance_to()
        • Point.from_wkt()
        • Point.from_geojson()
      • PointField
        • PointField.column_type
        • PointField.db_column_type
        • PointField.to_python()
        • PointField.to_db()
        • PointField.get_sa_type()
        • PointField.validate()
      • get_backend()
      • haversine_distance()
      • parse_point()
      • Point
        • Point.longitude
        • Point.latitude
        • Point.srid
        • Point.to_wkt()
        • Point.to_ewkt()
        • Point.to_geojson()
        • Point.distance_to()
        • Point.from_wkt()
        • Point.from_geojson()
      • PointField
        • PointField.column_type
        • PointField.db_column_type
        • PointField.to_python()
        • PointField.to_db()
        • PointField.get_sa_type()
        • PointField.validate()
      • BaseGeoBackend
        • BaseGeoBackend.dialect
        • BaseGeoBackend.column_ddl()
        • BaseGeoBackend.to_db()
        • BaseGeoBackend.to_python()
      • PostGISBackend
        • PostGISBackend.dialect
        • PostGISBackend.column_ddl()
        • PostGISBackend.to_db()
        • PostGISBackend.to_python()
      • FallbackTextBackend
        • FallbackTextBackend.dialect
        • FallbackTextBackend.column_ddl()
        • FallbackTextBackend.to_db()
        • FallbackTextBackend.to_python()
      • get_backend()
      • require_shapely()
      • point_to_shapely()
      • point_from_shapely()
      • point_from_wkb_hex()
      • parse_point()
      • haversine_distance()
      • GeoLocationError
      • DependencyMissingError
        • DependencyMissingError.MESSAGE
      • InvalidPointError
  • db_tools - Database Backup & Restore
    • System Requirements
    • Usage
      • Backup a database
      • Restore a database
    • Supported Databases
    • Archive Format
    • Filename Format
    • Examples
      • Development workflow
      • Production PostgreSQL backup
      • Restore workflow
    • Automation & Scheduling
      • Cron (Linux / macOS)
      • GitHub Actions
    • Error Handling
    • Configuration Reference
      • backup-db arguments
      • restore-db arguments
  • AI Integration
    • Installation
    • Overview
    • Key Classes & Functions
      • openviper.ai.base
        • AIProvider
      • openviper.ai.registry
        • ProviderRegistry
        • openviper.ai.registry.provider_registry
        • openviper.ai.registry.resolve_provider_class()
      • openviper.ai.router
        • ModelRouter
        • openviper.ai.router.model_router
      • openviper.ai.extension
        • EXTENSION_API_VERSION
      • openviper.ai.devkit
        • SimpleProvider
        • StreamingAdapter
        • normalize_response()
        • map_http_error()
      • openviper.ai.exceptions
        • AIException
        • ProviderNotConfiguredError
        • ProviderNotAvailableError
        • ModelUnavailableError
        • ModelCollisionError
        • ModelNotFoundError
      • openviper.ai.types
        • AIConfig
        • AIOptions
        • ModerationResult
      • openviper.ai.security
        • PRIVATE_NETWORKS
        • LOCALHOST_HOSTS
        • is_private_address()
        • validate_base_url()
        • validate_image_url()
      • openviper.ai.provider_utils
        • CHARS_PER_TOKEN
        • MAX_LINE_BYTES
        • filter_kwargs()
        • clamp_temperature()
    • Built-in Providers
      • openviper.ai.providers
        • PROVIDER_MAP
        • PROVIDER_TYPE_MAP
        • openviper.ai.providers.openai_provider
        • openviper.ai.providers.anthropic_provider
        • openviper.ai.providers.gemini_provider
        • openviper.ai.providers.grok_provider
        • openviper.ai.providers.ollama_provider
    • Example Usage
      • Registering & Using a Provider
      • Configuration via Settings
      • Streaming Response
      • Content Moderation
      • Embeddings
OpenViper
  • Python Module Index

Python Module Index

o
 
o
- openviper
    openviper.app
    openviper.contrib.fields.geolocation
    openviper.contrib.fields.geolocation.backends
    openviper.contrib.fields.geolocation.exceptions
    openviper.contrib.fields.geolocation.utils
    openviper.storage
    openviper.storage.base

© Copyright 2026, OpenViper Contributors.

Built with Sphinx using a theme provided by Read the Docs.