Skip to content

Commit

Permalink
- mypy, flake8, pre-commit, pipenv
Browse files Browse the repository at this point in the history
- small refactoring
- tests
- lib is now doesn't rely on any dataframe framework
  • Loading branch information
ityutin committed Jul 9, 2020
1 parent ad56162 commit 70755ad
Show file tree
Hide file tree
Showing 27 changed files with 1,386 additions and 1,051 deletions.
18 changes: 18 additions & 0 deletions .pre-commit-config.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
repos:
- repo: https://github.com/ambv/black
rev: stable
hooks:
- id: black
args: ['--line-length', '120']
- repo: https://github.com/pre-commit/mirrors-mypy
rev: 'v0.780' # Use the sha / tag you want to point at
hooks:
- id: mypy
args: ['--config-file', 'mypy.ini']
- repo: https://gitlab.com/pycqa/flake8
rev: 3.8.2
hooks:
- id: flake8
args: ['--config', 'flake8.cfg']
additional_dependencies:
- isort<5 # https://github.com/gforcada/flake8-isort/issues/88
15 changes: 15 additions & 0 deletions Pipfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
[[source]]
name = "pypi"
url = "https://pypi.org/simple"
verify_ssl = true

[dev-packages]
black = "==19.10b0"
flake8 = "*"
mypy = "*"
pre-commit = "*"

[packages]

[requires]
python_version = "3.7"
276 changes: 276 additions & 0 deletions Pipfile.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

3 changes: 3 additions & 0 deletions df_and_order/common.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
from typing import Any

DF_TYPE = Any
28 changes: 16 additions & 12 deletions df_and_order/df_cache.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,8 @@
import pandas as pd
from abc import ABC, abstractmethod
from typing import Optional

from df_and_order.common import DF_TYPE


class DfCache(ABC):
"""
Expand All @@ -18,26 +19,29 @@ class DfCache(ABC):
load_kwargs: dict
Custom kwargs for load method you may want to pass to your implementation.
"""
def __init__(self,
save_args: Optional[list] = None,
save_kwargs: Optional[dict] = None,
load_args: Optional[list] = None,
load_kwargs: Optional[dict] = None):

def __init__(
self,
save_args: Optional[list] = None,
save_kwargs: Optional[dict] = None,
load_args: Optional[list] = None,
load_kwargs: Optional[dict] = None,
):
self._save_args = save_args or []
self._save_kwargs = save_kwargs or {}
self._load_args = load_args or []
self._load_kwargs = load_kwargs or {}

def save(self, df: pd.DataFrame, path: str):
self._save(df=df, path=path, *self._save_args, **self._save_kwargs)
def save(self, df: DF_TYPE, path: str):
self._save(df=df, path=path, *self._save_args, **self._save_kwargs) # type: ignore

def load(self, path: str) -> pd.DataFrame:
return self._load(path=path, *self._load_args, **self._load_kwargs)
def load(self, path: str) -> DF_TYPE:
return self._load(path=path, *self._load_args, **self._load_kwargs) # type: ignore

@abstractmethod
def _save(self, df: pd.DataFrame, path: str, *args, **kwargs):
def _save(self, df: DF_TYPE, path: str, *args, **kwargs):
pass

@abstractmethod
def _load(self, path: str, *args, **kwargs) -> pd.DataFrame:
def _load(self, path: str, *args, **kwargs) -> DF_TYPE:
pass
Loading

0 comments on commit 70755ad

Please sign in to comment.