Skip to main content

schema-resume-validator

PyPI version Python versions License: MIT

Official Python package for validating resumes against the Schema Resume JSON Schema.

Installation

pip install schema-resume-validator

For XML validation support:

pip install schema-resume-validator[xml]

Usage

Basic Validation

from schema_resume import validate_resume

resume = {
    "$schema": "https://schema-resume.org/schema.json",
    "basics": {
        "name": "John Doe",
        "label": "Software Engineer",
        "email": "john.doe@example.com"
    },
    "work": [
        {
            "name": "Tech Corp",
            "position": "Senior Developer",
            "startDate": "2020-01"
        }
    ]
}

result = validate_resume(resume)

if result["valid"]:
    print("✓ Resume is valid!")
else:
    print("✗ Validation errors:")
    for error in result["errors"]:
        print(f"  - {error['path']}: {error['message']}")

Using the Validator Class

from schema_resume import ResumeValidator

# Create validator instance
validator = ResumeValidator()

# Validate from dictionary
resume_data = {"basics": {"name": "Jane Doe"}}
result = validator.validate(resume_data)

# Validate from JSON file
result = validator.validate("path/to/resume.json")

# Validate from JSON string
json_string = '{"basics": {"name": "John Smith"}}'
result = validator.validate(json_string)

# Access schema files
schema = validator.get_schema()
meta_schema = validator.get_meta_schema()
context = validator.get_context()

Custom Schema

from pathlib import Path
from schema_resume import ResumeValidator

# Use custom schema file
validator = ResumeValidator(schema_path=Path("custom-schema.json"))
result = validator.validate(resume_data)

API Reference

validate_resume(resume)

Convenience function to validate a resume.

Parameters:

  • resume: Resume data as dict, JSON string, or Path to JSON file

Returns: Dictionary with:

  • valid (bool): Whether the resume is valid
  • errors (list): List of validation errors (empty if valid)

ResumeValidator

Main validator class.

__init__(schema_path=None)

Initialize validator with optional custom schema.

Parameters:

  • schema_path (optional): Path to custom schema file

validate(resume)

Validate a resume document.

Parameters:

  • resume: Resume data as dict, JSON string, or Path to JSON file

Returns: Dictionary with validation results

get_schema()

Returns the JSON Schema dictionary.

get_meta_schema()

Returns the meta-schema dictionary.

get_context()

Returns the JSON-LD context dictionary.

Validation Examples

Complete Resume Example

from schema_resume import validate_resume

resume = {
    "$schema": "https://schema-resume.org/schema.json",
    "basics": {
        "name": "Jane Smith",
        "label": "Full Stack Developer",
        "email": "jane@example.com",
        "phone": "+1-555-123-4567",
        "url": "https://janesmith.dev",
        "summary": "Experienced developer with 8+ years in web development",
        "location": {
            "city": "San Francisco",
            "countryCode": "US",
            "region": "California"
        }
    },
    "work": [
        {
            "name": "Tech Company",
            "position": "Senior Developer",
            "startDate": "2020-03",
            "highlights": [
                "Led team of 5 developers",
                "Improved performance by 40%"
            ]
        }
    ],
    "education": [
        {
            "institution": "University of Technology",
            "area": "Computer Science",
            "studyType": "Bachelor",
            "startDate": "2012",
            "endDate": "2016"
        }
    ],
    "skills": [
        {
            "name": "Web Development",
            "level": "Expert",
            "keywords": ["JavaScript", "React", "Node.js"]
        }
    ]
}

result = validate_resume(resume)
print(f"Valid: {result['valid']}")

Handling Validation Errors

from schema_resume import ResumeValidator

validator = ResumeValidator()

invalid_resume = {
    "basics": {
        "email": "not-an-email"  # Invalid email format
    }
}

result = validator.validate(invalid_resume)

if not result["valid"]:
    for error in result["errors"]:
        print(f"Field: {error['path']}")
        print(f"Error: {error['message']}")
        print(f"Validator: {error['validator']}")
        print()

Validating from File

from schema_resume import validate_resume
from pathlib import Path

# Validate from file path
result = validate_resume(Path("resume.json"))

# Or using string path
result = validate_resume("resume.json")

if result["valid"]:
    print("Resume file is valid!")

Development

Running Tests

# Install development dependencies
pip install -e ".[dev]"

# Run tests
pytest

# Run tests with coverage
pytest --cov=schema_resume --cov-report=html

Code Formatting

# Format code with black
black src/

# Check with flake8
flake8 src/

# Type checking with mypy
mypy src/

Schema Files Included

This package includes all necessary schema files:

  • schema.json - Main JSON Schema for resume validation
  • meta-schema.json - Meta-schema for self-validation
  • context.jsonld - JSON-LD context for semantic web integration
  • schema-resume.xsd - XML Schema Definition (XSD) for XML validation

Links

Support

For questions or issues:

License

MIT License - see LICENSE file for details

Contributing

Contributions are welcome! Please see the Contributing Guide.

Download files

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

Source Distribution

schema_resume_validator-1.2.0.tar.gz (19.7 kB view details)

Uploaded Source

Built Distribution

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

schema_resume_validator-1.2.0-py3-none-any.whl (18.7 kB view details)

Uploaded Python 3

File details

Details for the file schema_resume_validator-1.2.0.tar.gz.

File metadata

  • Download URL: schema_resume_validator-1.2.0.tar.gz
  • Upload date:
  • Size: 19.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.11.15

File hashes

Hashes for schema_resume_validator-1.2.0.tar.gz
Algorithm Hash digest
SHA256 99127156fbfaf15acb08487f4c51b047db245aff6b338ca50d6a2b97321f0f34
MD5 ee33f66b3a216398c83e809147359f99
BLAKE2b-256 6455ff8786683e58a395de6f951ffe9f9c393a9eaa23644b541b47353d54e5d8

See more details on using hashes here.

File details

Details for the file schema_resume_validator-1.2.0-py3-none-any.whl.

File metadata

File hashes

Hashes for schema_resume_validator-1.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 4a713f1982695dde2d5f4e3232ec231562d088a4bd9a9e525f8acea50878b74f
MD5 82a9d19ba44c2588685d1dd5f00047d7
BLAKE2b-256 27b66daee32b9e226470a2cb2eb5f3e863365035870e5f72c8833a3010a19c49

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