A Python package to generate professional resumes in Word format
Project description
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.
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
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 bhavya_resume_generator-0.1.3.tar.gz.
File metadata
- Download URL: bhavya_resume_generator-0.1.3.tar.gz
- Upload date:
- Size: 8.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
0d02e35e670918389b3741a735febfc3ff6f5b4ab0ecf907e9898b2100d66ac1
|
|
| MD5 |
11f291dcbaf1defa0858ea682053fac0
|
|
| BLAKE2b-256 |
b343c6d4baecf0af36ed7c0126966ce201f21efad515eaddea970e468b40096b
|
File details
Details for the file bhavya_resume_generator-0.1.3-py3-none-any.whl.
File metadata
- Download URL: bhavya_resume_generator-0.1.3-py3-none-any.whl
- Upload date:
- Size: 8.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
076b38dd340f327a0d372f6b5ede0cfbe0ae1ad7ba3bfd6c9bc38db4a6741d7f
|
|
| MD5 |
3a709249235f1c79e250124773de3fd2
|
|
| BLAKE2b-256 |
18b06d70e3149e7fda55923715397664bd5dbea7b9e3b2af854f22379e1e8b87
|