Skip to content

Commit

Permalink
feat(build): hatch support
Browse files Browse the repository at this point in the history
Behavior is compatible with PEPs since hatch v1.2.0.
  • Loading branch information
fblanchetNaN authored and Julien00859 committed Apr 9, 2023
1 parent 3292381 commit c44647f
Show file tree
Hide file tree
Showing 4 changed files with 39 additions and 2 deletions.
2 changes: 1 addition & 1 deletion incipyt/__main__.py
Original file line number Diff line number Diff line change
Expand Up @@ -53,7 +53,7 @@ def choice_callback(_ctx, _param, _choice):
required=True,
show_default=True,
default="Setuptools",
type=click.Choice(["Setuptools", "Flit", "PDM", "Poetry"], case_sensitive=False),
type=click.Choice(["Setuptools", "Flit", "Hatch", "PDM", "Poetry"], case_sensitive=False),
callback=choice_callback,
help="Build system to use for building wheel and source distributions.",
)
Expand Down
2 changes: 1 addition & 1 deletion incipyt/tools/__init__.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
from incipyt.tools.base import Tool
from incipyt.tools.git import Git
from incipyt.tools.license import License
from incipyt.tools.pep517 import PDM, Flit, Setuptools
from incipyt.tools.pep517 import PDM, Flit, Hatch, Setuptools
from incipyt.tools.poetry import Poetry
from incipyt.tools.venv import Venv
1 change: 1 addition & 0 deletions incipyt/tools/pep517/__init__.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
from incipyt.tools.pep517.base import BuildSystem
from incipyt.tools.pep517.flit import Flit
from incipyt.tools.pep517.hatch import Hatch
from incipyt.tools.pep517.pdm import PDM
from incipyt.tools.pep517.setuptools import Setuptools
36 changes: 36 additions & 0 deletions incipyt/tools/pep517/hatch.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
from incipyt import project, signals
from incipyt._internal.dumpers import Toml
from incipyt.tools import pep517


class Hatch(pep517.BuildSystem):
"""Scripts to add Hatch to :class:`incipyt.project._Structure`."""

def add_to_structure(self):
"""Add hatch configuration to `project.structure`.
:file:`pyptoject.toml`
.. code-block::
[build-system]
build-backend = "hatchling.build"
requires = ["hatchling>=1.3.0"]
If this configuration cannot be populate like that, an error is raised.
:raises RuntimeError: If a build-system is already setup in pyproject.toml.
"""
super().add_to_structure()

pyproject = project.structure.get_config_dict(Toml("pyproject.toml"))

if "build-system" in pyproject:
raise RuntimeError("Build system already registered.")

pyproject["build-system"] = {
"build-backend": "hatchling.build",
"requires": ["hatchling>=1.3.0"],
}

signals.build_dependency.emit(dep_name="hatch>=1.2.0")

0 comments on commit c44647f

Please sign in to comment.