(self, content, **blob_meta_args)
Put a blob in persistent storage

        :param content: A file-like object in binary read mode.
        :param **blob_meta_args: A single `"meta"` argument (`BlobMeta`
        object) or arguments used to construct a `BlobMeta` object:

        - domain - (required, text) domain name.
        - parent_id - (required, text) parent identifier, used for
        sharding.
        - type_code - (required, int) blob type code. See
        `corehq.blobs.CODES`.
        - key - (optional, text) globally unique blob identifier. A
        new key will be generated with `uuid4().hex` if missing or
        `None`. This is the key used to store the blob in the external
        blob store.
        - name - (optional, text) blob name.
        - content_length - (optional, int) content length. Will be
        calculated from the given content if not given.
        - content_type - (optional, text) content type.
        - timeout - minimum number of minutes the object will live in
        the blobdb. `None` means forever. There are no guarantees on the
        maximum time it may live in blob storage.

        NOTE: it is important to delete any blobs saved with this method
        if it is called within a database transaction that ends up being
        rolled back. Otherwise those blobs will be orphaned, meaning
        they will be stored in the blob db backend indefinitely, but
        their metadata will be lost.

        :returns: A `BlobMeta` object. The returned object has a
        `key` attribute that may be used to get or delete the blob.
Put a blob in persistent storage
Put a blob in persistent storage
def put(self, content, **blob_meta_args):
        """Put a blob in persistent storage

        :param content: A file-like object in binary read mode.
        :param **blob_meta_args: A single `"meta"` argument (`BlobMeta`
        object) or arguments used to construct a `BlobMeta` object:

        - domain - (required, text) domain name.
        - parent_id - (required, text) parent identifier, used for
        sharding.
        - type_code - (required, int) blob type code. See
        `corehq.blobs.CODES`.
        - key - (optional, text) globally unique blob identifier. A
        new key will be generated with `uuid4().hex` if missing or
        `None`. This is the key used to store the blob in the external
        blob store.
        - name - (optional, text) blob name.
        - content_length - (optional, int) content length. Will be
        calculated from the given content if not given.
        - content_type - (optional, text) content type.
        - timeout - minimum number of minutes the object will live in
        the blobdb. `None` means forever. There are no guarantees on the
        maximum time it may live in blob storage.

        NOTE: it is important to delete any blobs saved with this method
        if it is called within a database transaction that ends up being
        rolled back. Otherwise those blobs will be orphaned, meaning
        they will be stored in the blob db backend indefinitely, but
        their metadata will be lost.

        :returns: A `BlobMeta` object. The returned object has a
        `key` attribute that may be used to get or delete the blob.
        """
        raise NotImplementedError
def put ( self , content , * * blob_meta_args ) : raise NotImplementedError