      def build_mask(self):
          mask = np.zeros(self.face.shape[0:2] + (1, ), dtype=np.float32)
          hull = cv2.convexHull(  # pylint: disable=no-member
              np.array(self.landmarks).reshape((-1, 2)))
          cv2.fillConvexPoly(mask, hull, 1.0, lineType=cv2.LINE_AA)  # pylint: disable=no-member
          return mask
 
</s> remove         retval = extension in _image_extensions
 </s> add         retval = extension.lower() in _image_extensions </s> remove             section=section, title="balance_3",  datatype=float, default=0.0, rounding=1,
 </s> add             section=section, title="balance_3", datatype=float, default=0.0, rounding=1, </s> remove             section=section, title="balance_2",  datatype=float, default=0.0, rounding=1,
 </s> add             section=section, title="balance_2", datatype=float, default=0.0, rounding=1, </s> remove             section=section, title="balance_1",  datatype=float, default=0.0, rounding=1,
 </s> add             section=section, title="balance_1", datatype=float, default=0.0, rounding=1,
        cv2.fillConvexPoly(mask, hull, 255.0, lineType=cv2.LINE_AA)  # pylint: disable=no-member
      def build_mask(self):
          mask = np.zeros(self.face.shape[0:2] + (1, ), dtype=np.float32)
          hull = cv2.convexHull(  # pylint: disable=no-member
              np.array(self.landmarks).reshape((-1, 2)))
        cv2.fillConvexPoly(mask, hull, 255.0, lineType=cv2.LINE_AA)  # pylint: disable=no-member
          return mask
keep keep keep keep replace keep
 Bugfixes

Facefilter - Variable reference before assignment
masks - Facehull initialize to 255.0 instead of 1.0
Alignments tool - Stop tool from ignoring upper case extensions
pep8 fixes 
lib/model/masks.py