smartsheet-python-sdk 3.2.0__tar.gz → 3.3.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 (261) hide show
  1. {smartsheet-python-sdk-3.2.0 → smartsheet_python_sdk-3.3.0}/CHANGELOG.md +17 -0
  2. {smartsheet-python-sdk-3.2.0/smartsheet_python_sdk.egg-info → smartsheet_python_sdk-3.3.0}/PKG-INFO +31 -7
  3. {smartsheet-python-sdk-3.2.0 → smartsheet_python_sdk-3.3.0}/README.md +3 -3
  4. smartsheet_python_sdk-3.3.0/smartsheet/asset_shares.py +163 -0
  5. {smartsheet-python-sdk-3.2.0 → smartsheet_python_sdk-3.3.0}/smartsheet/models/enums/__init__.py +1 -0
  6. smartsheet_python_sdk-3.3.0/smartsheet/models/enums/asset_type.py +10 -0
  7. {smartsheet-python-sdk-3.2.0 → smartsheet_python_sdk-3.3.0}/smartsheet/sheets.py +16 -1
  8. {smartsheet-python-sdk-3.2.0 → smartsheet_python_sdk-3.3.0}/smartsheet/version.py +2 -2
  9. {smartsheet-python-sdk-3.2.0 → smartsheet_python_sdk-3.3.0/smartsheet_python_sdk.egg-info}/PKG-INFO +31 -7
  10. {smartsheet-python-sdk-3.2.0 → smartsheet_python_sdk-3.3.0}/smartsheet_python_sdk.egg-info/SOURCES.txt +3 -0
  11. smartsheet_python_sdk-3.3.0/tests/integration/test_sharing.py +83 -0
  12. {smartsheet-python-sdk-3.2.0 → smartsheet_python_sdk-3.3.0}/.gitchangelog.rc +0 -0
  13. {smartsheet-python-sdk-3.2.0 → smartsheet_python_sdk-3.3.0}/.gitchangelog.tpl +0 -0
  14. {smartsheet-python-sdk-3.2.0 → smartsheet_python_sdk-3.3.0}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
  15. {smartsheet-python-sdk-3.2.0 → smartsheet_python_sdk-3.3.0}/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
  16. {smartsheet-python-sdk-3.2.0 → smartsheet_python_sdk-3.3.0}/.github/pull_request_template.md +0 -0
  17. {smartsheet-python-sdk-3.2.0 → smartsheet_python_sdk-3.3.0}/.github/workflows/publish-distribution.yaml +0 -0
  18. {smartsheet-python-sdk-3.2.0 → smartsheet_python_sdk-3.3.0}/.github/workflows/publish-documentation.yaml +0 -0
  19. {smartsheet-python-sdk-3.2.0 → smartsheet_python_sdk-3.3.0}/.github/workflows/test-build.yaml +0 -0
  20. {smartsheet-python-sdk-3.2.0 → smartsheet_python_sdk-3.3.0}/.gitignore +0 -0
  21. {smartsheet-python-sdk-3.2.0 → smartsheet_python_sdk-3.3.0}/.markdownlint.json +0 -0
  22. {smartsheet-python-sdk-3.2.0 → smartsheet_python_sdk-3.3.0}/ADVANCED.md +0 -0
  23. {smartsheet-python-sdk-3.2.0 → smartsheet_python_sdk-3.3.0}/CONTRIBUTING.md +0 -0
  24. {smartsheet-python-sdk-3.2.0 → smartsheet_python_sdk-3.3.0}/LICENSE.md +0 -0
  25. {smartsheet-python-sdk-3.2.0 → smartsheet_python_sdk-3.3.0}/Makefile +0 -0
  26. {smartsheet-python-sdk-3.2.0 → smartsheet_python_sdk-3.3.0}/NOTICE +0 -0
  27. {smartsheet-python-sdk-3.2.0 → smartsheet_python_sdk-3.3.0}/docs-source/Makefile +0 -0
  28. {smartsheet-python-sdk-3.2.0 → smartsheet_python_sdk-3.3.0}/docs-source/conf.py +0 -0
  29. {smartsheet-python-sdk-3.2.0 → smartsheet_python_sdk-3.3.0}/docs-source/index.rst +0 -0
  30. {smartsheet-python-sdk-3.2.0 → smartsheet_python_sdk-3.3.0}/pylintrc +0 -0
  31. {smartsheet-python-sdk-3.2.0 → smartsheet_python_sdk-3.3.0}/setup.cfg +0 -0
  32. {smartsheet-python-sdk-3.2.0 → smartsheet_python_sdk-3.3.0}/setup.py +0 -0
  33. {smartsheet-python-sdk-3.2.0 → smartsheet_python_sdk-3.3.0}/smartsheet/__init__.py +0 -0
  34. {smartsheet-python-sdk-3.2.0 → smartsheet_python_sdk-3.3.0}/smartsheet/attachments.py +0 -0
  35. {smartsheet-python-sdk-3.2.0 → smartsheet_python_sdk-3.3.0}/smartsheet/cells.py +0 -0
  36. {smartsheet-python-sdk-3.2.0 → smartsheet_python_sdk-3.3.0}/smartsheet/contacts.py +0 -0
  37. {smartsheet-python-sdk-3.2.0 → smartsheet_python_sdk-3.3.0}/smartsheet/discussions.py +0 -0
  38. {smartsheet-python-sdk-3.2.0 → smartsheet_python_sdk-3.3.0}/smartsheet/events.py +0 -0
  39. {smartsheet-python-sdk-3.2.0 → smartsheet_python_sdk-3.3.0}/smartsheet/exceptions.py +0 -0
  40. {smartsheet-python-sdk-3.2.0 → smartsheet_python_sdk-3.3.0}/smartsheet/favorites.py +0 -0
  41. {smartsheet-python-sdk-3.2.0 → smartsheet_python_sdk-3.3.0}/smartsheet/folders.py +0 -0
  42. {smartsheet-python-sdk-3.2.0 → smartsheet_python_sdk-3.3.0}/smartsheet/groups.py +0 -0
  43. {smartsheet-python-sdk-3.2.0 → smartsheet_python_sdk-3.3.0}/smartsheet/home.py +0 -0
  44. {smartsheet-python-sdk-3.2.0 → smartsheet_python_sdk-3.3.0}/smartsheet/images.py +0 -0
  45. {smartsheet-python-sdk-3.2.0 → smartsheet_python_sdk-3.3.0}/smartsheet/models/__init__.py +0 -0
  46. {smartsheet-python-sdk-3.2.0 → smartsheet_python_sdk-3.3.0}/smartsheet/models/access_token.py +0 -0
  47. {smartsheet-python-sdk-3.2.0 → smartsheet_python_sdk-3.3.0}/smartsheet/models/account.py +0 -0
  48. {smartsheet-python-sdk-3.2.0 → smartsheet_python_sdk-3.3.0}/smartsheet/models/alternate_email.py +0 -0
  49. {smartsheet-python-sdk-3.2.0 → smartsheet_python_sdk-3.3.0}/smartsheet/models/attachment.py +0 -0
  50. {smartsheet-python-sdk-3.2.0 → smartsheet_python_sdk-3.3.0}/smartsheet/models/auto_number_format.py +0 -0
  51. {smartsheet-python-sdk-3.2.0 → smartsheet_python_sdk-3.3.0}/smartsheet/models/automation_action.py +0 -0
  52. {smartsheet-python-sdk-3.2.0 → smartsheet_python_sdk-3.3.0}/smartsheet/models/automation_rule.py +0 -0
  53. {smartsheet-python-sdk-3.2.0 → smartsheet_python_sdk-3.3.0}/smartsheet/models/boolean_object_value.py +0 -0
  54. {smartsheet-python-sdk-3.2.0 → smartsheet_python_sdk-3.3.0}/smartsheet/models/bulk_item_failure.py +0 -0
  55. {smartsheet-python-sdk-3.2.0 → smartsheet_python_sdk-3.3.0}/smartsheet/models/bulk_item_result.py +0 -0
  56. {smartsheet-python-sdk-3.2.0 → smartsheet_python_sdk-3.3.0}/smartsheet/models/cell.py +0 -0
  57. {smartsheet-python-sdk-3.2.0 → smartsheet_python_sdk-3.3.0}/smartsheet/models/cell_data_item.py +0 -0
  58. {smartsheet-python-sdk-3.2.0 → smartsheet_python_sdk-3.3.0}/smartsheet/models/cell_history.py +0 -0
  59. {smartsheet-python-sdk-3.2.0 → smartsheet_python_sdk-3.3.0}/smartsheet/models/cell_link.py +0 -0
  60. {smartsheet-python-sdk-3.2.0 → smartsheet_python_sdk-3.3.0}/smartsheet/models/cell_link_widget_content.py +0 -0
  61. {smartsheet-python-sdk-3.2.0 → smartsheet_python_sdk-3.3.0}/smartsheet/models/chart_widget_content.py +0 -0
  62. {smartsheet-python-sdk-3.2.0 → smartsheet_python_sdk-3.3.0}/smartsheet/models/column.py +0 -0
  63. {smartsheet-python-sdk-3.2.0 → smartsheet_python_sdk-3.3.0}/smartsheet/models/comment.py +0 -0
  64. {smartsheet-python-sdk-3.2.0 → smartsheet_python_sdk-3.3.0}/smartsheet/models/contact.py +0 -0
  65. {smartsheet-python-sdk-3.2.0 → smartsheet_python_sdk-3.3.0}/smartsheet/models/contact_object_value.py +0 -0
  66. {smartsheet-python-sdk-3.2.0 → smartsheet_python_sdk-3.3.0}/smartsheet/models/container_destination.py +0 -0
  67. {smartsheet-python-sdk-3.2.0 → smartsheet_python_sdk-3.3.0}/smartsheet/models/copy_or_move_row_destination.py +0 -0
  68. {smartsheet-python-sdk-3.2.0 → smartsheet_python_sdk-3.3.0}/smartsheet/models/copy_or_move_row_directive.py +0 -0
  69. {smartsheet-python-sdk-3.2.0 → smartsheet_python_sdk-3.3.0}/smartsheet/models/copy_or_move_row_result.py +0 -0
  70. {smartsheet-python-sdk-3.2.0 → smartsheet_python_sdk-3.3.0}/smartsheet/models/criteria.py +0 -0
  71. {smartsheet-python-sdk-3.2.0 → smartsheet_python_sdk-3.3.0}/smartsheet/models/cross_sheet_reference.py +0 -0
  72. {smartsheet-python-sdk-3.2.0 → smartsheet_python_sdk-3.3.0}/smartsheet/models/currency.py +0 -0
  73. {smartsheet-python-sdk-3.2.0 → smartsheet_python_sdk-3.3.0}/smartsheet/models/date_object_value.py +0 -0
  74. {smartsheet-python-sdk-3.2.0 → smartsheet_python_sdk-3.3.0}/smartsheet/models/datetime_object_value.py +0 -0
  75. {smartsheet-python-sdk-3.2.0 → smartsheet_python_sdk-3.3.0}/smartsheet/models/discussion.py +0 -0
  76. {smartsheet-python-sdk-3.2.0 → smartsheet_python_sdk-3.3.0}/smartsheet/models/downloaded_file.py +0 -0
  77. {smartsheet-python-sdk-3.2.0 → smartsheet_python_sdk-3.3.0}/smartsheet/models/duration.py +0 -0
  78. {smartsheet-python-sdk-3.2.0 → smartsheet_python_sdk-3.3.0}/smartsheet/models/email.py +0 -0
  79. {smartsheet-python-sdk-3.2.0 → smartsheet_python_sdk-3.3.0}/smartsheet/models/enums/access_level.py +0 -0
  80. {smartsheet-python-sdk-3.2.0 → smartsheet_python_sdk-3.3.0}/smartsheet/models/enums/attachment_parent_type.py +0 -0
  81. {smartsheet-python-sdk-3.2.0 → smartsheet_python_sdk-3.3.0}/smartsheet/models/enums/attachment_sub_type.py +0 -0
  82. {smartsheet-python-sdk-3.2.0 → smartsheet_python_sdk-3.3.0}/smartsheet/models/enums/attachment_type.py +0 -0
  83. {smartsheet-python-sdk-3.2.0 → smartsheet_python_sdk-3.3.0}/smartsheet/models/enums/automation_action_frequency.py +0 -0
  84. {smartsheet-python-sdk-3.2.0 → smartsheet_python_sdk-3.3.0}/smartsheet/models/enums/automation_action_type.py +0 -0
  85. {smartsheet-python-sdk-3.2.0 → smartsheet_python_sdk-3.3.0}/smartsheet/models/enums/automation_rule_disabled_reason.py +0 -0
  86. {smartsheet-python-sdk-3.2.0 → smartsheet_python_sdk-3.3.0}/smartsheet/models/enums/cell_link_status.py +0 -0
  87. {smartsheet-python-sdk-3.2.0 → smartsheet_python_sdk-3.3.0}/smartsheet/models/enums/column_type.py +0 -0
  88. {smartsheet-python-sdk-3.2.0 → smartsheet_python_sdk-3.3.0}/smartsheet/models/enums/criteria_target.py +0 -0
  89. {smartsheet-python-sdk-3.2.0 → smartsheet_python_sdk-3.3.0}/smartsheet/models/enums/cross_sheet_reference_status.py +0 -0
  90. {smartsheet-python-sdk-3.2.0 → smartsheet_python_sdk-3.3.0}/smartsheet/models/enums/currency_code.py +0 -0
  91. {smartsheet-python-sdk-3.2.0 → smartsheet_python_sdk-3.3.0}/smartsheet/models/enums/day_descriptors.py +0 -0
  92. {smartsheet-python-sdk-3.2.0 → smartsheet_python_sdk-3.3.0}/smartsheet/models/enums/day_ordinal.py +0 -0
  93. {smartsheet-python-sdk-3.2.0 → smartsheet_python_sdk-3.3.0}/smartsheet/models/enums/event_action.py +0 -0
  94. {smartsheet-python-sdk-3.2.0 → smartsheet_python_sdk-3.3.0}/smartsheet/models/enums/event_obejct_type.py +0 -0
  95. {smartsheet-python-sdk-3.2.0 → smartsheet_python_sdk-3.3.0}/smartsheet/models/enums/event_source.py +0 -0
  96. {smartsheet-python-sdk-3.2.0 → smartsheet_python_sdk-3.3.0}/smartsheet/models/enums/global_template.py +0 -0
  97. {smartsheet-python-sdk-3.2.0 → smartsheet_python_sdk-3.3.0}/smartsheet/models/enums/operator.py +0 -0
  98. {smartsheet-python-sdk-3.2.0 → smartsheet_python_sdk-3.3.0}/smartsheet/models/enums/paper_type.py +0 -0
  99. {smartsheet-python-sdk-3.2.0 → smartsheet_python_sdk-3.3.0}/smartsheet/models/enums/predecessor_type.py +0 -0
  100. {smartsheet-python-sdk-3.2.0 → smartsheet_python_sdk-3.3.0}/smartsheet/models/enums/publish_accessible_by.py +0 -0
  101. {smartsheet-python-sdk-3.2.0 → smartsheet_python_sdk-3.3.0}/smartsheet/models/enums/schedule_type.py +0 -0
  102. {smartsheet-python-sdk-3.2.0 → smartsheet_python_sdk-3.3.0}/smartsheet/models/enums/seat_type.py +0 -0
  103. {smartsheet-python-sdk-3.2.0 → smartsheet_python_sdk-3.3.0}/smartsheet/models/enums/share_scope.py +0 -0
  104. {smartsheet-python-sdk-3.2.0 → smartsheet_python_sdk-3.3.0}/smartsheet/models/enums/share_type.py +0 -0
  105. {smartsheet-python-sdk-3.2.0 → smartsheet_python_sdk-3.3.0}/smartsheet/models/enums/sheet_email_format.py +0 -0
  106. {smartsheet-python-sdk-3.2.0 → smartsheet_python_sdk-3.3.0}/smartsheet/models/enums/sheet_filter_operator.py +0 -0
  107. {smartsheet-python-sdk-3.2.0 → smartsheet_python_sdk-3.3.0}/smartsheet/models/enums/sheet_filter_type.py +0 -0
  108. {smartsheet-python-sdk-3.2.0 → smartsheet_python_sdk-3.3.0}/smartsheet/models/enums/sort_direction.py +0 -0
  109. {smartsheet-python-sdk-3.2.0 → smartsheet_python_sdk-3.3.0}/smartsheet/models/enums/symbol.py +0 -0
  110. {smartsheet-python-sdk-3.2.0 → smartsheet_python_sdk-3.3.0}/smartsheet/models/enums/system_column_type.py +0 -0
  111. {smartsheet-python-sdk-3.2.0 → smartsheet_python_sdk-3.3.0}/smartsheet/models/enums/update_request_status.py +0 -0
  112. {smartsheet-python-sdk-3.2.0 → smartsheet_python_sdk-3.3.0}/smartsheet/models/enums/user_status.py +0 -0
  113. {smartsheet-python-sdk-3.2.0 → smartsheet_python_sdk-3.3.0}/smartsheet/models/enums/widget_type.py +0 -0
  114. {smartsheet-python-sdk-3.2.0 → smartsheet_python_sdk-3.3.0}/smartsheet/models/error.py +0 -0
  115. {smartsheet-python-sdk-3.2.0 → smartsheet_python_sdk-3.3.0}/smartsheet/models/error_result.py +0 -0
  116. {smartsheet-python-sdk-3.2.0 → smartsheet_python_sdk-3.3.0}/smartsheet/models/event.py +0 -0
  117. {smartsheet-python-sdk-3.2.0 → smartsheet_python_sdk-3.3.0}/smartsheet/models/event_result.py +0 -0
  118. {smartsheet-python-sdk-3.2.0 → smartsheet_python_sdk-3.3.0}/smartsheet/models/explicit_null.py +0 -0
  119. {smartsheet-python-sdk-3.2.0 → smartsheet_python_sdk-3.3.0}/smartsheet/models/favorite.py +0 -0
  120. {smartsheet-python-sdk-3.2.0 → smartsheet_python_sdk-3.3.0}/smartsheet/models/folder.py +0 -0
  121. {smartsheet-python-sdk-3.2.0 → smartsheet_python_sdk-3.3.0}/smartsheet/models/font_family.py +0 -0
  122. {smartsheet-python-sdk-3.2.0 → smartsheet_python_sdk-3.3.0}/smartsheet/models/format_details.py +0 -0
  123. {smartsheet-python-sdk-3.2.0 → smartsheet_python_sdk-3.3.0}/smartsheet/models/format_tables.py +0 -0
  124. {smartsheet-python-sdk-3.2.0 → smartsheet_python_sdk-3.3.0}/smartsheet/models/group.py +0 -0
  125. {smartsheet-python-sdk-3.2.0 → smartsheet_python_sdk-3.3.0}/smartsheet/models/group_member.py +0 -0
  126. {smartsheet-python-sdk-3.2.0 → smartsheet_python_sdk-3.3.0}/smartsheet/models/home.py +0 -0
  127. {smartsheet-python-sdk-3.2.0 → smartsheet_python_sdk-3.3.0}/smartsheet/models/hyperlink.py +0 -0
  128. {smartsheet-python-sdk-3.2.0 → smartsheet_python_sdk-3.3.0}/smartsheet/models/image.py +0 -0
  129. {smartsheet-python-sdk-3.2.0 → smartsheet_python_sdk-3.3.0}/smartsheet/models/image_url.py +0 -0
  130. {smartsheet-python-sdk-3.2.0 → smartsheet_python_sdk-3.3.0}/smartsheet/models/image_url_map.py +0 -0
  131. {smartsheet-python-sdk-3.2.0 → smartsheet_python_sdk-3.3.0}/smartsheet/models/image_widget_content.py +0 -0
  132. {smartsheet-python-sdk-3.2.0 → smartsheet_python_sdk-3.3.0}/smartsheet/models/index_result.py +0 -0
  133. {smartsheet-python-sdk-3.2.0 → smartsheet_python_sdk-3.3.0}/smartsheet/models/json_object.py +0 -0
  134. {smartsheet-python-sdk-3.2.0 → smartsheet_python_sdk-3.3.0}/smartsheet/models/multi_contact_object_value.py +0 -0
  135. {smartsheet-python-sdk-3.2.0 → smartsheet_python_sdk-3.3.0}/smartsheet/models/multi_picklist_object_value.py +0 -0
  136. {smartsheet-python-sdk-3.2.0 → smartsheet_python_sdk-3.3.0}/smartsheet/models/multi_row_email.py +0 -0
  137. {smartsheet-python-sdk-3.2.0 → smartsheet_python_sdk-3.3.0}/smartsheet/models/number_object_value.py +0 -0
  138. {smartsheet-python-sdk-3.2.0 → smartsheet_python_sdk-3.3.0}/smartsheet/models/o_auth_error.py +0 -0
  139. {smartsheet-python-sdk-3.2.0 → smartsheet_python_sdk-3.3.0}/smartsheet/models/object_value.py +0 -0
  140. {smartsheet-python-sdk-3.2.0 → smartsheet_python_sdk-3.3.0}/smartsheet/models/paginated_children_result.py +0 -0
  141. {smartsheet-python-sdk-3.2.0 → smartsheet_python_sdk-3.3.0}/smartsheet/models/predecessor.py +0 -0
  142. {smartsheet-python-sdk-3.2.0 → smartsheet_python_sdk-3.3.0}/smartsheet/models/predecessor_list.py +0 -0
  143. {smartsheet-python-sdk-3.2.0 → smartsheet_python_sdk-3.3.0}/smartsheet/models/primitive_object_value.py +0 -0
  144. {smartsheet-python-sdk-3.2.0 → smartsheet_python_sdk-3.3.0}/smartsheet/models/profile_image.py +0 -0
  145. {smartsheet-python-sdk-3.2.0 → smartsheet_python_sdk-3.3.0}/smartsheet/models/project_settings.py +0 -0
  146. {smartsheet-python-sdk-3.2.0 → smartsheet_python_sdk-3.3.0}/smartsheet/models/recipient.py +0 -0
  147. {smartsheet-python-sdk-3.2.0 → smartsheet_python_sdk-3.3.0}/smartsheet/models/report.py +0 -0
  148. {smartsheet-python-sdk-3.2.0 → smartsheet_python_sdk-3.3.0}/smartsheet/models/report_cell.py +0 -0
  149. {smartsheet-python-sdk-3.2.0 → smartsheet_python_sdk-3.3.0}/smartsheet/models/report_column.py +0 -0
  150. {smartsheet-python-sdk-3.2.0 → smartsheet_python_sdk-3.3.0}/smartsheet/models/report_publish.py +0 -0
  151. {smartsheet-python-sdk-3.2.0 → smartsheet_python_sdk-3.3.0}/smartsheet/models/report_row.py +0 -0
  152. {smartsheet-python-sdk-3.2.0 → smartsheet_python_sdk-3.3.0}/smartsheet/models/report_widget_content.py +0 -0
  153. {smartsheet-python-sdk-3.2.0 → smartsheet_python_sdk-3.3.0}/smartsheet/models/result.py +0 -0
  154. {smartsheet-python-sdk-3.2.0 → smartsheet_python_sdk-3.3.0}/smartsheet/models/row.py +0 -0
  155. {smartsheet-python-sdk-3.2.0 → smartsheet_python_sdk-3.3.0}/smartsheet/models/row_email.py +0 -0
  156. {smartsheet-python-sdk-3.2.0 → smartsheet_python_sdk-3.3.0}/smartsheet/models/row_mapping.py +0 -0
  157. {smartsheet-python-sdk-3.2.0 → smartsheet_python_sdk-3.3.0}/smartsheet/models/schedule.py +0 -0
  158. {smartsheet-python-sdk-3.2.0 → smartsheet_python_sdk-3.3.0}/smartsheet/models/scope.py +0 -0
  159. {smartsheet-python-sdk-3.2.0 → smartsheet_python_sdk-3.3.0}/smartsheet/models/search_result.py +0 -0
  160. {smartsheet-python-sdk-3.2.0 → smartsheet_python_sdk-3.3.0}/smartsheet/models/search_result_item.py +0 -0
  161. {smartsheet-python-sdk-3.2.0 → smartsheet_python_sdk-3.3.0}/smartsheet/models/selection_range.py +0 -0
  162. {smartsheet-python-sdk-3.2.0 → smartsheet_python_sdk-3.3.0}/smartsheet/models/sent_update_request.py +0 -0
  163. {smartsheet-python-sdk-3.2.0 → smartsheet_python_sdk-3.3.0}/smartsheet/models/server_info.py +0 -0
  164. {smartsheet-python-sdk-3.2.0 → smartsheet_python_sdk-3.3.0}/smartsheet/models/share.py +0 -0
  165. {smartsheet-python-sdk-3.2.0 → smartsheet_python_sdk-3.3.0}/smartsheet/models/sheet.py +0 -0
  166. {smartsheet-python-sdk-3.2.0 → smartsheet_python_sdk-3.3.0}/smartsheet/models/sheet_email.py +0 -0
  167. {smartsheet-python-sdk-3.2.0 → smartsheet_python_sdk-3.3.0}/smartsheet/models/sheet_filter.py +0 -0
  168. {smartsheet-python-sdk-3.2.0 → smartsheet_python_sdk-3.3.0}/smartsheet/models/sheet_filter_details.py +0 -0
  169. {smartsheet-python-sdk-3.2.0 → smartsheet_python_sdk-3.3.0}/smartsheet/models/sheet_publish.py +0 -0
  170. {smartsheet-python-sdk-3.2.0 → smartsheet_python_sdk-3.3.0}/smartsheet/models/sheet_summary.py +0 -0
  171. {smartsheet-python-sdk-3.2.0 → smartsheet_python_sdk-3.3.0}/smartsheet/models/sheet_user_permissions.py +0 -0
  172. {smartsheet-python-sdk-3.2.0 → smartsheet_python_sdk-3.3.0}/smartsheet/models/sheet_user_settings.py +0 -0
  173. {smartsheet-python-sdk-3.2.0 → smartsheet_python_sdk-3.3.0}/smartsheet/models/shortcut_data_item.py +0 -0
  174. {smartsheet-python-sdk-3.2.0 → smartsheet_python_sdk-3.3.0}/smartsheet/models/shortcut_widget_content.py +0 -0
  175. {smartsheet-python-sdk-3.2.0 → smartsheet_python_sdk-3.3.0}/smartsheet/models/sight.py +0 -0
  176. {smartsheet-python-sdk-3.2.0 → smartsheet_python_sdk-3.3.0}/smartsheet/models/sight_publish.py +0 -0
  177. {smartsheet-python-sdk-3.2.0 → smartsheet_python_sdk-3.3.0}/smartsheet/models/sort_criterion.py +0 -0
  178. {smartsheet-python-sdk-3.2.0 → smartsheet_python_sdk-3.3.0}/smartsheet/models/sort_specifier.py +0 -0
  179. {smartsheet-python-sdk-3.2.0 → smartsheet_python_sdk-3.3.0}/smartsheet/models/source.py +0 -0
  180. {smartsheet-python-sdk-3.2.0 → smartsheet_python_sdk-3.3.0}/smartsheet/models/string_object_value.py +0 -0
  181. {smartsheet-python-sdk-3.2.0 → smartsheet_python_sdk-3.3.0}/smartsheet/models/summary_field.py +0 -0
  182. {smartsheet-python-sdk-3.2.0 → smartsheet_python_sdk-3.3.0}/smartsheet/models/template.py +0 -0
  183. {smartsheet-python-sdk-3.2.0 → smartsheet_python_sdk-3.3.0}/smartsheet/models/title_rich_text_widget_content.py +0 -0
  184. {smartsheet-python-sdk-3.2.0 → smartsheet_python_sdk-3.3.0}/smartsheet/models/token_paginated_result.py +0 -0
  185. {smartsheet-python-sdk-3.2.0 → smartsheet_python_sdk-3.3.0}/smartsheet/models/update_request.py +0 -0
  186. {smartsheet-python-sdk-3.2.0 → smartsheet_python_sdk-3.3.0}/smartsheet/models/user.py +0 -0
  187. {smartsheet-python-sdk-3.2.0 → smartsheet_python_sdk-3.3.0}/smartsheet/models/user_model.py +0 -0
  188. {smartsheet-python-sdk-3.2.0 → smartsheet_python_sdk-3.3.0}/smartsheet/models/user_plan.py +0 -0
  189. {smartsheet-python-sdk-3.2.0 → smartsheet_python_sdk-3.3.0}/smartsheet/models/user_profile.py +0 -0
  190. {smartsheet-python-sdk-3.2.0 → smartsheet_python_sdk-3.3.0}/smartsheet/models/version.py +0 -0
  191. {smartsheet-python-sdk-3.2.0 → smartsheet_python_sdk-3.3.0}/smartsheet/models/web_content_widget_content.py +0 -0
  192. {smartsheet-python-sdk-3.2.0 → smartsheet_python_sdk-3.3.0}/smartsheet/models/webhook.py +0 -0
  193. {smartsheet-python-sdk-3.2.0 → smartsheet_python_sdk-3.3.0}/smartsheet/models/webhook_secret.py +0 -0
  194. {smartsheet-python-sdk-3.2.0 → smartsheet_python_sdk-3.3.0}/smartsheet/models/webhook_stats.py +0 -0
  195. {smartsheet-python-sdk-3.2.0 → smartsheet_python_sdk-3.3.0}/smartsheet/models/webhook_subscope.py +0 -0
  196. {smartsheet-python-sdk-3.2.0 → smartsheet_python_sdk-3.3.0}/smartsheet/models/widget.py +0 -0
  197. {smartsheet-python-sdk-3.2.0 → smartsheet_python_sdk-3.3.0}/smartsheet/models/widget_content.py +0 -0
  198. {smartsheet-python-sdk-3.2.0 → smartsheet_python_sdk-3.3.0}/smartsheet/models/widget_hyperlink.py +0 -0
  199. {smartsheet-python-sdk-3.2.0 → smartsheet_python_sdk-3.3.0}/smartsheet/models/workspace.py +0 -0
  200. {smartsheet-python-sdk-3.2.0 → smartsheet_python_sdk-3.3.0}/smartsheet/object_value.py +0 -0
  201. {smartsheet-python-sdk-3.2.0 → smartsheet_python_sdk-3.3.0}/smartsheet/passthrough.py +0 -0
  202. {smartsheet-python-sdk-3.2.0 → smartsheet_python_sdk-3.3.0}/smartsheet/reports.py +0 -0
  203. {smartsheet-python-sdk-3.2.0 → smartsheet_python_sdk-3.3.0}/smartsheet/search.py +0 -0
  204. {smartsheet-python-sdk-3.2.0 → smartsheet_python_sdk-3.3.0}/smartsheet/server.py +0 -0
  205. {smartsheet-python-sdk-3.2.0 → smartsheet_python_sdk-3.3.0}/smartsheet/session.py +0 -0
  206. {smartsheet-python-sdk-3.2.0 → smartsheet_python_sdk-3.3.0}/smartsheet/sights.py +0 -0
  207. {smartsheet-python-sdk-3.2.0 → smartsheet_python_sdk-3.3.0}/smartsheet/smartsheet.py +0 -0
  208. {smartsheet-python-sdk-3.2.0 → smartsheet_python_sdk-3.3.0}/smartsheet/templates.py +0 -0
  209. {smartsheet-python-sdk-3.2.0 → smartsheet_python_sdk-3.3.0}/smartsheet/token.py +0 -0
  210. {smartsheet-python-sdk-3.2.0 → smartsheet_python_sdk-3.3.0}/smartsheet/types.py +0 -0
  211. {smartsheet-python-sdk-3.2.0 → smartsheet_python_sdk-3.3.0}/smartsheet/users.py +0 -0
  212. {smartsheet-python-sdk-3.2.0 → smartsheet_python_sdk-3.3.0}/smartsheet/util.py +0 -0
  213. {smartsheet-python-sdk-3.2.0 → smartsheet_python_sdk-3.3.0}/smartsheet/webhooks.py +0 -0
  214. {smartsheet-python-sdk-3.2.0 → smartsheet_python_sdk-3.3.0}/smartsheet/workspaces.py +0 -0
  215. {smartsheet-python-sdk-3.2.0 → smartsheet_python_sdk-3.3.0}/smartsheet_python_sdk.egg-info/dependency_links.txt +0 -0
  216. {smartsheet-python-sdk-3.2.0 → smartsheet_python_sdk-3.3.0}/smartsheet_python_sdk.egg-info/requires.txt +0 -0
  217. {smartsheet-python-sdk-3.2.0 → smartsheet_python_sdk-3.3.0}/smartsheet_python_sdk.egg-info/top_level.txt +0 -0
  218. {smartsheet-python-sdk-3.2.0 → smartsheet_python_sdk-3.3.0}/tests/integration/README.md +0 -0
  219. {smartsheet-python-sdk-3.2.0 → smartsheet_python_sdk-3.3.0}/tests/integration/conftest.py +0 -0
  220. {smartsheet-python-sdk-3.2.0 → smartsheet_python_sdk-3.3.0}/tests/integration/fixtures/calling_all_curs.txt +0 -0
  221. {smartsheet-python-sdk-3.2.0 → smartsheet_python_sdk-3.3.0}/tests/integration/fixtures/curly.jpg +0 -0
  222. {smartsheet-python-sdk-3.2.0 → smartsheet_python_sdk-3.3.0}/tests/integration/fixtures/moe-curly.jpg +0 -0
  223. {smartsheet-python-sdk-3.2.0 → smartsheet_python_sdk-3.3.0}/tests/integration/fixtures/quote.txt +0 -0
  224. {smartsheet-python-sdk-3.2.0 → smartsheet_python_sdk-3.3.0}/tests/integration/fixtures/stooges_v1.jpg +0 -0
  225. {smartsheet-python-sdk-3.2.0 → smartsheet_python_sdk-3.3.0}/tests/integration/fixtures/stooges_v2.jpg +0 -0
  226. {smartsheet-python-sdk-3.2.0 → smartsheet_python_sdk-3.3.0}/tests/integration/test_attachments.py +0 -0
  227. {smartsheet-python-sdk-3.2.0 → smartsheet_python_sdk-3.3.0}/tests/integration/test_columns.py +0 -0
  228. {smartsheet-python-sdk-3.2.0 → smartsheet_python_sdk-3.3.0}/tests/integration/test_contacts.py +0 -0
  229. {smartsheet-python-sdk-3.2.0 → smartsheet_python_sdk-3.3.0}/tests/integration/test_cross_sheet_references.py +0 -0
  230. {smartsheet-python-sdk-3.2.0 → smartsheet_python_sdk-3.3.0}/tests/integration/test_discussions.py +0 -0
  231. {smartsheet-python-sdk-3.2.0 → smartsheet_python_sdk-3.3.0}/tests/integration/test_events.py +0 -0
  232. {smartsheet-python-sdk-3.2.0 → smartsheet_python_sdk-3.3.0}/tests/integration/test_favorites.py +0 -0
  233. {smartsheet-python-sdk-3.2.0 → smartsheet_python_sdk-3.3.0}/tests/integration/test_folders.py +0 -0
  234. {smartsheet-python-sdk-3.2.0 → smartsheet_python_sdk-3.3.0}/tests/integration/test_groups.py +0 -0
  235. {smartsheet-python-sdk-3.2.0 → smartsheet_python_sdk-3.3.0}/tests/integration/test_home.py +0 -0
  236. {smartsheet-python-sdk-3.2.0 → smartsheet_python_sdk-3.3.0}/tests/integration/test_model_attributes.py +0 -0
  237. {smartsheet-python-sdk-3.2.0 → smartsheet_python_sdk-3.3.0}/tests/integration/test_multi_picklist.py +0 -0
  238. {smartsheet-python-sdk-3.2.0 → smartsheet_python_sdk-3.3.0}/tests/integration/test_object_value.py +0 -0
  239. {smartsheet-python-sdk-3.2.0 → smartsheet_python_sdk-3.3.0}/tests/integration/test_passthrough.py +0 -0
  240. {smartsheet-python-sdk-3.2.0 → smartsheet_python_sdk-3.3.0}/tests/integration/test_regression.py +0 -0
  241. {smartsheet-python-sdk-3.2.0 → smartsheet_python_sdk-3.3.0}/tests/integration/test_reports.py +0 -0
  242. {smartsheet-python-sdk-3.2.0 → smartsheet_python_sdk-3.3.0}/tests/integration/test_rows.py +0 -0
  243. {smartsheet-python-sdk-3.2.0 → smartsheet_python_sdk-3.3.0}/tests/integration/test_server_info.py +0 -0
  244. {smartsheet-python-sdk-3.2.0 → smartsheet_python_sdk-3.3.0}/tests/integration/test_sheet_summary.py +0 -0
  245. {smartsheet-python-sdk-3.2.0 → smartsheet_python_sdk-3.3.0}/tests/integration/test_sheets.py +0 -0
  246. {smartsheet-python-sdk-3.2.0 → smartsheet_python_sdk-3.3.0}/tests/integration/test_templates.py +0 -0
  247. {smartsheet-python-sdk-3.2.0 → smartsheet_python_sdk-3.3.0}/tests/integration/test_update_requests.py +0 -0
  248. {smartsheet-python-sdk-3.2.0 → smartsheet_python_sdk-3.3.0}/tests/integration/test_users.py +0 -0
  249. {smartsheet-python-sdk-3.2.0 → smartsheet_python_sdk-3.3.0}/tests/integration/test_webhooks.py +0 -0
  250. {smartsheet-python-sdk-3.2.0 → smartsheet_python_sdk-3.3.0}/tests/integration/test_workspaces.py +0 -0
  251. {smartsheet-python-sdk-3.2.0 → smartsheet_python_sdk-3.3.0}/tests/integration/test_zsearch.py +0 -0
  252. {smartsheet-python-sdk-3.2.0 → smartsheet_python_sdk-3.3.0}/tests/mock_api/mock_api_test_helper.py +0 -0
  253. {smartsheet-python-sdk-3.2.0 → smartsheet_python_sdk-3.3.0}/tests/mock_api/test_mock_api_automation_rules.py +0 -0
  254. {smartsheet-python-sdk-3.2.0 → smartsheet_python_sdk-3.3.0}/tests/mock_api/test_mock_api_columns.py +0 -0
  255. {smartsheet-python-sdk-3.2.0 → smartsheet_python_sdk-3.3.0}/tests/mock_api/test_mock_api_folders.py +0 -0
  256. {smartsheet-python-sdk-3.2.0 → smartsheet_python_sdk-3.3.0}/tests/mock_api/test_mock_api_rows.py +0 -0
  257. {smartsheet-python-sdk-3.2.0 → smartsheet_python_sdk-3.3.0}/tests/mock_api/test_mock_api_sheets.py +0 -0
  258. {smartsheet-python-sdk-3.2.0 → smartsheet_python_sdk-3.3.0}/tests/mock_api/test_mock_api_sights.py +0 -0
  259. {smartsheet-python-sdk-3.2.0 → smartsheet_python_sdk-3.3.0}/tests/mock_api/test_mock_api_workspaces.py +0 -0
  260. {smartsheet-python-sdk-3.2.0 → smartsheet_python_sdk-3.3.0}/tests/mock_api/test_mock_change_agent.py +0 -0
  261. {smartsheet-python-sdk-3.2.0 → smartsheet_python_sdk-3.3.0}/tests/mock_api/test_mock_serialization.py +0 -0
@@ -5,6 +5,23 @@ All notable changes to this project will be documented in this file.
5
5
  The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/)
6
6
  and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.html).
7
7
 
8
+ ## [3.3.0] - 2025-10-07
9
+
10
+ ### Added
11
+
12
+ - Support for new asset-based sharing endpoints in a new `sharing` module:
13
+ - `list_asset_shares`: List all shares for a specified asset
14
+ - `get_asset_share`: Get a specific share for a specified asset
15
+ - `share_asset`: Share an asset with specified users and/or groups
16
+ - `update_share`: Update a specific share for a specified asset
17
+ - `delete_share`: Delete a specific share for a specified asset
18
+ - Added `AssetType` enum for use with sharing endpoints
19
+
20
+ ### Updated
21
+
22
+ - Deprecated old sharing endpoints in the `sheets` module
23
+ - Added deprecation notices and migration examples in documentation
24
+
8
25
  ## [3.2.0] - 2025-09-25
9
26
 
10
27
  ### Added
@@ -1,6 +1,6 @@
1
- Metadata-Version: 2.1
1
+ Metadata-Version: 2.4
2
2
  Name: smartsheet-python-sdk
3
- Version: 3.2.0
3
+ Version: 3.3.0
4
4
  Summary: Library that uses Python to connect to Smartsheet services (using API 2.0).
5
5
  Home-page: http://smartsheet-platform.github.io/api-docs/
6
6
  Author: Smartsheet
@@ -20,16 +20,40 @@ Classifier: Programming Language :: Python :: 3.10
20
20
  Classifier: Topic :: Software Development :: Libraries :: Python Modules
21
21
  Classifier: Topic :: Office/Business :: Financial :: Spreadsheet
22
22
  Description-Content-Type: text/markdown
23
- Provides-Extra: test
24
- Provides-Extra: develop
25
23
  License-File: LICENSE.md
26
24
  License-File: NOTICE
25
+ Requires-Dist: requests
26
+ Requires-Dist: requests-toolbelt
27
+ Requires-Dist: six>=1.9
28
+ Requires-Dist: certifi
29
+ Requires-Dist: python-dateutil
30
+ Provides-Extra: test
31
+ Requires-Dist: coverage; extra == "test"
32
+ Requires-Dist: coveralls; extra == "test"
33
+ Requires-Dist: pytest; extra == "test"
34
+ Provides-Extra: develop
35
+ Requires-Dist: coverage; extra == "develop"
36
+ Requires-Dist: coveralls[yaml]; extra == "develop"
37
+ Requires-Dist: pytest; extra == "develop"
38
+ Requires-Dist: pytest-instafail; extra == "develop"
39
+ Dynamic: author
40
+ Dynamic: author-email
41
+ Dynamic: classifier
42
+ Dynamic: description
43
+ Dynamic: description-content-type
44
+ Dynamic: home-page
45
+ Dynamic: keywords
46
+ Dynamic: license
47
+ Dynamic: license-file
48
+ Dynamic: provides-extra
49
+ Dynamic: requires-dist
50
+ Dynamic: summary
27
51
 
28
52
  # Smartsheet Python SDK
29
53
 
30
54
  [![Build Status](https://github.com/smartsheet/smartsheet-python-sdk/actions/workflows/test-build.yaml/badge.svg)](https://github.com/smartsheet/smartsheet-python-sdk/actions/workflows/test-build.yaml) [![Coverage Status](https://coveralls.io/repos/github/smartsheet/smartsheet-python-sdk/badge.svg?branch=mainline)](https://coveralls.io/github/smartsheet/smartsheet-python-sdk?branch=mainline) [![PyPI version](https://badge.fury.io/py/smartsheet-python-sdk.svg)](https://badge.fury.io/py/smartsheet-python-sdk)
31
55
 
32
- A library for connecting to the [Smartsheet API](https://smartsheet.redoc.ly) from Python applications.
56
+ A library for connecting to the [Smartsheet API](https://developers.smartsheet.com/api/smartsheet/) from Python applications.
33
57
 
34
58
  ## Requirements
35
59
 
@@ -47,7 +71,7 @@ pip install smartsheet-python-sdk
47
71
 
48
72
  To get started with the Smartsheet Python SDK:
49
73
 
50
- 1. Set **SMARTSHEET_ACCESS_TOKEN** in your environment, using your Smartsheet API key. Find out more about [Authentication and Access Tokens](https://smartsheet.redoc.ly/#section/API-Basics/Authentication-and-Access-Tokens) in the Smartsheet API Documentation. You can generate an access token in Smartsheet UI under Account > Personal Settings > API Access.
74
+ 1. Set **SMARTSHEET_ACCESS_TOKEN** in your environment, using your Smartsheet API key. Find out more about [Authentication and Access Tokens](https://developers.smartsheet.com/api/smartsheet/guides/basics/authentication) in the Smartsheet API Documentation. You can generate an access token in Smartsheet UI under Account > Personal Settings > API Access.
51
75
 
52
76
  2. Install the Smartsheet Python SDK (see the installation instructions above)
53
77
 
@@ -72,7 +96,7 @@ Use the following resources to learn more about the SDK capabilities:
72
96
 
73
97
  1. [Smartsheet Python SDK sample project](https://github.com/smartsheet-samples/python-read-write-sheet)
74
98
  2. [Python SDK documentation](https://smartsheet.github.io/smartsheet-python-sdk/)
75
- 3. [Smartsheet API Documentation](https://smartsheet.redoc.ly)
99
+ 3. [Smartsheet API Documentation](https://developers.smartsheet.com/api/smartsheet/)
76
100
 
77
101
  ## Advanced Topics
78
102
 
@@ -2,7 +2,7 @@
2
2
 
3
3
  [![Build Status](https://github.com/smartsheet/smartsheet-python-sdk/actions/workflows/test-build.yaml/badge.svg)](https://github.com/smartsheet/smartsheet-python-sdk/actions/workflows/test-build.yaml) [![Coverage Status](https://coveralls.io/repos/github/smartsheet/smartsheet-python-sdk/badge.svg?branch=mainline)](https://coveralls.io/github/smartsheet/smartsheet-python-sdk?branch=mainline) [![PyPI version](https://badge.fury.io/py/smartsheet-python-sdk.svg)](https://badge.fury.io/py/smartsheet-python-sdk)
4
4
 
5
- A library for connecting to the [Smartsheet API](https://smartsheet.redoc.ly) from Python applications.
5
+ A library for connecting to the [Smartsheet API](https://developers.smartsheet.com/api/smartsheet/) from Python applications.
6
6
 
7
7
  ## Requirements
8
8
 
@@ -20,7 +20,7 @@ pip install smartsheet-python-sdk
20
20
 
21
21
  To get started with the Smartsheet Python SDK:
22
22
 
23
- 1. Set **SMARTSHEET_ACCESS_TOKEN** in your environment, using your Smartsheet API key. Find out more about [Authentication and Access Tokens](https://smartsheet.redoc.ly/#section/API-Basics/Authentication-and-Access-Tokens) in the Smartsheet API Documentation. You can generate an access token in Smartsheet UI under Account > Personal Settings > API Access.
23
+ 1. Set **SMARTSHEET_ACCESS_TOKEN** in your environment, using your Smartsheet API key. Find out more about [Authentication and Access Tokens](https://developers.smartsheet.com/api/smartsheet/guides/basics/authentication) in the Smartsheet API Documentation. You can generate an access token in Smartsheet UI under Account > Personal Settings > API Access.
24
24
 
25
25
  2. Install the Smartsheet Python SDK (see the installation instructions above)
26
26
 
@@ -45,7 +45,7 @@ Use the following resources to learn more about the SDK capabilities:
45
45
 
46
46
  1. [Smartsheet Python SDK sample project](https://github.com/smartsheet-samples/python-read-write-sheet)
47
47
  2. [Python SDK documentation](https://smartsheet.github.io/smartsheet-python-sdk/)
48
- 3. [Smartsheet API Documentation](https://smartsheet.redoc.ly)
48
+ 3. [Smartsheet API Documentation](https://developers.smartsheet.com/api/smartsheet/)
49
49
 
50
50
  ## Advanced Topics
51
51
 
@@ -0,0 +1,163 @@
1
+ # pylint: disable=C0111,R0902,R0913
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
+ import logging
19
+ from . import fresh_operation
20
+ from .models.enums import ShareScope
21
+
22
+
23
+ class Sharing:
24
+ """Class for handling Sharing operations."""
25
+
26
+ def __init__(self, smartsheet_obj):
27
+ """Init Sharing with base Smartsheet object."""
28
+ self._base = smartsheet_obj
29
+ self._log = logging.getLogger(__name__)
30
+
31
+ def list_asset_shares(self, asset_type, asset_id, max_items=None, last_key=None,
32
+ sharing_include: ShareScope = None):
33
+ """Get the list of all Users and Groups to whom the specified asset is
34
+ shared, and their access level.
35
+
36
+ Args:
37
+ asset_type (AssetType): Type of asset (sheet, report, sight, workspace, etc.)
38
+ asset_id (int): Asset ID
39
+ max_items (int): The maximum number of items to
40
+ return in the response.
41
+ last_key (str): The token from a previous request that will allow this one
42
+ to pick up where the previous one left off.
43
+ sharing_include (ShareScope): Scope of share to include in response
44
+
45
+ Returns:
46
+ IndexResult
47
+ """
48
+ _op = fresh_operation('list_asset_shares')
49
+ _op['method'] = 'GET'
50
+ _op['path'] = '/shares'
51
+ _op['query_params']['assetType'] = asset_type
52
+ _op['query_params']['assetId'] = asset_id
53
+ _op['query_params']['maxItems'] = max_items
54
+ _op['query_params']['lastKey'] = last_key
55
+ _op['query_params']['sharingInclude'] = sharing_include.name if sharing_include else None
56
+
57
+ expected = ['IndexResult', 'Share']
58
+
59
+ prepped_request = self._base.prepare_request(_op)
60
+ response = self._base.request(prepped_request, expected, _op)
61
+
62
+ return response
63
+
64
+ def get_asset_share(self, asset_type, asset_id, share_id):
65
+ """Get a specific share for the specified asset.
66
+
67
+ Args:
68
+ asset_type (AssetType): Type of asset (sheet, report, sight, workspace, etc.)
69
+ asset_id (int): Asset ID
70
+ share_id (str): Share ID
71
+
72
+ Returns:
73
+ Share
74
+ """
75
+ _op = fresh_operation('get_asset_share')
76
+ _op['method'] = 'GET'
77
+ _op['path'] = f'/shares/{share_id}'
78
+ _op['query_params']['assetType'] = asset_type
79
+ _op['query_params']['assetId'] = asset_id
80
+
81
+ expected = 'Share'
82
+ prepped_request = self._base.prepare_request(_op)
83
+ response = self._base.request(prepped_request, expected, _op)
84
+
85
+ return response
86
+
87
+ def share_asset(self, share_obj, asset_type, asset_id, send_email=None):
88
+ """Share an asset with the specified Users and Groups.
89
+
90
+ Args:
91
+ share_obj (Share or list[Share]): Share object or list of Share objects.
92
+ asset_type (AssetType): Type of asset (sheet, report, sight, workspace, etc.)
93
+ asset_id (int): Asset ID
94
+ send_email (bool): Either true or false to
95
+ indicate whether or not to notify the user by email. Default
96
+ is false.
97
+
98
+ Returns:
99
+ Result
100
+ """
101
+ _op = fresh_operation('share_asset')
102
+ _op['method'] = 'POST'
103
+ _op['path'] = '/shares'
104
+ _op['query_params']['assetType'] = asset_type
105
+ _op['query_params']['assetId'] = asset_id
106
+ _op['query_params']['sendEmail'] = send_email
107
+ _op['json'] = share_obj
108
+
109
+ expected = ['Result', 'Share']
110
+
111
+ prepped_request = self._base.prepare_request(_op)
112
+ response = self._base.request(prepped_request, expected, _op)
113
+
114
+ return response
115
+
116
+ def update_asset_share(self, share_obj, asset_type, asset_id, share_id):
117
+ """Update the access level of a User or Group for the specified asset.
118
+
119
+ Args:
120
+ share_obj (Share): Share object.
121
+ asset_type (AssetType): Type of asset (sheet, report, sight, workspace, etc.)
122
+ asset_id (int): Asset ID
123
+ share_id (str): Share ID
124
+
125
+ Returns:
126
+ Result
127
+ """
128
+ _op = fresh_operation('update_share')
129
+ _op['method'] = 'PATCH'
130
+ _op['path'] = f'/shares/{share_id}'
131
+ _op['query_params']['assetType'] = asset_type
132
+ _op['query_params']['assetId'] = asset_id
133
+ _op['json'] = share_obj
134
+
135
+ expected = ['Result', 'Share']
136
+
137
+ prepped_request = self._base.prepare_request(_op)
138
+ response = self._base.request(prepped_request, expected, _op)
139
+
140
+ return response
141
+
142
+ def delete_asset_share(self, asset_type, asset_id, share_id):
143
+ """Delete the specified Share.
144
+
145
+ Args:
146
+ asset_type (AssetType): Type of asset (sheet, report, sight, workspace, etc.)
147
+ asset_id (int): Asset ID
148
+ share_id (str): Share ID
149
+
150
+ Returns:
151
+ Result
152
+ """
153
+ _op = fresh_operation('delete_share')
154
+ _op['method'] = 'DELETE'
155
+ _op['path'] = f'/shares/{share_id}'
156
+ _op['query_params']['assetType'] = asset_type
157
+ _op['query_params']['assetId'] = asset_id
158
+
159
+ expected = ['Result', None]
160
+ prepped_request = self._base.prepare_request(_op)
161
+ response = self._base.request(prepped_request, expected, _op)
162
+
163
+ return response
@@ -19,6 +19,7 @@ from __future__ import absolute_import
19
19
 
20
20
  # import enums into enum package
21
21
  from .access_level import AccessLevel
22
+ from .asset_type import AssetType
22
23
  from .attachment_parent_type import AttachmentParentType
23
24
  from .attachment_sub_type import AttachmentSubType
24
25
  from .attachment_type import AttachmentType
@@ -0,0 +1,10 @@
1
+ from enum import Enum
2
+
3
+ class AssetType(str, Enum):
4
+ """Defines the asset types supported by the Sharing API."""
5
+ SHEET = 'sheet'
6
+ REPORT = 'report'
7
+ SIGHT = 'sight'
8
+ WORKSPACE = 'workspace'
9
+ COLLECTION = 'collection'
10
+ FILE = 'file'
@@ -30,7 +30,6 @@ from .models.summary_field import SummaryField
30
30
  from .types import TypedList
31
31
  from .util import deprecated
32
32
 
33
-
34
33
  class Sheets:
35
34
 
36
35
  """Class for handling Sheets operations."""
@@ -310,6 +309,7 @@ class Sheets:
310
309
 
311
310
  return response
312
311
 
312
+ @deprecated("Use sharing.delete_share instead")
313
313
  def delete_share(self, sheet_id, share_id):
314
314
  """Delete the specified Share.
315
315
 
@@ -319,6 +319,9 @@ class Sheets:
319
319
 
320
320
  Returns:
321
321
  Result
322
+
323
+ Deprecated:
324
+ Use sharing.delete_share instead with assetType=AssetType.SHEET
322
325
  """
323
326
  _op = fresh_operation("delete_share")
324
327
  _op["method"] = "DELETE"
@@ -470,6 +473,7 @@ class Sheets:
470
473
 
471
474
  return response
472
475
 
476
+ @deprecated("Use sharing.get_asset_share instead")
473
477
  def get_share(self, sheet_id, share_id):
474
478
  """Get the specified Share.
475
479
 
@@ -479,6 +483,9 @@ class Sheets:
479
483
 
480
484
  Returns:
481
485
  Share
486
+
487
+ Deprecated:
488
+ Use sharing.get_asset_share instead with assetType=AssetType.SHEET
482
489
  """
483
490
  _op = fresh_operation("get_share")
484
491
  _op["method"] = "GET"
@@ -991,6 +998,7 @@ class Sheets:
991
998
 
992
999
  return response
993
1000
 
1001
+ @deprecated("Use sharing.share_asset instead")
994
1002
  def share_sheet(self, sheet_id, share_obj, send_email=None):
995
1003
  """Share the specified Sheet.
996
1004
 
@@ -1006,6 +1014,9 @@ class Sheets:
1006
1014
 
1007
1015
  Returns:
1008
1016
  Result
1017
+
1018
+ Deprecated:
1019
+ Use sharing.share_asset instead with assetType=AssetType.SHEET
1009
1020
  """
1010
1021
  _op = fresh_operation("share_sheet")
1011
1022
  _op["method"] = "POST"
@@ -1120,6 +1131,7 @@ class Sheets:
1120
1131
 
1121
1132
  return response
1122
1133
 
1134
+ @deprecated("Use sharing.update_share instead")
1123
1135
  def update_share(self, sheet_id, share_id, share_obj):
1124
1136
  """Update the access level of a User or Group for the specified Sheet.
1125
1137
 
@@ -1130,6 +1142,9 @@ class Sheets:
1130
1142
 
1131
1143
  Returns:
1132
1144
  Result
1145
+
1146
+ Deprecated:
1147
+ Use sharing.update_share instead with assetType=AssetType.SHEET
1133
1148
  """
1134
1149
  if not all(val is not None for val in ["sheet_id", "share_id", "share_obj"]):
1135
1150
  raise ValueError(
@@ -1,4 +1,4 @@
1
1
  # file generated by setuptools_scm
2
2
  # don't change, don't track in version control
3
- __version__ = version = '3.2.0'
4
- __version_tuple__ = version_tuple = (3, 2, 0)
3
+ __version__ = version = '3.3.0'
4
+ __version_tuple__ = version_tuple = (3, 3, 0)
@@ -1,6 +1,6 @@
1
- Metadata-Version: 2.1
1
+ Metadata-Version: 2.4
2
2
  Name: smartsheet-python-sdk
3
- Version: 3.2.0
3
+ Version: 3.3.0
4
4
  Summary: Library that uses Python to connect to Smartsheet services (using API 2.0).
5
5
  Home-page: http://smartsheet-platform.github.io/api-docs/
6
6
  Author: Smartsheet
@@ -20,16 +20,40 @@ Classifier: Programming Language :: Python :: 3.10
20
20
  Classifier: Topic :: Software Development :: Libraries :: Python Modules
21
21
  Classifier: Topic :: Office/Business :: Financial :: Spreadsheet
22
22
  Description-Content-Type: text/markdown
23
- Provides-Extra: test
24
- Provides-Extra: develop
25
23
  License-File: LICENSE.md
26
24
  License-File: NOTICE
25
+ Requires-Dist: requests
26
+ Requires-Dist: requests-toolbelt
27
+ Requires-Dist: six>=1.9
28
+ Requires-Dist: certifi
29
+ Requires-Dist: python-dateutil
30
+ Provides-Extra: test
31
+ Requires-Dist: coverage; extra == "test"
32
+ Requires-Dist: coveralls; extra == "test"
33
+ Requires-Dist: pytest; extra == "test"
34
+ Provides-Extra: develop
35
+ Requires-Dist: coverage; extra == "develop"
36
+ Requires-Dist: coveralls[yaml]; extra == "develop"
37
+ Requires-Dist: pytest; extra == "develop"
38
+ Requires-Dist: pytest-instafail; extra == "develop"
39
+ Dynamic: author
40
+ Dynamic: author-email
41
+ Dynamic: classifier
42
+ Dynamic: description
43
+ Dynamic: description-content-type
44
+ Dynamic: home-page
45
+ Dynamic: keywords
46
+ Dynamic: license
47
+ Dynamic: license-file
48
+ Dynamic: provides-extra
49
+ Dynamic: requires-dist
50
+ Dynamic: summary
27
51
 
28
52
  # Smartsheet Python SDK
29
53
 
30
54
  [![Build Status](https://github.com/smartsheet/smartsheet-python-sdk/actions/workflows/test-build.yaml/badge.svg)](https://github.com/smartsheet/smartsheet-python-sdk/actions/workflows/test-build.yaml) [![Coverage Status](https://coveralls.io/repos/github/smartsheet/smartsheet-python-sdk/badge.svg?branch=mainline)](https://coveralls.io/github/smartsheet/smartsheet-python-sdk?branch=mainline) [![PyPI version](https://badge.fury.io/py/smartsheet-python-sdk.svg)](https://badge.fury.io/py/smartsheet-python-sdk)
31
55
 
32
- A library for connecting to the [Smartsheet API](https://smartsheet.redoc.ly) from Python applications.
56
+ A library for connecting to the [Smartsheet API](https://developers.smartsheet.com/api/smartsheet/) from Python applications.
33
57
 
34
58
  ## Requirements
35
59
 
@@ -47,7 +71,7 @@ pip install smartsheet-python-sdk
47
71
 
48
72
  To get started with the Smartsheet Python SDK:
49
73
 
50
- 1. Set **SMARTSHEET_ACCESS_TOKEN** in your environment, using your Smartsheet API key. Find out more about [Authentication and Access Tokens](https://smartsheet.redoc.ly/#section/API-Basics/Authentication-and-Access-Tokens) in the Smartsheet API Documentation. You can generate an access token in Smartsheet UI under Account > Personal Settings > API Access.
74
+ 1. Set **SMARTSHEET_ACCESS_TOKEN** in your environment, using your Smartsheet API key. Find out more about [Authentication and Access Tokens](https://developers.smartsheet.com/api/smartsheet/guides/basics/authentication) in the Smartsheet API Documentation. You can generate an access token in Smartsheet UI under Account > Personal Settings > API Access.
51
75
 
52
76
  2. Install the Smartsheet Python SDK (see the installation instructions above)
53
77
 
@@ -72,7 +96,7 @@ Use the following resources to learn more about the SDK capabilities:
72
96
 
73
97
  1. [Smartsheet Python SDK sample project](https://github.com/smartsheet-samples/python-read-write-sheet)
74
98
  2. [Python SDK documentation](https://smartsheet.github.io/smartsheet-python-sdk/)
75
- 3. [Smartsheet API Documentation](https://smartsheet.redoc.ly)
99
+ 3. [Smartsheet API Documentation](https://developers.smartsheet.com/api/smartsheet/)
76
100
 
77
101
  ## Advanced Topics
78
102
 
@@ -22,6 +22,7 @@ docs-source/Makefile
22
22
  docs-source/conf.py
23
23
  docs-source/index.rst
24
24
  smartsheet/__init__.py
25
+ smartsheet/asset_shares.py
25
26
  smartsheet/attachments.py
26
27
  smartsheet/cells.py
27
28
  smartsheet/contacts.py
@@ -172,6 +173,7 @@ smartsheet/models/widget_hyperlink.py
172
173
  smartsheet/models/workspace.py
173
174
  smartsheet/models/enums/__init__.py
174
175
  smartsheet/models/enums/access_level.py
176
+ smartsheet/models/enums/asset_type.py
175
177
  smartsheet/models/enums/attachment_parent_type.py
176
178
  smartsheet/models/enums/attachment_sub_type.py
177
179
  smartsheet/models/enums/attachment_type.py
@@ -231,6 +233,7 @@ tests/integration/test_regression.py
231
233
  tests/integration/test_reports.py
232
234
  tests/integration/test_rows.py
233
235
  tests/integration/test_server_info.py
236
+ tests/integration/test_sharing.py
234
237
  tests/integration/test_sheet_summary.py
235
238
  tests/integration/test_sheets.py
236
239
  tests/integration/test_templates.py
@@ -0,0 +1,83 @@
1
+ import pytest
2
+ from smartsheet.exceptions import ApiError
3
+ from smartsheet.models import Share
4
+
5
+ @pytest.mark.usefixtures("smart_setup")
6
+ class TestSharing:
7
+ def test_list_asset_shares(self, smart_setup):
8
+ smart = smart_setup['smart']
9
+ sheet_id = smart_setup['sheet_b'].id
10
+
11
+ # Test listing shares for a sheet
12
+ action = smart.Sharing.list_asset_shares(
13
+ asset_type='sheet',
14
+ asset_id=sheet_id
15
+ )
16
+ assert action.result is not None
17
+
18
+ def test_share_asset(self, smart_setup):
19
+ smart = smart_setup['smart']
20
+ sheet_id = smart_setup['sheet_b'].id
21
+
22
+ # Create a share object
23
+ share = Share({
24
+ 'email': 'test@example.com',
25
+ 'access_level': 'VIEWER'
26
+ })
27
+
28
+ # Share the sheet
29
+ action = smart.Sharing.share_asset(
30
+ asset_type='sheet',
31
+ asset_id=sheet_id,
32
+ shares=[share],
33
+ send_email=False
34
+ )
35
+
36
+ # Verify the share was created
37
+ assert isinstance(action.result, list) and action.result
38
+ if isinstance(action.result, list) and action.result:
39
+ assert action.result[0].email == 'test@example.com'
40
+ assert action.result[0].access_level == 'VIEWER'
41
+ else:
42
+ pytest.fail(f"Unexpected result type/shape: {type(action.result)} ({action.result})")
43
+
44
+ # Store the share ID for later tests
45
+ share_id = action.result[0].id
46
+
47
+ # Test get_asset_share
48
+ get_action = smart.Sharing.get_asset_share(
49
+ asset_type='sheet',
50
+ asset_id=sheet_id,
51
+ share_id=share_id
52
+ )
53
+ assert get_action.result is not None
54
+ assert get_action.result.id == share_id
55
+
56
+ # Test update_share
57
+ update_share_spec = Share({
58
+ 'id': share_id,
59
+ 'access_level': 'EDITOR'
60
+ })
61
+
62
+ update_action = smart.Sharing.update_share(
63
+ asset_type='sheet',
64
+ asset_id=sheet_id,
65
+ share=update_share_spec
66
+ )
67
+ assert update_action.result is not None
68
+ assert update_action.result.access_level == 'EDITOR'
69
+
70
+ # Test delete_share
71
+ smart.Sharing.delete_asset_share(
72
+ asset_type='sheet',
73
+ asset_id=sheet_id,
74
+ share_id=share_id
75
+ )
76
+
77
+ # Verify the share was deleted by trying to get it (should raise exception)
78
+ with pytest.raises(ApiError):
79
+ smart.Sharing.get_asset_share(
80
+ asset_type='sheet',
81
+ asset_id=sheet_id,
82
+ share_id=share_id
83
+ )