JSON Schema validator for Schema Resume - comprehensive CV/Resume validation with JSON-LD support
Project description
schema-resume-validator
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 validerrors(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
- Website: https://schema-resume.org/
- Documentation: https://github.com/tradik/schema-resume
- Online Validator: https://schema-resume.org/validator.html
- PyPI: https://pypi.org/project/schema-resume-validator/
- Issues: https://github.com/tradik/schema-resume/issues
Support
For questions or issues:
- Email: info@schema-resume.org or support@tradik.com
- GitHub Issues: https://github.com/tradik/schema-resume/issues
License
MIT License - see LICENSE file for details
Contributing
Contributions are welcome! Please see the Contributing Guide.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
664ce1d528b395d3d5f0a9c4cff06a8b7cf63f5e7dd20c83cb58319d207cf536
|
|
| MD5 |
5e957e27080d13a6a8debdad5216820d
|
|
| BLAKE2b-256 |
cfaccbf8ded05b5677b7afe8869b5f5010f78e9f66eeebbe111c208a11c2c11d
|
File details
Details for the file schema_resume_validator-1.1.0-py3-none-any.whl.
File metadata
- Download URL: schema_resume_validator-1.1.0-py3-none-any.whl
- Upload date:
- Size: 18.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.11.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
45f5d3e6b53f1df1befdcb2551278e3faa114194f8e47947073303b6e585a52b
|
|
| MD5 |
6a7f6d7b33229e9798f6f459b050fe6b
|
|
| BLAKE2b-256 |
4424a7f8f480900c843fb5fe45548942d73a8183c36420f641591f3526f46d67
|