Skip to content
This repository was archived by the owner on Nov 18, 2024. It is now read-only.

Commit 578d759

Browse files
committed
Removed version checking
1 parent 1e8df81 commit 578d759

File tree

3 files changed

+48
-6
lines changed

3 files changed

+48
-6
lines changed

pyproject.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ build-backend = "hatchling.build"
66
name = "thetadata"
77
version = "0.5.8"
88
authors = [
9-
{ name="Adler Weber", email="[email protected]" },
9+
{ name="Adler Weber", email="redacted" },
1010
{ name="Bailey Danseglio", email="[email protected]" },
1111
]
1212
description = "Python API for ThetaData"

thetadata/client.py

Lines changed: 46 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ def _verify_java():
4545

4646
if version < 11:
4747
print('Java 11 or higher is required to use this API. You are using using Java '
48-
+ version + '. Please upgrade to a newer version.')
48+
+ str(version) + '. Please upgrade to a newer version.')
4949
exit(1)
5050

5151

@@ -142,16 +142,14 @@ def _recv(self, n_bytes: int, progress_bar: bool = False) -> bytearray:
142142
part_size = min(MAX_PART_SIZE, n_bytes - bytes_downloaded)
143143
bytes_downloaded += part_size
144144
part = self._server.recv(part_size)
145+
if part.__len__() < 0:
146+
continue
145147
start += 1
146148
buffer[i: i + part_size] = part
147149

148150
assert bytes_downloaded == n_bytes
149151
return buffer
150152

151-
def _send_ver(self):
152-
ver_msg = f"MSG_CODE={MessageType.HIST.value}&version=0.5.8\n"
153-
self._server.sendall(ver_msg.encode("utf-8"))
154-
155153
def kill(self, ignore_err=True) -> None:
156154
"""Remotely kill the Terminal process.
157155
@@ -259,6 +257,49 @@ def get_hist_stock(
259257

260258
# LISTING DATA
261259

260+
def get_dates_stk(self, root: str, req: StockReqType) -> pd.Series:
261+
"""
262+
Get all option expirations.
263+
264+
:param req: The request type.
265+
:param root: The root symbol.
266+
:return: All dates that Theta Data provides data for given a request.
267+
:raises ResponseError: If the request failed.
268+
"""
269+
assert self._server is not None, _NOT_CONNECTED_MSG
270+
out = f"MSG_CODE={MessageType.ALL_DATES.value}&root={root}&sec={SecType.STOCK.value}&req={req.value}\n"
271+
self._server.send(out.encode("utf-8"))
272+
header = Header.parse(out, self._server.recv(20))
273+
body = ListBody.parse(out, header, self._recv(header.size), dates=True)
274+
return body.lst
275+
276+
def get_dates_opt(
277+
self,
278+
req: OptionReqType,
279+
root: str,
280+
exp: date,
281+
strike: float,
282+
right: OptionRight) -> pd.Series:
283+
"""
284+
Get all option expirations.
285+
:param req: The request type.
286+
:param root: The root symbol.
287+
:param exp: The expiration date. Must be after the start of `date_range`.
288+
:param strike: The strike price in USD, rounded to 1/10th of a cent.
289+
:param right: The right of an option.
290+
:param root: The root symbol.
291+
:return: All dates that Theta Data provides data for given a request.
292+
:raises ResponseError: If the request failed.
293+
"""
294+
assert self._server is not None, _NOT_CONNECTED_MSG
295+
strike = _format_strike(strike)
296+
exp_fmt = _format_date(exp)
297+
out = f"MSG_CODE={MessageType.ALL_DATES.value}&root={root}&exp={exp_fmt}&strike={strike}&right={right.value}&sec={SecType.OPTION.value}&req={req.value}\n"
298+
self._server.send(out.encode("utf-8"))
299+
header = Header.parse(out, self._server.recv(20))
300+
body = ListBody.parse(out, header, self._recv(header.size), dates=True)
301+
return body.lst
302+
262303
def get_expirations(self, root: str) -> pd.Series:
263304
"""
264305
Get all option expirations.

thetadata/enums.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -150,6 +150,7 @@ class MessageType(enum.Enum):
150150
LAST = 204
151151
ALL_ROOTS = 205
152152
LIST_END = 206
153+
ALL_DATES = 207
153154

154155
# Experimental
155156
REQUEST_SERVER_LIST = 300

0 commit comments

Comments
 (0)