Skip to content

Commit

Permalink
bring back pandera schema
Browse files Browse the repository at this point in the history
  • Loading branch information
clstaudt committed Sep 8, 2022
1 parent 2f49ffd commit f9883da
Show file tree
Hide file tree
Showing 4 changed files with 44 additions and 43 deletions.
1 change: 1 addition & 0 deletions requirements.txt
Original file line number Diff line number Diff line change
Expand Up @@ -10,3 +10,4 @@ ics
babel
loguru
pdfkit
pandera
12 changes: 6 additions & 6 deletions tuttle/calendar.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,11 +9,11 @@
import pandas
import datetime

# from pandera.typing import DataFrame
# from pandera import check_io
from pandera.typing import DataFrame
from pandera import check_io
from pandas import DataFrame

# from . import schema
from . import schema


def parse_pyicloud_datetime(dt_list):
Expand All @@ -28,7 +28,7 @@ class Calendar:
def __init__(self, name: str):
self.name = name

# @check_io(out=schema.time_tracking)
@check_io(out=schema.time_tracking)
def to_data(self) -> DataFrame:
"""Convert events to dataframe."""
raise NotImplementedError("Abstract base class")
Expand Down Expand Up @@ -72,7 +72,7 @@ def to_raw_data(self) -> DataFrame:
)
return event_data_raw

# @check_io(out=schema.time_tracking)
@check_io(out=schema.time_tracking)
def to_data(self) -> DataFrame:
"""Convert ics.Calendar to pandas.DataFrame"""
event_data = pandas.DataFrame(
Expand Down Expand Up @@ -129,7 +129,7 @@ def to_raw_data(self) -> DataFrame:
event_data_raw = pandas.DataFrame(all_events)
return event_data_raw

# @check_io(out=schema.time_tracking)
@check_io(out=schema.time_tracking)
def to_data(self) -> DataFrame:
"""Convert iCloud calendar events to time tracking data format."""

Expand Down
46 changes: 23 additions & 23 deletions tuttle/schema.py
Original file line number Diff line number Diff line change
@@ -1,26 +1,26 @@
# """Pandera schemata."""
# from pandera import (
# SchemaModel,
# DataFrameSchema,
# Column,
# Index,
# DateTime,
# Timedelta,
# String,
# )
"""Pandera schemata."""
from pandera import (
SchemaModel,
DataFrameSchema,
Column,
Index,
DateTime,
Timedelta,
String,
)


# time_tracking = DataFrameSchema(
# # TODO: fix datetime type
# # index=Index(DateTime, name="begin", allow_duplicates=True),
# columns={
# # "begin": Column(Timestamp, nullable=True),
# # "end": Column(DateTime, nullable=True),
# "title": Column(String, nullable=True),
# "tag": Column(String),
# "description": Column(String, nullable=True),
# "duration": Column(Timedelta),
# },
# )
time_tracking = DataFrameSchema(
# TODO: fix datetime type
# index=Index(DateTime, name="begin", allow_duplicates=True),
columns={
# "begin": Column(Timestamp, nullable=True),
# "end": Column(DateTime, nullable=True),
"title": Column(String, nullable=True),
"tag": Column(String),
"description": Column(String, nullable=True),
"duration": Column(Timedelta),
},
)

# time_planning = time_tracking # REVIEW: identical?
time_planning = time_tracking # REVIEW: identical?
28 changes: 14 additions & 14 deletions tuttle/timetracking.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,12 +8,12 @@

import pandas

# from pandera import check_io
# from pandera.typing import DataFrame
from pandera import check_io
from pandera.typing import DataFrame
from pandas import DataFrame


# from . import schema
from . import schema
from .calendar import Calendar, ICloudCalendar, FileCalendar
from .model import (
TimeTrackingItem,
Expand Down Expand Up @@ -113,7 +113,7 @@ def export_timesheet(
# IMPORT


# @check_io(out=schema.time_tracking)
@check_io(out=schema.time_tracking)
def import_from_calendar(cal: Calendar) -> DataFrame:
"""Convert the raw calendar to time tracking data table."""
if issubclass(type(cal), ICloudCalendar):
Expand All @@ -135,9 +135,9 @@ class Toggl:
description_col = "Description"


# @check_io(
# out=schema.time_tracking,
# )
@check_io(
out=schema.time_tracking,
)
def import_from_spreadsheet(
path,
preset: str = None,
Expand Down Expand Up @@ -223,9 +223,9 @@ def total_time_tracked(by: str) -> DataFrame:
raise ValueError()


# @check_io(
# time_tracking_data=schema.time_tracking,
# )
@check_io(
time_tracking_data=schema.time_tracking,
)
def progress(
project: Project,
time_tracking_data: DataFrame,
Expand All @@ -242,9 +242,9 @@ def progress(
return total_time.loc[tag]["duration"] / budget


# @check_io(
# out=schema.time_planning,
# )
@check_io(
out=schema.time_planning,
)
def get_time_planning_data(
source,
from_date: datetime.date = None,
Expand All @@ -257,6 +257,6 @@ def get_time_planning_data(
planning_data = cal.to_data()
elif isinstance(source, pandas.DataFrame):
planning_data = source
# schema.time_tracking.validate(planning_data)
schema.time_tracking.validate(planning_data)
planning_data = planning_data[str(from_date) :]
return planning_data

0 comments on commit f9883da

Please sign in to comment.