A challenge for #Python fans.
uvx textual-demo
Solve the 5x5 puzzle. If you do it in under 1 minute, you will be a god amongst mere mortals.
A challenge for #Python fans.
uvx textual-demo
Solve the 5x5 puzzle. If you do it in under 1 minute, you will be a god amongst mere mortals.
@brianokkenBrian Okken
Yes to the warnings.deprecated decorator.
But it's only 3.13+ so many libraries will have to wait until ~October 2028 until they can use it (or only Q4 2026 for those following SPEC 0).
https://docs.python.org/3/library/warnings.html#warnings.deprecated
Re: https://www.youtube.com/live/FdgE0GDC7xU
#Python #deprecations
Grants help remove barriers, grow communities, and make #Python more accessible worldwide 🐍🌍
The program is currently paused, but every donation brings us closer to reopening! Donate today and help support #PythonForEveryone
Helloyunho @helloyunho@hackers.pub
당신은 게임에 갇힌 미소녀들을 보기 위해 PlayStation을 켰습니다. 마침 친구가 "나 이쪽 루트 클리어했는데 너도 볼래?" 라며 세이브 파일을 주네요. 마침 그 루트로 갈 시기를 놓친 당신은 친구의 세이브를 이용해 확인해보려고 합니다. 세이브를 등록 후, 미연시를 켜서 로드했는데..? 갑자기 콘솔이 멈추며 결국 콘솔 내부 저장공간을 포맷했습니다!
... 당연히 위 내용은 실제 스토리가 아니지만, 충분히 일어날 수 있습니다. 이 글에서 설명할 내용들로 말이죠.
yarpe(Yet Another Ren'Py PlayStation Exploit)를 소개합니다!
이 스크립트는 Ren'Py 기반의 PlayStation 게임들에서 적용되는 취약점이며, 현 시점에서 적용 가능한 게임은 다음과 같습니다:
그런데, 이 모든 것이 어떻게 시작되었고, 어떻게 만들어진걸까요?
사실 저는 PlayStation(이하 PS로 줄여서 말하겠습니다)에 관심이 없었습니다. 반대로 Xbox에 많은 관심이 있었죠. 처음 Xbox One/Series의 커널 취약점이 생겼을 때 Warhammer: Vermintide 2의 게임 세이브 취약점을 이용한 게임 덤프가 제 눈에 잡혔습니다. 그때 문뜩 든 생각이: "다른 게임은 이런 세이브 취약점이 없을까?" 였는데요, 저와 같이 이런 작업에 관심을 두는 친구가 먼저 추천해준 것은 RPG Maker(쯔꾸르 라고도 많이 불리죠)로 만들어진 게임들이었습니다. 아쉽게도, 콘솔 버전에서 사용하는 RPG Maker 게임들은 다른 세이브 구조를 가지고있었고, ACE(Arbitrary Code Execution)가 불가능했습니다.
그러다 문뜩 생각이 났습니다: "Ren'Py 게임들이 세이브로 Pickle을 사용하지 않나?"
Python에는 Pickle이라는 직렬화(serialization) 방식이 존재합니다. 이는 Python의 (왠만한) 모든 object를 직렬화할 수 있는 특징이 있습니다.
하지만 만약 직렬화하지 못하는 object가 class의 property로 존재하는데, 이 class를 직렬화하고 싶다면 어떻게 해야할까요? Python은 이를 위해 __reduce__라는 method를 지원합니다. 이는 class가 직렬화/역직렬화 될 때 어떤 데이터를 사용하여 class를 다시 구성해야할지 명시해줍니다.
사용법은 다음과 같습니다:
class A:
def __init__(self, a):
self.a = a
self.b = "b"
def __reduce__(self):
return self.__class__, (self.a,)
# serialize
a = A()
b = pickle.dumps(a)
그런데, 만약 __reduce__에 다른 Python 함수가 있으면 어떨까요? 예를 들어, exec 같은거라면 말이죠?
class Exploit:
def __reduce__(self):
return exec, ("print('Hello, World!'),)
exploit = Exploit()
a = pickle.dumps(exploit)
pickle.loads(a) # Hello, World!
...네, Pickle이 로딩될 때 문자열에 담긴 코드를 실행해버립니다... 이것이 Python 공식 Pickle 문서에서 Pickle이 안전하지 않다고 하는 이유겠죠.
이제 Ren'Py가 Pickle을 사용한다는 사실과, Pickle로 코드를 실행할 수 있다는 사실을 알았으니, 직접 실행해볼 시간입니다!
Ren'Py의 세이브는 1-1-LT1.save 같은 파일 이름을 가지고 있습니다. 멋져보이지만, 사실 그냥 Zip 파일이며, 확장자만 .save로 변경된겁니다.
이를 흔한 Zip 프로그램으로 풀어보면, 여러 파일들이 나오지만 우리가 관심있는 파일은 log 파일입니다. 이 파일이 Ren'Py의 Pickle을 담고있는 파일이죠.
이제 이 파일을 제가 만든 코드가 담긴 Pickle로 바꿔치기 하고, 다시 압축을 해서 넣으면..?

코드 실행이 됩니다! 너무 멋지네요!
이제 코드 실행이 되는걸 알았으니, 다음 단계는 무엇일까요? 당연히 메모리 조작이죠! Google에서 잠시 조사한 결과 unsafe-python 이라는 저장소가 눈에 들어왔습니다. 이 저장소는 Python에서 직접적인 메모리 접근을 가능하게 합니다.
해당 취약점은 LOAD_CONST opcode가 아무 범위 검사를 하지 않는다는 점을 이용하여 가짜 PyObject를 만들 수 있고, 이를 이용하여 0부터 사실상 64비트 주소 끝자락까지의 bytearray 객체를 만들어 직접적인 메모리 접근을 합니다.
이제 우리는 메모리 주소만 알면 언제든지 해당 메모리를 수정할 수 있습니다! 덤으로, Python의 사랑스러운 slicing 문법은 이를 더 편하게 만듭니다.
# Assume we got raw memory bytearray
mem = getmem()
mem[0x18000000:0x18000008] = b'\0' * 8
이제 마음대로 메모리 조작도 가능하고, PyObject 생성도 가능하니, 저만의 프로그램을 메모리에 저장한 후 Python의 function 객체를 만들어 제 코드를 향하게 하면 끝입니다!
...가 된다면 정말 쉬울건데 말이죠...
메모리 영역에는 특정 권한이 부여되어 있습니다. Read, Write, eXecute 권한이 분리되어 있는데, 이름에서 알 수 있듯 execute 권한 없이는 해당 메모리 영역을 코드로서 실행할 수 없습니다.
문제되는 부분은, 보통 우리가 작성하는 영역은 read와 write만 있고, execute 권한이 없습니다! 만약 execute 권한이 없는 영역을 실행하려 한다면, CPU에서 권한 부족 오류를 발생시킬 것이고, 이는 segfault로 이어질 것입니다.
그럼 현재 부족한 메모리 권한으로 원하는 명령을 어떻게 실행할 수 있을까요? 답은 ROP에 있습니다.
ROP, Return Oriented Programming은 말 그대로 asm의 ret 명령을 기준으로 작동하는 코드를 말합니다.
ret 명령의 특징은 현재 CPU가 가리키는 stack pointer(x86_64 기준 RSP register) 에 적힌 주소 값을 instruction pointer(x86_64 기준 RIP register)에 적고 stack pointer를 움직인다는 것입니다. 그럼 ret를 실행하는 때에 stack pointer를 (실행 가능한 메모리 영역에 있는) 저희가 원하는 코드로 향하게 하면 어떨까요?
이를 하기 위해선, ret로 끝나면서 원하는 명령을 실행하는 메모리 주소를 미리 찾아놓아야 할 것입니다. 이를 우리는 gadget이라고 부릅니다.
Stack pointer에서도 권한 오류가 발생할 수 있지 않을까 하실 수도 있지만, stack pointer가 가리키는 메모리 영역은 read, write 권한만으로 충분하기 때문에 괜찮습니다.
이 사실을 알게된다면 이제 이런 구상을 할 수 있습니다:
ret가 호출되며 원하는 명령이 실행된다!...많은 것들이 축약되있지만 대략적으로 이런 구상이 가능하죠. 이제 이를 이용해서 취약점을 만들 시간입니다!
앞서 말했듯 ROP를 하기 위해선 적절한 gadget을 찾는 것이 중요합니다. 저는 이를 위해 ROPgadget 툴을 이용했습니다. 원하는 executable과 함께 툴을 실행하면 ret로 끝나는 모든 asm 명령들을 메모리 주소 값과 함께 찾아줍니다! (가상 메모리 주소까지 고려해서요!)
다음엔 두 가지 방법이 있습니다:
dict 만들기Xbox One/Series에선 1번 방법을 사용할 수 있었지만, PS에선 후에 언급할 내용 때문에 2번 방법을 쓸 수 밖에 없었습니다.
이제 stack pointer를 만들어둔 Python list 주소로 옮기면 되는데, 어떻게 옮길까요? 저희가 원하는건 (x86_64 기준) mov rsp, ???와 ret입니다. 여기서 저 ???부분이 중요한데, 왜냐하면 Python function 호출이 어떻게 이루어지는지 알아야하며, 실행되는 CPU와 OS의 함수 호출 convention도 알아야하기 때문입니다.
여기서 함수 호출 convention이란 함수를 호출할 때 몇번째 argument가 어떤 register에 들어가는지를 뜻합니다.
Linux/UNIX 기반 OS의 x86_64 함수 호출 convention 순서는 다음과 같습니다: RDI, RSI, RDX, RCX, R8, R9
그리고 Python function 호출은 다음과 같이 이루어집니다:
function_call(PyObject* func, PyObject *arg, PyObject *kw)
따라서 만약 mov rsp, [rdi + 0x30]; ret 라는 명령을 찾았다면, 직접 만드는 Python function 객체 안 0x30 정도 되는 곳에 원하는 stack 주소를 넣어야할 것이고, mov rsp, [rsi + 0x10]; ret 라는 명령을 찾았다면, 직접 tuple 객체를 만든 후 0x10 정도 되는 곳에 stack 주소를 저장, 만든 function 객체를 부를 때 my_func(*custom_tuple)과 같이 호출해야 할 것입니다.
ROP에서 가장 중요한걸 깜빡했네요. 직접 만든 stack을 실행하고 나선 다시 원래 stack으로 돌아와야겠죠.
저같은 경우는 push rbp; mov rbp, rsp; xor esi, esi; call [rdi + 0x130] 명령을 이용하여 rbp에 rsp를 저장한 후 원하는 명령을 실행하도록 만들었습니다(rdi + 0x130에는 stack pointer를 변경하는 명령이 있습니다).
이 다음 원하는 명령 실행 후 mov rsp, rbp; pop rbp; ret 명령을 통해 다시 원래 stack pointer로 돌아옵니다.
이렇게만 하면 될까요..? 아닙니다. 이렇게 하면 Python이 함수의 return value(x86_64 기준 RAX register)를 참조하려다 잘못된 값을 참조하여 오류가 발생합니다. 그럼 어떻게 해야할까요?
정답은 None 객체를 반환해주는 것입니다. 이렇게 하면 Python에게 정상적인 값을 반환하게 되며, 오류가 발생하지 않게 됩니다. (그리고 네, None도 하나의 객체입니다.)
주의할 점은 None 객체의 refcount를 1만큼 올려주어야 합니다. 그렇지 않으면 Python이 return value의 refcount를 줄이려 할 때, underflow 문제가 발생할 수 있습니다.
이것까지 마치면, 진짜로 저희가 원하는 명령을 실행할 수 있게 됩니다!
Xbox One Research 팀의 도움을 받아 Ren'Py 게임 파일을 받은 뒤 gadget을 찾고, 돌려봤습니다!

Xbox에서 먼저 테스트한 결과 정상적으로 socket을 여는데 성공했으며, 해당 socket으로 다른 Python script를 실행하는 데 성공했습니다! (참고로 해당 게임은 Python의 socket 모듈을 지원하지 않습니다.)
Xbox 같은 경우 Windows와 거의 비슷한 함수를 사용할 수 있어서 편하게 진행할 수 있었습니다.
그렇게 Xbox에서 테스팅 후 몇달 뒤, PS 해킹에도 관심이 생겨 알아보게 되었습니다.
그렇게 알게된 Xbox와의 차이점은...
...Gadget 찾기에서 2번 방법을 사용한 이유가 XOM(eXecutable Only Memory) 때문입니다. 사실 PS4에선 1번 방법을 사용할 수 있지만, 저는 PS5 게임도 지원하고 싶었습니다.
PS5 Research & Development Discord 서버의 도움을 받아 게임 파일을 받았고, 똑같이 gadget을 찾아 작성하였습니다.
위에 적힌 제약들이 있어도, 기본 작동은 비슷하기 때문에 큰 문제 없이 만들 수 있었고, 그렇게 테스트를 한 결과..!

성공적으로 작동되었고, yarpe가 탄생할 수 있었습니다.
여기까지 오는데 (중간에 쉬었지만) 거의 1년이라는 시간이 걸렸습니다. 만들면서 힘든 것 보단 재밌다는 느낌을 더 많이 받았네요. (만드는 동안은 잠자는 시간마저 줄여가며 만들었던 것 같습니다.)
마무리하기 전에, 저에게 도움이 되었던 분들을 소개하며 끝내고자 합니다.
긴 글 읽어주셔서 감사합니다.
I took a look at the changes coming with Python 3.15 – and I can't wait to put them to productive use. I've already updated our tutorials:
• utf-8 as the default encoding: https://python-basics-tutorial.readthedocs.io/en/latest/types/strings/encodings.html#unicode-and-utf-8
• Performance measurements: https://www.python4data.science/en/latest/performance/index.html#performance-measurements
• Tachyon: https://www.python4data.science/en/latest/performance/tachyon.html
• Python JIT compiler: https://www.python4data.science/en/latest/performance/index.html#python-jit-compiler
#Python

Unicode and character encodings
Special characters and escape sequences:\n stands for the newline character and\t for the tab character. Character sequences that begin with a backslash and are used to represent other characters a...
python-basics-tutorial.readthedocs.io · Python Basics
Link author:
Python for Data Science@Python4DataScience@mastodon.social
Censor, a new document redaction tool, is there!
It allows to draw black rectangles on PDF documents and to permanently remove the text and images below. Find it on
@Codeberg: https://codeberg.org/censor/Censor, get it from
@flathub: https://flathub.org/apps/page.codeberg.censor.Censor, or translate it on Codeberg Translate: https://translate.codeberg.org/engage/censor!
It is a free and open-source graphical user interface (GUI) for #Linux and the #GNOME desktop, and uses the #MuPDF library with its #python bindings from the #PyMuPDF module.
In which the author dives very deep (far deeper than called for) into using Hypothesis to generate data for #Python tests:
https://nedbatchelder.com/blog/202512/generating_data_shapes_with_hypothesis.html
PyBeach, a PSF Fiscal Sponsoree, is a one-day, community-driven event in Los Angeles that brings together #Python professionals, enthusiasts, and students for talks, sprints, and networking. Your donation helps support #PythonForEveryone by aiding future events!
https://psfmember.org/civicrm/contribute/transact?reset=1&id=28
Hello from the #API at time : `Mon Apr 28 17:54:45 2025`.
The project used is **#Masthon** a simple #python package whitch links to #Mastodon coded by an #french student !
Let's check my #code on #gitlab -> https://gitlab.com/Gator3000/masthon.git. It's #opensource !
Talk to me about my project at `
@gator3000Masthon News` or on discord `_gator3000`
This is an automatic message posted every times I test my code. Tell me if it spam :)
🎉 #Masthon 0.1.1 alpha is now up !
Masthon is a package that links your programs to the mastodon #API
The version 0.1.1 alpha is published on #gitlab : Come on and review, see my #code at https://gitlab.com/Gator3000/masthon/-/releases.
You can install the package with #pip :
```
pip install git+https://gitlab.com/Gator3000/masthon.git
```
The #documentation will be available tomorrow when the beta will be published.
If you want information or to #contribute tell me on this account.
🎉 #Masthon 0.1.1 BETA is finally released !
Masthon is a package that links your #python programs to the #mastodon #API
This version is published on #gitlab : Come on and review, see my #code at https://gitlab.com/Gator3000/masthon/-/releases.
You can install the package with #pip :
```
pip install git+https://gitlab.com/Gator3000/masthon.git
```
The #documentation is available ! (Ask me if you don't understand, I can make English errors because I'm french.)
If you want information or to #contribute make me know !
🎉 #Masthon v0.2 BETA is released now !
Masthon is a package that links your #python programs to the #mastodon #API
All #code is #opensource and published on gitlab at https://gitlab.com/Gator3000/masthon/.
You can install it with #pip
`pip install git+https://gitlab.com/Gator3000/masthon.git`
#documentation is available at https://Gator3000.gitlab.io/masthon
Let me know if you want to contribute !
What's New in Python 3.15
Link: https://docs.python.org/3.15/whatsnew/3.15.html
Discussion: https://news.ycombinator.com/item?id=46304630
After crunching over 100 contributions yesterday, Django HealthCheck is back under my maintainership. 🎷
Thank you
@frankFrank Wiles and everyone over at REVSYS for your care, unrivaled community support, and for passing the torch. 💚
https://github.com/codingjoe/django-health-check
#Django #Python #Docker
Just released! 🚀
🐍 Python 3.15 alpha 3!
https://discuss.python.org/t/python-3-15-0-alpha-3/105325?u=hugovk
🔬 PEP 799: A new high-frequency statistical sampling profiler and dedicated profiling package
💬 PEP 686: Python now uses UTF-8 as the default encoding
🌊 PEP 782: A new PyBytesWriter C API to create a Python bytes object
🎨 Colour code snippets in argparse help: https://bsky.app/profile/savannah.dev/post/3m7svdqdeqs2x
⚠️ Better error messages
#Python #Python315 #CPython #release #PEP799 #PEP686 #PEP782 #argparse
Just released! 🚀
🤖 Humanize 4.15.0
This does stuff like turning a number into a fuzzy human-readable duration ("3 minutes ago")
https://github.com/python-humanize/humanize/releases/tag/4.15.0
* Add locale support for decimal separator in `intword`
* Add support for Python 3.15
* `naturaldelta`: round the value to nearest unit that makes sense
* Fix plural form for `intword` and improve performance
* Replace `Exception` with more specific `FileNotFoundError`
* Replace pre-commit with prek
Moved to a new instance, so time for a #RefreshedIntro
My name is Vince, I live in #Colchester in the #uk
I love to talk and play with all sorts of #Technology including but not limited to #RaspberryPi #Servers, #Dockers and much more.
I watch #StarTrek on repeat and #Stargate.
I like to tinker with code in #Python mainly.
For a day job from 1st March 2024 I am now the Customer Support Manager for #CivicaUK in their Local Government Software department.
"TL;DM (too long; didn't monitor) is a fast, extensible progress bar for Python, forked from tqdm. This fork was created to provide continued maintenance and development as the original tqdm project has become unmaintained."
Do you folks know any #Python meetups that would be happy to host a remote talk?
I have a couple of new talk ideas that I'd love to get some feedback on!
I'm attending the Rust Summit here at EuroPython 2025. 🇪🇺
A lot of interesting ideas and suggestions of interactions between Python 🐍 and Rust 🦀
https://ep2025.europython.eu/session/rust-summit
#EuroPython #EuroPython2025 #Python #Rust
CC
@cheukting_hoCheuk Ting Ho (stand with 🇺🇦)
@juJulian Hofer
@europython
@cheukting_hoCheuk Ting Ho (stand with 🇺🇦)
@juJulian Hofer
@europython
After the coffee break, the Rust summit continued with two interesting talks by Kushal Das and Meggie Moss 😀
I'm attending the Rust Summit here at EuroPython 2025. 🇪🇺
A lot of interesting ideas and suggestions of interactions between Python 🐍 and Rust 🦀
https://ep2025.europython.eu/session/rust-summit
#EuroPython #EuroPython2025 #Python #Rust
CC
@cheukting_hoCheuk Ting Ho (stand with 🇺🇦)
@juJulian Hofer
@europython
Dew Drop Weekly Newsletter #462 - Week Ending December 19, 2025
#dewdrop #newsletter #javascript #aspnetcore #xaml #dotnet #csharp #ai #mcp #devops #agile #IoT #appdev #podcasts #python #sqlserver #data #m365 #powershell #devtools #dewdrop
When writing asserts in tests, do you put the actual first or the expected?
The convention seems to be: actual first. But, annoyingly, I need to rearrange them to check if an expected is _in_ an actual which I tend to do a fair amount.
Maybe that's a testing code smell. Or maybe I'm just overthinking this. 😅
Nearing my end of day 3 of the #7dfps #gamejam. Got the core gameplay mechanics going. The weapon has two chambers, load one of two colors in each, only hurtful to the same colored enemy. I had a similar #mechanics in an older game of mine but it works better here.
Started experimenting with gl lines for #explosions. Its getting to that point where I'm playing the game more than I'm coding it, which is exactly where I want to be.
📅 **Jeff’s Friday Office Hours** are back this week.
🗓 **Friday, December 19, 2025**
⏰ **2:30 PM Central (US & Canada)**
🔗 Time zone friendly link: https://time.is/0230PM_19_December_2025_in_CT?Jeff%27s_Office_Hours
Open Zoom office hours to hang out, work on projects, chat open source, or just enjoy some company to wrap up the week. Holiday vibes encouraged 🎄☕
Everyone welcome. No pitches, no bots, just humans.
🚀 Space Reviewers 👾 Episode 8 is streaming now! Follow along at:
💼 [Jobs] Founding Full-Stack Senior Engineer (UK ONLY) - Fully Remote
https://djangojobboard.com/596/founding-full-stack-senior-engineer-uk-only-fully-remote-mydatavalue/
Founding Full-Stack Senior Engineer (UK ONLY) - Fully Remote at MyDataValue
Django Job Board - The premier destination for Python and Django job opportunities. Discover your next career move in the Django community today!
djangojobboard.com · Django Job Board
Link author:
Django News@djangonews@mastodon.social
Does anyone knows good way to find #gig opportunity for software dev? I'd like to avoid pitfalls of well known platforms. I can do:
- #Rust CLI/Dev tools, APIs
- #C code (#FreeRTOS, #Zephyr, #Linux including some #drivers or #v4l2)
- #Cpp C++ code
- #Bash or #Python scripts, tools
- #CI workflows (GitHub, GitLab)
- #Yocto layers
- #Debian packaging + #DKMS
Anyone has experience in getting hands on small projects?
I submitted my PyCon US 2026 talk proposal this morning. Not quite as early as I had hoped, but one day ahead of the deadline is better than the last day. :)
If you're considering a proposal, please make the time today or tomorrow to submit it! Talking at PyCon is always a great experience; you really can't find a more supportive and welcoming audience.
Ever wanted to play #Python Community Bingo? Now’s your chance!
Thanks to Rodrigo Silva Ferreira for creating this game supporting the PSF and #PythonForEveryone 🙏
Play along, celebrate the community—and if you can, donate to the PSF to help keep Python accessible to all 💙
https://python-bingo.netlify.app/
Exciting news: The PSF's Diversity & Inclusion Workgroup is ready to accept new members! If you're passionate about making an impact and shaping a more inclusive #Python community, fill out this short form -> https://forms.gle/Fr7zmwLuZTGf43ha7 Applications close 31 Dec 2025, 23:00 GMT.
EDIT: I am wrong, `ty` can catch this, but the associated rule is considered less-than-reliable by the maintainers. See replies!
gave `ty check` a try out of curiosity to see if it could do a better job with my biggest `ruff check` bug-bear: catching undefined names caused by uncareful branching logic ("happy path" programming)
it does catch the flaw with trivial predicates (`if False:`) but it appears that programs with this kind of branching flaw will sail through as false positives, the same as `ruff check`
```python
import random
y = -1
if random.random() < 0.5:
x = 42
# else x undefined
print(x, y)
```
This flaw in `ruff` was reported in 2024, and while there were a few false-starts on trying to resolve it, it remains unresolved, in part because the control flow analysis necessary was being worked on for what became `ty` and I guess cannot be shared between the two tools.
https://github.com/astral-sh/ruff/issues/13347
This isn't the only thing that's kept me away from *relying* on `ruff` (or now, `ty`), but I consider it a useful canary issue because it comes up a LOT and the tools I am used to using are able to handle it. If Astral's tools catch up to that level of functionality, the speed-up is very attractive, but I'm not willing to sacrifice the one for the other.
Show HN: High-Performance Wavelet Matrix for Python, Implemented in Rust
Link: https://pypi.org/project/wavelet-matrix/
Discussion: https://news.ycombinator.com/item?id=46304413
So I heard you like #SBOM, so I put SBOM into the #Python wheels in #Fedora RPMs, so when you unwheel the wheels, you get the SBOM.
If your Python virtual environment was created on Fedora, your #security scanner can recognize #CVE fixes in patched pip (or setuptolos) within.
The question, however, is: What to do with this now :D
https://developers.redhat.com/articles/2025/12/15/how-reduce-false-positives-security-scans
Anyway, security scanner people, please reach out.
📐 I just used
@tonybaloneyAnthony Shaw
's sweet-as richbench project for the first time, to validate a small optimization. Will definitely be using it again in the future!
🕰️ time-machine 3.2.0 is out!
This is my package for mocking the current time in Python tests.
The new "naive mode" controls how time-machine interprets naive datetimes. Change it to increase compatibility with freezegun when migrating test suites, or to ban naive datetimes entirely so that your tests run consistently in different timezones.
https://time-machine.readthedocs.io/en/latest/changelog.html
I am … displeased https://github.com/python-lsp/python-lsp-server/discussions/525
After several hours of trying to get #Emacs and #Python to play nicely together with various LSPs,
- `ty` doesn't work with mypy (obviously) which means it can't understand zope.interface or any other thing which requires a mypy plugin, so it's worse than useless, as it shows tons of spurious type-checking errors on various projects
- `rope` is orders of magnitude slower than jedi or autoimport, and (see above bug) functions incorrectly
RE: https://fosstodon.org/@talkpython/115735672147779460
🎧 We are live and talking about all-the-web-frameworks!
We are live on YouTube in 20 minutes. Join us and be part of the show with
@mkennedyMichael Kennedy and David Lord, Jeff Triplett, Carlton Gibson, Cody Fincher, Philip Jones, and Sebastián Ramírez. #python #podcast
Topic: Web Frameworks in Prod by Their Creators
Here's our holiday gift to the early birds in our community. We have set the dates for Wagtail Space 2026! Mark your calendars for 18-20 November!
> shared technical or governance approaches
We do need to start collecting these resources. Python.org has one:
https://devguide.python.org/getting-started/generative-ai/
It's definitely a more cautious approach, because it doesn't clearly spell out that AI-generated code is not allowed. I would guess that people are scratching their heads on how that would even be enforced.
Thanks for the link
@benjaomingBenjamin Balder Bach ,I didn’t know that Python.org page and it’s very useful. Django has a similar section for AI-assisted security reports:
https://docs.djangoproject.com/en/dev/internals/security/#ai-assisted-reports
What I find interesting is how GNOME, Python, and Django converge on the same idea: AI can be a tool, but responsibility, disclosure, and reviewability stay with the contributor, otherwise the cost shifts to maintainers.
Maybe the next step is finding a shared place to collect and compare these approaches.
I ported JustHTML from Python to JavaScript with Codex CLI and GPT-5.2 in hours
Link: https://simonwillison.net/2025/Dec/15/porting-justhtml/
Discussion: https://news.ycombinator.com/item?id=46295771
Ty: A fast Python type checker and LSP
Link: https://astral.sh/blog/ty
Discussion: https://news.ycombinator.com/item?id=46294289
ty: An extremely fast Python type checker and language server via
@jpariseJon Parise https://lobste.rs/s/zjq0nl #python #release
https://astral.sh/blog/ty
Is one of your 2026 themes to contribute to open-source more? ✨
If so, you're in luck! Djangonaut Space hosts a page that contains over 50 opportunities for people to contribute to Django 🌐
Read more here: https://djangonaut.space/comms/finding-opportunities-to-contribute-to-django/