示例#1
0
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")))
示例#2
0
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")))
示例#3
0
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")))
示例#4
0
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)))
示例#5
0
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)))
示例#6
0
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)))
示例#7
0
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)))
示例#8
0
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)))
示例#9
0
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")))
示例#10
0
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)
示例#11
0
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)),
    )
示例#12
0
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)
示例#13
0
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()}"
示例#14
0
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")))
示例#15
0
 class A:
     x: str = module.field(
         metadata=desert.metadata(marshmallow.fields.NaiveDateTime()))
示例#16
0
class Transplant:
    """Dataclass for Transplant operation."""

    hashes_to_transplant: List[str] = attr.ib(metadata=desert.metadata(
        fields.List(fields.Str(), data_key="hashesToTransplant")))
示例#17
0
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]