Пример #1
0
def test_to_datetime():
    pydate = datetime.datetime(2016, 1, 1)

    assert to_datetime(np.datetime64("2016-01-01")) == pydate

    assert to_datetime(np.datetime64("2016-01-01 00:00:00")) == pydate

    assert to_datetime(datetime.date(2016, 1, 1)) == pydate

    assert to_datetime("2016-01-01") == pydate

    assert to_datetime("2016-01-01T00:00:00") == pydate
Пример #2
0
    def __call__(self, entry):
        if self.undefined:
            return True

        if self.smaller is not None:
            if entry["size"] is None or entry["size"] > self.smaller:
                return False

        if self.larger is not None:
            if entry["size"] is None or entry["size"] < self.larger:
                return False

        creation_date = to_datetime(entry["creation_date"])

        if self.newer is not None:
            if creation_date < self.newer:
                return False

        if self.older is not None:
            if creation_date > self.older:
                return False

        if self.match is not None:
            if not self._match(entry):
                return False

        # accesses
        # last_access

        return True
Пример #3
0
def test_to_datetime_2():
    assert to_datetime("1851-06-25T00:00") == datetime.datetime(1851, 6, 25)
    assert to_datetime("1851-06-25T06:00") == datetime.datetime(1851, 6, 25, 6)
    assert to_datetime("1851-06-25") == datetime.datetime(1851, 6, 25)

    assert to_datetime("18510625") == datetime.datetime(1851, 6, 25)
    assert to_datetime(18510625) == datetime.datetime(1851, 6, 25)

    assert to_datetime("1851-06-25 06:00:00") == datetime.datetime(
        1851, 6, 25, 6)
    assert to_datetime("1851-06-25T06:00:00") == datetime.datetime(
        1851, 6, 25, 6)
    assert to_datetime("1851-06-25T06:00:00Z") == datetime.datetime(
        1851, 6, 25, 6, tzinfo=datetime.timezone.utc)

    assert to_datetime(-2) == to_datetime(0) - datetime.timedelta(days=2)
Пример #4
0
    def __getitem__(self, n):
        # TODO: move to superclass
        if isinstance(n, int):
            return super().__getitem__(n)

        n = to_datetime(n)
        for field in self:
            if field.datetime() == n:
                return field

        raise KeyError(n)
Пример #5
0
    def __init__(self, *, bassin="atlantic", url=None):

        if url is None:
            url = URLS[bassin.lower()]

        path = download_and_cache(url)
        p = []
        with open(path) as f:
            lines = f
            for line in lines:

                if line[0] in (" ", "<", "\n"):
                    continue

                bassin = line[0:2]
                number = int(line[2:4])
                year = int(line[4:8])
                name = line[18:28].strip().lower()
                # id = line[0:8]

                # http://www.aoml.noaa.gov/hrd/hurdat/hurdat2-format-may2015.pdf

                for _ in range(0, int(line[33:36])):
                    line = next(lines)
                    knots = float(line[38:41])
                    pressure = np.NaN if line[43] == "-" else float(
                        line[43:47])
                    time = "%s-%s-%sZ%s:%s" % (
                        line[0:4],
                        line[4:6],
                        line[6:8],
                        line[10:12],
                        line[12:14],
                    )
                    p.append(
                        dict(
                            # id=id,
                            bassin=bassin,
                            number=number,
                            year=year,
                            name=name,
                            time=to_datetime(time),
                            type=line[16],
                            status=line[19:21],
                            lat=float(line[23:27]) * SIGN[line[27]],
                            lon=float(line[30:35]) * SIGN[line[35]],
                            knots=knots,
                            category=category(knots),
                            pressure=pressure,
                        ))
        self.cyclones = self.annotate(pd.DataFrame(p), style="cyclone-track")
Пример #6
0
 def to_datetime_list(self):
     # TODO: check if that can be done faster
     result = set()
     for s in self.get_fields():
         result.add(to_datetime(s.time))
     return sorted(result)
Пример #7
0
def parse_user_date(value):
    try:
        return to_datetime(value)
    except ValueError:
        return datetime.datetime.now() - humanize.as_timedelta(value)