Resume Generator
A Python package to generate professional resumes in Word format. This package takes your resume sections as input and creates a beautifully formatted Word document.
Installation
pip install resume-generator
Usage
Basic Usage
from resume_generator import ResumeGenerator
# Create a resume generator instance
generator = ResumeGenerator()
# Add your resume sections
generator.add_candidate_details(
name="John Doe",
email="john@example.com",
phone="(123) 456-7890",
location="New York, NY",
linkedin="linkedin.com/in/johndoe"
)
generator.add_summary("""
- Experienced software engineer with 5+ years in full-stack development
- Strong background in Python, JavaScript, and cloud technologies
- Proven track record of delivering scalable solutions
""")
generator.add_education(
degree="Master of Science in Computer Science",
university="Stanford University",
graduation_year="2020"
)
generator.add_skills({
"Programming Languages": "Python, JavaScript, Java, C++",
"Frameworks": "Django, React, Spring Boot",
"Cloud": "AWS, Azure, Google Cloud",
"Tools": "Git, Docker, Kubernetes"
})
generator.add_experience([
{
"company": "Tech Corp",
"location": "San Francisco, CA",
"duration": "2020 - Present",
"position": "Senior Software Engineer",
"description": [
"Led development of microservices architecture",
"Implemented CI/CD pipelines",
"Mentored junior developers"
],
"skills": "Python, AWS, Docker"
}
])
# Generate the resume
generator.generate("my_resume.docx")
Reading from Files
You can also read resume content from files and generate the resume:
from resume_generator import ResumeGenerator
def read_file_content(filename):
with open(filename, 'r') as file:
return file.read().strip()
def create_resume():
# Create a resume generator instance
generator = ResumeGenerator(add_h1b_header=True)
# Read candidate details
details = read_file_content('resume_content/candidate_details.txt')
lines = details.split('\n')
name = lines[0].replace('Name: ', '').strip()
email = lines[1].replace('Email: ', '').strip()
phone = lines[2].replace('Phone: ', '').strip()
location = lines[3].replace('Location: ', '').strip()
linkedin = lines[4].replace('LinkedIn: ', '').strip() if len(lines) > 4 else None
# Add candidate details
generator.add_candidate_details(
name=name,
email=email,
phone=phone,
location=location,
linkedin=linkedin
)
# Add professional summary
summary = read_file_content('resume_content/summary.txt')
generator.add_summary(summary)
# Add education
education = read_file_content('resume_content/education.txt')
degree = ''
university = ''
graduation_year = ''
for line in education.split('\n'):
if line.startswith('Education Degree:'):
degree = line.replace('Education Degree:', '').strip()
elif line.startswith('University Name:'):
university = line.replace('University Name:', '').strip()
elif line.startswith('Graduation Year:'):
graduation_year = line.replace('Graduation Year:', '').strip()
generator.add_education(
degree=degree,
university=university,
graduation_year=graduation_year
)
# Add skills
skills = read_file_content('resume_content/skills.txt')
skills_dict = {}
for line in skills.split('\n'):
if ':' in line:
category, details = line.split(':', 1)
skills_dict[category.strip()] = details.strip()
generator.add_skills(skills_dict)
# Add experience
experience = read_file_content('resume_content/experience.txt')
experience_entries = []
current_entry = {}
for line in experience.split('\n'):
if line.startswith('Company:'):
if current_entry:
experience_entries.append(current_entry)
current_entry = {}
current_entry['company'] = line.replace('Company:', '').strip()
elif line.startswith('Location:'):
current_entry['location'] = line.replace('Location:', '').strip()
elif line.startswith('Duration:'):
current_entry['duration'] = line.replace('Duration:', '').strip()
elif line.startswith('Position:'):
current_entry['position'] = line.replace('Position:', '').strip()
elif line.startswith('Description:'):
current_entry['description'] = []
elif line.startswith('-') and 'description' in current_entry:
current_entry['description'].append(line.lstrip('-').strip())
elif line.startswith('Skills:'):
current_entry['skills'] = line.replace('Skills:', '').strip()
if current_entry:
experience_entries.append(current_entry)
generator.add_experience(experience_entries)
# Generate the resume
output_file = 'resume.docx'
generator.generate(output_file)
print(f"Resume has been generated successfully as '{output_file}'")
if __name__ == "__main__":
create_resume()
## Features
- Professional formatting with consistent styling
- Support for all major resume sections
- Customizable margins and spacing
- H1B header option
- Page borders
- Bullet points and indentation
- Skills table with categories
## Requirements
- Python 3.6 or higher
- python-docx 0.8.11 or higher
## License
MIT License
## Contributing
Contributions are welcome! Please feel free to submit a Pull Request.
Metadata
Release files for bhavya-resume-generator 0.1.3
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| bhavya_resume_generator-0.1.3.tar.gz | 8.7 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| bhavya_resume_generator-0.1.3-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 17.4 kB
Release files / bhavya_resume_generator-0.1.3.tar.gz
| Download URL | bhavya_resume_generator-0.1.3.tar.gz |
|---|---|
| Size | 8.7 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
0d02e35e670918389b3741a735febfc3ff6f5b4ab0ecf907e9898b2100d66ac1
|
|
BLAKE2b-256 checksum How to use checksums |
b343c6d4baecf0af36ed7c0126966ce201f21efad515eaddea970e468b40096b
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.12.3
|
Release files / bhavya_resume_generator-0.1.3-py3-none-any.whl
| Download URL | bhavya_resume_generator-0.1.3-py3-none-any.whl |
|---|---|
| Size | 8.7 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
076b38dd340f327a0d372f6b5ede0cfbe0ae1ad7ba3bfd6c9bc38db4a6741d7f
|
|
BLAKE2b-256 checksum How to use checksums |
18b06d70e3149e7fda55923715397664bd5dbea7b9e3b2af854f22379e1e8b87
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.12.3
|