1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950 |
- """Custom build hook for Hatch."""
- import pathlib
- import subprocess
- import sys
- from typing import Any
- from hatchling.builders.hooks.plugin.interface import BuildHookInterface
- class CustomBuilder(BuildHookInterface):
- """Custom build hook for Hatch."""
- PLUGIN_NAME = "custom"
- def marker(self) -> pathlib.Path:
- """Get the marker file path.
- Returns:
- The marker file path.
- """
- return (
- pathlib.Path(self.directory)
- / f".reflex-{self.metadata.version}.pyi_generated"
- )
- def finalize(
- self, version: str, build_data: dict[str, Any], artifact_path: str
- ) -> None:
- """Finalize the build process.
- Args:
- version: The version of the package.
- build_data: The build data.
- artifact_path: The path to the artifact.
- """
- if self.marker().exists():
- return
- if not (pathlib.Path(self.root) / "scripts").exists():
- return
- for file in (pathlib.Path(self.root) / "reflex").rglob("**/*.pyi"):
- file.unlink(missing_ok=True)
- subprocess.run(
- [sys.executable, "-m", "reflex.utils.pyi_generator"],
- check=True,
- )
- self.marker().touch()
|