utils¶
- atproto_client.models.utils.create_strong_ref(model: ModelBase) Main ¶
Create a strong ref from the model.
- Parameters:
model – Any model with cid and uri fields.
Example
>>> from atproto import Client >>> client = Client() >>> client.login('my-handle', 'my-password') >>> response = client.send_post(text='Hello World from Python!') >>> strong_ref = create_strong_ref(response)
- Returns:
Strong ref.
- Return type:
atproto.xrpc_client.models.com.atproto.repo.strong_ref.Main
- atproto_client.models.utils.get_model_as_dict(model: DotDict | BlobRef | ModelBase) Dict[str, Any] ¶
- atproto_client.models.utils.get_or_create(model_data: M | Dict[str, Any] | None, model: Type[M] | None = None, *, strict: bool = True) M | Record | Record | Record | Record | Record | Record | Record | Record | Record | Record | Record | Record | Record | Record | Record | DotDict | None ¶
Get model instance from raw data.
Note
The record could have additional fields and be completely custom. For example, third-party bsky clients add a “via” field to indicate that it was posted using a not official client. Such records are corresponding to the lexicon, but have additional fields. This is called “extended record”. Extended records will be decoded to proper models with extra, non-typehinted fields available only in runtime. Unknown record types will be decoded to
atproto.xrpc_client.models.base.DotDict
.Note
By default, the method raises an exception on custom models if you have passed the expected model. To fall back to a
atproto.xrpc_client.models.base.DotDict
type, disable strict mode using the argument.Note
Model auto-resolve works only with a Record type for now.
- Parameters:
model_data – Raw data.
model – Class of the model or any another type. If None, it will be resolved automatically.
strict – Disable fallback to dictionary (
atproto.xrpc_client.models.base.DotDict
) if it can’t be properly deserialized in provided model. Will raise the exception instead.
- Returns:
Instance of
model
orNone
oratproto.xrpc_client.models.dot_dict.DotDict
if strict is disabled.
- atproto_client.models.utils.is_json(json_data: str | bytes) bool ¶
- atproto_client.models.utils.is_record_type(model: ModelBase | DotDict, expected_type: str | module) bool ¶
Verify that the model is the expected Record type.
- Parameters:
model – Model to be verified.
expected_type – Excepted type. Could be NSID or Python Module.
Example
>>> from atproto import Client, models >>> from atproto_client.models import ids, is_record_type >>> client = Client() >>> client.login('username', 'pass') >>> record = client.com.atproto.repo.get_record(...) >>> # using NSID: >>> is_record_type(record.value, ids.AppBskyFeedPost) >>> # using Python module: >>> is_record_type(record.value, models.AppBskyFeedPost)
- Returns:
Is record or not.
- Return type:
bool
- atproto_client.models.utils.load_json(json_data: str | bytes, strict: bool = True) Dict[str, Any] | None ¶