1515"""Face class representing the Vision API's face detection response."""
1616
1717
18+ from enum import Enum
19+
1820from google .cloud .vision .geometry import BoundsBase
1921from google .cloud .vision .likelihood import Likelihood
2022from google .cloud .vision .geometry import Position
@@ -91,11 +93,10 @@ def from_api_repr(cls, response):
9193 :rtype: :class:`~google.cloud.vision.face.Emotions`
9294 :returns: Populated instance of `Emotions`.
9395 """
94- joy_likelihood = getattr (Likelihood , response ['joyLikelihood' ])
95- sorrow_likelihood = getattr (Likelihood , response ['sorrowLikelihood' ])
96- surprise_likelihood = getattr (Likelihood ,
97- response ['surpriseLikelihood' ])
98- anger_likelihood = getattr (Likelihood , response ['angerLikelihood' ])
96+ joy_likelihood = Likelihood [response ['joyLikelihood' ]]
97+ sorrow_likelihood = Likelihood [response ['sorrowLikelihood' ]]
98+ surprise_likelihood = Likelihood [response ['surpriseLikelihood' ]]
99+ anger_likelihood = Likelihood [response ['angerLikelihood' ]]
99100
100101 return cls (joy_likelihood , sorrow_likelihood , surprise_likelihood ,
101102 anger_likelihood )
@@ -172,8 +173,7 @@ def from_api_repr(cls, response):
172173 detection_confidence = response ['detectionConfidence' ]
173174 emotions = Emotions .from_api_repr (response )
174175 fd_bounds = FDBounds .from_api_repr (response ['fdBoundingPoly' ])
175- headwear_likelihood = getattr (Likelihood ,
176- response ['headwearLikelihood' ])
176+ headwear_likelihood = Likelihood [response ['headwearLikelihood' ]]
177177 image_properties = FaceImageProperties .from_api_repr (response )
178178 landmarks = Landmarks (response ['landmarks' ])
179179 landmarking_confidence = response ['landmarkingConfidence' ]
@@ -321,12 +321,10 @@ def from_api_repr(cls, response):
321321 :rtype: :class:`~google.cloud.vision.face.FaceImageProperties`
322322 :returns: Instance populated with image property data.
323323 """
324- blurred_likelihood = getattr (Likelihood ,
325- response ['blurredLikelihood' ])
326- underexposed_likelihood = getattr (Likelihood ,
327- response ['underExposedLikelihood' ])
324+ blurred = Likelihood [response ['blurredLikelihood' ]]
325+ underexposed = Likelihood [response ['underExposedLikelihood' ]]
328326
329- return cls (blurred_likelihood , underexposed_likelihood )
327+ return cls (blurred , underexposed )
330328
331329 @property
332330 def blurred (self ):
@@ -349,7 +347,7 @@ def underexposed(self):
349347 return self ._underexposed_likelihood
350348
351349
352- class FaceLandmarkTypes ( object ):
350+ class LandmarkTypes ( Enum ):
353351 """A representation of the face detection landmark types.
354352
355353 See:
@@ -413,7 +411,7 @@ def from_api_repr(cls, response_landmark):
413411 :returns: Populated instance of `Landmark`.
414412 """
415413 position = Position .from_api_repr (response_landmark ['position' ])
416- landmark_type = getattr ( FaceLandmarkTypes , response_landmark ['type' ])
414+ landmark_type = LandmarkTypes [ response_landmark ['type' ]]
417415 return cls (position , landmark_type )
418416
419417 @property
@@ -440,4 +438,4 @@ class Landmarks(object):
440438 def __init__ (self , landmarks ):
441439 for landmark_response in landmarks :
442440 landmark = Landmark .from_api_repr (landmark_response )
443- setattr (self , landmark .landmark_type .lower (), landmark )
441+ setattr (self , landmark .landmark_type .value . lower (), landmark )
0 commit comments