- def reject_msgs(cls, dsc_filename, has_native_tar, has_native_tar_gz, has_debian_tar, has_debian_diff, has_orig_tar, has_orig_tar_gz, has_more_orig_tar):
- if not (has_native_tar_gz or (has_orig_tar_gz and has_debian_diff)):
- yield "%s: no .tar.gz or .orig.tar.gz+.diff.gz in 'Files' field." % dsc_filename
- if (has_orig_tar_gz != has_orig_tar) or \
- (has_native_tar_gz != has_native_tar) or \
- has_debian_tar or has_more_orig_tar:
- yield "%s: contains source files not allowed in format 1.0" % dsc_filename
-
-class FormatThree(object):
+ def reject_msgs(cls, has):
+ if not (has['native_tar_gz'] or (has['orig_tar_gz'] and has['debian_diff'])):
+ yield "no .tar.gz or .orig.tar.gz+.diff.gz in 'Files' field."
+ if has['native_tar_gz'] and has['debian_diff']:
+ yield "native package with diff makes no sense"
+ if (has['orig_tar_gz'] != has['orig_tar']) or \
+ (has['native_tar_gz'] != has['native_tar']):
+ yield "contains source files not allowed in format %s" % cls.name
+
+ for msg in super(FormatOne, cls).reject_msgs(has):
+ yield msg
+
+ @classmethod
+ def validate_format(cls, format, is_a_dsc=False, field='files'):
+ msg = "Invalid format %s definition: %r" % (cls.name, format)
+
+ if is_a_dsc:
+ if format != (1, 0):
+ raise UnknownFormatError, msg
+ else:
+ if (format < (1,5) or format > (1,8)):
+ raise UnknownFormatError, msg
+ if field != "files" and format < (1,8):
+ raise UnknownFormatError, msg
+
+class FormatThree(SourceFormat):