Ejemplo n.º 1
0
def normalize_date(date):
    """Normalize date fields as expected by swh workers.

    If date is a list, elect arbitrarily the first element of that
    list

    If date is (then) a string, parse it through
    dateutil.parser.parse to extract a datetime.

    Then normalize it through
    :class:`swh.model.model.TimestampWithTimezone`

    Returns
        The swh date object

    """
    if isinstance(date, list):
        date = date[0]
    if isinstance(date, str):
        date = iso8601.parse_date(date)

    tstz = TimestampWithTimezone.from_dict(date)

    return {
        "timestamp": tstz.timestamp.to_dict(),
        "offset": tstz.offset_minutes(),
    }
Ejemplo n.º 2
0
    def build_release(
        self,
        p_info: DepositPackageInfo,
        uncompressed_path: str,
        directory: Sha1Git,
    ) -> Optional[Release]:
        message = (
            f"{p_info.client}: Deposit {p_info.id} in collection {p_info.collection}"
        )

        if p_info.release_notes:
            message += "\n\n" + p_info.release_notes

        if not message.endswith("\n"):
            message += "\n"

        return Release(
            name=p_info.version.encode(),
            message=message.encode(),
            author=p_info.author,
            date=TimestampWithTimezone.from_dict(p_info.author_date),
            target=directory,
            target_type=ObjectType.DIRECTORY,
            synthetic=True,
        )
Ejemplo n.º 3
0
def test_normalize_timestamp_datetime(date, seconds, tz, offset, offset_bytes,
                                      microsecond):
    date = date.astimezone(tz).replace(microsecond=microsecond)
    assert TimestampWithTimezone.from_dict(date).to_dict() == {
        "timestamp": {
            "seconds": seconds,
            "microseconds": microsecond
        },
        "offset_bytes": offset_bytes,
    }
Ejemplo n.º 4
0
def test_normalize_timestamp_dict_invalid_timestamp(dict_input):
    with pytest.raises(ValueError, match="non-integer timestamp"):
        TimestampWithTimezone.from_dict(dict_input)
Ejemplo n.º 5
0
def test_normalize_timestamp_dict(dict_input, expected):
    assert TimestampWithTimezone.from_dict(dict_input).to_dict() == expected