class_docstr: Extract executed source code and put it into SourceCodeJobFacet.
  
  This extractor provides visibility on what particular task does by extracting
  executed source code and putting it into SourceCodeJobFacet. It does not extract
  datasets yet.
  
  :meta private:
class_docstr_tok: ["Extract","executed","source","code","and","put","it","into","SourceCodeJobFacet",".","This","extractor","provides","visibility","on","what","particular","task","does","by","extracting","executed","source","code","and","putting","it","into","SourceCodeJobFacet",".","It","does","not","extract","datasets","yet",".",":","meta","private",":"]
code: def _execute_extraction(self) -> OperatorLineage | None:
      source_code = self.get_source_code(self.operator.python_callable)
      job_facet: dict = {}
      if is_source_enabled() and source_code:
          job_facet = {
              "sourceCode": SourceCodeJobFacet(
                  language="python",
                  # We're on worker and should have access to DAG files
                  source=source_code,
              )
          }
      return OperatorLineage(
          job_facets=job_facet,
          run_facets={
              # The PythonOperator is recorded as an "unknownSource" even though we have an
              # extractor, as the data lineage cannot be determined from the operator
              # directly.
              "unknownSourceAttribute": UnknownOperatorAttributeRunFacet(
                  unknownItems=[
                      UnknownOperatorInstance(
                          name="PythonOperator",
                          properties=get_filtered_unknown_operator_keys(
                              self.operator
                          ),
                      )
                  ]
              )
          },
      )
  
file_path: airflow/airflow/providers/openlineage/extractors/python.py
imports: from __future__ import annotations
  import inspect
  from typing import Callable
  from openlineage.client.facet import SourceCodeJobFacet
  from airflow.providers.openlineage.extractors.base import BaseExtractor, OperatorLineage
  from airflow.providers.openlineage.plugins.facets import UnknownOperatorAttributeRunFacet, UnknownOperatorInstance
  from airflow.providers.openlineage.utils.utils import get_filtered_unknown_operator_keys, is_source_enabled
label_desc: Use image node_id 2 for calling the PythonExtractor obj's underlying member method code with example usage: obj._execute_extraction() and returns: OperatorLineage