Holds meta informations about a single vertex label.
| 58 | |
| 59 | |
| 60 | class VertexLabel(object): |
| 61 | """Holds meta informations about a single vertex label.""" |
| 62 | |
| 63 | def __init__( |
| 64 | self, |
| 65 | label: str, |
| 66 | loader: Any, |
| 67 | properties: Union[Sequence, None] = None, |
| 68 | vid_field: Union[str, int] = 0, |
| 69 | session_id=None, |
| 70 | id_type: str = "int64_t", |
| 71 | vformat=None, |
| 72 | ): |
| 73 | self.label = label |
| 74 | # loader to take various data source |
| 75 | if isinstance(loader, Loader): |
| 76 | self.loader = loader |
| 77 | else: |
| 78 | self.loader = Loader(loader) |
| 79 | # raw properties passed by user parameters |
| 80 | self.raw_properties = properties |
| 81 | # finally properties for constructing graph |
| 82 | self.properties = [] |
| 83 | # column index or property name used as id field |
| 84 | self.vid_field = vid_field |
| 85 | # type of vertex original id |
| 86 | # should be consistent with the original graph |
| 87 | self.id_type = id_type |
| 88 | self._session_id = session_id |
| 89 | self._vformat = vformat |
| 90 | # normalize properties |
| 91 | # add vid to property list |
| 92 | self.add_property(str(self.vid_field), self.id_type) |
| 93 | if self.raw_properties: |
| 94 | self.add_properties(self.raw_properties) |
| 95 | elif self.loader.deduced_properties: |
| 96 | self.add_properties(self.loader.deduced_properties) |
| 97 | # set selected columns to loader |
| 98 | self.loader.select_columns( |
| 99 | self.properties, include_all=bool(self.raw_properties is None) |
| 100 | ) |
| 101 | |
| 102 | def __str__(self) -> str: |
| 103 | s = "\ntype: VertexLabel" |
| 104 | s += "\nlabel: " + self.label |
| 105 | s += "\nproperties: " + str(self.properties) |
| 106 | s += "\nvid: " + str(self.vid_field) |
| 107 | s += "\nid_type: " + self.id_type |
| 108 | s += "\nloader: " + repr(self.loader) |
| 109 | return s |
| 110 | |
| 111 | def __repr__(self) -> str: |
| 112 | return self.__str__() |
| 113 | |
| 114 | def add_property(self, prop: str, dtype=None) -> None: |
| 115 | """prop is a str, representing name. It can optionally have a type.""" |
| 116 | self.properties.append((prop, utils.unify_type(dtype))) |
| 117 |
no outgoing calls
no test coverage detected