- Update hypothesis to latest version (>=6.151.9)
- Remove pythonpath pytest config (was only needed for tests.strategies)
- Consolidate classic_theme.py into single file with all design models
- Move Hypothesis strategies from strategies.py into their test files
- Add noqa: ARG001 to unused yaml_field_override CLI parameter
- Fix lint and type errors across the codebase
The regex in remove_not_provided_placeholders used a bare alternation
without word boundaries, so removing placeholder "AA" would also
destroy "AAA" in the same template. Fix: add \b word boundaries and
sort longest-first.
Also add Hypothesis tests for:
- remove_not_provided_placeholders: provided keys survive removal
- remove_connectors_of_missing_placeholders: connectors removed/preserved
- validate_arbitrary_date: pass-through for valid dates and custom text
- Mastodon URL: domain and username appear in generated URL
Removed tests that were running 100 random inputs through string
operations that can never fail regardless of input:
- process_highlights: fuzzing "- " + string prepend
- process_authors: fuzzing ", ".join()
- PublicationEntry DOI URL: fuzzing f"https://doi.org/{doi}"
These tests add execution time without any chance of finding bugs.
Test that random valid DOI strings always produce the correct
https://doi.org/ URL. Removed the useless test_doi_clears_url that
was just re-verifying a static validator with random irrelevant input.
- date_only_clears_start_and_end: providing date nullifies start/end
- start_only_implies_present: start without end defaults to "present"
- end_only_becomes_date: end without start treated as single date
Merge property-based tests into existing test classes per the project
testing rules: multiple tests for the same function belong in a
TestFunctionName class.
- TestEscapeTypstCharactersProperties merged into TestEscapeTypstCharacters
- TestMarkdownToTypstProperties merged into TestMarkdownToTypst
- TestBuildDatePlaceholdersProperties merged into TestBuildDatePlaceholders
- TestComputeTimeSpanStringProperties merged into TestComputeTimeSpanString
- TestGetDateObjectProperties renamed to TestGetDateObject
- TestApplyOverridesProperties merged into TestApplyOverridesToDictionary
- TestUpdateValueByLocationProperties merged into TestUpdateValueByLocation
- TestResolveOutputFolderPlaceholderProperties merged into TestResolveOutputFolderPlaceholder
- TestBuildNameVariantsProperties renamed to TestBuildNameVariants
- TestTypstDimensionProperties renamed to TestTypstDimension
- TestSocialNetworkUsernameProperties merged into TestSocialNetwork
Move all 55 property-based tests from tests/test_hypothesis.py into
the existing test files for each module they test:
- test_string_processor.py: keyword bolding, placeholder, URL, pattern
- test_markdown_parser.py: Typst escaping, markdown-to-typst
- test_date.py: date parsing, placeholders, time spans
- test_override_dictionary.py: immutability, path traversal
- test_path_resolver.py: name variants, OUTPUT_FOLDER resolution
- test_classic_theme.py: Typst dimension validation
- test_social_network.py: username format validation
Reusable Hypothesis strategies live in tests/strategies.py. Added
pythonpath=["."] to pyproject.toml so tests can import the strategies
module.
Extract three modules from classic_theme.py (845 lines) to improve
navigability:
- templates.py: entry template option models and Templates class
- typography.py: Typography, FontFamily config, FontSize, SmallCaps, Bold
- header.py: Header, Connections, Links, PhoneNumberFormatType
classic_theme.py retains Page, Colors, Sections, Entries, and
ClassicTheme. All imports use absolute paths so the custom theme
generator (which copies classic_theme.py as text) continues to work.
Template entry option classes renamed from e.g. OneLineEntry to
OneLineEntryTemplate to avoid name collision with CV entry models.
Add a cached_property that maps each language to its primary country's
flag emoji using regional indicator symbols, with tests and updated
developer guide.
When using CLI overrides like `--design.theme "moderncv"` with a separate
design file, `update_value_by_location` crashed with `KeyError: 'design'`
because intermediate dictionary keys were not auto-created during traversal.
Now missing intermediate keys are initialized as empty dicts, allowing
overrides to work regardless of whether the target section exists in the
main YAML.
The FontFamily JSON schema used a strict enum that rejected custom and system
fonts like Georgia. Changed from SkipJsonSchema[str] to plain str in the union
type, so the generated schema uses anyOf with both the known font enum (for
editor autocomplete) and a generic string type (for arbitrary fonts).
- Add SKILL.md for AI agents: YAML schema reference, entry type field
tables, design samples per theme, CLI reference, and important patterns
(YAML quoting, phone validation, bullet characters)
- Add Jinja2 template and generate.py that auto-generates SKILL.md and
docs/llms.txt from live Pydantic models and sample generators
- Add promptfoo eval suite (15 tests across 4 files): cv_generation,
pdf_parsing, design, and cli_workflow
- Add deterministic grader that validates LLM output through RenderCV's
own pydantic pipeline (not jsonschema)
* cv section: add title field in order to customize the title of produced documents
* Sync branch with origin/main
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* Implement
* Use NAME - CV as pdf_title
---------
Co-authored-by: Sina Atalay <79940989+sinaatalay@users.noreply.github.com>
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
* feat: Add Arabic locale support and update Typst preamble template.
* feat: add rtl support for the Full.html template
* fix: change "'s CV" hardcoded word in the html/md outputs and make it changeable to support different languages.
* test: add tests for RTL support
* test: add tests for RTL support
* Improve implementation
* Update testdata
* Fix merge issues
* Simplify
* Add test and use type hints with type adapters
* Fix `just check` errors
---------
Co-authored-by: Khalid <khalid.pro.968@gmail.com>
Co-authored-by: Sina Atalay <79940989+sinaatalay@users.noreply.github.com>
* test: 🧪 design file applies with settings file
* fix: preserve design/locale paths when using --settings flag
* test: 🧪 skipping render commands works
* fix: ensure render_command settings are initialized in build_rendercv_dictionary
* fix: prefix unused variable with underscore to satisfy ruff RUF059
* Rename `data` folder with schema
* Start refactoring data models
* Work on entry models
* Keep working on entries
* Keep working on data models
* Push old data files
* Keep working on data models
* First draft of schema.cv
* Keep working on schema
* Keep working on schema
* Improve schema.models
* Keep working on rendercv.schema
* Work on schema.design
* Keep working on rendercv.schema
* Complete variant_class_generator
* Keep working rendercv.schema
* Keep working on rendercv.schema
* Final touches to rendercv.schema
* Improve json schema descriptions in rendercv.schema
* Start working on rendercv.schema tests
* Keep implementing rendercv.schema tests
* Add more tests for rendercv.schema
* Improve rendercv.schema
* Improve docstrings and comments in rendercv.schema
* Implement better pydantic error handling in `rendercv.schema`
* Improve variant class system
* Fix rendercv.schema tests
* Start working on rendercv.templater
* Update template names
* Switching to new rendercv typst template soon
* Work on new templater
* Rename renderer with renderer_old
* Don't use utils in rendercv.schema
* Complete connections
* Update renderer folder structure
* Work on new renderer
* Work on new renderer
* Date processing on new renderer
* Improve date processing, support multiple emails, phones, and websites
* Improve markdown to Typst
* Complete entry template processing
* Time span computation in new renderer
* Better entry templates
* Setup new templates
* Improve rendercv.schema
* Start adding tests for rendercv.renderer
* New markdown parser!
* Improve markdown to typst conversion
* Finalize markdown parser
* Add new test files for rendercv.renderer
* Fix cv and connections
* Add connections test
* Improve connection tests
* Improve entry templates
* Add model processor tests
* Improve templater
* Rename old folders
* Improve schema
* Add file generation logic to renderer
* Fix naming issues
* Fix schema tests
* Add path type tests
* Add font family and typst dimension type tests
* Rename old tests
* Fix design tests
* Start integration testing of renderer
* Improve entry tempates
* Handle nested highlights properly
* Finalize Typst preamble template
* Start working on new CLI
* Remove old test files
* Implement override dictionary in new schema
* Start working on new CLI
* Better prints on render command
* New structure
* New render printer
* Add all the commands to new CLI
* Work on new command in new cli
* Improve new command
* Add error handler to new cli
* Work on create theme command
* Complete create theme command
* Remove old source files
* Improve exceptions
* Create new docs
* Add writing tests guide
* Fix cli printer and write tests
* Test copy templates
* Add app tests
* Bring back accidentally removed files
* Imporve cli and tests
* Fix path issues
* Improve
* Improve
* Add reference file comparison tests
* Fix path resolver
* Start working on test_pdf_png
* Implement comparison of multiple files (png)
* Start testing typst
* Fix templating issues
* Fix header and entry templates issues
* Implement short second rows
* Fix date issues
* Fix nested bullets and add summary
* Update testdata
* Implement footer
* Update testdata
* Reimagined design and locale schema, first iteration
* Reimagined design and locale second iteration
* Update design and locale schemas
* Adapt templater to the new design and locale
* Fix tests
* Update lib.typ and testdata for the new locale and design
* Implement proper tests with all combinations of entries
* Remove some docstrings
* fix connections logic
* Improve
* Start working on examples
* Update testdata
* Fix long second row issue
* fix templating issues
* Fix lib.typ issues
* Update testdata
* Fix clean_trailing_parts
* Update test cv
* update test cv
* Update theme defaults
* update schema and fix moderncv
* Fix moderncv issues
* Update testdata
* Update testdata and examples
* Fix issues about photo
* Fix typst photo path issues
* improve entry templates from yaml
* add new locale
* Rename writing tests doc
* Update writing tests
* Improve tests
* Add more cli tests
* Increase test coverage
* Rename variant pydantic model generator
* Improve tests
* Update testdata and improve tests
* Format, fix pre-commit errors
* Fix scripts and update entry figures
* Improve tests
* Write docstrings of schema
* Write schema docstrings
* Setup api reference
* Start working on new docs
* Work on docs
* Improve progress panel of render command
* Finalize new docs index
* Complete CLI docs
* Work on YAML input structure page
* Finalize user guide
* Start working on developer guide
* Improve api reference
* Improve developer guide
* Improve developer guide
* Improve developer gide
* Improve developer guide
* Improve developer guide
* Update developer guide
* Improve developer guide
* Improve developer guide
* Improve developer guide
* Developer guide first draft
* update developer guide
* Update examples
* Update testdata
* Handle wrong installation (rendercv instead of rendercv[full])
* Remove unnecessary files
* Write set up vs code page
* Update README.md
* Change docs description
* Compress design options gif
* minor updates
* Polish all the json schema descriptions
* Update testdata and examples
* Remove some emdashed from docs
* Add whatsapp support
* Add TestEscapeTypstCharacters to tests
* Implement custom connections
* Add page break before sections feature
* Revert page break before sections feature
* Rebase to main
* Fix social network tests, update schema