Hello,
I've created two blocks starting from Block.
The first one for SFTP:
python
"""
_from da_prefect.integrations.sftp.credentials import SFTPCredentials_
_sftpcredentials_block = SFTPCredentials.load("sftp-****")_
class SFTPCredentials(Block):
"""
_sftp_credentials_block = SFTPCredentials(_
username="nic",
_password=Secret(value="secret_password"),_
server="server",
key="",
port=22
)
"""
username: Optional[str] = None
password: Optional[Secret] = None
server: Optional[str] = None
key: Optional[Secret] = None
port: Optional[int] = 22
"""
The second one for Database:
python
"""
_from da_prefect.integrations.database.credentials import DatabaseCredentials_
_databasecredentials_block = DatabaseCredentials.load("teleborsa-db-credentials")_
class DatabaseCredentials(Block):
"""
_db_credentials_block = DatabaseCredentials(_
host="",
database="",
)
"""
host: str
port: int | None = None
username: str | None = None
password: Secret | None = None
database: str = None
driver: str | None = None
params: dict[str, str] | None = None
"""
When launching my flow locally , I use Block.load(block_id):
python
"""
from prefect import task, flow
from prefect.blocks.core import Block
@task
_def load_block(block_id=None):_
_return Block.load(block_id)_
@flow
def dc():
_load_block("sftpcredentials/sftp-teleborsa")_
_load_block("databasecredentials/teleborsa-db-credentials")_
_if name == "__main__":_
dc()
"""
The load of Block gives the following error:
"""
_File "C:\PREFECT_GITHUB\venv\Lib\site-packages\prefect\blocks\core.py", line 841, in load_
_return cls._from_block_document(block_document)_
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
_File "C:\PREFECT_GITHUB\venv\Lib\site-packages\prefect\blocks\core.py", line 634, in _from_block_document_
_else cls.get_block_class_from_schema(block_document.block_schema)_
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
_File "C:\PREFECT_GITHUB\venv\Lib\site-packages\prefect\blocks\core.py", line 688, in get_block_class_from_schema_
_return cls.get_block_class_from_key(block_schema_to_key(schema))_
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
_File "C:\PREFECT_GITHUB\venv\Lib\site-packages\prefect\blocks\core.py", line 699, in get_block_class_from_key_
_return lookup_type(cls, key)_
^^^^^^^^^^^^^^^^^^^^^
_File "C:\PREFECT_GITHUB\venv\Lib\site-packages\prefect\utilities\dispatch.py", line 185, in lookup_type_
raise KeyError(
KeyError: "No class found for dispatch key 'databasecredentials' in registry for type 'Block'."
_File "C:\PREFECT_GITHUB\venv\Lib\site-packages\prefect\blocks\core.py", line 841, in load_
_return cls._from_block_document(block_document)_
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
_File "C:\PREFECT_GITHUB\venv\Lib\site-packages\prefect\blocks\core.py", line 634, in _from_block_document_
_else cls.get_block_class_from_schema(block_document.block_schema)_
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
_File "C:\PREFECT_GITHUB\venv\Lib\site-packages\prefect\blocks\core.py", line 688, in get_block_class_from_schema_
_return cls.get_block_class_from_key(block_schema_to_key(schema))_
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
_File "C:\PREFECT_GITHUB\venv\Lib\site-packages\prefect\blocks\core.py", line 699, in get_block_class_from_key_
_return lookup_type(cls, key)_
^^^^^^^^^^^^^^^^^^^^^
_File "C:\PREFECT_GITHUB\venv\Lib\site-packages\prefect\utilities\dispatch.py", line 185, in lookup_type_
raise KeyError(
KeyError: "No class found for dispatch key 'sftpcredentials' in registry for type 'Block'."
"""
I noticed that if in the flow I import the Block
python
"""
from da_prefect.integrations.database.credentials import DatabaseCredentials
"""
then Block.load("databasecredentials/borsa-db-credentials") works.
and the same for SFTP
Would anyone know how I can solve the load problem without having to import the Block?