def _init_properties(self) -> None: if self.arcs.num_axes() == 2: properties = _k2.get_fsa_basic_properties(self.arcs) else: properties = _k2.get_fsa_vec_basic_properties(self.arcs) self._properties = properties if properties & 1 != 1: raise ValueError( "Fsa is not valid, properties are: {} = {}, arcs are: {}". format(properties, _k2.fsa_properties_as_str(properties), str(self.arcs)))
def get_properties(fsa: Fsa) -> int: '''Get the properties of an FSA. Note that the properties of an FSA is encoded into an integer. The integer is expected to be passed to one of the `is_*` functions in this module, e.g., :func:`is_arc_sorted`. Args: fsa: The input FSA. Returns: An integer which encodes the properties of the given FSA. ''' return _k2.get_fsa_basic_properties(fsa.arcs)
def properties(self) -> int: # instead of accessing self._properties, we use # self.__dict__.{get,set}('_properties') in order to # avoid calling __getattr__ and any complexity involved in that. properties = self.__dict__.get('_properties', None) if properties is not None: return properties # Return cached properties. if self.arcs.num_axes() == 2: properties = _k2.get_fsa_basic_properties(self.arcs) else: properties = _k2.get_fsa_vec_basic_properties(self.arcs) self.__dict__['_properties'] = properties if properties & fsa_properties.VALID != 1: raise ValueError( 'Fsa is not valid, properties are: {} = {}, arcs are: {}'. format(properties, fsa_properties.to_str(properties), str(self.arcs))) return properties
def _init_properties(self) -> None: if self.arcs.num_axes() == 2: properties = _k2.get_fsa_basic_properties(self.arcs) else: properties = _k2.get_fsa_vec_basic_properties(self.arcs) self._properties = properties