OK usually the simplest thing for me has been to ignore any "client libraries" recommended in documentation and use the curl documentation to do raw http stuff in Python, but it seems like this isn't even http and atproto is complicated so following their Python documentation is probably the simplest way.
Looks very simple for my use case at least.