From 44b11ff9203b105a7a628bcd7e9f842242afae5c Mon Sep 17 00:00:00 2001 From: Sina Atalay Date: Wed, 17 Jan 2024 17:17:02 +0100 Subject: [PATCH] update pyproject.toml --- pyproject.toml | 102 ++++++++++++++++++++++++++++++++++++------------- 1 file changed, 75 insertions(+), 27 deletions(-) diff --git a/pyproject.toml b/pyproject.toml index 1d92725..364d5dc 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -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 \ No newline at end of file