mfw have to take a break from mastodon.py development because I got rate limited
(I have some tests that run against prod directly, both mastodon dot social and icosahedron dot website, and I do really want to run these before I push, since they validate my return value documentation matches reality)
Quote posts tentatively done. Still TODO: Asynchronous refresh, create docs for examples, packaging for JOSS
not me finding a bug wherein i tolower a base62 string before decoding while adding tests
I don't think there are many people other than me who have actually hit this error
anyways, it's 2am, and everything is implemented but I have some test failures. I will take care of them and do the release tomorrow.
test failures resolved, time to write some more docs, then we can push a new release, I think, and then JOSS archival
docs done, JOSS time.
well, first step in JOSS process is to tag a release. So I will wait until the tests pass on CI for all the python versions, and push a new release~

Mastodon.py version 2.2.0 is now out! 🦣🐍

There's a quite a few bug fixes (thank you to everyone who reported and/or fixed something), and support for 4.5 functionality: Quotes as well as async refreshing! Also quite a bit of additional testing, coverage is now above 90%.

As usual, please report any bugs you see, I should have the time to do quick fixes and maintenance release in the near future hopefully.

* Changelog: https://github.com/halcy/Mastodon.py/releases/tag/v2.2.0
* Docs: https://mastodonpy.readthedocs.io/en/v2.2.0/
* PyPi: https://pypi.org/project/Mastodon.py/

#mastodev #mastodon #python #mastodonpy

Release v2.2.0 · halcy/Mastodon.py

Bumped support level to 4.5.8 Switch from grapheme to graphemeu package, which is more maintained (thanks @CyberTailor for the report). Fix a crash due to unbound local in stream_public (Thanks @el...

GitHub
nb: there will be (hopefully) a maintenance release in the coming days that will be docs changes only, to point the docs to the upcoming JOSS publication so we can have a proper citation target and researcher guidance, finally.

@halcy Any chance the researcher guidance will be able to have things like "here are common basic ethical standards for sociological research that have been accepted in these sorts of areas in the past" or "all sampling will reflect and embed the network only as viewed from those sampling-points, no amount of sampling or cross-correlating can recreate or approximate an attempted 'global view' of the network", etc.?

Like I get it if not, but it'd be nice,

@gaditb https://joss.theoj.org/papers/10.21105/joss.08946 check the ethics statement and the paper it references :)
Mastodon.py: A Python library for the Mastodon API

Diener et al., (2026). Mastodon.py: A Python library for the Mastodon API. Journal of Open Source Software, 11(120), 8946, https://doi.org/10.21105/joss.08946

Journal of Open Source Software

@halcy Oh, nice!

Although, looking at it, I think I (disclaimer: no formal training in gornisht) feel like it's still missing the "know the fundamental limits of what gathering fediverse data even can possibly mean",
that I'm kinda poking at here [ https://icosahedron.website/@gaditb/109821408611600608 ] (and that I don't think I'm the most-informed person in the conversation).

In particular e.g., I can't be sure because I can't find the paper itself anywhere (none of the download links are working) but, I think the Hidayat et.al. (2025) paper is (benignly in this case) doing that sort of category failure,
in seeming in its abstract to do an analysis "revealing user sentiment polarity towards Linux on Mastodon as follows: 42% positive, 28% negative, and 30% neutral."

Gadfly (-booq-) (@[email protected])

This is a subtoot, but if you're one of the people I'm subtooting know that I'm more conciliatory and softer and less confident in one-on-one conversation, and I only RARELY bite. (And probably just, not, on this topic.)

Icosahedron

@halcy when the category of "users on Mastodon" both (a) is not actually an enumerable or sampleable set, while also (b) being an individual descriptor that can apply to individuals on a person-by-person basis (with per-individual meaning).

And like that's bad data practices stam, but I kinda also think that that particular way of doing bad statistics might be an ethical failure there in its own right?

@gaditb somewhat too late for the paper, but I can put a note in the docs at least