Skip to content

Enums

longwei exposes two public enum types used as parameters to API methods.

Import

Both enums are available from the top-level package or from longwei.enums directly:

from longwei import Visibility, SearchType
# or
from longwei.enums import Visibility, SearchType

Visibility

Controls who can see a posted status.

Value String Description
Visibility.PUBLIC "public" Visible to everyone; appears on public timelines
Visibility.UNLISTED "unlisted" Visible to everyone but not on public timelines
Visibility.PRIVATE "private" Visible to followers only
Visibility.DIRECT "direct" Direct message — visible only to mentioned accounts

Usage

Pass a Visibility member as the visibility parameter of post_status():

from longwei import APClient, Visibility
import httpx

async with httpx.AsyncClient() as client:
    ap = await APClient.create(
        instance="mastodon.social",
        client=client,
        access_token="your_token",
    )

    # Public post (default)
    await ap.post_status("Hello, fediverse!", visibility=Visibility.PUBLIC)

    # Followers only
    await ap.post_status("Private thought", visibility=Visibility.PRIVATE)

    # Direct message to a specific user
    await ap.post_status(
        "@user@example.com Hey, only you can see this",
        visibility=Visibility.DIRECT,
    )

String values

Visibility is a str subclass, so comparing or passing the string value directly also works:

assert Visibility.PUBLIC == "public"   # True
assert Visibility.PUBLIC.value == "public"

# The Status model stores visibility as a plain string
status = await ap.post_status("test")
if status.visibility == "public":
    print("Public post")

SearchType

Constrains the type of results returned by search().

Value String Description
SearchType.ACCOUNTS "accounts" Search for user accounts
SearchType.HASHTAGS "hashtags" Search for hashtags
SearchType.STATUSES "statuses" Search for statuses/posts

Usage

from longwei import APClient, SearchType
import httpx

async with httpx.AsyncClient() as client:
    ap = await APClient.create(
        instance="mastodon.social",
        client=client,
        access_token="your_token",
    )

    # Find accounts matching a query
    results = await ap.search(query="longwei", query_type=SearchType.ACCOUNTS)
    for account in results.accounts:
        print(account.acct)

    # Find hashtags
    results = await ap.search(query="python", query_type=SearchType.HASHTAGS)
    for tag in results.hashtags:
        print(tag.name)

    # Find statuses
    results = await ap.search(query="ActivityPub", query_type=SearchType.STATUSES)
    for status in results.statuses:
        print(status.content[:80])