Planet Python 한국어 노트

Planet Python 한국어

Planet Python 웹사이트는 다양한 소스에서 파이썬 관련 콘텐츠를 집계하는 행성 사이트입니다. 블로그, 뉴스 사이트, 기타 온라인 출판물이 포함됩니다. 이 사이트는 파이썬 프로그래밍 세계의 최신 개발을 추적하는 데 있어 한 곳에서 모든 정보를 얻을 수 있는 장소입니다. 사이트의 콘텐츠에는 튜토리얼, 뉴스, 프로젝트 발표, 파이썬 관련 다양한 주제에 대한 논의가 포함됩니다. 사용자는 파이썬 커뮤니티, 새로운 릴리즈, 콘퍼런스, 파이썬 프로그래밍 언어 사용의 베스트 프랙티스에 대해 정보를 얻을 수 있습니다. 이 웹사이트의 목적은 파이썬 관련 콘텐츠를 홍보하고 전파하여 파이썬 커뮤니티의 성장과 발전을 기여하는 것입니다.

노트 스레드

기본적인 파이썬 문법을 배우는 것과 기능적인 애플리케이션을 구축하는 것 사이에는 상당한 격차가 있습니다. 많은 파이썬 과정은 언어의 기본에 초점을 맞추지만 실제 프로젝트에 필요한 필수 개발 워크플로우는 간과합니다. 이로 인해 학습자들은 종종 파이썬 설치, 터미널 사용, pip를 사용한 패키지 관리, 가상 환경, 프로젝트 구성, Git을 사용한 버전 관리와 같은 주제에 대해 혼란스러워합니다. 이러한 기술은 개발자가 자신의 작업을 효과적으로 공유하고 배포하는 데 매우 중요합니다.이를 해결하기 위해 Ship Your First Python App이라는 무료, 자기 주도형 6주 과정이 만들어졌습니다. 이 과정은 처음부터 완전한 로컬 개발 워크플로우를 가르치는 것을 목표로 합니다. 참가자들은 작은 명령줄 애플리케이션인 dev journal을 구축할 것입니다. 매주 새로운 개념을 소개하고 학생들이 해결해야 하는 실패하는 테스트 스위트로 마무리됩니다.커리큘럼은 프로젝트 설정, 데이터 모델링, 명령줄 인터페이스, 타입 안전성, 오류 처리, 코드 구성, 테스트, 출력 형식 개선, 테스트 커버리지 측정 등을 다룹니다. 마지막 주는 문서 작성 및 잠재적으로 PyPI에 게시하는 것을 포함하여 프로젝트를 공유할 준비를 하는 데 중점을 둡니다. 이 과정은 기본적인 파이썬을 이해하지만 주변 개발 프로세스에 어려움을 겪는 개인을 위해 설계되었습니다. CLI, 패키징 또는 Git에 대한 사전 지식이 필요하지 않아 더 넓은 범위의 사용자에게 접근 가능합니다. 제작자는 과정의 유용성과 사용자 경험을 개선하기 위해 적극적으로 피드백을 찾고 있습니다.
PyPy가 8.0.0 버전을 출시하며 중요한 업데이트를 알렸습니다. 이번 릴리스에는 Python 2.7, Python 3.11 지원 및 Python 3.12의 베타 버전이 포함됩니다. Linux 빌드봇은 manylinux_2_28 이미지를 사용하도록 업데이트되었으며, 이제 glibc2.28이 필요합니다. 주요 개발 사항은 CPython의 제한된 ABI(Application Binary Interface)와의 호환성을 목표로 하는 PyPy의 새로운 C 레이어 모델입니다. 이 업데이트는 C 확장 모듈에서 PyPy별 확장을 숨기고, 제한된 API를 사용할 때 PyPy의 C 헤더를 CPython의 헤더와 일치시킵니다. import 메커니즘과 생태계 도구는 여전히 abi3.so 객체를 완전히 인식해야 하지만, Cython 및 PyO3와 함께 원활한 통합을 보장하기 위한 노력이 진행 중입니다. RPython 코드 생성은 computed gotos 및 보다 공격적인 인라이닝을 포함하여 개선되었지만, 성능 향상은 미미합니다. 내부 HPy 백엔드는 충분한 지원을 얻지 못했기 때문에 삭제되었습니다. 부활한 도구인 pyhdrdump를 사용하여 PyPy와 CPython 헤더 파일을 비교할 수 있습니다. 이번 릴리스는 세 가지 인터프리터를 제공합니다: PyPy2.7, PyPy3.11(이 버전의 마지막이 될 예정), 그리고 PyPy3.12 베타입니다. PyPy는 추적 JIT 컴파일러를 활용하는 CPython의 빠른 드롭인 대체재입니다. 다양한 일반적인 아키텍처에 대한 바이너리 빌드가 제공되며, 더 많은 플랫폼에 대한 지원은 다운스트림 패키저를 통해 제공됩니다.
이 텍스트는 pytest 교육에 초점을 맞춘 JupyterLab 워크숍의 제작 과정을 설명합니다. 워크숍은 블로그 게시물에 담을 수 있을 만큼 작지만 실제 워크숍의 모든 필수 요소를 포함하도록 설계되었습니다. 매니페스트, 여러 페이지, 상호작용 가능한 액션, 자동 검사, 퀴즈 및 지원 도구를 포함합니다. 워크숍은 테스트 작성, 실패 관찰, 코드 수정이라는 기본적인 pytest 루프를 가르칩니다. 이 반복적인 과정은 워크숍 내의 네 가지 별도 페이지에 걸쳐 구성됩니다. 핵심 기능은 워크숍을 위한 격리된 Python 환경을 생성하여 학습자의 시스템에 영향을 주지 않고 pytest를 설치하도록 하는 것입니다. 이 접근 방식은 이전 컨퍼런스 발표의 콘텐츠 레슨을 활용하여 학습 경험을 향상시킵니다. 과정은 워크숍과 튜토리얼을 구별하는 검증 가능한 단계를 계획하고 정의하는 것부터 시작합니다. 워크숍은 jupyter workshop init 명령을 사용하여 생성되며, 이는 디렉토리 구조와 매니페스트 파일을 설정합니다. 터미널 액세스, 파일 쓰기, 코드 실행, 패키지 설치와 같은 기능은 매니페스트에 선언되며 린터에 의해 검증됩니다. 매니페스트의 environment 필드는 pytest와 같이 자체 포함된 가상 환경에 설치되는 종속성을 지정합니다. 이를 통해 수동 환경 설정이 필요 없어 학습자는 pytest 자체에 집중할 수 있습니다. 매니페스트의 env 항목은 빠른 파일 수정으로 인한 문제를 방지하기 위해 Python 바이트코드 캐싱을 비활성화합니다. 워크숍은 학습자가 디버깅할 의도적으로 버그가 있는 함수를 포함하는 files/orders.py 파일을 사용합니다. 워크숍의 각 페이지는 Markdown과 특정 액션 블록을 사용하여 파일 열기, 코드 작성, 명령 실행과 같은 작업을 학습자에게 안내합니다. 검사는 verify 액션을 사용하여 구현되며, 이는 학습자 액션의 결과를 자동으로 검증하여 진행 상황과 학습을 보장합니다. quiz 액션은 학습자가 테스트 실행 전에 결과를 예측하도록 하여 pytest 동작 방식에 대한 이해를 강화합니다. editor-insert 액션은 테스트와 같은 새 코드를 편집기에 직접 추가하고 볼 수 있도록 합니다. 워크숍의 구조와 콘텐츠는 pytest의 실제 적용에 초점을 맞춰 상호작용적이고 교육적으로 설계되었습니다.
CdXz5zHNQW_hkEwNEOUhk.png
저자는 두 개의 서로 다른 이미지 생성 백엔드와 상호 작용하는 CLI 도구를 위한 공유 계약을 설계하고 있었습니다. 목표는 CLI가 일반적인 submit(request) 함수를 사용할 수 있도록 하고, 각 백엔드는 이를 자체 SDK 호출로 변환하는 것이었습니다. 처음에는 저자가 추상 메서드를 강제하기 때문에 공유 인터페이스로 추상 기본 클래스(ABC)를 고려했습니다. 그러나 ABC는 상속이 필요하며, 이는 타사 플러그인 가능한 백엔드에 대한 결합을 생성합니다.typing.Protocol은 구조적 타이핑을 사용하기 때문에 더 나은 선택으로 부상했습니다. 클래스는 명시적인 상속을 요구하지 않고 올바른 시그니처를 가진 올바른 메서드를 가짐으로써 프로토콜을 만족합니다. 이 접근 방식은 외부 구현자를 핵심 패키지에서 분리하여 제공자가 독립적으로 발전할 수 있도록 합니다. 프로토콜은 제공자가 엄격한 계층 구조의 일부가 아니라 값으로 전달되는 구성 기반 디자인을 촉진합니다.프로토콜은 플러그인 경계를 설명하는 데 이상적이지만, 제공자가 구체적인 동작이나 구현 로직을 공유해야 할 때는 ABC가 더 적합합니다. ABC는 공유 메서드를 정의하고 구체적인 하위 클래스가 구현해야 하는 추상 메서드를 강제할 수 있습니다. 둘 다 사용하는 것도 가능합니다. 즉, 공개 플러그인 경계를 위한 프로토콜과 제공자 간의 공유 동작을 위한 내부 ABC입니다.저자는 더 가벼운 계약을 위해 프로토콜을 기본값으로 사용하고, 공유 구현이 필요하거나 추상 메서드의 런타임 강제가 필요할 때만 ABC로 전환할 것을 권장합니다. 플러그인 생태계의 경우, "상속으로 준수" (ABC)보다 "모양으로 준수" (프로토콜)가 종종 선호됩니다. 선택은 기본 요구 사항이 모양을 정의하는 것인지, 아니면 구체적인 동작을 공유하고 계층 구조를 강제하는 것인지에 따라 달라집니다.
2026년 PSF 이사회 선거는 전 세계 파이썬 커뮤니티를 지원하는 데 있어 조직의 역할에 대한 중요한 논의를 촉진했습니다. PSF는 봉사에 기꺼이 참여해 준 모든 후보자들과 열정적인 참여와 투표에 참여해 준 커뮤니티에 감사를 표합니다. 새로 선출된 이사회 멤버인 Elaine Wong, Laís Carvalho, Ee Durbin, Georgi Ker에게 축하를 전하며, 복귀하는 멤버에게도 감사를 표합니다. 퇴임하는 이사회 멤버인 Cheuk Ting Ho, Chris Neugebauer, Denny Perez는 PSF의 전략적 비전을 형성하는 데 기여한 공로와 리더십에 대해 감사를 받습니다. 선거는 670표가 투표되어 정족수를 성공적으로 달성했으며, 이는 커뮤니티의 강력한 참여를 보여줍니다. 이사회 멤버인 KwonHan Bae를 포함하여 선거를 홍보한 사람들과 선거 프로세스를 개선하기 위해 노력한 PSF 직원 및 이사회 멤버들에게 특별한 감사를 전합니다. 자세한 선거 결과는 2026년 11월 10일까지 PSF 웹사이트에서 확인할 수 있습니다. PSF 선거팀은 피드백을 수집하고 향후 선거 프로세스를 개선하기 위해 회고를 진행할 것입니다. 조직은 discuss.python.org 또는 이메일을 통해 선거 프로세스에 대한 지속적인 커뮤니티 피드백을 장려합니다. 내년에 최소 세 개의 이사회 자리가 다시 열릴 예정이므로, 관심 있는 개인은 더 많은 정보를 얻고 출마를 고려해 보시기 바랍니다.
CdXz5zHNQW_cy1larHnBn.png
저자는 교육 워크숍에서 일반 Jupyter 노트북 사용의 한계를 해결하기 위해 JupyterLab 확장 프로그램인 jupyterlab-workshop을 개발했습니다. 이 확장은 지침과 학습자가 수행해야 할 실제 작업을 분리합니다. 지침은 사이드바 패널에 표시되며, 각 단계는 JupyterLab 환경 내에서 실행 가능한 항목입니다. 이러한 작업에는 터미널 명령 실행, 파일 수정, 노트북 생성 및 코드 실행이 포함될 수 있습니다. 워크숍은 학습자의 진행 상황을 확인하고 다음 단계로 진행하기 전에 작업 완료를 강제할 수도 있습니다.학습자가 수동으로 코드 실행을 관찰할 수 있는 노트북과 달리, 이 확장은 작업이 실시간으로 수행되므로 적극적인 참여를 보장합니다. 이는 JupyterLab 환경 및 외부 도구와의 상호 작용을 가능하게 하여 노트북이 단일 언어로 제한되는 제약을 극복합니다. 이러한 분리는 교육 콘텐츠와 완료된 작업을 혼동하는 것을 방지하여 더 명확한 학습 경로를 제공합니다. 사이드바 패널은 탐색, 진행 상황 추적 및 수행된 작업에 대한 세부 정보를 제공합니다.실행 가능한 각 단계는 시뮬레이션되지 않습니다. 작업을 클릭하면 라이브 터미널에서 실행되거나 지정된 작업이 수행됩니다. 이 확장은 터미널 작업, 파일 관리, 노트북 상호 작용 및 인터페이스 조작을 포함한 다양한 작업을 지원합니다. 워크숍은 특정 시점에서 최적의 학습을 위해 사용자 인터페이스를 구성하도록 설계될 수도 있습니다. 체크포인트를 통해 학습자는 진행 상황을 저장하고 오류가 발생할 경우 알려진 상태로 되돌릴 수 있습니다.이 확장은 Python 코드, 쉘 명령 또는 파일 기반 술어를 통해 확인을 허용하는 강력한 확인 시스템을 포함합니다. 퀴즈도 통합할 수 있으며, 답변은 후속 단계로 전달됩니다. 매니페스트 파일은 작업 완료가 권고 사항인지 의무 사항인지 결정합니다. 보안은 학습자가 실행 전에 워크숍에 특정 기능을 부여하는 신뢰 메커니즘을 통해 해결됩니다.워크숍 자체는 매니페스트 파일, 페이지용 Markdown 파일 및 필요한 시작 파일이 포함된 디렉토리로 구성됩니다. 이 일반 텍스트 구조는 버전 관리를 용이하게 합니다. 페이지는 MyST Markdown으로 작성되며, 작업은 구분된 코드 블록에 정의됩니다. 이 확장은 로컬에 설치하거나 mybinder.org 및 GitHub Codespaces와 같은 서비스를 통해 사용할 수 있으므로 복잡한 설정 없이 다양한 환경에서 워크숍을 실행할 수 있습니다. 저자는 이전 플랫폼인 Educates를 사용하지 않기로 결정했는데, 이는 Kubernetes가 필요하여 소규모 팀 및 개인의 접근성을 제한했기 때문입니다.
CdXz5zHNQW_ghHpRchT3T.png
새로운 Rust 학생이 File 객체에서 read_to_string을 호출하려고 할 때 오류를 만났습니다. 컴파일러는 해당 메서드가 존재하지 않는다고 표시했습니다. 해결책은 파일 상단에 use std::io::Read;를 추가하는 것이었습니다. 이 import는 파일 작업이 의도되었다면 std::io::File이 import될 것으로 예상했던 학생을 혼란스럽게 했습니다.혼란의 핵심은 Rust의 trait 시스템에 있습니다. read_to_string 메서드는 File 타입 자체의 고유한 메서드가 아닙니다. 대신, File이 구현하는 Read trait에 의해 정의됩니다. Read trait을 import하면 해당 메서드를 Rust 컴파일러의 메서드 조회에 사용할 수 있게 됩니다.이 메커니즘은 일반적으로 메서드 가용성이 객체의 타입에 직접적으로 연결되는 Python과 상당히 다릅니다. Rust에서는 trait이 다양한 타입에 걸쳐 공유되는 동작을 정의하는 방법을 제공하여 다형성과 코드 재사용을 촉진합니다. 예를 들어, File, TcpStream, Stdin은 모두 Read trait을 구현하여 유사한 읽기 기능을 제공할 수 있습니다.따라서 use std::io::Read;는 함수를 직접 사용하는 것이 아니라 Read 인터페이스를 스코프로 가져오는 것입니다. 이를 통해 컴파일러는 해당 trait을 구현하는 타입에 대한 메서드 호출을 해결할 때 Read trait을 고려할 수 있습니다. trait을 이해하는 것은 특정 관련 없어 보이는 import가 Rust에서 메서드 기능에 왜 필요한지 이해하는 데 중요합니다. 이 접근 방식은 코드 중복을 피하고 제네릭 프로그래밍을 가능하게 합니다. 컴파일러의 오류 메시지인 "trait Read is implemented but not in scope"는 이 trait 해결 문제를 직접적으로 가리킵니다.
Django Software Foundation은 첫 번째 Executive Director 직책에 대한 지원 마감일을 연장했습니다. 이제 2026년 9월 22일 화요일 말까지 지구 어디에서든 지원서를 접수합니다. 이 연장은 관심 있는 후보자들이 지원서를 제출할 수 있는 시간을 더 확보하기 위해 부여되었습니다. 이미 지원한 분들은 검토 과정에서 어떠한 지연도 경험하지 않을 것입니다. Executive Director는 DSF의 역량을 개발하고 Django 프로젝트의 지속 가능한 미래를 보장하는 데 중요한 역할을 할 것입니다. 주요 책임에는 모금 및 파트너십 주도, 운영 지원, 이해관계자와의 협업이 포함됩니다. 이상적인 후보자는 모금, 관계 구축 및 조직 리더십에 능숙한 경험 많은 비영리 단체 리더일 것입니다. Django 또는 Python에 대한 사전 전문 지식은 필수는 아니지만, 오픈 소스 또는 커뮤니티 주도 조직에 대한 경험은 유익할 것입니다. 재단은 광범위한 역할에 편안하고 이니셔티브 구축에 능숙한 개인을 찾고 있습니다. 잠재적 자금 제공자에게 Django의 가치를 설명하기 위해 강력한 의사소통 및 리더십 기술이 필수적입니다. 자신이나 아는 사람이 적합하다고 생각하는 사람은 누구나 지원하거나 기회를 공유하도록 권장됩니다. 전체 직무 설명 및 지원 세부 정보는 온라인에서 확인할 수 있습니다. DSF는 미래를 만들어갈 리더를 찾기 위해 노력하고 있습니다.
fastlogging-rs는 애플리케이션의 로깅 병목 현상을 해결하기 위해 설계된 고성능 Rust 기반 로깅 프레임워크입니다. Python의 내장 로깅보다 최대 147배, Apache Log4j보다 9배 빠른 파일 쓰기 속도를 제공하는 상당한 속도 향상을 제공합니다. 이 프레임워크는 라이터가 백그라운드 스레드에서 작동하는 비차단 비동기 아키텍처를 제공하여 메인 애플리케이션의 속도 저하를 방지합니다. 씬 래퍼를 통해 8가지 프로그래밍 언어(Rust, Python, C, C++, Go, Java, C#)를 지원하며, 모두 유사한 API를 공유하여 다양한 기술 스택에서 일관된 로깅을 제공합니다. 주요 기능으로는 선택적 파일 로테이션, 압축, 네트워크 로깅을 위한 AES 암호화, API 또는 파일을 통한 구성이 있습니다. fastlogging-rs는 또한 서브프로세스의 로그 메시지를 메인 프로세스로 자동 전달합니다. 이 초기 릴리스인 0.8.1에는 Rust 코어와 지원 언어에 대한 바인딩이 포함되어 있습니다. Rust의 경우 cargo, Python의 경우 pip와 같은 패키지 관리자를 사용하여 설치가 간편합니다. 이 프로젝트는 MIT 또는 Apache-2.0 라이선스로 오픈 소스이며, 소스 코드와 문서는 GitHub에서 확인할 수 있습니다. 벤치마크는 표준 및 로테이팅 파일 로깅 시나리오 모두에서 우수한 성능을 보여줍니다. fastlogging-rs는 최소한의 코드 변경으로 상당한 성능 이점을 제공하여 기존 로깅 프레임워크에서 마이그레이션을 쉽게 하는 것을 목표로 합니다.
"이번 PyCoder's Weekly는 성능부터 테스트, 새로운 기능까지 다양한 파이썬 주제를 다룹니다. 세트와 딕셔너리가 항상 O(1)이 아니라 이차 시간 성능을 가질 수 있음을 강조합니다. Hypothesis를 사용한 속성 기반 테스트가 엣지 케이스 테스트의 대안으로 홍보됩니다. 스폰서 광고는 효율적인 웹 스크래핑을 위한 ScrapingBee를 소개합니다. Python 3.15의 지연 로딩 가져오기 미리보기가 설명되며, 애플리케이션 시작 시간을 단축할 것을 약속합니다. Django Fundraising Working Group의 자원봉사자 모집이 발표됩니다. PyPI의 파일 호스팅 오류에 대한 사고 보고서가 언급됩니다. 동적 필터링을 위한 Q() 객체와 같은 유용한 Django 기능이 탐구됩니다. 파이썬 창시자인 귀도 반 로섬에 대한 프로필이 소개됩니다. "Making a Python Interpreter in 1024 Bytes"라는 기사는 코드 골핑을 선보입니다. __dict__를 읽어 속성 접근을 비최적화하는 것도 논의됩니다. 효과적인 파이썬 개발 환경을 위한 팁이 제공됩니다. 원격 파이썬 데이터 직무 동향 분석은 축소되는 게시판과 증가하는 원격 근무를 보여줍니다. 파이썬 타이머 함수와 재사용 가능한 Timer 클래스 구축이 교육됩니다. Wagtail을 위한 새로운 CLI 프로토타이핑이 상세히 설명됩니다. NumPy의 ufuncs와 그 내부가 제시됩니다. django-ox와 Plotext를 포함한 여러 새로운 프로젝트와 코드 저장소가 나열됩니다. 마지막으로 PyCon Cameroon 및 다양한 밋업과 같은 예정된 파이썬 이벤트가 발표됩니다."
CdXz5zHNQW_hpByPwlbht.png
AI 시대에 개발자 워크숍의 관련성에 대해 논하며, AI는 단계별 가이드와 튜토리얼을 제공하는 데 뛰어나다고 언급합니다. 그러나 워크숍의 핵심 가치는 능동적인 학습을 통해 이루어지며, 여기서 실수는 결과를 초래하고 문제 해결을 요구합니다. 이러한 실제적인 어려움은 수동적인 읽기나 AI 생성 설명으로는 재현할 수 없는 방식으로 이해를 심화시킵니다. 더 나아가, 워크숍은 학습자가 예상하지 못했을 수 있는 문제에 노출되게 하는데, 이는 실제 개발에 있어 중요한 측면입니다.워크숍의 효과성은 일반적인 함정을 극복하는 데 달려 있습니다. 즉, 환경 설정 문제, 지나치게 큰 단계, "왜"에 대한 불충분한 설명, 그리고 부적절한 검증입니다. 발표자는 모든 참가자의 시작점을 표준화하여 더 나은 지원과 더 복잡한 학습 시나리오를 가능하게 하는 호스팅 환경을 지지합니다. AI는 워크숍 콘텐츠 초안 작성에 도움을 줄 수 있지만, 인간의 학습 과정을 이해하는 데는 실패합니다. AI는 가르칠 수 있는 능력보다는 정확성을 최적화하며, 학습자의 혼란을 예측할 수 없습니다.워크숍 제작의 결정적인 단계는 실제 사람들과 함께 테스트하는 것입니다. AI 생성 자료는 종종 잘 읽히지만 실제로는 실패하기 때문입니다. AI로부터의 압박은 호기심에 의해 주도되는 자발적인 학습 시나리오에서 가장 심각하게 느껴지는데, AI는 더 효율적이고 무료로 그 호기심을 충족시킬 수 있기 때문입니다. 그러나 영업 데모나 고객 교육과 같이 명확한 비즈니스 동인이 있는 워크숍은 여전히 매우 관련성이 높습니다. 궁극적으로 워크숍은 AI가 완전히 재현할 수 없는 학습 리듬을 조성하는 것에 관한 것입니다.
Wing Python IDE가 12.0.3 버전을 출시하며 상당한 개선 사항을 도입했습니다. 이번 업데이트에는 Python 3.15 지원과 최신 타입 힌트에 대한 소스 코드 분석 개선이 포함됩니다. 자동 가져오기가 활성화된 상태에서도 대규모 Python 환경에서의 자동 완성 기능이 상당히 빨라졌습니다. Wing 12는 Claude Code AI 코딩 에이전트와 깊이 통합되어 있으며, 새로운 Claude Code 도구와 AI 워크플로우 관리를 위한 Tasks 도구를 특징으로 합니다. 또한 AI 에이전트에게 Wing의 강력한 디버깅, 테스트 및 코드 분석 기능에 대한 액세스를 제공하는 MCP 서버를 제공합니다. 새로운 AI 기반 FIX 기능은 디버거 버그와 실패한 단위 테스트를 자동으로 해결할 수 있으며, Write Tests는 에이전트에게 단위 테스트 생성을 지시합니다. AI Code Actions를 통해 사용자는 AI 지원을 받아 코드를 설명, 검토, 수정 및 최적화할 수 있습니다. IDE는 이제 OS Commands 및 Debug I/O 도구에서 ANSI 터미널 에뮬레이션을 위한 의사 터미널을 제공합니다. 도구를 편집기 분할에 배치할 수 있게 되어 워크스페이스 유연성이 향상되었으며, Tools 메뉴는 사용 편의성을 위해 재구성되었습니다. Wing 12는 제품 라인을 AI 에이전트 도구가 포함된 Wing Pro와 기존 개발을 위한 Wing Classic으로 단순화했으며, Wing Personal은 단종되었습니다.
CdXz5zHNQW_dlloi3F9Xk.png
"AI 탐지기인 Pangram이 David Sacks의 트윗을 AI 생성으로 플래그 지정했고, Sacks는 이를 부인하며 AI 탐지기가 가짜라고 불렀습니다. Pangram은 낮은 오탐율을 가지고 있지만, LLM 글쓰기 도우미는 종종 인간의 텍스트를 AI로 잘못 식별합니다. Pangram은 인간 텍스트로 훈련한 다음 LLM이 이를 다시 작성하거나 편집하도록 하여 AI의 글쓰기 패턴을 식별하는 방법을 학습합니다. 저자는 LLM인 Opus 5에게 Dario와 Sam Altman의 기존 게시물을 기반으로 "Pacing the Frontier"에 대한 David Sacks 스타일의 트윗을 생성하도록 프롬프트했습니다. 생성된 트윗은 OpenAI와 Anthropic이 독점적 지위를 가지고 있으며, 이는 상업적으로나 전략적으로 이익이 되기 때문에 프론티어를 따라가야 한다고 주장했습니다. 또한 이 트윗은 오픈 웨이트 모델이 주요 위험이라는 주장을 일축하고 제안된 규제 접근 방식을 비판했습니다. Pangram은 이 생성된 트윗을 100% AI로 평가했습니다. 저자는 이후 트윗을 수동으로 다시 작성했으며, 구조와 아이디어를 유지하면서 Pangram으로부터 인간 평가를 받으려고 했습니다. 상당한 재작성과 복사된 문장 제거에도 불구하고, 이 인간이 다시 작성한 텍스트도 Pangram으로부터 100% AI 평가를 받았습니다. 저자는 LLM을 초기 구조에 의존하는 것이 광범위한 편집 후에도 낮은 AI 탐지 점수로 이어질 수 있다고 지적합니다. 저자는 LLM 사용의 영향과 글쓰기에 대한 의존도 증가에 대한 인식을 높인 Pangram에 감사하지만, 상당한 인간 편집을 거친 텍스트에 대해 100% AI 평가가 공정한지에 대해 의문을 제기합니다."
CdXz5zHNQW_y8hcnXdNTs.png
Wrapture가 버전 1.0.0b1에 도달하여 알파에서 베타 상태로 전환되었으며, 이는 API 안정성을 나타냅니다. 이제 프로젝트는 향후 개발에 반영하기 위해 실제 애플리케이션에 대한 사용자 피드백을 구합니다. OpenTelemetry 내보내기에 특별한 주의를 기울여 속성 매핑이 규칙을 준수하는지 확인해 주십시오. 동반 계측 패키지도 베타 단계에 있습니다. 핵심 계측 패키지는 인-프로세스 대상을 다루며, 데이터베이스 및 AWS와 같은 외부 서비스를 위한 별도의 패키지가 존재합니다. 이 별도의 패키지들은 자체 릴리스 주기를 가집니다. 프로젝트는 Redis, MongoDB, 그리고 잠재적으로 LangChain에 대한 추가 계측을 계획하고 있습니다. 일련의 블로그 게시물은 단위 테스트 및 애플리케이션 추적에서 wrapture의 사용법을 자세히 설명합니다. GitHub를 통해 대화형 워크숍을 이용할 수 있으며, mybinder.org에서 브라우저에서 직접 실행하거나 로컬에서 실행하여 실습 학습을 할 수 있습니다. 이 워크숍은 사용자가 직접 해보면서 wrapture 개념을 배울 수 있도록 합니다. 저자는 Simon Willison의 이전 요약 게시물이 이미 wrapture의 가시성을 높였다는 점을 인정합니다. 현재 게시물은 모든 관련 링크, 패키지 정보 및 워크숍 리소스를 한곳에 통합하는 것을 목표로 합니다. 새로운 기능인 jupyterlab-workshop은 JupyterLab 내에서 대화형 워크숍을 실행할 수 있도록 합니다.
AI가 인류의 멸종을 초래할 것이라는 아이디어가 최근 힘을 얻고 있습니다. 다리오 아모데이와 같은 일부 AI 리더들은 그러한 사건의 상당한 확률을 추정합니다. 아모데이의 AI 개발 속도 조절에 대한 게시물은 저명한 인사들 사이에서 논의를 촉발했습니다. 그러나 저자는 많은 우려를 공유함에도 불구하고 전제에 동의하지 않습니다.저자는 "파멸"을 멸종이 아니라 봇넷과 같이 AI 시스템을 제어하기 어렵게 만드는 지속적인 성가심으로 정의합니다. 그들은 현재 AI 시스템이 짜증나지만 잠재적인 미래의 고급 에이전트와 달리 종료될 수 있음을 인정합니다. 저자는 AI 통제 무기와 같은 실존적 위협이 아니라 주요 AI 연구소 외부의 개인에게 미치는 영향에 대해 걱정합니다.AI 개발 "속도 조절"이라는 개념은 특히 소수의 미국 기업만이 이 경쟁을 주도하고 있다는 점을 고려할 때 문제가 있는 것으로 간주됩니다. 이 회사들은 공개 데이터와 리소스로부터 이익을 얻었으며 이제 자신들과 연결된 제3자 평가 시스템을 제안합니다. 저자는 특히 지정학적 동기를 고려할 때 이러한 기업만이 강력한 AI를 통제해야 한다는 아이디어를 비판합니다.저자는 오픈 웨이트 모델이 핵 확산과 유사하게 광범위한 접근성을 통해 본질적으로 AI 개발 속도를 늦출 것이라고 주장합니다. 대중이 AI 개발을 지지하지만 소수의 연구소로부터 그 혜택을 다시 구매하는 현재 상황은 결함 있는 경제적, 지정학적 모델로 간주됩니다. 오픈 소스 프로젝트는 AI 회사로 인해 어려움을 겪고 있지만, 중국 연구소는 역량을 확산하고 경쟁의 장을 평준화하는 데 중요하다고 여겨집니다.저자는 기존 법률이 무시되고 동의 없이 데이터가 사용되는 규제 실패를 지적합니다. AI 서비스에 대한 새로운 토큰 경제는 투명성이 부족한 마약 시장에 비유됩니다. 이상적으로는 AI 개발이 공공재에 혜택을 주어야 하며, 규정은 지식 증류에 대한 지원을 의무화해야 합니다.궁극적으로 저자는 대규모 연구소가 잃을 것이 더 많다고 믿기 때문에 AI 멸종 사건을 예상하지 않습니다. 대신, 주요 우려는 AI가 다양한 산업에 광범위한 피해를 입혀 더 비싸게 만들 수 있다는 것입니다. 소프트웨어 엔지니어링에서 분명하게 나타나는 혁신에 대한 이 새로운 "세금"은 다른 분야로도 확산될 것으로 예상됩니다.
저자는 이메일 뉴스레터를 유익하고 생각을 자극하는 내용 때문에 즐겨 읽지만, 주중에는 시간이 부족하고 토요일에는 컴퓨터를 사용하고 싶어 하지 않습니다. 이를 해결하기 위해 뉴스레터가 자동으로 "toprint" 폴더로 이동되고, 마음에 드는 뉴스레터는 별표 표시되는 시스템이 개발되었습니다. 금요일 오후에는 별표 표시된 뉴스레터와 선택된 별표 없는 뉴스레터가 인쇄되어 토요일 아침 독서용으로 사용되며, 종종 양면 인쇄와 한 면당 네 페이지로 인쇄됩니다. 그러나 이 수동 프로세스는 상당한 종이 낭비를 초래했고, 원치 않는 내용과 이미지를 제거하는 지루한 작업을 수반했습니다. 비효율성에 좌절한 저자는 이 작업을 자동화하기 위해 Python 패키지인 "newsprint"를 만들었습니다. Newsprint는 별표 표시된 뉴스레터를 처리하여 프로모션 콘텐츠와 불필요한 이미지가 제거된 PDF를 생성합니다. 이미지를 지능적으로 처리하고 뉴스레터 및 페이지 정보가 포함된 바닥글을 추가합니다. 이 패키지는 또한 목차를 생성하고, Claude API 키를 사용하여 전반적인 뉴스레터 요약 및 개인화된 통찰력을 제공할 수 있습니다. 사용자는 포함할 별표 없는 뉴스레터를 선택하고, 용지 크기와 방향을 사용자 정의하며, 처리된 뉴스레터를 관리할 수 있습니다. Newsprint는 이미 저자의 종이 사용량을 줄이고 독서 경험을 향상시켰습니다.
Wrapture는 이제 OpenTelemetry를 추적 데이터의 주요 전송 대상으로 통합했습니다. 모든 설치에 포함된 wrapture.otel 서브패키지를 통해 추적 백엔드로의 원활한 내보내기가 가능합니다. 구성에 [otel] 테이블을 추가하면 사용자는 추적을 활성화하고, 서비스 이름을 지정하며, 개별 신호 설정을 조정할 수 있습니다. 이 구성을 통해 오류 및 요청 세부 정보를 포함한 애플리케이션 동작을 상세하게 분석할 수 있습니다.OpenTelemetry 환경 변수는 추적 데이터가 전송될 위치를 지정하며, 즉시 디버깅이 가능하도록 콘솔 익스포터가 제공됩니다. 각 애플리케이션 이벤트는 스팬으로 변환되어 계층적 트레이스를 형성합니다. 예를 들어, Flask 요청은 서버 스팬이 되며, 내부 호출은 중첩된 스팬을 생성합니다. KeyError와 같은 오류 상황은 상태 코드 및 예외 세부 정보와 함께 정확하게 캡처됩니다.계측 기능은 인자와 기타 주석이 달린 데이터를 스팬 속성으로 자동으로 캡처하며, 신용카드 번호와 같은 민감한 정보는 가려집니다. 이를 통해 오류가 특정 작업과 상위 요청 스팬 모두에 표시되어 완벽하게 문서화됩니다. 여러 프로세스에 걸친 분산 추적은 W3C 추적 컨텍스트 전파를 통해 구현됩니다.Wrapture는 발신 요청에 트레이스 컨텍스트 헤더를 삽입하며, 수신 서비스의 미들웨어에서 이를 파싱합니다. 이를 통해 일관된 트레이스 ID를 유지하면서 서로 다른 서비스 간에 트레이스를 연결할 수 있습니다. OpenTelemetry 내보내기가 활성화된 경우에도 Wrapture는 자체 생성한 트레이스 ID를 유지하여 연속성을 보장합니다.메트릭 또한 동일한 추적 이벤트에서 생성되므로, 명시적인 계측 코드 변경 없이도 집계된 인사이트를 제공합니다. 요청 소요 시간과 호출 소요 시간은 자동으로 수집되며, HTTP 메서드, 경로, 상태 코드와 같은 관련 정보에 따라 속성이 지정됩니다. 이러한 메트릭은 귀중한 성능 및 오류율 정보를 제공합니다.OpenTelemetry와 함께 wrapture를 사용할 때 발생하는 오버헤드는 OpenTelemetry SDK를 직접 사용할 때와 비슷합니다. wrapture는 SDK의 내부 오버헤드 일부를 우회하여 완성된 스팬을 직접 생성함으로써 스팬 처리를 최적화합니다. 그 결과, 특히 예외가 발생하는 작업에서 비용이 절감됩니다.Wrapture 설계의 핵심 원칙은 테스트 및 프로덕션 추적 모두에서 실시간 호출을 정확하게 관찰하는 데 있습니다. 테스트 테이프에 데이터를 제공하든 추적 백엔드에 데이터를 제공하든, 기본 메커니즘은 동일합니다. OpenTelemetry 내보내기 페이지에서는 샘플링 및 로그 신호 통합과 같은 고급 기능에 대한 자세한 내용을 확인할 수 있습니다.
EuroPython 2026은 7월 13일부터 19일까지 크라쿠프에서 참석자, 연사, 자원봉사자 및 후원사 덕분에 성공적으로 개최되었습니다. 컨퍼런스는 흥미로운 기술 발표와 강한 동지애를 통해 파이썬 커뮤니티를 선보였습니다. 모든 세션의 영상 녹화본과 컨퍼런스 사진이 이제 온라인에서 누구나 즐길 수 있도록 제공됩니다. 올해 행사에는 1,386명의 참석자가 참여했으며, 상당수의 숙련된 파이썬 사용자가 있었습니다. Core Python이 가장 인기 있는 주제였으며, 그 뒤를 이어 Web Development와 Data Science & ML이 차지했습니다. 두 명의 새로운 EuroPython Society Fellow가 상당한 기여를 인정받아 임명되었습니다. 처음으로 Python Software Foundation Community Service Award가 EuroPython 무대에서 수여되었습니다. 또한, 이 행사는 EuroPython의 25번째 생일을 축하하며 오랜 커뮤니티 회원들을 인정했습니다. 스프린트의 하이라이트는 커뮤니티 정신을 함양한 수제 젤라토 트럭이었습니다. 도전적인 Kahoot 퀴즈는 참석자들의 파이썬 및 컨퍼런스 지식을 테스트했습니다. 주최측은 또한 참석자들이 만든 예술 작품을 공유하고 PyCon NL, PyCon España 및 Django on the Med과의 파트너십을 발표했습니다. 그들의 감사는 모든 후원사, 특히 플래티넘 후원사인 Manychat, Microsoft 및 Vercel에게 전달됩니다.
CdXz5zHNQW_MR1HRatWUi.jpeg
Flask 샵의 /order 엔드포인트가 느리며, 병목 현상을 파악하는 것이 목표입니다. 기존의 스톱워치 방식은 코드 변경이 필요하고, 연결되지 않은 로그 줄을 생성하며, 간헐적인 느림 현상에 대처하기 어렵습니다. 프로파일러는 너무 많은 세부 정보를 제공하여 요청별 정보를 모호하게 만듭니다.기존 설정을 사용하여 초기 추적은 즉시 시간별 분석을 보여줍니다. 요청은 37.3ms, 뷰는 36.3ms, 서비스는 35.9ms, 원장은 35.1ms가 소요되는 반면, 게이트웨이는 8us에 불과합니다. 이는 원장이 느림 현상의 주요 원인임을 나타냅니다."자체 시간"이라는 개념은 자녀로 인해 느린 작업과 자체적으로 느린 작업을 구분합니다. Wrapture는 이를 계산하여 원장이 자체적으로 느리다는 것을 보여주고, 서비스와 뷰는 원장을 호출하기 때문에 느리다는 것을 보여줍니다.wrapture.instrumentationwrapture.timeline을 사용한 테스트는 이를 확인합니다. OrderService.place는 31.0ms 중 173us의 자체 시간을 가지는 반면, Ledger.record가 대부분의 시간을 차지합니다. 이 정도의 세부 정보는 표준 프로파일러에서는 사용할 수 없습니다.장기 모니터링을 위해 Aggregate 수집기는 총 시간, 자체 시간, 최소 시간, 최대 시간을 포함한 여러 요청에 대한 통계를 수집합니다. 서버에 30개의 요청을 보낸 보고서는 Ledger.record가 자체 시간 기준으로 가장 큰 기여를 한다는 것을 확인합니다.테넌트별 느림 현상을 추적하기 위해 wrapture.annotate는 "X-Tenant"와 같은 사용자 지정 데이터를 인플라이트 이벤트에 추가할 수 있도록 합니다. 이를 통해 추적을 필터링하여 어떤 테넌트가 더 느린 요청을 경험하는지 파악할 수 있습니다.Counter 수집기는 지속 시간을 유지하지 않고 작업만 계산하는 더 저렴한 대안을 제공하며, 테스트 스위트에서 예산 기반 검증(예: N+1 쿼리 문제 감지)에 적합합니다. 다음 단계는 이러한 이벤트를 추적 백엔드로 전달하는 것입니다.
PyQt 애플리케이션의 백그라운드 스레드, QThreadPool 또는 QThread에 의해 관리되는 스레드는 메인 창이 닫힌 후에도 계속 실행됩니다. 이는 애플리케이션이 멈추거나 오류를 발생시킬 수 있습니다. 이를 해결하기 위해 메인 창 클래스에서 closeEvent 메서드를 재정의해야 합니다. 이 메서드는 창이 닫히기 시작할 때 자동으로 호출되며, 정리 코드를 실행할 기회를 제공합니다. closeEvent 내부에서 모든 백그라운드 워커에게 실행을 중지하도록 신호를 보내야 합니다. QRunnable로 구현된 워커의 경우, 일반적으로 워커의 run 메서드가 주기적으로 확인하는 내부 플래그를 설정하는 것이 포함됩니다. 워커에게 중지 신호를 보낸 후, QThreadPool.waitForDone()을 사용하여 스레드 풀의 모든 스레드가 작업을 완료할 때까지 실행을 일시 중지해야 합니다. 이는 잠재적인 문제를 방지하기 위해 스레드가 갑자기 종료되지 않도록 보장합니다. 마지막으로, 창이 정상적으로 닫히도록 허용하기 위해 event.accept()를 호출해야 합니다. 또한 프로세스가 깔끔하게 종료되도록 보장하기 위해 애플리케이션의 이벤트 루프 실행을 sys.exit()로 감싸는 것이 중요합니다. 이 패턴은 애플리케이션이 완전히 종료되기 전에 모든 백그라운드 작업이 우아하게 중지되도록 보장합니다.
NumPy와 PyQt6를 사용하는 스레드 비디오 스트리머의 충돌은 종종 QImage가 NumPy 배열 메모리와 상호 작용하는 방식에서 비롯됩니다. QImage가 NumPy 배열에서 생성될 때, 데이터가 복사되는 것이 아니라 원본 메모리 버퍼를 참조합니다. 이는 멀티스레드 애플리케이션에서 위험한 상황을 만듭니다. 왜냐하면 작업자 스레드가 NumPy 배열을 수정하거나 폐기하면, GUI 스레드의 QImage가 유효하지 않게 되어 충돌을 일으킬 수 있기 때문입니다. 해결책은 QImage가 데이터의 독립적인 복사본을 가지고 있도록 하는 것입니다. 이는 QImage에서 .copy() 메서드를 호출하여 달성됩니다. 이 복사의 시점은 중요합니다. QImage가 작업자 스레드에서 GUI 스레드로 전달되기 전에, 일반적으로 시그널을 통해 방출되기 전에 수행되어야 합니다. 또한, setPixmap 호출과 같은 모든 GUI 업데이트는 반드시 메인 스레드에서만 발생해야 합니다. 시그널과 슬롯을 사용하는 것은 작업자 스레드가 GUI 업데이트를 위해 메인 스레드와 통신하는 올바른 방법입니다. 제공된 예제는 NumPy 배열에서 QImage를 생성하고, 즉시 복사한 다음, 복사된 QImage를 시그널을 통해 방출함으로써 이를 보여줍니다. 메인 스레드의 슬롯은 이 안전한 QImage를 수신하고, 이를 QPixmap으로 변환한 다음, 충돌을 일으키지 않고 QLabel을 업데이트합니다. 이러한 관행을 구현함으로써 PyQt6를 사용한 안정적인 스레드 비디오 스트리밍을 달성할 수 있습니다.
웹 애플리케이션의 요청을 추적하는 것은 HTTP 요청 세부 정보와 해당 요청 처리 중에 발생한 모든 호출을 계층적 트리로 캡처하는 것을 포함합니다. WSGI 애플리케이션은 상태와 헤더가 콜백을 통해 전달되고, 본문은 호출 후에 소비되는 이터러블이며, 예외가 내부적으로 처리되기 때문에 추적에 어려움을 제시합니다. Flask 애플리케이션 예시는 이를 보여주며, 헬스 체크, 견적, 주문을 위한 라우트가 있습니다. 추적을 위한 구성에는 이제 Flask 계측을 지정하기 위한 [[instrument]] 항목이 포함됩니다. 이 설정은 요청 흐름에 대한 상세한 관찰을 가능하게 합니다. Flask 요청이 처리될 때, 추적은 트리를 시작하는 요청 라인을 보여주고, 그 뒤를 애플리케이션 로직을 나타내는 중첩된 호출들이 따릅니다. 오류는 Flask 내의 예외 처리를 통해 캡처되며, 계측이 요청 이벤트에 대해 이를 기록할 수 있도록 합니다. 노이즈를 관리하기 위해 헬스 체크와 같은 특정 경로는 무시될 수 있으며, 추적 데이터 생성을 방지합니다. Flask 확장 프로그램의 라이프사이클 콜백도 선택적으로 관찰에서 제외될 수 있습니다. Flask 계측은 Flask의 WSGI 미들웨어, 라우트 처리, 예외 관리 등 핵심 지점에 바인딩을 적용하여 작동합니다. 추적의 핵심 단위는 상태, 지속 시간, HTTP 세부 정보를 포함한 모든 관련 데이터를 포함하는 요청 이벤트입니다. 이 상세한 추적은 애플리케이션 시간이 어디에 사용되고 있는지 분석할 수 있게 합니다.
이 프로젝트는 Azure Entra ID를 인증에 사용하여 세분화된 역할 기반 접근 제어(RBAC)를 갖춘 FastAPI 서비스를 구현합니다. 각 라우트에 접근 정책을 하드코딩하는 대신, 이러한 정책은 데이터베이스 테이블에 저장됩니다. 이를 통해 관리자는 애플리케이션 코드를 수정하고 재배포하지 않고도 사용자 권한을 변경할 수 있습니다. 시스템은 Azure Entra ID를 사용하여 사용자를 인증하고 JWT 클레임에서 해당 역할을 검색합니다. 엔드포인트 키와 필요한 역할의 매핑은 EndpointPermission SQLModel 테이블에 저장됩니다.권한 부여 로직의 핵심은 FastAPI 종속성으로 사용되는 require 함수에 있습니다. 이 함수는 데이터베이스에서 엔드포인트에 필요한 역할을 검색하고 인증된 사용자가 그 중 하나라도 가지고 있는지 확인합니다. 그렇지 않으면 403 Forbidden 오류가 발생합니다. 엔드포인트의 키 문자열은 해당 라우트 정의에 하드코딩된 유일한 리터럴입니다.중요하게도, 이러한 권한을 관리하는 엔드포인트 자체는 동일한 RBAC 메커니즘으로 보호되어 관리자만이 접근 규칙을 수정할 수 있도록 합니다. 관리자가 권한 관리 엔드포인트에 대한 자신의 접근 권한을 실수로 취소하는 것을 방지하고 역할 할당이 비어 있지 않도록 하는 안전 장치가 있습니다. 이 글은 두 가지 일반적인 Azure 구성 문제를 강조합니다. v2 대신 v1 토큰을 사용하는 경우(유효하지 않은 토큰 오류 발생)와 중첩된 그룹 멤버십이 직접 할당을 위한 사용자 역할에 반영되지 않는다는 사실입니다.이 프로젝트는 또한 권한 부여 로직을 효과적으로 테스트하기 위한 지침을 제공합니다. 테스트는 인증 및 세션 종속성을 재정의하여 가짜 사용자 및 인메모리 SQLite 데이터베이스를 사용할 수 있으므로 외부 종속성 없이 포괄적인 테스트가 가능합니다. 정책을 데이터로 외부화하는 이 설계는 권한 부여를 동적이고 관리 가능하게 만들어 12-factor app 원칙에 부합합니다. 저자는 코드 로직과 변경 가능한 정책을 구별하는 것을 강조합니다.
이번 PyCoder's Weekly는 파이썬 개발자를 위한 다양한 주제를 다룹니다. Den Odell의 신간 "Fast by Default"와 연계하여 파이썬 애플리케이션을 기본적으로 빠르게 만드는 방법에 대한 논의를 특징으로 합니다. 또 다른 주요 기사에서는 LLM 지원 전체 파이프라인 마이그레이션을 포함하여 pandas에서 Polars로의 마이그레이션 전략을 다룹니다. 또한 오픈 소스 코드 리뷰어인 PR-AF가 Code-Review-Bench에서 매우 우수한 성능을 보였다는 발표도 있습니다.여러 기사에서는 dunder 메서드에서 NotImplemented를 언제 사용해야 하는지, Pydantic과 FastAPI로 플러그인 아키텍처를 구축하는 등 실용적인 파이썬 사용법을 자세히 다룹니다. PyPI.org의 중요한 업데이트는 메타데이터 요청이 더 이상 패키지 다운로드로 계산되지 않아 다운로드 통계의 정확성을 개선한다고 명시합니다. 튜토리얼에서는 얼굴 인식 도구 구축 및 일반적인 "NoneType" 객체 오류 수정에 대한 지침을 제공합니다.기타 교육 콘텐츠에는 파이썬 데코레이터에 대한 입문서와 비동기 파이썬을 효과적으로 테스트하는 방법에 대한 통찰력이 포함됩니다. 개발자는 Cloudflare R2에 Django 정적 및 미디어 파일을 저장하는 방법에 대해서도 배울 수 있습니다. "Analysis Paralysis Sucks" 및 "Why OOP Exists"와 같은 생각을 자극하는 글은 더 넓은 개발 관점을 제공합니다.Python 3.15 미리보기에서는 기본 UTF-8 인코딩 변경을 강조하며, 이에 대한 퀴즈도 함께 제공됩니다. 이번 호에는 파이썬-C++ 트랜스파일러인 Shedskin과 pandas의 수많은 오류 사례를 보여주는 Pandas-silent-bugs와 같은 프로젝트도 포함됩니다. 2026년 9월 파이썬 커뮤니티를 위한 예정된 이벤트도 다양한 밋업 및 PyCon Cameroon를 포함하여 나열됩니다.
CdXz5zHNQW_IGTZIgus4k.png
Django Software Foundation은 2026년까지 50만 달러를 모금하는 것을 목표로 하는 중요한 이니셔티브인 모금 실무 그룹의 멤버를 찾고 있습니다. 이 자금은 Django Fellows 및 Django Girls와 같은 기존 프로그램을 지원하고 DSF의 첫 번째 사무총장을 고용하는 데 필수적입니다. 이 목표를 달성하려면 단순한 기부를 넘어선 전략적 사고가 필요하며, 기업 관계, 의미 있는 스폰서십, 그리고 Django의 가치를 전달하는 데 중점을 두어야 합니다. 모금 실무 그룹은 새로운 사무총장과 긴밀히 협력하여 포괄적인 모금 노력을 구축할 것입니다.DSF는 모금, 스폰서십, 파트너십, 비즈니스 개발 또는 영업 분야에서 사전 경험이 있는 개인을 찾고 있습니다. 이 전문가들은 기회를 식별하고, 문을 열고, 새로운 모금 이니셔티브를 개발할 것입니다. 그러나 모금 전문 지식이 그룹에 참여하는 데 필수적인 것은 아닙니다. 재단은 또한 기업이 오픈 소스를 지원하는 방식을 이해하거나, 기업 참여에 대한 아이디어를 가지고 있거나, 강력한 관계 구축 및 조직 기술을 보유한 개인을 높이 평가합니다.그들은 경험이 풍부한 전문가와 신선한 관점을 결합하고, 업무를 추진할 수 있는 사람들과 배우고 기여하고자 하는 열망이 있는 사람들을 결합한 다양한 그룹을 찾고 있습니다. 실무 그룹은 월별 회의와 세션 간 비동기 작업을 통해 운영됩니다. 모금 배경에 관계없이 관심 있는 사람들은 지원하여 Django Software Foundation이 야심찬 목표를 달성하도록 돕는 것이 좋습니다.
CdXz5zHNQW_nCJNA7OiJQ.png
이 텍스트는 소스 코드를 수정하지 않고 Python 프로그램을 관찰하고 추적하는 "wrapture" 도구를 사용하는 방법을 설명합니다. 초기에는 추적이 프로그램의 진입점을 편집하는 것을 포함했는데, 이는 상속받거나 공유된 코드의 경우 바람직하지 않습니다. 더 유연한 접근 방식은 별도의 설정 파일인 wrapture.toml을 사용하여 무엇을 관찰할지, 추적 데이터를 어디로 보낼지 지정하는 것입니다. 이 설정 파일은 관찰 대상과 해당 메서드, 그리고 데이터 마스킹 규칙을 정의합니다.wrapture.toml 파일은 모듈 내에서 특정 메서드 이름이나 glob 패턴을 대상으로 지정할 수 있습니다. 이 도구는 python -m wrapture 뒤에 프로그램 스크립트를 붙여 실행하며, 이는 프로그램을 실행하기 전에 설정을 적용합니다. 이 방법은 소스 코드 수정 방식과 동일한 추적 출력을 생성하지만, 관찰 로직을 외부에 유지합니다. 장시간 실행되는 애플리케이션의 경우, 추적 출력을 JSON Lines 형식의 파일(예: trace.jsonl)로 보낼 수 있습니다.이 파일 형식은 인자, 결과, 예외 및 타이밍을 포함한 상세한 이벤트 정보를 캡처하여 jq와 같은 일반적인 도구로 쉽게 처리할 수 있습니다. 추적을 활성 상태로 두는 것에 대한 안전 고려 사항에는 차단 방지를 위한 제한된 큐와 라이브 객체 보유를 피하기 위한 인자 요약이 포함됩니다. 명령줄 직접 실행이 불가능한 경우, 환경 변수를 통해 인터프리터 시작 시 wrapture를 주입하기 위해 autowrapt를 사용할 수 있습니다.이 부트스트랩 메커니즘은 일반적으로 프로덕션 환경이 아닌 개발 또는 디버깅을 위한 것입니다. 추적이 주입되면, 애플리케이션을 다시 시작하지 않고도 wrapture.bootstrap을 통해 접근 가능한 기능을 사용하여 동적으로 제어(일시 중지 및 재개 또는 완전히 되돌리기)할 수 있습니다. wrapture의 다음 단계는 웹 애플리케이션에서 발견되는 것과 같은 더 복잡한 애플리케이션 단위에 이 추적 기능을 적용하는 것을 포함합니다.
Wrapture 바인딩은 원래 단위 테스트에 사용되었지만 강력한 추적 메커니즘으로도 활용될 수 있습니다. 바인딩은 메서드 호출을 관찰하고 이벤트를 방출하며, 이 이벤트는 테스트 테이프 대신 "싱크(sink)"에 의해 처리됩니다. 이를 통해 실행 중인 프로그램의 실시간 내레이션이 가능합니다.이 글에서는 카드 결제가 거부될 수 있는 Gateway, Ledger, Notifier를 포함하는 OrderService를 예로 들어 이를 설명합니다. 세 개의 바인딩이 주요 메서드인 OrderService.place, Gateway.charge, Ledger.record에 적용됩니다. 간단한 Printer 싱크를 사용하여 이러한 이벤트를 표시합니다.출력은 인수, 반환 값, 예외를 포함한 자세한 호출 정보를 보여주며, 들여쓰기는 호출 중첩을 나타냅니다. 중요한 점은 wrapture.redact() 캡처 정책을 바인딩 수준에서 사용하여 카드 번호와 같은 민감한 데이터를 삭제할 수 있다는 것입니다.싱크가 등록되지 않은 경우 바인딩은 최소한의 오버헤드를 발생시키며, 호출당 약 0.5마이크로초의 속도로 실행됩니다. 대규모 추적을 관리하기 위해 싱크 또는 바인딩 수준에서 필터링을 적용할 수 있습니다.wrapture.Depth(1, wrapture.Printer())와 같은 싱크 수준 필터링은 최상위 수준 호출로 출력을 제한하여 간결한 개요를 제공합니다. when=을 사용한 바인딩 수준 필터링은 특정 호출에 대한 이벤트 생성을 방지하는 술어(predicate)를 사용하여 매우 효율적입니다.그러나 when=은 지정된 이벤트만 건너뛰며, 중첩된 호출은 여전히 기록됩니다. 전체 호출 트리를 억제하려면 바인딩에 tree=True를 추가하여 "여기서부터 아래로는 아무것도" 추적되지 않도록 할 수 있습니다.바인딩은 또한 filtered_calls를 추적하여 사용자가 어떤 작업이 억제되었는지 이해할 수 있도록 합니다. 이 설정은 프로그램이 최소한의 코드 변경과 다양한 모니터링 요구에 맞는 사용자 정의 가능한 싱크를 통해 실시간 데이터로 자체 동작을 설명할 수 있도록 합니다.