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.
Metadata
Release files for schema-resume-validator 1.3.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| schema_resume_validator-1.3.0.tar.gz | 20.7 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| schema_resume_validator-1.3.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 40.4 kB
Release files / schema_resume_validator-1.3.0.tar.gz
| Download URL | schema_resume_validator-1.3.0.tar.gz |
|---|---|
| Size | 20.7 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
3108311eecc569e9d3f39ea2f65cf4040230b2e72eb0372bc674e8d67c14a130
|
|
BLAKE2b-256 checksum How to use checksums |
33a42fcd288eff1270faa8d077953439b58e5eb4aef98ad8a2d1e8b640ef932a
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.11.16
|
Release files / schema_resume_validator-1.3.0-py3-none-any.whl
| Download URL | schema_resume_validator-1.3.0-py3-none-any.whl |
|---|---|
| Size | 19.7 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
d7690be2de5bf9caae30f69d353f4e590114a05816eaef6184a2e75b3731a8a9
|
|
BLAKE2b-256 checksum How to use checksums |
5bb70c4c4fcd2a8f7368123ac5e3832a7776a036b1bd047b90dd0fa02ae5f12c
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.11.16
|