diff --git a/.github/workflows/commit-ibflex.yml b/.github/workflows/commit-ibflex.yml index 0e112a8..f341f09 100644 --- a/.github/workflows/commit-ibflex.yml +++ b/.github/workflows/commit-ibflex.yml @@ -8,7 +8,7 @@ jobs: runs-on: ubuntu-latest strategy: matrix: - python-version: [3.7, 3.8] + python-version: [3.7.17, 3.8] steps: - uses: actions/checkout@v2 diff --git a/ibflex/Types.py b/ibflex/Types.py index 6ab7555..842664a 100644 --- a/ibflex/Types.py +++ b/ibflex/Types.py @@ -1427,6 +1427,39 @@ class SymbolSummary(FlexElement): relatedTradeID: Optional[str] = None origTransactionID: Optional[str] = None relatedTransactionID: Optional[str] = None + settleDateTarget: Optional[datetime.date] = None + tradePrice: Optional[decimal.Decimal] = None + TradePrice: Optional[decimal.Decimal] = None + tradeMoney: Optional[decimal.Decimal] = None + taxes: Optional[decimal.Decimal] = None + ibCommission: Optional[decimal.Decimal] = None + ibCommissionCurrency: Optional[str] = None + netCash: Optional[decimal.Decimal] = None + closePrice: Optional[decimal.Decimal] = None + openCloseIndicator: Optional[enums.OpenClose] = None + notes: Optional[str] = None + cost: Optional[decimal.Decimal] = None + fifoPnlRealized: Optional[decimal.Decimal] = None + mtmPnl: Optional[decimal.Decimal] = None + origOrderID: Optional[str] = None + ibOrderID: Optional[str] = None + transactionID: Optional[str] = None + ibExecID: Optional[str] = None + rtn: Optional[str] = None + exchOrderId: Optional[str] = None + extExecID: Optional[str] = None + openDateTime: Optional[datetime.datetime] = None + holdingPeriodDateTime: Optional[datetime.datetime] = None + whenRealized: Optional[datetime.datetime] = None + whenReopened: Optional[datetime.datetime] = None + changeInPrice: Optional[decimal.Decimal] = None + changeInQuantity: Optional[decimal.Decimal] = None + initialInvestment: Optional[decimal.Decimal] = None + serialNumber: Optional[str] = None + deliveryType: Optional[str] = None + commodityType: Optional[str] = None + fineness: Optional[str] = None + weight: Optional[decimal.Decimal] = None @dataclass(frozen=True) @@ -2486,6 +2519,7 @@ class SecurityInfo(FlexElement): commodityType: Optional[str] = None fineness: Optional[decimal.Decimal] = None weight: Optional[str] = None + securityType: Optional[str] = None @dataclass(frozen=True) diff --git a/ibflex/parser.py b/ibflex/parser.py index af6b270..3f17d9d 100755 --- a/ibflex/parser.py +++ b/ibflex/parser.py @@ -173,6 +173,8 @@ def parse_element_attr( def prep_date(value: str) -> Tuple[int, int, int]: """Returns a tuple of (year, month, day). """ + if value == "MULTI": + return None date_format = DATE_FORMATS[len(value)][value.count('/')] return datetime.datetime.strptime(value, date_format).timetuple()[:3] @@ -189,6 +191,8 @@ def prep_datetime(value: str) -> Tuple[int, ...]: """ # HACK - some old data has ", " separator instead of ",". value = value.replace(", ", ",") + if value == "MULTI": + return None def merge_date_time(datestr: str, timestr: str) -> Tuple[int, ...]: """Convert presplit date/time strings into args ready for datetime().