Skip to content

Commit ba78256

Browse files
authored
chore: Add ty for type checking (#24)
* Add ty to type checking * clean up * sync all groups * sync all extras
1 parent 7e5f559 commit ba78256

6 files changed

Lines changed: 67 additions & 24 deletions

File tree

.github/workflows/workflow.yaml

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -84,9 +84,11 @@ jobs:
8484
with:
8585
python-version: "3.13"
8686
- name: Install dependencies
87-
run: uv sync --group dev
87+
run: uv sync --all-groups --all-extras
8888
- name: Run pre-commit
8989
run: uv run prek run -v --show-diff-on-failure
90+
- name: Run ty
91+
run: uv run ty check
9092

9193
docs:
9294
name: Documentation

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ benchmark.json
77
benchmark_history.svg
88
__pycache__/
99
venv/
10+
.venv/
1011
site/
1112
docs/reference/
1213
*.egg-info

pyproject.toml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@ test = [
3131
]
3232
dev = [
3333
"prek>=0.2.30",
34+
"ty>=0.0.12",
3435
]
3536
[project.optional-dependencies]
3637
doc = [
@@ -84,6 +85,9 @@ disallow_untyped_calls = true
8485
disallow_untyped_defs = true
8586
disallow_incomplete_defs = true
8687

88+
[tool.ty.rules]
89+
no-matching-overload = "ignore"
90+
8791
[tool.commitizen]
8892
version_scheme = "semver"
8993
version_provider = "uv"

src/order_matching/executed_trades.py

Lines changed: 11 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,10 @@
33
from collections import defaultdict
44
from dataclasses import asdict
55
from datetime import datetime
6+
from typing import cast
67

78
import pandas as pd
8-
from pandera.typing import DataFrame
9+
from pandera.typing.pandas import DataFrame
910

1011
from order_matching.schemas import TradeDataSchema
1112
from order_matching.trade import Trade
@@ -66,13 +67,16 @@ def to_frame(self) -> DataFrame[TradeDataSchema]:
6667
"""
6768
trades = self.trades
6869
if len(trades) == 0:
69-
return pd.DataFrame()
70+
return cast(DataFrame[TradeDataSchema], pd.DataFrame())
7071
else:
71-
return pd.DataFrame.from_records([asdict(trade) for trade in trades]).assign(
72-
**{
73-
TradeDataSchema.side: lambda df: df[TradeDataSchema.side].astype(str),
74-
TradeDataSchema.execution: lambda df: df[TradeDataSchema.execution].astype(str),
75-
}
72+
return cast(
73+
DataFrame[TradeDataSchema],
74+
pd.DataFrame.from_records([asdict(trade) for trade in trades]).assign(
75+
**{
76+
TradeDataSchema.side: lambda df: df[TradeDataSchema.side].astype(str),
77+
TradeDataSchema.execution: lambda df: df[TradeDataSchema.execution].astype(str),
78+
}
79+
),
7680
)
7781

7882
def __add__(self, other: ExecutedTrades) -> ExecutedTrades:

src/order_matching/orders.py

Lines changed: 18 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
from __future__ import annotations
22

33
from dataclasses import asdict
4-
from typing import Generator, Iterator, Sequence
4+
from typing import Generator, Iterator, Sequence, cast
55

66
import pandas as pd
7-
from pandera.typing import DataFrame
7+
from pandera.typing.pandas import DataFrame
88

99
from order_matching.order import Order
1010
from order_matching.schemas import OrderDataSchema
@@ -63,20 +63,23 @@ def to_frame(self) -> DataFrame[OrderDataSchema]:
6363
DataFrame[OrderDataSchema]
6464
"""
6565
if len(self.orders) == 0:
66-
return pd.DataFrame()
66+
return cast(DataFrame[OrderDataSchema], pd.DataFrame())
6767
else:
68-
return pd.DataFrame.from_records([asdict(order) for order in self.orders]).assign(
69-
**{
70-
OrderDataSchema.side: lambda df: df[OrderDataSchema.side].astype(str),
71-
OrderDataSchema.execution: lambda df: df[OrderDataSchema.execution].astype(str),
72-
OrderDataSchema.status: lambda df: df[OrderDataSchema.status].astype(str),
73-
OrderDataSchema.timestamp: lambda df: pd.to_datetime(
74-
df[OrderDataSchema.timestamp], errors="coerce"
75-
),
76-
OrderDataSchema.expiration: lambda df: pd.to_datetime(
77-
df[OrderDataSchema.expiration], errors="coerce"
78-
),
79-
}
68+
return cast(
69+
DataFrame[OrderDataSchema],
70+
pd.DataFrame.from_records([asdict(order) for order in self.orders]).assign(
71+
**{
72+
OrderDataSchema.side: lambda df: df[OrderDataSchema.side].astype(str),
73+
OrderDataSchema.execution: lambda df: df[OrderDataSchema.execution].astype(str),
74+
OrderDataSchema.status: lambda df: df[OrderDataSchema.status].astype(str),
75+
OrderDataSchema.timestamp: lambda df: pd.to_datetime(
76+
df[OrderDataSchema.timestamp], errors="coerce"
77+
),
78+
OrderDataSchema.expiration: lambda df: pd.to_datetime(
79+
df[OrderDataSchema.expiration], errors="coerce"
80+
),
81+
}
82+
),
8083
)
8184

8285
@property

uv.lock

Lines changed: 30 additions & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)