33
44import platform
55from collections import OrderedDict
6- from typing import Dict , List , Set , Union
6+ from typing import Dict , List , Union
77
88import azure .cognitiveservices .language .luis .runtime .models as runtime_models
99from azure .cognitiveservices .language .luis .runtime .models import (
1010 CompositeEntityModel ,
1111 EntityModel ,
1212 LuisResult ,
1313)
14- from botbuilder .core import IntentScore , RecognizerResult
1514from msrest import Serializer
15+ from botbuilder .core import IntentScore , RecognizerResult
1616
1717from .. import __title__ , __version__
1818
@@ -35,12 +35,11 @@ def get_intents(luis_result: LuisResult) -> Dict[str, IntentScore]:
3535 LuisUtil .normalized_intent (i .intent ): IntentScore (i .score or 0 )
3636 for i in luis_result .intents
3737 }
38- else :
39- return {
40- LuisUtil .normalized_intent (
41- luis_result .top_scoring_intent .intent
42- ): IntentScore (luis_result .top_scoring_intent .score or 0 )
43- }
38+ return {
39+ LuisUtil .normalized_intent (
40+ luis_result .top_scoring_intent .intent
41+ ): IntentScore (luis_result .top_scoring_intent .score or 0 )
42+ }
4443
4544 @staticmethod
4645 def extract_entities_and_metadata (
@@ -58,9 +57,9 @@ def extract_entities_and_metadata(
5857 if composite_entities :
5958 composite_entity_types = set (ce .parent_type for ce in composite_entities )
6059 current = entities
61- for compositeEntity in composite_entities :
60+ for composite_entity in composite_entities :
6261 current = LuisUtil .populate_composite_entity_model (
63- compositeEntity , current , entities_and_metadata , verbose
62+ composite_entity , current , entities_and_metadata , verbose
6463 )
6564 entities = current
6665
@@ -90,12 +89,12 @@ def number(value: object) -> Union[int, float]:
9089 return None
9190
9291 try :
93- s = str (value )
94- i = int (s )
95- return i
92+ str_value = str (value )
93+ int_value = int (str_value )
94+ return int_value
9695 except ValueError :
97- f = float (s )
98- return f
96+ float_value = float (str_value )
97+ return float_value
9998
10099 @staticmethod
101100 def extract_entity_value (entity : EntityModel ) -> object :
@@ -108,7 +107,7 @@ def extract_entity_value(entity: EntityModel) -> object:
108107 resolution = entity .additional_properties ["resolution" ]
109108 if entity .type .startswith ("builtin.datetime." ):
110109 return resolution
111- elif entity .type .startswith ("builtin.datetimeV2." ):
110+ if entity .type .startswith ("builtin.datetimeV2." ):
112111 if not resolution ["values" ]:
113112 return resolution
114113
@@ -117,32 +116,31 @@ def extract_entity_value(entity: EntityModel) -> object:
117116 timexes = [val ["timex" ] for val in resolution_values ]
118117 distinct_timexes = list (OrderedDict .fromkeys (timexes ))
119118 return {"type" : val_type , "timex" : distinct_timexes }
120- else :
121- if entity .type in {"builtin.number" , "builtin.ordinal" }:
122- return LuisUtil .number (resolution ["value" ])
123- elif entity .type == "builtin.percentage" :
124- svalue = str (resolution ["value" ])
125- if svalue .endswith ("%" ):
126- svalue = svalue [:- 1 ]
127-
128- return LuisUtil .number (svalue )
129- elif entity .type in {
130- "builtin.age" ,
131- "builtin.dimension" ,
132- "builtin.currency" ,
133- "builtin.temperature" ,
134- }:
135- units = resolution ["unit" ]
136- val = LuisUtil .number (resolution ["value" ])
137- obj = {}
138- if val is not None :
139- obj ["number" ] = val
140-
141- obj ["units" ] = units
142- return obj
143- else :
144- value = resolution .get ("value" )
145- return value if value is not None else resolution .get ("values" )
119+
120+ if entity .type in {"builtin.number" , "builtin.ordinal" }:
121+ return LuisUtil .number (resolution ["value" ])
122+ if entity .type == "builtin.percentage" :
123+ svalue = str (resolution ["value" ])
124+ if svalue .endswith ("%" ):
125+ svalue = svalue [:- 1 ]
126+
127+ return LuisUtil .number (svalue )
128+ if entity .type in {
129+ "builtin.age" ,
130+ "builtin.dimension" ,
131+ "builtin.currency" ,
132+ "builtin.temperature" ,
133+ }:
134+ units = resolution ["unit" ]
135+ val = LuisUtil .number (resolution ["value" ])
136+ obj = {}
137+ if val is not None :
138+ obj ["number" ] = val
139+
140+ obj ["units" ] = units
141+ return obj
142+ value = resolution .get ("value" )
143+ return value if value is not None else resolution .get ("values" )
146144
147145 @staticmethod
148146 def extract_entity_metadata (entity : EntityModel ) -> Dict :
@@ -202,10 +200,10 @@ def populate_composite_entity_model(
202200 # This is now implemented as O(n^2) search and can be reduced to O(2n) using a map as an optimization if n grows
203201 composite_entity_metadata = next (
204202 (
205- e
206- for e in entities
207- if e .type == composite_entity .parent_type
208- and e .entity == composite_entity .value
203+ ent
204+ for ent in entities
205+ if ent .type == composite_entity .parent_type
206+ and ent .entity == composite_entity .value
209207 ),
210208 None ,
211209 )
@@ -310,7 +308,7 @@ def recognizer_result_as_dict(
310308 for name , intent_score in recognizer_result .intents .items ()
311309 } if recognizer_result .intents is not None else None
312310
313- d : Dict [str , object ] = {
311+ dictionary : Dict [str , object ] = {
314312 "text" : recognizer_result .text ,
315313 "alteredText" : recognizer_result .altered_text ,
316314 "intents" : intents ,
@@ -319,13 +317,13 @@ def recognizer_result_as_dict(
319317
320318 if recognizer_result .properties is not None :
321319 for key , value in recognizer_result .properties .items ():
322- if key not in d :
320+ if key not in dictionary :
323321 if isinstance (value , LuisResult ):
324- d [key ] = LuisUtil .luis_result_as_dict (value )
322+ dictionary [key ] = LuisUtil .luis_result_as_dict (value )
325323 else :
326- d [key ] = value
324+ dictionary [key ] = value
327325
328- return d
326+ return dictionary
329327
330328 @staticmethod
331329 def intent_score_as_dict (intent_score : IntentScore ) -> Dict [str , float ]:
@@ -343,5 +341,5 @@ def luis_result_as_dict(luis_result: LuisResult) -> Dict[str, object]:
343341 k : v for k , v in runtime_models .__dict__ .items () if isinstance (v , type )
344342 }
345343 serializer = Serializer (client_models )
346- d = serializer .body (luis_result , "LuisResult" )
347- return d
344+ result = serializer .body (luis_result , "LuisResult" )
345+ return result
0 commit comments