Releases: MarshalX/atproto
v0.0.38
What's Changed
- Add lexicons updating automation using GitHub Actions by @MarshalX in #248
- Update lexicons fetched from 8994d36 committed 2024-01-25T20:16:30Z by @MarshalX in #249
- Update code snippet in README by @MarshalX in #245
- Fix input data mutation in DotDict by @MarshalX in #246
- Fix links to documentation by @MarshalX in #244
Full Changelog: v0.0.37...v0.0.38
v0.0.37
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:
- Implement Service JWT by @MarshalX in #225
- Implement AtprotoData and DID key formatting and parsing by @MarshalX in #227
- Implement signature verification by @MarshalX in #232
- Add tests for auth flow in custom feeds by @MarshalX in #236
- Describe JWT payload according to RFC 7519 by @MarshalX in #235
- Update lexicons fetched from 51fcba7 committed 2024-01-09T23:29:07Z by @MarshalX in #238
- Fix AtUri hostname parsing with digits by @MarshalX in #229
Docs:
- Enable pydocstyle rules by @MarshalX in #226
- Cleanup docs of models by disabling aliases, schemes, validators, and list of fields by @MarshalX in #231
- Improve documentation by @MarshalX in #234
- Bump jinja2 from 3.1.2 to 3.1.3 by @dependabot in #230
Full Changelog: v0.0.36...v0.0.37
v0.0.36
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
βBreaking changes
SDK was split into many packages. This affects imports in your codebase. Read more
What's Changed
- New SDK structure by @MarshalX in #214 and #216
- Fix decoding of CAR root by @MarshalX in #213
- Fix parsing of BlobRef in CBOR by @MarshalX in #215
- Update lexicons fetched from 905743d committed 2023-12-20T14:49:21Z by @MarshalX in #217
Full Changelog: v0.0.34...v0.0.35
v0.0.34
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 ofrecord_key
andprofile_identify
- New methods:
get_post
get_posts
get_post_thread
get_likes
get_reposted_by
get_timeline
get_author_feed
unrepost
AKAdelete_report
follow
unfollow
AKAdelete_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
- Removed exceptions:
Full Changelog: v0.0.33...v0.0.34
v0.0.33
v0.0.32
What's Changed
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/'))
- Lock dependencies by major version only by @MarshalX in #195
- Fix parsing of lexicon procedure parameters by @MarshalX in #196
- Update lexicons fetched from ffe39aa committed 2023-12-08T21:32:06Z by @MarshalX in #197
- Update code snippets in README by @MarshalX in #198
- Update changelog for v0.0.31 by @MarshalX in #191
Full Changelog: v0.0.31...v0.0.32
v0.0.31
v0.0.30
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
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