인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

인프런 커뮤니티 질문&답변

kosa.share05님의 프로필 이미지

작성한 질문수

Airflow 마스터 클래스

Python Operator에서 Xcom 사용

vsc에서 airflow 자동완성

작성

·

34

0

image.png

안녕하세요 강사님

혹시 vsc에서 airflow관련 함수들의 자동완성을 제공하는 익스텐션이 따로 있나요?

아니면 코드를 원래 전체 작성해야 하나요?

위 그림에 ti.xcom_pull의 경우 ti. 하고 자동완성을 하려고 봤더니 제공하는 함수가 없어서 질문드립니다

근데 뒤에 task_ids는 자동완성이 되네요

답변 1

0

김현진님의 프로필 이미지
김현진
지식공유자

위에서 얻은 ti 라는 객체는 kwargs['ti'] 에서 얻은 객체인데 kwargs 라는 딕셔너리에서 "ti" key에 해당하는 value 값을 뽑은 것입니다. 우리는 ti key에 무엇이 있는지 알고 있지만, 프로그램 입장에서는 런타임시에 알 수 있으므로 vscode 에서 코드를 개발할 때에는 ti 객체가 어떤 타입인지 알 수 없습니다. 그래서 IDE 에서 자동완성 기능을 제공하지 못하는 것이구요.

IDE에서 자동완성 도움을 받으려면 ti객체에 대한 타입을 지정해주면 가능할 것 같습니다.

from airflow.models import TaskInstance

@task()
def xxxx(**kwargs):
    ti: TaskInstance = kwargs['ti']

 

위처럼 ti 객체에 대한 타입 힌트를 주면 IDE 툴에서 ti 변수에 대한 타입을 알 수 있으니 자동완성 기능 도움도 받을 수 있을 듯 합니다.

이 문제는 딕셔너리에서 키 값으로 뽑아오는 밸류의 정확한 타입을 런타임시에 알 수 있다는 한계점 때문에 extention으로는 해결이 어려울 것 같아요.

 

답변이 되었을까요?

kosa.share05님의 프로필 이미지
kosa.share05
질문자

답변감사합니다