Source code for pyexlatex.resume.resume

from typing import List, Optional, Sequence, Union, Callable
from pyexlatex.models.document import DocumentBase
from pyexlatex.typing import ItemOrListOfItems
from pyexlatex.models.package import Package
from pyexlatex.models.control.documentclass.documentclass import DocumentClass
from pyexlatex.resume.models.name import Name
from pyexlatex.resume.models.contactline import ContactLine


[docs]class Resume(DocumentBase): """ The main high-level class for creating resumes """ name = 'document'
[docs] def __init__(self, content: ItemOrListOfItems, packages: List[Package]=None, pre_env_contents: Optional[ItemOrListOfItems] = None, name: Optional[str] = None, contact_lines: Optional[Sequence[Union[str, Sequence[str]]]] = None, font_size: Optional[float] = 11, page_modifier_str: Optional[str]='left=0.75in,top=0.6in,right=0.75in,bottom=0.6in', authors: Optional[Union[str, Sequence[str]]] = None, pre_output_func: Optional[Callable] = None): self.init_data() self.document_class_obj = DocumentClass( document_type='resume', font_size=font_size, ) from pyexlatex.models.item import ItemBase if pre_env_contents is None: pre_env_contents_list = [] elif isinstance(pre_env_contents, (ItemBase, str)): pre_env_contents_list = [pre_env_contents] else: pre_env_contents_list = pre_env_contents # type: ignore name = self._get_name(name, authors) if name is not None: pre_env_contents_list.append( Name(name) ) if contact_lines is not None: pre_env_contents_list.extend( [ContactLine(contact_info) for contact_info in contact_lines] ) if page_modifier_str is not None: # Set margins, body size, etc. with geometry package self.data.packages.append(Package('geometry', modifier_str=page_modifier_str)) super().__init__( content, packages=packages, pre_env_contents=pre_env_contents_list, pre_output_func=pre_output_func, )
def _get_name(self, name: Optional[str] = None, authors: Optional[Union[str, Sequence[str]]] = None): if authors is None: return name elif name is None: # Authors is passed, name is not if isinstance(authors, (list, tuple)): authors = authors[0] return authors # Both name and author passed if name == authors: return name # Name and author are not the same raise ValueError(f'got different name and authors, not clear which to use. name: {name}, authors: {authors}')