Upgrade bluesky silo to atproto 0.0.35 and unit tests.
M silorider/silos/bluesky.py +1 -1
@@ 10,7 10,7 @@ from .base import Silo
 from ..format import CardProps, UrlFlattener, URLMODE_ERASE
 
 import atproto
-import atproto.xrpc_client.models as atprotomodels
+from atproto import models as atprotomodels
 
 
 logger = logging.getLogger(__name__)

          
M tests/test_silos_bluesky.py +9 -4
@@ 1,5 1,6 @@ 
+import os.path
 import pytest
-import atproto.xrpc_client.models as atprotomodels
+from atproto import models as atprotomodels
 from .mockutil import mock_urllib
 
 

          
@@ 20,8 21,10 @@ def test_one_article(cli, feedutil, bsky
     ctx, _ = cli.run('process')
     assert ctx.cache.wasPosted('test', 'https://example.org/a-new-article')
     post = ctx.silos[0].client.posts[0]
-    assert post == ('A new article https://example.org/a-new-article',
-                    None, None)
+    assert post == (
+        'A new article https://example.org/a-new-article',
+        None,
+        [_make_link_facet('https://example.org/a-new-article', 14, 47)])
 
 
 def test_one_micropost(cli, feedutil, bskymock):

          
@@ 56,6 59,7 @@ def test_one_micropost_with_one_photo(cl
     with monkeypatch.context() as m:
         import silorider.silos.bluesky
         mock_urllib(m)
+        m.setattr(os.path, 'getsize', lambda path: 42)
         m.setattr(silorider.silos.bluesky.BlueskySilo, 'mediaCallback',
                   _patched_media_callback)
         ctx, _ = cli.run('process')

          
@@ 87,6 91,7 @@ def test_one_micropost_with_two_photos(c
     with monkeypatch.context() as m:
         import silorider.silos.bluesky
         mock_urllib(m)
+        m.setattr(os.path, 'getsize', lambda path: 42)
         m.setattr(silorider.silos.bluesky.BlueskySilo, 'mediaCallback',
                   _patched_media_callback)
         ctx, _ = cli.run('process')

          
@@ 162,7 167,7 @@ def _make_atproto_image(link, alt="", mi
     # an actual Image object.
     # Not sure why we need to use model_validate here -- the simple
     # constructor with keywords throws a validation error :(
-    blob_link = atprotomodels.blob_ref.BlobRefLink.model_validate({'$link': link})
+    blob_link = atprotomodels.blob_ref.IpldLink.model_validate({'$link': link})
     blob = atprotomodels.blob_ref.BlobRef(mime_type=mime_type, ref=blob_link, size=size)
     img = atprotomodels.AppBskyEmbedImages.Image(alt=alt, image=blob)
     if test_index is not None:

          
M tests/test_silos_mastodon.py +3 -0
@@ 1,3 1,4 @@ 
+import os.path
 import pytest
 from .mockutil import mock_urllib
 

          
@@ 55,6 56,7 @@ def test_one_micropost_with_one_photo(cl
     with monkeypatch.context() as m:
         import silorider.silos.mastodon
         mock_urllib(m)
+        m.setattr(os.path, 'getsize', lambda path: 42)
         m.setattr(silorider.silos.mastodon.MastodonSilo, 'mediaCallback',
                   _patched_media_callback)
         ctx, _ = cli.run('process')

          
@@ 83,6 85,7 @@ def test_one_micropost_with_two_photos(c
     with monkeypatch.context() as m:
         import silorider.silos.mastodon
         mock_urllib(m)
+        m.setattr(os.path, 'getsize', lambda path: 42)
         m.setattr(silorider.silos.mastodon.MastodonSilo, 'mediaCallback',
                   _patched_media_callback)
         ctx, _ = cli.run('process')

          
M tests/test_silos_twitter.py +3 -0
@@ 1,3 1,4 @@ 
+import os.path
 import pytest
 from .mockutil import mock_urllib
 

          
@@ 71,6 72,7 @@ def test_one_micropost_with_one_photo(cl
     with monkeypatch.context() as m:
         import silorider.silos.twitter
         mock_urllib(m)
+        m.setattr(os.path, 'getsize', lambda path: 42)
         m.setattr(silorider.silos.twitter.TwitterSilo, 'mediaCallback',
                   _patched_media_callback)
         ctx, _ = cli.run('process')

          
@@ 97,6 99,7 @@ def test_one_micropost_with_two_photos(c
     with monkeypatch.context() as m:
         import silorider.silos.twitter
         mock_urllib(m)
+        m.setattr(os.path, 'getsize', lambda path: 42)
         m.setattr(silorider.silos.twitter.TwitterSilo, 'mediaCallback',
                   _patched_media_callback)
         ctx, _ = cli.run('process')