Giter Club home page Giter Club logo

cvcreator's People

Contributors

aless80 avatar alexanfl avatar bzapf avatar cebasfu93 avatar dependabot[bot] avatar eigilhs avatar eistaa avatar fredrikmeyer avatar gmkvaal avatar jakobes avatar jonathf avatar kateheerema avatar kememil avatar mandus avatar mendokokubun avatar naeemedmo avatar oo1insane1oo avatar roberhag avatar sigmunsl avatar signeriemer avatar stianlagstad avatar thomasgolding avatar vegarvi avatar vgeck avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

cvcreator's Issues

Missing "Tools" title in project description

Problem

I noticed that the "Tools" title in project descriptions is missing in the current version of cvcreator (see screenshots below). In the previous versions, such as 1.1.12, the titles are rendered correctly.

Steps to reproduce:

  1. Create a file example.toml with the following content:
    name = "Alice Green"
    
    [[project]]
    activity = "project name"
    description = "long description"
    tools = "Python, ..."
  2. Install version 1.1.14 of cvcreator:
    pip install cvcreator==1.1.14
  3. Create a PDF using the flag to include all projects:
    cv create example.toml example.pdf --projects :

Possible reason

I see that recently a feature was added, which allows to create a PDF with Norwegian titles. The problem is maybe somewhere there. By the way, creating a CV with --norwegian flag results in a PDF with correct Norwegian titles, but the "Tools" title is again missing.

Cannot import name 'soft_unicode' from 'markupsafe

After a new install (also notice an unrelated error with wheel on my fresh install):

Collecting cvcreator
  Using cached cvcreator-1.1.3-py3-none-any.whl (216 kB)
Collecting toml<0.11.0,>=0.10.2
  Using cached toml-0.10.2-py2.py3-none-any.whl (16 kB)
Collecting PyYAML<6.0.0,>=5.4.1
  Using cached PyYAML-5.4.1-cp38-cp38-manylinux1_x86_64.whl (662 kB)
Collecting pydantic<2.0.0,>=1.8.1
  Using cached pydantic-1.9.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (12.6 MB)
Collecting Jinja2<3.0.0,>=2.11.3
  Using cached Jinja2-2.11.3-py2.py3-none-any.whl (125 kB)
Collecting pycountry<21.0.0,>=20.7.3
  Using cached pycountry-20.7.3.tar.gz (10.1 MB)
Collecting click<9.0.0,>=8.0.1
  Using cached click-8.0.4-py3-none-any.whl (97 kB)
Collecting click-help-colors<0.10,>=0.9
  Using cached click_help_colors-0.9.1-py3-none-any.whl (5.5 kB)
Collecting typing-extensions>=3.7.4.3
  Using cached typing_extensions-4.1.1-py3-none-any.whl (26 kB)
Collecting MarkupSafe>=0.23
  Using cached MarkupSafe-2.1.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (25 kB)
Building wheels for collected packages: pycountry
  Building wheel for pycountry (setup.py) ... error
  ERROR: Command errored out with exit status 1:
   command: /home/amarin/xal/cvcreator/venv/bin/python -u -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'/tmp/pip-install-r7be6k1r/pycountry/setup.py'"'"'; __file__='"'"'/tmp/pip-install-r7be6k1r/pycountry/setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(__file__);code=f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' bdist_wheel -d /tmp/pip-wheel-t8q0c9id
       cwd: /tmp/pip-install-r7be6k1r/pycountry/
  Complete output (6 lines):
  usage: setup.py [global_opts] cmd1 [cmd1_opts] [cmd2 [cmd2_opts] ...]
     or: setup.py --help [cmd1 cmd2 ...]
     or: setup.py --help-commands
     or: setup.py cmd --help
  
  error: invalid command 'bdist_wheel'
  ----------------------------------------
  ERROR: Failed building wheel for pycountry
  Running setup.py clean for pycountry
Failed to build pycountry
Installing collected packages: toml, PyYAML, typing-extensions, pydantic, MarkupSafe, Jinja2, pycountry, click, click-help-colors, cvcreator
    Running setup.py install for pycountry ... done
Successfully installed Jinja2-2.11.3 MarkupSafe-2.1.0 PyYAML-5.4.1 click-8.0.4 click-help-colors-0.9.1 cvcreator-1.1.3 pycountry-20.7.3 pydantic-1.9.0 toml-0.10.2 typing-extensions-4.1.1

cv create does not work:

(venv) cv create AlessandroMarin.toml
Traceback (most recent call last):
  File "/home/amarin/xal/cvcreator/venv/bin/cv", line 5, in <module>
    from cvcreator.parser import cv
  File "/home/amarin/xal/cvcreator/venv/lib/python3.8/site-packages/cvcreator/parser.py", line 13, in <module>
    from .template import load_template
  File "/home/amarin/xal/cvcreator/venv/lib/python3.8/site-packages/cvcreator/template.py", line 5, in <module>
    from jinja2 import Template
  File "/home/amarin/xal/cvcreator/venv/lib/python3.8/site-packages/jinja2/__init__.py", line 12, in <module>
    from .environment import Environment
  File "/home/amarin/xal/cvcreator/venv/lib/python3.8/site-packages/jinja2/environment.py", line 25, in <module>
    from .defaults import BLOCK_END_STRING
  File "/home/amarin/xal/cvcreator/venv/lib/python3.8/site-packages/jinja2/defaults.py", line 3, in <module>
    from .filters import FILTERS as DEFAULT_FILTERS  # noqa: F401
  File "/home/amarin/xal/cvcreator/venv/lib/python3.8/site-packages/jinja2/filters.py", line 13, in <module>
    from markupsafe import soft_unicode
ImportError: cannot import name 'soft_unicode' from 'markupsafe' (/home/amarin/xal/cvcreator/venv/lib/python3.8/site-packages/markupsafe/__init__.py)

By downgrading Jinja2 and overlooking a warning from cvcreator, cv create works again

(venv) pip freeze | grep Jin
Jinja2==2.11.3

(venv) pip uninstall Jinja2
(venv) pip install Jinja2<2.1.0
Collecting Jinja2
  Using cached Jinja2-3.0.3-py3-none-any.whl (133 kB)
Requirement already satisfied: MarkupSafe>=2.0 in ./venv/lib/python3.8/site-packages (from Jinja2) (2.1.0)
ERROR: cvcreator 1.1.3 has requirement Jinja2<3.0.0,>=2.11.3, but you'll have jinja2 3.0.3 which is incompatible.
Installing collected packages: Jinja2
Successfully installed Jinja2-3.0.3

Maybe this helps: pallets/jinja#1585

RFC: Make target for Hugo

I propose we stop updating the profiles on the web and instead only use internal repo + cvcreator as the only source of content for both CVs and website profiles.

Benefits

  • Employees only have to update content in one place. If they update their CV, they get website update for free.
  • New fields and features will have the same effect. Add e.g. tech skill icons to the CVs and we can with little effort add it to the website as well.

Requirements

  • Cvcreator will need to be able to create Hugo content.
  • Website builder (source hut) needs to be able to retrieve CV content from the internal repository, and generate appropriate files using cvcreator during build.

Duplicate skills

A user can define a skill multiple times and it would all be mentioned in the CV.

Expected behaviour:

  • Ignore multiple declaration
    or
  • Give and error and ask user to remove the multiple declaration

Tech skill tree

This builds on the ideas of #35, tries to solve #21, and pave the way for #20 and #22.

I propose we create a tech skill tree E.g.

* Platforms
   * OS
      Apple
      Linux
      Microsoft Windows
   * Cloud Computing
      Docker
      Kubernetes
* Languages
   * Scripting
      Bash
      Python
   * Performance code
      C
      Rust
   C++
* Tools
...

Think of it as a nested fold structure with files.
E.g. Languages/Scripting/Bash can be grouped with both Languages and Scripting.

This allows us some wiggle room to specificity in the CV, as there might be many employees that have too few elements in a specific sub-category for it to make sense to have them clustered in only one specific way. But if they show the skills for one level up, the list gets wider. This is also an advantage from an aggregation point of view, as it allows different grain sized filters.

If this sounds like a good idea I can make a PR with a first pass of such a nested list containing all our skills we share in the XAL CVs currently that we can discuss the particulars on.

Default projects

When manually created the user can control which projects to include. But as we are automating the process what to include is either none or all projects.

So instead we should add an extra binary flag to each projects indicating what should be included in the default CV when auto-generating.

If feasible, first round of defaults should be gather from the old pdf files created by each employee.

Validation: Nationality

Use a hard-coded list of all known countries (and perhaps all 2- or 3-letter country codes as identifiers).

Validate user input and give an appropriate error when invalid country name is entered.

Update all CVs in internal.

Validation: birthday

Parse and validate the date string.

Give an appropriate error when the string is invalid.

Update all dates in internal.

Add tag "xal" to "Projects" as an optional tag

Introduce a new tag to the "Projects" key in order to include projects conducted as an xal-employee in an aggregated company-wide CV. The tag should be optional to avoid conflict with existing CVs.

Duplicate skills

cvcreator does not check for duplicate technical skills as I learned to my chagrin.

What is the best solution?

  • Remove duplicates automatically?
  • Throw an error?

Add key "Scientific" under "Skills"

Add the key «Scientific» under «Skills» in example.yaml and generate default.pdf with new field
Skills:
Scientific:
- "applications like Machine learning, Optimization algorithms, Open source programming, stuff from projects, ..."
- ...

add posibility to change nationality

The nationality is set to norwegian, but some people are eg. born in danmark or germany, we need an optional input to be able to adapt to that fact.

Moving meta-info out of the way

Personal preference perhaps, but I think the first section in our CVs (address, phone, etc.) are not really part of the CV, and should be moved out of the way,

Something like this where it is moved up to the left corner, icons instead of text and with a smaller font size:
feinberg2.pdf

Is this something that makes sense to more than just me?

Add template for generating aggregated CV output.pdf

Proposed output:

Header: Expert analytics

Summary: General description of XAL. Stored in a separate yaml-file.

Technical skills:

Scientific: List all. Alternatively present number of consultants with the relevant experience.
Frameworks: List all
Languages: List all
Tools: List all

Extended descriptions of selected projects: Tag relevant projects with XAL

Add functionality for aggregating items under "Skills"

In cvcreate, add functionality for aggregating items listed under “Skills”. Duplicate entries under “Frameworks”, “Languages”, and “Tools” should be listed once. Duplicate entries under “Scientific” could either be listed once, or presented as number of consultants with this specific experience.

Validate: Education

Add a new field to education that specifies what the education is and limit it to something like BSc, MSc, PhD, Postdoc, Researcher, ....

Update template with new flag, and all TOMLs in internal.

Allow for empty defaults for now for backwards compatability, but add a message of future deprecation.

Add parser for creating aggregated CV

In cvcreate, add parser for running cvcreate_aggregated with path to personal yaml-Cvs or list of input yaml-CVs. This should load all personal yaml-Cvs and possibly a separate xal.yaml-file.

RFC: Updating the user source files

The code for converting our yaml source files to latex code is messy because the yaml is nested with lots of different structures. This has forced the code to solve everything recursively and with lots of edge case handling.

Consider the example:

Summary: >                   # one level string
    Some long description
Basic:
    name: Jonathan           # two level string
Languages:
    Norwegian: Fluent        # two level string with indeterminant key
Skill:
    Language: [Bash, C]      # two level list with indeterminant key
Education:
    - [2015, "PhD"]          # one level list of 2-tuple

Work:
    - [2016, "", Consultant] # one level list of 3-tuple
Interests:
    Personal:
        - Traveling          # two level sometimes list sometimes string
Projects:
    A1:
        Activity: Vipps
        Role: Senior Developer
        Staffing: 20 devs
        Period: 2016 -- 2020
        Description: ML      # three level string

As long as we keep this format, cleaning up the code is going to be hard.
So lets clean it up and make it as flat. For example for the yaml above:

summary: >
    Some long description
name:                   Jonathan
language1_key:          Norwegian
language1_value:        Fluent
skillgroup1_key:        Language
skillgroup1_value:      [Bash, C]
education1:             [2015, "PhD"]
work1:                  [2016, "", Consultant]
project1_activity:      Vipps
project1_role:          Senior Developer
project1_staffing:      20 devs
project1_period:        2016 -- 2020
project1_description:   ML

Things to note here:

  • Making a script converting from one to the other should be trivial.
  • YAML is super feature rich, and though not that important, replacing the fileformat with e.g. TOML or INI might be a good idea as it gives a stronger visual indicator of a switch.
  • Making a new latex template target becomes super simple as a template can now be made super simple using Python f-string.

Tech-skill URLs

Update the list of valid tech skills to include project URLs.
In latex/pdf they are mostly useless, but if we choose to make web-targets, they can be used to make clickable badges.

As tech-skills get another field, but is unused in current setup, no update to internal is needed for this.

The `-t banking` option not working

When using the -t banking optional in cvcreate, an error message is given. The attempt was done using Turkish as nationality, but not sure this is related.

Installation on OS X

Hi!

I tried installing this on OS X, but ran into a problem when installing pyyaml. This stackoverflow post led me to the following solution:

CC=$(which python) pip install pyyaml

Perhaps it would be an idea to add this to the README.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.