Source code for airflow.providers.github.operators.github
## 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__importannotationsfromtypingimportTYPE_CHECKING,Any,CallablefromgithubimportGithubExceptionfromairflowimportAirflowExceptionfromairflow.modelsimportBaseOperatorfromairflow.providers.github.hooks.githubimportGithubHookifTYPE_CHECKING:fromairflow.utils.contextimportContext
[docs]classGithubOperator(BaseOperator):"""Interact and perform actions on GitHub API. This operator is designed to use GitHub's Python SDK: https://github.com/PyGithub/PyGithub .. seealso:: For more information on how to use this operator, take a look at the guide: :ref:`howto/operator:GithubOperator` :param github_conn_id: Reference to a pre-defined GitHub Connection :param github_method: Method name from GitHub Python SDK to be called :param github_method_args: Method parameters for the github_method. (templated) :param result_processor: Function to further process the response from GitHub API """
[docs]defexecute(self,context:Context)->Any:try:# Default method execution is on the top level GitHub clienthook=GithubHook(github_conn_id=self.github_conn_id)resource=hook.clientgithub_result=getattr(resource,self.method_name)(**self.github_method_args)ifself.result_processor:returnself.result_processor(github_result)returngithub_resultexceptGithubExceptionasgithub_error:raiseAirflowException(f"Failed to execute GithubOperator, error: {github_error}")exceptExceptionase:raiseAirflowException(f"GitHub operator error: {e}")