update pyproject.toml

This commit is contained in:
Sina Atalay 2024-01-17 17:17:02 +01:00
parent fc7eeca938
commit 44b11ff920
1 changed files with 75 additions and 27 deletions

View File

@ -1,10 +1,56 @@
# 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
# many build packages like `setuptools`, `flit`, `poetry`, `hatch`, etc. We will use
# `hatch`.
requires = ["hatchling"] # Our dependency to build RenderCV
# 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.
include = [
"/README.md",
"/rendercv",
]
[project]
# Under the `project` section, we specify the metadata about RenderCV.e will use
# hatchling to generate the version number of RenderCV. It will go to the `path` below
# and get the version number from there.
name = 'rendercv'
description = 'LaTeX CV generator from a YAML/JSON file'
version = '0.10'
description = 'LaTeX CV generator from a YAML/JSON input file'
dynamic = ["version"] # We will use hatchling to generate the version number
authors = [{ name = 'Sina Atalay' }]
requires-python = '>=3.10'
readme = "README.md"
# RenderCV depends on these packages. They will be installed automatically when RenderCV
# is installed:
dependencies = [
'annotated-types==0.6.0',
'Jinja2==3.1.2',
@ -13,6 +59,7 @@ dependencies = [
'pydantic-extra-types==2.1.0',
'pydantic_core==2.10.1',
'typing_extensions==4.8.0',
'pyspellchecker==0.7.2',
'ruamel.yaml==0.17.35',
'email-validator==2.0.0.post2',
'typer[all]==0.9.0',
@ -28,47 +75,48 @@ classifiers = [
"Programming Language :: Python :: 3.12",
"License :: OSI Approved :: MIT License",
"Operating System :: OS Independent",
]
] # go to https://pypi.org/classifiers/ to see all classifiers
[project.urls]
# 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/
Documentation = 'https://sinaatalay.github.io/rendercv/'
Source = 'https://github.com/sinaatalay/rendercv'
[project.scripts]
# Here, we specify the entry points of RenderCV.
# See https://packaging.python.org/en/latest/specifications/entry-points/#entry-points
# The key and value below mean this: If someone installs RenderCV, then running
# `rendercv` in the terminal will run the function `cli` in the module `__main__` in the
# package `rendercv`.
rendercv = 'rendercv.__main__:cli'
[project.optional-dependencies]
docs = ["mkdocs", "mkdocs-material", "mkdocstrings-python"]
# 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.
building_docs = ["mkdocs", "mkdocs-material", "mkdocstrings-python"]
testing = ["coverage", "pytest", "pytest-cov"]
linting = ["black", "ruff"]
development = ["black", "ruff"]
[build-system]
# Use setuptools-scm to be able to include TinyTeX in the package
requires = ['setuptools>=68.2.2', "setuptools-scm>=8.0.4"]
build-backend = 'setuptools.build_meta'
# 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.
[tool.ruff]
line-length = 88
# Ruff is a linter (a tool to flag stylistic errors, bugs, suspicious constructs, etc.)
line-length = 88 # The maximum line length
[tool.coverage.run]
source = ['rendercv']
relative_files = true
# [tool.coverage.report]
# precision = 2
# exclude_lines = [
# 'pragma: no cover',
# 'raise NotImplementedError',
# 'if TYPE_CHECKING:',
# 'if typing.TYPE_CHECKING:',
# '@overload',
# '@typing.overload',
# '\(Protocol\):$',
# 'typing.assert_never',
# 'assert_never',
# ]
[tool.black]
color = true
line-length = 88
experimental-string-processing = true
# Black is a code formatter. See https://github.com/psf/black
line-length = 88 # The maximum line length
experimental-string-processing = true # Enable experimental string processing