Source code for psynet.error
from sqlalchemy import Column, ForeignKey, Integer, String
from sqlalchemy.orm import relationship
from psynet.data import SQLBase, SQLMixin, register_table
[docs]
@register_table
class ErrorRecord(SQLBase, SQLMixin):
__tablename__ = "error"
__extra_vars__ = {}
# Remove default SQL columns
failed = None
failed_reason = None
time_of_death = None
token = Column(String)
kind = Column(String)
message = Column(String)
traceback = Column(String)
participant_id = Column(Integer, ForeignKey("participant.id"), index=True)
participant = relationship(
"psynet.participant.Participant", back_populates="errors"
)
worker_id = Column(String)
network_id = Column(Integer, ForeignKey("network.id"), index=True)
network = relationship("TrialNetwork", back_populates="errors")
node_id = Column(Integer, ForeignKey("node.id"), index=True)
node = relationship("TrialNode", back_populates="errors")
response_id = Column(Integer, ForeignKey("response.id"), index=True)
response = relationship("psynet.timeline.Response", back_populates="errors")
trial_id = Column(Integer, ForeignKey("info.id"), index=True)
trial = relationship("psynet.trial.main.Trial", back_populates="errors")
response_id = Column(Integer, ForeignKey("response.id"), index=True)
response = relationship("psynet.timeline.Response", back_populates="errors")
asset_id = Column(Integer, ForeignKey("asset.id"), index=True)
asset = relationship("Asset", back_populates="errors")
process_id = Column(Integer, ForeignKey("process.id"), index=True)
process = relationship("AsyncProcess", back_populates="errors")
def __init__(self, error, **kwargs):
super().__init__(message=str(error), kind=type(error).__name__, **kwargs)
if self.participant:
self.worker_id = self.participant.worker_id