All pastes #288886 Raw Edit

Anonymous

public python v1 · immutable
#288886 ·published 2006-12-22 17:59 UTC
rendered paste body
# Distributed SAGE # Copyright (C) 2006 Yi Qiang # This program is free software; you can redistribute it and/or# modify it under the terms of the GNU General Public License# as published by the Free Software Foundation; either version 2# of the License, or (at your option) any later version.# This program is distributed in the hope that it will be useful,# but WITHOUT ANY WARRANTY; without even the implied warranty of# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the# GNU General Public License for more details.# You should have received a copy of the GNU General Public License# along with this program; if not, write to the Free Software# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.# This class defines a Job which is to be stored in the JobDatabase. # python importsimport datetime# twisted importsfrom twisted.spread import pb# ZODB importsfrom persistent import Persistentclass Job(pb.Copyable, pb.RemoteCopy, Persistent):    """Defines a Job that gets distributed to clients."""    def __init__(self, id=None, name=None, file=None, parent=None,                 author=None, type='string'):        """Creates a new job.        Parameters:        name -- job name (can be the same for many jobs, let's you cluster jobs)        id -- job id (must be unique)        file -- job file        parent -- sets if the job is a parent job        author -- author of the job (not neccesarily unique)        type -- the type of the job (file, string, generator)                defaults to string        """        self.jdict = {}        # Job keywords        self.jdict['name'] = name        self.jdict['id'] = id        self.jdict['file'] = file        self.jdict['parent'] = parent        self.jdict['author'] = author        self.jdict['creation_time'] = datetime.datetime.now()        self.jdict['finish_time'] = None        self.jdict['updated_time'] = datetime.datetime.now()        # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #        # Valid status keywords:        # new, completed, incomplete, processing        self.jdict['status'] = 'new'         # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #         self.jdict['children'] = []        self.jdict['type'] = type        self.jdict['result'] = None        self.jdict['failures'] = 0        self.jdict['killed'] = False    def __str__(self):        return str(self.jdict)    def num_of_children(self):        return len(self.jdict['children'])    def get_file(self):        return self.jdict['file']    def set_file(self, value):        if not isinstance(value, str):            raise TypeError        self.jdict['file'] = value    file = property(fget=get_file, fset=set_file, fdel=None,                    doc='Job file')    def get_id(self):        return self.jdict['id']    def set_id(self, value):        if not isinstance(value, int):            raise TypeError        self.jdict['id'] = value    id = property(fget=get_id, fset=set_id, fdel=None, doc='Job ID')    def get_status(self):        return self.jdict['status']    def set_status(self, value):        statuses = ['new', 'completed', 'incomplete', 'processing']        if not value in statuses:            raise TypeError        self.jdict['status'] = value        status = property(fget=get_status, fset=set_status, fdel=None,                       doc='Job status')        def get_result(self):        return self.jdict['result']    def set_result(self, value):        if not (isinstance(value, list) or isinstance(value, str)):            raise TypeError        self.jdict['result'] = value    result = property(fget=get_result, fset=set_result, fdel=None,                       doc='Job result')        def get_author(self):        return self.jdict['author']    def set_author(self, value):                self.jdict['author'] = value    author = property(fget=get_author, fset=set_author, fdel=None,                      doc='Job author')       def get_finish_time(self):        return self.jdict['finish_time']    def set_finish_time(self, value):        if not isinstance(value, datetime.datetime):            raise TypeError        self.jdict['finish_time'] = value    finish_time = property(fget=get_finish_time, fset=set_finish_time,                            fdel=None, doc='Job finish time')    def get_updated_time(self):        return self.jdict['updated_time']    def set_updated_time(self, value):        if not isinstance(value, datetime.datetime):            raise TypeError        self.jdict['updated_time'] = value        updated_time = property(fget=get_updated_time, fset=set_updated_time,                            fdel=None, doc='Job updated time')       def get_creation_time(self):        return self.jdict['creation_time']    def set_creation_time(self, value):        if not isinstance(value, datetime.datetime):            raise TypeError        self.jdict['creation_time'] = value    creation_time = property(fget=get_creation_time, fset=set_creation_time,                             fdel=None, doc='Job creation time')    def get_type(self):        return self.jdict['type']    def set_type(self, value):        types = ['file', 'string', 'generator', 'spyx', 'py']        if value not in types:            raise TypeError        self.jdict['type'] = value    type = property(fget=get_type, fset=set_type,                    fdel=None, doc='Job type')    def get_failures(self):        return self.jdict['failures']    def set_failures(self, value):        if not isinstance(value, int):            raise TypeError        self.jdict['failures'] = value    failures = property(fget=get_failures, fset=set_failures,                        fdel=None, doc='Number of failures')    def get_killed(self):        return self.jdict['killed']    def set_killed(self, value):        if not isinstance(value, bool):            raise TypeError        self.jdict['killed'] = value    killed = property(fget=get_killed, fset=set_killed,                       fdel=None, doc='Job killed status')