mirror of
https://github.com/rendercv/rendercv.git
synced 2025-12-24 05:58:06 -05:00
* 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
215 lines
7.4 KiB
TOML
215 lines
7.4 KiB
TOML
# Every modern Python package today has a `pyproject.toml` file. It is a Python
|
|
# standard. The `pyproject.toml` file contains all the metadata about the package.
|
|
# It also includes the dependencies and required information for building the package.
|
|
# For more details, see https://pip.pypa.io/en/stable/reference/build-system/pyproject-toml/.
|
|
|
|
[build-system]
|
|
# If code needs to be distributed, it might need to be compiled or bundled with other files.
|
|
# This process of making code ready for distribution is called building.
|
|
|
|
# Python packages need to be built too, even though they are not compiled (mostly).
|
|
# At the end of the building process, a source distribution package (sdist) and a built
|
|
# distribution package (in Wheel format) are created.
|
|
# See https://packaging.python.org/en/latest/tutorials/packaging-projects/ for details.
|
|
# Built Distribution:
|
|
# https://packaging.python.org/en/latest/glossary/#term-Built-Distribution
|
|
# Source Distribution:
|
|
# https://packaging.python.org/en/latest/glossary/#term-Source-Distribution-or-sdist
|
|
|
|
# To build RenderCV, we need to specify which build package to use. There are
|
|
# many build backends like `setuptools`, `flit`, `poetry`, `hatchling`, etc. We will use
|
|
# `uv_build`.
|
|
requires = ["uv_build>=0.9.5,<0.10.0"] # Packages needed to build RenderCV
|
|
|
|
# Python has a standard object format called a build-backend object. This object must
|
|
# implement specific methods that perform defined tasks. For example, it should have a
|
|
# method called `build_wheel` that builds a wheel file.
|
|
# See https://peps.python.org/pep-0517/
|
|
build-backend = "uv_build" # Build-backend object for building RenderCV
|
|
|
|
[tool.hatch.build.targets.sdist]
|
|
# In the sdist, what do we want to exclude? GIF files are large.
|
|
exclude = ["*.gif"]
|
|
|
|
[tool.hatch.build.targets.wheel]
|
|
# In the wheel, what do we want to include and exclude?
|
|
packages = ["rendercv"]
|
|
|
|
[project]
|
|
# Metadata about RenderCV.
|
|
name = 'rendercv'
|
|
version = '2.3'
|
|
description = 'Typst-based CV/resume generator'
|
|
authors = [{ name = 'Sina Atalay', email = 'dev@atalay.biz' }]
|
|
license = "MIT"
|
|
readme = "README.md"
|
|
requires-python = '>=3.12'
|
|
# RenderCV depends on these packages. They are installed automatically when RenderCV is installed:
|
|
dependencies = [
|
|
'Jinja2>=3.1.6', # Generate Typst and Markdown files
|
|
'phonenumbers>=9.0.19', # Validate phone numbers
|
|
'pydantic[email]>=2.10.6', # Validate and parse input files
|
|
'pydantic-extra-types>=2.10.6', # Validate extra types
|
|
'ruamel.yaml>=0.18.10', # Parse YAML files
|
|
"packaging>=25.0", # For version checking
|
|
]
|
|
classifiers = [
|
|
"Intended Audience :: Science/Research",
|
|
"Intended Audience :: Education",
|
|
"Topic :: Text Processing :: Markup",
|
|
"Topic :: Printing",
|
|
"Development Status :: 5 - Production/Stable",
|
|
"Programming Language :: Python :: 3.10",
|
|
"Programming Language :: Python :: 3.11",
|
|
"Programming Language :: Python :: 3.12",
|
|
"Programming Language :: Python :: 3.13",
|
|
"Programming Language :: Python :: 3.14",
|
|
"License :: OSI Approved :: MIT License",
|
|
"Operating System :: OS Independent",
|
|
] # See all classifiers at https://pypi.org/classifiers/
|
|
|
|
[project.optional-dependencies]
|
|
full = [
|
|
'typer>=0.20.0', # Command-line interface
|
|
'markdown>=3.10', # Convert Markdown to HTML
|
|
'watchdog>=6.0.0', # Monitor files for updates
|
|
'typst>=0.14.4', # Render PDF from Typst source files
|
|
'rendercv-fonts>=0.5.1', # Font files for RenderCV
|
|
]
|
|
|
|
[project.urls]
|
|
# URLs related to RenderCV. Listed under the "Project links" section on PyPI.
|
|
"Web App" = 'https://rendercv.com'
|
|
Source = 'https://github.com/rendercv/rendercv'
|
|
Documentation = 'https://docs.rendercv.com'
|
|
Changelog = 'https://docs.rendercv.com/changelog'
|
|
|
|
[project.scripts]
|
|
# Entry points for RenderCV.
|
|
# See https://packaging.python.org/en/latest/specifications/entry-points/#entry-points
|
|
# See https://hatch.pypa.io/latest/config/metadata/#cli
|
|
|
|
# The key and value below mean: when someone installs RenderCV,
|
|
# running `rendercv` in the terminal executes the function `entry_point` in
|
|
# `src/rendercv/cli/entry_point.py`.
|
|
rendercv = 'rendercv.cli.entry_point:entry_point'
|
|
|
|
# Virtual Environment Dependencies:
|
|
[dependency-groups]
|
|
dev = [
|
|
'ruff>=0.14.8', # Lint and format the code
|
|
'black>=25.12.0', # Format the code
|
|
'pyright>=1.1.407', # Type checking
|
|
'pre-commit>=4.5.0', # Run checks before committing
|
|
'pytest>=9.0.2', # Run tests
|
|
'pytest-cov>=7.0.0', # Coverage plugin for pytest with xdist support
|
|
'pyinstaller>=6.17.0', # Build executables
|
|
"pytest-xdist>=3.8.0", # Run tests in parallel
|
|
]
|
|
docs = [
|
|
'mkdocs-material>=9.7.0',
|
|
'mkdocs-gen-files>=0.6.0', # Dynamic page generation for API reference
|
|
'mkdocs-literate-nav>=0.6.2', # Dynamic navigation for API reference
|
|
'mkdocs-macros-plugin>=1.5.0', # Dynamic content in docs
|
|
'mkdocstrings[python]>=1.0.0', # Build reference docs from docstrings
|
|
'markdown-callouts>=0.4.0', # GitHub alert style admonitions
|
|
'pdfCropMargins==2.2.1', # Generate entry figures for documentation
|
|
'pillow==10.4.0', # Lock dependency of pdfCropMargins
|
|
'PyMuPDF==1.26.5', # Convert PDF files to images
|
|
]
|
|
|
|
# Tools Settings:
|
|
|
|
# RenderCV uses various tools to check code quality, format code, build docs, and package the project.
|
|
# Their configurations are specified below so contributors and IDEs can pick them up automatically.
|
|
|
|
[tool.ruff]
|
|
line-length = 88
|
|
|
|
[tool.ruff.format]
|
|
docstring-code-format = true
|
|
|
|
[tool.ruff.lint]
|
|
extend-select = [
|
|
'B',
|
|
'I',
|
|
'ARG',
|
|
'C4',
|
|
'EM',
|
|
'ICN',
|
|
'ISC',
|
|
'G',
|
|
'PGH',
|
|
'PIE',
|
|
'PL',
|
|
'PT',
|
|
'PTH',
|
|
'RET',
|
|
'RUF',
|
|
'SIM',
|
|
'T20',
|
|
'UP',
|
|
'YTT',
|
|
'EXE',
|
|
'NPY',
|
|
'PD',
|
|
]
|
|
ignore = [
|
|
'PLR', # Design-related pylint codes
|
|
'ISC001', # Conflicts with formatter
|
|
'UP007', # Allow Optional type
|
|
'PGH003', # Prefer not to ignore this
|
|
'RUF001', # Allow other characters for locale
|
|
'EM101', # Allow
|
|
]
|
|
flake8-unused-arguments.ignore-variadic-names = true
|
|
|
|
[tool.black]
|
|
line-length = 88 # Maximum line length
|
|
preview = true # Enable preview features
|
|
enable-unstable-feature = [
|
|
'string_processing',
|
|
] # Break strings into multiple lines
|
|
|
|
[tool.pyright]
|
|
venvPath = "."
|
|
venv = ".venv"
|
|
typeCheckingMode = 'standard'
|
|
enableTypeIgnoreComments = false
|
|
reportUnnecessaryTypeIgnoreComment = true
|
|
reportIncompatibleVariableOverride = false
|
|
reportIncompatibleMethodOverride = false
|
|
reportMissingTypeStubs = false
|
|
reportPrivateUsage = false
|
|
exclude = ['docs/**/*']
|
|
|
|
[tool.coverage.run]
|
|
source = ['src/rendercv'] # Measure coverage in this source
|
|
concurrency = ['multiprocessing'] # For watcher tests
|
|
|
|
# Use relative paths for cross-platform coverage merging:
|
|
relative_files = true
|
|
|
|
[tool.coverage.report]
|
|
# Exclude templates from coverage reports:
|
|
omit = ['*.j2.*', 'rendercv/__main__.py']
|
|
|
|
# Exclude specific lines from coverage:
|
|
exclude_lines = ['if __name__ == .__main__.:']
|
|
|
|
[tool.pytest.ini_options]
|
|
log_cli_level = 'INFO'
|
|
xfail_strict = true
|
|
addopts = [
|
|
'-ra', # Show extra test summary info
|
|
'-v', # Increase verbosity
|
|
'--strict-markers', # Disallow unknown markers
|
|
'--strict-config', # Fail on unknown config options
|
|
'--numprocesses=auto', # Number of processes in parallel
|
|
]
|
|
testpaths = ['tests']
|
|
|
|
|
|
[tool.codespell]
|
|
skip = '*.md'
|