class ReferenceMetadata: """Dataclass for Nessie ReferenceMetadata.""" commit_meta_of_head: CommitMeta = desert.ib( fields.Nested(CommitMetaSchema, data_key="commitMetaOfHEAD", allow_none=True)) num_commits_ahead: int = attr.ib(default=None, metadata=desert.metadata( fields.Int( allow_none=True, data_key="numCommitsAhead"))) num_commits_behind: int = attr.ib(default=None, metadata=desert.metadata( fields.Int( allow_none=True, data_key="numCommitsBehind"))) common_ancestor_hash: str = attr.ib( default=None, metadata=desert.metadata( fields.Str(allow_none=True, data_key="commonAncestorHash"))) num_total_commits: str = attr.ib(default=None, metadata=desert.metadata( fields.Int( allow_none=True, data_key="numTotalCommits")))
class Transplant: """Dataclass for Transplant operation.""" from_ref_name: str = attr.ib( metadata=desert.metadata(fields.Str(data_key="fromRefName"))) hashes_to_transplant: List[str] = attr.ib(metadata=desert.metadata( fields.List(fields.Str(), data_key="hashesToTransplant")))
class Merge: """Dataclass for Merge operation.""" from_ref_name: str = attr.ib( metadata=desert.metadata(fields.Str(data_key="fromRefName"))) from_hash: str = attr.ib(default=None, metadata=desert.metadata( fields.Str(data_key="fromHash")))
class Entries: """Dataclass for Content Entries.""" entries: List[Entry] = desert.ib(fields.List(fields.Nested(EntrySchema()))) has_more: bool = attr.ib(default=False, metadata=desert.metadata( fields.Bool(allow_none=True, data_key="hasMore"))) token: str = attr.ib(default=None, metadata=desert.metadata(fields.Str(allow_none=True)))
class LogResponse: """Dataclass for Log Response.""" operations: List[CommitMeta] = desert.ib( fields.List(fields.Nested(CommitMetaSchema()))) has_more: bool = attr.ib(default=False, metadata=desert.metadata( fields.Bool(allow_none=True, data_key="hasMore"))) token: str = attr.ib(default=None, metadata=desert.metadata(fields.Str(allow_none=True)))
class ReflogResponse: """Dataclass for reflog Response.""" log_entries: List[ReflogEntry] = desert.ib( fields.List(fields.Nested(ReflogEntrySchema()), data_key="logEntries")) has_more: bool = attr.ib(default=False, metadata=desert.metadata( fields.Bool(allow_none=True, data_key="hasMore"))) token: str = attr.ib(default=None, metadata=desert.metadata(fields.Str(allow_none=True)))
class ReferencesResponse: """Dataclass for References.""" references: List[Reference] = desert.ib( fields.List(fields.Nested(ReferenceSchema()))) has_more: bool = attr.ib(default=False, metadata=desert.metadata( fields.Bool(allow_none=True, data_key="hasMore"))) token: str = attr.ib(default=None, metadata=desert.metadata(fields.Str(allow_none=True)))
class CommitMeta: """Dataclass for commit metadata.""" hash_: str = desert.ib(fields.Str(data_key="hash")) commitTime: int = desert.ib(fields.Int()) commiter: str = attr.ib(default=None, metadata=desert.metadata( fields.Str(allow_none=True))) email: str = attr.ib(default=None, metadata=desert.metadata(fields.Str(allow_none=True))) message: str = attr.ib(default=None, metadata=desert.metadata( fields.Str(allow_none=True)))
class Reference: """Dataclass for Nessie Reference.""" name: str = desert.ib(fields.Str()) hash_: Optional[str] = attr.ib(default=None, metadata=desert.metadata( fields.Str(data_key="hash", allow_none=True))) metadata: Optional[ReferenceMetadata] = attr.ib( default=None, metadata=desert.metadata( fields.Nested(ReferenceMetadataSchema, allow_none=True, data_key="metadata")))
class CommitMeta: """Dataclass for commit metadata.""" hash_: str = desert.ib(fields.Str(data_key="hash"), default=None) commitTime: datetime = desert.ib(fields.DateTime(), default=None) authorTime: datetime = desert.ib(fields.DateTime(), default=None) committer: str = attr.ib(default=None, metadata=desert.metadata( fields.Str(allow_none=True))) author: str = attr.ib(default=None, metadata=desert.metadata( fields.Str(allow_none=True))) signedOffBy: str = attr.ib(default=None, metadata=desert.metadata( fields.Str(allow_none=True))) message: str = attr.ib(default=None, metadata=desert.metadata( fields.Str(allow_none=True))) properties: dict = desert.ib(fields.Dict(), default=None)
class Genre: """RawG Genre.""" id: int name: str slug: str games_count: Optional[int] image_background: Optional[str] = dataclasses.field( default=None, metadata=desert.metadata(field=marshmallow.fields.Url( allow_none=True)), )
class LogEntry: """Dataclass for commit log entries.""" commit_meta: CommitMeta = desert.ib( fields.Nested(CommitMetaSchema, data_key="commitMeta")) parent_commit_hash: str = attr.ib(default=None, metadata=desert.metadata( fields.Str( allow_none=True, data_key="parentCommitHash"))) operations: List[Operation] = desert.ib(marshmallow_field=fields.List( fields.Nested(OperationsSchema()), allow_none=True), default=None)
class Put(Operation): """Single Commit Operation.""" content: Content = desert.ib(fields.Nested(ContentSchema)) expectedContent: Optional[Content] = attr.ib( default=None, metadata=desert.metadata(fields.Nested(ContentSchema, allow_none=True))) def pretty_print(self: "Put") -> str: """Print out for cli.""" # pylint: disable=E1101 return f"Put of {self.key.to_string()} : {self.content.pretty_print()}"
class ReflogEntry: """Dataclass for reflog entries.""" reflog_id: str = attr.ib( metadata=desert.metadata(fields.Str(data_key="refLogId"))) ref_name: str = attr.ib( metadata=desert.metadata(fields.Str(data_key="refName"))) ref_type: str = attr.ib( metadata=desert.metadata(fields.Str(data_key="refType"))) commit_hash: str = attr.ib( metadata=desert.metadata(fields.Str(data_key="commitHash"))) parent_reflog_id: str = attr.ib( metadata=desert.metadata(fields.Str(data_key="parentRefLogId"))) operation_time: int = attr.ib( metadata=desert.metadata(fields.Int(data_key="operationTime"))) operation: str = attr.ib( metadata=desert.metadata(fields.Str(data_key="operation"))) source_hashes: List[str] = attr.ib(metadata=desert.metadata( fields.List(fields.Str(), data_key="sourceHashes")))
class A: x: str = module.field( metadata=desert.metadata(marshmallow.fields.NaiveDateTime()))
class Transplant: """Dataclass for Transplant operation.""" hashes_to_transplant: List[str] = attr.ib(metadata=desert.metadata( fields.List(fields.Str(), data_key="hashesToTransplant")))
class Game: """RawG Game. Currently only has attributes that are used by other projects. See https://api.rawg.io/docs/#operation/games_read for more attributes """ id: int slug: str name: str genres: List[Genre] rating: Decimal released: Optional[datetime.datetime] = dataclasses.field( default=None, metadata=desert.metadata( field=marshmallow.fields.DateTime("%Y-%m-%d")), ) background_image: Optional[str] = dataclasses.field( default=None, metadata=desert.metadata(field=marshmallow.fields.Url()), ) esrb_rating: Optional[Dict[Any, Any]] = None description_raw: Optional[str] = None metacritic: Optional[int] = None def get_description_with_max_length(self, max_length: int = 2048 ) -> Optional[str]: """Get description capping at a certain length. Useful for Discord messages or Embeds to make sure it isn't too large Args: max_length: the length to max at Returns: description raw at max length if too large """ if self.description_raw is not None and len( self.description_raw) > max_length: return self.description_raw[0:max_length - 3] + "..." else: return self.description_raw def get_rawg_url(self) -> Url: """The website URL for this game. Returns: rawg.io/{slug} Url """ return parse_url(f"{BASE_RAWG_URL}/games/{self.slug}") def get_api_url(self) -> Url: """The API URL for this game. Returns: api.rawg.io/{slug} Url """ return parse_url(f"{BASE_API_URL}/games/{self.slug}") def get_genres_list(self) -> List[str]: """Get just the genres strings not ID's. Returns: List[str] of genre names """ return [genre.name for genre in self.genres]