Contribute¶
We welcome contributors! You can help contribute blocks and integrations by following these steps.
Contributing Blocks¶
Building your own custom block is simple!
- Subclass from
Block
. - Add a description alongside an
Attributes
andExample
section in the docstring. - Set a
_logo_url
to point to a relevant image. - Create the
pydantic.Field
s of the block with a type annotation,default
ordefault_factory
, and a short description about the field. - Define the methods of the block.
For example, this is how the Secret block is implemented:
from pydantic import Field, SecretStr
from prefect.blocks.core import Block
class Secret(Block):
"""
A block that represents a secret value. The value stored in this block will be obfuscated when
this block is logged or shown in the UI.
Attributes:
value: A string value that should be kept secret.
Example:
```python
from prefect.blocks.system import Secret
secret_block = Secret.load("BLOCK_NAME")
# Access the stored secret
secret_block.get()
```
"""
_logo_url = "https://example.com/logo.png"
value: SecretStr = Field(
default=..., description="A string value that should be kept secret."
) # ... indicates it's a required field
def get(self):
return self.value.get_secret_value()
To view in Prefect Cloud or the Prefect server UI, register the block.
Contributing Integrations¶
Anyone can create and share a Prefect Integration and we encourage anyone interested in creating an integration to do so!
Generate a project¶
To help you get started with your integration, we've created a template that gives the tools you need to create and publish your integration.
Use the Prefect Integration template to get started creating an integration with a bootstrapped project!
List a project in the Integrations Catalog¶
To list your integration in the Prefect Integrations Catalog, submit a PR to the Prefect repository adding a file to the docs/integrations/catalog
directory with details about your integration. Please use TEMPLATE.yaml
in that folder as a guide.
Contribute fixes or enhancements to Integrations¶
If you'd like to help contribute to fix an issue or add a feature to any of our Integrations, please propose changes through a pull request from a fork of the repository.
- Fork the repository
- Clone the forked repository
- Install the repository and its dependencies:
pip install -e ".[dev]"
- Make desired changes
- Add tests
- Insert an entry to the Integration's CHANGELOG.md
- Install
pre-commit
to perform quality checks prior to commit:pre-commit install
git commit
,git push
, and create a pull request