smartsheet-python-sdk 3.5.1__tar.gz → 3.5.3__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 (267) hide show
  1. {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/.github/workflows/test-build.yaml +1 -2
  2. {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/CHANGELOG.md +22 -0
  3. {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/PKG-INFO +28 -4
  4. {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/smartsheet/models/__init__.py +2 -0
  5. smartsheet_python_sdk-3.5.3/smartsheet/models/asset_share.py +138 -0
  6. smartsheet_python_sdk-3.5.3/smartsheet/models/asset_shares_paginated_result.py +84 -0
  7. {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/smartsheet/sharing.py +6 -6
  8. {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/smartsheet/smartsheet.py +17 -0
  9. {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/smartsheet/version.py +2 -2
  10. {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/smartsheet_python_sdk.egg-info/PKG-INFO +29 -5
  11. {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/smartsheet_python_sdk.egg-info/SOURCES.txt +5 -0
  12. {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/smartsheet_python_sdk.egg-info/top_level.txt +1 -0
  13. smartsheet_python_sdk-3.5.3/tests/__init__.py +0 -0
  14. smartsheet_python_sdk-3.5.3/tests/mock_api/__init__.py +0 -0
  15. smartsheet_python_sdk-3.5.3/tests/mock_api/mock_api_test_helper.py +73 -0
  16. {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/tests/mock_api/test_mock_api_automation_rules.py +1 -1
  17. {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/tests/mock_api/test_mock_api_columns.py +1 -1
  18. {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/tests/mock_api/test_mock_api_folders.py +2 -2
  19. {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/tests/mock_api/test_mock_api_rows.py +1 -1
  20. smartsheet_python_sdk-3.5.3/tests/mock_api/test_mock_api_sharing.py +511 -0
  21. {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/tests/mock_api/test_mock_api_sheets.py +1 -1
  22. {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/tests/mock_api/test_mock_api_sights.py +1 -1
  23. {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/tests/mock_api/test_mock_api_workspaces.py +2 -2
  24. {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/tests/mock_api/test_mock_change_agent.py +1 -2
  25. {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/tests/mock_api/test_mock_serialization.py +1 -1
  26. smartsheet_python_sdk-3.5.1/tests/mock_api/mock_api_test_helper.py +0 -30
  27. {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/.gitchangelog.rc +0 -0
  28. {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/.gitchangelog.tpl +0 -0
  29. {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
  30. {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
  31. {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/.github/pull_request_template.md +0 -0
  32. {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/.github/workflows/publish-distribution.yaml +0 -0
  33. {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/.github/workflows/publish-documentation.yaml +0 -0
  34. {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/.gitignore +0 -0
  35. {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/.markdownlint.json +0 -0
  36. {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/ADVANCED.md +0 -0
  37. {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/CONTRIBUTING.md +0 -0
  38. {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/LICENSE.md +0 -0
  39. {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/Makefile +0 -0
  40. {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/NOTICE +0 -0
  41. {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/README.md +0 -0
  42. {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/docs-source/Makefile +0 -0
  43. {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/docs-source/conf.py +0 -0
  44. {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/docs-source/index.rst +0 -0
  45. {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/pylintrc +0 -0
  46. {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/setup.cfg +0 -0
  47. {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/setup.py +0 -0
  48. {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/smartsheet/__init__.py +0 -0
  49. {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/smartsheet/attachments.py +0 -0
  50. {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/smartsheet/cells.py +0 -0
  51. {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/smartsheet/contacts.py +0 -0
  52. {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/smartsheet/discussions.py +0 -0
  53. {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/smartsheet/events.py +0 -0
  54. {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/smartsheet/exceptions.py +0 -0
  55. {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/smartsheet/favorites.py +0 -0
  56. {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/smartsheet/folders.py +0 -0
  57. {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/smartsheet/groups.py +0 -0
  58. {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/smartsheet/home.py +0 -0
  59. {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/smartsheet/images.py +0 -0
  60. {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/smartsheet/models/access_token.py +0 -0
  61. {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/smartsheet/models/account.py +0 -0
  62. {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/smartsheet/models/alternate_email.py +0 -0
  63. {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/smartsheet/models/attachment.py +0 -0
  64. {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/smartsheet/models/auto_number_format.py +0 -0
  65. {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/smartsheet/models/automation_action.py +0 -0
  66. {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/smartsheet/models/automation_rule.py +0 -0
  67. {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/smartsheet/models/boolean_object_value.py +0 -0
  68. {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/smartsheet/models/bulk_item_failure.py +0 -0
  69. {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/smartsheet/models/bulk_item_result.py +0 -0
  70. {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/smartsheet/models/cell.py +0 -0
  71. {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/smartsheet/models/cell_data_item.py +0 -0
  72. {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/smartsheet/models/cell_history.py +0 -0
  73. {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/smartsheet/models/cell_link.py +0 -0
  74. {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/smartsheet/models/cell_link_widget_content.py +0 -0
  75. {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/smartsheet/models/chart_widget_content.py +0 -0
  76. {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/smartsheet/models/column.py +0 -0
  77. {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/smartsheet/models/comment.py +0 -0
  78. {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/smartsheet/models/contact.py +0 -0
  79. {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/smartsheet/models/contact_object_value.py +0 -0
  80. {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/smartsheet/models/container_destination.py +0 -0
  81. {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/smartsheet/models/copy_or_move_row_destination.py +0 -0
  82. {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/smartsheet/models/copy_or_move_row_directive.py +0 -0
  83. {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/smartsheet/models/copy_or_move_row_result.py +0 -0
  84. {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/smartsheet/models/criteria.py +0 -0
  85. {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/smartsheet/models/cross_sheet_reference.py +0 -0
  86. {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/smartsheet/models/currency.py +0 -0
  87. {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/smartsheet/models/date_object_value.py +0 -0
  88. {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/smartsheet/models/datetime_object_value.py +0 -0
  89. {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/smartsheet/models/discussion.py +0 -0
  90. {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/smartsheet/models/downloaded_file.py +0 -0
  91. {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/smartsheet/models/duration.py +0 -0
  92. {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/smartsheet/models/email.py +0 -0
  93. {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/smartsheet/models/enums/__init__.py +0 -0
  94. {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/smartsheet/models/enums/access_level.py +0 -0
  95. {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/smartsheet/models/enums/asset_type.py +0 -0
  96. {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/smartsheet/models/enums/attachment_parent_type.py +0 -0
  97. {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/smartsheet/models/enums/attachment_sub_type.py +0 -0
  98. {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/smartsheet/models/enums/attachment_type.py +0 -0
  99. {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/smartsheet/models/enums/automation_action_frequency.py +0 -0
  100. {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/smartsheet/models/enums/automation_action_type.py +0 -0
  101. {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/smartsheet/models/enums/automation_rule_disabled_reason.py +0 -0
  102. {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/smartsheet/models/enums/cell_link_status.py +0 -0
  103. {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/smartsheet/models/enums/column_type.py +0 -0
  104. {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/smartsheet/models/enums/criteria_target.py +0 -0
  105. {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/smartsheet/models/enums/cross_sheet_reference_status.py +0 -0
  106. {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/smartsheet/models/enums/currency_code.py +0 -0
  107. {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/smartsheet/models/enums/day_descriptors.py +0 -0
  108. {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/smartsheet/models/enums/day_ordinal.py +0 -0
  109. {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/smartsheet/models/enums/event_action.py +0 -0
  110. {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/smartsheet/models/enums/event_obejct_type.py +0 -0
  111. {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/smartsheet/models/enums/event_source.py +0 -0
  112. {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/smartsheet/models/enums/global_template.py +0 -0
  113. {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/smartsheet/models/enums/operator.py +0 -0
  114. {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/smartsheet/models/enums/paper_type.py +0 -0
  115. {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/smartsheet/models/enums/predecessor_type.py +0 -0
  116. {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/smartsheet/models/enums/publish_accessible_by.py +0 -0
  117. {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/smartsheet/models/enums/schedule_type.py +0 -0
  118. {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/smartsheet/models/enums/seat_type.py +0 -0
  119. {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/smartsheet/models/enums/share_scope.py +0 -0
  120. {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/smartsheet/models/enums/share_type.py +0 -0
  121. {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/smartsheet/models/enums/sheet_email_format.py +0 -0
  122. {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/smartsheet/models/enums/sheet_filter_operator.py +0 -0
  123. {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/smartsheet/models/enums/sheet_filter_type.py +0 -0
  124. {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/smartsheet/models/enums/sort_direction.py +0 -0
  125. {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/smartsheet/models/enums/symbol.py +0 -0
  126. {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/smartsheet/models/enums/system_column_type.py +0 -0
  127. {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/smartsheet/models/enums/update_request_status.py +0 -0
  128. {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/smartsheet/models/enums/user_status.py +0 -0
  129. {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/smartsheet/models/enums/widget_type.py +0 -0
  130. {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/smartsheet/models/error.py +0 -0
  131. {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/smartsheet/models/error_result.py +0 -0
  132. {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/smartsheet/models/event.py +0 -0
  133. {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/smartsheet/models/event_result.py +0 -0
  134. {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/smartsheet/models/explicit_null.py +0 -0
  135. {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/smartsheet/models/favorite.py +0 -0
  136. {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/smartsheet/models/folder.py +0 -0
  137. {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/smartsheet/models/font_family.py +0 -0
  138. {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/smartsheet/models/format_details.py +0 -0
  139. {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/smartsheet/models/format_tables.py +0 -0
  140. {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/smartsheet/models/group.py +0 -0
  141. {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/smartsheet/models/group_member.py +0 -0
  142. {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/smartsheet/models/home.py +0 -0
  143. {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/smartsheet/models/hyperlink.py +0 -0
  144. {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/smartsheet/models/image.py +0 -0
  145. {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/smartsheet/models/image_url.py +0 -0
  146. {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/smartsheet/models/image_url_map.py +0 -0
  147. {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/smartsheet/models/image_widget_content.py +0 -0
  148. {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/smartsheet/models/index_result.py +0 -0
  149. {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/smartsheet/models/json_object.py +0 -0
  150. {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/smartsheet/models/multi_contact_object_value.py +0 -0
  151. {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/smartsheet/models/multi_picklist_object_value.py +0 -0
  152. {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/smartsheet/models/multi_row_email.py +0 -0
  153. {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/smartsheet/models/number_object_value.py +0 -0
  154. {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/smartsheet/models/o_auth_error.py +0 -0
  155. {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/smartsheet/models/object_value.py +0 -0
  156. {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/smartsheet/models/paginated_children_result.py +0 -0
  157. {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/smartsheet/models/predecessor.py +0 -0
  158. {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/smartsheet/models/predecessor_list.py +0 -0
  159. {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/smartsheet/models/primitive_object_value.py +0 -0
  160. {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/smartsheet/models/profile_image.py +0 -0
  161. {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/smartsheet/models/project_settings.py +0 -0
  162. {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/smartsheet/models/recipient.py +0 -0
  163. {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/smartsheet/models/report.py +0 -0
  164. {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/smartsheet/models/report_cell.py +0 -0
  165. {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/smartsheet/models/report_column.py +0 -0
  166. {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/smartsheet/models/report_publish.py +0 -0
  167. {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/smartsheet/models/report_row.py +0 -0
  168. {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/smartsheet/models/report_widget_content.py +0 -0
  169. {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/smartsheet/models/result.py +0 -0
  170. {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/smartsheet/models/row.py +0 -0
  171. {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/smartsheet/models/row_email.py +0 -0
  172. {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/smartsheet/models/row_mapping.py +0 -0
  173. {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/smartsheet/models/schedule.py +0 -0
  174. {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/smartsheet/models/scope.py +0 -0
  175. {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/smartsheet/models/search_result.py +0 -0
  176. {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/smartsheet/models/search_result_item.py +0 -0
  177. {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/smartsheet/models/selection_range.py +0 -0
  178. {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/smartsheet/models/sent_update_request.py +0 -0
  179. {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/smartsheet/models/server_info.py +0 -0
  180. {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/smartsheet/models/share.py +0 -0
  181. {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/smartsheet/models/sheet.py +0 -0
  182. {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/smartsheet/models/sheet_email.py +0 -0
  183. {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/smartsheet/models/sheet_filter.py +0 -0
  184. {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/smartsheet/models/sheet_filter_details.py +0 -0
  185. {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/smartsheet/models/sheet_publish.py +0 -0
  186. {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/smartsheet/models/sheet_summary.py +0 -0
  187. {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/smartsheet/models/sheet_user_permissions.py +0 -0
  188. {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/smartsheet/models/sheet_user_settings.py +0 -0
  189. {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/smartsheet/models/shortcut_data_item.py +0 -0
  190. {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/smartsheet/models/shortcut_widget_content.py +0 -0
  191. {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/smartsheet/models/sight.py +0 -0
  192. {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/smartsheet/models/sight_publish.py +0 -0
  193. {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/smartsheet/models/sort_criterion.py +0 -0
  194. {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/smartsheet/models/sort_specifier.py +0 -0
  195. {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/smartsheet/models/source.py +0 -0
  196. {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/smartsheet/models/string_object_value.py +0 -0
  197. {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/smartsheet/models/summary_field.py +0 -0
  198. {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/smartsheet/models/template.py +0 -0
  199. {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/smartsheet/models/title_rich_text_widget_content.py +0 -0
  200. {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/smartsheet/models/token_paginated_result.py +0 -0
  201. {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/smartsheet/models/update_request.py +0 -0
  202. {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/smartsheet/models/user.py +0 -0
  203. {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/smartsheet/models/user_model.py +0 -0
  204. {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/smartsheet/models/user_plan.py +0 -0
  205. {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/smartsheet/models/user_profile.py +0 -0
  206. {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/smartsheet/models/version.py +0 -0
  207. {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/smartsheet/models/web_content_widget_content.py +0 -0
  208. {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/smartsheet/models/webhook.py +0 -0
  209. {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/smartsheet/models/webhook_secret.py +0 -0
  210. {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/smartsheet/models/webhook_stats.py +0 -0
  211. {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/smartsheet/models/webhook_subscope.py +0 -0
  212. {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/smartsheet/models/widget.py +0 -0
  213. {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/smartsheet/models/widget_content.py +0 -0
  214. {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/smartsheet/models/widget_hyperlink.py +0 -0
  215. {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/smartsheet/models/workspace.py +0 -0
  216. {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/smartsheet/object_value.py +0 -0
  217. {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/smartsheet/passthrough.py +0 -0
  218. {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/smartsheet/reports.py +0 -0
  219. {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/smartsheet/search.py +0 -0
  220. {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/smartsheet/server.py +0 -0
  221. {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/smartsheet/session.py +0 -0
  222. {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/smartsheet/sheets.py +0 -0
  223. {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/smartsheet/sights.py +0 -0
  224. {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/smartsheet/templates.py +0 -0
  225. {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/smartsheet/token.py +0 -0
  226. {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/smartsheet/types.py +0 -0
  227. {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/smartsheet/users.py +0 -0
  228. {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/smartsheet/util.py +0 -0
  229. {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/smartsheet/webhooks.py +0 -0
  230. {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/smartsheet/workspaces.py +0 -0
  231. {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/smartsheet_python_sdk.egg-info/dependency_links.txt +0 -0
  232. {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/smartsheet_python_sdk.egg-info/requires.txt +0 -0
  233. {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/tests/integration/README.md +0 -0
  234. {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/tests/integration/conftest.py +0 -0
  235. {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/tests/integration/fixtures/calling_all_curs.txt +0 -0
  236. {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/tests/integration/fixtures/curly.jpg +0 -0
  237. {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/tests/integration/fixtures/moe-curly.jpg +0 -0
  238. {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/tests/integration/fixtures/quote.txt +0 -0
  239. {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/tests/integration/fixtures/stooges_v1.jpg +0 -0
  240. {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/tests/integration/fixtures/stooges_v2.jpg +0 -0
  241. {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/tests/integration/test_attachments.py +0 -0
  242. {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/tests/integration/test_columns.py +0 -0
  243. {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/tests/integration/test_contacts.py +0 -0
  244. {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/tests/integration/test_cross_sheet_references.py +0 -0
  245. {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/tests/integration/test_discussions.py +0 -0
  246. {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/tests/integration/test_events.py +0 -0
  247. {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/tests/integration/test_favorites.py +0 -0
  248. {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/tests/integration/test_folders.py +0 -0
  249. {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/tests/integration/test_groups.py +0 -0
  250. {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/tests/integration/test_home.py +0 -0
  251. {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/tests/integration/test_model_attributes.py +0 -0
  252. {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/tests/integration/test_multi_picklist.py +0 -0
  253. {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/tests/integration/test_object_value.py +0 -0
  254. {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/tests/integration/test_passthrough.py +0 -0
  255. {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/tests/integration/test_regression.py +0 -0
  256. {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/tests/integration/test_reports.py +0 -0
  257. {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/tests/integration/test_rows.py +0 -0
  258. {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/tests/integration/test_server_info.py +0 -0
  259. {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/tests/integration/test_sharing.py +0 -0
  260. {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/tests/integration/test_sheet_summary.py +0 -0
  261. {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/tests/integration/test_sheets.py +0 -0
  262. {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/tests/integration/test_templates.py +0 -0
  263. {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/tests/integration/test_update_requests.py +0 -0
  264. {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/tests/integration/test_users.py +0 -0
  265. {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/tests/integration/test_webhooks.py +0 -0
  266. {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/tests/integration/test_workspaces.py +0 -0
  267. {smartsheet_python_sdk-3.5.1 → smartsheet_python_sdk-3.5.3}/tests/integration/test_zsearch.py +0 -0
@@ -57,8 +57,7 @@ jobs:
57
57
  repository: 'smartsheet-sdk-tests'
58
58
  - name: Setup Mock API
59
59
  run: |
60
- smartsheet-sdk-tests/ci_scripts/install_wiremock.sh
61
- smartsheet-sdk-tests/ci_scripts/start_wiremock.sh
60
+ docker compose -f smartsheet-sdk-tests/docker-compose.yml up -d --wait
62
61
  - name: Run mock API tests
63
62
  run: |
64
63
  coverage run --source=smartsheet -m pytest tests/mock_api/
@@ -5,6 +5,28 @@ 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.5.3] - 2025-10-31
9
+
10
+ ### Fixed
11
+
12
+ - The new sharing endpoints (/2.0/shares) return string for userId and groupId, adjust the SDK to that.
13
+
14
+ ### Added
15
+
16
+ - `AssetShare` model to fully comply with the new sharing endpoints (/2.0/shares) DTO.
17
+
18
+ ## [3.5.2] - 2025-10-29
19
+
20
+ ### Fixed
21
+
22
+ - Fix list_asset_shares to return AssetSharesPaginatedResult.
23
+ - Fix update_asset_share to return Share
24
+
25
+ ## Added
26
+
27
+ - Add AssetSharesPaginatedResult for list asset shares.
28
+ - Add mock api tests for sharing endpoints.
29
+
8
30
  ## [3.5.1] - 2025-10-28
9
31
 
10
32
  ### Fixed
@@ -1,6 +1,6 @@
1
- Metadata-Version: 2.1
1
+ Metadata-Version: 2.4
2
2
  Name: smartsheet_python_sdk
3
- Version: 3.5.1
3
+ Version: 3.5.3
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,10 +20,34 @@ 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
 
@@ -122,3 +122,5 @@ from .widget import Widget
122
122
  from .widget_content import WidgetContent
123
123
  from .workspace import Workspace
124
124
  from .user_plan import UserPlan
125
+ from .asset_shares_paginated_result import AssetSharesPaginatedResult
126
+ from .asset_share import AssetShare
@@ -0,0 +1,138 @@
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, String, json
21
+ from ..util import deserialize, serialize
22
+ from .enums import AccessLevel, ShareScope, ShareType
23
+
24
+
25
+ class AssetShare:
26
+
27
+ """Smartsheet AssetShare data model."""
28
+
29
+ def __init__(self, props=None, base_obj=None):
30
+ """Initialize the AssetShare model."""
31
+ self._base = None
32
+ if base_obj is not None:
33
+ self._base = base_obj
34
+
35
+ self._access_level = EnumeratedValue(AccessLevel)
36
+ self._email = String()
37
+ self._group_id = String()
38
+ self._id_ = String()
39
+ self._name = String()
40
+ self._scope = EnumeratedValue(ShareScope)
41
+ self._type_ = EnumeratedValue(ShareType)
42
+ self._user_id = String()
43
+
44
+ if props:
45
+ deserialize(self, props)
46
+
47
+ # requests package Response object
48
+ self.request_response = None
49
+ self.__initialized = True
50
+
51
+ def __getattr__(self, key):
52
+ if key == "id":
53
+ return self.id_
54
+ elif key == "type":
55
+ return self.type_
56
+ else:
57
+ raise AttributeError(key)
58
+
59
+ def __setattr__(self, key, value):
60
+ if key == "id":
61
+ self.id_ = value
62
+ elif key == "type":
63
+ self.type_ = value
64
+ else:
65
+ super().__setattr__(key, value)
66
+
67
+ @property
68
+ def access_level(self):
69
+ return self._access_level
70
+
71
+ @access_level.setter
72
+ def access_level(self, value):
73
+ self._access_level.set(value)
74
+
75
+ @property
76
+ def email(self):
77
+ return self._email.value
78
+
79
+ @email.setter
80
+ def email(self, value):
81
+ self._email.value = value
82
+
83
+ @property
84
+ def group_id(self):
85
+ return self._group_id.value
86
+
87
+ @group_id.setter
88
+ def group_id(self, value):
89
+ self._group_id.value = value
90
+
91
+ @property
92
+ def id_(self):
93
+ return self._id_.value
94
+
95
+ @id_.setter
96
+ def id_(self, value):
97
+ self._id_.value = value
98
+
99
+ @property
100
+ def name(self):
101
+ return self._name.value
102
+
103
+ @name.setter
104
+ def name(self, value):
105
+ self._name.value = value
106
+
107
+ @property
108
+ def scope(self):
109
+ return self._scope
110
+
111
+ @scope.setter
112
+ def scope(self, value):
113
+ self._scope.set(value)
114
+
115
+ @property
116
+ def type_(self):
117
+ return self._type_
118
+
119
+ @type_.setter
120
+ def type_(self, value):
121
+ self._type_.set(value)
122
+
123
+ @property
124
+ def user_id(self):
125
+ return self._user_id.value
126
+
127
+ @user_id.setter
128
+ def user_id(self, value):
129
+ self._user_id.value = value
130
+
131
+ def to_dict(self):
132
+ return serialize(self)
133
+
134
+ def to_json(self):
135
+ return json.dumps(self.to_dict())
136
+
137
+ def __str__(self):
138
+ return self.to_json()
@@ -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 typing import TypeVar, List
21
+ from ..types import String, json, TypedList, importlib
22
+ from ..util import deserialize, serialize
23
+ from .asset_share import AssetShare
24
+
25
+ T = TypeVar('T')
26
+
27
+
28
+ class AssetSharesPaginatedResult:
29
+ """Smartsheet AssetSharesPaginatedResult data model with generic type support.
30
+ Use only for deserializing the response from GET /2.0/shares.
31
+ Created because GET /2.0/shares returns items in the response body instead of data.
32
+ As a result TokenPaginatedResult cannot be used.
33
+ """
34
+
35
+ def __init__(self, props=None, dynamic_data_type=None, base_obj=None):
36
+ """Initialize the TokenPaginatedResult model."""
37
+ self._base = None
38
+ if base_obj is not None:
39
+ self._base = base_obj
40
+
41
+ self._dynamic_data_type = None
42
+ if dynamic_data_type is not None:
43
+ self._dynamic_data_type = dynamic_data_type
44
+
45
+ self._items = TypedList(object)
46
+ self._last_key = String()
47
+
48
+ if props:
49
+ deserialize(self, props)
50
+
51
+ self.request_response = None
52
+ self.__initialized = True
53
+
54
+ @property
55
+ def items(self) -> List[AssetShare]:
56
+ return self._items
57
+
58
+ @items.setter
59
+ def items(self, value):
60
+ class_ = getattr(
61
+ importlib.import_module("smartsheet.models"), self._dynamic_data_type
62
+ )
63
+ if isinstance(value, list):
64
+ self._items = [class_(x, self._base) for x in value]
65
+ else:
66
+ self._items = class_(value, self._base)
67
+
68
+
69
+ @property
70
+ def last_key(self):
71
+ return self._last_key.value
72
+
73
+ @last_key.setter
74
+ def last_key(self, value):
75
+ self._last_key.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()
@@ -43,7 +43,7 @@ class Sharing:
43
43
  sharing_include (ShareScope): Scope of share to include in response
44
44
 
45
45
  Returns:
46
- IndexResult
46
+ AssetSharesPaginatedResult
47
47
  """
48
48
  _op = fresh_operation('list_asset_shares')
49
49
  _op['method'] = 'GET'
@@ -54,7 +54,7 @@ class Sharing:
54
54
  _op['query_params']['lastKey'] = last_key
55
55
  _op['query_params']['sharingInclude'] = sharing_include.name if sharing_include else None
56
56
 
57
- expected = ['IndexResult', 'Share']
57
+ expected = ['AssetSharesPaginatedResult', 'AssetShare']
58
58
 
59
59
  prepped_request = self._base.prepare_request(_op)
60
60
  response = self._base.request(prepped_request, expected, _op)
@@ -70,7 +70,7 @@ class Sharing:
70
70
  share_id (str): Share ID
71
71
 
72
72
  Returns:
73
- Share
73
+ AssetShare
74
74
  """
75
75
  _op = fresh_operation('get_asset_share')
76
76
  _op['method'] = 'GET'
@@ -78,7 +78,7 @@ class Sharing:
78
78
  _op['query_params']['assetType'] = asset_type
79
79
  _op['query_params']['assetId'] = asset_id
80
80
 
81
- expected = 'Share'
81
+ expected = 'AssetShare'
82
82
  prepped_request = self._base.prepare_request(_op)
83
83
  response = self._base.request(prepped_request, expected, _op)
84
84
 
@@ -106,7 +106,7 @@ class Sharing:
106
106
  _op['query_params']['sendEmail'] = send_email
107
107
  _op['json'] = share_obj
108
108
 
109
- expected = ['Result', 'Share']
109
+ expected = ['Result', 'AssetShare']
110
110
 
111
111
  prepped_request = self._base.prepare_request(_op)
112
112
  response = self._base.request(prepped_request, expected, _op)
@@ -132,7 +132,7 @@ class Sharing:
132
132
  _op['query_params']['assetId'] = asset_id
133
133
  _op['json'] = share_obj
134
134
 
135
- expected = ['Result', 'Share']
135
+ expected = 'AssetShare'
136
136
 
137
137
  prepped_request = self._base.prepare_request(_op)
138
138
  response = self._base.request(prepped_request, expected, _op)
@@ -185,6 +185,8 @@ class Smartsheet:
185
185
  self._api_base = api_base
186
186
  self._assume_user = None
187
187
  self._test_scenario_name = None
188
+ self._wiremock_test_name = None
189
+ self._wiremock_request_id = None
188
190
  self._change_agent = None
189
191
 
190
192
  def assume_user(self, email=None):
@@ -227,6 +229,18 @@ class Smartsheet:
227
229
  """
228
230
  self._test_scenario_name = name
229
231
 
232
+ def with_wiremock_test_case(self, test_name: str, request_id: str):
233
+ """
234
+ Configure client with x-test-name and x-request-id headers.
235
+ Used for wiremock test cases.
236
+
237
+ Args:
238
+ test_name (str): The name of the wiremock test case.
239
+ request_id (str): The unique request ID for this test scenario.
240
+ """
241
+ self._wiremock_test_name = test_name
242
+ self._wiremock_request_id = request_id
243
+
230
244
  def with_change_agent(self, change_agent):
231
245
  """
232
246
  Request headers will contain the 'Smartsheet-Change-Agent' header value
@@ -437,6 +451,9 @@ class Smartsheet:
437
451
  del prepped_request.headers["Api-Scenario"]
438
452
  except KeyError:
439
453
  pass
454
+ if self._wiremock_test_name is not None and self._wiremock_request_id is not None:
455
+ prepped_request.headers["X-Test-Name"] = self._wiremock_test_name
456
+ prepped_request.headers["X-Request-ID"] = self._wiremock_request_id
440
457
 
441
458
  if self._change_agent is not None:
442
459
  prepped_request.headers.update(
@@ -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.5.1'
4
- __version_tuple__ = version_tuple = (3, 5, 1)
3
+ __version__ = version = '3.5.3'
4
+ __version_tuple__ = version_tuple = (3, 5, 3)
@@ -1,6 +1,6 @@
1
- Metadata-Version: 2.1
2
- Name: smartsheet-python-sdk
3
- Version: 3.5.1
1
+ Metadata-Version: 2.4
2
+ Name: smartsheet_python_sdk
3
+ Version: 3.5.3
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,10 +20,34 @@ 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
 
@@ -55,6 +55,8 @@ smartsheet/models/__init__.py
55
55
  smartsheet/models/access_token.py
56
56
  smartsheet/models/account.py
57
57
  smartsheet/models/alternate_email.py
58
+ smartsheet/models/asset_share.py
59
+ smartsheet/models/asset_shares_paginated_result.py
58
60
  smartsheet/models/attachment.py
59
61
  smartsheet/models/auto_number_format.py
60
62
  smartsheet/models/automation_action.py
@@ -213,6 +215,7 @@ smartsheet_python_sdk.egg-info/SOURCES.txt
213
215
  smartsheet_python_sdk.egg-info/dependency_links.txt
214
216
  smartsheet_python_sdk.egg-info/requires.txt
215
217
  smartsheet_python_sdk.egg-info/top_level.txt
218
+ tests/__init__.py
216
219
  tests/integration/README.md
217
220
  tests/integration/conftest.py
218
221
  tests/integration/test_attachments.py
@@ -248,11 +251,13 @@ tests/integration/fixtures/moe-curly.jpg
248
251
  tests/integration/fixtures/quote.txt
249
252
  tests/integration/fixtures/stooges_v1.jpg
250
253
  tests/integration/fixtures/stooges_v2.jpg
254
+ tests/mock_api/__init__.py
251
255
  tests/mock_api/mock_api_test_helper.py
252
256
  tests/mock_api/test_mock_api_automation_rules.py
253
257
  tests/mock_api/test_mock_api_columns.py
254
258
  tests/mock_api/test_mock_api_folders.py
255
259
  tests/mock_api/test_mock_api_rows.py
260
+ tests/mock_api/test_mock_api_sharing.py
256
261
  tests/mock_api/test_mock_api_sheets.py
257
262
  tests/mock_api/test_mock_api_sights.py
258
263
  tests/mock_api/test_mock_api_workspaces.py
File without changes
File without changes
@@ -0,0 +1,73 @@
1
+ import os
2
+ import requests
3
+ import smartsheet
4
+ from smartsheet.exceptions import ApiError
5
+
6
+
7
+ def clean_api_error(test_func):
8
+ def wrapper(*args, **kwargs):
9
+ try:
10
+ test_func(*args, **kwargs)
11
+ except ApiError as error:
12
+ assert False, 'ApiError: ' + error.message
13
+
14
+ return wrapper
15
+
16
+
17
+ class MockApiTestHelper(object):
18
+ def setup_method(self, method):
19
+ self.client = smartsheet.Smartsheet(access_token='abc123', api_base='http://localhost:8082')
20
+ self.client.errors_as_exceptions()
21
+
22
+ def check_error_code(self, exception_info, expected_error_code):
23
+ actual_error_code = exception_info.value.error.result.error_code
24
+
25
+ if self.is_test_scenario_error_code(actual_error_code):
26
+ raise exception_info.value
27
+
28
+ assert actual_error_code == expected_error_code
29
+
30
+ def is_test_scenario_error_code(self, error_code):
31
+ return error_code == 9999
32
+
33
+
34
+ def get_mock_api_client(test_name: str, request_id: str) -> smartsheet.Smartsheet:
35
+ client = smartsheet.Smartsheet(access_token='abc123', api_base='http://localhost:8082/2.0')
36
+ client.with_wiremock_test_case(test_name, request_id)
37
+ return client
38
+
39
+
40
+ def get_wiremock_request(request_id: str) -> dict:
41
+ """
42
+ Fetch request details from WireMock admin API using the request ID.
43
+
44
+ Args:
45
+ request_id (str): The unique request ID to search for
46
+
47
+ Returns:
48
+ dict: The request details from WireMock, or None if not found
49
+
50
+ Raises:
51
+ requests.RequestException: If the HTTP request fails
52
+ ValueError: If not exactly 1 match
53
+ """
54
+ admin_url = "http://localhost:8082/__admin/requests/find"
55
+
56
+ # Search for requests with the specific request ID in headers
57
+ search_criteria = {
58
+ "headers": {
59
+ "X-Request-Id": {
60
+ "equalTo": request_id
61
+ }
62
+ }
63
+ }
64
+
65
+ response = requests.post(admin_url, json=search_criteria, timeout=30)
66
+ response.raise_for_status()
67
+
68
+ data = response.json()
69
+ requests_found = data.get("requests", [])
70
+
71
+ if len(requests_found) != 1:
72
+ raise ValueError(f'Found {len(requests_found)} requests, expected 1')
73
+ return requests_found[0]
@@ -2,7 +2,7 @@
2
2
 
3
3
  import smartsheet
4
4
  import pytest
5
- from mock_api_test_helper import MockApiTestHelper, clean_api_error
5
+ from tests.mock_api.mock_api_test_helper import MockApiTestHelper, clean_api_error
6
6
 
7
7
 
8
8
  class TestMockApiSheets(MockApiTestHelper):
@@ -1,7 +1,7 @@
1
1
  # pylint: disable=C0103,W0232
2
2
 
3
3
  from smartsheet.models import Column
4
- from mock_api_test_helper import MockApiTestHelper, clean_api_error
4
+ from tests.mock_api.mock_api_test_helper import MockApiTestHelper, clean_api_error
5
5
 
6
6
  class TestMockApiColumns(MockApiTestHelper):
7
7
  @clean_api_error
@@ -3,7 +3,7 @@
3
3
  import pytest
4
4
  from smartsheet.models import Folder, PaginatedChildrenResult, Sheet, Sight, Report
5
5
  from smartsheet.exceptions import ApiError
6
- from mock_api_test_helper import MockApiTestHelper, clean_api_error
6
+ from tests.mock_api.mock_api_test_helper import MockApiTestHelper, clean_api_error
7
7
 
8
8
 
9
9
  class TestMockApiFolders(MockApiTestHelper):
@@ -181,4 +181,4 @@ class TestMockApiFolders(MockApiTestHelper):
181
181
  assert sight.access_level == "EDITOR"
182
182
 
183
183
  # Verify the lastKey is returned in the response
184
- assert response.last_key == "xvmnw4mnx8v9wriot20574xvnjoqt4iuhnow490"
184
+ assert response.last_key == "xvmnw4mnx8v9wriot20574xvnjoqt4iuhnow490"
@@ -4,7 +4,7 @@ import pytest
4
4
  from smartsheet.models import Row, PredecessorList, Duration, ExplicitNull
5
5
  from smartsheet.exceptions import ApiError
6
6
 
7
- from mock_api_test_helper import MockApiTestHelper, clean_api_error
7
+ from tests.mock_api.mock_api_test_helper import MockApiTestHelper, clean_api_error
8
8
 
9
9
 
10
10
  class TestMockApiRows(MockApiTestHelper):