Custom Component Template
A template repository for creating custom Haystack components and publishing them as standalone Python packages.
For more details, see the Haystack documentation on creating custom components and creating custom document stores.
How to use this template
-
Click Use this template to create a new repository.
-
Rename the package directory from
src/haystack_integrations/components/example/to match your integration. See Namespace convention below for the correct path. -
Update
pyproject.toml— search forTODOcomments and replace:name: your package name, following the<technology>-haystackconvention (e.g.opensearch-haystack)description,authors,keywords,project.urlsdependencies: add your integration-specific dependenciestool.hatch.version.raw-options: if you renamed directories, the version path is still derived from git tags so no change is needed here
-
Add your component code in the renamed directory and export your classes from
__init__.py. -
Add tests in
tests/— see the skeleton intests/test_example.py. -
Search for all
TODOcomments across the project and address them.
Namespace convention
Haystack integrations use the haystack_integrations namespace package. The directory structure under src/ determines the import path for your component.
Components (converters, embedders, generators, rankers, etc.) use:
src/haystack_integrations/components/<type>/<name>/
Import path: from haystack_integrations.components.<type>.<name> import MyComponent
Common component types: converters, embedders, generators, rankers, retrievers, connectors, tools, websearch
Document stores use a separate namespace:
src/haystack_integrations/document_stores/<name>/
Import path: from haystack_integrations.document_stores.<name> import MyDocumentStore
Development
This project uses Hatch for build and environment management.
# Install Hatch
pip install hatch
# Format and lint
hatch run fmt # auto-fix
hatch run fmt-check # check only
# Run tests
hatch run test:unit # unit tests only
hatch run test:integration # integration tests only
hatch run test:all # all tests
hatch run test:cov # with coverage
Publishing to PyPI
This template includes a GitHub Actions workflow that publishes your package to PyPI when you push a version tag.
-
Add a
PYPI_API_TOKENsecret to your repository settings (Settings > Secrets and variables > Actions). -
Create a version tag and push it:
git tag v0.1.0 git push origin v0.1.0
The release workflow will build and publish the package automatically.
License
Apache-2.0 - See LICENSE for details.
Metadata
Release files for uppercaser-haystack 1.0.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| uppercaser_haystack-1.0.0.tar.gz | 10.7 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| uppercaser_haystack-1.0.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 18.8 kB
Release files / uppercaser_haystack-1.0.0.tar.gz
| Download URL | uppercaser_haystack-1.0.0.tar.gz |
|---|---|
| Size | 10.7 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
1b3cc5c17367f102cc588af025390aa0cabbce5ade9d63efa78bc8d0311c0cd1
|
|
BLAKE2b-256 checksum How to use checksums |
88241d3d4c0bae31783c24fdb618bc0f155729bd909267399472e616edfb6015
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
Hatch/1.16.5 cpython/3.13.12 HTTPX/0.28.1
|
Release files / uppercaser_haystack-1.0.0-py3-none-any.whl
| Download URL | uppercaser_haystack-1.0.0-py3-none-any.whl |
|---|---|
| Size | 8.1 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
f492d75c334e9044cf1239be71e9d9a213e21cd30b469ad97b41a67deb877710
|
|
BLAKE2b-256 checksum How to use checksums |
a8250ee98a2290c2a60d40c5eedf8cb08175d7a0d76d02bae2d730b36a9a6e75
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
Hatch/1.16.5 cpython/3.13.12 HTTPX/0.28.1
|