Skip to content

Commit 64dfaab

Browse files
Sync client-python with OpenAPI spec (#993)
* Sync client-python with OpenAPI spec * Fix lint
1 parent 3c86a25 commit 64dfaab

File tree

6 files changed

+228
-129
lines changed

6 files changed

+228
-129
lines changed

massive/rest/benzinga.py

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
BenzingaGuidance,
1313
BenzingaNews,
1414
BenzingaRating,
15+
BenzingaBullsBearsSay,
1516
)
1617
from .models.common import Sort
1718
from .models.request import RequestOptionBuilder
@@ -479,3 +480,42 @@ def list_benzinga_ratings(
479480
deserializer=BenzingaRating.from_dict,
480481
options=options,
481482
)
483+
484+
def list_benzinga_bulls_bears_say(
485+
self,
486+
ticker: Optional[str] = None,
487+
ticker_any_of: Optional[str] = None,
488+
ticker_gt: Optional[str] = None,
489+
ticker_gte: Optional[str] = None,
490+
ticker_lt: Optional[str] = None,
491+
ticker_lte: Optional[str] = None,
492+
benzinga_id: Optional[str] = None,
493+
benzinga_id_any_of: Optional[str] = None,
494+
benzinga_id_gt: Optional[str] = None,
495+
benzinga_id_gte: Optional[str] = None,
496+
benzinga_id_lt: Optional[str] = None,
497+
benzinga_id_lte: Optional[str] = None,
498+
last_updated: Optional[str] = None,
499+
last_updated_gt: Optional[str] = None,
500+
last_updated_gte: Optional[str] = None,
501+
last_updated_lt: Optional[str] = None,
502+
last_updated_lte: Optional[str] = None,
503+
limit: Optional[int] = None,
504+
sort: Optional[str] = None,
505+
params: Optional[Dict[str, Any]] = None,
506+
raw: bool = False,
507+
options: Optional[RequestOptionBuilder] = None,
508+
) -> Union[Iterator[BenzingaBullsBearsSay], HTTPResponse]:
509+
"""
510+
Endpoint: GET /benzinga/v1/bulls-bears-say
511+
512+
A comprehensive database of analyst bull and bear case summaries for publicly traded companies, providing concise summaries of both bullish and bearish investment arguments to help investors see both sides of the story before making investment decisions.
513+
"""
514+
url = "/benzinga/v1/bulls-bears-say"
515+
return self._paginate(
516+
path=url,
517+
params=self._get_params(self.list_benzinga_bulls_bears_say, locals()),
518+
raw=raw,
519+
deserializer=BenzingaBullsBearsSay.from_dict,
520+
options=options,
521+
)

massive/rest/economy.py

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
FedInflation,
88
TreasuryYield,
99
FedInflationExpectations,
10+
FedLaborMarket,
1011
)
1112
from .models.common import Sort, Order
1213
from .models.request import RequestOptionBuilder
@@ -127,3 +128,43 @@ def list_inflation_expectations(
127128
result_key="results",
128129
options=options,
129130
)
131+
132+
def list_labor_market_indicators(
133+
self,
134+
date: Optional[str] = None,
135+
date_any_of: Optional[str] = None,
136+
date_gt: Optional[str] = None,
137+
date_gte: Optional[str] = None,
138+
date_lt: Optional[str] = None,
139+
date_lte: Optional[str] = None,
140+
limit: Optional[int] = None,
141+
sort: Optional[str] = None,
142+
params: Optional[Dict[str, Any]] = None,
143+
raw: bool = False,
144+
options: Optional[RequestOptionBuilder] = None,
145+
) -> Union[Iterator[FedLaborMarket], HTTPResponse]:
146+
"""
147+
Labor market indicators from the Federal Reserve, including unemployment rate, labor force participation, average hourly earnings, and job openings data.
148+
149+
:param date: Calendar date of the observation (YYYY-MM-DD).
150+
:param date_any_of: Filter equal to any of the values. Multiple values can be specified by using a comma separated list.
151+
:param date_gt: Filter greater than the value.
152+
:param date_gte: Filter greater than or equal to the value.
153+
:param date_lt: Filter less than the value.
154+
:param date_lte: Filter less than or equal to the value.
155+
:param limit: Limit the maximum number of results returned. Defaults to '100' if not specified. The maximum allowed limit is '50000'.
156+
:param sort: A comma separated list of sort columns. For each column, append '.asc' or '.desc' to specify the sort direction. The sort column defaults to 'date' if not specified. The sort order defaults to 'asc' if not specified.
157+
:param params: Additional query parameters.
158+
:param raw: Return raw HTTPResponse object if True, else return Iterator[FedLaborMarket].
159+
:param options: RequestOptionBuilder for additional headers or params.
160+
:return: An iterator of FedLaborMarket objects or HTTPResponse if raw=True.
161+
"""
162+
url = "/fed/v1/labor-market"
163+
164+
return self._paginate(
165+
path=url,
166+
params=self._get_params(self.list_labor_market_indicators, locals()),
167+
deserializer=FedLaborMarket.from_dict,
168+
raw=raw,
169+
options=options,
170+
)

massive/rest/futures.py

Lines changed: 79 additions & 91 deletions
Original file line numberDiff line numberDiff line change
@@ -59,14 +59,38 @@ def list_futures_aggregates(
5959

6060
def list_futures_contracts(
6161
self,
62+
date: Optional[str] = None,
63+
date_gt: Optional[str] = None,
64+
date_gte: Optional[str] = None,
65+
date_lt: Optional[str] = None,
66+
date_lte: Optional[str] = None,
6267
product_code: Optional[str] = None,
63-
first_trade_date: Optional[Union[str, date]] = None,
64-
last_trade_date: Optional[Union[str, date]] = None,
65-
as_of: Optional[Union[str, date]] = None,
66-
active: Optional[str] = None,
68+
product_code_any_of: Optional[str] = None,
69+
product_code_gt: Optional[str] = None,
70+
product_code_gte: Optional[str] = None,
71+
product_code_lt: Optional[str] = None,
72+
product_code_lte: Optional[str] = None,
73+
ticker: Optional[str] = None,
74+
ticker_any_of: Optional[str] = None,
75+
ticker_gt: Optional[str] = None,
76+
ticker_gte: Optional[str] = None,
77+
ticker_lt: Optional[str] = None,
78+
ticker_lte: Optional[str] = None,
79+
active: Optional[bool] = None,
6780
type: Optional[str] = None,
81+
type_any_of: Optional[str] = None,
82+
first_trade_date: Optional[str] = None,
83+
first_trade_date_gt: Optional[str] = None,
84+
first_trade_date_gte: Optional[str] = None,
85+
first_trade_date_lt: Optional[str] = None,
86+
first_trade_date_lte: Optional[str] = None,
87+
last_trade_date: Optional[str] = None,
88+
last_trade_date_gt: Optional[str] = None,
89+
last_trade_date_gte: Optional[str] = None,
90+
last_trade_date_lt: Optional[str] = None,
91+
last_trade_date_lte: Optional[str] = None,
6892
limit: Optional[int] = None,
69-
sort: Optional[Union[str, Sort]] = None,
93+
sort: Optional[str] = None,
7094
params: Optional[Dict[str, Any]] = None,
7195
raw: bool = False,
7296
options: Optional[RequestOptionBuilder] = None,
@@ -85,43 +109,43 @@ def list_futures_contracts(
85109
options=options,
86110
)
87111

88-
def get_futures_contract_details(
89-
self,
90-
ticker: str,
91-
as_of: Optional[Union[str, date]] = None,
92-
params: Optional[Dict[str, Any]] = None,
93-
raw: bool = False,
94-
options: Optional[RequestOptionBuilder] = None,
95-
) -> Union[FuturesContract, HTTPResponse]:
96-
"""
97-
Endpoint: GET /futures/vX/contracts/{ticker}
98-
99-
Returns details for a single contract at a specified point in time.
100-
(No next_url in the response -> just a single get).
101-
"""
102-
url = f"/futures/vX/contracts/{ticker}"
103-
return self._get(
104-
path=url,
105-
params=self._get_params(self.get_futures_contract_details, locals()),
106-
deserializer=FuturesContract.from_dict,
107-
raw=raw,
108-
result_key="results",
109-
options=options,
110-
)
111-
112112
def list_futures_products(
113113
self,
114114
name: Optional[str] = None,
115-
name_search: Optional[str] = None,
116-
as_of: Optional[Union[str, date]] = None,
115+
name_any_of: Optional[str] = None,
116+
name_gt: Optional[str] = None,
117+
name_gte: Optional[str] = None,
118+
name_lt: Optional[str] = None,
119+
name_lte: Optional[str] = None,
120+
product_code: Optional[str] = None,
121+
product_code_any_of: Optional[str] = None,
122+
product_code_gt: Optional[str] = None,
123+
product_code_gte: Optional[str] = None,
124+
product_code_lt: Optional[str] = None,
125+
product_code_lte: Optional[str] = None,
126+
date: Optional[str] = None,
127+
date_gt: Optional[str] = None,
128+
date_gte: Optional[str] = None,
129+
date_lt: Optional[str] = None,
130+
date_lte: Optional[str] = None,
117131
trading_venue: Optional[str] = None,
132+
trading_venue_any_of: Optional[str] = None,
133+
trading_venue_gt: Optional[str] = None,
134+
trading_venue_gte: Optional[str] = None,
135+
trading_venue_lt: Optional[str] = None,
136+
trading_venue_lte: Optional[str] = None,
118137
sector: Optional[str] = None,
138+
sector_any_of: Optional[str] = None,
119139
sub_sector: Optional[str] = None,
140+
sub_sector_any_of: Optional[str] = None,
120141
asset_class: Optional[str] = None,
142+
asset_class_any_of: Optional[str] = None,
121143
asset_sub_class: Optional[str] = None,
144+
asset_sub_class_any_of: Optional[str] = None,
122145
type: Optional[str] = None,
146+
type_any_of: Optional[str] = None,
123147
limit: Optional[int] = None,
124-
sort: Optional[Union[str, Sort]] = None,
148+
sort: Optional[str] = None,
125149
params: Optional[Dict[str, Any]] = None,
126150
raw: bool = False,
127151
options: Optional[RequestOptionBuilder] = None,
@@ -140,31 +164,6 @@ def list_futures_products(
140164
options=options,
141165
)
142166

143-
def get_futures_product_details(
144-
self,
145-
product_code: str,
146-
type: Optional[str] = None,
147-
as_of: Optional[Union[str, date]] = None,
148-
params: Optional[Dict[str, Any]] = None,
149-
raw: bool = False,
150-
options: Optional[RequestOptionBuilder] = None,
151-
) -> Union[FuturesProduct, HTTPResponse]:
152-
"""
153-
Endpoint: GET /futures/vX/products/{product_code}
154-
155-
Returns the details for a single product as it was at a specific day.
156-
(No next_url -> single get).
157-
"""
158-
url = f"/futures/vX/products/{product_code}"
159-
return self._get(
160-
path=url,
161-
params=self._get_params(self.get_futures_product_details, locals()),
162-
deserializer=FuturesProduct.from_dict,
163-
raw=raw,
164-
result_key="results",
165-
options=options,
166-
)
167-
168167
def list_futures_quotes(
169168
self,
170169
ticker: str,
@@ -233,10 +232,26 @@ def list_futures_trades(
233232

234233
def list_futures_schedules(
235234
self,
235+
product_code: Optional[str] = None,
236+
product_code_any_of: Optional[str] = None,
237+
product_code_gt: Optional[str] = None,
238+
product_code_gte: Optional[str] = None,
239+
product_code_lt: Optional[str] = None,
240+
product_code_lte: Optional[str] = None,
236241
session_end_date: Optional[str] = None,
242+
session_end_date_any_of: Optional[str] = None,
243+
session_end_date_gt: Optional[str] = None,
244+
session_end_date_gte: Optional[str] = None,
245+
session_end_date_lt: Optional[str] = None,
246+
session_end_date_lte: Optional[str] = None,
237247
trading_venue: Optional[str] = None,
248+
trading_venue_any_of: Optional[str] = None,
249+
trading_venue_gt: Optional[str] = None,
250+
trading_venue_gte: Optional[str] = None,
251+
trading_venue_lt: Optional[str] = None,
252+
trading_venue_lte: Optional[str] = None,
238253
limit: Optional[int] = None,
239-
sort: Optional[Union[str, Sort]] = None,
254+
sort: Optional[str] = None,
240255
params: Optional[Dict[str, Any]] = None,
241256
raw: bool = False,
242257
options: Optional[RequestOptionBuilder] = None,
@@ -256,42 +271,15 @@ def list_futures_schedules(
256271
options=options,
257272
)
258273

259-
def list_futures_schedules_by_product_code(
260-
self,
261-
product_code: str,
262-
session_end_date: Optional[str] = None,
263-
session_end_date_lt: Optional[str] = None,
264-
session_end_date_lte: Optional[str] = None,
265-
session_end_date_gt: Optional[str] = None,
266-
session_end_date_gte: Optional[str] = None,
267-
limit: Optional[int] = None,
268-
sort: Optional[Union[str, Sort]] = None,
269-
params: Optional[Dict[str, Any]] = None,
270-
raw: bool = False,
271-
options: Optional[RequestOptionBuilder] = None,
272-
) -> Union[Iterator[FuturesSchedule], HTTPResponse]:
273-
"""
274-
Endpoint: GET /futures/vX/products/{product_code}/schedules
275-
276-
Returns schedule data for a single product across (potentially) many trading dates.
277-
"""
278-
url = f"/futures/vX/products/{product_code}/schedules"
279-
return self._paginate(
280-
path=url,
281-
params=self._get_params(
282-
self.list_futures_schedules_by_product_code, locals()
283-
),
284-
raw=raw,
285-
deserializer=FuturesSchedule.from_dict,
286-
options=options,
287-
)
288-
289274
def list_futures_market_statuses(
290275
self,
291-
product_code_any_of: Optional[str] = None,
292276
product_code: Optional[str] = None,
277+
product_code_any_of: Optional[str] = None,
278+
product_code_gt: Optional[str] = None,
279+
product_code_gte: Optional[str] = None,
280+
product_code_lt: Optional[str] = None,
281+
product_code_lte: Optional[str] = None,
293282
limit: Optional[int] = None,
294-
sort: Optional[Union[str, Sort]] = None,
295283
params: Optional[Dict[str, Any]] = None,
296284
raw: bool = False,
297285
options: Optional[RequestOptionBuilder] = None,
@@ -320,7 +308,7 @@ def get_futures_snapshot(
320308
product_code_lt: Optional[str] = None,
321309
product_code_lte: Optional[str] = None,
322310
limit: Optional[int] = None,
323-
sort: Optional[Union[str, Sort]] = None,
311+
sort: Optional[str] = None,
324312
params: Optional[Dict[str, Any]] = None,
325313
raw: bool = False,
326314
options: Optional[RequestOptionBuilder] = None,

massive/rest/models/benzinga.py

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -322,3 +322,22 @@ def from_dict(d):
322322
ticker=d.get("ticker"),
323323
time=d.get("time"),
324324
)
325+
326+
327+
@modelclass
328+
class BenzingaBullsBearsSay:
329+
bear_case: Optional[str] = None
330+
benzinga_id: Optional[str] = None
331+
bull_case: Optional[str] = None
332+
last_updated: Optional[str] = None
333+
ticker: Optional[str] = None
334+
335+
@staticmethod
336+
def from_dict(d):
337+
return BenzingaBullsBearsSay(
338+
bear_case=d.get("bear_case"),
339+
benzinga_id=d.get("benzinga_id"),
340+
bull_case=d.get("bull_case"),
341+
last_updated=d.get("last_updated"),
342+
ticker=d.get("ticker"),
343+
)

massive/rest/models/economy.py

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -85,3 +85,22 @@ def from_dict(d):
8585
model_30_year=d.get("model_30_year"),
8686
model_5_year=d.get("model_5_year"),
8787
)
88+
89+
90+
@modelclass
91+
class FedLaborMarket:
92+
avg_hourly_earnings: Optional[float] = None
93+
date: Optional[str] = None
94+
job_openings: Optional[float] = None
95+
labor_force_participation_rate: Optional[float] = None
96+
unemployment_rate: Optional[float] = None
97+
98+
@staticmethod
99+
def from_dict(d):
100+
return FedLaborMarket(
101+
avg_hourly_earnings=d.get("avg_hourly_earnings"),
102+
date=d.get("date"),
103+
job_openings=d.get("job_openings"),
104+
labor_force_participation_rate=d.get("labor_force_participation_rate"),
105+
unemployment_rate=d.get("unemployment_rate"),
106+
)

0 commit comments

Comments
 (0)