Skip to main content

JSON Schema validator for Schema Resume - comprehensive CV/Resume validation with JSON-LD support

Project description

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.

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

schema_resume_validator-1.1.0.tar.gz (19.2 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.1.0-py3-none-any.whl (18.2 kB view details)

Uploaded Python 3

File details

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

File metadata

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

File hashes

Hashes for schema_resume_validator-1.1.0.tar.gz
Algorithm Hash digest
SHA256 664ce1d528b395d3d5f0a9c4cff06a8b7cf63f5e7dd20c83cb58319d207cf536
MD5 5e957e27080d13a6a8debdad5216820d
BLAKE2b-256 cfaccbf8ded05b5677b7afe8869b5f5010f78e9f66eeebbe111c208a11c2c11d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for schema_resume_validator-1.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 45f5d3e6b53f1df1befdcb2551278e3faa114194f8e47947073303b6e585a52b
MD5 6a7f6d7b33229e9798f6f459b050fe6b
BLAKE2b-256 4424a7f8f480900c843fb5fe45548942d73a8183c36420f641591f3526f46d67

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