├── .python-version ├── src └── awesome_resume │ └── __init__.py ├── docs ├── images │ ├── location.png │ ├── projects.png │ ├── summary.png │ ├── chronological.png │ ├── euro_pass_cv.png │ ├── resume_types.png │ ├── functional_type.png │ ├── all_work_experiences.png │ ├── chance_of_getting_job.png │ ├── example_for_structure.png │ ├── last_working_experience.png │ └── one_column_vs_two_column.png ├── samples │ └── ManiMozaffar │ │ ├── page1.png │ │ └── page2.png ├── guidelines │ ├── templates.md │ ├── ats.md │ ├── after_sending_resume.md │ ├── shotgun_vs_target.md │ ├── common_mistakes.md │ └── structure.md ├── samples.md ├── sections │ ├── memberships.md │ ├── volunteer_experience.md │ ├── awards.md │ ├── work_experience.md │ ├── languages.md │ ├── education.md │ ├── references.md │ ├── projects.md │ ├── certifications.md │ ├── skills.md │ ├── personal_information.md │ ├── publications.md │ └── summary.md ├── definitions.md └── index.md ├── .gitignore ├── makefile ├── pyproject.toml ├── README.md ├── CONTRIBUTING.md ├── mkdocs.yml └── uv.lock /.python-version: -------------------------------------------------------------------------------- 1 | 3.12 -------------------------------------------------------------------------------- /src/awesome_resume/__init__.py: -------------------------------------------------------------------------------- 1 | def hello() -> str: 2 | return "Hello from awesome-resume!" 3 | -------------------------------------------------------------------------------- /docs/images/location.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ManiMozaffar/awesome-resumes/HEAD/docs/images/location.png -------------------------------------------------------------------------------- /docs/images/projects.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ManiMozaffar/awesome-resumes/HEAD/docs/images/projects.png -------------------------------------------------------------------------------- /docs/images/summary.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ManiMozaffar/awesome-resumes/HEAD/docs/images/summary.png -------------------------------------------------------------------------------- /docs/images/chronological.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ManiMozaffar/awesome-resumes/HEAD/docs/images/chronological.png -------------------------------------------------------------------------------- /docs/images/euro_pass_cv.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ManiMozaffar/awesome-resumes/HEAD/docs/images/euro_pass_cv.png -------------------------------------------------------------------------------- /docs/images/resume_types.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ManiMozaffar/awesome-resumes/HEAD/docs/images/resume_types.png -------------------------------------------------------------------------------- /docs/images/functional_type.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ManiMozaffar/awesome-resumes/HEAD/docs/images/functional_type.png -------------------------------------------------------------------------------- /docs/images/all_work_experiences.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ManiMozaffar/awesome-resumes/HEAD/docs/images/all_work_experiences.png -------------------------------------------------------------------------------- /docs/images/chance_of_getting_job.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ManiMozaffar/awesome-resumes/HEAD/docs/images/chance_of_getting_job.png -------------------------------------------------------------------------------- /docs/images/example_for_structure.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ManiMozaffar/awesome-resumes/HEAD/docs/images/example_for_structure.png -------------------------------------------------------------------------------- /docs/samples/ManiMozaffar/page1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ManiMozaffar/awesome-resumes/HEAD/docs/samples/ManiMozaffar/page1.png -------------------------------------------------------------------------------- /docs/samples/ManiMozaffar/page2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ManiMozaffar/awesome-resumes/HEAD/docs/samples/ManiMozaffar/page2.png -------------------------------------------------------------------------------- /docs/images/last_working_experience.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ManiMozaffar/awesome-resumes/HEAD/docs/images/last_working_experience.png -------------------------------------------------------------------------------- /docs/images/one_column_vs_two_column.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ManiMozaffar/awesome-resumes/HEAD/docs/images/one_column_vs_two_column.png -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # python generated files 2 | __pycache__/ 3 | *.py[oc] 4 | build/ 5 | dist/ 6 | wheels/ 7 | *.egg-info 8 | *.DS_Store 9 | 10 | # venv 11 | .venv 12 | /site/* 13 | -------------------------------------------------------------------------------- /makefile: -------------------------------------------------------------------------------- 1 | .PHONY: install 2 | install: ## Install the rye environment 3 | @echo "🚀 Creating virtual environment using rye" 4 | uv sync 5 | 6 | .PHONY: serve 7 | serve: ## Install the rye environment 8 | rye run mkdocs serve 9 | 10 | .PHONY: deploy 11 | deploy: ## Install the rye environment 12 | rye run mkdocs gh-deploy 13 | -------------------------------------------------------------------------------- /docs/guidelines/templates.md: -------------------------------------------------------------------------------- 1 | Use these templates to create your own CV. 2 | 3 | Personally I prefer the first one, but it's up to you to choose the one that fits you the best. 4 | The reason I prefer the first one is because it's very customization friendly, free, and it's easy to use. 5 | 6 | - ### [FlowCV](https://flowcv.com) 7 | - ### [Canva](https://canva.com) 8 | - ### [Resume IO](https://resume.io) 9 | - ### [Novo Resume](https://novoresume.com) 10 | -------------------------------------------------------------------------------- /pyproject.toml: -------------------------------------------------------------------------------- 1 | [project] 2 | name = "awesome-resume" 3 | version = "0.1.0" 4 | description = "Add your description here" 5 | readme = "README.md" 6 | requires-python = ">=3.12" 7 | dependencies = [ 8 | "rich>=13.7.1", 9 | "mkdocs>=1.6.0", 10 | "mkdocs-material>=9.5.33", 11 | "mkdocs-simple-hooks>=0.1.5", 12 | "mkdocstrings[python]>=0.25.2", 13 | "ruff>=0.6.2", 14 | "mkdocs-material-extensions>=1.3.1", 15 | ] 16 | 17 | [build-system] 18 | requires = ["hatchling"] 19 | build-backend = "hatchling.build" 20 | -------------------------------------------------------------------------------- /docs/samples.md: -------------------------------------------------------------------------------- 1 | # Samples 2 | 3 | ## Contribution 4 | 5 | You can make a contribution by adding your resume to the `samples` folder. 6 | After that, I can even review your resume and give you feedback on it, while putting it on the documentation so others can see as well. If you wish to hide your personal information, you can do so by replacing them with dummy data. It is no shame if your resume is not perfect. My first resume was a mess, but I learned from it and improved it over time. I believe my first version of resume might be even in commit history, don't be shy if your resume is not perfect. No one cares about an old resume after few months, and all companies following data protection laws will delete your resume after a certain period of time. So don't worry about it, and share your resume with us! 7 | 8 | ## Backend Engineer 9 | 10 | ### Mani Mozaffar 11 | 12 | I cannot review my own resume, but I can share it with you. 13 | 14 | ??? info "Expand to view" 15 | 16 | ![Mani Mozaffar's Resume](samples/ManiMozaffar/page1.png) 17 | ![Mani Mozaffar's Resume](samples/ManiMozaffar/page2.png) 18 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Welcome to Awesome Resumes 2 | 3 | This repository is a resource for creating a professional and eye-catching resume. Whether you're just starting your career or looking to level up, we provide the guidance you need to build a resume that stands out. It's completely free, open-source, and designed to help you succeed in your job search. 4 | 5 | Ready to get started? Check out the [documentation](https://manimozaffar.github.io/awesome-resumes/) to dive deeper and start crafting your winning resume today! 6 | 7 | ## Supporting the project 8 | 9 | If you find this project helpful, please consider giving it a star on [GitHub](https://github.com/ManiMozaffar/awesome-resumes). It makes other people discover this project and benefit from it. It also motivates me to keep maintaining it! 10 | 11 | ## Why This Project Matters 12 | 13 | **Scary fact:** Did you know that only 1 in 50 resumes get an interview? That's a 2% chance of getting an interview. This is why it's crucial to have a well-crafted resume that stands out from the rest. 14 | 15 | In today’s competitive job market, a well-crafted resume is essential. It’s not just about listing your skills and experiences; how you present that information can make or break your chances of getting noticed. You can be a very senior person, with years of experience, but with a poorly self-presentation, you can be easily overlooked. Or you may be a junior/intern with a very well-crafted resume, and you can be easily noticed. This is why it's crucial to have a well-crafted resume. 16 | -------------------------------------------------------------------------------- /CONTRIBUTING.md: -------------------------------------------------------------------------------- 1 | ## Contribution Guide 2 | Thank you for considering contributing to Awesome-Resumes. We welcome your contributions to help make this repository more comprehensive and up-to-date. Before you make any changes, please follow the guidelines below. 3 | 4 | ### Before you start.. 5 | Please check the issues section before starting your contribution to make sure that your changes are not duplicates of existing issues or have already been rejected. This will help to avoid any delays or complications during the approval process for pull requests. 6 | 7 | If you have already forked this repository, please update your forked repository with the origin remote repository before making any changes. 8 | 9 | 10 | ### Qualified Resumes 11 | We have collected this archive as a comprehensive starting point for those who need to create a winning IT resume. Before you add your resume, please make sure that your resume meet the following requirements: 12 | 13 | - Adopted to all the guidelines and considered as a best practice. 14 | - The permission of owner is required for publishing his/her resume if it's not yours. 15 | - Levels are Beginner(Less than 2 year experience), Intermediate (2-5 years experience), and Expert (+5 Years experience). Name your pdf file with your last name followed by your level separated with a dash, for example Intermediate-Mozaffar.pdf, only PDF files are acceptable. 16 | - Resume is uploaded to relevant field. 17 | 18 | ### Request for a new section.. 19 | You have a new topic that is not listed in the repository? Open a new issue and explain more about the it. 20 | 21 | ### Final words.. 22 | All contributions are welcome. Thank you for sharing your knowledge and helping others improve their resumes. 23 | -------------------------------------------------------------------------------- /docs/sections/memberships.md: -------------------------------------------------------------------------------- 1 | # How to List Memberships on Your Resume 2 | 3 | ## Why Include Memberships? 4 | 5 | Adding professional memberships to your resume demonstrates your engagement, dedication, and commitment to your industry. It shows that you are connected to a network of professionals and that you are continuously working on your professional development. 6 | 7 | ## Where to List Memberships 8 | 9 | - **Professional Affiliations Section:** If you have multiple relevant memberships, create a separate section titled "Professional Affiliations" or "Memberships" near the end of your resume. 10 | - **Education or Qualifications Section:** If your memberships are closely tied to your education or certifications, you can include them here. 11 | - **Resume Summary:** If a specific membership is crucial for the job you’re applying for, you can mention it in your resume summary for immediate visibility. 12 | 13 | ## How to Format Memberships 14 | 15 | - **Name of the Organization:** Always include the full name of the organization. 16 | - **Membership Type:** Indicate your level (e.g., Member, Associate, Fellow). 17 | - **Dates:** Include the dates of your membership (e.g., 2021–Present). 18 | - **Relevant Roles or Achievements:** If you held a leadership position or contributed significantly, mention it briefly. 19 | 20 | ### Example: 21 | 22 | **American Marketing Association (AMA), Member** 23 | 2018–Present 24 | Active participant in annual conferences and workshops. 25 | 26 | ## Quick Tips 27 | 28 | - ✅ **List only relevant professional organizations or associations you are a member of, and include any leadership positions you have held within them.** 29 | - ✅ **Highlight any specific skills or knowledge you have gained through these memberships if needed.** 30 | - ✅ **Include the full name of the organization, your membership type, and the dates of your membership.** 31 | -------------------------------------------------------------------------------- /docs/sections/volunteer_experience.md: -------------------------------------------------------------------------------- 1 | # How to Include Volunteer Experience on Your Resume 2 | 3 | ## Why It Matters 4 | 5 | Volunteer experience on a resume can be a great way to showcase your skills, especially if you’re early in your career, have gaps in your work history, or want to demonstrate your commitment to a cause. It shows that you’re not just about work—you’re also about giving back and making a difference. 6 | 7 | ## Where to List It 8 | 9 | - **Work Experience Section:** If your volunteer work is highly relevant to the job you’re applying for, include it in your work experience section. Treat it like a job, listing your role, organization, and achievements. 10 | - **Dedicated Section:** If your volunteer experience isn’t directly related to the job but is still impressive, create a separate section titled “Volunteer Experience” or “Community Involvement.” 11 | - **Education Section:** For recent graduates, volunteer experience can be included in the education section if it was a significant part of your academic experience. 12 | 13 | ## How to List It 14 | 15 | - **Role & Organization:** Clearly state your title and the organization you volunteered for. 16 | - **Dates:** Include the timeframe of your volunteer work. 17 | - **Responsibilities & Achievements:** Focus on what you accomplished, not just what you did. Quantify your impact if possible (e.g., “Managed a team of 10 volunteers, raising $5,000 for charity”). 18 | 19 | ## Tips for Success 20 | 21 | - ✅ Focus on Achievements, Highlight specific contributions or outcomes, rather than just listing duties. 22 | - ✅ Be Concise: Volunteer experience is optional, so keep it brief and impactful, especially if you have a lot of other relevant work experience. 23 | - ✅ Provide a brief description of each experience, including the organization and your role 24 | - ✅ Focus on your contributions and any notable achievements, such as leading a successful campaign, increasing donations or free content creating 25 | -------------------------------------------------------------------------------- /docs/guidelines/ats.md: -------------------------------------------------------------------------------- 1 | # ATS 2 | 3 | ATS stands for Applicant Tracking System, which is a software tool used by many companies to manage the recruitment process. The purpose of an ATS is to help recruiters and hiring managers organize and sort through large volumes of resumes quickly and efficiently. 4 | 5 | When you submit your resume to a company through an online application system, it is typically first reviewed by an ATS. The system scans your resume for specific keywords and phrases that match the requirements of the job and ranks your resume based on how well it matches these criteria. 6 | 7 | To optimize your resume for ATS, it's important to use keywords and phrases that are relevant to the job you are applying for. These keywords should be included in your resume's summary, work experience, and skills sections. It's also important to use standard resume formatting, such as bullet points and clear section headings, as ATS systems may have difficulty reading unconventional formats. 8 | 9 | You should write your resume in a way that is friendly to ATS, not an enemy, Some tips for that 10 | 11 | - ATS system may be case sensitive and stupid, so if the job title is "frontend", then write "frontend", not "front-end" or "FrontEnd" or "front end". 12 | - There are keywords and structure that you MUST have in your resume, like bullet points and clear section headings, etc. Make sure you have them all. 13 | - You've to match your resume versus the description, make sure the exact words in the description are also matched in your resume. You can even consider writing a script yourself to see how many % it matches. Just don't overdo it in a way to copy-paste the advertisement into your resume haha 14 | - The resume has written "React.js", but you have written "Re-act", which simply may result in your rejection. Remember to consider ATS as a very dumb person. 15 | - Make sure your sections and documents can be recognized by ATS, you can try uploading your resume to a few websites ATS to see if they can detect the text inside your resume or not. They may not be in conditions such as weird font, bad styling, etc. 16 | -------------------------------------------------------------------------------- /docs/sections/awards.md: -------------------------------------------------------------------------------- 1 | # How to List Awards on Your Resume 2 | 3 | ## Why Awards Matter 4 | 5 | Including awards on your resume is a great way to highlight your accomplishments and stand out from other candidates. They show that you’ve been recognized for your hard work and excellence, whether in academics, professional settings, or other achievements. However, it’s essential to be selective and strategic about which awards to include and how you present them. 6 | 7 | ## Where to List Awards 8 | 9 | - **Education Section:** Include academic awards like scholarships, Dean’s List, or honors within your education section. This is especially relevant if you’re early in your career or applying for roles that value academic achievement. 10 | - **Work Experience Section:** If you’ve received awards related to your job performance, list them within the work experience section under the relevant job. This helps to contextualize your achievements. 11 | - **Dedicated Awards Section:** If you have multiple awards or particularly prestigious ones, create a separate “Awards” or “Honors” section. This can draw more attention to your accomplishments. 12 | 13 | ## How to Format Awards 14 | 15 | Each award listing should include: 16 | 17 | - **Name of the Award:** Clearly state the name of the award. 18 | - **Date Received:** Include the month and year you received the award. 19 | - **Awarding Body:** Mention the organization or institution that granted the award. 20 | - **Reason or Achievement:** Briefly explain why you received the award, especially if it’s not self-explanatory. For example, highlight specific results like “Increased sales by 20%.” 21 | 22 | ## Tips 23 | 24 | - ✅ **List relevant awards or honors you have received, ONLY those that are related to your field** 25 | - ✅ **Include the name of the award, the organization that gave it, and the date you received it** 26 | - ✅ **Include only official awards accepted worldwide** 27 | - ❌ **Don't include awards or honors that are not relevant or significant to your field** 28 | - ❌ **Don't list awards or honors that you received a long time ago, unless they are particularly impressive or relevant to your current work** 29 | -------------------------------------------------------------------------------- /docs/guidelines/after_sending_resume.md: -------------------------------------------------------------------------------- 1 | ### Reach Back 2 | 3 | Reach back is a proactive approach to job searching that involves following up with recruiters or hiring managers after submitting an application. This can be especially useful if you have applied for a job and not heard back, or if you feel that your application may not have been considered due to factors such as ATS screening. 4 | 5 | By reaching back to the recruiter, you can demonstrate your interest in the job and your willingness to go the extra mile to secure the position. This can help you to stand out from other applicants and increase your chances of being considered for the job. 6 | 7 | When reaching back to a recruiter, it's important to be professional and courteous. You can start by thanking them for considering your application and expressing your enthusiasm for the job. You can also highlight any relevant skills or experience that you may not have included in your initial application. 8 | 9 | If your application has been rejected, you can also use reach back as an opportunity to ask for feedback and advice on how to improve your application for future job opportunities. This can help you to identify areas where you may need to focus on in order to strengthen your resume or cover letter. 10 | Overall, reach back can be a powerful tool for job seekers looking to stand out from the competition and increase their chances of landing a job. By being proactive and engaging with recruiters, you can demonstrate your interest and enthusiasm for the job and increase your chances of being considered for the position. 11 | 12 | ### Thanks Letter 13 | 14 | A thank you letter is a way of expressing gratitude towards someone for their help or support. It is a simple yet effective way of showing appreciation and acknowledging the efforts of others. Whether it is for a job interview, a recommendation, or any other situation, a well-written thank you letter can leave a lasting positive impression on the recipient. 15 | 16 | In the first paragraph of the letter, it is important to thank the person for their help or support and to express how much it means to you. In the second paragraph, you can elaborate on the impact their assistance has had on you and how it has made a difference. Finally, it is important to end the letter by expressing your gratitude once again and letting them know that their help will not be forgotten. 17 | -------------------------------------------------------------------------------- /docs/sections/work_experience.md: -------------------------------------------------------------------------------- 1 | ## Learn how to write a good bullet points for your work experience section 2 | 3 | [The most important part of writing a working experience section is to write a good bullet points. Make sure to read that section first, before jumping on this section!](../guidelines/structure.md/#bullet-points) 4 | 5 | ## Why It Matters 6 | 7 | The work experience section is often the most important part of your resume. It’s where you showcase your career progression, skills, and achievements in previous roles. This section helps potential employers see what you’ve done and how you can contribute to their organization. 8 | 9 | ## Key Guidelines 10 | 11 | ### 1. **Relevancy is Key** 12 | 13 | Focus on including work experiences that are directly relevant to the job you’re applying for. If a past job isn’t related to the position, either leave it out or minimize its details. Tailor your work experience to match the job description, emphasizing roles and achievements that align with what the employer is looking for. 14 | 15 | ### 2. **Chronological Order** 16 | 17 | List your work experience in reverse chronological order, starting with your most recent job. This format is preferred by most recruiters because it shows your career progression and current skill set. 18 | 19 | ### 3. **Include Essential Details** 20 | 21 | For each job, provide the following information: 22 | 23 | - **Job Title**: Clearly state your position. 24 | - **Company Name**: Include the full name of the company. 25 | - **Location**: Mention the city and state where the company is based. 26 | - **Dates of Employment**: Provide the start and end dates (month and year). 27 | 28 | ### 4. **Describe Your Role and Achievements** 29 | 30 | Under each job, describe your main responsibilities and key achievements. Focus on what you accomplished rather than just listing duties. Quantify your achievements where possible (e.g., “Increased sales by 20%”). 31 | 32 | ### 5. **Address Career Gaps** 33 | 34 | If you have gaps in your employment history, be prepared to address them. Consider using a functional or combination resume format if you have significant gaps or if you’re changing careers. 35 | 36 | ### 6. **How Far Back Should You Go?** 37 | 38 | Generally, your work experience should cover the last 10-15 years. If you have a long career history, focus on the most recent and relevant roles. For senior positions, you may need to go back further, but always prioritize relevancy over chronology. 39 | 40 | ## Example: 41 | 42 | Check the screenshot below 43 | ![Work Experience Example](../images/all_work_experiences.png) 44 | -------------------------------------------------------------------------------- /docs/sections/languages.md: -------------------------------------------------------------------------------- 1 | # How to List Languages on Your Resume 2 | 3 | ## Why It Matters 4 | 5 | Listing language skills on your resume can give you a competitive edge, especially in today’s global job market. However, it’s important to be strategic about how you list them to ensure they add value to your application. 6 | 7 | ## How to List Languages 8 | 9 | 1. **Use Standard Proficiency Levels**: Stick to recognized proficiency levels: 10 | 11 | - **Elementary proficiency** 12 | - **Limited working proficiency** 13 | - **Professional working proficiency** 14 | - **Full professional proficiency** 15 | - **Native or bilingual proficiency** 16 | 17 | Avoid using visual ratings like stars or bars, as these can be misleading and may not be ATS-friendly. 18 | 19 | 2. **Relevance is Key**: Only include languages that are relevant to the job or company. If the job doesn’t require a specific language and you’re not proficient, it’s best to leave it off your resume. 20 | 21 | 3. **Where to Place It**: Create a dedicated "Languages" section on your resume. Place it after the main sections like Work Experience, Education, and Skills. If language proficiency is a key requirement for the job, consider mentioning it in your summary or work experience as well. 22 | 23 | 4. **Backup Your Claims**: If you have certifications or test scores that validate your language proficiency, include them. For example, you can hyperlink to your TOEFL or IELTS scores. BUT only do that, if it's a requirement for the job. 24 | 25 | 5. **You are showcasing your writing skill by sending your resume!**: When writing a resume, you're already showcasing your English skills. Make sure your resume is well-written and free of grammatical errors to demonstrate your language proficiency. 26 | 27 | ### Example: 28 | 29 | **Languages** 30 | 31 | - English: Native 32 | - Spanish: Full Professional Proficiency 33 | - French: Limited Working Proficiency 34 | 35 | ## Quick Tips 36 | 37 | - ✅ **Label your language skill as one of these:** 38 | - Elementary proficiency 39 | - Limited working proficiency 40 | - Professional working proficiency 41 | - Full professional proficiency 42 | - Native or bilingual proficiency 43 | - ✅ **List languages you are proficient in or may be related to the job, and indicate your level of proficiency** 44 | - ✅ **Backup your language level by providing a hyperlink to certification like TOEFL's grade** 45 | - ❌ **Don't list languages that you are not proficient in or that are not relevant to the job you are applying for, unless it's your native language.** 46 | - ❌ **Don't use stars to express your skill in language. Use the proper label as mentioned above** 47 | -------------------------------------------------------------------------------- /docs/sections/education.md: -------------------------------------------------------------------------------- 1 | # How to Write the Education Section on Your Resume 2 | 3 | ## Keep It Relevant 4 | 5 | Your education section should reflect what’s most relevant to the job you’re applying for. If you’ve got a degree, no need to mention your high school unless it’s the highest level of education you’ve completed. For those in specialized fields, like tech or healthcare, highlight specific coursework, projects, or certifications that match the job requirements. 6 | 7 | ## Structure It Clearly 8 | 9 | Start with your highest degree and work backward. Include the degree type, major, institution name, location, and graduation date (or expected date if you’re still studying). If you have multiple degrees, list them separately. For ongoing education, use phrases like “In progress” or “Expected completion” with the month and year. 10 | 11 | ### Example: 12 | 13 | **Bachelor of Science in Computer Science** 14 | University of XYZ, City, State 15 | Graduated: May 2023 16 | GPA: 3.8/4.0, Dean’s List, Relevant Coursework: Data Structures, AI, Algorithms 17 | 18 | ## Highlight Achievements and Honors 19 | 20 | Don’t just list your degree—showcase what you achieved. If you graduated with honors, were on the Dean’s List, or received any scholarships, include that. Quantifiable achievements can add extra weight, especially if you lack work experience. 21 | 22 | ## Tailor It to the Job 23 | 24 | Just like with the rest of your resume, tailor the education section to each job. If you’re applying for a role that requires specific knowledge or skills, highlight relevant coursework or projects. This is particularly useful for recent grads or those with limited work experience. e.x if PHD is required, it even worth mentioning it on your summary! 25 | 26 | ## Don’t Fudge the Details 27 | 28 | Be 100% honest about your education. It’s easy for employers to verify your credentials, and any discrepancies can quickly ruin your chances. If you didn’t finish a degree, list the credits or courses you completed without explaining why you didn’t finish—that’s a conversation for the interview, not the resume. 29 | 30 | ## Placement on the Resume 31 | 32 | If you’re fresh out of school or your education is a big part of what qualifies you for the job, put it at the top of your resume. For those with more experience, place it below your work history. 33 | 34 | ## General guidelines: 35 | 36 | - ✅ List your most recent degree or certification first 37 | - ✅ Include the name of the institution, degree/certification, major/field of study, and graduation date 38 | - ✅ If you have a strong academic record, include your GPA 39 | - ❌ Avoid mentioning high school education unless it's your highest level of education 40 | -------------------------------------------------------------------------------- /docs/sections/references.md: -------------------------------------------------------------------------------- 1 | # How to Handle References on Your Resume 2 | 3 | ## Should You Include References on Your Resume? 4 | 5 | In most cases, **no**. It’s generally recommended not to include references directly on your resume. Including them can make your resume look outdated and take up valuable space that could be better used to highlight your skills and achievements. Instead, prepare a separate references list that you can provide if requested. 6 | 7 | ## When to Include References 8 | 9 | There are a few situations where you might include references: 10 | 11 | - **Requested by the Job Posting**: If the job description specifically asks for references, include them on a separate page. 12 | - **Entry-Level or Career Change**: If you’re new to the job market or switching careers, references might help bridge the gap by showcasing your potential through trusted endorsements. 13 | 14 | ## Creating a Reference List 15 | 16 | If you need to provide references, here’s how to do it: 17 | 18 | - **Separate Document**: Create a dedicated “References” page that matches the style and formatting of your resume and cover letter. 19 | - **Essential Details**: For each reference, include their full name, job title, company name, phone number, email address, and a brief description of how you know them (e.g., former manager, colleague). 20 | - **Quality Over Quantity**: Three to five references are ideal. Choose people who can speak positively and knowledgeably about your work. 21 | 22 | ### Example Reference List: 23 | 24 | **References** 25 | 26 | **John Doe** 27 | Marketing Manager, ABC Corp. 28 | johndoe@abccorp.com | (123) 456-7890 29 | Former manager at XYZ Company 30 | 31 | **Jane Smith** 32 | Project Lead, DEF Solutions 33 | janesmith@defsolutions.com | (987) 654-3210 34 | Collaborated on multiple projects 35 | 36 | ## Best Practices 37 | 38 | - **Ask First**: Always get permission from your references before sharing their contact details. 39 | - **Keep Them Updated**: Inform your references when you’re applying for a job and provide them with relevant details so they can be prepared. 40 | - **Tailor Your References**: Choose references who are most relevant to the job you’re applying for. For example, if you’re applying for a management position, include someone who can speak to your leadership skills. 41 | 42 | ## Avoid These Mistakes 43 | 44 | - **No “References Available Upon Request”**: This phrase is outdated and unnecessary. Employers assume you have references available. 45 | - **Don’t Include Personal References**: Stick to professional references unless you’re specifically asked for a personal one. 46 | 47 | By handling your references properly, you ensure that they support your candidacy without cluttering your resume or making it look old-fashioned. 48 | -------------------------------------------------------------------------------- /docs/sections/projects.md: -------------------------------------------------------------------------------- 1 | # How to List Projects on Your Resume 2 | 3 | ## Learn how to write a good bullet points for your project section 4 | 5 | [The most important part of writing a project section is to write a good bullet points. Make sure to read that section first, before jumping on this section!](../guidelines/structure.md/#bullet-points) 6 | 7 | Including projects on your resume can be a game-changer, especially if you’re a recent grad, changing 8 | careers, or have experience that isn’t fully captured in your job titles. Here’s how to do it right: 9 | 10 | ## Be Selective 11 | 12 | List only the most relevant projects that showcase your skills and experience directly related to the job you’re applying for. Don’t clutter your resume with outdated or irrelevant projects that don’t highlight your current abilities. 13 | 14 | ## Provide Clear and Concise Descriptions 15 | 16 | For each project, include: 17 | 18 | - **Project Name**: Give your project a specific name or title. 19 | - **Role**: What was your role? Were you a developer, manager, or analyst? 20 | - **Purpose**: Briefly describe the goal or purpose of the project. 21 | - **Technologies Used**: List the key tools, languages, or frameworks you utilized. 22 | - **Results/Achievements**: Focus on what you accomplished. Did you improve performance, save costs, or complete the project ahead of schedule? Use quantifiable metrics where possible (e.g., “Improved load times by 20%”). 23 | 24 | ### Example: 25 | 26 | **Website Optimization Project** 27 | _Backend Developer, Fintech Solutions_ 28 | _Technologies Used: Python, PostgreSQL, Docker_ 29 | _Github URL: ..._ 30 | 31 | - Optimized database queries, reducing page load times by 30%. 32 | - Implemented caching mechanisms that decreased server load by 15%. 33 | 34 | ## Tailor Your Projects to the Job 35 | 36 | Each project should reinforce your suitability for the job you’re applying for. If a project doesn’t directly align with the job requirements, either omit it or move it to a less prominent place on your resume. Tailoring ensures that your projects help you stand out as a candidate. 37 | 38 | ## Where to Place Projects 39 | 40 | Depending on their relevance, projects can be included in different sections of your resume: 41 | 42 | - **Professional Experience**: If the project was part of your job, list it under your work experience. 43 | - **Education**: Include academic projects here if you’re a recent grad. 44 | - **Dedicated Projects Section**: If you have several impressive projects, create a separate section titled “Key Projects” or “Selected Projects.” 45 | 46 | ## General guidelines: 47 | 48 | - ✅ List your most relevant projects, ideally those that showcase your skills and expertise 49 | - ✅ Provide a brief description of each project, including its purpose, your role, and the technologies used 50 | - ✅ Focus on your contributions to the project and any notable achievements, such as meeting tight deadlines or exceeding project goals 51 | 52 | - 👍 • Optimized the database design to improve query performance, resulting in a 20% reduction in page load times 53 | - 👎 • Worked on the frontend, designing the user interface and implementing many features (Not an achievement) 54 | 55 | - ❌ Don't include irrelevant or outdated projects that don't showcase your current skills and expertise 56 | - ❌ Avoid listing incomplete or ongoing projects, unless they are particularly impressive or demonstrate a unique skill set 57 | -------------------------------------------------------------------------------- /docs/guidelines/shotgun_vs_target.md: -------------------------------------------------------------------------------- 1 | # The Shotgun Approach to Job Seeking: Why It's a Bad Idea 2 | 3 | ## What is the Shotgun Approach? 4 | 5 | The **shotgun approach** in job hunting is all about quantity over quality. You blast out your resume to as many job openings as possible, hoping that something sticks. The idea is that the more applications you send out, the higher your chances of landing a job. Sounds logical, right? Well, not really. 6 | 7 | ## Why the Shotgun Approach Fails 8 | 9 | The shotgun approach might feel productive because you’re applying to tons of jobs, but it usually backfires. Here’s why: 10 | 11 | 1. **Generic Applications Get Ignored**: Hiring managers can spot a generic resume from a mile away. If your application isn’t tailored to the specific job, it’s likely to end up in the trash. Companies want to see that you’re genuinely interested in _their_ role, not just any role. 12 | 13 | 2. **Wasted Effort**: Sending out 100 applications with little to no results is demoralizing. Instead of spreading yourself thin, focus on fewer applications with more effort put into each. 14 | 15 | 3. **You Lose Focus**: When you apply for anything and everything, you come across as unsure about what you want. Employers are looking for candidates who know what they’re after. 16 | 17 | ## A Better Alternative: The Targeted Approach 18 | 19 | Rather than spraying your resume everywhere, try the **targeted approach**: 20 | 21 | 1. **Quality Over Quantity**: Focus on roles that truly match your skills and interests. Spend time tailoring your resume and cover letter for each application. Make it clear why you’re a perfect fit for _that_ job. 22 | 23 | 2. **Research and Network**: Learn about the companies you’re applying to. If possible, connect with current employees or reach out to the hiring manager. This extra effort shows dedication and can set you apart. 24 | 25 | 3. **Highlight Relevant Skills**: Customize your resume to highlight the skills and experiences that are most relevant to the job. This makes it easier for recruiters to see why you’re a strong candidate. 26 | 27 | !!! tip "Use a Spreadsheet when targeting jobs" 28 | 29 | Keep track of the jobs you apply to, including the company name, job title, date applied, and any other relevant details. This will help you stay organized and follow up effectively. 30 | 31 | !!! tip "Key to success is to understand the job requirements" 32 | 33 | The key to a successful job application is understanding the job requirements and tailoring your resume to match them. Highlight the skills and experiences that are most relevant to the role, and show how you can add value to the company. Try to put yourself in the shoes of the hiring manager and think about what they are looking for in a candidate. This will help you create a resume that stands out and gets noticed. 34 | Additionally, I recommend to research about company's product, stack, and culture. This can help you to understand the company better and tailor your resume to match their needs. 35 | 36 | ## Final Thoughts 37 | 38 | Applying to fewer jobs with more focus and customization is a much more effective strategy than the shotgun approach. It may take more time, but the chances of landing an interview—and ultimately a job—are much higher. Remember, it’s not about applying to every job out there; it’s about applying to the right jobs with the right application. 39 | 40 | Invest your time wisely, and you’ll find the results much more satisfying. 41 | -------------------------------------------------------------------------------- /docs/sections/certifications.md: -------------------------------------------------------------------------------- 1 | # How to List Certifications & Trainings on Your Resume 2 | 3 | ## Why Certifications & Trainings Matter 4 | 5 | Certifications and trainings can be game-changers on your resume, especially if they’re directly relevant to the job. They validate your skills, show your commitment to professional growth, and can often help you stand out in a crowded field of applicants. For roles requiring specific qualifications, these certifications can be the difference between getting an interview or getting passed over. 6 | 7 | ## Where to List Certifications & Trainings 8 | 9 | ### 1. **Dedicated Section** 10 | 11 | The most common approach is to create a separate section titled “Certifications” or “Certifications & Training.” Place this section below your education or experience sections. This method works well if you have multiple certifications to showcase. 12 | 13 | ### 2. **Resume Summary** 14 | 15 | If a certification is crucial for the job, mention it in your resume summary. This draws immediate attention to it, making it clear that you have the key qualifications right from the start. 16 | 17 | ### 3. **Contact Information** 18 | 19 | For roles that require a specific certification (like PMP, CPA, or RN), you can list the certification next to your name in the contact section. This is especially effective if the job posting emphasizes the need for that certification. 20 | 21 | ### 4. **Education Section** 22 | 23 | If you obtained your certifications as part of your formal education, or if the certification is not the main focus but still relevant, include it in your education section. 24 | 25 | ## How to Format Certifications & Trainings 26 | 27 | - **Full Certification Title**: Avoid abbreviations unless they are industry-standard or mentioned in the job posting. 28 | - **Issuing Organization**: Include the full name of the certifying body. 29 | - **Date Earned/Expected**: List the date you obtained the certification, or if it’s in progress, note the expected completion date. 30 | - **Expiration Date (if applicable)**: Mention the expiration date if the certification needs renewal. 31 | - **Details (optional)**: If relevant, add a short description of the skills or knowledge gained. 32 | 33 | ### Example: 34 | 35 | **Certifications** 36 | 37 | - AWS Certified Solutions Architect – Professional, Amazon Web Services (AWS), Earned: March 2023 38 | - Certified Project Management Professional (PMP), Project Management Institute (PMI), Earned: June 2021, Expires: June 2024 39 | 40 | ## General guidelines 41 | 42 | - **Relevance is Key**: Only include certifications that are relevant to the job you’re applying for. 43 | - **Order Matters**: List your certifications in reverse-chronological order, with the most recent first. 44 | - **Be Honest**: Don’t list certifications that are expired or certifications you haven’t fully completed. 45 | - ✅ **List any relevant certificates or licenses you have obtained** 46 | - ✅ **Include the name of the certificate or license, the institution or organization that issued it, and the date it was obtained** 47 | - ✅ **Hyperlink if it's a digital certificate** 48 | - ❌ **Don't include irrelevant or outdated certificates that are not relevant to the job you are applying for** 49 | - ❌ **Don't make up or exaggerate certificates or licenses that you do not actually have** 50 | - ❌ **Don't provide incomplete or inaccurate information about your certificates or licenses, as this can be easily verified and can harm your credibility as a candidate** 51 | -------------------------------------------------------------------------------- /docs/sections/skills.md: -------------------------------------------------------------------------------- 1 | # Skills 2 | 3 | ### Hard Skill 4 | 5 | Hard skills are objective, quantifiable skills gained through training, school, or work experiences. Hard skills are often usually something that can be taught or learned. If you are a Software Engineer and you write code in Java, then Java is one of your hard skills. 6 | 7 | ### Soft Skill 8 | 9 | Soft skills are interpersonal abilities that allow people to communicate, collaborate, problem-solve, and navigate social situations. They are essential for building relationships, managing conflicts, and achieving success at work. Employers value soft skills as much as hard skills. 10 | 11 | ### What to include, and why 12 | 13 | Be very specific and careful with what you're writing in your Skills, most probably the interviewer will ask you many questions about the skills you have mentioned. Narrow your skills to your wanted Position, if the skill is unrelated, then emit it or mention it in one of your bullet points. For example, knowing PHP is not relevant for a Python AI position. 14 | 15 | When mentioning your skill, you have to support and prove that you have that skill through your resume with your bullet points, so make sure you've covered all your skills with at least 1 supportive sentence. 16 | 17 | Remember to never estimate your skill, unless you have a VALID certificate that proves it. A valid certificate is one that you have gone through an exam for, and it's widely accepted to be considered as a valid level, like AWS certificates. 18 | 19 | Remember to think twice about adding a skill to your resume, a bad example would be that you just know SQL syntax but you include PostgreSQL as your skill because you have installed it once. When you mention PostgreSQL, it means you can talk for 15 minutes about it, saying what PostgreSQL is, and how it is different from other relational DBs, and AT LEAST some theory knowledge about features of PostgreSQL such as Materialized View, window functions, recursive CTE, special data types, and special Indexes. So be very specific and careful about what you mention as Skill. 20 | 21 | ### Guidelines 22 | 23 | - ✅ **List your relevant hard skills, including programming languages, software, and tools** 24 | 25 | - 👍 Python, Django, FastAPI, Docker, Kubernetes, AWS, PostgreSQL, SQL (For example job title was Python Backend Developer) 26 | 27 | - ✅ **Exclude soft skills!** 28 | 29 | - ❌ Leadership, Teamwork, Communication 30 | 31 | - ✅ **Highlight any specialized skills or certifications to back-up your skills** 32 | 33 | - 👍 AWS (Certified Solutions Architect) - Scrum Master (Associate, Certified Scrum Master), Six Sigma Green Belt 34 | 35 | - ❌ **Avoid listing too many skills or including irrelevant ones** 36 | 37 | - 👎 Microsoft Word, Customer Service, Cooking, Guitar Playing, React (Job title was Python Backend Developer) 38 | 39 | - ❌ **Avoid listing skills you don't have, but you just installed and worked with it** 40 | 41 | - 👎 You know SQL, but you mention PostgreSQL. 42 | 43 | - ❌ **Don't exaggerate or claim to have skills you don't actually possess** 44 | - ❌ **Avoid giving ratings to your skills in terms of stars or anything, you may only backup your skill with valid certificates** 45 | 46 | - 👎 AWS Expert 47 | - 👎 Familiar with AWS 48 | - 👍 AWS (Certified Solutions Architect) 49 | 50 | - ❌ **Don't list your soft skills, you have to actually indirectly mention them through the work experience** 51 | 52 | - 👎 Adoptable, Leadership 53 | -------------------------------------------------------------------------------- /docs/sections/personal_information.md: -------------------------------------------------------------------------------- 1 | # Personal Information on Your Resume: What to Include (and What to Skip) 2 | 3 | As a general rule, first make sure that a reader won't lose any content if they print your resume. For example if providing linkedin, make sure you also write the URL next to it instead of just using hyperlinks. Keep the section clean and simple. Use icons sparingly, if at all, to avoid issues with Applicant Tracking Systems (ATS). 4 | 5 | ## What to Include 6 | 7 | ### 1. **Your job title** 8 | 9 | This is the first thing a recruiter will see, so make it count. Use the job title you’re applying for, or a similar one that reflects your skills and experience. For example, if you’re applying for a software engineering role, your title could be “Software Engineer” or “Full Stack Developer.” 10 | 11 | ### 2. **Full Name** 12 | 13 | Use your full legal name, as it appears on your ID. Avoid nicknames or shortened versions. This is your professional document, so keep it formal. 14 | 15 | ### 3. **Phone Number** 16 | 17 | List your personal mobile number, and make sure it’s accurate. Don’t include your work number—it's unprofessional and risky, especially if your current employer isn’t aware you’re job hunting. 18 | 19 | ### 4. **Email Address** 20 | 21 | Your email should be professional and include your name. Avoid quirky usernames like `coolguy123@whatever.com`. If needed, create a new email just for job applications. 22 | 23 | ### 5. **Location** 24 | 25 | You don’t need to put your full address. Just your city and state (or country) are fine. This helps recruiters know your general location without risking privacy issues. 26 | 27 | ### 6. **LinkedIn Profile** 28 | 29 | If you have a LinkedIn profile, include the URL, but make sure it’s customized and up to date. This gives recruiters more insight into your professional background. 30 | 31 | ### 7. **Github, Portfolio or Relevant Links** 32 | 33 | If you’re in a creative or tech field, linking to a portfolio, GitHub, or personal website is a good move. Just make sure it’s relevant to the job you’re applying for. 34 | 35 | ## What to Leave Out 36 | 37 | ### 1. **Social Security Number (SSN)** 38 | 39 | Never include your SSN or any other sensitive personal identification numbers. It’s not required and is a security risk. 40 | 41 | ### 2. **Date of Birth, Gender, or Marital Status** 42 | 43 | These details are unnecessary and can lead to bias. Modern resumes focus on your skills and experience, not personal characteristics. 44 | 45 | ### 3. **Photo** 46 | 47 | Unless you’re applying for a role where your appearance is directly relevant (like acting or modeling), leave your photo off. It’s not needed and can open the door to discrimination. 48 | 49 | ### 4. **Nationality or Place of Birth** 50 | 51 | Skip these unless specifically required for a job that needs citizenship verification, such as government roles. 52 | 53 | ## General rule: 54 | 55 | - ✅ **First comes the country name, second comes the city name where you live.** 56 | - ✅ **Use hyperlinks for your contract information** 57 | - ✅ **Must include LinkedIn and maybe GitHub or alternative platforms** 58 | - ✅ **A good photo is better than no photo, and no photo is better than a bad photo. A good photo is considered as you wearing professional clothes, such as a suit.** 59 | 60 | - ❌ **Don't Share personal information such as age, religion, political views, or exact address information** 61 | 62 | - 👎 A 22 year old experienced backend developer 63 | - 👍 A backend developer with 5 years experience 64 | 65 | - ❌ **Don't Use unprofessional language or tone** 66 | 67 | - 👎 Really interesting helping out with open-source stuff. Like for serious, super pumped about it 68 | - 👍 Passionate about open source contribution 69 | 70 | ## Example 71 | 72 | Check below screenshot for a sample personal information section on a resume: 73 | ![Personal Information Example](../images/location.png) 74 | -------------------------------------------------------------------------------- /docs/guidelines/common_mistakes.md: -------------------------------------------------------------------------------- 1 | Even good resumes I see, have some common mistakes in themselves, so let's go over through 10 most common mistakes one by one, if your resume has even one of these big mistakes, then it means that this repository is gonna earn you many interviews! 2 | 3 | **1. Complex language: Don't use languages and words that are too hard to understand and follow** 4 | 5 | - ❌ Executed a multitude of tasks pertaining to the optimization of manifold software paradigms. 6 | - ✅ Improved software performance by 20% 7 | 8 | **2. Buzz Words: Don't use buzzwords too much in a way that seems not appropriate and normal** 9 | 10 | - ❌ Leveraged agile methodologies in a cross-functional team to ideate scalable efficient solutions 11 | - ✅ Leveraged Agile practices to improve team collaboration 12 | 13 | **3. Many invalid metrics and statistics: Sometimes people rate their resumes with AI tools, which results in having many invalid numbers, remember in interview day you're responsible for all numbers and percentages that are inside your resume, so don't overdo this.** 14 | 15 | - ❌ Increased code performance by 200% (without context or evidence) 16 | - ✅ Optimized SQL queries by creating a caching layer, reducing load time by 50%, approved by A/B testing for the release candidate 17 | 18 | **4. Unrelated achievements: The person who gonna hire you doesn't care in the first place what was your personal life achievement in most scenarios, so make sure to keep your resume related to the job you're trying to apply for.** 19 | 20 | - ❌ Increase sales and turn-over with ... business strategy (whatever, you're a developer! and your resume is for developer, not a business strategist/sale) 21 | - ✅ Designed and implemented a caching solution that improved system latency 22 | 23 | **5. Invalid technical statements: That's true! I've seen people saying they optimized their code by following clean code principles, which is not technically correct and possible, because that's just 2 different matters! So make sure that the statement and claim you have in your resume is technically correct** 24 | 25 | - ❌ Optimized code by following clean code principles 26 | - ✅ Refactored legacy code to improve readability and maintainability 27 | 28 | **6. Be ATS Friendly: If your resume isn't ATS friendly, even if it's the best in the world, it won't even be considered. Make sure you read the ATS section and apply the recommended solutions to your resume.** 29 | 30 | - ❌ You're applying for "ReAct Frontend Position" but in your CV your title is "front-end" and React isn't mentioned. 31 | - ✅ You know how ATS works, and you write your resume in a way to trigger ATS to be your mate, not your enemy. 32 | 33 | **7. Bad Written Skills: make sure you read the skill section, I have seen people mentioning many skills that they don't have any idea about. Writing your skill section carefully and nicely will increase the chance of getting an interview and also getting the job offer!** 34 | 35 | - For Python Backend Developer Position: 36 | - ❌ Expert in Java, C++, Python, Machine Learning, Maria DB, PostgreSQL, MySQL, FastAPI, Django, SQL, Spring Boot, Docker 37 | - ✅ Python, Docker, Django, FastAPI, SQL 38 | 39 | **8. About Me is not a documentary film: I've seen people overdoing in About me section, or even in some cases TOO REGULAR about me, which is more likely to be 'ABOUT ANY PYTHON DEVELOPER' rather than about being you, so make sure you read the about me section if you don't have any idea how specific and what details you should write.** 40 | 41 | **9. They didn't use bullet point! that's like resume-101, if your resume doesn't have bullet point then you're gonna be 99.99% rejected! make sure to go through the repository to see what a good bullet point means** 42 | 43 | - ❌ Writing paragraphs that make it hard to quickly identify key information 44 | 45 | **10. Bad/Invalid Structure: Some people don't follow the general resume style and convention, which results in rejection. Make sure your resume is standard, just write it using a website resume creator! Some have been offered at the bottom of the repository.** 46 | -------------------------------------------------------------------------------- /mkdocs.yml: -------------------------------------------------------------------------------- 1 | site_name: Awesome Resumes 2 | site_description: Create resumes and CV with awesome-resumes. Practical tips, guidelines, guide, examples and documentation for all IT fields 3 | repo_url: https://github.com/ManiMozaffar/awesome-resumes 4 | site_url: https://ManiMozaffar.github.io/awesome-resumes 5 | site_author: Mani Mozaffar 6 | repo_name: ManiMozaffar/awesome-resumes 7 | copyright: Maintained by Mani Mozaffar. 8 | 9 | theme: 10 | name: "material" 11 | palette: 12 | - media: "(prefers-color-scheme)" 13 | toggle: 14 | icon: material/link 15 | name: Switch to light mode 16 | - media: "(prefers-color-scheme: light)" 17 | scheme: default 18 | primary: indigo 19 | accent: indigo 20 | toggle: 21 | icon: material/toggle-switch 22 | name: Switch to dark mode 23 | - media: "(prefers-color-scheme: dark)" 24 | scheme: slate 25 | primary: black 26 | accent: indigo 27 | toggle: 28 | icon: material/toggle-switch-off 29 | name: Switch to system preference 30 | 31 | features: 32 | - navigation.tabs 33 | - navigation.instant 34 | - content.code.annotate 35 | - content.tabs.link 36 | - content.code.copy 37 | - announce.dismiss 38 | - search.suggest 39 | - search.highlight 40 | # logo: assets/logo-white.svg 41 | # favicon: assets/favicon.png 42 | 43 | edit_uri: "" 44 | 45 | # https://www.mkdocs.org/user-guide/configuration/#validation 46 | validation: 47 | omitted_files: warn 48 | absolute_links: warn 49 | unrecognized_links: warn 50 | 51 | extra: 52 | navigation: 53 | next: true 54 | previous: true 55 | 56 | extra_css: 57 | - "extra/tweaks.css" 58 | 59 | markdown_extensions: 60 | - toc: 61 | permalink: true 62 | - admonition 63 | - pymdownx.details 64 | - pymdownx.extra 65 | - pymdownx.superfences 66 | - pymdownx.highlight: 67 | anchor_linenums: true 68 | - pymdownx.inlinehilite 69 | - pymdownx.snippets 70 | - attr_list 71 | - md_in_html 72 | 73 | plugins: 74 | - search: 75 | - mkdocstrings: 76 | handlers: 77 | python: 78 | options: 79 | members_order: source 80 | separate_signature: true 81 | docstring_options: 82 | ignore_init_summary: true 83 | merge_init_into_class: true 84 | show_signature_annotations: true 85 | signature_crossrefs: true 86 | 87 | - mkdocs-simple-hooks: 88 | hooks: 89 | on_pre_build: "docs.plugins:on_pre_build" 90 | on_files: "docs.plugins:on_files" 91 | on_page_markdown: "docs.plugins:on_page_markdown" 92 | 93 | nav: 94 | - Documentation: 95 | - Getting Started: index.md 96 | - Definitions: definitions.md 97 | - Resume Structure: guidelines/structure.md 98 | - Common Mistakes: guidelines/common_mistakes.md 99 | - Application Tracking System(ATS): guidelines/ats.md 100 | - Shotgun vs target approach: guidelines/shotgun_vs_target.md 101 | 102 | - Mandatory Resume Sections: 103 | - Personal Information: sections/personal_information.md 104 | - Summary: sections/summary.md 105 | - Skills: sections/skills.md 106 | - Work Experience: sections/work_experience.md 107 | - Optional Resume Sections: 108 | - Education: sections/education.md 109 | - Projects: sections/projects.md 110 | - References: sections/references.md 111 | - Certifications & Trainings: sections/certifications.md 112 | - Publications & Conferences: sections/publications.md 113 | - Volunteer Experience: sections/volunteer_experience.md 114 | - Awards: sections/awards.md 115 | - Memberships: sections/memberships.md 116 | - Languages: sections/languages.md 117 | 118 | - Templates: guidelines/templates.md 119 | - After Sending Resume: guidelines/after_sending_resume.md 120 | 121 | - Samples: samples.md 122 | -------------------------------------------------------------------------------- /docs/sections/publications.md: -------------------------------------------------------------------------------- 1 | # How to List Publications & Conferences on Your Resume 2 | 3 | ## Why Publications & Conferences Matter 4 | 5 | Including publications and conferences on your resume is essential if you’re in a field where research, thought leadership, or subject matter expertise is valued. This is especially true in academia, scientific fields, and certain industries like tech and healthcare. They highlight your contributions to your field and showcase your ability to communicate knowledge effectively. 6 | 7 | ## Where to List Publications & Conferences 8 | 9 | ### 1. **Dedicated Section** 10 | 11 | Create a separate section titled "Publications" or "Publications & Conferences." This section should be placed after your education or work experience. It’s important to highlight this section if you have multiple entries that are relevant to the job. If it's in this section, you can have multiple bullet points for each publication or conference, from your achievement. 12 | 13 | ### 2. **Within the Experience Section** 14 | 15 | For a more integrated approach, include key publications and presentations directly within your work experience entries. This is particularly effective if the publication or conference is directly tied to a specific role you’ve held.If it's in this section, you can have one or very few bullet point(s) for each publication or conference, from your achievement. 16 | 17 | ### 3. **In the Education Section** 18 | 19 | If you’re a recent graduate or have academic publications, placing them under your education section can be appropriate. This is especially true if the publications are directly related to your academic work, like a thesis or dissertation. If it's in this section, you can have one or very few bullet point(s) for each publication or conference, from your achievement. 20 | 21 | ## How to Format Publications & Conferences 22 | 23 | ### Publications 24 | 25 | - **Title of the Work**: Use the full title of your publication. 26 | - **Where It Was Published**: Include the journal, book, or website. 27 | - **Date of Publication**: Include the month and year. 28 | - **Additional Details**: Mention co-authors, impact factors, or page numbers where relevant. 29 | 30 | #### Example: 31 | 32 | **Doe, J., & Smith, A. (2023).** The Future of AI in Healthcare. _Journal of Medical Informatics_, 12(3), 45-60. 33 | 34 | ### Conferences 35 | 36 | - **Your Role**: Specify whether you were a presenter, panelist, or keynote speaker. 37 | - **Title of Your Presentation**: Use the full title. 38 | - **Name of the Conference**: Include the full name of the conference. 39 | - **Location and Date**: Specify where and when the conference took place. 40 | - **Additional Details**: Include details like the conference proceedings title if published. 41 | 42 | #### Example: 43 | 44 | **Presenter, "AI in Modern Diagnostics,"** HealthTech Conference, San Francisco, CA, March 2023. 45 | 46 | ## Best Practices 47 | 48 | - **Relevance**: Only list publications and conferences relevant to the job you’re applying for. Tailoring this section to match the job description can make a significant impact. 49 | - **Cite Properly**: Use a consistent citation style, such as APA, depending on your industry. Keep it professional and avoid informal references like blog posts unless highly relevant. 50 | - **Reverse Chronological Order**: Start with your most recent publications and conferences first. 51 | - ✅ **Include any relevant publications, such as research papers, articles or books** 52 | - ✅ **List the title of the publication, the publication name, date of publication, and your role in the publication** 53 | 54 | - 👍 Title: "Machine Learning Techniques for Sentiment Analysis" 55 | - 👍 Publication: Journal of Artificial Intelligence Research 56 | - 👍 Date: January 2021 57 | - 👍 Role: Co-author 58 | 59 | - ✅ **Include any relevant links or citations to verify your publication validity** 60 | - ❌ **Don't include irrelevant publications, such as personal blog posts or unrelated articles** 61 | - ❌ **Don't include publications that have not been finalized yet** 62 | - ❌ **Don't include publications that are outdated or no longer relevant to your current field** 63 | -------------------------------------------------------------------------------- /docs/definitions.md: -------------------------------------------------------------------------------- 1 | ## HR 2 | 3 | **HR**: Human Resources. The department responsible for hiring and managing employees. HR staff often screen resumes before passing them on to the hiring manager. 4 | 5 | ## Six Second Impression 6 | 7 | **Six Second Impression**: Recruiters often spend just six seconds scanning a resume, so it needs to be clear, concise, and easy to read. Use bullet points, action verbs, and a simple layout to highlight your key skills and achievements quickly. Tailor your resume to the job to make those seconds count. 8 | 9 | ## ATS (Applicant Tracking System) 10 | 11 | An **Applicant Tracking System (ATS)** is software that filters resumes based on keywords before a human ever sees them. To beat the ATS, use relevant keywords from the job description and avoid fancy formatting that might mess with the software. 12 | 13 | ## Action Verbs 14 | 15 | **Action Verbs** are strong, dynamic words that describe your accomplishments, like "led," "designed," or "managed." They make your experience sound more impactful. 16 | 17 | ## Tailoring 18 | 19 | **Tailoring** your resume means customizing it for each job by emphasizing the skills and experiences that match the specific role. It’s how you make your resume stand out to both the ATS and the human recruiter. 20 | 21 | ## Resume Sections 22 | 23 | ### Personal Information 24 | 25 | This is the basic stuff. Name, phone number, email, LinkedIn profile, and maybe a GitHub link if you’re a techie. Keep it simple and easy to find. 26 | 27 | ### Summary 28 | 29 | This is your elevator pitch. A quick snapshot of who you are, what you do, and what you bring to the table. Should be short, punchy, and make someone want to keep reading. 30 | 31 | ### Skills 32 | 33 | List your main skills here. Hard skills like programming languages, tools, and technologies. Soft skills like teamwork or leadership go here too, but keep the focus on what’s relevant for the job. 34 | 35 | ### Work Experience 36 | 37 | This is where you show off what you’ve done. List your past jobs, starting with the most recent. Focus on what you achieved, not just what you did. Use bullet points for easy reading. 38 | 39 | ### Education 40 | 41 | Where you studied and what you studied. Include your degree(s), school name, and graduation date. If you’re still studying, mention your expected graduation date. 42 | 43 | ### Projects 44 | 45 | Highlight some cool stuff you’ve worked on outside of your main job. Side projects, open-source contributions, anything that shows your passion and initiative. Keep it relevant to the job you’re applying for. 46 | 47 | ### References 48 | 49 | Some people like to add this, but honestly, "References available upon request" is fine. Don’t waste space unless you know they’ll ask for it upfront. 50 | 51 | ### Certifications & Trainings 52 | 53 | Show off any extra qualifications you have. Online courses, certifications, workshops—anything that adds value and shows you’re committed to growing your skills. 54 | 55 | ### Publications & Conferences 56 | 57 | If you’ve written articles, papers, or spoken at conferences, mention them here. It’s not for everyone, but if it’s relevant, flaunt it. 58 | 59 | ### Volunteer Experience 60 | 61 | If you’ve done some meaningful volunteer work, especially in a leadership role or in a field related to your job, put it here. It’s great for showing you’re well-rounded and community-minded. 62 | 63 | ### Awards 64 | 65 | Brag about any awards or recognitions you’ve received. Keep it relevant and recent, though. Nobody cares about that spelling bee you won in third grade. 66 | 67 | ### Courses 68 | 69 | If you’ve taken any courses that are relevant but not part of your main degree, list them here. It shows you’re always learning and improving. 70 | 71 | ### Memberships 72 | 73 | If you’re part of any professional organizations or clubs, put them here. It can help you stand out, especially if they’re well-regarded in your field. 74 | 75 | ### Trainings 76 | 77 | Kind of like the Certifications section, but more focused on professional development you’ve done on the job. Include workshops, in-house training, or seminars. 78 | 79 | ### Languages 80 | 81 | List any languages you speak fluently. This can be a big plus if the job involves international work or if the company has a diverse team. 82 | -------------------------------------------------------------------------------- /docs/index.md: -------------------------------------------------------------------------------- 1 | # Getting Started with Awesome Resumes 2 | 3 | Welcome to the **Awesome Resumes** project! This guide will walk you through how to use this repository to craft a professional resume. Whether you're entering the job market for the first time or are an experienced professional, the quality of your resume is key to securing interviews and job offers. 4 | 5 | !!! tip "Support this project!" 6 | 7 | If you find this project helpful, please consider giving it a star on [GitHub](https://github.com/ManiMozaffar/awesome-resumes). It makes other people discover this project and benefit from it. It also motivates me to keep maintaining it! 8 | 9 | !!! danger "Scary fact!" 10 | 11 | Did you know that only 1 in 50 resumes get an interview? That's a 2% chance of getting an interview. This is why it's crucial to have a well-crafted resume that stands out from the rest. 12 | 13 | ## Why This Project Matters 14 | 15 | In today’s competitive job market, a well-crafted resume is essential. It’s not just about listing your skills and experiences; how you present that information can make or break your chances of getting noticed. You can be a very senior person, with years of experience, but with a poorly self presentation, you can be easily overlooked. Or you may be a junior/intern with a very well crafted resume, and you can be easily noticed. This is why it's crucial to have a well-crafted resume. 16 | 17 | ### The Job Search Formula 18 | 19 | Your chances of getting a job can be broken down into a simple formula: 20 | 21 | Chance of Getting a Job = Location _ Quality of CV _ Quantity of Applications 22 | 23 | - **Location**: The job market varies by region, industry, and even by company. Your location affects the number of opportunities available. 24 | - **Quality of CV**: A strong, well-designed resume increases your chances of landing interviews. This is where this project can have the most significant impact. 25 | - **Quantity of Applications**: Applying to more jobs increases your chances, but only if those applications are well-targeted and relevant. 26 | 27 | You may not be very in control of the location, But you can control the quality of your CV and the quantity of applications. Make sure to find the right balance between quality and quantity, and you will increase your chances of getting a job. 28 | 29 | This project focuses on improving the **quality of your CV**, giving you the best shot at getting your foot in the door. 30 | 31 | ## Understanding the Job Search Process 32 | 33 | The image below, `chance_of_getting_job.png`, provides a visual representation of the job search process: 34 | 35 | ![Chance of Getting a Job](images/chance_of_getting_job.png) 36 | 37 | ### Diagram Explanation 38 | 39 | The diagram shows the typical steps in the job application process, each representing a hurdle you must overcome: 40 | 41 | 1. **Always Get Rejected**: This is the initial stage where poor resume quality results in rejections, often without any feedback. Here, it's crucial to ask, "How can I improve my parameters to get an interview?" This is where our project helps the most. 42 | 2. **Rejected in HR Interview**: If you do get an interview, the next challenge is impressing non-technical HR staff. You must present yourself effectively, understanding what HR looks for. 43 | 3. **Fail in Technical Interview**: Even if you pass the HR stage, the technical interview is the next hurdle. This requires technical proficiency beyond what’s on your resume. 44 | 4. **Get a Job Offer**: Finally, if you succeed in both interviews, you get a job offer. 45 | 46 | ### Project Scope 47 | 48 | This repository primarily helps with the **first stage**: getting you past the initial resume screen and into the interview room. While it’s up to you to clear the HR and technical interviews, the quality of your resume is what will get you those opportunities. 49 | 50 | ## Next Steps 51 | 52 | 1. **Understand the definition**: Understand the definitions and words used in the entire guidelines. 53 | 2. **Learn about structure**: Learn about the structure of the resume and how to organize your content. There is a separate guide for this. 54 | 3. **Learn about each section individually in deep**: Learn about each section in detail and how to write them. There is a separate guide for each section. 55 | 4. **Understand strategies**: Understand the strategies to make your resume stand out. 56 | 5. **Start crafting your resume**: Pick up a template and start crafting your resume. 57 | 58 | Let's get started and take the first step towards your next job opportunity! 59 | -------------------------------------------------------------------------------- /docs/sections/summary.md: -------------------------------------------------------------------------------- 1 | # Writing a Killer Resume Summary 2 | 3 | Your resume summary is **the first thing** most recruiters see, and often it’s the only part they focus on before deciding whether to keep reading or toss your resume aside. That means your summary needs to hit hard, be unique to you, and set you apart from the pack. 4 | 5 | ## What Is a Resume Summary? 6 | 7 | A resume summary is a brief paragraph (usually 3-4 sentences) at the top of your resume that highlights your key skills, experience, and what makes you stand out as a candidate. It’s your elevator pitch—quick, impactful, and straight to the point. 8 | 9 | ## Why Is It So Important? 10 | 11 | Most HR professionals spend only a few seconds scanning a resume, and your summary is their first impression. If your summary is vague or generic, they’ll move on. On the other hand, if it’s specific and backed by the rest of your resume, it can hook them in and make them want to learn more about you. 12 | 13 | ## How to Write a Great Summary 14 | 15 | ### 1. **Make It Personal and Specific** 16 | 17 | Your summary should reflect who _you_ are, not just someone in your industry. Avoid clichés like "hard-working" or "team player"—these can be stuck onto anyone's resume. Instead, focus on what makes you different. Mention unique skills, experiences, or achievements that showcase your strengths. 18 | 19 | ### 2. **Support It with Your Resume** 20 | 21 | If you describe yourself as "curious" or "innovative," make sure the rest of your resume backs that up with concrete examples. Your summary should be a preview of the details that follow, not just a list of buzzwords. 22 | 23 | ### 3. **Tailor It to the Job** 24 | 25 | One-size-fits-all doesn’t work here. Customize your summary for each job you apply to by highlighting the skills and experiences most relevant to that specific role. This shows recruiters you’re serious about the position and not just shotgun-applying. 26 | 27 | ## Common Mistakes to Avoid 28 | 29 | - **Being Too Vague**: Don’t just say you’re "experienced" or "skilled." Specify what you’ve done, how you did it, and the results. 30 | - **Overloading with Keywords**: While it’s important to use keywords from the job description, don’t overstuff them. It should still read naturally 31 | - **Copying Others**: Your summary should be unique. Don’t lift phrases from other resumes or online examples without making them your own. **Your summary defines you, and only you!** 32 | 33 | ## A Perfect Example 34 | 35 | I think my summary is very solid. Check the below screenshot. 36 | ![Resume Summary Example](../images/summary.png) 37 | 38 | ### Understanding why? 39 | 40 | Let's walk through the example above: 41 | 42 | - **Self driven:** I have no educational background in computer science, but I taught myself to code, and this proves I’m self-driven. 43 | - **Dedicated to open source projects:** Through my CV, I have shown 5 open source project I have worked on. 44 | 45 | ??? info "Expand to see my open source contributions" 46 | 47 | ![image](../images/projects.png) 48 | 49 | - **Proactively communicates...:** In my latest working working experience as you can see in below screenshot, I have showcased that I have been actively communicating with Operation team. 50 | 51 | ??? info "Expand to see my last working experience" 52 | 53 | ![image](../images/last_working_experience.png) 54 | 55 | - **Curious, and willingly takes on tasks beyond the usual scope:** I have showcased this in my entire resume. From the above screenshot, you can see me working on Crawlers, security, data science, business intelligence, devops, and more. 56 | 57 | - **Thrives on solving complex problems with creative thinking and an automation-first approach:** I have showcased this in my entire resume again, where I automate a lot of workflows even applying for jobs (I wrote a linkedin bot that does this). You can see the screenshot above (either work experience or open source contributions). 58 | 59 | - **Integrating observability tools to ensure ongoing system reliability:** I have showcased using Signoz, opentelemetry, prometheus and grafana in my resume. You can find one example in last work experience which I already showed you above. 60 | 61 | !!! tip "Why this summary is unique to me?" 62 | 63 | Can you put these into your own summary? Probably not. So that's why this summary is very unique to me, and only me. It's not a copy-paste from somewhere else, and it's not a generic summary that could apply to anyone. It's specific, personal, and backed by the rest of my resume. 64 | 65 | ## Some General Tips 66 | 67 | - ✅ **Your summary must only defines you, and only you! Check the example to understand this better** 68 | - ✅ **Write about 2-4 lines** 69 | - ✅ **from third person view perspective** 70 | 71 | - 👎 I am a developer a backend developer with 5 years experience cc 72 | - 👍 A backend developer with 5 years experience 73 | 74 | - ❌ **Don't Share personal information such as age, religion, political views, or exact address information** 75 | 76 | - 👎 A 22 year old experienced backend developer 77 | - 👍 A backend developer with 5 years experience 78 | 79 | - ❌ **Don't Include irrelevant information or hobbies** 80 | 81 | - 👎 Passionate about psychology 82 | - 👍 Passionate about open source contribution 83 | 84 | - ❌ **Don't Use unprofessional language or tone** 85 | 86 | - 👎 Really interesting helping out with open-source stuff. Like for serious, super pumped about it 87 | - 👍 Passionate about open source contribution 88 | 89 | - ❌ **Don't put the focus on only your skills, this is general information and a quick summary of your resume not your skill lists** 90 | - ❌ **Avoid mentioning any soft skills directly or indirectly; unless it's been under the hood of your job title (Lead developer, CTO, Founder, etc)** 91 | - ### Work Experience 92 | 93 | ## Final Thoughts 94 | 95 | Your resume summary is like a handshake at the start of an interview—it sets the tone. Make it count by being specific, personal, and backed by the rest of your resume. Tailor it to each job, and avoid generic statements that could apply to anyone. Remember, this is your chance to make a lasting impression in just a few lines. 96 | -------------------------------------------------------------------------------- /docs/guidelines/structure.md: -------------------------------------------------------------------------------- 1 | ### Introduction 2 | 3 | [Content wise](#content-wise-styling), and [Visualization wise](#visualization-styling), there are different category of resume. 4 | 5 | Combination of all content and visualize category, would produce different structure. However, I'd go with Chronological vertical one column resume, as an example. 6 | 7 | A very good example for all guidelines you'll read in this page: 8 | ![example_for_structure.png](../images/example_for_structure.png) 9 | 10 | ### General guideline and formatting 11 | 12 | - ✅ First comes your name, then your job title on top of your resume, with big fonts 13 | - ✅ Use black color for your fonts only, titles can be in another color but the main's context must be in black. 14 | - ✅ Save your resume with your name, alongside the day you generated it, this can help the recruiter understand that you have customized your resume for the job. For example, you may write ManiMozaffar_2022-07-25 15 | - ✅ First comes the position, second comes the company's name. Make sure to follow that order. Same goes for university, first degree's subject's name, second university's name 16 | - ✅ Date is better to be written as MM/YYYY all around your resume, like 02/2020 17 | - ✅ Use between 475 to 600 words in your resume 18 | - ✅ Generally write your texts in bullet points except for summary section. 19 | - ✅ Best resume font sizes are: 11-12pt for normal text, 14-16pt for section titles and headers 20 | - ✅ Better write your resume in 1 page if you have less than 7-10 years experience, otherwise write 2 pages 21 | - ✅ Use proper spacing, so that it'd be friendly to the eye when reading. Dates and name of companies you worked in, and each sections should be recognizable with one glance. 22 | - ✅ Include relevant experience, even if it is not paid work 23 | - ✅ Include a summary or objective statement at the top of your resume. This can help the hiring manager quickly understand what you have to offer and why you are a good fit for the job. Follow the section related ot it to understand how to write one. 24 | - ✅ Make sure your jobs don't overlap with each other or other experiences, such as teaching, the only overlap that is allowed is Work Experience with Education. 25 | - ✅ Start with your most recent or current position and work backward 26 | - ❌ Don't list every job you've ever had - only include relevant experience that showcases your skills and achievements 27 | - ✅ Emphasize your unique related value proposition or memberships 28 | 29 | - 👍 Contributed to the development of several open-source Python projects, including Django Rest Framework and Pandas. 30 | 31 | - ✅ Write minimum 2 bullet points, maximum 6-7 per job. If you have more than 6-7, then you should consider merging them. 32 | 33 | ### Example Structure 34 | 35 | A Chronological vertical one per row usually follow such order: 36 | 37 | 1. Your personal data 38 | 2. Summary 39 | 3. Skills 40 | 4. Working experience 41 | 5. Education Section (if you have) 42 | 6. Other optional sections (projects, awards, certificates, etc) 43 | 7. Referral Letter if you have (Usually in second page) 44 | 45 | !!! tip "Orders within one section" 46 | 47 | Per each section, you might have multiple entry. For example working experience, you might have worked for few companies. 48 | The order for each row should be by date, your latest entry should be on top. That means your recent job should be the first work experience. 49 | 50 | ### Bullet points 51 | 52 | #### Definition 53 | 54 | In typography, a bullet or bullet point, •, is a typographical symbol or glyph used to introduce items in a list. For example: • Item 1 • Item 2 • Item 3 The bullet symbol may take any of a variety of shapes, such as circular, square, diamond or arrow. 55 | 56 | #### Rules to follow when writing bullet points 57 | 58 | - ✅ **VERY IMPORTANT**: Use bullet points to list your responsibilities and achievements for each job, you can testify this by asking how and why, and if it answers then it's a good responsibility and achievements. So a task is something that's either one of your normal job duties, something you've bee assigned to handle, or something you've chosen to do yourself. An achievement is something you've accomplished or have been recognized for. 59 | 60 | - 👎 • Refactored the backend's code (Why?) 61 | - 👎 • Improved better coding readability, easier maintenance and development (How?) 62 | - 👍 • Refactored the backend's code for better coding readability, easier maintenance and development 63 | 64 | - 👎 Answered customer's calls everyday, and resolved a thousand ticket (day-to-day task) 65 | - 👎 Implement a notification system (one time task) 66 | - 👍 Implemented a notification system that increased user engagement by 20% (achievement) 67 | 68 | - ✅ Use correct grammar and professional language; use Grammarly to find grammar mistakes. 69 | - ✅ Apply past tense and passive voice for all sentences except in the summary/about me section. 70 | - ✅ Limit each bullet point to one or two lines, no more. 71 | - ✅ Use third person view when writing your resume. 72 | 73 | - 👎 "I am a developer, a backend developer with 5 years of experience." 74 | - 👍 "A backend developer with 5 years of experience." 75 | 76 | - ✅ Use proper action verbs while avoiding weak verbs such as `did`. 77 | 78 | - 👎 "Created a new software system that increased productivity by 20%." 79 | - 👍 "Implemented a new software system that increased productivity by 20%." 80 | 81 | - ✅ Quantify your achievements. Use numbers and percentages to highlight your achievements and show the impact of your work. **AVOID BULLSHITING NUMBERS!** Make sure you have a very strong argument that can justify the number in your resume, and also during interview. **Usually resumes with too many numbers would be instantly rejected, so again don't overdo it!** 82 | - ✅ **Remember that the HR team will first read your bullet points, if it's too hard to follow, then it's not a good one. Make sure the achievements are understandable to HRs. For example, I provided enough information regarding why I did it (efficiency and high volumes for systematized transactions) and how I did it (PostgreSQL replication, indexing, and materialized views). The how should be enough information to satisfy a technical person, and why should be enough information to satisfy a non-technical person such as HR** 83 | 84 | - 👎 • Used replication, indexing, and materialized views 85 | - 👍 • Constructed a systematized transaction system with PostgreSQL replication, indexing, and materialized views, for efficiency and high volumes 86 | 87 | - ❌ Avoid using synonym alongside each other. Be very mindful about the context you're writing, don't spam words. Try to be straight to point. 88 | 89 | - 👎 A collaborator team-player backend developer with 5 years industry experience in backend engineering. 90 | - 👍 A team-player backend developer with 5 years experience. 91 | 92 | - ❌ Do not use vague or unclear language. Your resume should be written in clear and concise language that accurately conveys your skills and experience. Avoid using overly technical terms or jargon that may not be familiar to the reader. 93 | - ❌ Avoid using emoji or too colorful designs as it decreases the 6 second impression, keep your resume simple 94 | - ❌ Avoid using chatGPT, as AI text is detected by ATS. 95 | - ❌ Don't exaggerate or embellish your accomplishments, but also don't be too modest 96 | 97 | - 👎 • Single-handedly developed and launched a new product that generated millions in revenue 98 | - 👍 • Collaborated with a team to develop and launch a new product that generated significant revenue 99 | 100 | - ❌ Avoid using vague or generic language, and be specific about what you achieved 101 | 102 | - 👎 • Managed a project to completion 103 | - 👍 • Successfully led a cross-functional team to complete a project ahead of schedule and under budget, resulting in a 20% increase in productivity 104 | 105 | ### Content-wise styling 106 | 107 | There are several different styles of resumes, each with their strengths and weaknesses. 108 | ![Quick Overview](../images/resume_types.png) 109 | 110 | Here are some of the most common resume styles 111 | 112 | #### Chronological 113 | 114 | This style lists your work experience in reverse chronological order, starting with your most recent position, and follows your achievements for each role. It is a traditional format that is easy to read and understand, but may not be ideal for candidates without employment history or those who have changed careers. 115 | 116 | ??? info "Click to Expand the Example Chronological Resume" 117 | 118 | ![Example](../images/chronological.png) 119 | 120 | #### Functional 121 | 122 | This style emphasizes your base skills, rather than your work experience. It can be useful for candidates who are changing careers to irrelevant field or have no work experience, but may not be ideal for those with a strong work history. 123 | 124 | !!! danger "Don't use Functional if you can" 125 | 126 | It's best to avoid functional resume. Only use it if you're applying for an internship and you have no previous working experience/similar projects you can showcase. 127 | They're not ATS friendly, and HRs and technical people avoid them, because due to high competition they prefer reviewing with candidate who can actually present some core job skills. 128 | 129 | ??? info "Click to Expand the Example Functional Resume" 130 | 131 | ![Example](../images/functional_type.png) 132 | 133 | #### Combination 134 | 135 | This style combines elements of the chronological and functional styles, highlighting both your skills and work experience. It can be a good choice for candidates with diverse experience or those who are looking to showcase specific achievements. 136 | 137 | !!! danger "Don't use Combination if you can" 138 | 139 | Some people have very limited working experience, hence make it harder for them to write one page chronological resume. Combination may fit them best. from HR or ATS perspective, it's way more preferred than Functional. But it's still not very common, and most people use Chronological, which works the best in my opinion. 140 | 141 | ### Visualization styling 142 | 143 | ![Example](../images/one_column_vs_two_column.png) 144 | 145 | #### One Column 146 | 147 | This style uses one section per row. 148 | It features a single column of information that is organized in a clear and easy-to-read format. 149 | 150 | ??? info "Read also about EuroPass CV" 151 | 152 | Europass is a European Union initiative to increase transparency of qualifications and mobility of citizens in Europe. It aims to make a person's skills and qualifications clearly understood throughout Europe 153 | 154 | ![Example](../images/euro_pass_cv.png) 155 | 156 | #### Two Column 157 | 158 | This style uses two section per row. 159 | 160 | !!! tip "My personal option regarding which styling option to go with" 161 | 162 | Between these two styles, the vertical resume with one column is often considered the best choice. It is a modern and visually appealing format that is easy to read and understand. The single column layout keeps the information organized and allows for clear section headings, making it easy for recruiters to quickly scan the resume for relevant information. 163 | -------------------------------------------------------------------------------- /uv.lock: -------------------------------------------------------------------------------- 1 | version = 1 2 | requires-python = ">=3.12" 3 | 4 | [[package]] 5 | name = "awesome-resume" 6 | version = "0.1.0" 7 | source = { editable = "." } 8 | dependencies = [ 9 | { name = "mkdocs" }, 10 | { name = "mkdocs-material" }, 11 | { name = "mkdocs-material-extensions" }, 12 | { name = "mkdocs-simple-hooks" }, 13 | { name = "mkdocstrings", extra = ["python"] }, 14 | { name = "rich" }, 15 | { name = "ruff" }, 16 | ] 17 | 18 | [package.metadata] 19 | requires-dist = [ 20 | { name = "mkdocs", specifier = ">=1.6.0" }, 21 | { name = "mkdocs-material", specifier = ">=9.5.33" }, 22 | { name = "mkdocs-material-extensions", specifier = ">=1.3.1" }, 23 | { name = "mkdocs-simple-hooks", specifier = ">=0.1.5" }, 24 | { name = "mkdocstrings", extras = ["python"], specifier = ">=0.25.2" }, 25 | { name = "rich", specifier = ">=13.7.1" }, 26 | { name = "ruff", specifier = ">=0.6.2" }, 27 | ] 28 | 29 | [[package]] 30 | name = "babel" 31 | version = "2.16.0" 32 | source = { registry = "https://pypi.org/simple" } 33 | sdist = { url = "https://files.pythonhosted.org/packages/2a/74/f1bc80f23eeba13393b7222b11d95ca3af2c1e28edca18af487137eefed9/babel-2.16.0.tar.gz", hash = "sha256:d1f3554ca26605fe173f3de0c65f750f5a42f924499bf134de6423582298e316", size = 9348104 } 34 | wheels = [ 35 | { url = "https://files.pythonhosted.org/packages/ed/20/bc79bc575ba2e2a7f70e8a1155618bb1301eaa5132a8271373a6903f73f8/babel-2.16.0-py3-none-any.whl", hash = "sha256:368b5b98b37c06b7daf6696391c3240c938b37767d4584413e8438c5c435fa8b", size = 9587599 }, 36 | ] 37 | 38 | [[package]] 39 | name = "certifi" 40 | version = "2024.7.4" 41 | source = { registry = "https://pypi.org/simple" } 42 | sdist = { url = "https://files.pythonhosted.org/packages/c2/02/a95f2b11e207f68bc64d7aae9666fed2e2b3f307748d5123dffb72a1bbea/certifi-2024.7.4.tar.gz", hash = "sha256:5a1e7645bc0ec61a09e26c36f6106dd4cf40c6db3a1fb6352b0244e7fb057c7b", size = 164065 } 43 | wheels = [ 44 | { url = "https://files.pythonhosted.org/packages/1c/d5/c84e1a17bf61d4df64ca866a1c9a913874b4e9bdc131ec689a0ad013fb36/certifi-2024.7.4-py3-none-any.whl", hash = "sha256:c198e21b1289c2ab85ee4e67bb4b4ef3ead0892059901a8d5b622f24a1101e90", size = 162960 }, 45 | ] 46 | 47 | [[package]] 48 | name = "charset-normalizer" 49 | version = "3.3.2" 50 | source = { registry = "https://pypi.org/simple" } 51 | sdist = { url = "https://files.pythonhosted.org/packages/63/09/c1bc53dab74b1816a00d8d030de5bf98f724c52c1635e07681d312f20be8/charset-normalizer-3.3.2.tar.gz", hash = "sha256:f30c3cb33b24454a82faecaf01b19c18562b1e89558fb6c56de4d9118a032fd5", size = 104809 } 52 | wheels = [ 53 | { url = "https://files.pythonhosted.org/packages/d1/b2/fcedc8255ec42afee97f9e6f0145c734bbe104aac28300214593eb326f1d/charset_normalizer-3.3.2-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:0b2b64d2bb6d3fb9112bafa732def486049e63de9618b5843bcdd081d8144cd8", size = 192892 }, 54 | { url = "https://files.pythonhosted.org/packages/2e/7d/2259318c202f3d17f3fe6438149b3b9e706d1070fe3fcbb28049730bb25c/charset_normalizer-3.3.2-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:ddbb2551d7e0102e7252db79ba445cdab71b26640817ab1e3e3648dad515003b", size = 122213 }, 55 | { url = "https://files.pythonhosted.org/packages/3a/52/9f9d17c3b54dc238de384c4cb5a2ef0e27985b42a0e5cc8e8a31d918d48d/charset_normalizer-3.3.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:55086ee1064215781fff39a1af09518bc9255b50d6333f2e4c74ca09fac6a8f6", size = 119404 }, 56 | { url = "https://files.pythonhosted.org/packages/99/b0/9c365f6d79a9f0f3c379ddb40a256a67aa69c59609608fe7feb6235896e1/charset_normalizer-3.3.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8f4a014bc36d3c57402e2977dada34f9c12300af536839dc38c0beab8878f38a", size = 137275 }, 57 | { url = "https://files.pythonhosted.org/packages/91/33/749df346e93d7a30cdcb90cbfdd41a06026317bfbfb62cd68307c1a3c543/charset_normalizer-3.3.2-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a10af20b82360ab00827f916a6058451b723b4e65030c5a18577c8b2de5b3389", size = 147518 }, 58 | { url = "https://files.pythonhosted.org/packages/72/1a/641d5c9f59e6af4c7b53da463d07600a695b9824e20849cb6eea8a627761/charset_normalizer-3.3.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:8d756e44e94489e49571086ef83b2bb8ce311e730092d2c34ca8f7d925cb20aa", size = 140182 }, 59 | { url = "https://files.pythonhosted.org/packages/ee/fb/14d30eb4956408ee3ae09ad34299131fb383c47df355ddb428a7331cfa1e/charset_normalizer-3.3.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:90d558489962fd4918143277a773316e56c72da56ec7aa3dc3dbbe20fdfed15b", size = 141869 }, 60 | { url = "https://files.pythonhosted.org/packages/df/3e/a06b18788ca2eb6695c9b22325b6fde7dde0f1d1838b1792a0076f58fe9d/charset_normalizer-3.3.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6ac7ffc7ad6d040517be39eb591cac5ff87416c2537df6ba3cba3bae290c0fed", size = 144042 }, 61 | { url = "https://files.pythonhosted.org/packages/45/59/3d27019d3b447a88fe7e7d004a1e04be220227760264cc41b405e863891b/charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:7ed9e526742851e8d5cc9e6cf41427dfc6068d4f5a3bb03659444b4cabf6bc26", size = 138275 }, 62 | { url = "https://files.pythonhosted.org/packages/7b/ef/5eb105530b4da8ae37d506ccfa25057961b7b63d581def6f99165ea89c7e/charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:8bdb58ff7ba23002a4c5808d608e4e6c687175724f54a5dade5fa8c67b604e4d", size = 144819 }, 63 | { url = "https://files.pythonhosted.org/packages/a2/51/e5023f937d7f307c948ed3e5c29c4b7a3e42ed2ee0b8cdf8f3a706089bf0/charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_ppc64le.whl", hash = "sha256:6b3251890fff30ee142c44144871185dbe13b11bab478a88887a639655be1068", size = 149415 }, 64 | { url = "https://files.pythonhosted.org/packages/24/9d/2e3ef673dfd5be0154b20363c5cdcc5606f35666544381bee15af3778239/charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_s390x.whl", hash = "sha256:b4a23f61ce87adf89be746c8a8974fe1c823c891d8f86eb218bb957c924bb143", size = 141212 }, 65 | { url = "https://files.pythonhosted.org/packages/5b/ae/ce2c12fcac59cb3860b2e2d76dc405253a4475436b1861d95fe75bdea520/charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:efcb3f6676480691518c177e3b465bcddf57cea040302f9f4e6e191af91174d4", size = 142167 }, 66 | { url = "https://files.pythonhosted.org/packages/ed/3a/a448bf035dce5da359daf9ae8a16b8a39623cc395a2ffb1620aa1bce62b0/charset_normalizer-3.3.2-cp312-cp312-win32.whl", hash = "sha256:d965bba47ddeec8cd560687584e88cf699fd28f192ceb452d1d7ee807c5597b7", size = 93041 }, 67 | { url = "https://files.pythonhosted.org/packages/b6/7c/8debebb4f90174074b827c63242c23851bdf00a532489fba57fef3416e40/charset_normalizer-3.3.2-cp312-cp312-win_amd64.whl", hash = "sha256:96b02a3dc4381e5494fad39be677abcb5e6634bf7b4fa83a6dd3112607547001", size = 100397 }, 68 | { url = "https://files.pythonhosted.org/packages/28/76/e6222113b83e3622caa4bb41032d0b1bf785250607392e1b778aca0b8a7d/charset_normalizer-3.3.2-py3-none-any.whl", hash = "sha256:3e4d1f6587322d2788836a99c69062fbb091331ec940e02d12d179c1d53e25fc", size = 48543 }, 69 | ] 70 | 71 | [[package]] 72 | name = "click" 73 | version = "8.1.7" 74 | source = { registry = "https://pypi.org/simple" } 75 | dependencies = [ 76 | { name = "colorama", marker = "platform_system == 'Windows'" }, 77 | ] 78 | sdist = { url = "https://files.pythonhosted.org/packages/96/d3/f04c7bfcf5c1862a2a5b845c6b2b360488cf47af55dfa79c98f6a6bf98b5/click-8.1.7.tar.gz", hash = "sha256:ca9853ad459e787e2192211578cc907e7594e294c7ccc834310722b41b9ca6de", size = 336121 } 79 | wheels = [ 80 | { url = "https://files.pythonhosted.org/packages/00/2e/d53fa4befbf2cfa713304affc7ca780ce4fc1fd8710527771b58311a3229/click-8.1.7-py3-none-any.whl", hash = "sha256:ae74fb96c20a0277a1d615f1e4d73c8414f5a98db8b799a7931d1582f3390c28", size = 97941 }, 81 | ] 82 | 83 | [[package]] 84 | name = "colorama" 85 | version = "0.4.6" 86 | source = { registry = "https://pypi.org/simple" } 87 | sdist = { url = "https://files.pythonhosted.org/packages/d8/53/6f443c9a4a8358a93a6792e2acffb9d9d5cb0a5cfd8802644b7b1c9a02e4/colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44", size = 27697 } 88 | wheels = [ 89 | { url = "https://files.pythonhosted.org/packages/d1/d6/3965ed04c63042e047cb6a3e6ed1a63a35087b6a609aa3a15ed8ac56c221/colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6", size = 25335 }, 90 | ] 91 | 92 | [[package]] 93 | name = "ghp-import" 94 | version = "2.1.0" 95 | source = { registry = "https://pypi.org/simple" } 96 | dependencies = [ 97 | { name = "python-dateutil" }, 98 | ] 99 | sdist = { url = "https://files.pythonhosted.org/packages/d9/29/d40217cbe2f6b1359e00c6c307bb3fc876ba74068cbab3dde77f03ca0dc4/ghp-import-2.1.0.tar.gz", hash = "sha256:9c535c4c61193c2df8871222567d7fd7e5014d835f97dc7b7439069e2413d343", size = 10943 } 100 | wheels = [ 101 | { url = "https://files.pythonhosted.org/packages/f7/ec/67fbef5d497f86283db54c22eec6f6140243aae73265799baaaa19cd17fb/ghp_import-2.1.0-py3-none-any.whl", hash = "sha256:8337dd7b50877f163d4c0289bc1f1c7f127550241988d568c1db512c4324a619", size = 11034 }, 102 | ] 103 | 104 | [[package]] 105 | name = "griffe" 106 | version = "1.2.0" 107 | source = { registry = "https://pypi.org/simple" } 108 | dependencies = [ 109 | { name = "colorama" }, 110 | ] 111 | sdist = { url = "https://files.pythonhosted.org/packages/92/79/cbe9be5ac67bfd87c48b5b2d2fa170bf8c33b38d8661d9d1849f038ab1f9/griffe-1.2.0.tar.gz", hash = "sha256:1c9f6ef7455930f3f9b0c4145a961c90385d1e2cbc496f7796fbff560ec60d31", size = 381349 } 112 | wheels = [ 113 | { url = "https://files.pythonhosted.org/packages/36/0b/5caa5617b63535fe1e0abc23af92bd1e6df4bd3d5b72bfe2c675d4770235/griffe-1.2.0-py3-none-any.whl", hash = "sha256:a8b2fcb1ecdc5a412e646b0b4375eb20a5d2eac3a11dd8c10c56967a4097663c", size = 126930 }, 114 | ] 115 | 116 | [[package]] 117 | name = "idna" 118 | version = "3.8" 119 | source = { registry = "https://pypi.org/simple" } 120 | sdist = { url = "https://files.pythonhosted.org/packages/e8/ac/e349c5e6d4543326c6883ee9491e3921e0d07b55fdf3cce184b40d63e72a/idna-3.8.tar.gz", hash = "sha256:d838c2c0ed6fced7693d5e8ab8e734d5f8fda53a039c0164afb0b82e771e3603", size = 189467 } 121 | wheels = [ 122 | { url = "https://files.pythonhosted.org/packages/22/7e/d71db821f177828df9dea8c42ac46473366f191be53080e552e628aad991/idna-3.8-py3-none-any.whl", hash = "sha256:050b4e5baadcd44d760cedbd2b8e639f2ff89bbc7a5730fcc662954303377aac", size = 66894 }, 123 | ] 124 | 125 | [[package]] 126 | name = "jinja2" 127 | version = "3.1.4" 128 | source = { registry = "https://pypi.org/simple" } 129 | dependencies = [ 130 | { name = "markupsafe" }, 131 | ] 132 | sdist = { url = "https://files.pythonhosted.org/packages/ed/55/39036716d19cab0747a5020fc7e907f362fbf48c984b14e62127f7e68e5d/jinja2-3.1.4.tar.gz", hash = "sha256:4a3aee7acbbe7303aede8e9648d13b8bf88a429282aa6122a993f0ac800cb369", size = 240245 } 133 | wheels = [ 134 | { url = "https://files.pythonhosted.org/packages/31/80/3a54838c3fb461f6fec263ebf3a3a41771bd05190238de3486aae8540c36/jinja2-3.1.4-py3-none-any.whl", hash = "sha256:bc5dd2abb727a5319567b7a813e6a2e7318c39f4f487cfe6c89c6f9c7d25197d", size = 133271 }, 135 | ] 136 | 137 | [[package]] 138 | name = "markdown" 139 | version = "3.7" 140 | source = { registry = "https://pypi.org/simple" } 141 | sdist = { url = "https://files.pythonhosted.org/packages/54/28/3af612670f82f4c056911fbbbb42760255801b3068c48de792d354ff4472/markdown-3.7.tar.gz", hash = "sha256:2ae2471477cfd02dbbf038d5d9bc226d40def84b4fe2986e49b59b6b472bbed2", size = 357086 } 142 | wheels = [ 143 | { url = "https://files.pythonhosted.org/packages/3f/08/83871f3c50fc983b88547c196d11cf8c3340e37c32d2e9d6152abe2c61f7/Markdown-3.7-py3-none-any.whl", hash = "sha256:7eb6df5690b81a1d7942992c97fad2938e956e79df20cbc6186e9c3a77b1c803", size = 106349 }, 144 | ] 145 | 146 | [[package]] 147 | name = "markdown-it-py" 148 | version = "3.0.0" 149 | source = { registry = "https://pypi.org/simple" } 150 | dependencies = [ 151 | { name = "mdurl" }, 152 | ] 153 | sdist = { url = "https://files.pythonhosted.org/packages/38/71/3b932df36c1a044d397a1f92d1cf91ee0a503d91e470cbd670aa66b07ed0/markdown-it-py-3.0.0.tar.gz", hash = "sha256:e3f60a94fa066dc52ec76661e37c851cb232d92f9886b15cb560aaada2df8feb", size = 74596 } 154 | wheels = [ 155 | { url = "https://files.pythonhosted.org/packages/42/d7/1ec15b46af6af88f19b8e5ffea08fa375d433c998b8a7639e76935c14f1f/markdown_it_py-3.0.0-py3-none-any.whl", hash = "sha256:355216845c60bd96232cd8d8c40e8f9765cc86f46880e43a8fd22dc1a1a8cab1", size = 87528 }, 156 | ] 157 | 158 | [[package]] 159 | name = "markupsafe" 160 | version = "2.1.5" 161 | source = { registry = "https://pypi.org/simple" } 162 | sdist = { url = "https://files.pythonhosted.org/packages/87/5b/aae44c6655f3801e81aa3eef09dbbf012431987ba564d7231722f68df02d/MarkupSafe-2.1.5.tar.gz", hash = "sha256:d283d37a890ba4c1ae73ffadf8046435c76e7bc2247bbb63c00bd1a709c6544b", size = 19384 } 163 | wheels = [ 164 | { url = "https://files.pythonhosted.org/packages/53/bd/583bf3e4c8d6a321938c13f49d44024dbe5ed63e0a7ba127e454a66da974/MarkupSafe-2.1.5-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:8dec4936e9c3100156f8a2dc89c4b88d5c435175ff03413b443469c7c8c5f4d1", size = 18215 }, 165 | { url = "https://files.pythonhosted.org/packages/48/d6/e7cd795fc710292c3af3a06d80868ce4b02bfbbf370b7cee11d282815a2a/MarkupSafe-2.1.5-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:3c6b973f22eb18a789b1460b4b91bf04ae3f0c4234a0a6aa6b0a92f6f7b951d4", size = 14069 }, 166 | { url = "https://files.pythonhosted.org/packages/51/b5/5d8ec796e2a08fc814a2c7d2584b55f889a55cf17dd1a90f2beb70744e5c/MarkupSafe-2.1.5-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ac07bad82163452a6884fe8fa0963fb98c2346ba78d779ec06bd7a6262132aee", size = 29452 }, 167 | { url = "https://files.pythonhosted.org/packages/0a/0d/2454f072fae3b5a137c119abf15465d1771319dfe9e4acbb31722a0fff91/MarkupSafe-2.1.5-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f5dfb42c4604dddc8e4305050aa6deb084540643ed5804d7455b5df8fe16f5e5", size = 28462 }, 168 | { url = "https://files.pythonhosted.org/packages/2d/75/fd6cb2e68780f72d47e6671840ca517bda5ef663d30ada7616b0462ad1e3/MarkupSafe-2.1.5-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ea3d8a3d18833cf4304cd2fc9cbb1efe188ca9b5efef2bdac7adc20594a0e46b", size = 27869 }, 169 | { url = "https://files.pythonhosted.org/packages/b0/81/147c477391c2750e8fc7705829f7351cf1cd3be64406edcf900dc633feb2/MarkupSafe-2.1.5-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:d050b3361367a06d752db6ead6e7edeb0009be66bc3bae0ee9d97fb326badc2a", size = 33906 }, 170 | { url = "https://files.pythonhosted.org/packages/8b/ff/9a52b71839d7a256b563e85d11050e307121000dcebc97df120176b3ad93/MarkupSafe-2.1.5-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:bec0a414d016ac1a18862a519e54b2fd0fc8bbfd6890376898a6c0891dd82e9f", size = 32296 }, 171 | { url = "https://files.pythonhosted.org/packages/88/07/2dc76aa51b481eb96a4c3198894f38b480490e834479611a4053fbf08623/MarkupSafe-2.1.5-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:58c98fee265677f63a4385256a6d7683ab1832f3ddd1e66fe948d5880c21a169", size = 33038 }, 172 | { url = "https://files.pythonhosted.org/packages/96/0c/620c1fb3661858c0e37eb3cbffd8c6f732a67cd97296f725789679801b31/MarkupSafe-2.1.5-cp312-cp312-win32.whl", hash = "sha256:8590b4ae07a35970728874632fed7bd57b26b0102df2d2b233b6d9d82f6c62ad", size = 16572 }, 173 | { url = "https://files.pythonhosted.org/packages/3f/14/c3554d512d5f9100a95e737502f4a2323a1959f6d0d01e0d0997b35f7b10/MarkupSafe-2.1.5-cp312-cp312-win_amd64.whl", hash = "sha256:823b65d8706e32ad2df51ed89496147a42a2a6e01c13cfb6ffb8b1e92bc910bb", size = 17127 }, 174 | ] 175 | 176 | [[package]] 177 | name = "mdurl" 178 | version = "0.1.2" 179 | source = { registry = "https://pypi.org/simple" } 180 | sdist = { url = "https://files.pythonhosted.org/packages/d6/54/cfe61301667036ec958cb99bd3efefba235e65cdeb9c84d24a8293ba1d90/mdurl-0.1.2.tar.gz", hash = "sha256:bb413d29f5eea38f31dd4754dd7377d4465116fb207585f97bf925588687c1ba", size = 8729 } 181 | wheels = [ 182 | { url = "https://files.pythonhosted.org/packages/b3/38/89ba8ad64ae25be8de66a6d463314cf1eb366222074cfda9ee839c56a4b4/mdurl-0.1.2-py3-none-any.whl", hash = "sha256:84008a41e51615a49fc9966191ff91509e3c40b939176e643fd50a5c2196b8f8", size = 9979 }, 183 | ] 184 | 185 | [[package]] 186 | name = "mergedeep" 187 | version = "1.3.4" 188 | source = { registry = "https://pypi.org/simple" } 189 | sdist = { url = "https://files.pythonhosted.org/packages/3a/41/580bb4006e3ed0361b8151a01d324fb03f420815446c7def45d02f74c270/mergedeep-1.3.4.tar.gz", hash = "sha256:0096d52e9dad9939c3d975a774666af186eda617e6ca84df4c94dec30004f2a8", size = 4661 } 190 | wheels = [ 191 | { url = "https://files.pythonhosted.org/packages/2c/19/04f9b178c2d8a15b076c8b5140708fa6ffc5601fb6f1e975537072df5b2a/mergedeep-1.3.4-py3-none-any.whl", hash = "sha256:70775750742b25c0d8f36c55aed03d24c3384d17c951b3175d898bd778ef0307", size = 6354 }, 192 | ] 193 | 194 | [[package]] 195 | name = "mkdocs" 196 | version = "1.6.0" 197 | source = { registry = "https://pypi.org/simple" } 198 | dependencies = [ 199 | { name = "click" }, 200 | { name = "colorama", marker = "platform_system == 'Windows'" }, 201 | { name = "ghp-import" }, 202 | { name = "jinja2" }, 203 | { name = "markdown" }, 204 | { name = "markupsafe" }, 205 | { name = "mergedeep" }, 206 | { name = "mkdocs-get-deps" }, 207 | { name = "packaging" }, 208 | { name = "pathspec" }, 209 | { name = "pyyaml" }, 210 | { name = "pyyaml-env-tag" }, 211 | { name = "watchdog" }, 212 | ] 213 | sdist = { url = "https://files.pythonhosted.org/packages/cc/6b/26b33cc8ad54e8bc0345cddc061c2c5c23e364de0ecd97969df23f95a673/mkdocs-1.6.0.tar.gz", hash = "sha256:a73f735824ef83a4f3bcb7a231dcab23f5a838f88b7efc54a0eef5fbdbc3c512", size = 3888392 } 214 | wheels = [ 215 | { url = "https://files.pythonhosted.org/packages/b8/c0/930dcf5a3e96b9c8e7ad15502603fc61d495479699e2d2c381e3d37294d1/mkdocs-1.6.0-py3-none-any.whl", hash = "sha256:1eb5cb7676b7d89323e62b56235010216319217d4af5ddc543a91beb8d125ea7", size = 3862264 }, 216 | ] 217 | 218 | [[package]] 219 | name = "mkdocs-autorefs" 220 | version = "1.1.0" 221 | source = { registry = "https://pypi.org/simple" } 222 | dependencies = [ 223 | { name = "markdown" }, 224 | { name = "markupsafe" }, 225 | { name = "mkdocs" }, 226 | ] 227 | sdist = { url = "https://files.pythonhosted.org/packages/47/24/7d09b72b470d5dd33ed0c6722c7038ece494ab7dc5e72adbfeaf945276f6/mkdocs_autorefs-1.1.0.tar.gz", hash = "sha256:f2fd43b11f66284bd014f9b542a05c8ecbfaad4e0d7b30b68584788217b6c656", size = 36989 } 228 | wheels = [ 229 | { url = "https://files.pythonhosted.org/packages/11/84/8e4dd669766f864482d2edcc44c7f07f4f91d73414c9a3e33b230a59f2cf/mkdocs_autorefs-1.1.0-py3-none-any.whl", hash = "sha256:492ac42f50214e81565e968f8cb0df9aba9d981542b9e7121b8f8ae9407fe6eb", size = 14417 }, 230 | ] 231 | 232 | [[package]] 233 | name = "mkdocs-get-deps" 234 | version = "0.2.0" 235 | source = { registry = "https://pypi.org/simple" } 236 | dependencies = [ 237 | { name = "mergedeep" }, 238 | { name = "platformdirs" }, 239 | { name = "pyyaml" }, 240 | ] 241 | sdist = { url = "https://files.pythonhosted.org/packages/98/f5/ed29cd50067784976f25ed0ed6fcd3c2ce9eb90650aa3b2796ddf7b6870b/mkdocs_get_deps-0.2.0.tar.gz", hash = "sha256:162b3d129c7fad9b19abfdcb9c1458a651628e4b1dea628ac68790fb3061c60c", size = 10239 } 242 | wheels = [ 243 | { url = "https://files.pythonhosted.org/packages/9f/d4/029f984e8d3f3b6b726bd33cafc473b75e9e44c0f7e80a5b29abc466bdea/mkdocs_get_deps-0.2.0-py3-none-any.whl", hash = "sha256:2bf11d0b133e77a0dd036abeeb06dec8775e46efa526dc70667d8863eefc6134", size = 9521 }, 244 | ] 245 | 246 | [[package]] 247 | name = "mkdocs-material" 248 | version = "9.5.33" 249 | source = { registry = "https://pypi.org/simple" } 250 | dependencies = [ 251 | { name = "babel" }, 252 | { name = "colorama" }, 253 | { name = "jinja2" }, 254 | { name = "markdown" }, 255 | { name = "mkdocs" }, 256 | { name = "mkdocs-material-extensions" }, 257 | { name = "paginate" }, 258 | { name = "pygments" }, 259 | { name = "pymdown-extensions" }, 260 | { name = "regex" }, 261 | { name = "requests" }, 262 | ] 263 | sdist = { url = "https://files.pythonhosted.org/packages/73/d5/f393412423f92dde7a4d7b9b74f294c5f8589679132739bd3cd333099641/mkdocs_material-9.5.33.tar.gz", hash = "sha256:d23a8b5e3243c9b2f29cdfe83051104a8024b767312dc8fde05ebe91ad55d89d", size = 4107690 } 264 | wheels = [ 265 | { url = "https://files.pythonhosted.org/packages/7b/b1/1cebba96a01fa25299e9055bcd4c169f813f5cb73449194554a24bdda542/mkdocs_material-9.5.33-py3-none-any.whl", hash = "sha256:dbc79cf0fdc6e2c366aa987de8b0c9d4e2bb9f156e7466786ba2fd0f9bf7ffca", size = 8823286 }, 266 | ] 267 | 268 | [[package]] 269 | name = "mkdocs-material-extensions" 270 | version = "1.3.1" 271 | source = { registry = "https://pypi.org/simple" } 272 | sdist = { url = "https://files.pythonhosted.org/packages/79/9b/9b4c96d6593b2a541e1cb8b34899a6d021d208bb357042823d4d2cabdbe7/mkdocs_material_extensions-1.3.1.tar.gz", hash = "sha256:10c9511cea88f568257f960358a467d12b970e1f7b2c0e5fb2bb48cab1928443", size = 11847 } 273 | wheels = [ 274 | { url = "https://files.pythonhosted.org/packages/5b/54/662a4743aa81d9582ee9339d4ffa3c8fd40a4965e033d77b9da9774d3960/mkdocs_material_extensions-1.3.1-py3-none-any.whl", hash = "sha256:adff8b62700b25cb77b53358dad940f3ef973dd6db797907c49e3c2ef3ab4e31", size = 8728 }, 275 | ] 276 | 277 | [[package]] 278 | name = "mkdocs-simple-hooks" 279 | version = "0.1.5" 280 | source = { registry = "https://pypi.org/simple" } 281 | dependencies = [ 282 | { name = "mkdocs" }, 283 | ] 284 | sdist = { url = "https://files.pythonhosted.org/packages/f1/93/565f98d6810e3b493e61160aea1cceb8653331576e7fa7f048ac7e7cdf62/mkdocs-simple-hooks-0.1.5.tar.gz", hash = "sha256:dddbdf151a18723c9302a133e5cf79538be8eb9d274e8e07d2ac3ac34890837c", size = 4037 } 285 | wheels = [ 286 | { url = "https://files.pythonhosted.org/packages/7a/e9/7bf0f928f5b6cdd602d4a01d52e5fc1eba8d3ba6d97619a88fc271a625f8/mkdocs_simple_hooks-0.1.5-py3-none-any.whl", hash = "sha256:efeabdbb98b0850a909adee285f3404535117159d5cb3a34f541d6eaa644d50a", size = 4596 }, 287 | ] 288 | 289 | [[package]] 290 | name = "mkdocstrings" 291 | version = "0.25.2" 292 | source = { registry = "https://pypi.org/simple" } 293 | dependencies = [ 294 | { name = "click" }, 295 | { name = "jinja2" }, 296 | { name = "markdown" }, 297 | { name = "markupsafe" }, 298 | { name = "mkdocs" }, 299 | { name = "mkdocs-autorefs" }, 300 | { name = "platformdirs" }, 301 | { name = "pymdown-extensions" }, 302 | ] 303 | sdist = { url = "https://files.pythonhosted.org/packages/24/a6/d544fae9749b19e23fb590f6344f9eae3a312323065070b4874236bb0e04/mkdocstrings-0.25.2.tar.gz", hash = "sha256:5cf57ad7f61e8be3111a2458b4e49c2029c9cb35525393b179f9c916ca8042dc", size = 91796 } 304 | wheels = [ 305 | { url = "https://files.pythonhosted.org/packages/2b/86/ee2aef075cc9a62a4f087c3c3f4e3e8a8318afe05a92f8f8415f1bf1af64/mkdocstrings-0.25.2-py3-none-any.whl", hash = "sha256:9e2cda5e2e12db8bb98d21e3410f3f27f8faab685a24b03b06ba7daa5b92abfc", size = 29289 }, 306 | ] 307 | 308 | [package.optional-dependencies] 309 | python = [ 310 | { name = "mkdocstrings-python" }, 311 | ] 312 | 313 | [[package]] 314 | name = "mkdocstrings-python" 315 | version = "1.10.8" 316 | source = { registry = "https://pypi.org/simple" } 317 | dependencies = [ 318 | { name = "griffe" }, 319 | { name = "mkdocstrings" }, 320 | ] 321 | sdist = { url = "https://files.pythonhosted.org/packages/6b/ae/21b26c1fd62c8dd51ecefc8e848c14ca8f0dfdfeb903deeb20e86fb28ad1/mkdocstrings_python-1.10.8.tar.gz", hash = "sha256:5856a59cbebbb8deb133224a540de1ff60bded25e54d8beacc375bb133d39016", size = 161724 } 322 | wheels = [ 323 | { url = "https://files.pythonhosted.org/packages/c5/81/cda8afc58c7be82f0a7a9b54939e86f54eaad32a5b232afd6893ce3f00cb/mkdocstrings_python-1.10.8-py3-none-any.whl", hash = "sha256:bb12e76c8b071686617f824029cb1dfe0e9afe89f27fb3ad9a27f95f054dcd89", size = 108333 }, 324 | ] 325 | 326 | [[package]] 327 | name = "packaging" 328 | version = "24.1" 329 | source = { registry = "https://pypi.org/simple" } 330 | sdist = { url = "https://files.pythonhosted.org/packages/51/65/50db4dda066951078f0a96cf12f4b9ada6e4b811516bf0262c0f4f7064d4/packaging-24.1.tar.gz", hash = "sha256:026ed72c8ed3fcce5bf8950572258698927fd1dbda10a5e981cdf0ac37f4f002", size = 148788 } 331 | wheels = [ 332 | { url = "https://files.pythonhosted.org/packages/08/aa/cc0199a5f0ad350994d660967a8efb233fe0416e4639146c089643407ce6/packaging-24.1-py3-none-any.whl", hash = "sha256:5b8f2217dbdbd2f7f384c41c628544e6d52f2d0f53c6d0c3ea61aa5d1d7ff124", size = 53985 }, 333 | ] 334 | 335 | [[package]] 336 | name = "paginate" 337 | version = "0.5.6" 338 | source = { registry = "https://pypi.org/simple" } 339 | sdist = { url = "https://files.pythonhosted.org/packages/68/58/e670a947136fdcece8ac5376b3df1369d29e4f6659b0c9b358605b115e9e/paginate-0.5.6.tar.gz", hash = "sha256:5e6007b6a9398177a7e1648d04fdd9f8c9766a1a945bceac82f1929e8c78af2d", size = 12840 } 340 | 341 | [[package]] 342 | name = "pathspec" 343 | version = "0.12.1" 344 | source = { registry = "https://pypi.org/simple" } 345 | sdist = { url = "https://files.pythonhosted.org/packages/ca/bc/f35b8446f4531a7cb215605d100cd88b7ac6f44ab3fc94870c120ab3adbf/pathspec-0.12.1.tar.gz", hash = "sha256:a482d51503a1ab33b1c67a6c3813a26953dbdc71c31dacaef9a838c4e29f5712", size = 51043 } 346 | wheels = [ 347 | { url = "https://files.pythonhosted.org/packages/cc/20/ff623b09d963f88bfde16306a54e12ee5ea43e9b597108672ff3a408aad6/pathspec-0.12.1-py3-none-any.whl", hash = "sha256:a0d503e138a4c123b27490a4f7beda6a01c6f288df0e4a8b79c7eb0dc7b4cc08", size = 31191 }, 348 | ] 349 | 350 | [[package]] 351 | name = "platformdirs" 352 | version = "4.2.2" 353 | source = { registry = "https://pypi.org/simple" } 354 | sdist = { url = "https://files.pythonhosted.org/packages/f5/52/0763d1d976d5c262df53ddda8d8d4719eedf9594d046f117c25a27261a19/platformdirs-4.2.2.tar.gz", hash = "sha256:38b7b51f512eed9e84a22788b4bce1de17c0adb134d6becb09836e37d8654cd3", size = 20916 } 355 | wheels = [ 356 | { url = "https://files.pythonhosted.org/packages/68/13/2aa1f0e1364feb2c9ef45302f387ac0bd81484e9c9a4c5688a322fbdfd08/platformdirs-4.2.2-py3-none-any.whl", hash = "sha256:2d7a1657e36a80ea911db832a8a6ece5ee53d8de21edd5cc5879af6530b1bfee", size = 18146 }, 357 | ] 358 | 359 | [[package]] 360 | name = "pygments" 361 | version = "2.18.0" 362 | source = { registry = "https://pypi.org/simple" } 363 | sdist = { url = "https://files.pythonhosted.org/packages/8e/62/8336eff65bcbc8e4cb5d05b55faf041285951b6e80f33e2bff2024788f31/pygments-2.18.0.tar.gz", hash = "sha256:786ff802f32e91311bff3889f6e9a86e81505fe99f2735bb6d60ae0c5004f199", size = 4891905 } 364 | wheels = [ 365 | { url = "https://files.pythonhosted.org/packages/f7/3f/01c8b82017c199075f8f788d0d906b9ffbbc5a47dc9918a945e13d5a2bda/pygments-2.18.0-py3-none-any.whl", hash = "sha256:b8e6aca0523f3ab76fee51799c488e38782ac06eafcf95e7ba832985c8e7b13a", size = 1205513 }, 366 | ] 367 | 368 | [[package]] 369 | name = "pymdown-extensions" 370 | version = "10.9" 371 | source = { registry = "https://pypi.org/simple" } 372 | dependencies = [ 373 | { name = "markdown" }, 374 | { name = "pyyaml" }, 375 | ] 376 | sdist = { url = "https://files.pythonhosted.org/packages/d8/d3/fb86beeaa4416f73a28a5e8d440976b7cada2b2d7b5e715b2bd849d4de32/pymdown_extensions-10.9.tar.gz", hash = "sha256:6ff740bcd99ec4172a938970d42b96128bdc9d4b9bcad72494f29921dc69b753", size = 812128 } 377 | wheels = [ 378 | { url = "https://files.pythonhosted.org/packages/7b/41/18b5dc5e97ec3ff1c2f51d372e570a9fbe231f1124dcc36dbc6b47f93058/pymdown_extensions-10.9-py3-none-any.whl", hash = "sha256:d323f7e90d83c86113ee78f3fe62fc9dee5f56b54d912660703ea1816fed5626", size = 250954 }, 379 | ] 380 | 381 | [[package]] 382 | name = "python-dateutil" 383 | version = "2.9.0.post0" 384 | source = { registry = "https://pypi.org/simple" } 385 | dependencies = [ 386 | { name = "six" }, 387 | ] 388 | sdist = { url = "https://files.pythonhosted.org/packages/66/c0/0c8b6ad9f17a802ee498c46e004a0eb49bc148f2fd230864601a86dcf6db/python-dateutil-2.9.0.post0.tar.gz", hash = "sha256:37dd54208da7e1cd875388217d5e00ebd4179249f90fb72437e91a35459a0ad3", size = 342432 } 389 | wheels = [ 390 | { url = "https://files.pythonhosted.org/packages/ec/57/56b9bcc3c9c6a792fcbaf139543cee77261f3651ca9da0c93f5c1221264b/python_dateutil-2.9.0.post0-py2.py3-none-any.whl", hash = "sha256:a8b2bc7bffae282281c8140a97d3aa9c14da0b136dfe83f850eea9a5f7470427", size = 229892 }, 391 | ] 392 | 393 | [[package]] 394 | name = "pyyaml" 395 | version = "6.0.2" 396 | source = { registry = "https://pypi.org/simple" } 397 | sdist = { url = "https://files.pythonhosted.org/packages/54/ed/79a089b6be93607fa5cdaedf301d7dfb23af5f25c398d5ead2525b063e17/pyyaml-6.0.2.tar.gz", hash = "sha256:d584d9ec91ad65861cc08d42e834324ef890a082e591037abe114850ff7bbc3e", size = 130631 } 398 | wheels = [ 399 | { url = "https://files.pythonhosted.org/packages/86/0c/c581167fc46d6d6d7ddcfb8c843a4de25bdd27e4466938109ca68492292c/PyYAML-6.0.2-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:c70c95198c015b85feafc136515252a261a84561b7b1d51e3384e0655ddf25ab", size = 183873 }, 400 | { url = "https://files.pythonhosted.org/packages/a8/0c/38374f5bb272c051e2a69281d71cba6fdb983413e6758b84482905e29a5d/PyYAML-6.0.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:ce826d6ef20b1bc864f0a68340c8b3287705cae2f8b4b1d932177dcc76721725", size = 173302 }, 401 | { url = "https://files.pythonhosted.org/packages/c3/93/9916574aa8c00aa06bbac729972eb1071d002b8e158bd0e83a3b9a20a1f7/PyYAML-6.0.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1f71ea527786de97d1a0cc0eacd1defc0985dcf6b3f17bb77dcfc8c34bec4dc5", size = 739154 }, 402 | { url = "https://files.pythonhosted.org/packages/95/0f/b8938f1cbd09739c6da569d172531567dbcc9789e0029aa070856f123984/PyYAML-6.0.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9b22676e8097e9e22e36d6b7bda33190d0d400f345f23d4065d48f4ca7ae0425", size = 766223 }, 403 | { url = "https://files.pythonhosted.org/packages/b9/2b/614b4752f2e127db5cc206abc23a8c19678e92b23c3db30fc86ab731d3bd/PyYAML-6.0.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:80bab7bfc629882493af4aa31a4cfa43a4c57c83813253626916b8c7ada83476", size = 767542 }, 404 | { url = "https://files.pythonhosted.org/packages/d4/00/dd137d5bcc7efea1836d6264f049359861cf548469d18da90cd8216cf05f/PyYAML-6.0.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:0833f8694549e586547b576dcfaba4a6b55b9e96098b36cdc7ebefe667dfed48", size = 731164 }, 405 | { url = "https://files.pythonhosted.org/packages/c9/1f/4f998c900485e5c0ef43838363ba4a9723ac0ad73a9dc42068b12aaba4e4/PyYAML-6.0.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:8b9c7197f7cb2738065c481a0461e50ad02f18c78cd75775628afb4d7137fb3b", size = 756611 }, 406 | { url = "https://files.pythonhosted.org/packages/df/d1/f5a275fdb252768b7a11ec63585bc38d0e87c9e05668a139fea92b80634c/PyYAML-6.0.2-cp312-cp312-win32.whl", hash = "sha256:ef6107725bd54b262d6dedcc2af448a266975032bc85ef0172c5f059da6325b4", size = 140591 }, 407 | { url = "https://files.pythonhosted.org/packages/0c/e8/4f648c598b17c3d06e8753d7d13d57542b30d56e6c2dedf9c331ae56312e/PyYAML-6.0.2-cp312-cp312-win_amd64.whl", hash = "sha256:7e7401d0de89a9a855c839bc697c079a4af81cf878373abd7dc625847d25cbd8", size = 156338 }, 408 | { url = "https://files.pythonhosted.org/packages/ef/e3/3af305b830494fa85d95f6d95ef7fa73f2ee1cc8ef5b495c7c3269fb835f/PyYAML-6.0.2-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:efdca5630322a10774e8e98e1af481aad470dd62c3170801852d752aa7a783ba", size = 181309 }, 409 | { url = "https://files.pythonhosted.org/packages/45/9f/3b1c20a0b7a3200524eb0076cc027a970d320bd3a6592873c85c92a08731/PyYAML-6.0.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:50187695423ffe49e2deacb8cd10510bc361faac997de9efef88badc3bb9e2d1", size = 171679 }, 410 | { url = "https://files.pythonhosted.org/packages/7c/9a/337322f27005c33bcb656c655fa78325b730324c78620e8328ae28b64d0c/PyYAML-6.0.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0ffe8360bab4910ef1b9e87fb812d8bc0a308b0d0eef8c8f44e0254ab3b07133", size = 733428 }, 411 | { url = "https://files.pythonhosted.org/packages/a3/69/864fbe19e6c18ea3cc196cbe5d392175b4cf3d5d0ac1403ec3f2d237ebb5/PyYAML-6.0.2-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:17e311b6c678207928d649faa7cb0d7b4c26a0ba73d41e99c4fff6b6c3276484", size = 763361 }, 412 | { url = "https://files.pythonhosted.org/packages/04/24/b7721e4845c2f162d26f50521b825fb061bc0a5afcf9a386840f23ea19fa/PyYAML-6.0.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:70b189594dbe54f75ab3a1acec5f1e3faa7e8cf2f1e08d9b561cb41b845f69d5", size = 759523 }, 413 | { url = "https://files.pythonhosted.org/packages/2b/b2/e3234f59ba06559c6ff63c4e10baea10e5e7df868092bf9ab40e5b9c56b6/PyYAML-6.0.2-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:41e4e3953a79407c794916fa277a82531dd93aad34e29c2a514c2c0c5fe971cc", size = 726660 }, 414 | { url = "https://files.pythonhosted.org/packages/fe/0f/25911a9f080464c59fab9027482f822b86bf0608957a5fcc6eaac85aa515/PyYAML-6.0.2-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:68ccc6023a3400877818152ad9a1033e3db8625d899c72eacb5a668902e4d652", size = 751597 }, 415 | { url = "https://files.pythonhosted.org/packages/14/0d/e2c3b43bbce3cf6bd97c840b46088a3031085179e596d4929729d8d68270/PyYAML-6.0.2-cp313-cp313-win32.whl", hash = "sha256:bc2fa7c6b47d6bc618dd7fb02ef6fdedb1090ec036abab80d4681424b84c1183", size = 140527 }, 416 | { url = "https://files.pythonhosted.org/packages/fa/de/02b54f42487e3d3c6efb3f89428677074ca7bf43aae402517bc7cca949f3/PyYAML-6.0.2-cp313-cp313-win_amd64.whl", hash = "sha256:8388ee1976c416731879ac16da0aff3f63b286ffdd57cdeb95f3f2e085687563", size = 156446 }, 417 | ] 418 | 419 | [[package]] 420 | name = "pyyaml-env-tag" 421 | version = "0.1" 422 | source = { registry = "https://pypi.org/simple" } 423 | dependencies = [ 424 | { name = "pyyaml" }, 425 | ] 426 | sdist = { url = "https://files.pythonhosted.org/packages/fb/8e/da1c6c58f751b70f8ceb1eb25bc25d524e8f14fe16edcce3f4e3ba08629c/pyyaml_env_tag-0.1.tar.gz", hash = "sha256:70092675bda14fdec33b31ba77e7543de9ddc88f2e5b99160396572d11525bdb", size = 5631 } 427 | wheels = [ 428 | { url = "https://files.pythonhosted.org/packages/5a/66/bbb1dd374f5c870f59c5bb1db0e18cbe7fa739415a24cbd95b2d1f5ae0c4/pyyaml_env_tag-0.1-py3-none-any.whl", hash = "sha256:af31106dec8a4d68c60207c1886031cbf839b68aa7abccdb19868200532c2069", size = 3911 }, 429 | ] 430 | 431 | [[package]] 432 | name = "regex" 433 | version = "2024.7.24" 434 | source = { registry = "https://pypi.org/simple" } 435 | sdist = { url = "https://files.pythonhosted.org/packages/3f/51/64256d0dc72816a4fe3779449627c69ec8fee5a5625fd60ba048f53b3478/regex-2024.7.24.tar.gz", hash = "sha256:9cfd009eed1a46b27c14039ad5bbc5e71b6367c5b2e6d5f5da0ea91600817506", size = 393485 } 436 | wheels = [ 437 | { url = "https://files.pythonhosted.org/packages/0f/26/f505782f386ac0399a9237571833f187414882ab6902e2e71a1ecb506835/regex-2024.7.24-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:fe4ebef608553aff8deb845c7f4f1d0740ff76fa672c011cc0bacb2a00fbde86", size = 471748 }, 438 | { url = "https://files.pythonhosted.org/packages/bb/1d/ea9a21beeb433dbfca31ab82867d69cb67ff8674af9fab6ebd55fa9d3387/regex-2024.7.24-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:74007a5b25b7a678459f06559504f1eec2f0f17bca218c9d56f6a0a12bfffdad", size = 282841 }, 439 | { url = "https://files.pythonhosted.org/packages/9b/f2/c6182095baf0a10169c34e87133a8e73b2e816a80035669b1278e927685e/regex-2024.7.24-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:7df9ea48641da022c2a3c9c641650cd09f0cd15e8908bf931ad538f5ca7919c9", size = 279114 }, 440 | { url = "https://files.pythonhosted.org/packages/72/58/b5161bf890b6ca575a25685f19a4a3e3b6f4a072238814f8658123177d84/regex-2024.7.24-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6a1141a1dcc32904c47f6846b040275c6e5de0bf73f17d7a409035d55b76f289", size = 789749 }, 441 | { url = "https://files.pythonhosted.org/packages/09/fb/5381b19b62f3a3494266be462f6a015a869cf4bfd8e14d6e7db67e2c8069/regex-2024.7.24-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:80c811cfcb5c331237d9bad3bea2c391114588cf4131707e84d9493064d267f9", size = 831666 }, 442 | { url = "https://files.pythonhosted.org/packages/3d/6d/2a21c85f970f9be79357d12cf4b97f4fc6bf3bf6b843c39dabbc4e5f1181/regex-2024.7.24-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:7214477bf9bd195894cf24005b1e7b496f46833337b5dedb7b2a6e33f66d962c", size = 817544 }, 443 | { url = "https://files.pythonhosted.org/packages/f9/ae/5f23e64f6cf170614237c654f3501a912dfb8549143d4b91d1cd13dba319/regex-2024.7.24-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d55588cba7553f0b6ec33130bc3e114b355570b45785cebdc9daed8c637dd440", size = 790854 }, 444 | { url = "https://files.pythonhosted.org/packages/29/0a/d04baad1bbc49cdfb4aef90c4fc875a60aaf96d35a1616f1dfe8149716bc/regex-2024.7.24-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:558a57cfc32adcf19d3f791f62b5ff564922942e389e3cfdb538a23d65a6b610", size = 779242 }, 445 | { url = "https://files.pythonhosted.org/packages/3a/27/b242a962f650c3213da4596d70e24c7c1c46e3aa0f79f2a81164291085f8/regex-2024.7.24-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:a512eed9dfd4117110b1881ba9a59b31433caed0c4101b361f768e7bcbaf93c5", size = 776932 }, 446 | { url = "https://files.pythonhosted.org/packages/9c/ae/de659bdfff80ad2c0b577a43dd89dbc43870a4fc4bbf604e452196758e83/regex-2024.7.24-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:86b17ba823ea76256b1885652e3a141a99a5c4422f4a869189db328321b73799", size = 784521 }, 447 | { url = "https://files.pythonhosted.org/packages/d4/ac/eb6a796da0bdefbf09644a7868309423b18d344cf49963a9d36c13502d46/regex-2024.7.24-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:5eefee9bfe23f6df09ffb6dfb23809f4d74a78acef004aa904dc7c88b9944b05", size = 854548 }, 448 | { url = "https://files.pythonhosted.org/packages/56/77/fde8d825dec69e70256e0925af6c81eea9acf0a634d3d80f619d8dcd6888/regex-2024.7.24-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:731fcd76bbdbf225e2eb85b7c38da9633ad3073822f5ab32379381e8c3c12e94", size = 853345 }, 449 | { url = "https://files.pythonhosted.org/packages/ff/04/2b79ad0bb9bc05ab4386caa2c19aa047a66afcbdfc2640618ffc729841e4/regex-2024.7.24-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:eaef80eac3b4cfbdd6de53c6e108b4c534c21ae055d1dbea2de6b3b8ff3def38", size = 781414 }, 450 | { url = "https://files.pythonhosted.org/packages/bf/71/d0af58199283ada7d25b20e416f5b155f50aad99b0e791c0966ff5a1cd00/regex-2024.7.24-cp312-cp312-win32.whl", hash = "sha256:185e029368d6f89f36e526764cf12bf8d6f0e3a2a7737da625a76f594bdfcbfc", size = 258125 }, 451 | { url = "https://files.pythonhosted.org/packages/95/b3/10e875c45c60b010b66fc109b899c6fc4f05d485fe1d54abff98ce791124/regex-2024.7.24-cp312-cp312-win_amd64.whl", hash = "sha256:2f1baff13cc2521bea83ab2528e7a80cbe0ebb2c6f0bfad15be7da3aed443908", size = 269162 }, 452 | ] 453 | 454 | [[package]] 455 | name = "requests" 456 | version = "2.32.3" 457 | source = { registry = "https://pypi.org/simple" } 458 | dependencies = [ 459 | { name = "certifi" }, 460 | { name = "charset-normalizer" }, 461 | { name = "idna" }, 462 | { name = "urllib3" }, 463 | ] 464 | sdist = { url = "https://files.pythonhosted.org/packages/63/70/2bf7780ad2d390a8d301ad0b550f1581eadbd9a20f896afe06353c2a2913/requests-2.32.3.tar.gz", hash = "sha256:55365417734eb18255590a9ff9eb97e9e1da868d4ccd6402399eaf68af20a760", size = 131218 } 465 | wheels = [ 466 | { url = "https://files.pythonhosted.org/packages/f9/9b/335f9764261e915ed497fcdeb11df5dfd6f7bf257d4a6a2a686d80da4d54/requests-2.32.3-py3-none-any.whl", hash = "sha256:70761cfe03c773ceb22aa2f671b4757976145175cdfca038c02654d061d6dcc6", size = 64928 }, 467 | ] 468 | 469 | [[package]] 470 | name = "rich" 471 | version = "13.7.1" 472 | source = { registry = "https://pypi.org/simple" } 473 | dependencies = [ 474 | { name = "markdown-it-py" }, 475 | { name = "pygments" }, 476 | ] 477 | sdist = { url = "https://files.pythonhosted.org/packages/b3/01/c954e134dc440ab5f96952fe52b4fdc64225530320a910473c1fe270d9aa/rich-13.7.1.tar.gz", hash = "sha256:9be308cb1fe2f1f57d67ce99e95af38a1e2bc71ad9813b0e247cf7ffbcc3a432", size = 221248 } 478 | wheels = [ 479 | { url = "https://files.pythonhosted.org/packages/87/67/a37f6214d0e9fe57f6ae54b2956d550ca8365857f42a1ce0392bb21d9410/rich-13.7.1-py3-none-any.whl", hash = "sha256:4edbae314f59eb482f54e9e30bf00d33350aaa94f4bfcd4e9e3110e64d0d7222", size = 240681 }, 480 | ] 481 | 482 | [[package]] 483 | name = "ruff" 484 | version = "0.6.2" 485 | source = { registry = "https://pypi.org/simple" } 486 | sdist = { url = "https://files.pythonhosted.org/packages/23/f4/279d044f66b79261fd37df76bf72b64471afab5d3b7906a01499c4451910/ruff-0.6.2.tar.gz", hash = "sha256:239ee6beb9e91feb8e0ec384204a763f36cb53fb895a1a364618c6abb076b3be", size = 2460281 } 487 | wheels = [ 488 | { url = "https://files.pythonhosted.org/packages/72/4b/47dd7a69287afb4069fa42c198e899463605460a58120196711bfcf0446b/ruff-0.6.2-py3-none-linux_armv6l.whl", hash = "sha256:5c8cbc6252deb3ea840ad6a20b0f8583caab0c5ef4f9cca21adc5a92b8f79f3c", size = 9695871 }, 489 | { url = "https://files.pythonhosted.org/packages/ae/c3/8aac62ac4638c14a740ee76a755a925f2d0d04580ab790a9887accb729f6/ruff-0.6.2-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:17002fe241e76544448a8e1e6118abecbe8cd10cf68fde635dad480dba594570", size = 9459354 }, 490 | { url = "https://files.pythonhosted.org/packages/2f/cf/77fbd8d4617b9b9c503f9bffb8552c4e3ea1a58dc36975e7a9104ffb0f85/ruff-0.6.2-py3-none-macosx_11_0_arm64.whl", hash = "sha256:3dbeac76ed13456f8158b8f4fe087bf87882e645c8e8b606dd17b0b66c2c1158", size = 9163871 }, 491 | { url = "https://files.pythonhosted.org/packages/05/1c/765192bab32b79efbb498b06f0b9dcb3629112b53b8777ae1d19b8209e09/ruff-0.6.2-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:094600ee88cda325988d3f54e3588c46de5c18dae09d683ace278b11f9d4d534", size = 10096250 }, 492 | { url = "https://files.pythonhosted.org/packages/08/d0/86f3cb0f6934c99f759c232984a5204d67a26745cad2d9edff6248adf7d2/ruff-0.6.2-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:316d418fe258c036ba05fbf7dfc1f7d3d4096db63431546163b472285668132b", size = 9475376 }, 493 | { url = "https://files.pythonhosted.org/packages/cd/cc/4c8d0e225b559a3fae6092ec310d7150d3b02b4669e9223f783ef64d82c0/ruff-0.6.2-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d72b8b3abf8a2d51b7b9944a41307d2f442558ccb3859bbd87e6ae9be1694a5d", size = 10295634 }, 494 | { url = "https://files.pythonhosted.org/packages/db/96/d2699cfb1bb5a01c68122af43454c76c31331e1c8a9bd97d653d7c82524b/ruff-0.6.2-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:2aed7e243be68487aa8982e91c6e260982d00da3f38955873aecd5a9204b1d66", size = 11024941 }, 495 | { url = "https://files.pythonhosted.org/packages/8b/a9/6ecd66af8929e0f2a1ed308a4137f3521789f28f0eb97d32c2ca3aa7000c/ruff-0.6.2-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d371f7fc9cec83497fe7cf5eaf5b76e22a8efce463de5f775a1826197feb9df8", size = 10606894 }, 496 | { url = "https://files.pythonhosted.org/packages/e4/73/2ee4cd19f44992fedac1cc6db9e3d825966072f6dcbd4032f21cbd063170/ruff-0.6.2-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a8f310d63af08f583363dfb844ba8f9417b558199c58a5999215082036d795a1", size = 11552886 }, 497 | { url = "https://files.pythonhosted.org/packages/60/4c/c0f1cd35ce4a93c54a6bb1ee6934a3a205fa02198dd076678193853ceea1/ruff-0.6.2-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7db6880c53c56addb8638fe444818183385ec85eeada1d48fc5abe045301b2f1", size = 10264945 }, 498 | { url = "https://files.pythonhosted.org/packages/c4/89/e45c9359b9cdd4245512ea2b9f2bb128a997feaa5f726fc9e8c7a66afadf/ruff-0.6.2-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:1175d39faadd9a50718f478d23bfc1d4da5743f1ab56af81a2b6caf0a2394f23", size = 10100007 }, 499 | { url = "https://files.pythonhosted.org/packages/06/74/0bd4e0a7ed5f6908df87892f9bf60a2356c0fd74102d8097298bd9b4f346/ruff-0.6.2-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:5b939f9c86d51635fe486585389f54582f0d65b8238e08c327c1534844b3bb9a", size = 9559267 }, 500 | { url = "https://files.pythonhosted.org/packages/54/03/3dc6dc9419f276f05805bf888c279e3e0b631284abd548d9e87cebb93aec/ruff-0.6.2-py3-none-musllinux_1_2_i686.whl", hash = "sha256:d0d62ca91219f906caf9b187dea50d17353f15ec9bb15aae4a606cd697b49b4c", size = 9905304 }, 501 | { url = "https://files.pythonhosted.org/packages/5c/5b/d6a72a6a6bbf097c09de468326ef5fa1c9e7aa5e6e45979bc0d984b0dbe7/ruff-0.6.2-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:7438a7288f9d67ed3c8ce4d059e67f7ed65e9fe3aa2ab6f5b4b3610e57e3cb56", size = 10341480 }, 502 | { url = "https://files.pythonhosted.org/packages/79/a9/0f2f21fe15ba537c46598f96aa9ae4a3d4b9ec64926664617ca6a8c772f4/ruff-0.6.2-py3-none-win32.whl", hash = "sha256:279d5f7d86696df5f9549b56b9b6a7f6c72961b619022b5b7999b15db392a4da", size = 7961901 }, 503 | { url = "https://files.pythonhosted.org/packages/b0/80/fff12ffe11853d9f4ea3e5221e6dd2e93640a161c05c9579833e09ad40a7/ruff-0.6.2-py3-none-win_amd64.whl", hash = "sha256:d9f3469c7dd43cd22eb1c3fc16926fb8258d50cb1b216658a07be95dd117b0f2", size = 8783320 }, 504 | { url = "https://files.pythonhosted.org/packages/56/91/577cdd64cce5e74d3f8b5ecb93f29566def569c741eb008aed4f331ef821/ruff-0.6.2-py3-none-win_arm64.whl", hash = "sha256:f28fcd2cd0e02bdf739297516d5643a945cc7caf09bd9bcb4d932540a5ea4fa9", size = 8225886 }, 505 | ] 506 | 507 | [[package]] 508 | name = "six" 509 | version = "1.16.0" 510 | source = { registry = "https://pypi.org/simple" } 511 | sdist = { url = "https://files.pythonhosted.org/packages/71/39/171f1c67cd00715f190ba0b100d606d440a28c93c7714febeca8b79af85e/six-1.16.0.tar.gz", hash = "sha256:1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926", size = 34041 } 512 | wheels = [ 513 | { url = "https://files.pythonhosted.org/packages/d9/5a/e7c31adbe875f2abbb91bd84cf2dc52d792b5a01506781dbcf25c91daf11/six-1.16.0-py2.py3-none-any.whl", hash = "sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254", size = 11053 }, 514 | ] 515 | 516 | [[package]] 517 | name = "urllib3" 518 | version = "2.2.2" 519 | source = { registry = "https://pypi.org/simple" } 520 | sdist = { url = "https://files.pythonhosted.org/packages/43/6d/fa469ae21497ddc8bc93e5877702dca7cb8f911e337aca7452b5724f1bb6/urllib3-2.2.2.tar.gz", hash = "sha256:dd505485549a7a552833da5e6063639d0d177c04f23bc3864e41e5dc5f612168", size = 292266 } 521 | wheels = [ 522 | { url = "https://files.pythonhosted.org/packages/ca/1c/89ffc63a9605b583d5df2be791a27bc1a42b7c32bab68d3c8f2f73a98cd4/urllib3-2.2.2-py3-none-any.whl", hash = "sha256:a448b2f64d686155468037e1ace9f2d2199776e17f0a46610480d311f73e3472", size = 121444 }, 523 | ] 524 | 525 | [[package]] 526 | name = "watchdog" 527 | version = "4.0.2" 528 | source = { registry = "https://pypi.org/simple" } 529 | sdist = { url = "https://files.pythonhosted.org/packages/4f/38/764baaa25eb5e35c9a043d4c4588f9836edfe52a708950f4b6d5f714fd42/watchdog-4.0.2.tar.gz", hash = "sha256:b4dfbb6c49221be4535623ea4474a4d6ee0a9cef4a80b20c28db4d858b64e270", size = 126587 } 530 | wheels = [ 531 | { url = "https://files.pythonhosted.org/packages/92/f5/ea22b095340545faea37ad9a42353b265ca751f543da3fb43f5d00cdcd21/watchdog-4.0.2-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:1cdcfd8142f604630deef34722d695fb455d04ab7cfe9963055df1fc69e6727a", size = 100342 }, 532 | { url = "https://files.pythonhosted.org/packages/cb/d2/8ce97dff5e465db1222951434e3115189ae54a9863aef99c6987890cc9ef/watchdog-4.0.2-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:d7ab624ff2f663f98cd03c8b7eedc09375a911794dfea6bf2a359fcc266bff29", size = 92306 }, 533 | { url = "https://files.pythonhosted.org/packages/49/c4/1aeba2c31b25f79b03b15918155bc8c0b08101054fc727900f1a577d0d54/watchdog-4.0.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:132937547a716027bd5714383dfc40dc66c26769f1ce8a72a859d6a48f371f3a", size = 92915 }, 534 | { url = "https://files.pythonhosted.org/packages/79/63/eb8994a182672c042d85a33507475c50c2ee930577524dd97aea05251527/watchdog-4.0.2-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:cd67c7df93eb58f360c43802acc945fa8da70c675b6fa37a241e17ca698ca49b", size = 100343 }, 535 | { url = "https://files.pythonhosted.org/packages/ce/82/027c0c65c2245769580605bcd20a1dc7dfd6c6683c8c4e2ef43920e38d27/watchdog-4.0.2-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:bcfd02377be80ef3b6bc4ce481ef3959640458d6feaae0bd43dd90a43da90a7d", size = 92313 }, 536 | { url = "https://files.pythonhosted.org/packages/2a/89/ad4715cbbd3440cb0d336b78970aba243a33a24b1a79d66f8d16b4590d6a/watchdog-4.0.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:980b71510f59c884d684b3663d46e7a14b457c9611c481e5cef08f4dd022eed7", size = 92919 }, 537 | { url = "https://files.pythonhosted.org/packages/8a/b1/25acf6767af6f7e44e0086309825bd8c098e301eed5868dc5350642124b9/watchdog-4.0.2-py3-none-manylinux2014_aarch64.whl", hash = "sha256:936acba76d636f70db8f3c66e76aa6cb5136a936fc2a5088b9ce1c7a3508fc83", size = 82947 }, 538 | { url = "https://files.pythonhosted.org/packages/e8/90/aebac95d6f954bd4901f5d46dcd83d68e682bfd21798fd125a95ae1c9dbf/watchdog-4.0.2-py3-none-manylinux2014_armv7l.whl", hash = "sha256:e252f8ca942a870f38cf785aef420285431311652d871409a64e2a0a52a2174c", size = 82942 }, 539 | { url = "https://files.pythonhosted.org/packages/15/3a/a4bd8f3b9381824995787488b9282aff1ed4667e1110f31a87b871ea851c/watchdog-4.0.2-py3-none-manylinux2014_i686.whl", hash = "sha256:0e83619a2d5d436a7e58a1aea957a3c1ccbf9782c43c0b4fed80580e5e4acd1a", size = 82947 }, 540 | { url = "https://files.pythonhosted.org/packages/09/cc/238998fc08e292a4a18a852ed8274159019ee7a66be14441325bcd811dfd/watchdog-4.0.2-py3-none-manylinux2014_ppc64.whl", hash = "sha256:88456d65f207b39f1981bf772e473799fcdc10801062c36fd5ad9f9d1d463a73", size = 82946 }, 541 | { url = "https://files.pythonhosted.org/packages/80/f1/d4b915160c9d677174aa5fae4537ae1f5acb23b3745ab0873071ef671f0a/watchdog-4.0.2-py3-none-manylinux2014_ppc64le.whl", hash = "sha256:32be97f3b75693a93c683787a87a0dc8db98bb84701539954eef991fb35f5fbc", size = 82947 }, 542 | { url = "https://files.pythonhosted.org/packages/db/02/56ebe2cf33b352fe3309588eb03f020d4d1c061563d9858a9216ba004259/watchdog-4.0.2-py3-none-manylinux2014_s390x.whl", hash = "sha256:c82253cfc9be68e3e49282831afad2c1f6593af80c0daf1287f6a92657986757", size = 82944 }, 543 | { url = "https://files.pythonhosted.org/packages/01/d2/c8931ff840a7e5bd5dcb93f2bb2a1fd18faf8312e9f7f53ff1cf76ecc8ed/watchdog-4.0.2-py3-none-manylinux2014_x86_64.whl", hash = "sha256:c0b14488bd336c5b1845cee83d3e631a1f8b4e9c5091ec539406e4a324f882d8", size = 82947 }, 544 | { url = "https://files.pythonhosted.org/packages/d0/d8/cdb0c21a4a988669d7c210c75c6a2c9a0e16a3b08d9f7e633df0d9a16ad8/watchdog-4.0.2-py3-none-win32.whl", hash = "sha256:0d8a7e523ef03757a5aa29f591437d64d0d894635f8a50f370fe37f913ce4e19", size = 82935 }, 545 | { url = "https://files.pythonhosted.org/packages/99/2e/b69dfaae7a83ea64ce36538cc103a3065e12c447963797793d5c0a1d5130/watchdog-4.0.2-py3-none-win_amd64.whl", hash = "sha256:c344453ef3bf875a535b0488e3ad28e341adbd5a9ffb0f7d62cefacc8824ef2b", size = 82934 }, 546 | { url = "https://files.pythonhosted.org/packages/b0/0b/43b96a9ecdd65ff5545b1b13b687ca486da5c6249475b1a45f24d63a1858/watchdog-4.0.2-py3-none-win_ia64.whl", hash = "sha256:baececaa8edff42cd16558a639a9b0ddf425f93d892e8392a56bf904f5eff22c", size = 82933 }, 547 | ] 548 | --------------------------------------------------------------------------------