Contribute¶
We welcome contributors! You can help contribute blocks and collections 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://images.ctfassets.net/gm98wzqotmnx/5uUmyGBjRejYuGTWbTxz6E/3003e1829293718b3a5d2e909643a331/image8.png?h=250"
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 the Prefect Cloud or Prefect server UI, register the block.
Contributing Collections¶
Anyone can create and share a Prefect Collection and we encourage anyone interested in creating a collection to do so!
Generate a project¶
To help you get started with your collection, we've created a template that gives the tools you need to create and publish your collection.
Use the Prefect Collection template to get started creating a collection with a bootstrapped project!
List a project in the Collections Catalog¶
To list your collection in the Prefect Collections Catalog, submit a PR to the Prefect repository adding a file to the docs/collections/catalog
directory with details about your collection. Please use TEMPLATE.yaml
in that folder as a guide.
Contribute fixes or enhancements to Collections¶
If you'd like to help contribute to fix an issue or add a feature to any of our Collections, 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 Collection'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