'Provides',
'Categories',
'License',
+ 'Author Name',
+ 'Author Email',
'Web Site',
'Source Code',
'Issue Tracker',
self.Provides = None
self.Categories = ['None']
self.License = 'Unknown'
+ self.AuthorName = None
+ self.AuthorEmail = None
self.WebSite = ''
self.SourceCode = ''
self.IssueTracker = ''
r'^http[s]?://', None,
["WebSite", "SourceCode", "IssueTracker", "Changelog", "Donate"], []),
+ FieldValidator("Email",
+ r'^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$', None,
+ ["AuthorEmail"], []),
+
FieldValidator("Bitcoin address",
r'^[a-zA-Z0-9]{27,34}$', None,
["Bitcoin"],
w_field_nonempty('Provides')
w_field_always('Categories')
w_field_always('License')
+ w_field_nonempty('Author Name')
+ w_field_nonempty('Author Email')
w_field_always('Web Site')
w_field_always('Source Code')
w_field_always('Issue Tracker')