athena-intelligence 0.1.210__py3-none-any.whl → 0.1.303__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (62) hide show
  1. athena/__init__.py +232 -71
  2. athena/agents/__init__.py +33 -1
  3. athena/agents/client.py +81 -18
  4. athena/aop/client.py +2 -2
  5. athena/aop/raw_client.py +10 -11
  6. athena/assets/client.py +359 -2
  7. athena/assets/raw_client.py +562 -0
  8. athena/base_client.py +122 -22
  9. athena/client.py +23 -21
  10. athena/core/__init__.py +73 -20
  11. athena/core/client_wrapper.py +2 -2
  12. athena/core/force_multipart.py +4 -2
  13. athena/core/http_response.py +1 -1
  14. athena/core/pydantic_utilities.py +5 -2
  15. athena/environment.py +1 -2
  16. athena/errors/__init__.py +42 -7
  17. athena/errors/not_found_error.py +1 -2
  18. athena/query/__init__.py +28 -1
  19. athena/query/types/__init__.py +30 -1
  20. athena/threads/raw_client.py +4 -5
  21. athena/tools/__init__.py +47 -3
  22. athena/tools/client.py +161 -31
  23. athena/tools/raw_client.py +36 -34
  24. athena/tools/sheets/__init__.py +30 -0
  25. athena/tools/sheets/client.py +100 -122
  26. athena/tools/sheets/raw_client.py +91 -94
  27. athena/tools/sheets/types/__init__.py +36 -0
  28. athena/tools/sheets/types/update_sheet_range_request_values_item_item.py +5 -0
  29. athena/tools/types/__init__.py +28 -1
  30. athena/types/__init__.py +196 -54
  31. athena/types/aop_async_execute_response_out.py +0 -5
  32. athena/types/aop_execute_response_out.py +7 -6
  33. athena/types/backgroundcolor.py +7 -0
  34. athena/types/{document_chunk.py → border_model.py} +7 -4
  35. athena/types/border_style.py +7 -0
  36. athena/types/borders_model.py +58 -0
  37. athena/types/cell_format.py +49 -0
  38. athena/types/cell_format_horizontal_alignment.py +5 -0
  39. athena/types/cell_format_vertical_alignment.py +5 -0
  40. athena/types/color.py +7 -0
  41. athena/types/conversation_asset_info.py +13 -2
  42. athena/types/conversation_message.py +42 -0
  43. athena/types/conversation_result.py +67 -0
  44. athena/types/creatable_asset_type.py +5 -0
  45. athena/types/create_asset_response_out.py +46 -0
  46. athena/types/create_project_response_out.py +51 -0
  47. athena/types/dimension_properties.py +49 -0
  48. athena/types/get_table_response.py +7 -2
  49. athena/types/grid_range.py +39 -0
  50. athena/types/{file_chunk_request_out.py → number_format_model.py} +8 -4
  51. athena/types/number_format_type.py +21 -0
  52. athena/types/sheet.py +76 -0
  53. athena/types/tabcolor.py +7 -0
  54. athena/types/table_row_data.py +5 -0
  55. athena/types/text_format_model.py +28 -0
  56. athena/types/textrotation.py +5 -0
  57. athena/types/{asset_not_found_error.py → theme_color.py} +3 -2
  58. athena/types/thread_status_response_out.py +5 -0
  59. athena/types/wrap_strategy.py +5 -0
  60. {athena_intelligence-0.1.210.dist-info → athena_intelligence-0.1.303.dist-info}/METADATA +1 -1
  61. {athena_intelligence-0.1.210.dist-info → athena_intelligence-0.1.303.dist-info}/RECORD +62 -39
  62. {athena_intelligence-0.1.210.dist-info → athena_intelligence-0.1.303.dist-info}/WHEEL +0 -0
@@ -8,10 +8,15 @@ from ...core.client_wrapper import AsyncClientWrapper, SyncClientWrapper
8
8
  from ...core.http_response import AsyncHttpResponse, HttpResponse
9
9
  from ...core.pydantic_utilities import parse_obj_as
10
10
  from ...core.request_options import RequestOptions
11
+ from ...core.serialization import convert_and_respect_annotation_metadata
11
12
  from ...errors.unprocessable_entity_error import UnprocessableEntityError
13
+ from ...types.cell_format import CellFormat
12
14
  from ...types.create_new_sheet_tab_response import CreateNewSheetTabResponse
13
15
  from ...types.get_table_response import GetTableResponse
16
+ from ...types.sheet import Sheet
14
17
  from ...types.sheet_operation_response import SheetOperationResponse
18
+ from ...types.table_row_data import TableRowData
19
+ from .types.update_sheet_range_request_values_item_item import UpdateSheetRangeRequestValuesItemItem
15
20
 
16
21
  # this is used as the default value for optional parameters
17
22
  OMIT = typing.cast(typing.Any, ...)
@@ -502,10 +507,9 @@ class RawSheetsClient:
502
507
  asset_id: str,
503
508
  end_column: int,
504
509
  end_row: int,
510
+ formatting: CellFormat,
505
511
  start_column: int,
506
512
  start_row: int,
507
- type: str,
508
- value_json: str,
509
513
  sheet_id: typing.Optional[int] = OMIT,
510
514
  request_options: typing.Optional[RequestOptions] = None,
511
515
  ) -> HttpResponse[SheetOperationResponse]:
@@ -523,18 +527,15 @@ class RawSheetsClient:
523
527
  end_row : int
524
528
  1-based ending row index
525
529
 
530
+ formatting : CellFormat
531
+ Cell format
532
+
526
533
  start_column : int
527
534
  1-based starting column index
528
535
 
529
536
  start_row : int
530
537
  1-based starting row index
531
538
 
532
- type : str
533
- Formatting type (e.g. backgroundColor, textFormat, borders, etc.)
534
-
535
- value_json : str
536
- JSON string for value param (e.g. '"#FF0000"' or '{"fontSize":12}')
537
-
538
539
  sheet_id : typing.Optional[int]
539
540
  Sheet ID (defaults to 1)
540
541
 
@@ -553,11 +554,12 @@ class RawSheetsClient:
553
554
  "asset_id": asset_id,
554
555
  "end_column": end_column,
555
556
  "end_row": end_row,
557
+ "formatting": convert_and_respect_annotation_metadata(
558
+ object_=formatting, annotation=CellFormat, direction="write"
559
+ ),
556
560
  "sheet_id": sheet_id,
557
561
  "start_column": start_column,
558
562
  "start_row": start_row,
559
- "type": type,
560
- "value_json": value_json,
561
563
  },
562
564
  headers={
563
565
  "content-type": "application/json",
@@ -597,7 +599,8 @@ class RawSheetsClient:
597
599
  asset_id: str,
598
600
  start_column: int,
599
601
  start_row: int,
600
- values: typing.Sequence[str],
602
+ values: typing.Sequence[typing.Sequence[typing.Optional[UpdateSheetRangeRequestValuesItemItem]]],
603
+ formatting: typing.Optional[typing.Sequence[typing.Sequence[typing.Optional[CellFormat]]]] = OMIT,
601
604
  sheet_id: typing.Optional[int] = OMIT,
602
605
  request_options: typing.Optional[RequestOptions] = None,
603
606
  ) -> HttpResponse[SheetOperationResponse]:
@@ -615,8 +618,11 @@ class RawSheetsClient:
615
618
  start_row : int
616
619
  1-based starting row index
617
620
 
618
- values : typing.Sequence[str]
619
- List of pipe-separated strings representing rows (e.g. ['A1|B1|C1', 'A2|B2|C2'])
621
+ values : typing.Sequence[typing.Sequence[typing.Optional[UpdateSheetRangeRequestValuesItemItem]]]
622
+ 2D list of cells for each row
623
+
624
+ formatting : typing.Optional[typing.Sequence[typing.Sequence[typing.Optional[CellFormat]]]]
625
+ Optional 2D list of cell formats matching the structure of values. Each row is a list of CellFormat objects for each cell in that row. Use None for cells without formatting. numberFormat is not required unless user explicity asked to change
620
626
 
621
627
  sheet_id : typing.Optional[int]
622
628
  Sheet ID (defaults to 1)
@@ -634,10 +640,19 @@ class RawSheetsClient:
634
640
  method="POST",
635
641
  json={
636
642
  "asset_id": asset_id,
643
+ "formatting": convert_and_respect_annotation_metadata(
644
+ object_=formatting,
645
+ annotation=typing.Sequence[typing.Sequence[typing.Optional[CellFormat]]],
646
+ direction="write",
647
+ ),
637
648
  "sheet_id": sheet_id,
638
649
  "start_column": start_column,
639
650
  "start_row": start_row,
640
- "values": values,
651
+ "values": convert_and_respect_annotation_metadata(
652
+ object_=values,
653
+ annotation=typing.Sequence[typing.Sequence[typing.Optional[UpdateSheetRangeRequestValuesItemItem]]],
654
+ direction="write",
655
+ ),
641
656
  },
642
657
  headers={
643
658
  "content-type": "application/json",
@@ -750,6 +765,7 @@ class RawSheetsClient:
750
765
  self,
751
766
  *,
752
767
  asset_id: str,
768
+ new_sheet_id: typing.Optional[int] = OMIT,
753
769
  sheet_id: typing.Optional[int] = OMIT,
754
770
  request_options: typing.Optional[RequestOptions] = None,
755
771
  ) -> HttpResponse[SheetOperationResponse]:
@@ -761,6 +777,9 @@ class RawSheetsClient:
761
777
  asset_id : str
762
778
  The ID of the spreadsheet asset
763
779
 
780
+ new_sheet_id : typing.Optional[int]
781
+ New sheet ID for the duplicated sheet (auto-generated if not provided)
782
+
764
783
  sheet_id : typing.Optional[int]
765
784
  Sheet ID to duplicate
766
785
 
@@ -777,6 +796,7 @@ class RawSheetsClient:
777
796
  method="POST",
778
797
  json={
779
798
  "asset_id": asset_id,
799
+ "new_sheet_id": new_sheet_id,
780
800
  "sheet_id": sheet_id,
781
801
  },
782
802
  headers={
@@ -812,14 +832,7 @@ class RawSheetsClient:
812
832
  raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
813
833
 
814
834
  def create_tab(
815
- self,
816
- *,
817
- asset_id: str,
818
- sheet_id: int,
819
- title: str,
820
- active_sheet_id: typing.Optional[int] = OMIT,
821
- tab_color: typing.Optional[str] = OMIT,
822
- request_options: typing.Optional[RequestOptions] = None,
835
+ self, *, asset_id: str, sheet: Sheet, request_options: typing.Optional[RequestOptions] = None
823
836
  ) -> HttpResponse[CreateNewSheetTabResponse]:
824
837
  """
825
838
  Create a new tab in an Athena spreadsheet.
@@ -829,17 +842,8 @@ class RawSheetsClient:
829
842
  asset_id : str
830
843
  The ID of the spreadsheet asset
831
844
 
832
- sheet_id : int
833
- Sheet ID of the new tab
834
-
835
- title : str
836
- Title of the new tab
837
-
838
- active_sheet_id : typing.Optional[int]
839
- Currently active sheet ID
840
-
841
- tab_color : typing.Optional[str]
842
- Optional color of the new tab
845
+ sheet : Sheet
846
+ Sheet Specification
843
847
 
844
848
  request_options : typing.Optional[RequestOptions]
845
849
  Request-specific configuration.
@@ -853,11 +857,8 @@ class RawSheetsClient:
853
857
  "api/v0/tools/sheets/tab/create",
854
858
  method="POST",
855
859
  json={
856
- "active_sheet_id": active_sheet_id,
857
860
  "asset_id": asset_id,
858
- "sheet_id": sheet_id,
859
- "tab_color": tab_color,
860
- "title": title,
861
+ "sheet": convert_and_respect_annotation_metadata(object_=sheet, annotation=Sheet, direction="write"),
861
862
  },
862
863
  headers={
863
864
  "content-type": "application/json",
@@ -1145,8 +1146,8 @@ class RawSheetsClient:
1145
1146
  self,
1146
1147
  *,
1147
1148
  asset_id: str,
1149
+ table_name: str,
1148
1150
  table_id: typing.Optional[str] = OMIT,
1149
- table_name: typing.Optional[str] = OMIT,
1150
1151
  request_options: typing.Optional[RequestOptions] = None,
1151
1152
  ) -> HttpResponse[GetTableResponse]:
1152
1153
  """
@@ -1157,12 +1158,12 @@ class RawSheetsClient:
1157
1158
  asset_id : str
1158
1159
  The ID of the spreadsheet asset
1159
1160
 
1161
+ table_name : str
1162
+ Table name to retrieve
1163
+
1160
1164
  table_id : typing.Optional[str]
1161
1165
  Table ID to retrieve
1162
1166
 
1163
- table_name : typing.Optional[str]
1164
- Table name to retrieve
1165
-
1166
1167
  request_options : typing.Optional[RequestOptions]
1167
1168
  Request-specific configuration.
1168
1169
 
@@ -1215,9 +1216,9 @@ class RawSheetsClient:
1215
1216
  self,
1216
1217
  *,
1217
1218
  asset_id: str,
1218
- row_data: typing.Sequence[typing.Dict[str, typing.Optional[str]]],
1219
+ row_data: typing.Sequence[TableRowData],
1220
+ table_name: str,
1219
1221
  table_id: typing.Optional[str] = OMIT,
1220
- table_name: typing.Optional[str] = OMIT,
1221
1222
  request_options: typing.Optional[RequestOptions] = None,
1222
1223
  ) -> HttpResponse[SheetOperationResponse]:
1223
1224
  """
@@ -1228,15 +1229,15 @@ class RawSheetsClient:
1228
1229
  asset_id : str
1229
1230
  The ID of the spreadsheet asset
1230
1231
 
1231
- row_data : typing.Sequence[typing.Dict[str, typing.Optional[str]]]
1232
+ row_data : typing.Sequence[TableRowData]
1232
1233
  Array of row objects where keys are column names and values are cell values
1233
1234
 
1235
+ table_name : str
1236
+ Table name to insert row into
1237
+
1234
1238
  table_id : typing.Optional[str]
1235
1239
  Table ID to insert row into
1236
1240
 
1237
- table_name : typing.Optional[str]
1238
- Table name to insert row into
1239
-
1240
1241
  request_options : typing.Optional[RequestOptions]
1241
1242
  Request-specific configuration.
1242
1243
 
@@ -1867,10 +1868,9 @@ class AsyncRawSheetsClient:
1867
1868
  asset_id: str,
1868
1869
  end_column: int,
1869
1870
  end_row: int,
1871
+ formatting: CellFormat,
1870
1872
  start_column: int,
1871
1873
  start_row: int,
1872
- type: str,
1873
- value_json: str,
1874
1874
  sheet_id: typing.Optional[int] = OMIT,
1875
1875
  request_options: typing.Optional[RequestOptions] = None,
1876
1876
  ) -> AsyncHttpResponse[SheetOperationResponse]:
@@ -1888,18 +1888,15 @@ class AsyncRawSheetsClient:
1888
1888
  end_row : int
1889
1889
  1-based ending row index
1890
1890
 
1891
+ formatting : CellFormat
1892
+ Cell format
1893
+
1891
1894
  start_column : int
1892
1895
  1-based starting column index
1893
1896
 
1894
1897
  start_row : int
1895
1898
  1-based starting row index
1896
1899
 
1897
- type : str
1898
- Formatting type (e.g. backgroundColor, textFormat, borders, etc.)
1899
-
1900
- value_json : str
1901
- JSON string for value param (e.g. '"#FF0000"' or '{"fontSize":12}')
1902
-
1903
1900
  sheet_id : typing.Optional[int]
1904
1901
  Sheet ID (defaults to 1)
1905
1902
 
@@ -1918,11 +1915,12 @@ class AsyncRawSheetsClient:
1918
1915
  "asset_id": asset_id,
1919
1916
  "end_column": end_column,
1920
1917
  "end_row": end_row,
1918
+ "formatting": convert_and_respect_annotation_metadata(
1919
+ object_=formatting, annotation=CellFormat, direction="write"
1920
+ ),
1921
1921
  "sheet_id": sheet_id,
1922
1922
  "start_column": start_column,
1923
1923
  "start_row": start_row,
1924
- "type": type,
1925
- "value_json": value_json,
1926
1924
  },
1927
1925
  headers={
1928
1926
  "content-type": "application/json",
@@ -1962,7 +1960,8 @@ class AsyncRawSheetsClient:
1962
1960
  asset_id: str,
1963
1961
  start_column: int,
1964
1962
  start_row: int,
1965
- values: typing.Sequence[str],
1963
+ values: typing.Sequence[typing.Sequence[typing.Optional[UpdateSheetRangeRequestValuesItemItem]]],
1964
+ formatting: typing.Optional[typing.Sequence[typing.Sequence[typing.Optional[CellFormat]]]] = OMIT,
1966
1965
  sheet_id: typing.Optional[int] = OMIT,
1967
1966
  request_options: typing.Optional[RequestOptions] = None,
1968
1967
  ) -> AsyncHttpResponse[SheetOperationResponse]:
@@ -1980,8 +1979,11 @@ class AsyncRawSheetsClient:
1980
1979
  start_row : int
1981
1980
  1-based starting row index
1982
1981
 
1983
- values : typing.Sequence[str]
1984
- List of pipe-separated strings representing rows (e.g. ['A1|B1|C1', 'A2|B2|C2'])
1982
+ values : typing.Sequence[typing.Sequence[typing.Optional[UpdateSheetRangeRequestValuesItemItem]]]
1983
+ 2D list of cells for each row
1984
+
1985
+ formatting : typing.Optional[typing.Sequence[typing.Sequence[typing.Optional[CellFormat]]]]
1986
+ Optional 2D list of cell formats matching the structure of values. Each row is a list of CellFormat objects for each cell in that row. Use None for cells without formatting. numberFormat is not required unless user explicity asked to change
1985
1987
 
1986
1988
  sheet_id : typing.Optional[int]
1987
1989
  Sheet ID (defaults to 1)
@@ -1999,10 +2001,19 @@ class AsyncRawSheetsClient:
1999
2001
  method="POST",
2000
2002
  json={
2001
2003
  "asset_id": asset_id,
2004
+ "formatting": convert_and_respect_annotation_metadata(
2005
+ object_=formatting,
2006
+ annotation=typing.Sequence[typing.Sequence[typing.Optional[CellFormat]]],
2007
+ direction="write",
2008
+ ),
2002
2009
  "sheet_id": sheet_id,
2003
2010
  "start_column": start_column,
2004
2011
  "start_row": start_row,
2005
- "values": values,
2012
+ "values": convert_and_respect_annotation_metadata(
2013
+ object_=values,
2014
+ annotation=typing.Sequence[typing.Sequence[typing.Optional[UpdateSheetRangeRequestValuesItemItem]]],
2015
+ direction="write",
2016
+ ),
2006
2017
  },
2007
2018
  headers={
2008
2019
  "content-type": "application/json",
@@ -2115,6 +2126,7 @@ class AsyncRawSheetsClient:
2115
2126
  self,
2116
2127
  *,
2117
2128
  asset_id: str,
2129
+ new_sheet_id: typing.Optional[int] = OMIT,
2118
2130
  sheet_id: typing.Optional[int] = OMIT,
2119
2131
  request_options: typing.Optional[RequestOptions] = None,
2120
2132
  ) -> AsyncHttpResponse[SheetOperationResponse]:
@@ -2126,6 +2138,9 @@ class AsyncRawSheetsClient:
2126
2138
  asset_id : str
2127
2139
  The ID of the spreadsheet asset
2128
2140
 
2141
+ new_sheet_id : typing.Optional[int]
2142
+ New sheet ID for the duplicated sheet (auto-generated if not provided)
2143
+
2129
2144
  sheet_id : typing.Optional[int]
2130
2145
  Sheet ID to duplicate
2131
2146
 
@@ -2142,6 +2157,7 @@ class AsyncRawSheetsClient:
2142
2157
  method="POST",
2143
2158
  json={
2144
2159
  "asset_id": asset_id,
2160
+ "new_sheet_id": new_sheet_id,
2145
2161
  "sheet_id": sheet_id,
2146
2162
  },
2147
2163
  headers={
@@ -2177,14 +2193,7 @@ class AsyncRawSheetsClient:
2177
2193
  raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
2178
2194
 
2179
2195
  async def create_tab(
2180
- self,
2181
- *,
2182
- asset_id: str,
2183
- sheet_id: int,
2184
- title: str,
2185
- active_sheet_id: typing.Optional[int] = OMIT,
2186
- tab_color: typing.Optional[str] = OMIT,
2187
- request_options: typing.Optional[RequestOptions] = None,
2196
+ self, *, asset_id: str, sheet: Sheet, request_options: typing.Optional[RequestOptions] = None
2188
2197
  ) -> AsyncHttpResponse[CreateNewSheetTabResponse]:
2189
2198
  """
2190
2199
  Create a new tab in an Athena spreadsheet.
@@ -2194,17 +2203,8 @@ class AsyncRawSheetsClient:
2194
2203
  asset_id : str
2195
2204
  The ID of the spreadsheet asset
2196
2205
 
2197
- sheet_id : int
2198
- Sheet ID of the new tab
2199
-
2200
- title : str
2201
- Title of the new tab
2202
-
2203
- active_sheet_id : typing.Optional[int]
2204
- Currently active sheet ID
2205
-
2206
- tab_color : typing.Optional[str]
2207
- Optional color of the new tab
2206
+ sheet : Sheet
2207
+ Sheet Specification
2208
2208
 
2209
2209
  request_options : typing.Optional[RequestOptions]
2210
2210
  Request-specific configuration.
@@ -2218,11 +2218,8 @@ class AsyncRawSheetsClient:
2218
2218
  "api/v0/tools/sheets/tab/create",
2219
2219
  method="POST",
2220
2220
  json={
2221
- "active_sheet_id": active_sheet_id,
2222
2221
  "asset_id": asset_id,
2223
- "sheet_id": sheet_id,
2224
- "tab_color": tab_color,
2225
- "title": title,
2222
+ "sheet": convert_and_respect_annotation_metadata(object_=sheet, annotation=Sheet, direction="write"),
2226
2223
  },
2227
2224
  headers={
2228
2225
  "content-type": "application/json",
@@ -2510,8 +2507,8 @@ class AsyncRawSheetsClient:
2510
2507
  self,
2511
2508
  *,
2512
2509
  asset_id: str,
2510
+ table_name: str,
2513
2511
  table_id: typing.Optional[str] = OMIT,
2514
- table_name: typing.Optional[str] = OMIT,
2515
2512
  request_options: typing.Optional[RequestOptions] = None,
2516
2513
  ) -> AsyncHttpResponse[GetTableResponse]:
2517
2514
  """
@@ -2522,12 +2519,12 @@ class AsyncRawSheetsClient:
2522
2519
  asset_id : str
2523
2520
  The ID of the spreadsheet asset
2524
2521
 
2522
+ table_name : str
2523
+ Table name to retrieve
2524
+
2525
2525
  table_id : typing.Optional[str]
2526
2526
  Table ID to retrieve
2527
2527
 
2528
- table_name : typing.Optional[str]
2529
- Table name to retrieve
2530
-
2531
2528
  request_options : typing.Optional[RequestOptions]
2532
2529
  Request-specific configuration.
2533
2530
 
@@ -2580,9 +2577,9 @@ class AsyncRawSheetsClient:
2580
2577
  self,
2581
2578
  *,
2582
2579
  asset_id: str,
2583
- row_data: typing.Sequence[typing.Dict[str, typing.Optional[str]]],
2580
+ row_data: typing.Sequence[TableRowData],
2581
+ table_name: str,
2584
2582
  table_id: typing.Optional[str] = OMIT,
2585
- table_name: typing.Optional[str] = OMIT,
2586
2583
  request_options: typing.Optional[RequestOptions] = None,
2587
2584
  ) -> AsyncHttpResponse[SheetOperationResponse]:
2588
2585
  """
@@ -2593,15 +2590,15 @@ class AsyncRawSheetsClient:
2593
2590
  asset_id : str
2594
2591
  The ID of the spreadsheet asset
2595
2592
 
2596
- row_data : typing.Sequence[typing.Dict[str, typing.Optional[str]]]
2593
+ row_data : typing.Sequence[TableRowData]
2597
2594
  Array of row objects where keys are column names and values are cell values
2598
2595
 
2596
+ table_name : str
2597
+ Table name to insert row into
2598
+
2599
2599
  table_id : typing.Optional[str]
2600
2600
  Table ID to insert row into
2601
2601
 
2602
- table_name : typing.Optional[str]
2603
- Table name to insert row into
2604
-
2605
2602
  request_options : typing.Optional[RequestOptions]
2606
2603
  Request-specific configuration.
2607
2604
 
@@ -0,0 +1,36 @@
1
+ # This file was auto-generated by Fern from our API Definition.
2
+
3
+ # isort: skip_file
4
+
5
+ import typing
6
+ from importlib import import_module
7
+
8
+ if typing.TYPE_CHECKING:
9
+ from .update_sheet_range_request_values_item_item import UpdateSheetRangeRequestValuesItemItem
10
+ _dynamic_imports: typing.Dict[str, str] = {
11
+ "UpdateSheetRangeRequestValuesItemItem": ".update_sheet_range_request_values_item_item"
12
+ }
13
+
14
+
15
+ def __getattr__(attr_name: str) -> typing.Any:
16
+ module_name = _dynamic_imports.get(attr_name)
17
+ if module_name is None:
18
+ raise AttributeError(f"No {attr_name} found in _dynamic_imports for module name -> {__name__}")
19
+ try:
20
+ module = import_module(module_name, __package__)
21
+ if module_name == f".{attr_name}":
22
+ return module
23
+ else:
24
+ return getattr(module, attr_name)
25
+ except ImportError as e:
26
+ raise ImportError(f"Failed to import {attr_name} from {module_name}: {e}") from e
27
+ except AttributeError as e:
28
+ raise AttributeError(f"Failed to get {attr_name} from {module_name}: {e}") from e
29
+
30
+
31
+ def __dir__():
32
+ lazy_attrs = list(_dynamic_imports.keys())
33
+ return sorted(lazy_attrs)
34
+
35
+
36
+ __all__ = ["UpdateSheetRangeRequestValuesItemItem"]
@@ -0,0 +1,5 @@
1
+ # This file was auto-generated by Fern from our API Definition.
2
+
3
+ import typing
4
+
5
+ UpdateSheetRangeRequestValuesItemItem = typing.Union[str, bool]
@@ -2,6 +2,33 @@
2
2
 
3
3
  # isort: skip_file
4
4
 
5
- from .tools_data_frame_request_columns_item import ToolsDataFrameRequestColumnsItem
5
+ import typing
6
+ from importlib import import_module
7
+
8
+ if typing.TYPE_CHECKING:
9
+ from .tools_data_frame_request_columns_item import ToolsDataFrameRequestColumnsItem
10
+ _dynamic_imports: typing.Dict[str, str] = {"ToolsDataFrameRequestColumnsItem": ".tools_data_frame_request_columns_item"}
11
+
12
+
13
+ def __getattr__(attr_name: str) -> typing.Any:
14
+ module_name = _dynamic_imports.get(attr_name)
15
+ if module_name is None:
16
+ raise AttributeError(f"No {attr_name} found in _dynamic_imports for module name -> {__name__}")
17
+ try:
18
+ module = import_module(module_name, __package__)
19
+ if module_name == f".{attr_name}":
20
+ return module
21
+ else:
22
+ return getattr(module, attr_name)
23
+ except ImportError as e:
24
+ raise ImportError(f"Failed to import {attr_name} from {module_name}: {e}") from e
25
+ except AttributeError as e:
26
+ raise AttributeError(f"Failed to get {attr_name} from {module_name}: {e}") from e
27
+
28
+
29
+ def __dir__():
30
+ lazy_attrs = list(_dynamic_imports.keys())
31
+ return sorted(lazy_attrs)
32
+
6
33
 
7
34
  __all__ = ["ToolsDataFrameRequestColumnsItem"]