File size: 17,451 Bytes
203c118
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
### THIS FILE IS AUTO-GENERATED. DO NOT EDIT. ###

import datetime
from typing import Literal, Optional, Union

from openbb_core.app.model.field import OpenBBField
from openbb_core.app.model.obbject import OBBject
from openbb_core.app.static.container import Container
from openbb_core.app.static.utils.decorators import exception_handler, validate
from openbb_core.app.static.utils.filters import filter_inputs
from typing_extensions import Annotated


class ROUTER_commodity(Container):
    """/commodity
    petroleum_status_report
    /price
    short_term_energy_outlook
    """

    def __repr__(self) -> str:
        return self.__doc__ or ""

    @exception_handler
    @validate
    def petroleum_status_report(
        self,
        start_date: Annotated[
            Union[datetime.date, None, str],
            OpenBBField(description="Start date of the data, in YYYY-MM-DD format."),
        ] = None,
        end_date: Annotated[
            Union[datetime.date, None, str],
            OpenBBField(description="End date of the data, in YYYY-MM-DD format."),
        ] = None,
        provider: Annotated[
            Optional[Literal["eia"]],
            OpenBBField(
                description="The provider to use, by default None. If None, the priority list configured in the settings is used. Default priority: eia."
            ),
        ] = None,
        **kwargs
    ) -> OBBject:
        """EIA Weekly Petroleum Status Report.

        Parameters
        ----------
        provider : str
            The provider to use, by default None. If None, the priority list configured in the settings is used. Default priority: eia.
        start_date : Union[date, None, str]
            Start date of the data, in YYYY-MM-DD format.
        end_date : Union[date, None, str]
            End date of the data, in YYYY-MM-DD format.
        category : Literal['balance_sheet', 'inputs_and_production', 'refiner_blender_net_production', 'crude_petroleum_stocks', 'gasoline_fuel_stocks', 'total_gasoline_by_sub_padd', 'distillate_fuel_oil_stocks', 'imports', 'imports_by_country', 'weekly_estimates', 'spot_prices_crude_gas_heating', 'spot_prices_diesel_jet_fuel_propane', 'retail_prices']
            The group of data to be returned. The default is the balance sheet. (provider: eia)
        table : Optional[str]
            The specific table element within the category to be returned, default is 'stocks', if the category is 'weekly_estimates', else 'all'.
                Note: Choices represent all available tables from the entire collection and are not all available for every category.
                Invalid choices will raise a ValidationError with a message indicating the valid choices for the selected category.
                Choices are:
                    all
                    conventional_gas
                    crude
                    crude_production
                    crude_production_avg
                    diesel
                    ethanol_plant_production
                    ethanol_plant_production_avg
                    exports
                    exports_avg
                    heating_oil
                    imports
                    imports_avg
                    imports_by_country
                    imports_by_country_avg
                    inputs_and_utilization
                    inputs_and_utilization_avg
                    jet_fuel
                    monthly
                    net_imports_inc_spr_avg
                    net_imports_incl_spr
                    net_production
                    net_production_avg
                    net_production_by_product
                    net_production_by_production_avg
                    product_by_region
                    product_by_region_avg
                    product_supplied
                    product_supplied_avg
                    propane
                    rbob
                    refiner_blender_net_production
                    refiner_blender_net_production_avg
                    stocks
                    supply
                    supply_avg
                    ulta_low_sulfur_distillate_reclassification
                    ulta_low_sulfur_distillate_reclassification_avg
                    weekly
                Multiple comma separated items allowed. (provider: eia)
        use_cache : bool
            Subsequent requests for the same source data are cached for the session using ALRU cache. (provider: eia)

        Returns
        -------
        OBBject
            results : list[PetroleumStatusReport]
                Serializable results.
            provider : Optional[str]
                Provider name.
            warnings : Optional[list[Warning_]]
                list of warnings.
            chart : Optional[Chart]
                Chart object.
            extra : Dict[str, Any]
                Extra info.

        PetroleumStatusReport
        ---------------------
        date : date
            The date of the data.
        table : Optional[str]
            Table name for the data.
        symbol : str
            Symbol representing the entity requested in the data.
        order : Optional[int]
            Presented order of the data, relative to the table.
        title : Optional[str]
            Title of the data.
        value : Union[int, float]
            Value of the data.
        unit : Optional[str]
            Unit or scale of the data.

        Examples
        --------
        >>> from openbb import obb
        >>> # Get the EIA's Weekly Petroleum Status Report.
        >>> obb.commodity.petroleum_status_report(provider='eia')
        >>> # Select the category of data, and filter for a specific table within the report.
        >>> obb.commodity.petroleum_status_report(category='weekly_estimates', table='imports', provider='eia')
        """  # noqa: E501

        return self._run(
            "/commodity/petroleum_status_report",
            **filter_inputs(
                provider_choices={
                    "provider": self._get_provider(
                        provider,
                        "commodity.petroleum_status_report",
                        ("eia",),
                    )
                },
                standard_params={
                    "start_date": start_date,
                    "end_date": end_date,
                },
                extra_params=kwargs,
                info={
                    "category": {
                        "eia": {
                            "multiple_items_allowed": False,
                            "choices": [
                                "balance_sheet",
                                "inputs_and_production",
                                "refiner_blender_net_production",
                                "crude_petroleum_stocks",
                                "gasoline_fuel_stocks",
                                "total_gasoline_by_sub_padd",
                                "distillate_fuel_oil_stocks",
                                "imports",
                                "imports_by_country",
                                "weekly_estimates",
                                "spot_prices_crude_gas_heating",
                                "spot_prices_diesel_jet_fuel_propane",
                                "retail_prices",
                            ],
                        }
                    },
                    "table": {
                        "eia": {
                            "multiple_items_allowed": True,
                            "choices": [
                                "all",
                                "conventional_gas",
                                "crude",
                                "crude_production",
                                "crude_production_avg",
                                "diesel",
                                "ethanol_plant_production",
                                "ethanol_plant_production_avg",
                                "exports",
                                "exports_avg",
                                "heating_oil",
                                "imports",
                                "imports_avg",
                                "imports_by_country",
                                "imports_by_country_avg",
                                "inputs_and_utilization",
                                "inputs_and_utilization_avg",
                                "jet_fuel",
                                "monthly",
                                "net_imports_inc_spr_avg",
                                "net_imports_incl_spr",
                                "net_production",
                                "net_production_avg",
                                "net_production_by_product",
                                "net_production_by_production_avg",
                                "product_by_region",
                                "product_by_region_avg",
                                "product_supplied",
                                "product_supplied_avg",
                                "propane",
                                "rbob",
                                "refiner_blender_net_production",
                                "refiner_blender_net_production_avg",
                                "stocks",
                                "supply",
                                "supply_avg",
                                "ulta_low_sulfur_distillate_reclassification",
                                "ulta_low_sulfur_distillate_reclassification_avg",
                                "weekly",
                            ],
                        }
                    },
                },
            )
        )

    @property
    def price(self):
        # pylint: disable=import-outside-toplevel
        from . import commodity_price

        return commodity_price.ROUTER_commodity_price(
            command_runner=self._command_runner
        )

    @exception_handler
    @validate
    def short_term_energy_outlook(
        self,
        start_date: Annotated[
            Union[datetime.date, None, str],
            OpenBBField(description="Start date of the data, in YYYY-MM-DD format."),
        ] = None,
        end_date: Annotated[
            Union[datetime.date, None, str],
            OpenBBField(description="End date of the data, in YYYY-MM-DD format."),
        ] = None,
        provider: Annotated[
            Optional[Literal["eia"]],
            OpenBBField(
                description="The provider to use, by default None. If None, the priority list configured in the settings is used. Default priority: eia."
            ),
        ] = None,
        **kwargs
    ) -> OBBject:
        """Monthly short term (18 month) projections using EIA's STEO model.

        Source: www.eia.gov/steo/


        Parameters
        ----------
        provider : str
            The provider to use, by default None. If None, the priority list configured in the settings is used. Default priority: eia.
        start_date : Union[date, None, str]
            Start date of the data, in YYYY-MM-DD format.
        end_date : Union[date, None, str]
            End date of the data, in YYYY-MM-DD format.
        symbol : Optional[str]
            Symbol to get data for. If provided, overrides the 'table' parameter to return only the specified symbol from the STEO API. Multiple comma separated items allowed. (provider: eia)
        table : Literal['01', '02', '03a', '03b', '03c', '03d', '03e', '04a', '04b', '04c', '04d', '05a', '05b', '06', '07a', '07b', '07c', '07d1', '07d2', '07e', '08', '09a', '09b', '09c', '10a', '10b']
            The specific table within the STEO dataset. Default is '01'. When 'symbol' is provided, this parameter is ignored.
                    01: US Energy Markets Summary
                    02: Nominal Energy Prices
                    03a: World Petroleum and Other Liquid Fuels Production, Consumption, and Inventories
                    03b: Non-OPEC Petroleum and Other Liquid Fuels Production
                    03c: World Petroleum and Other Liquid Fuels Production
                    03d: World Crude Oil Production
                    03e: World Petroleum and Other Liquid Fuels Consumption
                    04a: US Petroleum and Other Liquid Fuels Supply, Consumption, and Inventories
                    04b: US Hydrocarbon Gas Liquids (HGL) and Petroleum Refinery Balances
                    04c: US Regional Motor Gasoline Prices and Inventories
                    04d: US Biofuel Supply, Consumption, and Inventories
                    05a: US Natural Gas Supply, Consumption, and Inventories
                    05b: US Regional Natural Gas Prices
                    06: US Coal Supply, Consumption, and Inventories
                    07a: US Electricity Industry Overview
                    07b: US Regional Electricity Retail Sales
                    07c: US Regional Electricity Prices
                    07d1: US Regional Electricity Generation, Electric Power Sector
                    07d2: US Regional Electricity Generation, Electric Power Sector, continued
                    07e: US Electricity Generating Capacity
                    08: US Renewable Energy Consumption
                    09a: US Macroeconomic Indicators and CO2 Emissions
                    09b: US Regional Macroeconomic Data
                    09c: US Regional Weather Data
                    10a: Drilling Productivity Metrics
                    10b: Crude Oil and Natural Gas Production from Shale and Tight Formations (provider: eia)
        frequency : Literal['month', 'quarter', 'annual']
            The frequency of the data. Default is 'month'. (provider: eia)

        Returns
        -------
        OBBject
            results : list[ShortTermEnergyOutlook]
                Serializable results.
            provider : Optional[str]
                Provider name.
            warnings : Optional[list[Warning_]]
                list of warnings.
            chart : Optional[Chart]
                Chart object.
            extra : Dict[str, Any]
                Extra info.

        ShortTermEnergyOutlook
        ----------------------
        date : date
            The date of the data.
        table : Optional[str]
            Table name for the data.
        symbol : str
            Symbol representing the entity requested in the data.
        order : Optional[int]
            Presented order of the data, relative to the table.
        title : Optional[str]
            Title of the data.
        value : Union[int, float]
            Value of the data.
        unit : Optional[str]
            Unit or scale of the data.

        Examples
        --------
        >>> from openbb import obb
        >>> # Get the EIA's Short Term Energy Outlook.
        >>> obb.commodity.short_term_energy_outlook(provider='eia')
        >>> # Select the specific table of data from the STEO. Table 03d is World Crude Oil Production.
        >>> obb.commodity.short_term_energy_outlook(table='03d', provider='eia')
        """  # noqa: E501

        return self._run(
            "/commodity/short_term_energy_outlook",
            **filter_inputs(
                provider_choices={
                    "provider": self._get_provider(
                        provider,
                        "commodity.short_term_energy_outlook",
                        ("eia",),
                    )
                },
                standard_params={
                    "start_date": start_date,
                    "end_date": end_date,
                },
                extra_params=kwargs,
                info={
                    "symbol": {
                        "eia": {"multiple_items_allowed": True, "choices": None}
                    },
                    "table": {
                        "eia": {
                            "multiple_items_allowed": False,
                            "choices": [
                                "01",
                                "02",
                                "03a",
                                "03b",
                                "03c",
                                "03d",
                                "03e",
                                "04a",
                                "04b",
                                "04c",
                                "04d",
                                "05a",
                                "05b",
                                "06",
                                "07a",
                                "07b",
                                "07c",
                                "07d1",
                                "07d2",
                                "07e",
                                "08",
                                "09a",
                                "09b",
                                "09c",
                                "10a",
                                "10b",
                            ],
                        }
                    },
                    "frequency": {
                        "eia": {
                            "multiple_items_allowed": False,
                            "choices": ["month", "quarter", "annual"],
                        }
                    },
                },
            )
        )