Skip to content

Releases: MarshalX/atproto

v0.0.38

26 Jan 22:10
73af45d
Compare
Choose a tag to compare

What's Changed

Full Changelog: v0.0.37...v0.0.38

v0.0.37

12 Jan 20:16
8fbca91
Compare
Choose a tag to compare

What's Changed

πŸŽ‰ Welcome in 2024! User-specific custom feeds are here! This is a massive update with a lot of new implementations including Service JWT, signature validation, DID Keys, AtProtoData, and more! Huge docs restructuring is here too: https://atproto.blue

Code snippet: Authorized Custom Feed (user-specific results)

SDK:

Docs:

Full Changelog: v0.0.36...v0.0.37

v0.0.36

23 Dec 15:35
2b617c3
Compare
Choose a tag to compare

What's Changed

The AT Protocol Identity package has been implemented! It allows the resolution of DIDs and Handles using various techniques like DNS, HTTP, and PLC directory. Abstract and in-memory caching has been brought too. And as always, it provides both sync and async interfaces. Check the docs below!

🌐 Identity resolvers for DID and Handle

Code snippet:

from atproto import IdResolver  # for async use AsyncIdResolver

resolver = IdResolver()
did = resolver.handle.resolve('test.marshal.dev')
did_doc = resolver.did.resolve(did)

print(did)
print(did_doc)

Code snippet with cache:

from atproto import DidInMemoryCache, IdResolver  # for async AsyncDidInMemoryCache and AsyncIdResolver

cache = DidInMemoryCache()
resolver = IdResolver(cache=cache)
did_doc = resolver.did.resolve('did:web:feed.atproto.blue')

# Now did_document is cached and could be retrieved without network request
did_doc = resolver.did.resolve('did:web:feed.atproto.blue')

# Clear cache
cache.clear()

# Now did_document is not cached and will be retrieved with network request
did_doc = resolver.did.resolve('did:web:feed.atproto.blue')

Full Changelog: v0.0.35...v0.0.36

v0.0.35

21 Dec 18:57
ba0a47d
Compare
Choose a tag to compare

❗Breaking changes

SDK was split into many packages. This affects imports in your codebase. Read more

What's Changed

Full Changelog: v0.0.34...v0.0.35

v0.0.34

17 Dec 16:48
0d7cd96
Compare
Choose a tag to compare

What's Changed

  • Make SDK more backward and forward-compatible with protocol by @MarshalX in #207
  • Add plenty of new high-level methods by @MarshalX in #208
    • Documentation
    • Breaking changes:
      • unlike now accepts AT URI instead of record_key and profile_identify
    • New methods:
      • get_post
      • get_posts
      • get_post_thread
      • get_likes
      • get_reposted_by
      • get_timeline
      • get_author_feed
      • unrepost AKA delete_report
      • follow
      • unfollow AKA delete_follow
      • get_follows
      • get_followers
      • get_profile
      • get_profiles
      • mute
      • unmute
      • resolve_handle
      • update_handle
      • upload_blob
  • Migrate lexicon parser from dacite to pydantic; enable ruff ANN by @MarshalX in #206
    • Removed exceptions:
      • UnknownPrimitiveTypeError
      • UnknownDefinitionTypeError
    • Renamed fields:
      • schema -> schema_
      • maxLength -> max_length
      • ... and all other camelCase names now in snake_case

Full Changelog: v0.0.33...v0.0.34

v0.0.33

13 Dec 09:39
4dc0695
Compare
Choose a tag to compare

What's Changed

  • Update lexicons fetched from 0c54951 committed 2023-12-12T21:37:06Z by @MarshalX in #202
  • Update changelog for v0.0.32 by @MarshalX in #199

Full Changelog: v0.0.32...v0.0.33

v0.0.32

11 Dec 13:41
2d1384e
Compare
Choose a tag to compare

What's Changed

  • Add text builder as helper for constructing rich text by @MarshalX in #194

Docs: https://atproto.blue/en/latest/text_builder.html

Create rich text using TexBuilder:

from atproto.utils import TextBuilder
text_builder = TextBuilder()
text_builder.tag('This is a rich message. ', 'atproto')
text_builder.text('I can mention ')
text_builder.mention('account', 'did:plc:kvwvcn5iqfooopmyzvb4qzba')
text_builder.text(' and add clickable ')
text_builder.link('link', 'https://atproto.blue/')

or

from atproto.utils import TextBuilder

text_builder = TextBuilder().text('Test msg using ').link('Python SDK', 'https://atproto.blue/')

and send it

from atproto import Client
from atproto.utils import TextBuilder

client = Client()
client.send_post(TextBuilder().link('Python SDK', 'https://atproto.blue/'))

Full Changelog: v0.0.31...v0.0.32

v0.0.31

02 Dec 22:39
6c2bbf7
Compare
Choose a tag to compare

What's Changed

  • Migrate firehose to new relay URI by @MarshalX in #190
  • Update lexicons fetched from 8d9b1f7 committed 2023-12-01T20:28:54Z by @MarshalX in #189
  • Update changelog for v0.0.30 by @MarshalX in #184

Full Changelog: v0.0.30...v0.0.31

v0.0.30

06 Nov 10:43
dacea8f
Compare
Choose a tag to compare

What's Changed

  • Add Python 3.12; migrate from black to ruff format by @MarshalX in #177
  • Async Firehose Client: block on make message handler call, add on error callback by @DXsmiley in #157
  • Downgrade sphinxext-opengraph to clean up the tree of dependencies (including vulnerable) by @MarshalX in #179
  • Update lexicons fetched from 46b108c committed 2023-10-26T22:29:51Z by @MarshalX in #178
  • Update lexicons fetched from 772736a committed 2023-11-02T20:16:26Z by @MarshalX in #182
  • Update changelog for v0.0.29 by @MarshalX in #173
  • Fix type hint of OnMessageCallback (Firehose client) by @MarshalX in #183
  • Fix dependency groups by @MarshalX in #180

Full Changelog: v0.0.29...v0.0.30

v0.0.29

28 Sep 12:58
31eea9a
Compare
Choose a tag to compare

What's Changed

  • Make codegen deterministic by @DXsmiley in #162
  • Add TypedDict for params and data arguments; add type hint for kwargs by @DXsmiley in #166
  • Update lexicons fetched from 41ee177 committed 2023-09-27T21:08:58Z by @MarshalX in #172
  • Update changelog for v0.0.28 by @MarshalX in #156

New Contributors

Full Changelog: v0.0.28...v0.0.29