mirror of
https://github.com/rendercv/rendercv.git
synced 2026-04-17 13:33:53 -04:00
- 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
229 lines
7.7 KiB
TOML
229 lines
7.7 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.10.3,<0.11.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
|
|
|
|
[project]
|
|
# Metadata about RenderCV.
|
|
name = "rendercv"
|
|
version = "2.8"
|
|
description = "Resume builder for academics and engineers"
|
|
readme = "README.md"
|
|
requires-python = ">=3.12"
|
|
license = "MIT"
|
|
authors = [{ name = "Sina Atalay", email = "dev@atalay.biz" }]
|
|
classifiers = [
|
|
"Development Status :: 5 - Production/Stable",
|
|
"Intended Audience :: Education",
|
|
"Intended Audience :: Science/Research",
|
|
"License :: OSI Approved :: MIT License",
|
|
"Operating System :: OS Independent",
|
|
"Programming Language :: Python :: 3.12",
|
|
"Programming Language :: Python :: 3.13",
|
|
"Programming Language :: Python :: 3.14",
|
|
"Topic :: Printing",
|
|
"Topic :: Text Processing :: Markup",
|
|
] # See all classifiers at https://pypi.org/classifiers/
|
|
# RenderCV depends on these packages. They are installed automatically when RenderCV is installed:
|
|
dependencies = [
|
|
"Jinja2>=3.1.6", # Generate Typst and Markdown files
|
|
"markdown>=3.10.2", # Convert Markdown to HTML
|
|
"phonenumbers>=9.0.24", # Validate phone numbers
|
|
"pydantic-extra-types>=2.11.0", # Validate extra types
|
|
"pydantic[email]>=2.12.5", # Validate and parse input files
|
|
"ruamel.yaml>=0.19.1", # Parse YAML files
|
|
]
|
|
|
|
[project.optional-dependencies]
|
|
full = [
|
|
"typer>=0.24.1", # Command-line interface
|
|
"watchdog>=6.0.0", # Monitor files for updates
|
|
"typst>=0.14.8", # Render PDF from Typst source files
|
|
"rendercv-fonts>=0.5.1", # Font files for RenderCV
|
|
"packaging>=26.0", # For version checking
|
|
]
|
|
|
|
[project.urls]
|
|
Changelog = "https://docs.rendercv.com/changelog"
|
|
Documentation = "https://docs.rendercv.com"
|
|
Source = "https://github.com/rendercv/rendercv"
|
|
# URLs related to RenderCV. Listed under the "Project links" section on PyPI.
|
|
"Web App" = "https://rendercv.com"
|
|
|
|
[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 = [
|
|
"black>=26.3.1", # Format the code
|
|
"hypothesis>=6.151.9", # Property-based testing
|
|
"prek>=0.3.6", # Run checks before committing (pre-commit alternative)
|
|
"pytest>=9.0.2", # Run tests
|
|
"pytest-cov>=7.0.0", # Coverage plugin for pytest with xdist support
|
|
"pytest-xdist>=3.8.0", # Run tests in parallel
|
|
"ruff>=0.15.7", # Lint and format the code
|
|
"ty>=0.0.24", # Type checking
|
|
]
|
|
create-executable = [
|
|
"pyinstaller>=6.17.0", # Build executables
|
|
]
|
|
docs = [
|
|
"markdown-callouts>=0.4.0", # GitHub alert style admonitions
|
|
"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
|
|
"mkdocs-material>=9.7.1",
|
|
"griffe>=1.0,<3", # Pin to v1 (v2 broke mkdocstrings-python compatibility)
|
|
"mkdocstrings[python]>=1.0.3", # Build reference docs from docstrings
|
|
]
|
|
update-entry-figures = [
|
|
"PyMuPDF==1.26.5", # Convert PDF files to images
|
|
"pdfCropMargins==2.2.1", # Generate entry figures for documentation
|
|
"pillow==10.4.0", # Lock dependency of pdfCropMargins
|
|
]
|
|
|
|
# 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.uv]
|
|
default-groups = ["dev", "docs"]
|
|
|
|
[tool.uv.build-backend]
|
|
# The rendercv-typst Typst package lives in src/rendercv/renderer/rendercv_typst/.
|
|
# Only lib.typ and typst.toml are needed at runtime; exclude everything else from the wheel.
|
|
wheel-exclude = [
|
|
"renderer/rendercv_typst/examples/**",
|
|
"renderer/rendercv_typst/template/**",
|
|
"renderer/rendercv_typst/README.md",
|
|
"renderer/rendercv_typst/CHANGELOG.md",
|
|
"renderer/rendercv_typst/LICENSE",
|
|
"renderer/rendercv_typst/thumbnail.png",
|
|
"renderer/typst_fontawesome/example.typ",
|
|
"renderer/typst_fontawesome/gallery.typ",
|
|
"renderer/typst_fontawesome/helper.py",
|
|
"renderer/typst_fontawesome/README.md",
|
|
"renderer/typst_fontawesome/LICENSE",
|
|
"renderer/typst_fontawesome/.gitignore",
|
|
]
|
|
|
|
[tool.uv.workspace]
|
|
members = [
|
|
"scripts/ats_proof",
|
|
]
|
|
|
|
[tool.ruff]
|
|
line-length = 88
|
|
extend-exclude = ["src/rendercv/renderer/typst_fontawesome"]
|
|
|
|
[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
|
|
extend-exclude = "src/rendercv/renderer/typst_fontawesome"
|
|
|
|
[tool.ty.src]
|
|
exclude = ["src/rendercv/renderer/typst_fontawesome"]
|
|
|
|
[tool.ty.rules]
|
|
unused-ignore-comment = "error"
|
|
|
|
[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.*"]
|
|
|
|
# tombi: lint.rules.deprecated.disabled = true
|
|
# tombi: lint.rules.one-of-multiple-match.disabled = true
|
|
[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"
|