Jupyter [Lab]를위한 정확한 반응 파이썬 노트북 :
pip install ipyflowPython 3 (ipyflow) 선택하십시오.iPyFlow는 주어진 대화 형 세션 동안 기호와 셀 간의 데이터 흐름 관계를 추적하는 Jupyterlab 및 Notebook 7의 차세대 파이썬 커널로, 노트북 상태에 대해 쉽게 추론 할 수 있습니다. 다음은 Jupytercon Talk의 비디오가 소개 (및 해당 슬라이드)입니다.
엘리베이터 피치를 건너 뛰고 설치 / 활성화 지침으로 바로 건너 뛰려면 아래의 빠른 시작으로 이동하십시오. 그렇지 않으면 IPyFlow의 철학과 기능 세트에 대해 배우려면 계속 읽으십시오.
iPyFlow는 Jupyter의 기본 Python 커널 인 ipykernel에 대한 볼트 온 반응성을 제공합니다. 다음 목표를 염두에두고 설계되었습니다.
x[0] 때문에 셀 B 셀 A 에 의존하는시기를 이해하고 x 의 다른 부분, 예를 들어 x[1] 의 변화가 변경 될 때 셀 B 반응 적으로 실행하지 않을 정도로 똑똑합니다. 결과적으로 불필요한 재 실행을 최소로 제한합니다.설치, 실행 :
pip install ipyflowiPyFlow 커널을 실행하려면 런처 탭에서 사용 가능한 커널 목록에서 "Python 3 (ipyflow)"을 선택하십시오. 마찬가지로 "커널 변경"파일 메뉴 항목으로 탐색하여 기존 노트북에서 iPyFlow로 전환 할 수 있습니다.
| EntryPoint | 커널 스위처 |
|---|---|
iPyFlow는 Observable, Pluto.JL 및 Marimo와 같은 다른 노트북에서 제공되는 실행 동작과 유사하게 Jupyterlab 및 Notebook 7에 반응을 가져 오는 확장 기능을 제공합니다.
그러나 ipyflow의 반응성은 특히 Jupyter 사용자의 요구를 충족 시키도록 설계되었으므로 위와 약간 다르게 행동합니다. IPyFlow, C 의 출력으로 셀 C 실행할 때 셀 C 의 출력은 의존하며 C 에 의존하는 셀의 출력은 노트북이 위에서 아래로 실행 된 경우 (예 : "재시작 및 런아아")와 같이 나타납니다. 일부 셀 C 선택할 때, C 실행될 때 다시 실행되는 모든 셀은 그 옆에 주황색 점이 있고 C 의존하지만 최신 상태이며 다시 실행되지 않는 셀은 자주색 점을 갖습니다.
셀 의존성 정보는 노트북 메타 데이터로 유지되므로 새로운 커널 세션을 시작한 후 셀로 점프 할 수 있으며, 출력이 노트북 저자가 의도 한 것임을 확신하십시오.
IPYFLOW는 종속성을 추론하기 위해 런타임 상태를 엿볼 수 있으므로 노트북의 내용을 브라우저에서도 커널의 메모리 상태와 동기화해야합니다. 따라서 IPyFlow는 기본적으로 AutoSave-on-Change를 가능하게하여 커널 상태, 노트북 UI의 메모리 상태 및 디스크의 노트북 파일이 모두 동기화되도록합니다. 실수로 반응성 실행 중에 보관하고 싶은 셀의 출력을 덮어 쓰고 AutoSave는 디스크에서 이전 결과를 덮어 쓰지 마십시오. 두려워하지 마십시오! iPyFlow는 reproduce_cell 이라는 라이브러리 유틸리티를 제공하여 이전 셀 실행의 입력 및 출력을 복구합니다 (주어진 커널 세션 내에서).
from ipyflow import reproduce_cell
reproduce_cell ( 4 , lookback = 1 ) # to reproduce the previous execution of cell 4예:
반응성 실행을 일시적으로 선택하지 않으려면 Ctrl+Shift+Enter (Mac, CMD+Shift+Enter도 작동)를 사용하여 해당 셀 만 실행할 수 있습니다.
또한 기본 반응 실행 모드에서 OPT에서 Magic Command %flow mode normal 을 실행할 수 있습니다 (이 경우 CTR+Shift+Enter / CMD+Shift+Enter는 반응성에서 반응성으로 전환됩니다). 기본값으로 반응성 실행을 다시 사용할 수 있도록 %flow mode reactive 실행할 수 있습니다.
모든 새로운 커널 세션에 대한 기본 반응 동작을 방지하려면 iPyThon 프로필 (일반적으로 ~/.ipython/profile_default/ipython_config.py )에이를 추가 할 수 있습니다.
c = get_config ()
c . ipyflow . exec_mode = "normal" # defaults to "reactive" B 기본값은 내 B 순서 내시어로 A 합니다 A iPyFlow는 이전 셀이 나중에 셀에 의해 생성되거나 업데이트 된 데이터를 참조하는 것을 방해하지 않지만 반응성 실행을 수행 할 때 이러한 가장자리를 생략합니다.
순차적 의미론은 덜 유연하지만, 어떤 순서 시맨틱과 비교할 때 바람직한 속성을 가지고 있습니다. 이들은 나중에 파이썬 스크립트로 더 쉽게 변환 할 수있는 더 깨끗하고 재현 가능한 노트북을 장려하기 때문에 나중에 바람직합니다. 순서 내 의미에서 당신을 팔았거나 팔지 않았을 수도 있으므로, Magic Command %flow direction any_order 실행하여 IPYFLOW에서 모든 순서 의미를 활성화하고 %flow direction in_order 사용하여 기본 주문 내 시맨틱을 다시 활성화 할 수 있습니다.
새로운 커널 세션의 기본 동작을 사용하려면 iPython 프로필을 업데이트 할 수도 있습니다.
c = get_config ()
c . ipyflow . flow_direction = "any_order" # defaults to "in_order"셀 참조가 업데이트 된 데이터마다, 그 옆의 붕괴는 오렌지색 (더러운 셀의 색상과 유사)이 주어지고 (재귀 적으로) 의존하는 셀에게는 자주색 곡물 색상이 제공됩니다. (자주색 출력이있는 주황색 입력은 출력이 동시대가 될 수 있음을 의미합니다.) 반응성 실행을 사용할 때는 일반적으로 동기화되지 않은 셀이 자동으로 재실행되므로 Ctrl+Shift+Entor를 사용하는 경우 셀이 업데이트되는 데이터를 변경하는 경우 CTRL+SHIFT+ENTER를 사용하는 경우를 볼 수 있습니다.
IPYFLOW를 위해 IPFLOW를 수정하려면 명령 모드에있을 때 "공간"을 눌러 모든 오래된 셀 또는 더러운 셀을 자동으로 해결할 수 있습니다. 이 작업은 더 오래된 셀을 소개 할 수 있으며,이 경우 원하는 경우 모든 불일치가 해결 될 때까지 "공간"을 계속 누를 수 있습니다.
파이썬 기능 및 클래스, 정수, 부유물, 문자열, 낭포, 팬더 데이터 프레임 및 컨테이너 (목록, 딕트, 세트, 튜플 등)와 같은 프리미티브를 참조하는 셀은 Special %%memoize Pseudomagic을 사용하여 ipyflow에 의해 간단 할 수 있습니다. ipyflow가 자동으로 추론하므로 셀에 "입력"을 지정할 필요가 없습니다. 메모 화 된 셀은 결과적으로 메모리에서 결과를 캐시하고 (디스크 지원 캐시는 미래를 위해 계획되어 있지만), IPyFlow가 이전 실행의 입력과 동일한 입력 및 셀 내용을 감지 할 때마다 이러한 캐시 된 결과 (셀을 다시 실행하는 대신)를 검색합니다.
기본적으로 %%memoize 셀의 마지막 표현식에서 잠재적 인 디스플레이 출력을 제외한 모든 출력을 건너 뜁니다 (해당되는 경우). 이것을 건너 뛰려면 --quiet 통과하고 stdout, stderr 및 기타 풍부한 출력을 포함 시키려면 --verbose :
IPyFlow의 반응성 실행 엔진은 ipywidgets 에 대한 내장 지원이있어 셀 경계에서 위젯 변경을 전파 할 수 있습니다.
이 기능은 %%memoize Magic과 결합하여 셀 전체의 대화식 플롯의 거의 실시간 렌더링을 제공 할 수 있습니다.
이 기능은 Stickyland와 같은 다른 확장자와 짝을 이루어 Jupyterlab + iPyFlow 위에 완전히 반응성있는 대시 보드를 구축 할 수 있습니다.
마지막으로 IPyFlow는 Mercury 위젯과도 통합됩니다.
IPYFLOW는 기능을 제공하기 위해 기본 실행 상태를 깊은 수준으로 이해해야합니다. 일부 기호를 재구성하는 데 필요한 코드를 얻기위한 code 함수를 포함 하여이 상태의 일부와 상호 작용하기위한 API를 노출시킵니다.
# Cell 1
from ipyflow import code
# Cell 2
x = 0
# Cell 3
y = x + 1
# Cell 4
print ( code ( y ))
# Output:
"""
# Cell 2
x = 0
# Cell 3
y = x + 1
""" slice() 메소드를 사용하여 셀 수준에서이를 수행 할 수도 있습니다.
from ipyflow import cells
print ( cells ( 4 ). slice ())
# Output:
"""
# Cell 2
x = 0
# Cell 3
y = x + 1
# Cell 4
print(code(y))
""" 또한 기호가 timestamp 함수로 마지막으로 업데이트 된 시점의 셀 (1- 인덱스) 및 명령문 (0- 인덱스)을 볼 수 있습니다.
from ipyflow import timestamp
timestamp ( y )
# Timestamp(cell_num=3, stmt_num=0) 특정 기호의 종속성과 부양 가족을 보려면 각각 deps 및 users 퓨전을 사용하십시오.
from ipyflow import deps , users
deps ( y )
# [<x>]
users ( x )
# [<y>] IPYFLOW가 내부적으로 사용하는 표현으로 기호를 높이려면 lift 기능을 사용하십시오 (물론 자신의 위험에 따라).
from ipyflow import lift
y_sym = lift ( y )
y_sym . timestamp
# Timestamp(cell_num=3, stmt_num=0) 반응성 및 기타 프론트 엔드 기능은 아직 Colab 또는 VSCODE와 같은 인터페이스에서 작동하지 않지만 다음 코드로 노트북 세션을 초기화하여 이러한 표면에서 IPyFlow의 DataFlow API를 사용할 수 있습니다.
%pip install ipyflow
%load_ext ipyflow
iPyFlow는 NBSAFETY라는 이름으로 수명을 시작하여 초기 제안과 슬라이싱 기능을 제공했습니다.
실행 제안 :
@article { macke2021fine ,
title = { Fine-grained lineage for safer notebook interactions } ,
author = { Macke, Stephen and Gong, Hongpu and Lee, Doris Jung-Lin and Head, Andrew and Xin, Doris and Parameswaran, Aditya } ,
journal = { Proceedings of the VLDB Endowment } ,
volume = { 14 } ,
number = { 6 } ,
pages = { 1093--1101 } ,
year = { 2021 } ,
publisher = { VLDB Endowment }
} 동적 슬라이서의 경우 (예 : 반응성 및 code 함수에 사용) :
@article { shankar2022bolt ,
title = { Bolt-on, Compact, and Rapid Program Slicing for Notebooks } ,
author = { Shankar, Shreya and Macke, Stephen and Chasins, Andrew and Head, Andrew and Parameswaran, Aditya } ,
journal = { Proceedings of the VLDB Endowment } ,
volume = { 15 } ,
number = { 13 } ,
pages = { 4038--4047 } ,
year = { 2022 } ,
publisher = { VLDB Endowment }
}위의 논문에서 다루지 않은 것은 ipyflow repo를 인용 할 수 있습니다.
@misc { ipyflow ,
title = { {IPyflow: A Next-Generation, Dataflow-Aware IPython Kernel} } ,
howpublished = { url{https://github.com/ipyflow/ipyflow} } ,
year = { 2022 } ,
}위의 논문에 나열된 놀라운 학술 협력자가 없으면 IPyFlow가 불가능했을 것입니다. 반응성 실행 기능은 Hex Notebooks, Pluto.jl 및 Observable과 같은 다른 우수한 도구의 기능에서 영감을 얻었습니다. iPyFlow는 또한 Marimo, Jolin.io 및 Datalore와 같은 다른 반응 형 파이썬 노트북과 아이디어의 교차 수분을 즐깁니다. ipyflow를 좋아한다면 확실히 확인하십시오.
IPyFlow에 대한 작업은 다수의 회사의 사람들의 지원 (직접적인 재정적 기여, 16 진)의 형태와 간접적 인 도덕적 지원과 격려의 형태로 혜택을 받았습니다 (Ponder, Meta). 물론, ipyflow는 놀라운 Jupyter 커뮤니티가 건축 한 기초에 놓여 있습니다.
이 프로젝트의 코드는 BSD-3-Clause 라이센스에 따라 라이센스가 부여됩니다.