# Path: invenio_deposit/providers.py
# class DepositProvider(BaseProvider):
#     """Deposit identifier provider."""
# 
#     pid_type = 'depid'
#     """Type of persistent identifier."""
# 
#     pid_provider = None
#     """Provider name.
# 
#     The provider name is not recorded in the PID since the provider does not
#     provide any additional features besides creation of deposit ids.
#     """
# 
#     default_status = PIDStatus.REGISTERED
#     """Deposit IDs are by default registered immediately."""
# 
#     @classmethod
#     def create(cls, object_type=None, object_uuid=None, **kwargs):
#         """Create a new deposit identifier.
# 
#         :param object_type: The object type (Default: ``None``)
#         :param object_uuid: The object UUID (Default: ``None``)
#         :param kwargs: It contains the pid value.
#         """
#         assert 'pid_value' in kwargs
#         kwargs.setdefault('status', cls.default_status)
#         return super(DepositProvider, cls).create(
#             object_type=object_type, object_uuid=object_uuid, **kwargs)


import uuid
from .providers import DepositProvider



def deposit_minter(record_uuid, data):
    """Mint a deposit identifier.

    A PID with the following characteristics is created:

    .. code-block:: python

        {
            "object_type": "rec",
            "object_uuid": record_uuid,
            "pid_value": "<new-pid-value>",
            "pid_type": "depid",
        }

    The following deposit meta information are updated:

    .. code-block:: python

        deposit['_deposit'] = {
            "id": "<new-pid-value>",
            "status": "draft",
        }

    :param record_uuid: Record UUID.
    :param data: Record content.
    :returns: A :class:`invenio_pidstore.models.PersistentIdentifier` object.
    """

# Path: invenio_deposit/providers.py
# class DepositProvider(BaseProvider):
#     """Deposit identifier provider."""
# 
#     pid_type = 'depid'
#     """Type of persistent identifier."""
# 
#     pid_provider = None
#     """Provider name.
# 
#     The provider name is not recorded in the PID since the provider does not
#     provide any additional features besides creation of deposit ids.
#     """
# 
#     default_status = PIDStatus.REGISTERED
#     """Deposit IDs are by default registered immediately."""
# 
#     @classmethod
#     def create(cls, object_type=None, object_uuid=None, **kwargs):
#         """Create a new deposit identifier.
# 
#         :param object_type: The object type (Default: ``None``)
#         :param object_uuid: The object UUID (Default: ``None``)
#         :param kwargs: It contains the pid value.
#         """
#         assert 'pid_value' in kwargs
#         kwargs.setdefault('status', cls.default_status)
#         return super(DepositProvider, cls).create(
#             object_type=object_type, object_uuid=object_uuid, **kwargs)


# Path: invenio_deposit/minters.py
import uuid
from .providers import DepositProvider




def deposit_minter(record_uuid, data):
    """Mint a deposit identifier.

    A PID with the following characteristics is created:

    .. code-block:: python

        {
            "object_type": "rec",
            "object_uuid": record_uuid,
            "pid_value": "<new-pid-value>",
            "pid_type": "depid",
        }

    The following deposit meta information are updated:

    .. code-block:: python

        deposit['_deposit'] = {
            "id": "<new-pid-value>",
            "status": "draft",
        }

    :param record_uuid: Record UUID.
    :param data: Record content.
    :returns: A :class:`invenio_pidstore.models.PersistentIdentifier` object.
    """

    provider = DepositProvider.create(