Skip to main content

Generate MongoDB validation schemas from Python type annotations and Pydantic models.

Project description

mongo-validations-generator

mongo-validations-generator is a lightweight Python library for generating MongoDB JSON Schema validation rules using standard Python type annotations and Pydantic models.

It allows you to define your MongoDB collection schemas declaratively with Python classes, while supporting advanced typing features like Annotated, Literal, Union, custom validation markers, and nested models.


Features

  • ✅ Auto-generates $jsonSchema validation for MongoDB
  • ✅ Support for Python type hints: str, int, float, bool, list, None
  • ✅ Nested objects using Pydantic-style inheritance
  • ✅ Annotated constraints using Annotated[..., Len(...)]
  • ✅ Support for Union, Optional, and Literal types
  • ✅ Custom BSON type markers (e.g., Long)
  • ✅ Ability to ignore fields with SchemaIgnored

🚀 Getting Started

1. Define a model

from annotated_types import Len
from mongo_validations_generator import MongoValidator, Long, SchemaIgnored
from typing import Annotated, Literal

class Product(MongoValidator):
    name: str
    description: str
    categories: list[str]
    price: Annotated[int, Long]
    tags: Annotated[list[str], Len(1)]
    internal_code: Annotated[str, SchemaIgnored]
    status: Literal["active", "archived"]

2. Generate the schema

import json

print(json.dumps(Product.generate_validation_rules("Product"), indent=2))

output:

{
  "$jsonSchema": {
    "title": "Product Validation",
    "bsonType": "object",
    "required": [
      "name",
      "description",
      "categories",
      "price",
      "tags",
      "status"
    ],
    "properties": {
      "name": {
        "bsonType": "string",
        "description": "'name' must match schema"
      },
      "description": {
        "bsonType": "string",
        "description": "'description' must match schema"
      },
      "categories": {
        "bsonType": "array",
        "items": {
          "bsonType": "string"
        },
        "description": "'categories' must match schema"
      },
      "price": {
        "bsonType": "long",
        "description": "'price' must match schema"
      },
      "tags": {
        "bsonType": "array",
        "items": {
          "bsonType": "string"
        },
        "minItems": 1,
        "description": "'tags' must match schema"
      },
      "status": {
        "enum": ["active", "archived"],
        "bsonType": "string",
        "description": "'status' must match schema"
      }
    }
  }
}

📦 Supported BSON Types

The following BSON types are currently supported by the schema generator:

Python Type BSON Type Notes
str "string"
int "int"
float "double"
bool "bool"
list[...] "array" Supports nested items, constraints, and unions
None / Optional[...] "null" Supports Union[Type, None] and Optional[...]
Annotated[int, Long] "long" Use Annotated[int, Long] to convert to "long"
Literal[...] "enum" Will emit enum values and infer BSON type if homogeneous
MongoValidator subclass "object" Nested objects are fully supported
Annotated[list[T], Len(...)] "array" Adds minItems and maxItems constraints to list validation
BSONDecimal128 "decimal" Outputs a decimal-compatible field using MongoDB's Decimal128 format

❗ Not supported: dict, set, tuple, frozenset, or other complex built-in containers.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

mongo_validations_generator-1.1.0.tar.gz (27.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

mongo_validations_generator-1.1.0-py3-none-any.whl (10.5 kB view details)

Uploaded Python 3

File details

Details for the file mongo_validations_generator-1.1.0.tar.gz.

File metadata

File hashes

Hashes for mongo_validations_generator-1.1.0.tar.gz
Algorithm Hash digest
SHA256 5795644e5669eff04c2fd2baad9e4c12b39a4b8f6db4969302b88c87a16e0ab2
MD5 dcd12e76044e6f0c476aadf0acc50f11
BLAKE2b-256 2f8d32ced12ab6e7b5ac269c8e00e962ff7f3cf06453dba0328e58933725495d

See more details on using hashes here.

File details

Details for the file mongo_validations_generator-1.1.0-py3-none-any.whl.

File metadata

File hashes

Hashes for mongo_validations_generator-1.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 8e53286abe8a73c78733ca5936bdc82af1ce2727e79a1c93845e160a9c30f7fc
MD5 45dc64f2197bd7093277687aae58d839
BLAKE2b-256 082e33d645262b493a837b16581c5266c7275aa4108ff05d18c44870ff8c47d3

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page