rendercv/pyproject.toml

145 lines
6.6 KiB
TOML
Raw Normal View History

2024-01-17 16:17:02 +00:00
# Every modern Python package today has a `pyproject.toml` file. It is a Python
# standard. `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 a code needs to be distributed, it might need to be compiled, or it might need to
# be bundled with other files. This process of making a 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`, is created.
# This sdist is a compressed archive of the source code, and it is ready to be uploaded
# to PyPI. See https://packaging.python.org/en/latest/tutorials/packaging-projects/
# To build RenderCV, we need to specify which build package we want to use. There are
2024-02-18 16:45:35 +00:00
# many build packages like `setuptools`, `flit`, `poetry`, `hatchling`, etc. We will use
# `hatchling`.
2024-02-19 17:54:55 +00:00
requires = ["hatchling==1.21.1"] # Our dependency to build RenderCV
2024-01-17 16:17:02 +00:00
# Python has a standard object format called build-backend object. Python standard asks
# this object to have some specific methods that do a specific job. For example, it
# should have a method called `build_wheel` that builds a wheel file. We use hatchling
# to build RenderCV, and hatchling's build-backend object is `hatchling.build`.
# See https://peps.python.org/pep-0517/
build-backend = "hatchling.build" # A build-backend object for building RenderCV
[tool.hatch.version]
# We will use hatchling to generate the version number of RenderCV. It will go to the
# `path` below and get the version number from there.
# See https://hatch.pypa.io/latest/version/
path = "rendercv/__init__.py"
[tool.hatch.build]
# In the sdist package, what do we want to include and exclude? For example, we don't
# want to include `docs` and `tests` because they are not needed to run RenderCV.
2024-01-18 17:23:46 +00:00
include = ["/README.md", "/rendercv"]
2024-01-17 16:17:02 +00:00
# We use tinytex-release as a git submodule, so it's a seperate repository. We don't
# want to ship all the files from that repository with RenderCV.
exclude = [
"/rendercv/tinytex-release/minimize_tinytex_for_rendercv.py",
"/rendercv/tinytex-release/.gitignore",
]
2023-10-14 21:59:57 +00:00
[project]
2024-02-18 16:45:35 +00:00
# Under the `project` section, we specify the metadata about RenderCV.
2023-10-14 21:59:57 +00:00
name = 'rendercv'
2024-02-18 16:45:35 +00:00
description = 'LaTeX CV generator engine from a YAML input file'
2024-01-18 17:23:46 +00:00
dynamic = [
"version",
] # We will use hatchling to generate the version number
2023-10-14 21:59:57 +00:00
authors = [{ name = 'Sina Atalay' }]
requires-python = '>=3.10'
readme = "README.md"
2024-01-17 16:17:02 +00:00
# RenderCV depends on these packages. They will be installed automatically when RenderCV
# is installed:
2023-10-14 21:59:57 +00:00
dependencies = [
2024-04-14 23:50:09 +00:00
'Jinja2==3.1.3', # to generate LaTeX and Markdown files
'phonenumbers==8.13.34', # to validate phone numbers
'email-validator==2.1.1', # to validate email addresses
'pydantic==2.7.0', # to validate and parse the input file
'pydantic-extra-types==2.6.0', # to validate some extra types
'ruamel.yaml==0.18.6', # to parse YAML files
'typer==0.12.3', # to create the command-line interface
"markdown==3.6", # to convert Markdown to HTML
"PyMuPDF==1.24.2", # to convert PDF files to images
2023-10-14 21:59:57 +00:00
]
classifiers = [
2023-10-15 16:35:14 +00:00
"Intended Audience :: Science/Research",
"Intended Audience :: Education",
"Topic :: Text Processing :: Markup :: LaTeX",
"Topic :: Printing",
2023-10-20 17:50:50 +00:00
"Development Status :: 5 - Production/Stable",
2023-10-15 16:35:14 +00:00
"Programming Language :: Python :: 3.10",
"Programming Language :: Python :: 3.11",
"Programming Language :: Python :: 3.12",
2023-10-14 21:59:57 +00:00
"License :: OSI Approved :: MIT License",
"Operating System :: OS Independent",
2024-01-17 16:17:02 +00:00
] # go to https://pypi.org/classifiers/ to see all classifiers
2023-10-14 21:59:57 +00:00
[project.urls]
2024-01-17 16:17:02 +00:00
# Here, we can specify the URLs related to RenderCV. They will be listed under the
# "Project links" section in PyPI. See https://pypi.org/project/rendercv/
2023-10-14 21:59:57 +00:00
Documentation = 'https://sinaatalay.github.io/rendercv/'
Source = 'https://github.com/sinaatalay/rendercv'
2023-10-15 16:35:14 +00:00
[project.scripts]
2024-01-17 16:17:02 +00:00
# Here, we specify the entry points of RenderCV.
# See https://packaging.python.org/en/latest/specifications/entry-points/#entry-points
2024-02-19 17:54:55 +00:00
# See https://hatch.pypa.io/latest/config/metadata/#cli
2024-01-17 16:17:02 +00:00
# The key and value below mean this: If someone installs RenderCV, then running
2024-02-11 18:35:21 +00:00
# `rendercv` in the terminal will run the function `app` in the module `__main__` in the
2024-01-17 16:17:02 +00:00
# package `rendercv`.
2024-02-11 18:35:21 +00:00
rendercv = 'rendercv.__main__:app'
2023-10-15 16:35:14 +00:00
2023-10-14 21:59:57 +00:00
[project.optional-dependencies]
2024-01-17 16:17:02 +00:00
# RenderCV depends on other packages. However, some of these packages are not required
# to run RenderCV, but they are required to develop RenderCV. For example, to build the
# documentation of RenderCV, we need to install some packages. However, not all the
# users of RenderCV will build the documentation, so these are optional dependencies.
2024-01-18 17:23:46 +00:00
2024-02-18 16:45:35 +00:00
docs = [
2024-04-14 23:50:09 +00:00
"mkdocs-material==9.5.17", # to build docs
"mkdocstrings-python==1.9.2", # to build reference documentation from docstrings
"pdfCropMargins==2.1.2", # to generate entry figures for the documentation
"pillow==10.1.0", # lock the dependency of pdfCropMargins
"PySimpleGUI==4.20.0", # lock the dependency of pdfCropMargins
2024-02-23 17:59:06 +00:00
"mkdocs-macros-plugin==1.0.5", # to be able to have dynamic content in the documentation
2024-02-18 16:45:35 +00:00
]
tests = [
2024-04-14 23:50:09 +00:00
"pytest==8.1.1", # to run the tests
"coverage==7.4.4", # to generate coverage reports
"time-machine==2.14.1", # to select an arbitrary date and time for testing
"pypdf==4.2.0", # to read PDF files
2024-02-18 16:45:35 +00:00
]
dev = [
2024-04-14 23:50:09 +00:00
"ruff==0.3.7", # to lint the code
"black==24.4.0", # to format the code
2024-02-11 22:09:08 +00:00
]
2023-10-14 21:59:57 +00:00
2024-01-17 16:17:02 +00:00
# RenderCV uses different tools to check the code quality, format the code, build the
# documentation, build the package, etc. We can specify the settings for these tools in
# `pyproject.toml` file under `[tool.name_of_the_tool]` so that new contributors can use
# these tools easily. Generally, popular IDEs grab these settings from `pyproject.toml`
# file automatically.
2023-10-14 21:59:57 +00:00
2024-01-18 17:23:46 +00:00
[tool.black]
2024-02-18 16:45:35 +00:00
line-length = 88 # maximum line length
preview = true # to allow enable-unstable-feature
enable-unstable-feature = [
"string_processing",
] # breaking strings into multiple lines
2023-10-14 21:59:57 +00:00
[tool.coverage.run]
source = ['rendercv']
2024-02-20 19:11:36 +00:00
# use relative paths instead of absolute paths, this is useful for combining coverage
# reports from different OSes:
relative_files = true
# don't include jinja templates in the coverage report:
omit = ["*.j2.*"]