GeezerVisonThe World Wide Web, restored to 800 pixels of glory. |
| Home|About|Gaming cabinet|Archives|How it works|Starter sites |
GeezerVison is showing github.com — feast/sdk/python/feast/project.py at master · feast-dev/feast Expand file tree/ Copy pathproject.pyMore file actions 175 lines (148 loc) · 5.92 KB / Copy pathproject.pyFile metadata and controls175 lines (148 loc) · 5.92 KB 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 # Copyright 2019 The Feast Authors # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # https://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. from datetime import datetime, timezone from typing import Dict, Optional from google.protobuf.json_format import MessageToJson from typeguard import typechecked from feast.protos.feast.core.Project_pb2 import Project as ProjectProto from feast.protos.feast.core.Project_pb2 import ProjectMeta as ProjectMetaProto from feast.protos.feast.core.Project_pb2 import ProjectSpec as ProjectSpecProto from feast.utils import _utc_now @typechecked class Project: """ Project is a collection of Feast Objects. Projects provide complete isolation of feature stores at the infrastructure level. Attributes: name: The unique name of the project. description: A human-readable description. tags: A dictionary of key-value pairs to store arbitrary metadata. owner: The owner of the project, typically the email of the primary maintainer. created_timestamp: The time when the entity was created. last_updated_timestamp: The time when the entity was last updated. """ name: str description: str tags: Dict[str, str] owner: str created_timestamp: datetime last_updated_timestamp: datetime def __init__( self, *, name: str, description: str = "", tags: Optional[Dict[str, str]] = None, owner: str = "", created_timestamp: Optional[datetime] = None, last_updated_timestamp: Optional[datetime] = None, ): """ Creates Project object. Args: name: The unique name of the project. description (optional): A human-readable description. tags (optional): A dictionary of key-value pairs to store arbitrary metadata. owner (optional): The owner of the project, typically the email of the primary maintainer. created_timestamp (optional): The time when the project was created. Defaults to last_updated_timestamp (optional): The time when the project was last updated. Raises: ValueError: Parameters are specified incorrectly. """ self.name = name self.description = description self.tags = tags if tags is not None else {} self.owner = owner updated_time = _utc_now() self.created_timestamp = created_timestamp or updated_time self.last_updated_timestamp = last_updated_timestamp or updated_time def __hash__(self) -> int: return hash((self.name)) def __eq__(self, other): if not isinstance(other, Project): return False if ( self.name != other.name or self.description != other.description or self.tags != other.tags or self.owner != other.owner or self.created_timestamp != other.created_timestamp or self.last_updated_timestamp != other.last_updated_timestamp ): return False return True def __str__(self): return str(MessageToJson(self.to_proto())) def __lt__(self, other): return self.name < other.name def is_valid(self): """ Validates the state of this project locally. Raises: ValueError: The project does not have a name or does not have a type. """ if not self.name: raise ValueError("The project does not have a name.") from feast.repo_operations import is_valid_name if not is_valid_name(self.name): raise ValueError( f"Project name, {self.name}, should only have " f"alphanumerical values, underscores, and hyphens but not start with an underscore or hyphen." ) @classmethod def from_proto(cls, project_proto: ProjectProto): """ Creates a project from a protobuf representation of a project. Args: project_proto: A protobuf representation of a project. Returns: A Project object based on the project protobuf. """ project = cls( name=project_proto.spec.name, description=project_proto.spec.description, tags=dict(project_proto.spec.tags), owner=project_proto.spec.owner, ) if project_proto.meta.HasField("created_timestamp"): project.created_timestamp = ( project_proto.meta.created_timestamp.ToDatetime().replace( tzinfo=timezone.utc ) ) if project_proto.meta.HasField("last_updated_timestamp"): project.last_updated_timestamp = ( project_proto.meta.last_updated_timestamp.ToDatetime().replace( tzinfo=timezone.utc ) ) return project def to_proto(self) -> ProjectProto: """ Converts an project object to its protobuf representation. Returns: An ProjectProto protobuf. """ meta = ProjectMetaProto() if self.created_timestamp: meta.created_timestamp.FromDatetime(self.created_timestamp) if self.last_updated_timestamp: meta.last_updated_timestamp.FromDatetime(self.last_updated_timestamp) spec = ProjectSpecProto( name=self.name, description=self.description, tags=self.tags, owner=self.owner, ) return ProjectProto(spec=spec, meta=meta) |
| You are visitor 01402503 — GeezerVison does not store the pages you look up. Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800×600. No cookies required. |