expertanalytics / cvcreator Goto Github PK
View Code? Open in Web Editor NEWAn automated tool for creating CVs on the fly.
An automated tool for creating CVs on the fly.
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.
example.toml
with the following content:
name = "Alice Green"
[[project]]
activity = "project name"
description = "long description"
tools = "Python, ..."
1.1.14
of cvcreator
:
pip install cvcreator==1.1.14
cv create example.toml example.pdf --projects :
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.
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
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.
A user can define a skill multiple times and it would all be mentioned in the CV.
Expected behaviour:
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.
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.
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.
Parse and validate the date string.
Give an appropriate error when the string is invalid.
Update all dates in internal.
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.
cvcreator does not check for duplicate technical skills as I learned to my chagrin.
What is the best solution?
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, ..."
- ...
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.
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?
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
The yaml should be validated against a list of valid languages and the correct typing
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.
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.
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.
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:
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.
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.
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.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.