Skip to content

Commit 37e049c

Browse files
committed
New release: 2.1.0
Some fixes to community complaints about code organization or assumptions around caching and system use edge cases etc. See changelog or git log for full details. Also includes starting to double up some pyproject.toml config for eventually converting this from a poetry project to a uv project.
1 parent 158197a commit 37e049c

File tree

2 files changed

+85
-2
lines changed

2 files changed

+85
-2
lines changed

docs/changelog.rst

Lines changed: 76 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,82 @@
44
2.0
55
---
66

7+
Version 2.1.0 (2025-12-06)
8+
^^^^^^^^^^^^^^^^^^^^^^^^^^
9+
10+
This release includes several bug fixes, performance improvements, and new features based on recent development work.
11+
12+
**Added**
13+
14+
* **New EFP Data Support**: Added Exchange for Physical (EFP) data structures and ticker fields for futures trading
15+
16+
* New ``EfpData`` dataclass with fields for basis points, implied future price, dividend impact, and expiration data
17+
* New ticker fields: ``bidEfp``, ``askEfp``, ``lastEfp``, ``openEfp``, ``highEfp``, ``lowEfp``, ``closeEfp``
18+
* Support for EFP tick types in the wrapper
19+
20+
* **Additional Ticker Fields**: New fields for enhanced market data access
21+
22+
* ``openInterest``, ``lastRthTrade``, ``lastRegTime``, ``optionBidExch``, ``optionAskExch``, ``bondFactorMultiplier``, ``creditmanMarkPrice``, ``creditmanSlowMarkPrice``, ``delayedLastTimestamp``, ``delayedHalted``, ``reutersMutualFunds``, ``etfNavClose``, ``etfNavPriorClose``, ``etfNavBid``, ``etfNavAsk``, ``etfNavLast``, ``etfFrozenNavLast``, ``etfNavHigh``, ``etfNavLow``, ``socialMarketAnalytics``, ``estimatedIpoMidpoint``, ``finalIpoLast``
23+
* New ``custGreeks`` option computation field
24+
* Enhanced ETF NAV (Net Asset Value) tracking fields
25+
26+
* **Environment Variable Configuration**: Added ability to override flexReport URL with environment variable
27+
28+
* New ``IB_FLEXREPORT_URL`` environment variable support
29+
* URL validation for custom endpoints
30+
* Updated documentation for flexible endpoint configuration
31+
32+
* **Improved Event Loop Handling**: Better event loop retrieval with fallback mechanisms
33+
34+
* Non-cached event loop access to avoid stale loop issues
35+
* Enhanced fallback for synchronous contexts
36+
* Better handling of closed event loops
37+
38+
* **Missing Tick Types**: Implemented various tick types that were missing from the library
39+
40+
* Support for tick types 57, 78, 79, 92-102, 22, 60, 90, 53, 38-44, 25, 26, 32, 33, 84, 85, 91, 100, 45, 88, 48, 77
41+
* Optimized tick processing with lookup maps instead of if/else chains
42+
* New helper methods for timestamp and RT volume tick processing
43+
44+
**Changed**
45+
46+
* **Modern Python Syntax**: Updated type annotations to use modern Python 3.10+ syntax
47+
48+
* Replaced ``Optional[Type]`` with ``Type | None`` union syntax
49+
* Converted ``Union[TypeA, TypeB]`` to ``TypeA | TypeB`` syntax
50+
* Updated imports to use more efficient organization
51+
52+
* **Ruff Configuration**: Improved code quality with expanded linter exclusions
53+
54+
* Added ``notebooks/``, ``upstream_api_architecture/``, and ``examples/`` to exclude list
55+
* Updated ruff rules for modern Python patterns
56+
57+
* **Dependency Management**: Added explicit ``tzdata`` dependency for timezone support
58+
59+
* Removed conditional import guard for ``zoneinfo`` since Python 3.9+ guarantees availability
60+
* Ensured timezone functionality works across all platforms
61+
62+
* **Performance Improvements**: Optimized tick processing with O(1) dictionary lookups
63+
64+
* Replaced sequential if/else chains with lookup maps for tick types
65+
* Added helper methods for timestamp and RT volume processing
66+
* More efficient string-to-datetime conversion
67+
68+
**Fixed**
69+
70+
* **Timebars Typo**: Fixed ``isUnset`` to ``isNan`` helper function in TimeBars class (:issue:`197`)
71+
* **FlexReport URL**: Fixed flexReport URL endpoint and added environment variable override support (:issue:`199`, :issue:`172`)
72+
* **Setuptools Warning**: Fixed deprecation warnings for modern setuptools (:issue:`198`)
73+
* **Event Loop Caching**: Fixed stale event loop bugs that occurred in complex async contexts (:issue:`160`, :issue:`186`, :issue:`159`)
74+
* **Empty Ticker Fields**: Fixed initialization of additional ticker fields to proper unset values
75+
* **Tick Type Processing**: Improved handling of various tick types with proper validation and processing
76+
* **URL Validation**: Added proper URL validation for flexReport requests
77+
78+
**Dependency Updates**
79+
80+
* Added explicit ``tzdata`` dependency to ensure timezone functionality across platforms (:issue:`188`)
81+
* Updated pyproject.toml to include license files and remove deprecated classifier (:issue:`182`)
82+
783
Version 2.0.1 (2025-06-22)
884
^^^^^^^^^^^^^^^^^^^^^^^^^^
985

pyproject.toml

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,15 @@
1+
[project]
2+
name = "ib_async"
3+
requires-python = ">=3.10"
4+
version = "2.1.0"
5+
16
[tool.poetry]
27
name = "ib_async"
3-
version = "2.0.1"
8+
version = "2.1.0"
49
description = "Python sync/async framework for Interactive Brokers API"
510
authors = ["Ewald de Wit"]
611
maintainers = ["Matt Stancliff <matt@matt.sh>"]
712
license = "BSD"
8-
license-files = ["LICENSE"]
913
readme = "README.md"
1014
repository = "https://github.com/ib-api-reloaded/ib_async"
1115
include = ["ib_async/py.typed"]
@@ -21,6 +25,9 @@ classifiers = [
2125
]
2226
keywords = ["ibapi", "tws", "asyncio", "jupyter", "interactive", "brokers", "async", "ib_async", "ib_insync"]
2327

28+
[tool.setuptools]
29+
license-files = ["LICENSE"]
30+
2431
[tool.poetry.dependencies]
2532
python = ">=3.10"
2633
aeventkit = "^2.1.0"

0 commit comments

Comments
 (0)