1---2name: 1587-hatchlingtodo-b311dfe33description: Hatchling Documentation Knowledge Base - Complete Categorized Topics4---5# Hatchling Documentation Knowledge Base - Complete Categorized Topics67## Project Metadata & Configuration (pyproject.toml)89- [ ] Basic metadata fields (name, version, description, readme, license, authors, maintainers)10- [ ] Python version requirements (requires-python)11- [ ] Keywords and classifiers (Trove classifiers)12- [ ] Project URLs (homepage, documentation, repository, bug tracker)13- [ ] Entry points (CLI scripts, GUI scripts, plugin namespaces)14- [ ] Dynamic metadata fields and dynamic array15- [ ] Optional dependencies (feature-based extras)16- [ ] Dependency specifications (version specifiers, PEP 440)17- [ ] Direct references in dependencies (allow-direct-references)18- [ ] VCS dependencies (Git, Mercurial, Subversion, Bazaar)19- [ ] License configuration (SPDX expressions vs license files)2021## Build System Configuration2223- [ ] Build system declaration [build-system] section24- [ ] Specifying Hatchling as build backend25- [ ] Build system requirements (PEP 517/518)26- [ ] General build options (directory, reproducible, ignore-vcs)27- [ ] Custom output directory configuration28- [ ] Reproducible builds and SOURCE_DATE_EPOCH environment variable29- [ ] Build environment variables (HATCH*BUILD*\* flags)30- [ ] Dev mode directory configuration3132## Wheel Build Target3334- [ ] Wheel target configuration [tool.hatch.build.targets.wheel]35- [ ] Core metadata version options (2.4, 2.3, 2.2)36- [ ] Package discovery and heuristics37- [ ] File inclusion/exclusion patterns38- [ ] Forced inclusion paths (force-include)39- [ ] Shared data mapping (data directory)40- [ ] Shared scripts mapping (scripts directory)41- [ ] Extra metadata directory42- [ ] Strict naming option43- [ ] macOS maximum compatibility flag44- [ ] Bypass selection option45- [ ] Editable wheel mode and .pth files46- [ ] Sources option (path rewriting)47- [ ] Wheel target versioning4849## Source Distribution (Sdist) Build Target5051- [ ] Sdist target configuration [tool.hatch.build.targets.sdist]52- [ ] Core metadata version options53- [ ] Strict naming for sdist54- [ ] Legacy setup.py support55- [ ] VCS ignore pattern integration (.gitignore, .hgignore)56- [ ] File inclusion defaults for sdist57- [ ] UNIX socket handling in sdist5859## File Selection & Patterns6061- [ ] Include patterns using Git-style globs62- [ ] Exclude patterns and precedence63- [ ] Only-include option (targeted inclusion)64- [ ] Packages option (Python package discovery)65- [ ] Sources option (path mapping)66- [ ] Force-include option (paths from anywhere)67- [ ] VCS integration and .hgignore support68- [ ] Default inclusion/exclusion behavior69- [ ] Explicit path selection70- [ ] Artifact inclusion for VCS-ignored files7172## Build Hooks7374- [ ] Build hook interface and configuration75- [ ] Global vs target-specific hooks76- [ ] Hook execution ordering (global before target-specific)77- [ ] Conditional hook execution (enable-by-default)78- [ ] Hook dependencies configuration79- [ ] Build hook interfaces (BuildHookInterface)80- [ ] Passing build data between hooks81- [ ] Custom build hook (hatch_build.py implementation)82- [ ] Version build hook (path, template, pattern)83- [ ] Build hook dependency declaration method84- [ ] Environment variables for hook control (HATCH_BUILD_HOOKS_ONLY)8586## Version Management8788- [ ] Static version configuration89- [ ] Dynamic version sources90- [ ] Version source interface91- [ ] Code version source (reading from Python files)92- [ ] Regex version source (pattern-based extraction)93- [ ] Env version source (environment variables)94- [ ] Version scheme plugins95- [ ] Standard version scheme96- [ ] Version validation and bumping97- [ ] Version build hook (file writing)98- [ ] Search-paths option for code version source99- [ ] Version epochs and epoch handling100- [ ] Version template configuration101102## Metadata Hooks103104- [ ] Metadata hook interface105- [ ] Custom metadata hooks (hatch_build.py implementation)106- [ ] Dynamic metadata generation107- [ ] MetadataHookInterface108- [ ] Known classifiers method109- [ ] Metadata hooks with version command110- [ ] Metadata from source distributions111112## Plugin System & Extensibility113114- [ ] Builder plugins (wheel, sdist, custom, binary, app)115- [ ] Build hook plugins (custom, version, etc.)116- [ ] Metadata hook plugins117- [ ] Version source plugins (code, regex, env)118- [ ] Version scheme plugins (standard)119- [ ] Environment plugins and environment collectors120- [ ] Publisher plugins121- [ ] Plugin loading and registration122- [ ] Local plugin loading123- [ ] Plugin interface standards124- [ ] Plugin name declaration (PLUGIN_NAME)125126## Build Target Types127128- [ ] Wheel builder (standard format)129- [ ] Source distribution builder130- [ ] Custom builder (third-party plugins)131- [ ] Binary builder (standalone executables with PyApp)132- [ ] App build target (local PyApp copy support)133- [ ] Multi-version build target support134- [ ] Target-specific dependencies and features135136## Advanced Build Features137138- [ ] Build hooks with dynamic dependencies139- [ ] Force-include file permissions and symbolic links140- [ ] Build data passing to hooks (wheel, sdist specific)141- [ ] Path rewriting with sources142- [ ] Editable installs and force_include_editable143- [ ] Build context and build hooks interface144- [ ] Distributed build artifacts145- [ ] Case-insensitive file system handling146- [ ] Artifact directory handling147148## Build Targets Configuration Details149150- [ ] Target-specific hooks [tool.hatch.build.targets.<TARGET_NAME>.hooks]151- [ ] Target-specific dependencies152- [ ] Runtime dependency requirements for targets153- [ ] Optional feature requirements for targets154- [ ] Versions option (multiple build versions)155- [ ] Target configuration precedence156- [ ] Default target selection157158## Special Configuration Options159160- [ ] PEP 561 type hinting support161- [ ] SPDX license information and validation162- [ ] License-Expression core metadata163- [ ] License-File core metadata164- [ ] Package name normalization165- [ ] Namespace packages166- [ ] Src-layout project structure167- [ ] Single module layout auto-detection168- [ ] Extension module loading (code version source)169170## Build Environment Internals171172- [ ] Hatch-build environment configuration173- [ ] Build dependencies setup174- [ ] Build environment variables175- [ ] UV vs pip installer in build environment176- [ ] Cython and other build tool dependencies177- [ ] Environment isolation for builds178179## Integration & Compatibility180181- [ ] PEP 517 compatibility (build_wheel, build_sdist)182- [ ] PEP 660 compatibility (build_editable)183- [ ] PEP 639 (license metadata)184- [ ] PEP 440 (version specifiers)185- [ ] PEP 621 (pyproject.toml metadata)186- [ ] PEP 518 (build system requirements)187- [ ] Legacy setup.py support188- [ ] Setuptools compatibility189- [ ] CMake/scikit-build integration190- [ ] Extension modules and build backends191192## Core Concepts & Best Practices193194- [ ] Hatchling as PEP 517 build backend195- [ ] Standards-compliant package building196- [ ] Reproducible build configuration197- [ ] Minimal configuration philosophy198- [ ] Git-style glob patterns rationale199- [ ] VCS-aware file selection200- [ ] Build hook pattern and best practices201- [ ] Version management strategies202- [ ] Wheel vs sdist trade-offs203- [ ] Development vs distribution builds204205## Error Handling & Validation206207- [ ] Force-include path existence validation208- [ ] Wheel target file selection errors209- [ ] Version validation and bumping errors210- [ ] SPDX license validation errors211- [ ] Core metadata version compatibility212- [ ] Heuristic failure handling213- [ ] Build-time artifact validation214215## Release Notes & Version History216217- [ ] Hatchling v1.0 and early releases218- [ ] Major feature additions (v1.4, v1.5, v1.6, v1.7, v1.8)219- [ ] Version source enhancements (v1.6, v1.11)220- [ ] Metadata hook introduction (v1.8)221- [ ] PEP 639 support (v1.5)222- [ ] Build hook improvements (various versions)223- [ ] Performance optimizations (v1.4)224- [ ] Python 3.12 support (v1.8)225- [ ] Recent fixes and bug patches226227## Command-Line Building228229- [ ] Building wheels with hatch build -t wheel230- [ ] Building sdist with hatch build -t sdist231- [ ] Building all targets with hatch build232- [ ] Building with Python's build tool (python -m build)233- [ ] Installing directly from local path (pip install .)234- [ ] Build output directory customization235236## Context Formatting & Dynamic Configuration237238- [ ] Context formatting for dependencies239- [ ] Context formatting for optional dependencies240- [ ] Dynamic field resolution241- [ ] Configuration interpolation242- [ ] Environment-based configuration243244## Related Standards & Specifications245246- [ ] Python packaging standards overview247- [ ] PEP references and compliance248- [ ] Core metadata specifications249- [ ] Package distribution formats (wheel, sdist)250- [ ] Version control system integration standards251- [ ] Dependency specification formats