Code Duplication    Length = 18-21 lines in 2 locations

sacred/observers/sql.py 2 locations

@@ 219-239 (lines=21) @@
216
            return {'_id': self.artifact_id,
217
                    'filename': self.filename}
218
219
    class Resource(Base):
220
        __tablename__ = 'resource'
221
222
        @classmethod
223
        def get_or_create(cls, filename, session):
224
            md5sum = get_digest(filename)
225
            instance = session.query(cls).filter_by(filename=filename,
226
                                                    md5sum=md5sum).first()
227
            if instance:
228
                return instance
229
            with open(filename, 'rb') as f:
230
                return cls(filename=filename, md5sum=md5sum, content=f.read())
231
232
        resource_id = sa.Column(sa.Integer, primary_key=True)
233
        filename = sa.Column(sa.String(256))
234
        md5sum = sa.Column(sa.String(32))
235
        content = sa.Column(sa.LargeBinary)
236
237
        def to_json(self):
238
            return {'filename': self.filename,
239
                    'md5sum': self.md5sum}
240
241
    class Host(Base):
242
        __tablename__ = 'host'
@@ 200-217 (lines=18) @@
197
        def to_json(self):
198
            return "{}=={}".format(self.name, self.version)
199
200
    class Artifact(Base):
201
        __tablename__ = 'artifact'
202
203
        @classmethod
204
        def create(cls, name, filename):
205
            with open(filename, 'rb') as f:
206
                return cls(filename=name, content=f.read())
207
208
        artifact_id = sa.Column(sa.Integer, primary_key=True)
209
        filename = sa.Column(sa.String(64))
210
        content = sa.Column(sa.LargeBinary)
211
212
        run_id = sa.Column(sa.String(24), sa.ForeignKey('run.run_id'))
213
        run = sa.orm.relationship("Run", backref=sa.orm.backref('artifacts'))
214
215
        def to_json(self):
216
            return {'_id': self.artifact_id,
217
                    'filename': self.filename}
218
219
    class Resource(Base):
220
        __tablename__ = 'resource'