:py:mod:`wfexs_backend.pushers`
===============================

.. py:module:: wfexs_backend.pushers

.. autodoc2-docstring:: wfexs_backend.pushers
   :allowtitles:

Submodules
----------

.. toctree::
   :titlesonly:
   :maxdepth: 1

   wfexs_backend.pushers.abstract_token_export
   wfexs_backend.pushers.abstract_contexted_export
   wfexs_backend.pushers.nextcloud_export
   wfexs_backend.pushers.dataverse_export
   wfexs_backend.pushers.zenodo_export
   wfexs_backend.pushers.cache_export
   wfexs_backend.pushers.b2share_export
   wfexs_backend.pushers.abstract_token_sandboxed_export

Package Contents
----------------

Classes
~~~~~~~

.. list-table::
   :class: autosummary longtable
   :align: left

   * - :py:obj:`DraftEntry <wfexs_backend.pushers.DraftEntry>`
     - .. autodoc2-docstring:: wfexs_backend.pushers.DraftEntry
          :summary:
   * - :py:obj:`AbstractExportPlugin <wfexs_backend.pushers.AbstractExportPlugin>`
     - .. autodoc2-docstring:: wfexs_backend.pushers.AbstractExportPlugin
          :summary:
   * - :py:obj:`AbstractDraftedExportPlugin <wfexs_backend.pushers.AbstractDraftedExportPlugin>`
     - .. autodoc2-docstring:: wfexs_backend.pushers.AbstractDraftedExportPlugin
          :summary:

API
~~~

.. py:exception:: ExportPluginException()
   :canonical: wfexs_backend.pushers.ExportPluginException

   Bases: :py:obj:`Exception`

.. py:class:: DraftEntry
   :canonical: wfexs_backend.pushers.DraftEntry

   Bases: :py:obj:`typing.NamedTuple`

   .. autodoc2-docstring:: wfexs_backend.pushers.DraftEntry

   .. py:attribute:: draft_id
      :canonical: wfexs_backend.pushers.DraftEntry.draft_id
      :type: str
      :value: None

      .. autodoc2-docstring:: wfexs_backend.pushers.DraftEntry.draft_id

   .. py:attribute:: pid
      :canonical: wfexs_backend.pushers.DraftEntry.pid
      :type: str
      :value: None

      .. autodoc2-docstring:: wfexs_backend.pushers.DraftEntry.pid

   .. py:attribute:: metadata
      :canonical: wfexs_backend.pushers.DraftEntry.metadata
      :type: Optional[Mapping[str, Any]]
      :value: None

      .. autodoc2-docstring:: wfexs_backend.pushers.DraftEntry.metadata

   .. py:attribute:: raw_metadata
      :canonical: wfexs_backend.pushers.DraftEntry.raw_metadata
      :type: Optional[Mapping[str, Any]]
      :value: None

      .. autodoc2-docstring:: wfexs_backend.pushers.DraftEntry.raw_metadata

.. py:class:: AbstractExportPlugin(refdir: pathlib.Path, setup_block: Optional[SecurityContextConfig] = None, default_licences: Sequence[LicenceDescription] = [], default_orcids: Sequence[ResolvedORCID] = [], default_preferred_id: Optional[str] = None)
   :canonical: wfexs_backend.pushers.AbstractExportPlugin

   Bases: :py:obj:`abc.ABC`

   .. autodoc2-docstring:: wfexs_backend.pushers.AbstractExportPlugin

   .. rubric:: Initialization

   .. autodoc2-docstring:: wfexs_backend.pushers.AbstractExportPlugin.__init__

   .. py:attribute:: PLUGIN_NAME
      :canonical: wfexs_backend.pushers.AbstractExportPlugin.PLUGIN_NAME
      :type: ClassVar[SymbolicName]
      :value: 'cast(...)'

      .. autodoc2-docstring:: wfexs_backend.pushers.AbstractExportPlugin.PLUGIN_NAME

   .. py:attribute:: ENABLED
      :canonical: wfexs_backend.pushers.AbstractExportPlugin.ENABLED
      :type: ClassVar[bool]
      :value: True

      .. autodoc2-docstring:: wfexs_backend.pushers.AbstractExportPlugin.ENABLED

   .. py:method:: push(items: Sequence[AnyContent], preferred_id: Optional[str] = None, title: Optional[str] = None, description: Optional[str] = None, licences: Sequence[LicenceDescription] = [], resolved_orcids: Sequence[ResolvedORCID] = [], metadata: Optional[Mapping[str, Any]] = None, community_specific_metadata: Optional[Mapping[str, Any]] = None) -> Sequence[URIWithMetadata]
      :canonical: wfexs_backend.pushers.AbstractExportPlugin.push
      :abstractmethod:

      .. autodoc2-docstring:: wfexs_backend.pushers.AbstractExportPlugin.push

   .. py:method:: get_pid_metadata(pid: str) -> Optional[Mapping[str, Any]]
      :canonical: wfexs_backend.pushers.AbstractExportPlugin.get_pid_metadata
      :abstractmethod:

      .. autodoc2-docstring:: wfexs_backend.pushers.AbstractExportPlugin.get_pid_metadata

   .. py:method:: get_pid_draftentry(pid: str) -> Optional[DraftEntry]
      :canonical: wfexs_backend.pushers.AbstractExportPlugin.get_pid_draftentry

      .. autodoc2-docstring:: wfexs_backend.pushers.AbstractExportPlugin.get_pid_draftentry

   .. py:method:: book_pid(preferred_id: Optional[str] = None, initially_required_metadata: Optional[Mapping[str, Any]] = None, initially_required_community_specific_metadata: Optional[Mapping[str, Any]] = None, title: Optional[str] = None, description: Optional[str] = None, licences: Sequence[LicenceDescription] = [], resolved_orcids: Sequence[ResolvedORCID] = []) -> Optional[DraftEntry]
      :canonical: wfexs_backend.pushers.AbstractExportPlugin.book_pid
      :abstractmethod:

      .. autodoc2-docstring:: wfexs_backend.pushers.AbstractExportPlugin.book_pid

   .. py:property:: _customized_book_pid_error_string
      :canonical: wfexs_backend.pushers.AbstractExportPlugin._customized_book_pid_error_string
      :type: str

      .. autodoc2-docstring:: wfexs_backend.pushers.AbstractExportPlugin._customized_book_pid_error_string

   .. py:method:: discard_booked_pid(pid_or_draft: Union[str, DraftEntry]) -> bool
      :canonical: wfexs_backend.pushers.AbstractExportPlugin.discard_booked_pid
      :abstractmethod:

      .. autodoc2-docstring:: wfexs_backend.pushers.AbstractExportPlugin.discard_booked_pid

   .. py:method:: PluginName() -> wfexs_backend.common.SymbolicName
      :canonical: wfexs_backend.pushers.AbstractExportPlugin.PluginName
      :classmethod:

      .. autodoc2-docstring:: wfexs_backend.pushers.AbstractExportPlugin.PluginName

.. py:class:: AbstractDraftedExportPlugin(refdir: pathlib.Path, setup_block: Optional[SecurityContextConfig] = None, default_licences: Sequence[LicenceDescription] = [], default_orcids: Sequence[ResolvedORCID] = [], default_preferred_id: Optional[str] = None)
   :canonical: wfexs_backend.pushers.AbstractDraftedExportPlugin

   Bases: :py:obj:`wfexs_backend.pushers.AbstractExportPlugin`

   .. autodoc2-docstring:: wfexs_backend.pushers.AbstractDraftedExportPlugin

   .. rubric:: Initialization

   .. autodoc2-docstring:: wfexs_backend.pushers.AbstractDraftedExportPlugin.__init__

   .. py:method:: upload_file_to_draft(draft_entry: wfexs_backend.pushers.DraftEntry, filename: Union[str, IO[bytes]], remote_filename: Optional[str], content_size: Optional[int] = None) -> Mapping[str, Any]
      :canonical: wfexs_backend.pushers.AbstractDraftedExportPlugin.upload_file_to_draft
      :abstractmethod:

      .. autodoc2-docstring:: wfexs_backend.pushers.AbstractDraftedExportPlugin.upload_file_to_draft

   .. py:method:: upload_file_to_draft_by_id(record_id: str, filename: Union[str, IO[bytes]], remote_filename: Optional[str]) -> Mapping[str, Any]
      :canonical: wfexs_backend.pushers.AbstractDraftedExportPlugin.upload_file_to_draft_by_id

      .. autodoc2-docstring:: wfexs_backend.pushers.AbstractDraftedExportPlugin.upload_file_to_draft_by_id

   .. py:method:: update_record_metadata(draft_entry: wfexs_backend.pushers.DraftEntry, metadata: Optional[Mapping[str, Any]] = None, community_specific_metadata: Optional[Mapping[str, Any]] = None, title: Optional[str] = None, description: Optional[str] = None, licences: Sequence[LicenceDescription] = [], resolved_orcids: Sequence[ResolvedORCID] = []) -> Mapping[str, Any]
      :canonical: wfexs_backend.pushers.AbstractDraftedExportPlugin.update_record_metadata
      :abstractmethod:

      .. autodoc2-docstring:: wfexs_backend.pushers.AbstractDraftedExportPlugin.update_record_metadata

   .. py:method:: update_record_metadata_by_id(record_id: str, metadata: Optional[Mapping[str, Any]] = None, community_specific_metadata: Optional[Mapping[str, Any]] = None, title: Optional[str] = None, description: Optional[str] = None, licences: Sequence[LicenceDescription] = [], resolved_orcids: Sequence[ResolvedORCID] = []) -> Mapping[str, Any]
      :canonical: wfexs_backend.pushers.AbstractDraftedExportPlugin.update_record_metadata_by_id

      .. autodoc2-docstring:: wfexs_backend.pushers.AbstractDraftedExportPlugin.update_record_metadata_by_id

   .. py:method:: publish_draft_record(draft_entry: wfexs_backend.pushers.DraftEntry) -> Mapping[str, Any]
      :canonical: wfexs_backend.pushers.AbstractDraftedExportPlugin.publish_draft_record
      :abstractmethod:

      .. autodoc2-docstring:: wfexs_backend.pushers.AbstractDraftedExportPlugin.publish_draft_record

   .. py:method:: publish_draft_record_by_id(record_id: str) -> Mapping[str, Any]
      :canonical: wfexs_backend.pushers.AbstractDraftedExportPlugin.publish_draft_record_by_id

      .. autodoc2-docstring:: wfexs_backend.pushers.AbstractDraftedExportPlugin.publish_draft_record_by_id
