You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@airflow.apache.org by pa...@apache.org on 2023/11/06 13:49:40 UTC
(airflow) branch main updated: Add Cohere Provider (#34921)
This is an automated email from the ASF dual-hosted git repository.
pankaj pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/airflow.git
The following commit(s) were added to refs/heads/main by this push:
new 7fc19d4fdb Add Cohere Provider (#34921)
7fc19d4fdb is described below
commit 7fc19d4fdbe0e6a2e720aac72e1042aab1dd4cb6
Author: Utkarsh Sharma <ut...@gmail.com>
AuthorDate: Mon Nov 6 19:19:32 2023 +0530
Add Cohere Provider (#34921)
* Add Cohere Provider
* Add Cohere Provider
* Move link to seealso sphinx directive
* Updated check for parameters
* Update dependency of the cohere
* Move the dag out of rst and into system tests
* Add dependency to of cohere python sdk
* Add cache_property for the cohere client
* Remove unwanted get_conn method
* Add correct label to password field
* Expose timeout, max_retries and api_url to user
* Fix documentation
* Update interface of CohereEmbeddingOperator operator
* Updated testcases
* Updated testcases
* Fix static check and docs build
* Update CONTRIBUTING.rst
Co-authored-by: Josh Fell <48...@users.noreply.github.com>
* Update docs/apache-airflow-providers-cohere/operators/embedding.rst
Co-authored-by: Josh Fell <48...@users.noreply.github.com>
* Update airflow/providers/cohere/operators/embedding.py
Co-authored-by: Josh Fell <48...@users.noreply.github.com>
* Update airflow/providers/cohere/hooks/cohere.py
Co-authored-by: Hussein Awala <hu...@awala.fr>
* Update airflow/providers/cohere/CHANGELOG.rst
Co-authored-by: Hussein Awala <hu...@awala.fr>
* Address the PR comments
* Resolve conflicts
* Fix breaking tests
* Fix static checks
* Update airflow/providers/cohere/operators/embedding.py
Co-authored-by: Pankaj Singh <98...@users.noreply.github.com>
* Fix docstring
* Add note for initial release
* Add security.rst file
* Update airflow/providers/cohere/hooks/cohere.py
* Update airflow/providers/cohere/operators/embedding.py
Co-authored-by: Josh Fell <48...@users.noreply.github.com>
* Update docs/apache-airflow-providers-cohere/operators/embedding.rst
Co-authored-by: Josh Fell <48...@users.noreply.github.com>
* Add ref to sequrity.rst
* Update docs/apache-airflow-providers-cohere/security.rst
* Add /changelog.rst
* Resolve conflicts
---------
Co-authored-by: Josh Fell <48...@users.noreply.github.com>
Co-authored-by: Hussein Awala <hu...@awala.fr>
Co-authored-by: Pankaj Singh <98...@users.noreply.github.com>
Co-authored-by: Pankaj <pa...@astronomer.io>
---
.../airflow_providers_bug_report.yml | 1 +
CONTRIBUTING.rst | 6 +-
INSTALL | 6 +-
.../providers/cohere/.latest-doc-only-change.txt | 1 +
airflow/providers/cohere/CHANGELOG.rst | 26 ++++++
airflow/providers/cohere/__init__.py | 24 ++++++
airflow/providers/cohere/hooks/__init__.py | 24 ++++++
airflow/providers/cohere/hooks/cohere.py | 83 ++++++++++++++++++
airflow/providers/cohere/operators/__init__.py | 16 ++++
airflow/providers/cohere/operators/embedding.py | 69 +++++++++++++++
airflow/providers/cohere/provider.yaml | 54 ++++++++++++
docs/apache-airflow-providers-cohere/changelog.rst | 18 ++++
docs/apache-airflow-providers-cohere/commits.rst | 19 +++++
.../connections.rst | 37 ++++++++
docs/apache-airflow-providers-cohere/index.rst | 98 ++++++++++++++++++++++
.../installing-providers-from-sources.rst | 18 ++++
.../operators/embedding.rst | 40 +++++++++
docs/apache-airflow-providers-cohere/security.rst | 19 +++++
docs/apache-airflow/extra-packages-ref.rst | 2 +
generated/provider_dependencies.json | 8 ++
images/breeze/output-commands-hash.txt | 18 ++--
images/breeze/output_build-docs.svg | 2 +-
...tput_release-management_add-back-references.svg | 8 +-
...management_generate-issue-content-providers.svg | 12 +--
...e-management_prepare-provider-documentation.svg | 12 +--
...elease-management_prepare-provider-packages.svg | 12 +--
.../output_release-management_publish-docs.svg | 2 +-
...output_sbom_generate-providers-requirements.svg | 16 ++--
tests/providers/cohere/__init__.py | 16 ++++
tests/providers/cohere/hooks/__init__.py | 16 ++++
tests/providers/cohere/hooks/test_cohere.py | 46 ++++++++++
tests/providers/cohere/operators/__init__.py | 16 ++++
tests/providers/cohere/operators/test_embedding.py | 56 +++++++++++++
tests/system/providers/cohere/__init__.py | 16 ++++
.../cohere/example_cohere_embedding_operator.py | 40 +++++++++
35 files changed, 810 insertions(+), 47 deletions(-)
diff --git a/.github/ISSUE_TEMPLATE/airflow_providers_bug_report.yml b/.github/ISSUE_TEMPLATE/airflow_providers_bug_report.yml
index 4c3a0a9819..e8a221be9c 100644
--- a/.github/ISSUE_TEMPLATE/airflow_providers_bug_report.yml
+++ b/.github/ISSUE_TEMPLATE/airflow_providers_bug_report.yml
@@ -48,6 +48,7 @@ body:
- celery
- cloudant
- cncf-kubernetes
+ - cohere
- common-io
- common-sql
- daskexecutor
diff --git a/CONTRIBUTING.rst b/CONTRIBUTING.rst
index a3fe3386eb..15783d1c9c 100644
--- a/CONTRIBUTING.rst
+++ b/CONTRIBUTING.rst
@@ -671,9 +671,9 @@ aiobotocore, airbyte, alibaba, all, all_dbs, amazon, apache.atlas, apache.beam,
apache.drill, apache.druid, apache.flink, apache.hdfs, apache.hive, apache.impala, apache.kafka,
apache.kylin, apache.livy, apache.pig, apache.pinot, apache.spark, apache.sqoop, apache.webhdfs,
apprise, arangodb, asana, async, atlas, atlassian.jira, aws, azure, cassandra, celery, cgroups,
-cloudant, cncf.kubernetes, common.io, common.sql, crypto, dask, daskexecutor, databricks, datadog,
-dbt.cloud, deprecated_api, devel, devel_all, devel_ci, devel_hadoop, dingding, discord, doc,
-doc_gen, docker, druid, elasticsearch, exasol, facebook, ftp, gcp, gcp_api, github,
+cloudant, cncf.kubernetes, cohere, common.io, common.sql, crypto, dask, daskexecutor, databricks,
+datadog, dbt.cloud, deprecated_api, devel, devel_all, devel_ci, devel_hadoop, dingding, discord,
+doc, doc_gen, docker, druid, elasticsearch, exasol, facebook, ftp, gcp, gcp_api, github,
github_enterprise, google, google_auth, grpc, hashicorp, hdfs, hive, http, imap, influxdb, jdbc,
jenkins, kerberos, kubernetes, ldap, leveldb, microsoft.azure, microsoft.mssql, microsoft.psrp,
microsoft.winrm, mongo, mssql, mysql, neo4j, odbc, openfaas, openlineage, opensearch, opsgenie,
diff --git a/INSTALL b/INSTALL
index b76af9d622..6e233fe0a0 100644
--- a/INSTALL
+++ b/INSTALL
@@ -98,9 +98,9 @@ aiobotocore, airbyte, alibaba, all, all_dbs, amazon, apache.atlas, apache.beam,
apache.drill, apache.druid, apache.flink, apache.hdfs, apache.hive, apache.impala, apache.kafka,
apache.kylin, apache.livy, apache.pig, apache.pinot, apache.spark, apache.sqoop, apache.webhdfs,
apprise, arangodb, asana, async, atlas, atlassian.jira, aws, azure, cassandra, celery, cgroups,
-cloudant, cncf.kubernetes, common.io, common.sql, crypto, dask, daskexecutor, databricks, datadog,
-dbt.cloud, deprecated_api, devel, devel_all, devel_ci, devel_hadoop, dingding, discord, doc,
-doc_gen, docker, druid, elasticsearch, exasol, facebook, ftp, gcp, gcp_api, github,
+cloudant, cncf.kubernetes, cohere, common.io, common.sql, crypto, dask, daskexecutor, databricks,
+datadog, dbt.cloud, deprecated_api, devel, devel_all, devel_ci, devel_hadoop, dingding, discord,
+doc, doc_gen, docker, druid, elasticsearch, exasol, facebook, ftp, gcp, gcp_api, github,
github_enterprise, google, google_auth, grpc, hashicorp, hdfs, hive, http, imap, influxdb, jdbc,
jenkins, kerberos, kubernetes, ldap, leveldb, microsoft.azure, microsoft.mssql, microsoft.psrp,
microsoft.winrm, mongo, mssql, mysql, neo4j, odbc, openfaas, openlineage, opensearch, opsgenie,
diff --git a/airflow/providers/cohere/.latest-doc-only-change.txt b/airflow/providers/cohere/.latest-doc-only-change.txt
new file mode 100644
index 0000000000..14a9c1ef7c
--- /dev/null
+++ b/airflow/providers/cohere/.latest-doc-only-change.txt
@@ -0,0 +1 @@
+c645d8e40c167ea1f6c332cdc3ea0ca5a9363205
diff --git a/airflow/providers/cohere/CHANGELOG.rst b/airflow/providers/cohere/CHANGELOG.rst
new file mode 100644
index 0000000000..54baa1945c
--- /dev/null
+++ b/airflow/providers/cohere/CHANGELOG.rst
@@ -0,0 +1,26 @@
+ .. Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you under the Apache License, Version 2.0 (the
+ "License"); you may not use this file except in compliance
+ with the License. You may obtain a copy of the License at
+
+ .. http://www.apache.org/licenses/LICENSE-2.0
+
+ .. Unless required by applicable law or agreed to in writing,
+ software distributed under the License is distributed on an
+ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ KIND, either express or implied. See the License for the
+ specific language governing permissions and limitations
+ under the License.
+
+``apache-airflow-providers-cohere``
+
+Changelog
+---------
+
+1.0.0
+.....
+
+Initial version of the provider.
diff --git a/airflow/providers/cohere/__init__.py b/airflow/providers/cohere/__init__.py
new file mode 100644
index 0000000000..c88b314548
--- /dev/null
+++ b/airflow/providers/cohere/__init__.py
@@ -0,0 +1,24 @@
+#
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied. See the License for the
+# specific language governing permissions and limitations
+# under the License.
+#
+# NOTE! THIS FILE IS AUTOMATICALLY GENERATED AND WILL BE
+# OVERWRITTEN WHEN PREPARING DOCUMENTATION FOR THE PACKAGES.
+#
+# IF YOU WANT TO MODIFY IT, YOU SHOULD MODIFY THE TEMPLATE
+# `PROVIDER__INIT__PY_TEMPLATE.py.jinja2` IN the `dev/provider_packages` DIRECTORY
+#
diff --git a/airflow/providers/cohere/hooks/__init__.py b/airflow/providers/cohere/hooks/__init__.py
new file mode 100644
index 0000000000..c88b314548
--- /dev/null
+++ b/airflow/providers/cohere/hooks/__init__.py
@@ -0,0 +1,24 @@
+#
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied. See the License for the
+# specific language governing permissions and limitations
+# under the License.
+#
+# NOTE! THIS FILE IS AUTOMATICALLY GENERATED AND WILL BE
+# OVERWRITTEN WHEN PREPARING DOCUMENTATION FOR THE PACKAGES.
+#
+# IF YOU WANT TO MODIFY IT, YOU SHOULD MODIFY THE TEMPLATE
+# `PROVIDER__INIT__PY_TEMPLATE.py.jinja2` IN the `dev/provider_packages` DIRECTORY
+#
diff --git a/airflow/providers/cohere/hooks/cohere.py b/airflow/providers/cohere/hooks/cohere.py
new file mode 100644
index 0000000000..20c77d5869
--- /dev/null
+++ b/airflow/providers/cohere/hooks/cohere.py
@@ -0,0 +1,83 @@
+#
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied. See the License for the
+# specific language governing permissions and limitations
+# under the License.
+from __future__ import annotations
+
+from functools import cached_property
+from typing import Any
+
+import cohere
+
+from airflow.hooks.base import BaseHook
+
+
+class CohereHook(BaseHook):
+ """
+ Use Cohere Python SDK to interact with Cohere platform.
+
+ .. seealso:: https://docs.cohere.com/docs
+
+ :param conn_id: :ref:`Cohere connection id <howto/connection:cohere>`
+ :param timeout: Request timeout in seconds.
+ :param max_retries: Maximal number of retries for requests.
+ """
+
+ conn_name_attr = "conn_id"
+ default_conn_name = "cohere_default"
+ conn_type = "cohere"
+ hook_name = "Cohere"
+
+ def __init__(
+ self,
+ conn_id: str = default_conn_name,
+ timeout: int | None = None,
+ max_retries: int | None = None,
+ ) -> None:
+ super().__init__()
+ self.conn_id = conn_id
+ self.timeout = timeout
+ self.max_retries = max_retries
+
+ @cached_property
+ def get_conn(self) -> cohere.Client:
+ conn = self.get_connection(self.conn_id)
+ return cohere.Client(
+ api_key=conn.password, timeout=self.timeout, max_retries=self.max_retries, api_url=conn.host
+ )
+
+ def create_embeddings(
+ self, texts: list[str], model: str = "embed-multilingual-v2.0"
+ ) -> list[list[float]]:
+ response = self.get_conn.embed(texts=texts, model=model)
+ embeddings = response.embeddings
+ return embeddings
+
+ @staticmethod
+ def get_ui_field_behaviour() -> dict[str, Any]:
+ return {
+ "hidden_fields": ["schema", "login", "port", "extra"],
+ "relabeling": {
+ "password": "API Key",
+ },
+ }
+
+ def test_connection(self) -> tuple[bool, str]:
+ try:
+ self.get_conn.generate("Test", max_tokens=10)
+ return True, "Connection established"
+ except Exception as e:
+ return False, str(e)
diff --git a/airflow/providers/cohere/operators/__init__.py b/airflow/providers/cohere/operators/__init__.py
new file mode 100644
index 0000000000..13a83393a9
--- /dev/null
+++ b/airflow/providers/cohere/operators/__init__.py
@@ -0,0 +1,16 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied. See the License for the
+# specific language governing permissions and limitations
+# under the License.
diff --git a/airflow/providers/cohere/operators/embedding.py b/airflow/providers/cohere/operators/embedding.py
new file mode 100644
index 0000000000..dba95e7e8f
--- /dev/null
+++ b/airflow/providers/cohere/operators/embedding.py
@@ -0,0 +1,69 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied. See the License for the
+# specific language governing permissions and limitations
+# under the License.
+
+from __future__ import annotations
+
+from functools import cached_property
+from typing import TYPE_CHECKING, Any, Sequence
+
+from airflow.models import BaseOperator
+from airflow.providers.cohere.hooks.cohere import CohereHook
+
+if TYPE_CHECKING:
+ from airflow.utils.context import Context
+
+
+class CohereEmbeddingOperator(BaseOperator):
+ """Creates the embedding base by interacting with cohere hosted services.
+
+ .. seealso::
+ For more information on how to use this operator, take a look at the guide:
+ :ref:`howto/operator:CohereEmbeddingOperator`
+
+ :param input_text: single string text or list of text items that need to be embedded.
+ :param conn_id: Optional. The name of the Airflow connection to get connection
+ information for Cohere. Defaults to "cohere_default".
+ :param timeout: Timeout in seconds for Cohere API.
+ :param max_retries: Number of times to retry before failing.
+ """
+
+ template_fields: Sequence[str] = ("input_text",)
+
+ def __init__(
+ self,
+ input_text: list[str] | str,
+ conn_id: str = CohereHook.default_conn_name,
+ timeout: int | None = None,
+ max_retries: int | None = None,
+ **kwargs: Any,
+ ):
+ super().__init__(**kwargs)
+ if isinstance(input_text, str):
+ input_text = [input_text]
+ self.conn_id = conn_id
+ self.input_text = input_text
+ self.timeout = timeout
+ self.max_retries = max_retries
+
+ @cached_property
+ def hook(self) -> CohereHook:
+ """Return an instance of the CohereHook."""
+ return CohereHook(conn_id=self.conn_id, timeout=self.timeout, max_retries=self.max_retries)
+
+ def execute(self, context: Context) -> list[list[float]]:
+ """Embed texts using Cohere embed services."""
+ return self.hook.create_embeddings(self.input_text)
diff --git a/airflow/providers/cohere/provider.yaml b/airflow/providers/cohere/provider.yaml
new file mode 100644
index 0000000000..55500e0e76
--- /dev/null
+++ b/airflow/providers/cohere/provider.yaml
@@ -0,0 +1,54 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied. See the License for the
+# specific language governing permissions and limitations
+# under the License.
+
+---
+package-name: apache-airflow-providers-cohere
+
+name: Cohere
+
+description: |
+ `Cohere <https://docs.cohere.com/docs>`__
+
+suspended: false
+
+versions:
+ - 1.0.0
+
+integrations:
+ - integration-name: Cohere
+ external-doc-url: https://docs.cohere.com/docs
+ how-to-guide:
+ - /docs/apache-airflow-providers-cohere/operators/embedding.rst
+ tags: [software]
+
+dependencies:
+ - apache-airflow>=2.5.0
+ - cohere>=4.27
+
+hooks:
+ - integration-name: Cohere
+ python-modules:
+ - airflow.providers.cohere.hooks.cohere
+
+operators:
+ - integration-name: Cohere
+ python-modules:
+ - airflow.providers.cohere.operators.embedding
+
+connection-types:
+ - hook-class-name: airflow.providers.cohere.hooks.cohere.CohereHook
+ connection-type: cohere
diff --git a/docs/apache-airflow-providers-cohere/changelog.rst b/docs/apache-airflow-providers-cohere/changelog.rst
new file mode 100644
index 0000000000..be95cf4557
--- /dev/null
+++ b/docs/apache-airflow-providers-cohere/changelog.rst
@@ -0,0 +1,18 @@
+ .. Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you under the Apache License, Version 2.0 (the
+ "License"); you may not use this file except in compliance
+ with the License. You may obtain a copy of the License at
+
+ .. http://www.apache.org/licenses/LICENSE-2.0
+
+ .. Unless required by applicable law or agreed to in writing,
+ software distributed under the License is distributed on an
+ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ KIND, either express or implied. See the License for the
+ specific language governing permissions and limitations
+ under the License.
+
+.. include:: ../../airflow/providers/cohere/CHANGELOG.rst
diff --git a/docs/apache-airflow-providers-cohere/commits.rst b/docs/apache-airflow-providers-cohere/commits.rst
new file mode 100644
index 0000000000..f69ac2c0ad
--- /dev/null
+++ b/docs/apache-airflow-providers-cohere/commits.rst
@@ -0,0 +1,19 @@
+ .. Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you under the Apache License, Version 2.0 (the
+ "License"); you may not use this file except in compliance
+ with the License. You may obtain a copy of the License at
+
+ .. http://www.apache.org/licenses/LICENSE-2.0
+
+ .. Unless required by applicable law or agreed to in writing,
+ software distributed under the License is distributed on an
+ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ KIND, either express or implied. See the License for the
+ specific language governing permissions and limitations
+ under the License.
+
+Package apache-airflow-providers-cohere
+-------------------------------------------
diff --git a/docs/apache-airflow-providers-cohere/connections.rst b/docs/apache-airflow-providers-cohere/connections.rst
new file mode 100644
index 0000000000..0ab583dfd5
--- /dev/null
+++ b/docs/apache-airflow-providers-cohere/connections.rst
@@ -0,0 +1,37 @@
+ .. Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you under the Apache License, Version 2.0 (the
+ "License"); you may not use this file except in compliance
+ with the License. You may obtain a copy of the License at
+
+ .. http://www.apache.org/licenses/LICENSE-2.0
+
+ .. Unless required by applicable law or agreed to in writing,
+ software distributed under the License is distributed on an
+ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ KIND, either express or implied. See the License for the
+ specific language governing permissions and limitations
+ under the License.
+
+.. _howto/connection:cohere:
+
+Cohere Connection
+=======================
+
+The `Cohere <https://cohere.com/>`__ connection type enables access to Cohere APIs, which we can use to interact with multilingual models.
+
+Default Connection IDs
+----------------------
+
+Cohere hooks point to ``cohere_default`` by default.
+
+Configuring the Connection
+--------------------------
+
+Password (required)
+ Specify the password to connect.
+
+Host (optional)
+ Specify the API host
diff --git a/docs/apache-airflow-providers-cohere/index.rst b/docs/apache-airflow-providers-cohere/index.rst
new file mode 100644
index 0000000000..8bfd1678a3
--- /dev/null
+++ b/docs/apache-airflow-providers-cohere/index.rst
@@ -0,0 +1,98 @@
+
+ .. Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you under the Apache License, Version 2.0 (the
+ "License"); you may not use this file except in compliance
+ with the License. You may obtain a copy of the License at
+
+ .. http://www.apache.org/licenses/LICENSE-2.0
+
+ .. Unless required by applicable law or agreed to in writing,
+ software distributed under the License is distributed on an
+ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ KIND, either express or implied. See the License for the
+ specific language governing permissions and limitations
+ under the License.
+
+``apache-airflow-providers-cohere``
+======================================
+
+
+.. toctree::
+ :hidden:
+ :maxdepth: 1
+ :caption: Basics
+
+ Home <self>
+ Changelog <changelog>
+ Security <security>
+
+.. toctree::
+ :hidden:
+ :maxdepth: 1
+ :caption: Guides
+
+ Connection types <connections>
+ Operators <operators/embedding>
+
+.. toctree::
+ :hidden:
+ :maxdepth: 1
+ :caption: Resources
+
+ Python API <_api/airflow/providers/cohere/index>
+ PyPI Repository <https://pypi.org/project/apache-airflow-providers-cohere/>
+ Installing from sources <installing-providers-from-sources>
+
+.. toctree::
+ :hidden:
+ :maxdepth: 1
+ :caption: System tests
+
+ System Tests <_api/tests/system/providers/cohere/index>
+
+Package apache-airflow-providers-cohere
+-----------------------------------------
+
+`Cohere <https://cohere.com>`__
+
+
+Release: 1.0.0
+
+Provider package
+----------------
+
+This is a provider package for ``cohere`` APIs. All classes for this provider package
+are in ``airflow.providers.cohere`` python module.
+
+Installation
+------------
+
+You can install this package on top of an existing Airflow 2 installation (see ``Requirements`` below)
+for the minimum Airflow version supported) via
+``pip install apache-airflow-providers-cohere``
+
+
+Requirements
+------------
+
+The minimum Apache Airflow version supported by this provider package is ``2.5.0``.
+
+================== ==================
+PIP package Version required
+================== ==================
+``apache-airflow`` ``>=2.5.0``
+``cohere`` ``>=4.27``
+================== ==================
+
+.. THE REMAINDER OF THE FILE IS AUTOMATICALLY GENERATED. IT WILL BE OVERWRITTEN AT RELEASE TIME!
+
+
+.. toctree::
+ :hidden:
+ :maxdepth: 1
+ :caption: Commits
+
+ Detailed list of commits <commits>
diff --git a/docs/apache-airflow-providers-cohere/installing-providers-from-sources.rst b/docs/apache-airflow-providers-cohere/installing-providers-from-sources.rst
new file mode 100644
index 0000000000..b4e730f4ff
--- /dev/null
+++ b/docs/apache-airflow-providers-cohere/installing-providers-from-sources.rst
@@ -0,0 +1,18 @@
+ .. Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you under the Apache License, Version 2.0 (the
+ "License"); you may not use this file except in compliance
+ with the License. You may obtain a copy of the License at
+
+ .. http://www.apache.org/licenses/LICENSE-2.0
+
+ .. Unless required by applicable law or agreed to in writing,
+ software distributed under the License is distributed on an
+ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ KIND, either express or implied. See the License for the
+ specific language governing permissions and limitations
+ under the License.
+
+.. include:: ../exts/includes/installing-providers-from-sources.rst
diff --git a/docs/apache-airflow-providers-cohere/operators/embedding.rst b/docs/apache-airflow-providers-cohere/operators/embedding.rst
new file mode 100644
index 0000000000..b765fe8e9d
--- /dev/null
+++ b/docs/apache-airflow-providers-cohere/operators/embedding.rst
@@ -0,0 +1,40 @@
+ .. Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you under the Apache License, Version 2.0 (the
+ "License"); you may not use this file except in compliance
+ with the License. You may obtain a copy of the License at
+
+ .. http://www.apache.org/licenses/LICENSE-2.0
+
+ .. Unless required by applicable law or agreed to in writing,
+ software distributed under the License is distributed on an
+ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ KIND, either express or implied. See the License for the
+ specific language governing permissions and limitations
+ under the License.
+
+.. _howto/operator:CohereEmbeddingOperator:
+
+CohereEmbeddingOperator
+========================
+
+Use the :class:`~airflow.providers.cohere.operators.embedding.CohereEmbeddingOperator` to
+interact with Cohere APIs to create embeddings for a given text.
+
+
+Using the Operator
+^^^^^^^^^^^^^^^^^^
+
+The CohereEmbeddingOperator requires the ``input_text`` as an input to embedding API. Use the ``conn_id`` parameter to specify the Cohere connection to use to
+connect to your account.
+
+Example Code:
+-------------
+
+.. exampleinclude:: /../../tests/system/providers/cohere/example_cohere_embedding_operator.py
+ :language: python
+ :dedent: 4
+ :start-after: [START howto_operator_cohere_embedding]
+ :end-before: [END howto_operator_cohere_embedding]
diff --git a/docs/apache-airflow-providers-cohere/security.rst b/docs/apache-airflow-providers-cohere/security.rst
new file mode 100644
index 0000000000..b8f95e6ecf
--- /dev/null
+++ b/docs/apache-airflow-providers-cohere/security.rst
@@ -0,0 +1,19 @@
+
+ .. Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you under the Apache License, Version 2.0 (the
+ "License"); you may not use this file except in compliance
+ with the License. You may obtain a copy of the License at
+
+ .. http://www.apache.org/licenses/LICENSE-2.0
+
+ .. Unless required by applicable law or agreed to in writing,
+ software distributed under the License is distributed on an
+ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ KIND, either express or implied. See the License for the
+ specific language governing permissions and limitations
+ under the License.
+
+.. include:: ../exts/includes/security.rst
diff --git a/docs/apache-airflow/extra-packages-ref.rst b/docs/apache-airflow/extra-packages-ref.rst
index dba750908d..9f7fcc9a03 100644
--- a/docs/apache-airflow/extra-packages-ref.rst
+++ b/docs/apache-airflow/extra-packages-ref.rst
@@ -172,6 +172,8 @@ These are extras that add dependencies needed for integration with external serv
+---------------------+-----------------------------------------------------+-----------------------------------------------------+
| cloudant | ``pip install 'apache-airflow[cloudant]'`` | Cloudant hook |
+---------------------+-----------------------------------------------------+-----------------------------------------------------+
+| cohere | ``pip install 'apache-airflow[cohere]'`` | Cohere hook and operators |
++---------------------+-----------------------------------------------------+-----------------------------------------------------+
| databricks | ``pip install 'apache-airflow[databricks]'`` | Databricks hooks and operators |
+---------------------+-----------------------------------------------------+-----------------------------------------------------+
| datadog | ``pip install 'apache-airflow[datadog]'`` | Datadog hooks and sensors |
diff --git a/generated/provider_dependencies.json b/generated/provider_dependencies.json
index 38d2259dab..8be76a03e9 100644
--- a/generated/provider_dependencies.json
+++ b/generated/provider_dependencies.json
@@ -269,6 +269,14 @@
"cross-providers-deps": [],
"excluded-python-versions": []
},
+ "cohere": {
+ "deps": [
+ "apache-airflow>=2.5.0",
+ "cohere>=4.27"
+ ],
+ "cross-providers-deps": [],
+ "excluded-python-versions": []
+ },
"common.io": {
"deps": [
"apache-airflow>=2.8.0"
diff --git a/images/breeze/output-commands-hash.txt b/images/breeze/output-commands-hash.txt
index 64ba323baa..a5d9a89c8d 100644
--- a/images/breeze/output-commands-hash.txt
+++ b/images/breeze/output-commands-hash.txt
@@ -2,7 +2,7 @@
# Please do not solve it but run `breeze setup regenerate-command-images`.
# This command should fix the conflict and regenerate help images that you have conflict with.
main:96b4884054753db922cb8ca2cc555368
-build-docs:2e9882744f219e56726548ce2d13c3f5
+build-docs:3863424b58f31d5a2b285055b044ad70
ci:find-backtracking-candidates:17fe56b867a745e5032a08dfcd3f73ee
ci:fix-ownership:3e5a73533cc96045e72cb258783cfc96
ci:free-space:49af17b032039c05c41a7a8283f365cc
@@ -36,26 +36,26 @@ prod-image:build:1628f7bff3e7e369f0358a646682e674
prod-image:pull:3817ef211b023b76df84ee1110ef64dd
prod-image:verify:bd2b78738a7c388dbad6076c41a9f906
prod-image:6011405076eb0e1049d87e971e3adce1
-release-management:add-back-references:51960e2831d0e03a2b127d252929b843
+release-management:add-back-references:8154089f6b96923edd772c5a38f7d143
release-management:create-minor-branch:a3834afc4aa5d1e98002c9e9e7a9931d
release-management:generate-constraints:01aef235b11e59ed7f10c970a5cdaba7
-release-management:generate-issue-content-providers:cda108e7f2506c2816af8f2a6c24070c
+release-management:generate-issue-content-providers:97e29b10f93a0d0276469fc470110c95
release-management:generate-providers-metadata:d4e8e5cfaa024e3963af02d7a873048d
release-management:install-provider-packages:34c38aca17d23dbb454fe7a6bfd8e630
release-management:prepare-airflow-package:85d01c57e5b5ee0fb9e5f9d9706ed3b5
-release-management:prepare-provider-documentation:eb861d68b8d72cd98dc8732fc5393796
-release-management:prepare-provider-packages:908e2c826f7b4959dfd8bc693f3857a7
-release-management:publish-docs:51ee9bf1268529513996a14bd5350c19
+release-management:prepare-provider-documentation:8a142fef4a148279d7794571c4cfed33
+release-management:prepare-provider-packages:10c9e86ce1ba6c50acfd0d5367d06da8
+release-management:publish-docs:7eef8e54cbc9743afb865531ff92503d
release-management:release-prod-images:cfbfe8b19fee91fd90718f98ef2fd078
release-management:start-rc-process:b27bd524dd3c89f50a747b60a7e892c1
release-management:start-release:419f48f6a4ff4457cb9de7ff496aebbe
release-management:update-constraints:02ec4b119150e3fdbac52026e94820ef
release-management:verify-provider-packages:96dce5644aad6b37080acf77b3d8de3a
-release-management:59d956e45fccf55e47f16e33cfc5d04a
+release-management:c0d470f72e53df330e573c7bc0a08470
sbom:build-all-airflow-images:32f8acade299c2b112e986bae99846db
-sbom:generate-providers-requirements:3926848718283cf2ef00310a0892e867
+sbom:generate-providers-requirements:bc008fcd52f258fbd989a42e66e44349
sbom:update-sbom-information:653be48be70b4b7ff5172d491aadc694
-sbom:386048e0c00c0de30cf181eb9f3862ea
+sbom:9d0e848adefac54a4ccda950ca3bc4ee
setup:autocomplete:fffcd49e102e09ccd69b3841a9e3ea8e
setup:check-all-params-in-groups:5c5e3c382fc8ce84899d224448b3f48a
setup:config:3435f1f1535a82c30591dbf577294d2e
diff --git a/images/breeze/output_build-docs.svg b/images/breeze/output_build-docs.svg
index 6bb4ceffe6..7622be26f3 100644
--- a/images/breeze/output_build-docs.svg
+++ b/images/breeze/output_build-docs.svg
@@ -163,7 +163,7 @@
</text><text class="breeze-build-docs-r1" x="12.2" y="93.2" textLength="12.2" clip-path="url(#breeze-build-docs-line-3)">[</text><text class="breeze-build-docs-r4" x="24.4" y="93.2" textLength="85.4" clip-path="url(#breeze-build-docs-line-3)">OPTIONS</text><text class="breeze-build-docs-r1" x="109.8" y="93.2" textLength="36.6" clip-path="url(#breeze-build-docs-line-3)">] [</text><text class="breeze-build-docs-r4" x="146.4" y="93.2" textLength="36.6" clip-path="url(#breeze-build-docs [...]
</text><text class="breeze-build-docs-r4" x="12.2" y="117.6" textLength="73.2" clip-path="url(#breeze-build-docs-line-4)">apache</text><text class="breeze-build-docs-r1" x="85.4" y="117.6" textLength="12.2" clip-path="url(#breeze-build-docs-line-4)">.</text><text class="breeze-build-docs-r4" x="97.6" y="117.6" textLength="48.8" clip-path="url(#breeze-build-docs-line-4)">beam</text><text class="breeze-build-docs-r1" x="146.4" y="117.6" textLength="36.6" clip-path="url(#breeze-build-docs-l [...]
</text><text class="breeze-build-docs-r4" x="12.2" y="142" textLength="73.2" clip-path="url(#breeze-build-docs-line-5)">apache</text><text class="breeze-build-docs-r1" x="85.4" y="142" textLength="12.2" clip-path="url(#breeze-build-docs-line-5)">.</text><text class="breeze-build-docs-r4" x="97.6" y="142" textLength="73.2" clip-path="url(#breeze-build-docs-line-5)">impala</text><text class="breeze-build-docs-r1" x="170.8" y="142" textLength="36.6" clip-path="url(#breeze-build-docs-line-5) [...]
-</text><text class="breeze-build-docs-r4" x="12.2" y="166.4" textLength="85.4" clip-path="url(#breeze-build-docs-line-6)">apprise</text><text class="breeze-build-docs-r1" x="97.6" y="166.4" textLength="36.6" clip-path="url(#breeze-build-docs-line-6)"> | </text><text class="breeze-build-docs-r4" x="134.2" y="166.4" textLength="97.6" clip-path="url(#breeze-build-docs-line-6)">arangodb</text><text class="breeze-build-docs-r1" x="231.8" y="166.4" textLength="36.6" clip-path="url(#b [...]
+</text><text class="breeze-build-docs-r4" x="12.2" y="166.4" textLength="85.4" clip-path="url(#breeze-build-docs-line-6)">apprise</text><text class="breeze-build-docs-r1" x="97.6" y="166.4" textLength="36.6" clip-path="url(#breeze-build-docs-line-6)"> | </text><text class="breeze-build-docs-r4" x="134.2" y="166.4" textLength="97.6" clip-path="url(#breeze-build-docs-line-6)">arangodb</text><text class="breeze-build-docs-r1" x="231.8" y="166.4" textLength="36.6" clip-path="url(#b [...]
</text><text class="breeze-build-docs-r4" x="12.2" y="190.8" textLength="146.4" clip-path="url(#breeze-build-docs-line-7)">daskexecutor</text><text class="breeze-build-docs-r1" x="158.6" y="190.8" textLength="36.6" clip-path="url(#breeze-build-docs-line-7)"> | </text><text class="breeze-build-docs-r4" x="195.2" y="190.8" textLength="122" clip-path="url(#breeze-build-docs-line-7)">databricks</text><text class="breeze-build-docs-r1" x="317.2" y="190.8" textLength="36.6" clip-path [...]
</text><text class="breeze-build-docs-r4" x="12.2" y="215.2" textLength="36.6" clip-path="url(#breeze-build-docs-line-8)">ftp</text><text class="breeze-build-docs-r1" x="48.8" y="215.2" textLength="36.6" clip-path="url(#breeze-build-docs-line-8)"> | </text><text class="breeze-build-docs-r4" x="85.4" y="215.2" textLength="73.2" clip-path="url(#breeze-build-docs-line-8)">github</text><text class="breeze-build-docs-r1" x="158.6" y="215.2" textLength="36.6" clip-path="url(#breeze-b [...]
</text><text class="breeze-build-docs-r1" x="12.2" y="239.6" textLength="24.4" clip-path="url(#breeze-build-docs-line-9)">| </text><text class="breeze-build-docs-r4" x="36.6" y="239.6" textLength="109.8" clip-path="url(#breeze-build-docs-line-9)">microsoft</text><text class="breeze-build-docs-r1" x="146.4" y="239.6" textLength="12.2" clip-path="url(#breeze-build-docs-line-9)">.</text><text class="breeze-build-docs-r4" x="158.6" y="239.6" textLength="48.8" clip-path="url(#breeze-buil [...]
diff --git a/images/breeze/output_release-management_add-back-references.svg b/images/breeze/output_release-management_add-back-references.svg
index ebcd1572ef..fd0739906c 100644
--- a/images/breeze/output_release-management_add-back-references.svg
+++ b/images/breeze/output_release-management_add-back-references.svg
@@ -134,10 +134,10 @@
</text><text class="breeze-release-management-add-back-references-r1" x="12.2" y="93.2" textLength="12.2" clip-path="url(#breeze-release-management-add-back-references-line-3)">[</text><text class="breeze-release-management-add-back-references-r4" x="24.4" y="93.2" textLength="85.4" clip-path="url(#breeze-release-management-add-back-references-line-3)">OPTIONS</text><text class="breeze-release-management-add-back-references-r1" x="109.8" y="93.2" textLength="36.6" clip-path="url(#breeze- [...]
</text><text class="breeze-release-management-add-back-references-r4" x="12.2" y="117.6" textLength="73.2" clip-path="url(#breeze-release-management-add-back-references-line-4)">apache</text><text class="breeze-release-management-add-back-references-r1" x="85.4" y="117.6" textLength="12.2" clip-path="url(#breeze-release-management-add-back-references-line-4)">.</text><text class="breeze-release-management-add-back-references-r4" x="97.6" y="117.6" textLength="109.8" clip-path="url(#breez [...]
</text><text class="breeze-release-management-add-back-references-r4" x="12.2" y="142" textLength="73.2" clip-path="url(#breeze-release-management-add-back-references-line-5)">apache</text><text class="breeze-release-management-add-back-references-r1" x="85.4" y="142" textLength="12.2" clip-path="url(#breeze-release-management-add-back-references-line-5)">.</text><text class="breeze-release-management-add-back-references-r4" x="97.6" y="142" textLength="61" clip-path="url(#breeze-release [...]
-</text><text class="breeze-release-management-add-back-references-r4" x="12.2" y="166.4" textLength="97.6" clip-path="url(#breeze-release-management-add-back-references-line-6)">arangodb</text><text class="breeze-release-management-add-back-references-r1" x="109.8" y="166.4" textLength="36.6" clip-path="url(#breeze-release-management-add-back-references-line-6)"> | </text><text class="breeze-release-management-add-back-references-r4" x="146.4" y="166.4" textLength="61" clip-pat [...]
-</text><text class="breeze-release-management-add-back-references-r4" x="12.2" y="190.8" textLength="122" clip-path="url(#breeze-release-management-add-back-references-line-7)">databricks</text><text class="breeze-release-management-add-back-references-r1" x="134.2" y="190.8" textLength="36.6" clip-path="url(#breeze-release-management-add-back-references-line-7)"> | </text><text class="breeze-release-management-add-back-references-r4" x="170.8" y="190.8" textLength="85.4" clip- [...]
-</text><text class="breeze-release-management-add-back-references-r4" x="12.2" y="215.2" textLength="73.2" clip-path="url(#breeze-release-management-add-back-references-line-8)">google</text><text class="breeze-release-management-add-back-references-r1" x="85.4" y="215.2" textLength="36.6" clip-path="url(#breeze-release-management-add-back-references-line-8)"> | </text><text class="breeze-release-management-add-back-references-r4" x="122" y="215.2" textLength="48.8" clip-path=" [...]
-</text><text class="breeze-release-management-add-back-references-r4" x="12.2" y="239.6" textLength="109.8" clip-path="url(#breeze-release-management-add-back-references-line-9)">microsoft</text><text class="breeze-release-management-add-back-references-r1" x="122" y="239.6" textLength="12.2" clip-path="url(#breeze-release-management-add-back-references-line-9)">.</text><text class="breeze-release-management-add-back-references-r4" x="134.2" y="239.6" textLength="48.8" clip-path="url(#br [...]
+</text><text class="breeze-release-management-add-back-references-r4" x="12.2" y="166.4" textLength="97.6" clip-path="url(#breeze-release-management-add-back-references-line-6)">arangodb</text><text class="breeze-release-management-add-back-references-r1" x="109.8" y="166.4" textLength="36.6" clip-path="url(#breeze-release-management-add-back-references-line-6)"> | </text><text class="breeze-release-management-add-back-references-r4" x="146.4" y="166.4" textLength="61" clip-pat [...]
+</text><text class="breeze-release-management-add-back-references-r4" x="12.2" y="190.8" textLength="146.4" clip-path="url(#breeze-release-management-add-back-references-line-7)">daskexecutor</text><text class="breeze-release-management-add-back-references-r1" x="158.6" y="190.8" textLength="36.6" clip-path="url(#breeze-release-management-add-back-references-line-7)"> | </text><text class="breeze-release-management-add-back-references-r4" x="195.2" y="190.8" textLength="122" cl [...]
+</text><text class="breeze-release-management-add-back-references-r4" x="12.2" y="215.2" textLength="36.6" clip-path="url(#breeze-release-management-add-back-references-line-8)">ftp</text><text class="breeze-release-management-add-back-references-r1" x="48.8" y="215.2" textLength="36.6" clip-path="url(#breeze-release-management-add-back-references-line-8)"> | </text><text class="breeze-release-management-add-back-references-r4" x="85.4" y="215.2" textLength="73.2" clip-path="ur [...]
+</text><text class="breeze-release-management-add-back-references-r1" x="12.2" y="239.6" textLength="24.4" clip-path="url(#breeze-release-management-add-back-references-line-9)">| </text><text class="breeze-release-management-add-back-references-r4" x="36.6" y="239.6" textLength="109.8" clip-path="url(#breeze-release-management-add-back-references-line-9)">microsoft</text><text class="breeze-release-management-add-back-references-r1" x="146.4" y="239.6" textLength="12.2" clip-path=" [...]
</text><text class="breeze-release-management-add-back-references-r4" x="12.2" y="264" textLength="73.2" clip-path="url(#breeze-release-management-add-back-references-line-10)">oracle</text><text class="breeze-release-management-add-back-references-r1" x="85.4" y="264" textLength="36.6" clip-path="url(#breeze-release-management-add-back-references-line-10)"> | </text><text class="breeze-release-management-add-back-references-r4" x="122" y="264" textLength="109.8" clip-path="url [...]
</text><text class="breeze-release-management-add-back-references-r4" x="12.2" y="288.4" textLength="134.2" clip-path="url(#breeze-release-management-add-back-references-line-11)">singularity</text><text class="breeze-release-management-add-back-references-r1" x="146.4" y="288.4" textLength="36.6" clip-path="url(#breeze-release-management-add-back-references-line-11)"> | </text><text class="breeze-release-management-add-back-references-r4" x="183" y="288.4" textLength="61" clip [...]
</text><text class="breeze-release-management-add-back-references-r4" x="12.2" y="312.8" textLength="85.4" clip-path="url(#breeze-release-management-add-back-references-line-12)">zendesk</text><text class="breeze-release-management-add-back-references-r1" x="97.6" y="312.8" textLength="1354.2" clip-path="url(#breeze-release-management-add-back-references-line-12)">]...                    & [...]
diff --git a/images/breeze/output_release-management_generate-issue-content-providers.svg b/images/breeze/output_release-management_generate-issue-content-providers.svg
index 10139cafc5..6f03ffa40d 100644
--- a/images/breeze/output_release-management_generate-issue-content-providers.svg
+++ b/images/breeze/output_release-management_generate-issue-content-providers.svg
@@ -144,12 +144,12 @@
</text><text class="breeze-release-management-generate-issue-content-providers-r1" x="12.2" y="93.2" textLength="12.2" clip-path="url(#breeze-release-management-generate-issue-content-providers-line-3)">[</text><text class="breeze-release-management-generate-issue-content-providers-r4" x="24.4" y="93.2" textLength="85.4" clip-path="url(#breeze-release-management-generate-issue-content-providers-line-3)">OPTIONS</text><text class="breeze-release-management-generate-issue-content-providers [...]
</text><text class="breeze-release-management-generate-issue-content-providers-r4" x="12.2" y="117.6" textLength="73.2" clip-path="url(#breeze-release-management-generate-issue-content-providers-line-4)">apache</text><text class="breeze-release-management-generate-issue-content-providers-r1" x="85.4" y="117.6" textLength="12.2" clip-path="url(#breeze-release-management-generate-issue-content-providers-line-4)">.</text><text class="breeze-release-management-generate-issue-content-provider [...]
</text><text class="breeze-release-management-generate-issue-content-providers-r4" x="12.2" y="142" textLength="73.2" clip-path="url(#breeze-release-management-generate-issue-content-providers-line-5)">apache</text><text class="breeze-release-management-generate-issue-content-providers-r1" x="85.4" y="142" textLength="12.2" clip-path="url(#breeze-release-management-generate-issue-content-providers-line-5)">.</text><text class="breeze-release-management-generate-issue-content-providers-r4 [...]
-</text><text class="breeze-release-management-generate-issue-content-providers-r4" x="12.2" y="166.4" textLength="73.2" clip-path="url(#breeze-release-management-generate-issue-content-providers-line-6)">celery</text><text class="breeze-release-management-generate-issue-content-providers-r1" x="85.4" y="166.4" textLength="36.6" clip-path="url(#breeze-release-management-generate-issue-content-providers-line-6)"> | </text><text class="breeze-release-management-generate-issue-cont [...]
-</text><text class="breeze-release-management-generate-issue-content-providers-r4" x="12.2" y="190.8" textLength="97.6" clip-path="url(#breeze-release-management-generate-issue-content-providers-line-7)">dingding</text><text class="breeze-release-management-generate-issue-content-providers-r1" x="109.8" y="190.8" textLength="36.6" clip-path="url(#breeze-release-management-generate-issue-content-providers-line-7)"> | </text><text class="breeze-release-management-generate-issue-c [...]
-</text><text class="breeze-release-management-generate-issue-content-providers-r4" x="12.2" y="215.2" textLength="48.8" clip-path="url(#breeze-release-management-generate-issue-content-providers-line-8)">imap</text><text class="breeze-release-management-generate-issue-content-providers-r1" x="61" y="215.2" textLength="36.6" clip-path="url(#breeze-release-management-generate-issue-content-providers-line-8)"> | </text><text class="breeze-release-management-generate-issue-content- [...]
-</text><text class="breeze-release-management-generate-issue-content-providers-r4" x="12.2" y="239.6" textLength="61" clip-path="url(#breeze-release-management-generate-issue-content-providers-line-9)">mysql</text><text class="breeze-release-management-generate-issue-content-providers-r1" x="73.2" y="239.6" textLength="36.6" clip-path="url(#breeze-release-management-generate-issue-content-providers-line-9)"> | </text><text class="breeze-release-management-generate-issue-content [...]
-</text><text class="breeze-release-management-generate-issue-content-providers-r4" x="12.2" y="264" textLength="97.6" clip-path="url(#breeze-release-management-generate-issue-content-providers-line-10)">postgres</text><text class="breeze-release-management-generate-issue-content-providers-r1" x="109.8" y="264" textLength="36.6" clip-path="url(#breeze-release-management-generate-issue-content-providers-line-10)"> | </text><text class="breeze-release-management-generate-issue-con [...]
-</text><text class="breeze-release-management-generate-issue-content-providers-r4" x="12.2" y="288.4" textLength="73.2" clip-path="url(#breeze-release-management-generate-issue-content-providers-line-11)">sqlite</text><text class="breeze-release-management-generate-issue-content-providers-r1" x="85.4" y="288.4" textLength="36.6" clip-path="url(#breeze-release-management-generate-issue-content-providers-line-11)"> | </text><text class="breeze-release-management-generate-issue-co [...]
+</text><text class="breeze-release-management-generate-issue-content-providers-r4" x="12.2" y="166.4" textLength="73.2" clip-path="url(#breeze-release-management-generate-issue-content-providers-line-6)">celery</text><text class="breeze-release-management-generate-issue-content-providers-r1" x="85.4" y="166.4" textLength="36.6" clip-path="url(#breeze-release-management-generate-issue-content-providers-line-6)"> | </text><text class="breeze-release-management-generate-issue-cont [...]
+</text><text class="breeze-release-management-generate-issue-content-providers-r4" x="12.2" y="190.8" textLength="36.6" clip-path="url(#breeze-release-management-generate-issue-content-providers-line-7)">dbt</text><text class="breeze-release-management-generate-issue-content-providers-r1" x="48.8" y="190.8" textLength="12.2" clip-path="url(#breeze-release-management-generate-issue-content-providers-line-7)">.</text><text class="breeze-release-management-generate-issue-content-providers-r [...]
+</text><text class="breeze-release-management-generate-issue-content-providers-r1" x="12.2" y="215.2" textLength="24.4" clip-path="url(#breeze-release-management-generate-issue-content-providers-line-8)">| </text><text class="breeze-release-management-generate-issue-content-providers-r4" x="36.6" y="215.2" textLength="48.8" clip-path="url(#breeze-release-management-generate-issue-content-providers-line-8)">http</text><text class="breeze-release-management-generate-issue-content-prov [...]
+</text><text class="breeze-release-management-generate-issue-content-providers-r4" x="12.2" y="239.6" textLength="61" clip-path="url(#breeze-release-management-generate-issue-content-providers-line-9)">mongo</text><text class="breeze-release-management-generate-issue-content-providers-r1" x="73.2" y="239.6" textLength="36.6" clip-path="url(#breeze-release-management-generate-issue-content-providers-line-9)"> | </text><text class="breeze-release-management-generate-issue-content [...]
+</text><text class="breeze-release-management-generate-issue-content-providers-r4" x="12.2" y="264" textLength="73.2" clip-path="url(#breeze-release-management-generate-issue-content-providers-line-10)">plexus</text><text class="breeze-release-management-generate-issue-content-providers-r1" x="85.4" y="264" textLength="36.6" clip-path="url(#breeze-release-management-generate-issue-content-providers-line-10)"> | </text><text class="breeze-release-management-generate-issue-conten [...]
+</text><text class="breeze-release-management-generate-issue-content-providers-r4" x="12.2" y="288.4" textLength="109.8" clip-path="url(#breeze-release-management-generate-issue-content-providers-line-11)">snowflake</text><text class="breeze-release-management-generate-issue-content-providers-r1" x="122" y="288.4" textLength="36.6" clip-path="url(#breeze-release-management-generate-issue-content-providers-line-11)"> | </text><text class="breeze-release-management-generate-issue [...]
</text><text class="breeze-release-management-generate-issue-content-providers-r1" x="1464" y="312.8" textLength="12.2" clip-path="url(#breeze-release-management-generate-issue-content-providers-line-12)">
</text><text class="breeze-release-management-generate-issue-content-providers-r1" x="12.2" y="337.2" textLength="585.6" clip-path="url(#breeze-release-management-generate-issue-content-providers-line-13)">Generates content for issue to test the release.</text><text class="breeze-release-management-generate-issue-content-providers-r1" x="1464" y="337.2" textLength="12.2" clip-path="url(#breeze-release-management-generate-issue-content-providers-line-13)">
</text><text class="breeze-release-management-generate-issue-content-providers-r1" x="1464" y="361.6" textLength="12.2" clip-path="url(#breeze-release-management-generate-issue-content-providers-line-14)">
diff --git a/images/breeze/output_release-management_prepare-provider-documentation.svg b/images/breeze/output_release-management_prepare-provider-documentation.svg
index a8e4587c4b..27f198d97e 100644
--- a/images/breeze/output_release-management_prepare-provider-documentation.svg
+++ b/images/breeze/output_release-management_prepare-provider-documentation.svg
@@ -156,12 +156,12 @@
</text><text class="breeze-release-management-prepare-provider-documentation-r1" x="12.2" y="93.2" textLength="12.2" clip-path="url(#breeze-release-management-prepare-provider-documentation-line-3)">[</text><text class="breeze-release-management-prepare-provider-documentation-r4" x="24.4" y="93.2" textLength="85.4" clip-path="url(#breeze-release-management-prepare-provider-documentation-line-3)">OPTIONS</text><text class="breeze-release-management-prepare-provider-documentation-r1" x="10 [...]
</text><text class="breeze-release-management-prepare-provider-documentation-r4" x="12.2" y="117.6" textLength="73.2" clip-path="url(#breeze-release-management-prepare-provider-documentation-line-4)">apache</text><text class="breeze-release-management-prepare-provider-documentation-r1" x="85.4" y="117.6" textLength="12.2" clip-path="url(#breeze-release-management-prepare-provider-documentation-line-4)">.</text><text class="breeze-release-management-prepare-provider-documentation-r4" x="9 [...]
</text><text class="breeze-release-management-prepare-provider-documentation-r4" x="12.2" y="142" textLength="73.2" clip-path="url(#breeze-release-management-prepare-provider-documentation-line-5)">apache</text><text class="breeze-release-management-prepare-provider-documentation-r1" x="85.4" y="142" textLength="12.2" clip-path="url(#breeze-release-management-prepare-provider-documentation-line-5)">.</text><text class="breeze-release-management-prepare-provider-documentation-r4" x="97.6" [...]
-</text><text class="breeze-release-management-prepare-provider-documentation-r4" x="12.2" y="166.4" textLength="73.2" clip-path="url(#breeze-release-management-prepare-provider-documentation-line-6)">celery</text><text class="breeze-release-management-prepare-provider-documentation-r1" x="85.4" y="166.4" textLength="36.6" clip-path="url(#breeze-release-management-prepare-provider-documentation-line-6)"> | </text><text class="breeze-release-management-prepare-provider-documentat [...]
-</text><text class="breeze-release-management-prepare-provider-documentation-r4" x="12.2" y="190.8" textLength="97.6" clip-path="url(#breeze-release-management-prepare-provider-documentation-line-7)">dingding</text><text class="breeze-release-management-prepare-provider-documentation-r1" x="109.8" y="190.8" textLength="36.6" clip-path="url(#breeze-release-management-prepare-provider-documentation-line-7)"> | </text><text class="breeze-release-management-prepare-provider-documen [...]
-</text><text class="breeze-release-management-prepare-provider-documentation-r4" x="12.2" y="215.2" textLength="48.8" clip-path="url(#breeze-release-management-prepare-provider-documentation-line-8)">imap</text><text class="breeze-release-management-prepare-provider-documentation-r1" x="61" y="215.2" textLength="36.6" clip-path="url(#breeze-release-management-prepare-provider-documentation-line-8)"> | </text><text class="breeze-release-management-prepare-provider-documentation- [...]
-</text><text class="breeze-release-management-prepare-provider-documentation-r4" x="12.2" y="239.6" textLength="61" clip-path="url(#breeze-release-management-prepare-provider-documentation-line-9)">mysql</text><text class="breeze-release-management-prepare-provider-documentation-r1" x="73.2" y="239.6" textLength="36.6" clip-path="url(#breeze-release-management-prepare-provider-documentation-line-9)"> | </text><text class="breeze-release-management-prepare-provider-documentation [...]
-</text><text class="breeze-release-management-prepare-provider-documentation-r4" x="12.2" y="264" textLength="97.6" clip-path="url(#breeze-release-management-prepare-provider-documentation-line-10)">postgres</text><text class="breeze-release-management-prepare-provider-documentation-r1" x="109.8" y="264" textLength="36.6" clip-path="url(#breeze-release-management-prepare-provider-documentation-line-10)"> | </text><text class="breeze-release-management-prepare-provider-documenta [...]
-</text><text class="breeze-release-management-prepare-provider-documentation-r4" x="12.2" y="288.4" textLength="73.2" clip-path="url(#breeze-release-management-prepare-provider-documentation-line-11)">sqlite</text><text class="breeze-release-management-prepare-provider-documentation-r1" x="85.4" y="288.4" textLength="36.6" clip-path="url(#breeze-release-management-prepare-provider-documentation-line-11)"> | </text><text class="breeze-release-management-prepare-provider-document [...]
+</text><text class="breeze-release-management-prepare-provider-documentation-r4" x="12.2" y="166.4" textLength="73.2" clip-path="url(#breeze-release-management-prepare-provider-documentation-line-6)">celery</text><text class="breeze-release-management-prepare-provider-documentation-r1" x="85.4" y="166.4" textLength="36.6" clip-path="url(#breeze-release-management-prepare-provider-documentation-line-6)"> | </text><text class="breeze-release-management-prepare-provider-documentat [...]
+</text><text class="breeze-release-management-prepare-provider-documentation-r4" x="12.2" y="190.8" textLength="36.6" clip-path="url(#breeze-release-management-prepare-provider-documentation-line-7)">dbt</text><text class="breeze-release-management-prepare-provider-documentation-r1" x="48.8" y="190.8" textLength="12.2" clip-path="url(#breeze-release-management-prepare-provider-documentation-line-7)">.</text><text class="breeze-release-management-prepare-provider-documentation-r4" x="61" [...]
+</text><text class="breeze-release-management-prepare-provider-documentation-r1" x="12.2" y="215.2" textLength="24.4" clip-path="url(#breeze-release-management-prepare-provider-documentation-line-8)">| </text><text class="breeze-release-management-prepare-provider-documentation-r4" x="36.6" y="215.2" textLength="48.8" clip-path="url(#breeze-release-management-prepare-provider-documentation-line-8)">http</text><text class="breeze-release-management-prepare-provider-documentation-r1" [...]
+</text><text class="breeze-release-management-prepare-provider-documentation-r4" x="12.2" y="239.6" textLength="61" clip-path="url(#breeze-release-management-prepare-provider-documentation-line-9)">mongo</text><text class="breeze-release-management-prepare-provider-documentation-r1" x="73.2" y="239.6" textLength="36.6" clip-path="url(#breeze-release-management-prepare-provider-documentation-line-9)"> | </text><text class="breeze-release-management-prepare-provider-documentation [...]
+</text><text class="breeze-release-management-prepare-provider-documentation-r4" x="12.2" y="264" textLength="73.2" clip-path="url(#breeze-release-management-prepare-provider-documentation-line-10)">plexus</text><text class="breeze-release-management-prepare-provider-documentation-r1" x="85.4" y="264" textLength="36.6" clip-path="url(#breeze-release-management-prepare-provider-documentation-line-10)"> | </text><text class="breeze-release-management-prepare-provider-documentatio [...]
+</text><text class="breeze-release-management-prepare-provider-documentation-r4" x="12.2" y="288.4" textLength="109.8" clip-path="url(#breeze-release-management-prepare-provider-documentation-line-11)">snowflake</text><text class="breeze-release-management-prepare-provider-documentation-r1" x="122" y="288.4" textLength="36.6" clip-path="url(#breeze-release-management-prepare-provider-documentation-line-11)"> | </text><text class="breeze-release-management-prepare-provider-docum [...]
</text><text class="breeze-release-management-prepare-provider-documentation-r1" x="1464" y="312.8" textLength="12.2" clip-path="url(#breeze-release-management-prepare-provider-documentation-line-12)">
</text><text class="breeze-release-management-prepare-provider-documentation-r1" x="12.2" y="337.2" textLength="780.8" clip-path="url(#breeze-release-management-prepare-provider-documentation-line-13)">Prepare CHANGELOG, README and COMMITS information for providers.</text><text class="breeze-release-management-prepare-provider-documentation-r1" x="1464" y="337.2" textLength="12.2" clip-path="url(#breeze-release-management-prepare-provider-documentation- [...]
</text><text class="breeze-release-management-prepare-provider-documentation-r1" x="1464" y="361.6" textLength="12.2" clip-path="url(#breeze-release-management-prepare-provider-documentation-line-14)">
diff --git a/images/breeze/output_release-management_prepare-provider-packages.svg b/images/breeze/output_release-management_prepare-provider-packages.svg
index fa4c36063e..507cd13783 100644
--- a/images/breeze/output_release-management_prepare-provider-packages.svg
+++ b/images/breeze/output_release-management_prepare-provider-packages.svg
@@ -141,12 +141,12 @@
</text><text class="breeze-release-management-prepare-provider-packages-r1" x="12.2" y="93.2" textLength="12.2" clip-path="url(#breeze-release-management-prepare-provider-packages-line-3)">[</text><text class="breeze-release-management-prepare-provider-packages-r4" x="24.4" y="93.2" textLength="85.4" clip-path="url(#breeze-release-management-prepare-provider-packages-line-3)">OPTIONS</text><text class="breeze-release-management-prepare-provider-packages-r1" x="109.8" y="93.2" textLength= [...]
</text><text class="breeze-release-management-prepare-provider-packages-r4" x="12.2" y="117.6" textLength="73.2" clip-path="url(#breeze-release-management-prepare-provider-packages-line-4)">apache</text><text class="breeze-release-management-prepare-provider-packages-r1" x="85.4" y="117.6" textLength="12.2" clip-path="url(#breeze-release-management-prepare-provider-packages-line-4)">.</text><text class="breeze-release-management-prepare-provider-packages-r4" x="97.6" y="117.6" textLength [...]
</text><text class="breeze-release-management-prepare-provider-packages-r4" x="12.2" y="142" textLength="73.2" clip-path="url(#breeze-release-management-prepare-provider-packages-line-5)">apache</text><text class="breeze-release-management-prepare-provider-packages-r1" x="85.4" y="142" textLength="12.2" clip-path="url(#breeze-release-management-prepare-provider-packages-line-5)">.</text><text class="breeze-release-management-prepare-provider-packages-r4" x="97.6" y="142" textLength="48.8 [...]
-</text><text class="breeze-release-management-prepare-provider-packages-r4" x="12.2" y="166.4" textLength="73.2" clip-path="url(#breeze-release-management-prepare-provider-packages-line-6)">celery</text><text class="breeze-release-management-prepare-provider-packages-r1" x="85.4" y="166.4" textLength="36.6" clip-path="url(#breeze-release-management-prepare-provider-packages-line-6)"> | </text><text class="breeze-release-management-prepare-provider-packages-r4" x="122" y="166.4" [...]
-</text><text class="breeze-release-management-prepare-provider-packages-r4" x="12.2" y="190.8" textLength="97.6" clip-path="url(#breeze-release-management-prepare-provider-packages-line-7)">dingding</text><text class="breeze-release-management-prepare-provider-packages-r1" x="109.8" y="190.8" textLength="36.6" clip-path="url(#breeze-release-management-prepare-provider-packages-line-7)"> | </text><text class="breeze-release-management-prepare-provider-packages-r4" x="146.4" y="1 [...]
-</text><text class="breeze-release-management-prepare-provider-packages-r4" x="12.2" y="215.2" textLength="48.8" clip-path="url(#breeze-release-management-prepare-provider-packages-line-8)">imap</text><text class="breeze-release-management-prepare-provider-packages-r1" x="61" y="215.2" textLength="36.6" clip-path="url(#breeze-release-management-prepare-provider-packages-line-8)"> | </text><text class="breeze-release-management-prepare-provider-packages-r4" x="97.6" y="215.2" te [...]
-</text><text class="breeze-release-management-prepare-provider-packages-r4" x="12.2" y="239.6" textLength="61" clip-path="url(#breeze-release-management-prepare-provider-packages-line-9)">mysql</text><text class="breeze-release-management-prepare-provider-packages-r1" x="73.2" y="239.6" textLength="36.6" clip-path="url(#breeze-release-management-prepare-provider-packages-line-9)"> | </text><text class="breeze-release-management-prepare-provider-packages-r4" x="109.8" y="239.6" [...]
-</text><text class="breeze-release-management-prepare-provider-packages-r4" x="12.2" y="264" textLength="97.6" clip-path="url(#breeze-release-management-prepare-provider-packages-line-10)">postgres</text><text class="breeze-release-management-prepare-provider-packages-r1" x="109.8" y="264" textLength="36.6" clip-path="url(#breeze-release-management-prepare-provider-packages-line-10)"> | </text><text class="breeze-release-management-prepare-provider-packages-r4" x="146.4" y="264 [...]
-</text><text class="breeze-release-management-prepare-provider-packages-r4" x="12.2" y="288.4" textLength="73.2" clip-path="url(#breeze-release-management-prepare-provider-packages-line-11)">sqlite</text><text class="breeze-release-management-prepare-provider-packages-r1" x="85.4" y="288.4" textLength="36.6" clip-path="url(#breeze-release-management-prepare-provider-packages-line-11)"> | </text><text class="breeze-release-management-prepare-provider-packages-r4" x="122" y="288. [...]
+</text><text class="breeze-release-management-prepare-provider-packages-r4" x="12.2" y="166.4" textLength="73.2" clip-path="url(#breeze-release-management-prepare-provider-packages-line-6)">celery</text><text class="breeze-release-management-prepare-provider-packages-r1" x="85.4" y="166.4" textLength="36.6" clip-path="url(#breeze-release-management-prepare-provider-packages-line-6)"> | </text><text class="breeze-release-management-prepare-provider-packages-r4" x="122" y="166.4" [...]
+</text><text class="breeze-release-management-prepare-provider-packages-r4" x="12.2" y="190.8" textLength="36.6" clip-path="url(#breeze-release-management-prepare-provider-packages-line-7)">dbt</text><text class="breeze-release-management-prepare-provider-packages-r1" x="48.8" y="190.8" textLength="12.2" clip-path="url(#breeze-release-management-prepare-provider-packages-line-7)">.</text><text class="breeze-release-management-prepare-provider-packages-r4" x="61" y="190.8" textLength="61" [...]
+</text><text class="breeze-release-management-prepare-provider-packages-r1" x="12.2" y="215.2" textLength="24.4" clip-path="url(#breeze-release-management-prepare-provider-packages-line-8)">| </text><text class="breeze-release-management-prepare-provider-packages-r4" x="36.6" y="215.2" textLength="48.8" clip-path="url(#breeze-release-management-prepare-provider-packages-line-8)">http</text><text class="breeze-release-management-prepare-provider-packages-r1" x="85.4" y="215.2" textLe [...]
+</text><text class="breeze-release-management-prepare-provider-packages-r4" x="12.2" y="239.6" textLength="61" clip-path="url(#breeze-release-management-prepare-provider-packages-line-9)">mongo</text><text class="breeze-release-management-prepare-provider-packages-r1" x="73.2" y="239.6" textLength="36.6" clip-path="url(#breeze-release-management-prepare-provider-packages-line-9)"> | </text><text class="breeze-release-management-prepare-provider-packages-r4" x="109.8" y="239.6" [...]
+</text><text class="breeze-release-management-prepare-provider-packages-r4" x="12.2" y="264" textLength="73.2" clip-path="url(#breeze-release-management-prepare-provider-packages-line-10)">plexus</text><text class="breeze-release-management-prepare-provider-packages-r1" x="85.4" y="264" textLength="36.6" clip-path="url(#breeze-release-management-prepare-provider-packages-line-10)"> | </text><text class="breeze-release-management-prepare-provider-packages-r4" x="122" y="264" tex [...]
+</text><text class="breeze-release-management-prepare-provider-packages-r4" x="12.2" y="288.4" textLength="109.8" clip-path="url(#breeze-release-management-prepare-provider-packages-line-11)">snowflake</text><text class="breeze-release-management-prepare-provider-packages-r1" x="122" y="288.4" textLength="36.6" clip-path="url(#breeze-release-management-prepare-provider-packages-line-11)"> | </text><text class="breeze-release-management-prepare-provider-packages-r4" x="158.6" y= [...]
</text><text class="breeze-release-management-prepare-provider-packages-r1" x="1464" y="312.8" textLength="12.2" clip-path="url(#breeze-release-management-prepare-provider-packages-line-12)">
</text><text class="breeze-release-management-prepare-provider-packages-r1" x="12.2" y="337.2" textLength="585.6" clip-path="url(#breeze-release-management-prepare-provider-packages-line-13)">Prepare sdist/whl packages of Airflow Providers.</text><text class="breeze-release-management-prepare-provider-packages-r1" x="1464" y="337.2" textLength="12.2" clip-path="url(#breeze-release-management-prepare-provider-packages-line-13)">
</text><text class="breeze-release-management-prepare-provider-packages-r1" x="1464" y="361.6" textLength="12.2" clip-path="url(#breeze-release-management-prepare-provider-packages-line-14)">
diff --git a/images/breeze/output_release-management_publish-docs.svg b/images/breeze/output_release-management_publish-docs.svg
index 8108ee78d1..38ffcaf32d 100644
--- a/images/breeze/output_release-management_publish-docs.svg
+++ b/images/breeze/output_release-management_publish-docs.svg
@@ -180,7 +180,7 @@
</text><text class="breeze-release-management-publish-docs-r1" x="12.2" y="93.2" textLength="12.2" clip-path="url(#breeze-release-management-publish-docs-line-3)">[</text><text class="breeze-release-management-publish-docs-r4" x="24.4" y="93.2" textLength="85.4" clip-path="url(#breeze-release-management-publish-docs-line-3)">OPTIONS</text><text class="breeze-release-management-publish-docs-r1" x="109.8" y="93.2" textLength="36.6" clip-path="url(#breeze-release-management-publish-docs-lin [...]
</text><text class="breeze-release-management-publish-docs-r4" x="12.2" y="117.6" textLength="73.2" clip-path="url(#breeze-release-management-publish-docs-line-4)">apache</text><text class="breeze-release-management-publish-docs-r1" x="85.4" y="117.6" textLength="12.2" clip-path="url(#breeze-release-management-publish-docs-line-4)">.</text><text class="breeze-release-management-publish-docs-r4" x="97.6" y="117.6" textLength="48.8" clip-path="url(#breeze-release-management-publish-docs-li [...]
</text><text class="breeze-release-management-publish-docs-r4" x="12.2" y="142" textLength="73.2" clip-path="url(#breeze-release-management-publish-docs-line-5)">apache</text><text class="breeze-release-management-publish-docs-r1" x="85.4" y="142" textLength="12.2" clip-path="url(#breeze-release-management-publish-docs-line-5)">.</text><text class="breeze-release-management-publish-docs-r4" x="97.6" y="142" textLength="73.2" clip-path="url(#breeze-release-management-publish-docs-line-5)" [...]
-</text><text class="breeze-release-management-publish-docs-r4" x="12.2" y="166.4" textLength="85.4" clip-path="url(#breeze-release-management-publish-docs-line-6)">apprise</text><text class="breeze-release-management-publish-docs-r1" x="97.6" y="166.4" textLength="36.6" clip-path="url(#breeze-release-management-publish-docs-line-6)"> | </text><text class="breeze-release-management-publish-docs-r4" x="134.2" y="166.4" textLength="97.6" clip-path="url(#breeze-release-management-p [...]
+</text><text class="breeze-release-management-publish-docs-r4" x="12.2" y="166.4" textLength="85.4" clip-path="url(#breeze-release-management-publish-docs-line-6)">apprise</text><text class="breeze-release-management-publish-docs-r1" x="97.6" y="166.4" textLength="36.6" clip-path="url(#breeze-release-management-publish-docs-line-6)"> | </text><text class="breeze-release-management-publish-docs-r4" x="134.2" y="166.4" textLength="97.6" clip-path="url(#breeze-release-management-p [...]
</text><text class="breeze-release-management-publish-docs-r4" x="12.2" y="190.8" textLength="146.4" clip-path="url(#breeze-release-management-publish-docs-line-7)">daskexecutor</text><text class="breeze-release-management-publish-docs-r1" x="158.6" y="190.8" textLength="36.6" clip-path="url(#breeze-release-management-publish-docs-line-7)"> | </text><text class="breeze-release-management-publish-docs-r4" x="195.2" y="190.8" textLength="122" clip-path="url(#breeze-release-manage [...]
</text><text class="breeze-release-management-publish-docs-r4" x="12.2" y="215.2" textLength="36.6" clip-path="url(#breeze-release-management-publish-docs-line-8)">ftp</text><text class="breeze-release-management-publish-docs-r1" x="48.8" y="215.2" textLength="36.6" clip-path="url(#breeze-release-management-publish-docs-line-8)"> | </text><text class="breeze-release-management-publish-docs-r4" x="85.4" y="215.2" textLength="73.2" clip-path="url(#breeze-release-management-publis [...]
</text><text class="breeze-release-management-publish-docs-r1" x="12.2" y="239.6" textLength="24.4" clip-path="url(#breeze-release-management-publish-docs-line-9)">| </text><text class="breeze-release-management-publish-docs-r4" x="36.6" y="239.6" textLength="109.8" clip-path="url(#breeze-release-management-publish-docs-line-9)">microsoft</text><text class="breeze-release-management-publish-docs-r1" x="146.4" y="239.6" textLength="12.2" clip-path="url(#breeze-release-management-publ [...]
diff --git a/images/breeze/output_sbom_generate-providers-requirements.svg b/images/breeze/output_sbom_generate-providers-requirements.svg
index 9f08035158..6dfe112fdf 100644
--- a/images/breeze/output_sbom_generate-providers-requirements.svg
+++ b/images/breeze/output_sbom_generate-providers-requirements.svg
@@ -186,14 +186,14 @@
</text><text class="breeze-sbom-generate-providers-requirements-r5" x="0" y="239.6" textLength="12.2" clip-path="url(#breeze-sbom-generate-providers-requirements-line-9)">│</text><text class="breeze-sbom-generate-providers-requirements-r6" x="292.8" y="239.6" textLength="1146.8" clip-path="url(#breeze-sbom-generate-providers-requirements-line-9)">(airbyte | alibaba | amazon | apache.beam | apache.cassandra | apache.drill | apach [...]
</text><text class="breeze-sbom-generate-providers-requirements-r5" x="0" y="264" textLength="12.2" clip-path="url(#breeze-sbom-generate-providers-requirements-line-10)">│</text><text class="breeze-sbom-generate-providers-requirements-r6" x="292.8" y="264" textLength="1146.8" clip-path="url(#breeze-sbom-generate-providers-requirements-line-10)">apache.flink | apache.hdfs | apache.hive | apache.impala | apache.kafka | apache.kylin |&# [...]
</text><text class="breeze-sbom-generate-providers-requirements-r5" x="0" y="288.4" textLength="12.2" clip-path="url(#breeze-sbom-generate-providers-requirements-line-11)">│</text><text class="breeze-sbom-generate-providers-requirements-r6" x="292.8" y="288.4" textLength="1146.8" clip-path="url(#breeze-sbom-generate-providers-requirements-line-11)">apache.livy | apache.pig | apache.pinot | apache.spark | apache.sqoop | apprise |  [...]
-</text><text class="breeze-sbom-generate-providers-requirements-r5" x="0" y="312.8" textLength="12.2" clip-path="url(#breeze-sbom-generate-providers-requirements-line-12)">│</text><text class="breeze-sbom-generate-providers-requirements-r6" x="292.8" y="312.8" textLength="1146.8" clip-path="url(#breeze-sbom-generate-providers-requirements-line-12)">asana | atlassian.jira | celery | cloudant | cncf.kubernetes | common.io | common [...]
-</text><text class="breeze-sbom-generate-providers-requirements-r5" x="0" y="337.2" textLength="12.2" clip-path="url(#breeze-sbom-generate-providers-requirements-line-13)">│</text><text class="breeze-sbom-generate-providers-requirements-r6" x="292.8" y="337.2" textLength="1146.8" clip-path="url(#breeze-sbom-generate-providers-requirements-line-13)">daskexecutor | databricks | datadog | dbt.cloud | dingding | discord | docker [...]
-</text><text class="breeze-sbom-generate-providers-requirements-r5" x="0" y="361.6" textLength="12.2" clip-path="url(#breeze-sbom-generate-providers-requirements-line-14)">│</text><text class="breeze-sbom-generate-providers-requirements-r6" x="292.8" y="361.6" textLength="1146.8" clip-path="url(#breeze-sbom-generate-providers-requirements-line-14)">| exasol | facebook | ftp | github | google | grpc | hashicorp | h [...]
-</text><text class="breeze-sbom-generate-providers-requirements-r5" x="0" y="386" textLength="12.2" clip-path="url(#breeze-sbom-generate-providers-requirements-line-15)">│</text><text class="breeze-sbom-generate-providers-requirements-r6" x="292.8" y="386" textLength="1146.8" clip-path="url(#breeze-sbom-generate-providers-requirements-line-15)">| jenkins | microsoft.azure | microsoft.mssql | microsoft.psrp | microsoft.winrm | mongo&# [...]
-</text><text class="breeze-sbom-generate-providers-requirements-r5" x="0" y="410.4" textLength="12.2" clip-path="url(#breeze-sbom-generate-providers-requirements-line-16)">│</text><text class="breeze-sbom-generate-providers-requirements-r6" x="292.8" y="410.4" textLength="1146.8" clip-path="url(#breeze-sbom-generate-providers-requirements-line-16)">mysql | neo4j | odbc | openfaas | openlineage | opensearch | opsgenie |  [...]
-</text><text class="breeze-sbom-generate-providers-requirements-r5" x="0" y="434.8" textLength="12.2" clip-path="url(#breeze-sbom-generate-providers-requirements-line-17)">│</text><text class="breeze-sbom-generate-providers-requirements-r6" x="292.8" y="434.8" textLength="1146.8" clip-path="url(#breeze-sbom-generate-providers-requirements-line-17)">papermill | plexus | postgres | presto | redis | salesforce | samba | s [...]
-</text><text class="breeze-sbom-generate-providers-requirements-r5" x="0" y="459.2" textLength="12.2" clip-path="url(#breeze-sbom-generate-providers-requirements-line-18)">│</text><text class="breeze-sbom-generate-providers-requirements-r6" x="292.8" y="459.2" textLength="1146.8" clip-path="url(#breeze-sbom-generate-providers-requirements-line-18)">sftp | singularity | slack | smtp | snowflake | sqlite | ssh | tableau& [...]
-</text><text class="breeze-sbom-generate-providers-requirements-r5" x="0" y="483.6" textLength="12.2" clip-path="url(#breeze-sbom-generate-providers-requirements-line-19)">│</text><text class="breeze-sbom-generate-providers-requirements-r6" x="292.8" y="483.6" textLength="1146.8" clip-path="url(#breeze-sbom-generate-providers-requirements-line-19)">trino | vertica | yandex | zendesk)             [...]
+</text><text class="breeze-sbom-generate-providers-requirements-r5" x="0" y="312.8" textLength="12.2" clip-path="url(#breeze-sbom-generate-providers-requirements-line-12)">│</text><text class="breeze-sbom-generate-providers-requirements-r6" x="292.8" y="312.8" textLength="1146.8" clip-path="url(#breeze-sbom-generate-providers-requirements-line-12)">asana | atlassian.jira | celery | cloudant | cncf.kubernetes | cohere | common.io [...]
+</text><text class="breeze-sbom-generate-providers-requirements-r5" x="0" y="337.2" textLength="12.2" clip-path="url(#breeze-sbom-generate-providers-requirements-line-13)">│</text><text class="breeze-sbom-generate-providers-requirements-r6" x="292.8" y="337.2" textLength="1146.8" clip-path="url(#breeze-sbom-generate-providers-requirements-line-13)">| daskexecutor | databricks | datadog | dbt.cloud | dingding | discord | doc [...]
+</text><text class="breeze-sbom-generate-providers-requirements-r5" x="0" y="361.6" textLength="12.2" clip-path="url(#breeze-sbom-generate-providers-requirements-line-14)">│</text><text class="breeze-sbom-generate-providers-requirements-r6" x="292.8" y="361.6" textLength="1146.8" clip-path="url(#breeze-sbom-generate-providers-requirements-line-14)">elasticsearch | exasol | facebook | ftp | github | google | grpc | hash [...]
+</text><text class="breeze-sbom-generate-providers-requirements-r5" x="0" y="386" textLength="12.2" clip-path="url(#breeze-sbom-generate-providers-requirements-line-15)">│</text><text class="breeze-sbom-generate-providers-requirements-r6" x="292.8" y="386" textLength="1146.8" clip-path="url(#breeze-sbom-generate-providers-requirements-line-15)">influxdb | jdbc | jenkins | microsoft.azure | microsoft.mssql | microsoft.psrp |  [...]
+</text><text class="breeze-sbom-generate-providers-requirements-r5" x="0" y="410.4" textLength="12.2" clip-path="url(#breeze-sbom-generate-providers-requirements-line-16)">│</text><text class="breeze-sbom-generate-providers-requirements-r6" x="292.8" y="410.4" textLength="1146.8" clip-path="url(#breeze-sbom-generate-providers-requirements-line-16)">microsoft.winrm | mongo | mysql | neo4j | odbc | openfaas | openlineage | [...]
+</text><text class="breeze-sbom-generate-providers-requirements-r5" x="0" y="434.8" textLength="12.2" clip-path="url(#breeze-sbom-generate-providers-requirements-line-17)">│</text><text class="breeze-sbom-generate-providers-requirements-r6" x="292.8" y="434.8" textLength="1146.8" clip-path="url(#breeze-sbom-generate-providers-requirements-line-17)">opsgenie | oracle | pagerduty | papermill | plexus | postgres | presto | [...]
+</text><text class="breeze-sbom-generate-providers-requirements-r5" x="0" y="459.2" textLength="12.2" clip-path="url(#breeze-sbom-generate-providers-requirements-line-18)">│</text><text class="breeze-sbom-generate-providers-requirements-r6" x="292.8" y="459.2" textLength="1146.8" clip-path="url(#breeze-sbom-generate-providers-requirements-line-18)">samba | segment | sendgrid | sftp | singularity | slack | smtp | snowfl [...]
+</text><text class="breeze-sbom-generate-providers-requirements-r5" x="0" y="483.6" textLength="12.2" clip-path="url(#breeze-sbom-generate-providers-requirements-line-19)">│</text><text class="breeze-sbom-generate-providers-requirements-r6" x="292.8" y="483.6" textLength="1146.8" clip-path="url(#breeze-sbom-generate-providers-requirements-line-19)">tableau | tabular | telegram | trino | vertica | yandex | zendesk)   [...]
</text><text class="breeze-sbom-generate-providers-requirements-r5" x="0" y="508" textLength="12.2" clip-path="url(#breeze-sbom-generate-providers-requirements-line-20)">│</text><text class="breeze-sbom-generate-providers-requirements-r4" x="24.4" y="508" textLength="12.2" clip-path="url(#breeze-sbom-generate-providers-requirements-line-20)">-</text><text class="breeze-sbom-generate-providers-requirements-r4" x="36.6" y="508" textLength="109.8" clip-path="url(#breeze-sbom-generate-provid [...]
</text><text class="breeze-sbom-generate-providers-requirements-r5" x="0" y="532.4" textLength="12.2" clip-path="url(#breeze-sbom-generate-providers-requirements-line-21)">│</text><text class="breeze-sbom-generate-providers-requirements-r1" x="292.8" y="532.4" textLength="1146.8" clip-path="url(#breeze-sbom-generate-providers-requirements-line-21)">value to account for the most recent version of the provider     & [...]
</text><text class="breeze-sbom-generate-providers-requirements-r5" x="0" y="556.8" textLength="12.2" clip-path="url(#breeze-sbom-generate-providers-requirements-line-22)">│</text><text class="breeze-sbom-generate-providers-requirements-r6" x="292.8" y="556.8" textLength="1146.8" clip-path="url(#breeze-sbom-generate-providers-requirements-line-22)">(TEXT)                       [...]
diff --git a/tests/providers/cohere/__init__.py b/tests/providers/cohere/__init__.py
new file mode 100644
index 0000000000..13a83393a9
--- /dev/null
+++ b/tests/providers/cohere/__init__.py
@@ -0,0 +1,16 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied. See the License for the
+# specific language governing permissions and limitations
+# under the License.
diff --git a/tests/providers/cohere/hooks/__init__.py b/tests/providers/cohere/hooks/__init__.py
new file mode 100644
index 0000000000..13a83393a9
--- /dev/null
+++ b/tests/providers/cohere/hooks/__init__.py
@@ -0,0 +1,16 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied. See the License for the
+# specific language governing permissions and limitations
+# under the License.
diff --git a/tests/providers/cohere/hooks/test_cohere.py b/tests/providers/cohere/hooks/test_cohere.py
new file mode 100644
index 0000000000..8f566ec0c6
--- /dev/null
+++ b/tests/providers/cohere/hooks/test_cohere.py
@@ -0,0 +1,46 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied. See the License for the
+# specific language governing permissions and limitations
+# under the License.
+from __future__ import annotations
+
+from unittest.mock import patch
+
+from airflow.models import Connection
+from airflow.providers.cohere.hooks.cohere import (
+ CohereHook,
+)
+
+
+class TestCohereHook:
+ """
+ Test for CohereHook
+ """
+
+ def test__get_api_key(self):
+ api_key = "test"
+ api_url = "http://some_host.com"
+ timeout = 150
+ max_retries = 5
+ with patch.object(
+ CohereHook,
+ "get_connection",
+ return_value=Connection(conn_type="cohere", password=api_key, host=api_url),
+ ), patch("cohere.Client") as client:
+ hook = CohereHook(timeout=timeout, max_retries=max_retries)
+ _ = hook.get_conn
+ client.assert_called_once_with(
+ api_key=api_key, timeout=timeout, max_retries=max_retries, api_url=api_url
+ )
diff --git a/tests/providers/cohere/operators/__init__.py b/tests/providers/cohere/operators/__init__.py
new file mode 100644
index 0000000000..13a83393a9
--- /dev/null
+++ b/tests/providers/cohere/operators/__init__.py
@@ -0,0 +1,16 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied. See the License for the
+# specific language governing permissions and limitations
+# under the License.
diff --git a/tests/providers/cohere/operators/test_embedding.py b/tests/providers/cohere/operators/test_embedding.py
new file mode 100644
index 0000000000..32dd83aa26
--- /dev/null
+++ b/tests/providers/cohere/operators/test_embedding.py
@@ -0,0 +1,56 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied. See the License for the
+# specific language governing permissions and limitations
+# under the License.
+from __future__ import annotations
+
+from unittest.mock import MagicMock, patch
+
+from airflow.models import Connection
+from airflow.providers.cohere.operators.embedding import CohereEmbeddingOperator
+
+
+@patch("airflow.providers.cohere.hooks.cohere.CohereHook.get_connection")
+@patch("cohere.Client")
+def test_cohere_embedding_operator(cohere_client, get_connection):
+ """
+ Test Cohere client is getting called with the correct key and that
+ the execute methods returns expected response.
+ """
+ embedded_obj = [1, 2, 3]
+
+ class resp:
+ embeddings = embedded_obj
+
+ api_key = "test"
+ api_url = "http://some_host.com"
+ timeout = 150
+ max_retries = 5
+ texts = ["On Kernel-Target Alignment. We describe a family of global optimization procedures"]
+
+ get_connection.return_value = Connection(conn_type="cohere", password=api_key, host=api_url)
+ client_obj = MagicMock()
+ cohere_client.return_value = client_obj
+ client_obj.embed.return_value = resp
+
+ op = CohereEmbeddingOperator(
+ task_id="embed", conn_id="some_conn", input_text=texts, timeout=timeout, max_retries=max_retries
+ )
+
+ val = op.execute(context={})
+ cohere_client.assert_called_once_with(
+ api_key=api_key, api_url=api_url, timeout=timeout, max_retries=max_retries
+ )
+ assert val == embedded_obj
diff --git a/tests/system/providers/cohere/__init__.py b/tests/system/providers/cohere/__init__.py
new file mode 100644
index 0000000000..13a83393a9
--- /dev/null
+++ b/tests/system/providers/cohere/__init__.py
@@ -0,0 +1,16 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied. See the License for the
+# specific language governing permissions and limitations
+# under the License.
diff --git a/tests/system/providers/cohere/example_cohere_embedding_operator.py b/tests/system/providers/cohere/example_cohere_embedding_operator.py
new file mode 100644
index 0000000000..ec97ee91e5
--- /dev/null
+++ b/tests/system/providers/cohere/example_cohere_embedding_operator.py
@@ -0,0 +1,40 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied. See the License for the
+# specific language governing permissions and limitations
+# under the License.
+from __future__ import annotations
+
+from datetime import datetime
+
+from airflow import DAG
+from airflow.providers.cohere.operators.embedding import CohereEmbeddingOperator
+
+with DAG("example_cohere_embedding", schedule=None, start_date=datetime(2023, 1, 1), catchup=False) as dag:
+ # [START howto_operator_cohere_embedding]
+ texts = [
+ "On Kernel-Target Alignment. We describe a family of global optimization procedures",
+ " that automatically decompose optimization problems into smaller loosely coupled",
+ " problems, then combine the solutions of these with message passing algorithms.",
+ ]
+
+ CohereEmbeddingOperator(input_text=texts, task_id="embedding_via_text")
+ CohereEmbeddingOperator(input_text=texts[0], task_id="embedding_via_task")
+ # [END howto_operator_cohere_embedding]
+
+
+from tests.system.utils import get_test_run
+
+# Needed to run the example DAG with pytest (see: tests/system/README.md#run_via_pytest)
+test_run = get_test_run(dag)