forked from rendercv/rendercv
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathpyproject.toml
More file actions
201 lines (177 loc) · 6.86 KB
/
Copy pathpyproject.toml
File metadata and controls
201 lines (177 loc) · 6.86 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
# 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
[project]
# Metadata about RenderCV.
name = 'rendercv'
version = '2.5'
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.10', # Lint and format the code
'black>=25.12.0', # Format the code
'ty>=0.0.5', # Type checking
'prek>=0.2.23', # 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
]
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
]
update-entry-figures = [
'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
]
create-executable = [
'pyinstaller>=6.17.0', # Build executables
]
# 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.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.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.*']
[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'