arxiv.submission.domain.submission module

Data structures for submissions.

class arxiv.submission.domain.submission.Author(order=0, forename=<factory>, surname=<factory>, initials=<factory>, affiliation=<factory>, email=<factory>, identifier=None, display=None)[source]

Bases: object

Represents an author of a submission.

canonical

Canonical representation of the author name.

display = None

Submitter may include a preferred display name for each author.

If not provided, will be automatically generated from the other fields.

identifier = None
order = 0
class arxiv.submission.domain.submission.CrossListClassificationRequest(request_id, creator, created=<factory>, updated=<factory>, status='pending', request_type=<factory>, classifications=<factory>)[source]

Bases: arxiv.submission.domain.submission.UserRequest

Represents a request to add secondary classifications.

NAME = 'Cross-list'
apply(submission)[source]

Apply the cross-list request.

Return type

Submission

categories

Get the requested cross-list categories.

Return type

List[str]

class arxiv.submission.domain.submission.Delegation(delegate, creator, created=<factory>, delegation_id=<factory>)[source]

Bases: object

Delegation of editing privileges to a non-owning Agent.

get_delegation_id()[source]

Generate unique identifier for the delegation instance.

class arxiv.submission.domain.submission.Hold(event_id, creator, created=<factory>, hold_type=<Type.PATCH: 'patch'>, hold_reason=<factory>)[source]

Bases: object

Represents a block on announcement, usually for QA/QC purposes.

class Type[source]

Bases: enum.Enum

Supported holds in the submission system.

PATCH = 'patch'

A hold generated from the classic submission system.

PDF_OVERSIZE = 'pdf_oversize'

The submission PDF is oversize.

SOURCE_OVERSIZE = 'source_oversize'

The submission source is oversize.

event_id = None

The event that created the hold.

hold_type = 'patch'
class arxiv.submission.domain.submission.Submission(creator, owner, proxy=None, client=None, created=None, updated=None, submitted=None, submission_id=None, source_content=None, metadata=<factory>, primary_classification=None, secondary_classification=<factory>, submitter_contact_verified=False, submitter_is_author=None, submitter_accepts_policy=None, submitter_compiled_preview=False, submitter_confirmed_preview=False, license=None, status='working', arxiv_id=None, version=1, reason_for_withdrawal=None, versions=<factory>, user_requests=<factory>, proposals=<factory>, processes=<factory>, annotations=<factory>, flags=<factory>, comments=<factory>, holds=<factory>, waivers=<factory>)[source]

Bases: object

Represents an arXiv submission object.

Some notable differences between this view of submissions and the classic model:

  • There is no “hold” status. Status reflects where the submission is in the pipeline. Holds are annotations that can be applied to the submission, and may impact its ability to proceed (e.g. from submitted to scheduled). Submissions that are in working status can have holds on them!

  • We use arxiv_id instead of paper_id to refer to the canonical arXiv identifier for the e-print (once it is announced).

  • Instead of having a separate “submission” record for every change to an e-print (e.g. replacement, jref, etc), we represent the entire history as a single submission. Announced versions can be found in versions. Withdrawal and cross-list requests can be found in user_requests. JREFs are treated like they “just happen”, reflecting the forthcoming move away from storing journal ref information in the core metadata record.

ANNOUNCED = 'announced'
DELETED = 'deleted'
ERROR = 'error'
SCHEDULED = 'scheduled'
SUBMITTED = 'submitted'
WITHDRAWN = 'withdrawn'
WORKING = 'working'
active_user_requests
Return type

List[UserRequest]

annotations = None

Quality control annotations.

applied_user_requests
Return type

List[UserRequest]

approved_user_requests
Return type

List[UserRequest]

arxiv_id = None

The announced arXiv paper ID.

client = None
comments = None

Moderation/administrative comments.

created = None
features
Return type

Dict[str, Feature]

flags = None

Quality control flags.

has_active_requests
Return type

bool

has_waiver_for(hold_type)[source]
Return type

bool

hold_types
Return type

Set[Type]

holds = None

Quality control holds.

is_active

Actively moving through the submission workflow.

Return type

bool

is_announced

The submission has been announced.

Return type

bool

is_deleted

Submission is removed.

Return type

bool

is_finalized

Submitter has indicated submission is ready for publication.

Return type

bool

is_on_hold
Return type

bool

iter_requests
Return type

Iterable[UserRequest]

license = None
pending_user_requests
Return type

List[UserRequest]

primary_category
Return type

str

primary_classification = None
processes = None

Information about automated processes.

proposals = None

Proposed changes to the submission, e.g. reclassification.

proxy = None
reason_for_withdrawal = None

If an e-print is withdrawn, the submitter is asked to explain why.

rejected_user_requests
Return type

List[UserRequest]

secondary_categories

Category names from secondary classifications.

Return type

List[str]

source_content = None
status = 'working'

Disposition within the submission pipeline.

submission_id = None
submitted = None
submitter_accepts_policy = None
submitter_compiled_preview = False
submitter_confirmed_preview = False
submitter_contact_verified = False
submitter_is_author = None
updated = None
user_requests = None

Requests from the owner for changes that require approval.

version = 1
versions = None

Announced versions of this domain.submission.Submission.

waiver_types
Return type

Set[Type]

waivers = None

Quality control waivers.

class arxiv.submission.domain.submission.SubmissionContent(identifier, checksum, uncompressed_size, compressed_size, source_format=<Format.UNKNOWN: None>)[source]

Bases: object

Metadata about the submission source package.

class Format[source]

Bases: enum.Enum

Supported source formats.

HTML = 'html'

An HTML source.

INVALID = 'invalid'

We are able to infer the source format, and it is not supported.

PDF = 'pdf'

A PDF-only source.

PDFTEX = 'pdftex'

A PDF derived from TeX.

POSTSCRIPT = 'ps'

A postscript source.

TEX = 'tex'

A flavor of TeX.

UNKNOWN = None

We could not determine the source format.

source_format = None
class arxiv.submission.domain.submission.SubmissionMetadata(title=None, abstract=None, authors=<factory>, authors_display=<factory>, doi=None, msc_class=None, acm_class=None, report_num=None, journal_ref=None, comments=<factory>)[source]

Bases: object

Metadata about a domain.submission.Submission instance.

abstract = None
acm_class = None
authors_display = None

The canonical arXiv author string.

doi = None
journal_ref = None
msc_class = None
report_num = None
title = None
class arxiv.submission.domain.submission.UserRequest(request_id, creator, created=<factory>, updated=<factory>, status='pending', request_type=<factory>)[source]

Bases: object

Represents a user request related to a submission.

APPLIED = 'applied'

Submission has been updated on the basis of the approved request.

APPROVED = 'approved'

Request has been approved.

CANCELLED = 'cancelled'
PENDING = 'pending'

Request is pending approval.

REJECTED = 'rejected'

Request has been rejected.

WORKING = 'working'

Request is not yet submitted.

classmethod generate_request_id(submission, N=-1)[source]

Generate a unique identifier for this request.

Return type

str

get_request_type()[source]

Name (str) of the type of user request.

Return type

str

is_active()[source]

Check whether the request is active.

Return type

bool

is_applied()[source]

Check whether the request has been applied.

Return type

bool

is_approved()[source]

Check whether the request has been approved.

Return type

bool

is_pending()[source]

Check whether the request is pending.

Return type

bool

is_rejected()[source]

Check whether the request has been rejected.

Return type

bool

status = 'pending'
class arxiv.submission.domain.submission.Waiver(event_id, waiver_type, waiver_reason, created, creator)[source]

Bases: object

Represents an exception or override.

event_id = None

The identifier of the event that produced this waiver.

class arxiv.submission.domain.submission.WithdrawalRequest(request_id, creator, created=<factory>, updated=<factory>, status='pending', request_type=<factory>, reason_for_withdrawal=None)[source]

Bases: arxiv.submission.domain.submission.UserRequest

Represents a request to withdraw a submission.

NAME = 'Withdrawal'
apply(submission)[source]

Apply the withdrawal.

Return type

Submission

reason_for_withdrawal = None

If an e-print is withdrawn, the submitter is asked to explain why.

arxiv.submission.domain.submission.request_factory(**data)[source]

Generate a UserRequest from raw data.

Return type

UserRequest