smartsheet-python-sdk 4.0.2__tar.gz → 4.1.0__tar.gz

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 (216) hide show
  1. {smartsheet_python_sdk-4.0.2 → smartsheet_python_sdk-4.1.0}/PKG-INFO +1 -1
  2. {smartsheet_python_sdk-4.0.2 → smartsheet_python_sdk-4.1.0}/smartsheet/folders.py +21 -1
  3. {smartsheet_python_sdk-4.0.2 → smartsheet_python_sdk-4.1.0}/smartsheet/models/__init__.py +6 -0
  4. {smartsheet_python_sdk-4.0.2 → smartsheet_python_sdk-4.1.0}/smartsheet/models/enums/publish_accessible_by.py +1 -0
  5. smartsheet_python_sdk-4.1.0/smartsheet/models/folder_path_node.py +67 -0
  6. smartsheet_python_sdk-4.1.0/smartsheet/models/path_leaf.py +53 -0
  7. smartsheet_python_sdk-4.1.0/smartsheet/models/path_node.py +84 -0
  8. smartsheet_python_sdk-4.1.0/smartsheet/models/report_path_node.py +72 -0
  9. smartsheet_python_sdk-4.1.0/smartsheet/models/sheet_path_node.py +72 -0
  10. smartsheet_python_sdk-4.1.0/smartsheet/models/sight_path_node.py +72 -0
  11. {smartsheet_python_sdk-4.0.2 → smartsheet_python_sdk-4.1.0}/smartsheet/reports.py +21 -0
  12. {smartsheet_python_sdk-4.0.2 → smartsheet_python_sdk-4.1.0}/smartsheet/sheets.py +21 -1
  13. {smartsheet_python_sdk-4.0.2 → smartsheet_python_sdk-4.1.0}/smartsheet/sights.py +21 -1
  14. {smartsheet_python_sdk-4.0.2 → smartsheet_python_sdk-4.1.0}/smartsheet/version.py +2 -2
  15. {smartsheet_python_sdk-4.0.2 → smartsheet_python_sdk-4.1.0}/.gitignore +0 -0
  16. {smartsheet_python_sdk-4.0.2 → smartsheet_python_sdk-4.1.0}/LICENSE.md +0 -0
  17. {smartsheet_python_sdk-4.0.2 → smartsheet_python_sdk-4.1.0}/NOTICE +0 -0
  18. {smartsheet_python_sdk-4.0.2 → smartsheet_python_sdk-4.1.0}/README.md +0 -0
  19. {smartsheet_python_sdk-4.0.2 → smartsheet_python_sdk-4.1.0}/pyproject.toml +0 -0
  20. {smartsheet_python_sdk-4.0.2 → smartsheet_python_sdk-4.1.0}/smartsheet/__init__.py +0 -0
  21. {smartsheet_python_sdk-4.0.2 → smartsheet_python_sdk-4.1.0}/smartsheet/attachments.py +0 -0
  22. {smartsheet_python_sdk-4.0.2 → smartsheet_python_sdk-4.1.0}/smartsheet/cells.py +0 -0
  23. {smartsheet_python_sdk-4.0.2 → smartsheet_python_sdk-4.1.0}/smartsheet/contacts.py +0 -0
  24. {smartsheet_python_sdk-4.0.2 → smartsheet_python_sdk-4.1.0}/smartsheet/discussions.py +0 -0
  25. {smartsheet_python_sdk-4.0.2 → smartsheet_python_sdk-4.1.0}/smartsheet/events.py +0 -0
  26. {smartsheet_python_sdk-4.0.2 → smartsheet_python_sdk-4.1.0}/smartsheet/exceptions.py +0 -0
  27. {smartsheet_python_sdk-4.0.2 → smartsheet_python_sdk-4.1.0}/smartsheet/favorites.py +0 -0
  28. {smartsheet_python_sdk-4.0.2 → smartsheet_python_sdk-4.1.0}/smartsheet/groups.py +0 -0
  29. {smartsheet_python_sdk-4.0.2 → smartsheet_python_sdk-4.1.0}/smartsheet/home.py +0 -0
  30. {smartsheet_python_sdk-4.0.2 → smartsheet_python_sdk-4.1.0}/smartsheet/images.py +0 -0
  31. {smartsheet_python_sdk-4.0.2 → smartsheet_python_sdk-4.1.0}/smartsheet/models/access_token.py +0 -0
  32. {smartsheet_python_sdk-4.0.2 → smartsheet_python_sdk-4.1.0}/smartsheet/models/account.py +0 -0
  33. {smartsheet_python_sdk-4.0.2 → smartsheet_python_sdk-4.1.0}/smartsheet/models/alternate_email.py +0 -0
  34. {smartsheet_python_sdk-4.0.2 → smartsheet_python_sdk-4.1.0}/smartsheet/models/asset_share.py +0 -0
  35. {smartsheet_python_sdk-4.0.2 → smartsheet_python_sdk-4.1.0}/smartsheet/models/asset_shares_paginated_result.py +0 -0
  36. {smartsheet_python_sdk-4.0.2 → smartsheet_python_sdk-4.1.0}/smartsheet/models/attachment.py +0 -0
  37. {smartsheet_python_sdk-4.0.2 → smartsheet_python_sdk-4.1.0}/smartsheet/models/auto_number_format.py +0 -0
  38. {smartsheet_python_sdk-4.0.2 → smartsheet_python_sdk-4.1.0}/smartsheet/models/automation_action.py +0 -0
  39. {smartsheet_python_sdk-4.0.2 → smartsheet_python_sdk-4.1.0}/smartsheet/models/automation_rule.py +0 -0
  40. {smartsheet_python_sdk-4.0.2 → smartsheet_python_sdk-4.1.0}/smartsheet/models/boolean_object_value.py +0 -0
  41. {smartsheet_python_sdk-4.0.2 → smartsheet_python_sdk-4.1.0}/smartsheet/models/bulk_item_failure.py +0 -0
  42. {smartsheet_python_sdk-4.0.2 → smartsheet_python_sdk-4.1.0}/smartsheet/models/bulk_item_result.py +0 -0
  43. {smartsheet_python_sdk-4.0.2 → smartsheet_python_sdk-4.1.0}/smartsheet/models/cell.py +0 -0
  44. {smartsheet_python_sdk-4.0.2 → smartsheet_python_sdk-4.1.0}/smartsheet/models/cell_data_item.py +0 -0
  45. {smartsheet_python_sdk-4.0.2 → smartsheet_python_sdk-4.1.0}/smartsheet/models/cell_history.py +0 -0
  46. {smartsheet_python_sdk-4.0.2 → smartsheet_python_sdk-4.1.0}/smartsheet/models/cell_link.py +0 -0
  47. {smartsheet_python_sdk-4.0.2 → smartsheet_python_sdk-4.1.0}/smartsheet/models/cell_link_widget_content.py +0 -0
  48. {smartsheet_python_sdk-4.0.2 → smartsheet_python_sdk-4.1.0}/smartsheet/models/chart_widget_content.py +0 -0
  49. {smartsheet_python_sdk-4.0.2 → smartsheet_python_sdk-4.1.0}/smartsheet/models/column.py +0 -0
  50. {smartsheet_python_sdk-4.0.2 → smartsheet_python_sdk-4.1.0}/smartsheet/models/comment.py +0 -0
  51. {smartsheet_python_sdk-4.0.2 → smartsheet_python_sdk-4.1.0}/smartsheet/models/contact.py +0 -0
  52. {smartsheet_python_sdk-4.0.2 → smartsheet_python_sdk-4.1.0}/smartsheet/models/contact_object_value.py +0 -0
  53. {smartsheet_python_sdk-4.0.2 → smartsheet_python_sdk-4.1.0}/smartsheet/models/container_destination.py +0 -0
  54. {smartsheet_python_sdk-4.0.2 → smartsheet_python_sdk-4.1.0}/smartsheet/models/copy_or_move_row_destination.py +0 -0
  55. {smartsheet_python_sdk-4.0.2 → smartsheet_python_sdk-4.1.0}/smartsheet/models/copy_or_move_row_directive.py +0 -0
  56. {smartsheet_python_sdk-4.0.2 → smartsheet_python_sdk-4.1.0}/smartsheet/models/copy_or_move_row_result.py +0 -0
  57. {smartsheet_python_sdk-4.0.2 → smartsheet_python_sdk-4.1.0}/smartsheet/models/create_report_request.py +0 -0
  58. {smartsheet_python_sdk-4.0.2 → smartsheet_python_sdk-4.1.0}/smartsheet/models/create_report_result.py +0 -0
  59. {smartsheet_python_sdk-4.0.2 → smartsheet_python_sdk-4.1.0}/smartsheet/models/criteria.py +0 -0
  60. {smartsheet_python_sdk-4.0.2 → smartsheet_python_sdk-4.1.0}/smartsheet/models/cross_sheet_reference.py +0 -0
  61. {smartsheet_python_sdk-4.0.2 → smartsheet_python_sdk-4.1.0}/smartsheet/models/currency.py +0 -0
  62. {smartsheet_python_sdk-4.0.2 → smartsheet_python_sdk-4.1.0}/smartsheet/models/date_object_value.py +0 -0
  63. {smartsheet_python_sdk-4.0.2 → smartsheet_python_sdk-4.1.0}/smartsheet/models/datetime_object_value.py +0 -0
  64. {smartsheet_python_sdk-4.0.2 → smartsheet_python_sdk-4.1.0}/smartsheet/models/discussion.py +0 -0
  65. {smartsheet_python_sdk-4.0.2 → smartsheet_python_sdk-4.1.0}/smartsheet/models/downloaded_file.py +0 -0
  66. {smartsheet_python_sdk-4.0.2 → smartsheet_python_sdk-4.1.0}/smartsheet/models/duration.py +0 -0
  67. {smartsheet_python_sdk-4.0.2 → smartsheet_python_sdk-4.1.0}/smartsheet/models/email.py +0 -0
  68. {smartsheet_python_sdk-4.0.2 → smartsheet_python_sdk-4.1.0}/smartsheet/models/enums/__init__.py +0 -0
  69. {smartsheet_python_sdk-4.0.2 → smartsheet_python_sdk-4.1.0}/smartsheet/models/enums/access_level.py +0 -0
  70. {smartsheet_python_sdk-4.0.2 → smartsheet_python_sdk-4.1.0}/smartsheet/models/enums/asset_type.py +0 -0
  71. {smartsheet_python_sdk-4.0.2 → smartsheet_python_sdk-4.1.0}/smartsheet/models/enums/attachment_parent_type.py +0 -0
  72. {smartsheet_python_sdk-4.0.2 → smartsheet_python_sdk-4.1.0}/smartsheet/models/enums/attachment_sub_type.py +0 -0
  73. {smartsheet_python_sdk-4.0.2 → smartsheet_python_sdk-4.1.0}/smartsheet/models/enums/attachment_type.py +0 -0
  74. {smartsheet_python_sdk-4.0.2 → smartsheet_python_sdk-4.1.0}/smartsheet/models/enums/automation_action_frequency.py +0 -0
  75. {smartsheet_python_sdk-4.0.2 → smartsheet_python_sdk-4.1.0}/smartsheet/models/enums/automation_action_type.py +0 -0
  76. {smartsheet_python_sdk-4.0.2 → smartsheet_python_sdk-4.1.0}/smartsheet/models/enums/automation_rule_disabled_reason.py +0 -0
  77. {smartsheet_python_sdk-4.0.2 → smartsheet_python_sdk-4.1.0}/smartsheet/models/enums/cell_link_status.py +0 -0
  78. {smartsheet_python_sdk-4.0.2 → smartsheet_python_sdk-4.1.0}/smartsheet/models/enums/column_type.py +0 -0
  79. {smartsheet_python_sdk-4.0.2 → smartsheet_python_sdk-4.1.0}/smartsheet/models/enums/criteria_target.py +0 -0
  80. {smartsheet_python_sdk-4.0.2 → smartsheet_python_sdk-4.1.0}/smartsheet/models/enums/cross_sheet_reference_status.py +0 -0
  81. {smartsheet_python_sdk-4.0.2 → smartsheet_python_sdk-4.1.0}/smartsheet/models/enums/currency_code.py +0 -0
  82. {smartsheet_python_sdk-4.0.2 → smartsheet_python_sdk-4.1.0}/smartsheet/models/enums/day_descriptors.py +0 -0
  83. {smartsheet_python_sdk-4.0.2 → smartsheet_python_sdk-4.1.0}/smartsheet/models/enums/day_ordinal.py +0 -0
  84. {smartsheet_python_sdk-4.0.2 → smartsheet_python_sdk-4.1.0}/smartsheet/models/enums/event_action.py +0 -0
  85. {smartsheet_python_sdk-4.0.2 → smartsheet_python_sdk-4.1.0}/smartsheet/models/enums/event_object_type.py +0 -0
  86. {smartsheet_python_sdk-4.0.2 → smartsheet_python_sdk-4.1.0}/smartsheet/models/enums/event_source.py +0 -0
  87. {smartsheet_python_sdk-4.0.2 → smartsheet_python_sdk-4.1.0}/smartsheet/models/enums/favorite_type.py +0 -0
  88. {smartsheet_python_sdk-4.0.2 → smartsheet_python_sdk-4.1.0}/smartsheet/models/enums/global_template.py +0 -0
  89. {smartsheet_python_sdk-4.0.2 → smartsheet_python_sdk-4.1.0}/smartsheet/models/enums/operator.py +0 -0
  90. {smartsheet_python_sdk-4.0.2 → smartsheet_python_sdk-4.1.0}/smartsheet/models/enums/paper_type.py +0 -0
  91. {smartsheet_python_sdk-4.0.2 → smartsheet_python_sdk-4.1.0}/smartsheet/models/enums/predecessor_type.py +0 -0
  92. {smartsheet_python_sdk-4.0.2 → smartsheet_python_sdk-4.1.0}/smartsheet/models/enums/report_aggregation_type.py +0 -0
  93. {smartsheet_python_sdk-4.0.2 → smartsheet_python_sdk-4.1.0}/smartsheet/models/enums/report_asset_type.py +0 -0
  94. {smartsheet_python_sdk-4.0.2 → smartsheet_python_sdk-4.1.0}/smartsheet/models/enums/report_boolean_operator.py +0 -0
  95. {smartsheet_python_sdk-4.0.2 → smartsheet_python_sdk-4.1.0}/smartsheet/models/enums/report_destination_type.py +0 -0
  96. {smartsheet_python_sdk-4.0.2 → smartsheet_python_sdk-4.1.0}/smartsheet/models/enums/report_filter_operator.py +0 -0
  97. {smartsheet_python_sdk-4.0.2 → smartsheet_python_sdk-4.1.0}/smartsheet/models/enums/schedule_type.py +0 -0
  98. {smartsheet_python_sdk-4.0.2 → smartsheet_python_sdk-4.1.0}/smartsheet/models/enums/seat_type.py +0 -0
  99. {smartsheet_python_sdk-4.0.2 → smartsheet_python_sdk-4.1.0}/smartsheet/models/enums/share_scope.py +0 -0
  100. {smartsheet_python_sdk-4.0.2 → smartsheet_python_sdk-4.1.0}/smartsheet/models/enums/share_type.py +0 -0
  101. {smartsheet_python_sdk-4.0.2 → smartsheet_python_sdk-4.1.0}/smartsheet/models/enums/sheet_email_format.py +0 -0
  102. {smartsheet_python_sdk-4.0.2 → smartsheet_python_sdk-4.1.0}/smartsheet/models/enums/sheet_filter_operator.py +0 -0
  103. {smartsheet_python_sdk-4.0.2 → smartsheet_python_sdk-4.1.0}/smartsheet/models/enums/sheet_filter_type.py +0 -0
  104. {smartsheet_python_sdk-4.0.2 → smartsheet_python_sdk-4.1.0}/smartsheet/models/enums/sort_direction.py +0 -0
  105. {smartsheet_python_sdk-4.0.2 → smartsheet_python_sdk-4.1.0}/smartsheet/models/enums/symbol.py +0 -0
  106. {smartsheet_python_sdk-4.0.2 → smartsheet_python_sdk-4.1.0}/smartsheet/models/enums/system_column_type.py +0 -0
  107. {smartsheet_python_sdk-4.0.2 → smartsheet_python_sdk-4.1.0}/smartsheet/models/enums/update_request_status.py +0 -0
  108. {smartsheet_python_sdk-4.0.2 → smartsheet_python_sdk-4.1.0}/smartsheet/models/enums/user_status.py +0 -0
  109. {smartsheet_python_sdk-4.0.2 → smartsheet_python_sdk-4.1.0}/smartsheet/models/enums/widget_type.py +0 -0
  110. {smartsheet_python_sdk-4.0.2 → smartsheet_python_sdk-4.1.0}/smartsheet/models/error.py +0 -0
  111. {smartsheet_python_sdk-4.0.2 → smartsheet_python_sdk-4.1.0}/smartsheet/models/error_result.py +0 -0
  112. {smartsheet_python_sdk-4.0.2 → smartsheet_python_sdk-4.1.0}/smartsheet/models/event.py +0 -0
  113. {smartsheet_python_sdk-4.0.2 → smartsheet_python_sdk-4.1.0}/smartsheet/models/event_result.py +0 -0
  114. {smartsheet_python_sdk-4.0.2 → smartsheet_python_sdk-4.1.0}/smartsheet/models/explicit_null.py +0 -0
  115. {smartsheet_python_sdk-4.0.2 → smartsheet_python_sdk-4.1.0}/smartsheet/models/favorite.py +0 -0
  116. {smartsheet_python_sdk-4.0.2 → smartsheet_python_sdk-4.1.0}/smartsheet/models/folder.py +0 -0
  117. {smartsheet_python_sdk-4.0.2 → smartsheet_python_sdk-4.1.0}/smartsheet/models/font_family.py +0 -0
  118. {smartsheet_python_sdk-4.0.2 → smartsheet_python_sdk-4.1.0}/smartsheet/models/format_details.py +0 -0
  119. {smartsheet_python_sdk-4.0.2 → smartsheet_python_sdk-4.1.0}/smartsheet/models/format_tables.py +0 -0
  120. {smartsheet_python_sdk-4.0.2 → smartsheet_python_sdk-4.1.0}/smartsheet/models/group.py +0 -0
  121. {smartsheet_python_sdk-4.0.2 → smartsheet_python_sdk-4.1.0}/smartsheet/models/group_member.py +0 -0
  122. {smartsheet_python_sdk-4.0.2 → smartsheet_python_sdk-4.1.0}/smartsheet/models/home.py +0 -0
  123. {smartsheet_python_sdk-4.0.2 → smartsheet_python_sdk-4.1.0}/smartsheet/models/hyperlink.py +0 -0
  124. {smartsheet_python_sdk-4.0.2 → smartsheet_python_sdk-4.1.0}/smartsheet/models/image.py +0 -0
  125. {smartsheet_python_sdk-4.0.2 → smartsheet_python_sdk-4.1.0}/smartsheet/models/image_url.py +0 -0
  126. {smartsheet_python_sdk-4.0.2 → smartsheet_python_sdk-4.1.0}/smartsheet/models/image_url_map.py +0 -0
  127. {smartsheet_python_sdk-4.0.2 → smartsheet_python_sdk-4.1.0}/smartsheet/models/image_widget_content.py +0 -0
  128. {smartsheet_python_sdk-4.0.2 → smartsheet_python_sdk-4.1.0}/smartsheet/models/index_result.py +0 -0
  129. {smartsheet_python_sdk-4.0.2 → smartsheet_python_sdk-4.1.0}/smartsheet/models/json_object.py +0 -0
  130. {smartsheet_python_sdk-4.0.2 → smartsheet_python_sdk-4.1.0}/smartsheet/models/multi_contact_object_value.py +0 -0
  131. {smartsheet_python_sdk-4.0.2 → smartsheet_python_sdk-4.1.0}/smartsheet/models/multi_picklist_object_value.py +0 -0
  132. {smartsheet_python_sdk-4.0.2 → smartsheet_python_sdk-4.1.0}/smartsheet/models/multi_row_email.py +0 -0
  133. {smartsheet_python_sdk-4.0.2 → smartsheet_python_sdk-4.1.0}/smartsheet/models/number_object_value.py +0 -0
  134. {smartsheet_python_sdk-4.0.2 → smartsheet_python_sdk-4.1.0}/smartsheet/models/o_auth_error.py +0 -0
  135. {smartsheet_python_sdk-4.0.2 → smartsheet_python_sdk-4.1.0}/smartsheet/models/object_value.py +0 -0
  136. {smartsheet_python_sdk-4.0.2 → smartsheet_python_sdk-4.1.0}/smartsheet/models/paginated_children_result.py +0 -0
  137. {smartsheet_python_sdk-4.0.2 → smartsheet_python_sdk-4.1.0}/smartsheet/models/predecessor.py +0 -0
  138. {smartsheet_python_sdk-4.0.2 → smartsheet_python_sdk-4.1.0}/smartsheet/models/predecessor_list.py +0 -0
  139. {smartsheet_python_sdk-4.0.2 → smartsheet_python_sdk-4.1.0}/smartsheet/models/primitive_object_value.py +0 -0
  140. {smartsheet_python_sdk-4.0.2 → smartsheet_python_sdk-4.1.0}/smartsheet/models/profile_image.py +0 -0
  141. {smartsheet_python_sdk-4.0.2 → smartsheet_python_sdk-4.1.0}/smartsheet/models/project_settings.py +0 -0
  142. {smartsheet_python_sdk-4.0.2 → smartsheet_python_sdk-4.1.0}/smartsheet/models/recipient.py +0 -0
  143. {smartsheet_python_sdk-4.0.2 → smartsheet_python_sdk-4.1.0}/smartsheet/models/report.py +0 -0
  144. {smartsheet_python_sdk-4.0.2 → smartsheet_python_sdk-4.1.0}/smartsheet/models/report_cell.py +0 -0
  145. {smartsheet_python_sdk-4.0.2 → smartsheet_python_sdk-4.1.0}/smartsheet/models/report_column.py +0 -0
  146. {smartsheet_python_sdk-4.0.2 → smartsheet_python_sdk-4.1.0}/smartsheet/models/report_column_identifier.py +0 -0
  147. {smartsheet_python_sdk-4.0.2 → smartsheet_python_sdk-4.1.0}/smartsheet/models/report_definition.py +0 -0
  148. {smartsheet_python_sdk-4.0.2 → smartsheet_python_sdk-4.1.0}/smartsheet/models/report_destination.py +0 -0
  149. {smartsheet_python_sdk-4.0.2 → smartsheet_python_sdk-4.1.0}/smartsheet/models/report_filter_criterion.py +0 -0
  150. {smartsheet_python_sdk-4.0.2 → smartsheet_python_sdk-4.1.0}/smartsheet/models/report_filter_expression.py +0 -0
  151. {smartsheet_python_sdk-4.0.2 → smartsheet_python_sdk-4.1.0}/smartsheet/models/report_grouping_criterion.py +0 -0
  152. {smartsheet_python_sdk-4.0.2 → smartsheet_python_sdk-4.1.0}/smartsheet/models/report_publish.py +0 -0
  153. {smartsheet_python_sdk-4.0.2 → smartsheet_python_sdk-4.1.0}/smartsheet/models/report_row.py +0 -0
  154. {smartsheet_python_sdk-4.0.2 → smartsheet_python_sdk-4.1.0}/smartsheet/models/report_scope_inclusion.py +0 -0
  155. {smartsheet_python_sdk-4.0.2 → smartsheet_python_sdk-4.1.0}/smartsheet/models/report_sorting_criterion.py +0 -0
  156. {smartsheet_python_sdk-4.0.2 → smartsheet_python_sdk-4.1.0}/smartsheet/models/report_summarizing_criterion.py +0 -0
  157. {smartsheet_python_sdk-4.0.2 → smartsheet_python_sdk-4.1.0}/smartsheet/models/report_widget_content.py +0 -0
  158. {smartsheet_python_sdk-4.0.2 → smartsheet_python_sdk-4.1.0}/smartsheet/models/result.py +0 -0
  159. {smartsheet_python_sdk-4.0.2 → smartsheet_python_sdk-4.1.0}/smartsheet/models/row.py +0 -0
  160. {smartsheet_python_sdk-4.0.2 → smartsheet_python_sdk-4.1.0}/smartsheet/models/row_email.py +0 -0
  161. {smartsheet_python_sdk-4.0.2 → smartsheet_python_sdk-4.1.0}/smartsheet/models/row_mapping.py +0 -0
  162. {smartsheet_python_sdk-4.0.2 → smartsheet_python_sdk-4.1.0}/smartsheet/models/schedule.py +0 -0
  163. {smartsheet_python_sdk-4.0.2 → smartsheet_python_sdk-4.1.0}/smartsheet/models/scope.py +0 -0
  164. {smartsheet_python_sdk-4.0.2 → smartsheet_python_sdk-4.1.0}/smartsheet/models/search_result.py +0 -0
  165. {smartsheet_python_sdk-4.0.2 → smartsheet_python_sdk-4.1.0}/smartsheet/models/search_result_item.py +0 -0
  166. {smartsheet_python_sdk-4.0.2 → smartsheet_python_sdk-4.1.0}/smartsheet/models/selection_range.py +0 -0
  167. {smartsheet_python_sdk-4.0.2 → smartsheet_python_sdk-4.1.0}/smartsheet/models/sent_update_request.py +0 -0
  168. {smartsheet_python_sdk-4.0.2 → smartsheet_python_sdk-4.1.0}/smartsheet/models/server_info.py +0 -0
  169. {smartsheet_python_sdk-4.0.2 → smartsheet_python_sdk-4.1.0}/smartsheet/models/sheet.py +0 -0
  170. {smartsheet_python_sdk-4.0.2 → smartsheet_python_sdk-4.1.0}/smartsheet/models/sheet_email.py +0 -0
  171. {smartsheet_python_sdk-4.0.2 → smartsheet_python_sdk-4.1.0}/smartsheet/models/sheet_filter.py +0 -0
  172. {smartsheet_python_sdk-4.0.2 → smartsheet_python_sdk-4.1.0}/smartsheet/models/sheet_filter_details.py +0 -0
  173. {smartsheet_python_sdk-4.0.2 → smartsheet_python_sdk-4.1.0}/smartsheet/models/sheet_publish.py +0 -0
  174. {smartsheet_python_sdk-4.0.2 → smartsheet_python_sdk-4.1.0}/smartsheet/models/sheet_summary.py +0 -0
  175. {smartsheet_python_sdk-4.0.2 → smartsheet_python_sdk-4.1.0}/smartsheet/models/sheet_user_permissions.py +0 -0
  176. {smartsheet_python_sdk-4.0.2 → smartsheet_python_sdk-4.1.0}/smartsheet/models/sheet_user_settings.py +0 -0
  177. {smartsheet_python_sdk-4.0.2 → smartsheet_python_sdk-4.1.0}/smartsheet/models/shortcut_data_item.py +0 -0
  178. {smartsheet_python_sdk-4.0.2 → smartsheet_python_sdk-4.1.0}/smartsheet/models/shortcut_widget_content.py +0 -0
  179. {smartsheet_python_sdk-4.0.2 → smartsheet_python_sdk-4.1.0}/smartsheet/models/sight.py +0 -0
  180. {smartsheet_python_sdk-4.0.2 → smartsheet_python_sdk-4.1.0}/smartsheet/models/sight_publish.py +0 -0
  181. {smartsheet_python_sdk-4.0.2 → smartsheet_python_sdk-4.1.0}/smartsheet/models/sort_criterion.py +0 -0
  182. {smartsheet_python_sdk-4.0.2 → smartsheet_python_sdk-4.1.0}/smartsheet/models/sort_specifier.py +0 -0
  183. {smartsheet_python_sdk-4.0.2 → smartsheet_python_sdk-4.1.0}/smartsheet/models/source.py +0 -0
  184. {smartsheet_python_sdk-4.0.2 → smartsheet_python_sdk-4.1.0}/smartsheet/models/string_object_value.py +0 -0
  185. {smartsheet_python_sdk-4.0.2 → smartsheet_python_sdk-4.1.0}/smartsheet/models/summary_field.py +0 -0
  186. {smartsheet_python_sdk-4.0.2 → smartsheet_python_sdk-4.1.0}/smartsheet/models/template.py +0 -0
  187. {smartsheet_python_sdk-4.0.2 → smartsheet_python_sdk-4.1.0}/smartsheet/models/title_rich_text_widget_content.py +0 -0
  188. {smartsheet_python_sdk-4.0.2 → smartsheet_python_sdk-4.1.0}/smartsheet/models/token_paginated_result.py +0 -0
  189. {smartsheet_python_sdk-4.0.2 → smartsheet_python_sdk-4.1.0}/smartsheet/models/update_request.py +0 -0
  190. {smartsheet_python_sdk-4.0.2 → smartsheet_python_sdk-4.1.0}/smartsheet/models/user.py +0 -0
  191. {smartsheet_python_sdk-4.0.2 → smartsheet_python_sdk-4.1.0}/smartsheet/models/user_model.py +0 -0
  192. {smartsheet_python_sdk-4.0.2 → smartsheet_python_sdk-4.1.0}/smartsheet/models/user_plan.py +0 -0
  193. {smartsheet_python_sdk-4.0.2 → smartsheet_python_sdk-4.1.0}/smartsheet/models/user_profile.py +0 -0
  194. {smartsheet_python_sdk-4.0.2 → smartsheet_python_sdk-4.1.0}/smartsheet/models/version.py +0 -0
  195. {smartsheet_python_sdk-4.0.2 → smartsheet_python_sdk-4.1.0}/smartsheet/models/web_content_widget_content.py +0 -0
  196. {smartsheet_python_sdk-4.0.2 → smartsheet_python_sdk-4.1.0}/smartsheet/models/webhook.py +0 -0
  197. {smartsheet_python_sdk-4.0.2 → smartsheet_python_sdk-4.1.0}/smartsheet/models/webhook_secret.py +0 -0
  198. {smartsheet_python_sdk-4.0.2 → smartsheet_python_sdk-4.1.0}/smartsheet/models/webhook_stats.py +0 -0
  199. {smartsheet_python_sdk-4.0.2 → smartsheet_python_sdk-4.1.0}/smartsheet/models/webhook_subscope.py +0 -0
  200. {smartsheet_python_sdk-4.0.2 → smartsheet_python_sdk-4.1.0}/smartsheet/models/widget.py +0 -0
  201. {smartsheet_python_sdk-4.0.2 → smartsheet_python_sdk-4.1.0}/smartsheet/models/widget_content.py +0 -0
  202. {smartsheet_python_sdk-4.0.2 → smartsheet_python_sdk-4.1.0}/smartsheet/models/widget_hyperlink.py +0 -0
  203. {smartsheet_python_sdk-4.0.2 → smartsheet_python_sdk-4.1.0}/smartsheet/models/workspace.py +0 -0
  204. {smartsheet_python_sdk-4.0.2 → smartsheet_python_sdk-4.1.0}/smartsheet/object_value.py +0 -0
  205. {smartsheet_python_sdk-4.0.2 → smartsheet_python_sdk-4.1.0}/smartsheet/passthrough.py +0 -0
  206. {smartsheet_python_sdk-4.0.2 → smartsheet_python_sdk-4.1.0}/smartsheet/search.py +0 -0
  207. {smartsheet_python_sdk-4.0.2 → smartsheet_python_sdk-4.1.0}/smartsheet/server.py +0 -0
  208. {smartsheet_python_sdk-4.0.2 → smartsheet_python_sdk-4.1.0}/smartsheet/session.py +0 -0
  209. {smartsheet_python_sdk-4.0.2 → smartsheet_python_sdk-4.1.0}/smartsheet/sharing.py +0 -0
  210. {smartsheet_python_sdk-4.0.2 → smartsheet_python_sdk-4.1.0}/smartsheet/smartsheet.py +0 -0
  211. {smartsheet_python_sdk-4.0.2 → smartsheet_python_sdk-4.1.0}/smartsheet/token.py +0 -0
  212. {smartsheet_python_sdk-4.0.2 → smartsheet_python_sdk-4.1.0}/smartsheet/types.py +0 -0
  213. {smartsheet_python_sdk-4.0.2 → smartsheet_python_sdk-4.1.0}/smartsheet/users.py +0 -0
  214. {smartsheet_python_sdk-4.0.2 → smartsheet_python_sdk-4.1.0}/smartsheet/util.py +0 -0
  215. {smartsheet_python_sdk-4.0.2 → smartsheet_python_sdk-4.1.0}/smartsheet/webhooks.py +0 -0
  216. {smartsheet_python_sdk-4.0.2 → smartsheet_python_sdk-4.1.0}/smartsheet/workspaces.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: smartsheet-python-sdk
3
- Version: 4.0.2
3
+ Version: 4.1.0
4
4
  Summary: Library that uses Python to connect to Smartsheet services (using API 2.0).
5
5
  License-Expression: Apache-2.0
6
6
  License-File: LICENSE.md
@@ -23,7 +23,7 @@ import logging
23
23
  import os.path
24
24
 
25
25
  from .util import fresh_operation
26
- from .models import Error, Folder, PaginatedChildrenResult, Result, Sheet
26
+ from .models import Error, Folder, FolderPathNode, PaginatedChildrenResult, Result, Sheet
27
27
 
28
28
 
29
29
  class Folders:
@@ -245,6 +245,26 @@ class Folders:
245
245
 
246
246
  return response
247
247
 
248
+ def get_folder_path(self, folder_id: int) -> Union[FolderPathNode, Error]:
249
+ """Get the hierarchical path of a folder.
250
+
251
+ Args:
252
+ folder_id (int): Folder ID
253
+
254
+ Returns:
255
+ Union[FolderPathNode, Error]: A FolderPathNode object describing the folder's
256
+ location, or an Error object if the request fails.
257
+ """
258
+ _op = fresh_operation("get_folder_path")
259
+ _op["method"] = "GET"
260
+ _op["path"] = "/folders/" + str(folder_id) + "/path"
261
+
262
+ expected = "FolderPathNode"
263
+ prepped_request = self._base.prepare_request(_op)
264
+ response = self._base.request(prepped_request, expected, _op)
265
+
266
+ return response
267
+
248
268
  def get_folder_children(
249
269
  self,
250
270
  folder_id,
@@ -131,6 +131,12 @@ from .webhook_subscope import WebhookSubscope
131
131
  from .widget import Widget
132
132
  from .widget_content import WidgetContent
133
133
  from .workspace import Workspace
134
+ from .path_node import PathNode
135
+ from .path_leaf import PathLeaf
136
+ from .folder_path_node import FolderPathNode
137
+ from .sheet_path_node import SheetPathNode
138
+ from .report_path_node import ReportPathNode
139
+ from .sight_path_node import SightPathNode
134
140
  from .user_plan import UserPlan
135
141
  from .asset_shares_paginated_result import AssetSharesPaginatedResult
136
142
  from .asset_share import AssetShare
@@ -20,3 +20,4 @@ from enum import Enum
20
20
  class PublishAccessibleBy(Enum):
21
21
  ALL = 1
22
22
  ORG = 2
23
+ SHARED = 3
@@ -0,0 +1,67 @@
1
+ # pylint: disable=C0111,R0902,R0904,R0912,R0913,R0915,E1101
2
+ # Smartsheet Python SDK.
3
+ #
4
+ # Copyright 2018 Smartsheet.com, Inc.
5
+ #
6
+ # Licensed under the Apache License, Version 2.0 (the "License"): you may
7
+ # not use this file except in compliance with the License. You may obtain
8
+ # a copy of the License at
9
+ #
10
+ # http://www.apache.org/licenses/LICENSE-2.0
11
+ #
12
+ # Unless required by applicable law or agreed to in writing, software
13
+ # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
14
+ # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
15
+ # License for the specific language governing permissions and limitations
16
+ # under the License.
17
+
18
+ from __future__ import absolute_import
19
+
20
+ from ..types import TypedList
21
+ from ..util import deserialize
22
+ from .path_node import PathNode
23
+
24
+
25
+ class FolderPathNode(PathNode):
26
+
27
+ """Node in a folder path response. Contains recursive folders leading to the target folder."""
28
+
29
+ def __init__(self, props=None, base_obj=None):
30
+ """Initialize the FolderPathNode model."""
31
+ super().__init__(props=None, base_obj=base_obj)
32
+
33
+ self._folders = TypedList(FolderPathNode)
34
+
35
+ if props:
36
+ deserialize(self, props)
37
+
38
+ @property
39
+ def folders(self):
40
+ return self._folders
41
+
42
+ @folders.setter
43
+ def folders(self, value):
44
+ self._folders.load(value)
45
+
46
+ def get_leaf_folder(self):
47
+ """Return the deepest FolderPathNode reachable from this node."""
48
+ if self.folders:
49
+ return self.folders[0].get_leaf_folder()
50
+ return self
51
+
52
+ def get_leaf_folder_path(self):
53
+ """Return a Unix-style path string of folder names from this node to the target folder.
54
+
55
+ Unlike get_sheet_path/get_report_path/get_sight_path, this method returns the
56
+ deepest folder's name even when the root node has no name (e.g. a workspace root),
57
+ because the target IS a folder rather than an asset nested inside one. An empty
58
+ FolderPathNode (no id, no name, no children) returns an empty string.
59
+
60
+ Example: '/Workspace/Folder/TargetFolder'
61
+ """
62
+
63
+ if not self.name:
64
+ return None
65
+ if self.folders:
66
+ return f"/{self.name}{self.folders[0].get_leaf_folder_path()}"
67
+ return f"/{self.name}"
@@ -0,0 +1,53 @@
1
+ # pylint: disable=C0111,R0902,R0904,R0912,R0913,R0915,E1101
2
+ # Smartsheet Python SDK.
3
+ #
4
+ # Copyright 2018 Smartsheet.com, Inc.
5
+ #
6
+ # Licensed under the Apache License, Version 2.0 (the "License"): you may
7
+ # not use this file except in compliance with the License. You may obtain
8
+ # a copy of the License at
9
+ #
10
+ # http://www.apache.org/licenses/LICENSE-2.0
11
+ #
12
+ # Unless required by applicable law or agreed to in writing, software
13
+ # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
14
+ # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
15
+ # License for the specific language governing permissions and limitations
16
+ # under the License.
17
+
18
+ from __future__ import absolute_import
19
+
20
+ from ..types import Timestamp
21
+ from ..util import deserialize
22
+ from .path_node import PathNode
23
+
24
+
25
+ class PathLeaf(PathNode):
26
+
27
+ """Terminal asset node in a Smartsheet path response (sheet, report, sight, or target folder)."""
28
+
29
+ def __init__(self, props=None, base_obj=None):
30
+ """Initialize the PathLeaf model."""
31
+ super().__init__(props=None, base_obj=base_obj)
32
+
33
+ self._created_at = Timestamp()
34
+ self._modified_at = Timestamp()
35
+
36
+ if props:
37
+ deserialize(self, props)
38
+
39
+ @property
40
+ def created_at(self):
41
+ return self._created_at.value
42
+
43
+ @created_at.setter
44
+ def created_at(self, value):
45
+ self._created_at.value = value
46
+
47
+ @property
48
+ def modified_at(self):
49
+ return self._modified_at.value
50
+
51
+ @modified_at.setter
52
+ def modified_at(self, value):
53
+ self._modified_at.value = value
@@ -0,0 +1,84 @@
1
+ # pylint: disable=C0111,R0902,R0904,R0912,R0913,R0915,E1101
2
+ # Smartsheet Python SDK.
3
+ #
4
+ # Copyright 2018 Smartsheet.com, Inc.
5
+ #
6
+ # Licensed under the Apache License, Version 2.0 (the "License"): you may
7
+ # not use this file except in compliance with the License. You may obtain
8
+ # a copy of the License at
9
+ #
10
+ # http://www.apache.org/licenses/LICENSE-2.0
11
+ #
12
+ # Unless required by applicable law or agreed to in writing, software
13
+ # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
14
+ # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
15
+ # License for the specific language governing permissions and limitations
16
+ # under the License.
17
+
18
+ from __future__ import absolute_import
19
+
20
+ from ..types import EnumeratedValue, Number, String, json
21
+ from ..util import deserialize, serialize
22
+ from .enums import AccessLevel
23
+
24
+
25
+ class PathNode:
26
+ """Base node in a Smartsheet path response (workspace root or intermediate folder)."""
27
+
28
+ def __init__(self, props=None, base_obj=None):
29
+ """Initialize the PathNode model."""
30
+ self._base = None
31
+ if base_obj is not None:
32
+ self._base = base_obj
33
+
34
+ self._access_level = EnumeratedValue(AccessLevel)
35
+ self._id = Number()
36
+ self._name = String()
37
+ self._permalink = String()
38
+
39
+ if props:
40
+ deserialize(self, props)
41
+
42
+ self.request_response = None
43
+ self.__initialized = True
44
+
45
+ @property
46
+ def access_level(self):
47
+ return self._access_level
48
+
49
+ @access_level.setter
50
+ def access_level(self, value):
51
+ self._access_level.set(value)
52
+
53
+ @property
54
+ def id(self):
55
+ return self._id.value
56
+
57
+ @id.setter
58
+ def id(self, value):
59
+ self._id.value = value
60
+
61
+ @property
62
+ def name(self):
63
+ return self._name.value
64
+
65
+ @name.setter
66
+ def name(self, value):
67
+ self._name.value = value
68
+
69
+ @property
70
+ def permalink(self):
71
+ return self._permalink.value
72
+
73
+ @permalink.setter
74
+ def permalink(self, value):
75
+ self._permalink.value = value
76
+
77
+ def to_dict(self):
78
+ return serialize(self)
79
+
80
+ def to_json(self):
81
+ return json.dumps(self.to_dict())
82
+
83
+ def __str__(self):
84
+ return self.to_json()
@@ -0,0 +1,72 @@
1
+ # pylint: disable=C0111,R0902,R0904,R0912,R0913,R0915,E1101
2
+ # Smartsheet Python SDK.
3
+ #
4
+ # Copyright 2018 Smartsheet.com, Inc.
5
+ #
6
+ # Licensed under the Apache License, Version 2.0 (the "License"): you may
7
+ # not use this file except in compliance with the License. You may obtain
8
+ # a copy of the License at
9
+ #
10
+ # http://www.apache.org/licenses/LICENSE-2.0
11
+ #
12
+ # Unless required by applicable law or agreed to in writing, software
13
+ # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
14
+ # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
15
+ # License for the specific language governing permissions and limitations
16
+ # under the License.
17
+
18
+ from __future__ import absolute_import
19
+
20
+ from ..types import TypedList
21
+ from ..util import deserialize
22
+ from .path_leaf import PathLeaf
23
+ from .path_node import PathNode
24
+
25
+
26
+ class ReportPathNode(PathNode):
27
+
28
+ """Node in a report path response. Contains recursive folders leading to the target report."""
29
+
30
+ def __init__(self, props=None, base_obj=None):
31
+ """Initialize the ReportPathNode model."""
32
+ super().__init__(props=None, base_obj=base_obj)
33
+
34
+ self._folders = TypedList(ReportPathNode)
35
+ self._reports = TypedList(PathLeaf)
36
+
37
+ if props:
38
+ deserialize(self, props)
39
+
40
+ @property
41
+ def folders(self):
42
+ return self._folders
43
+
44
+ @folders.setter
45
+ def folders(self, value):
46
+ self._folders.load(value)
47
+
48
+ @property
49
+ def reports(self):
50
+ return self._reports
51
+
52
+ @reports.setter
53
+ def reports(self, value):
54
+ self._reports.load(value)
55
+
56
+ def get_leaf_report(self):
57
+ """Return the target PathLeaf report, or None if not reachable."""
58
+ if self.reports:
59
+ return self.reports[0]
60
+ if self.folders:
61
+ return self.folders[0].get_leaf_report()
62
+ return None
63
+
64
+ def get_leaf_report_path(self):
65
+ """Return a Unix-style path string from this node to the target report.
66
+ Example: '/Workspace/Folder/Report'
67
+ """
68
+ if self.reports:
69
+ return f"/{self.name}/{self.reports[0].name}"
70
+ if self.folders:
71
+ return f"/{self.name}{self.folders[0].get_leaf_report_path()}"
72
+ return None
@@ -0,0 +1,72 @@
1
+ # pylint: disable=C0111,R0902,R0904,R0912,R0913,R0915,E1101
2
+ # Smartsheet Python SDK.
3
+ #
4
+ # Copyright 2018 Smartsheet.com, Inc.
5
+ #
6
+ # Licensed under the Apache License, Version 2.0 (the "License"): you may
7
+ # not use this file except in compliance with the License. You may obtain
8
+ # a copy of the License at
9
+ #
10
+ # http://www.apache.org/licenses/LICENSE-2.0
11
+ #
12
+ # Unless required by applicable law or agreed to in writing, software
13
+ # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
14
+ # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
15
+ # License for the specific language governing permissions and limitations
16
+ # under the License.
17
+
18
+ from __future__ import absolute_import
19
+
20
+ from ..types import TypedList
21
+ from ..util import deserialize
22
+ from .path_leaf import PathLeaf
23
+ from .path_node import PathNode
24
+
25
+
26
+ class SheetPathNode(PathNode):
27
+
28
+ """Node in a sheet path response. Contains recursive folders leading to the target sheet."""
29
+
30
+ def __init__(self, props=None, base_obj=None):
31
+ """Initialize the SheetPathNode model."""
32
+ super().__init__(props=None, base_obj=base_obj)
33
+
34
+ self._folders = TypedList(SheetPathNode)
35
+ self._sheets = TypedList(PathLeaf)
36
+
37
+ if props:
38
+ deserialize(self, props)
39
+
40
+ @property
41
+ def folders(self):
42
+ return self._folders
43
+
44
+ @folders.setter
45
+ def folders(self, value):
46
+ self._folders.load(value)
47
+
48
+ @property
49
+ def sheets(self):
50
+ return self._sheets
51
+
52
+ @sheets.setter
53
+ def sheets(self, value):
54
+ self._sheets.load(value)
55
+
56
+ def get_leaf_sheet(self):
57
+ """Return the target PathLeaf sheet, or None if not reachable."""
58
+ if self.sheets:
59
+ return self.sheets[0]
60
+ if self.folders:
61
+ return self.folders[0].get_leaf_sheet()
62
+ return None
63
+
64
+ def get_leaf_sheet_path(self):
65
+ """Return a Unix-style path string from this node to the target sheet.
66
+ Example: '/Workspace/Folder/Sheet'
67
+ """
68
+ if self.sheets:
69
+ return f"/{self.name}/{self.sheets[0].name}"
70
+ if self.folders:
71
+ return f"/{self.name}{self.folders[0].get_leaf_sheet_path()}"
72
+ return None
@@ -0,0 +1,72 @@
1
+ # pylint: disable=C0111,R0902,R0904,R0912,R0913,R0915,E1101
2
+ # Smartsheet Python SDK.
3
+ #
4
+ # Copyright 2018 Smartsheet.com, Inc.
5
+ #
6
+ # Licensed under the Apache License, Version 2.0 (the "License"): you may
7
+ # not use this file except in compliance with the License. You may obtain
8
+ # a copy of the License at
9
+ #
10
+ # http://www.apache.org/licenses/LICENSE-2.0
11
+ #
12
+ # Unless required by applicable law or agreed to in writing, software
13
+ # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
14
+ # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
15
+ # License for the specific language governing permissions and limitations
16
+ # under the License.
17
+
18
+ from __future__ import absolute_import
19
+
20
+ from ..types import TypedList
21
+ from ..util import deserialize
22
+ from .path_leaf import PathLeaf
23
+ from .path_node import PathNode
24
+
25
+
26
+ class SightPathNode(PathNode):
27
+
28
+ """Node in a sight path response. Contains recursive folders leading to the target sight."""
29
+
30
+ def __init__(self, props=None, base_obj=None):
31
+ """Initialize the SightPathNode model."""
32
+ super().__init__(props=None, base_obj=base_obj)
33
+
34
+ self._folders = TypedList(SightPathNode)
35
+ self._sights = TypedList(PathLeaf)
36
+
37
+ if props:
38
+ deserialize(self, props)
39
+
40
+ @property
41
+ def folders(self):
42
+ return self._folders
43
+
44
+ @folders.setter
45
+ def folders(self, value):
46
+ self._folders.load(value)
47
+
48
+ @property
49
+ def sights(self):
50
+ return self._sights
51
+
52
+ @sights.setter
53
+ def sights(self, value):
54
+ self._sights.load(value)
55
+
56
+ def get_leaf_sight(self):
57
+ """Return the target PathLeaf sight, or None if not reachable."""
58
+ if self.sights:
59
+ return self.sights[0]
60
+ if self.folders:
61
+ return self.folders[0].get_leaf_sight()
62
+ return None
63
+
64
+ def get_leaf_sight_path(self):
65
+ """Return a Unix-style path string from this node to the target sight.
66
+ Example: '/Workspace/Folder/Sight'
67
+ """
68
+ if self.sights:
69
+ return f"/{self.name}/{self.sights[0].name}"
70
+ if self.folders:
71
+ return f"/{self.name}{self.folders[0].get_leaf_sight_path()}"
72
+ return None
@@ -35,6 +35,7 @@ from .models import (
35
35
  ReportDefinition,
36
36
  ReportPublish,
37
37
  ReportScopeInclusion,
38
+ ReportPathNode,
38
39
  Result,
39
40
  )
40
41
 
@@ -160,6 +161,26 @@ class Reports:
160
161
 
161
162
  return response
162
163
 
164
+ def get_report_path(self, report_id: int) -> Union[ReportPathNode, Error]:
165
+ """Get the hierarchical path of a report.
166
+
167
+ Args:
168
+ report_id (int): Report ID
169
+
170
+ Returns:
171
+ Union[ReportPathNode, Error]: A ReportPathNode object describing the report's
172
+ location, or an Error object if the request fails.
173
+ """
174
+ _op = fresh_operation("get_report_path")
175
+ _op["method"] = "GET"
176
+ _op["path"] = "/reports/" + str(report_id) + "/path"
177
+
178
+ expected = "ReportPathNode"
179
+ prepped_request = self._base.prepare_request(_op)
180
+ response = self._base.request(prepped_request, expected, _op)
181
+
182
+ return response
183
+
163
184
  def get_report_as_csv(self, report_id, download_path, alternate_file_name=None) -> Union[DownloadedFile, Error]:
164
185
  """Get the specified Report as a CSV file.
165
186
 
@@ -27,7 +27,7 @@ import six
27
27
  from .util import fresh_operation
28
28
  from .models import AutomationRule, BulkItemResult, Column, CopyOrMoveRowResult, CrossSheetReference, DownloadedFile, \
29
29
  IndexResult, NumberObjectValue, Result, Row, SearchResult, SentUpdateRequest, Sheet, SheetFilter, \
30
- SheetPublish, SheetSummary, SummaryField, UpdateRequest, Version, Error
30
+ SheetPathNode, SheetPublish, SheetSummary, SummaryField, UpdateRequest, Version, Error
31
31
  from .types import TypedList
32
32
  from .util import deprecated
33
33
 
@@ -523,6 +523,26 @@ class Sheets:
523
523
 
524
524
  return response
525
525
 
526
+ def get_sheet_path(self, sheet_id: int) -> Union[SheetPathNode, Error]:
527
+ """Get the hierarchical path of a sheet.
528
+
529
+ Args:
530
+ sheet_id (int): Sheet ID
531
+
532
+ Returns:
533
+ Union[SheetPathNode, Error]: A SheetPathNode object describing the sheet's
534
+ location, or an Error object if the request fails.
535
+ """
536
+ _op = fresh_operation("get_sheet_path")
537
+ _op["method"] = "GET"
538
+ _op["path"] = "/sheets/" + str(sheet_id) + "/path"
539
+
540
+ expected = "SheetPathNode"
541
+ prepped_request = self._base.prepare_request(_op)
542
+ response = self._base.request(prepped_request, expected, _op)
543
+
544
+ return response
545
+
526
546
  def get_sheet_as_csv(self, sheet_id, download_path, alternate_file_name=None) -> Union[DownloadedFile, Error]:
527
547
  """Get the specified Sheet as a CSV file.
528
548
 
@@ -19,7 +19,7 @@ import logging
19
19
  from typing import Optional, Union
20
20
 
21
21
  from .util import fresh_operation
22
- from .models import Error, Result, Sight, SightPublish, TokenPaginatedResult
22
+ from .models import Error, Result, Sight, SightPathNode, SightPublish, TokenPaginatedResult
23
23
 
24
24
 
25
25
  class Sights:
@@ -88,6 +88,26 @@ class Sights:
88
88
 
89
89
  return response
90
90
 
91
+ def get_sight_path(self, sight_id: int) -> Union[SightPathNode, Error]:
92
+ """Get the hierarchical path of a sight.
93
+
94
+ Args:
95
+ sight_id (int): Sight ID
96
+
97
+ Returns:
98
+ Union[SightPathNode, Error]: A SightPathNode object describing the Sight's
99
+ location, or an Error object if the request fails.
100
+ """
101
+ _op = fresh_operation("get_sight_path")
102
+ _op["method"] = "GET"
103
+ _op["path"] = "/sights/" + str(sight_id) + "/path"
104
+
105
+ expected = "SightPathNode"
106
+ prepped_request = self._base.prepare_request(_op)
107
+ response = self._base.request(prepped_request, expected, _op)
108
+
109
+ return response
110
+
91
111
  def update_sight(self, sight_id, sight_obj) -> Union[Result[Sight], Error]:
92
112
  """Updates the specified Sight.
93
113
 
@@ -18,7 +18,7 @@ version_tuple: tuple[int | str, ...]
18
18
  commit_id: str | None
19
19
  __commit_id__: str | None
20
20
 
21
- __version__ = version = '4.0.2'
22
- __version_tuple__ = version_tuple = (4, 0, 2)
21
+ __version__ = version = '4.1.0'
22
+ __version_tuple__ = version_tuple = (4, 1, 0)
23
23
 
24
24
  __commit_id__ = commit_id = None