smartsheet-python-sdk 3.4.0__tar.gz → 3.5.2__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 (266) hide show
  1. {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/.github/workflows/test-build.yaml +1 -2
  2. {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/CHANGELOG.md +25 -0
  3. {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/PKG-INFO +5 -29
  4. {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/setup.py +1 -1
  5. {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/smartsheet/models/__init__.py +1 -0
  6. smartsheet_python_sdk-3.5.2/smartsheet/models/asset_shares_paginated_result.py +84 -0
  7. {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/smartsheet/models/user_model.py +9 -0
  8. {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/smartsheet/models/user_plan.py +9 -0
  9. smartsheet_python_sdk-3.4.0/smartsheet/asset_shares.py → smartsheet_python_sdk-3.5.2/smartsheet/sharing.py +3 -3
  10. {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/smartsheet/smartsheet.py +27 -4
  11. {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/smartsheet/version.py +2 -2
  12. {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/smartsheet_python_sdk.egg-info/PKG-INFO +4 -28
  13. {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/smartsheet_python_sdk.egg-info/SOURCES.txt +5 -1
  14. {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/smartsheet_python_sdk.egg-info/top_level.txt +1 -0
  15. smartsheet_python_sdk-3.5.2/tests/__init__.py +0 -0
  16. smartsheet_python_sdk-3.5.2/tests/mock_api/__init__.py +0 -0
  17. smartsheet_python_sdk-3.5.2/tests/mock_api/mock_api_test_helper.py +73 -0
  18. {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/tests/mock_api/test_mock_api_automation_rules.py +1 -1
  19. {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/tests/mock_api/test_mock_api_columns.py +1 -1
  20. {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/tests/mock_api/test_mock_api_folders.py +2 -2
  21. {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/tests/mock_api/test_mock_api_rows.py +1 -1
  22. smartsheet_python_sdk-3.5.2/tests/mock_api/test_mock_api_sharing.py +508 -0
  23. {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/tests/mock_api/test_mock_api_sheets.py +1 -1
  24. {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/tests/mock_api/test_mock_api_sights.py +1 -1
  25. {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/tests/mock_api/test_mock_api_workspaces.py +2 -2
  26. {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/tests/mock_api/test_mock_change_agent.py +1 -2
  27. {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/tests/mock_api/test_mock_serialization.py +1 -1
  28. smartsheet_python_sdk-3.4.0/tests/mock_api/mock_api_test_helper.py +0 -30
  29. {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/.gitchangelog.rc +0 -0
  30. {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/.gitchangelog.tpl +0 -0
  31. {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
  32. {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
  33. {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/.github/pull_request_template.md +0 -0
  34. {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/.github/workflows/publish-distribution.yaml +0 -0
  35. {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/.github/workflows/publish-documentation.yaml +0 -0
  36. {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/.gitignore +0 -0
  37. {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/.markdownlint.json +0 -0
  38. {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/ADVANCED.md +0 -0
  39. {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/CONTRIBUTING.md +0 -0
  40. {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/LICENSE.md +0 -0
  41. {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/Makefile +0 -0
  42. {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/NOTICE +0 -0
  43. {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/README.md +0 -0
  44. {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/docs-source/Makefile +0 -0
  45. {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/docs-source/conf.py +0 -0
  46. {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/docs-source/index.rst +0 -0
  47. {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/pylintrc +0 -0
  48. {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/setup.cfg +0 -0
  49. {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/smartsheet/__init__.py +0 -0
  50. {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/smartsheet/attachments.py +0 -0
  51. {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/smartsheet/cells.py +0 -0
  52. {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/smartsheet/contacts.py +0 -0
  53. {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/smartsheet/discussions.py +0 -0
  54. {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/smartsheet/events.py +0 -0
  55. {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/smartsheet/exceptions.py +0 -0
  56. {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/smartsheet/favorites.py +0 -0
  57. {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/smartsheet/folders.py +0 -0
  58. {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/smartsheet/groups.py +0 -0
  59. {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/smartsheet/home.py +0 -0
  60. {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/smartsheet/images.py +0 -0
  61. {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/smartsheet/models/access_token.py +0 -0
  62. {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/smartsheet/models/account.py +0 -0
  63. {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/smartsheet/models/alternate_email.py +0 -0
  64. {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/smartsheet/models/attachment.py +0 -0
  65. {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/smartsheet/models/auto_number_format.py +0 -0
  66. {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/smartsheet/models/automation_action.py +0 -0
  67. {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/smartsheet/models/automation_rule.py +0 -0
  68. {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/smartsheet/models/boolean_object_value.py +0 -0
  69. {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/smartsheet/models/bulk_item_failure.py +0 -0
  70. {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/smartsheet/models/bulk_item_result.py +0 -0
  71. {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/smartsheet/models/cell.py +0 -0
  72. {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/smartsheet/models/cell_data_item.py +0 -0
  73. {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/smartsheet/models/cell_history.py +0 -0
  74. {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/smartsheet/models/cell_link.py +0 -0
  75. {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/smartsheet/models/cell_link_widget_content.py +0 -0
  76. {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/smartsheet/models/chart_widget_content.py +0 -0
  77. {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/smartsheet/models/column.py +0 -0
  78. {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/smartsheet/models/comment.py +0 -0
  79. {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/smartsheet/models/contact.py +0 -0
  80. {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/smartsheet/models/contact_object_value.py +0 -0
  81. {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/smartsheet/models/container_destination.py +0 -0
  82. {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/smartsheet/models/copy_or_move_row_destination.py +0 -0
  83. {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/smartsheet/models/copy_or_move_row_directive.py +0 -0
  84. {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/smartsheet/models/copy_or_move_row_result.py +0 -0
  85. {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/smartsheet/models/criteria.py +0 -0
  86. {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/smartsheet/models/cross_sheet_reference.py +0 -0
  87. {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/smartsheet/models/currency.py +0 -0
  88. {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/smartsheet/models/date_object_value.py +0 -0
  89. {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/smartsheet/models/datetime_object_value.py +0 -0
  90. {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/smartsheet/models/discussion.py +0 -0
  91. {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/smartsheet/models/downloaded_file.py +0 -0
  92. {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/smartsheet/models/duration.py +0 -0
  93. {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/smartsheet/models/email.py +0 -0
  94. {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/smartsheet/models/enums/__init__.py +0 -0
  95. {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/smartsheet/models/enums/access_level.py +0 -0
  96. {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/smartsheet/models/enums/asset_type.py +0 -0
  97. {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/smartsheet/models/enums/attachment_parent_type.py +0 -0
  98. {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/smartsheet/models/enums/attachment_sub_type.py +0 -0
  99. {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/smartsheet/models/enums/attachment_type.py +0 -0
  100. {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/smartsheet/models/enums/automation_action_frequency.py +0 -0
  101. {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/smartsheet/models/enums/automation_action_type.py +0 -0
  102. {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/smartsheet/models/enums/automation_rule_disabled_reason.py +0 -0
  103. {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/smartsheet/models/enums/cell_link_status.py +0 -0
  104. {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/smartsheet/models/enums/column_type.py +0 -0
  105. {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/smartsheet/models/enums/criteria_target.py +0 -0
  106. {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/smartsheet/models/enums/cross_sheet_reference_status.py +0 -0
  107. {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/smartsheet/models/enums/currency_code.py +0 -0
  108. {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/smartsheet/models/enums/day_descriptors.py +0 -0
  109. {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/smartsheet/models/enums/day_ordinal.py +0 -0
  110. {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/smartsheet/models/enums/event_action.py +0 -0
  111. {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/smartsheet/models/enums/event_obejct_type.py +0 -0
  112. {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/smartsheet/models/enums/event_source.py +0 -0
  113. {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/smartsheet/models/enums/global_template.py +0 -0
  114. {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/smartsheet/models/enums/operator.py +0 -0
  115. {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/smartsheet/models/enums/paper_type.py +0 -0
  116. {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/smartsheet/models/enums/predecessor_type.py +0 -0
  117. {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/smartsheet/models/enums/publish_accessible_by.py +0 -0
  118. {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/smartsheet/models/enums/schedule_type.py +0 -0
  119. {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/smartsheet/models/enums/seat_type.py +0 -0
  120. {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/smartsheet/models/enums/share_scope.py +0 -0
  121. {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/smartsheet/models/enums/share_type.py +0 -0
  122. {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/smartsheet/models/enums/sheet_email_format.py +0 -0
  123. {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/smartsheet/models/enums/sheet_filter_operator.py +0 -0
  124. {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/smartsheet/models/enums/sheet_filter_type.py +0 -0
  125. {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/smartsheet/models/enums/sort_direction.py +0 -0
  126. {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/smartsheet/models/enums/symbol.py +0 -0
  127. {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/smartsheet/models/enums/system_column_type.py +0 -0
  128. {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/smartsheet/models/enums/update_request_status.py +0 -0
  129. {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/smartsheet/models/enums/user_status.py +0 -0
  130. {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/smartsheet/models/enums/widget_type.py +0 -0
  131. {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/smartsheet/models/error.py +0 -0
  132. {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/smartsheet/models/error_result.py +0 -0
  133. {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/smartsheet/models/event.py +0 -0
  134. {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/smartsheet/models/event_result.py +0 -0
  135. {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/smartsheet/models/explicit_null.py +0 -0
  136. {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/smartsheet/models/favorite.py +0 -0
  137. {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/smartsheet/models/folder.py +0 -0
  138. {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/smartsheet/models/font_family.py +0 -0
  139. {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/smartsheet/models/format_details.py +0 -0
  140. {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/smartsheet/models/format_tables.py +0 -0
  141. {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/smartsheet/models/group.py +0 -0
  142. {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/smartsheet/models/group_member.py +0 -0
  143. {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/smartsheet/models/home.py +0 -0
  144. {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/smartsheet/models/hyperlink.py +0 -0
  145. {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/smartsheet/models/image.py +0 -0
  146. {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/smartsheet/models/image_url.py +0 -0
  147. {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/smartsheet/models/image_url_map.py +0 -0
  148. {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/smartsheet/models/image_widget_content.py +0 -0
  149. {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/smartsheet/models/index_result.py +0 -0
  150. {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/smartsheet/models/json_object.py +0 -0
  151. {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/smartsheet/models/multi_contact_object_value.py +0 -0
  152. {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/smartsheet/models/multi_picklist_object_value.py +0 -0
  153. {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/smartsheet/models/multi_row_email.py +0 -0
  154. {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/smartsheet/models/number_object_value.py +0 -0
  155. {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/smartsheet/models/o_auth_error.py +0 -0
  156. {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/smartsheet/models/object_value.py +0 -0
  157. {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/smartsheet/models/paginated_children_result.py +0 -0
  158. {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/smartsheet/models/predecessor.py +0 -0
  159. {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/smartsheet/models/predecessor_list.py +0 -0
  160. {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/smartsheet/models/primitive_object_value.py +0 -0
  161. {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/smartsheet/models/profile_image.py +0 -0
  162. {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/smartsheet/models/project_settings.py +0 -0
  163. {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/smartsheet/models/recipient.py +0 -0
  164. {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/smartsheet/models/report.py +0 -0
  165. {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/smartsheet/models/report_cell.py +0 -0
  166. {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/smartsheet/models/report_column.py +0 -0
  167. {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/smartsheet/models/report_publish.py +0 -0
  168. {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/smartsheet/models/report_row.py +0 -0
  169. {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/smartsheet/models/report_widget_content.py +0 -0
  170. {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/smartsheet/models/result.py +0 -0
  171. {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/smartsheet/models/row.py +0 -0
  172. {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/smartsheet/models/row_email.py +0 -0
  173. {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/smartsheet/models/row_mapping.py +0 -0
  174. {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/smartsheet/models/schedule.py +0 -0
  175. {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/smartsheet/models/scope.py +0 -0
  176. {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/smartsheet/models/search_result.py +0 -0
  177. {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/smartsheet/models/search_result_item.py +0 -0
  178. {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/smartsheet/models/selection_range.py +0 -0
  179. {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/smartsheet/models/sent_update_request.py +0 -0
  180. {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/smartsheet/models/server_info.py +0 -0
  181. {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/smartsheet/models/share.py +0 -0
  182. {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/smartsheet/models/sheet.py +0 -0
  183. {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/smartsheet/models/sheet_email.py +0 -0
  184. {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/smartsheet/models/sheet_filter.py +0 -0
  185. {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/smartsheet/models/sheet_filter_details.py +0 -0
  186. {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/smartsheet/models/sheet_publish.py +0 -0
  187. {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/smartsheet/models/sheet_summary.py +0 -0
  188. {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/smartsheet/models/sheet_user_permissions.py +0 -0
  189. {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/smartsheet/models/sheet_user_settings.py +0 -0
  190. {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/smartsheet/models/shortcut_data_item.py +0 -0
  191. {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/smartsheet/models/shortcut_widget_content.py +0 -0
  192. {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/smartsheet/models/sight.py +0 -0
  193. {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/smartsheet/models/sight_publish.py +0 -0
  194. {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/smartsheet/models/sort_criterion.py +0 -0
  195. {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/smartsheet/models/sort_specifier.py +0 -0
  196. {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/smartsheet/models/source.py +0 -0
  197. {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/smartsheet/models/string_object_value.py +0 -0
  198. {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/smartsheet/models/summary_field.py +0 -0
  199. {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/smartsheet/models/template.py +0 -0
  200. {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/smartsheet/models/title_rich_text_widget_content.py +0 -0
  201. {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/smartsheet/models/token_paginated_result.py +0 -0
  202. {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/smartsheet/models/update_request.py +0 -0
  203. {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/smartsheet/models/user.py +0 -0
  204. {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/smartsheet/models/user_profile.py +0 -0
  205. {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/smartsheet/models/version.py +0 -0
  206. {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/smartsheet/models/web_content_widget_content.py +0 -0
  207. {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/smartsheet/models/webhook.py +0 -0
  208. {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/smartsheet/models/webhook_secret.py +0 -0
  209. {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/smartsheet/models/webhook_stats.py +0 -0
  210. {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/smartsheet/models/webhook_subscope.py +0 -0
  211. {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/smartsheet/models/widget.py +0 -0
  212. {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/smartsheet/models/widget_content.py +0 -0
  213. {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/smartsheet/models/widget_hyperlink.py +0 -0
  214. {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/smartsheet/models/workspace.py +0 -0
  215. {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/smartsheet/object_value.py +0 -0
  216. {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/smartsheet/passthrough.py +0 -0
  217. {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/smartsheet/reports.py +0 -0
  218. {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/smartsheet/search.py +0 -0
  219. {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/smartsheet/server.py +0 -0
  220. {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/smartsheet/session.py +0 -0
  221. {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/smartsheet/sheets.py +0 -0
  222. {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/smartsheet/sights.py +0 -0
  223. {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/smartsheet/templates.py +0 -0
  224. {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/smartsheet/token.py +0 -0
  225. {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/smartsheet/types.py +0 -0
  226. {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/smartsheet/users.py +0 -0
  227. {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/smartsheet/util.py +0 -0
  228. {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/smartsheet/webhooks.py +0 -0
  229. {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/smartsheet/workspaces.py +0 -0
  230. {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/smartsheet_python_sdk.egg-info/dependency_links.txt +0 -0
  231. {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/smartsheet_python_sdk.egg-info/requires.txt +0 -0
  232. {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/tests/integration/README.md +0 -0
  233. {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/tests/integration/conftest.py +0 -0
  234. {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/tests/integration/fixtures/calling_all_curs.txt +0 -0
  235. {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/tests/integration/fixtures/curly.jpg +0 -0
  236. {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/tests/integration/fixtures/moe-curly.jpg +0 -0
  237. {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/tests/integration/fixtures/quote.txt +0 -0
  238. {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/tests/integration/fixtures/stooges_v1.jpg +0 -0
  239. {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/tests/integration/fixtures/stooges_v2.jpg +0 -0
  240. {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/tests/integration/test_attachments.py +0 -0
  241. {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/tests/integration/test_columns.py +0 -0
  242. {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/tests/integration/test_contacts.py +0 -0
  243. {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/tests/integration/test_cross_sheet_references.py +0 -0
  244. {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/tests/integration/test_discussions.py +0 -0
  245. {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/tests/integration/test_events.py +0 -0
  246. {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/tests/integration/test_favorites.py +0 -0
  247. {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/tests/integration/test_folders.py +0 -0
  248. {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/tests/integration/test_groups.py +0 -0
  249. {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/tests/integration/test_home.py +0 -0
  250. {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/tests/integration/test_model_attributes.py +0 -0
  251. {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/tests/integration/test_multi_picklist.py +0 -0
  252. {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/tests/integration/test_object_value.py +0 -0
  253. {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/tests/integration/test_passthrough.py +0 -0
  254. {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/tests/integration/test_regression.py +0 -0
  255. {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/tests/integration/test_reports.py +0 -0
  256. {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/tests/integration/test_rows.py +0 -0
  257. {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/tests/integration/test_server_info.py +0 -0
  258. {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/tests/integration/test_sharing.py +0 -0
  259. {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/tests/integration/test_sheet_summary.py +0 -0
  260. {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/tests/integration/test_sheets.py +0 -0
  261. {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/tests/integration/test_templates.py +0 -0
  262. {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/tests/integration/test_update_requests.py +0 -0
  263. {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/tests/integration/test_users.py +0 -0
  264. {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/tests/integration/test_webhooks.py +0 -0
  265. {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/tests/integration/test_workspaces.py +0 -0
  266. {smartsheet_python_sdk-3.4.0 → smartsheet_python_sdk-3.5.2}/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,31 @@ 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.2] - 2025-10-29
9
+
10
+ ### Fixed
11
+
12
+ - Fix list_asset_shares to return AssetSharesPaginatedResult.
13
+ - Fix update_asset_share to return Share
14
+
15
+ ## Added
16
+
17
+ - Add AssetSharesPaginatedResult for list asset shares.
18
+ - Add mock api tests for sharing endpoints.
19
+
20
+ ## [3.5.1] - 2025-10-28
21
+
22
+ ### Fixed
23
+
24
+ - Rename asset_shares.py to sharing.py so that Smartsheet.__getattr__ can pick it up.
25
+
26
+ ## [3.5.0] - 2025-10-24
27
+
28
+ ### Added
29
+
30
+ - Add robust error handling. The SDK won't throw an exception if the error response body is not JSON or properties are missing.
31
+ - Add provisionalExpirationDate field to the user_model and user_plan models
32
+
8
33
  ## [3.4.0] - 2025-10-20
9
34
 
10
35
  ### Fixed
@@ -1,6 +1,6 @@
1
- Metadata-Version: 2.4
2
- Name: smartsheet-python-sdk
3
- Version: 3.4.0
1
+ Metadata-Version: 2.1
2
+ Name: smartsheet_python_sdk
3
+ Version: 3.5.2
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,34 +20,10 @@ 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
- License-File: LICENSE.md
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
23
  Provides-Extra: test
31
- Requires-Dist: coverage; extra == "test"
32
- Requires-Dist: coveralls; extra == "test"
33
- Requires-Dist: pytest; extra == "test"
34
24
  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
25
+ License-File: LICENSE.md
26
+ License-File: NOTICE
51
27
 
52
28
  # Smartsheet Python SDK
53
29
 
@@ -3,7 +3,7 @@ from setuptools.command.test import test as TestCommand
3
3
  import sys
4
4
  import six
5
5
 
6
- NAME = 'smartsheet-python-sdk'
6
+ NAME = 'smartsheet_python_sdk'
7
7
 
8
8
  REQUIRES = [
9
9
  'requests',
@@ -122,3 +122,4 @@ 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
@@ -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 . import Share
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[Share]:
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()
@@ -51,6 +51,7 @@ class UserModel:
51
51
  self._licensed_sheet_creator = Boolean()
52
52
  self._mobile_phone = String()
53
53
  self._profile_image = TypedObject(ProfileImage)
54
+ self._provisional_expiration_date = Timestamp()
54
55
  self._resource_viewer = Boolean()
55
56
  self._role = String()
56
57
  self._seat_type = EnumeratedValue(SeatType)
@@ -197,6 +198,14 @@ class UserModel:
197
198
  def profile_image(self, value):
198
199
  self._profile_image.value = value
199
200
 
201
+ @property
202
+ def provisional_expiration_date(self):
203
+ return self._provisional_expiration_date.value
204
+
205
+ @provisional_expiration_date.setter
206
+ def provisional_expiration_date(self, value):
207
+ self._provisional_expiration_date.value = value
208
+
200
209
  @property
201
210
  def resource_viewer(self):
202
211
  return self._resource_viewer.value
@@ -20,6 +20,7 @@ class UserPlan:
20
20
  self._seat_type = EnumeratedValue(SeatType)
21
21
  self._seat_type_last_changed_at = Timestamp()
22
22
  self._is_internal = Boolean()
23
+ self._provisional_expiration_date = Timestamp()
23
24
 
24
25
  if props:
25
26
  deserialize(self, props)
@@ -58,6 +59,14 @@ class UserPlan:
58
59
  def is_internal(self, value):
59
60
  self._is_internal.value = value
60
61
 
62
+ @property
63
+ def provisional_expiration_date(self):
64
+ return self._provisional_expiration_date.value
65
+
66
+ @provisional_expiration_date.setter
67
+ def provisional_expiration_date(self, value):
68
+ self._provisional_expiration_date.value = value
69
+
61
70
  def to_dict(self):
62
71
  return serialize(self)
63
72
 
@@ -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', 'Share']
58
58
 
59
59
  prepped_request = self._base.prepare_request(_op)
60
60
  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 = 'Share'
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(
@@ -629,8 +646,13 @@ class OperationErrorResult:
629
646
  expected (list): Dashed expectations
630
647
  """
631
648
  # look up name of the error
632
- error_payload = self.resp.json()
633
- error_code = error_payload["errorCode"]
649
+ error_payload = {}
650
+ try:
651
+ error_payload = self.resp.json()
652
+ except json.JSONDecodeError:
653
+ # Do not fail if the response is not JSON
654
+ pass
655
+ error_code = error_payload.get("errorCode", 0)
634
656
  try:
635
657
  error_name = OperationErrorResult.error_lookup[error_code]["name"]
636
658
  recommendation = OperationErrorResult.error_lookup[error_code][
@@ -638,6 +660,7 @@ class OperationErrorResult:
638
660
  ]
639
661
  should_retry = OperationErrorResult.error_lookup[error_code]["should_retry"]
640
662
  except:
663
+ # If error_code is present in the response but not in the lookup, default to ApiError
641
664
  error_name = OperationErrorResult.error_lookup[0]["name"]
642
665
  recommendation = OperationErrorResult.error_lookup[0]["recommendation"]
643
666
  should_retry = OperationErrorResult.error_lookup[0]["should_retry"]
@@ -649,8 +672,8 @@ class OperationErrorResult:
649
672
  "name": error_name,
650
673
  "status_code": self.resp.status_code,
651
674
  "code": error_code,
652
- "message": error_payload["message"],
653
- "ref_id": error_payload["refId"],
675
+ "message": error_payload.get("message"),
676
+ "ref_id": error_payload.get("refId"),
654
677
  "recommendation": recommendation,
655
678
  "should_retry": should_retry,
656
679
  }
@@ -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.4.0'
4
- __version_tuple__ = version_tuple = (3, 4, 0)
3
+ __version__ = version = '3.5.2'
4
+ __version_tuple__ = version_tuple = (3, 5, 2)
@@ -1,6 +1,6 @@
1
- Metadata-Version: 2.4
1
+ Metadata-Version: 2.1
2
2
  Name: smartsheet-python-sdk
3
- Version: 3.4.0
3
+ Version: 3.5.2
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,34 +20,10 @@ 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
- License-File: LICENSE.md
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
23
  Provides-Extra: test
31
- Requires-Dist: coverage; extra == "test"
32
- Requires-Dist: coveralls; extra == "test"
33
- Requires-Dist: pytest; extra == "test"
34
24
  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
25
+ License-File: LICENSE.md
26
+ License-File: NOTICE
51
27
 
52
28
  # Smartsheet Python SDK
53
29
 
@@ -22,7 +22,6 @@ 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
26
25
  smartsheet/attachments.py
27
26
  smartsheet/cells.py
28
27
  smartsheet/contacts.py
@@ -40,6 +39,7 @@ smartsheet/reports.py
40
39
  smartsheet/search.py
41
40
  smartsheet/server.py
42
41
  smartsheet/session.py
42
+ smartsheet/sharing.py
43
43
  smartsheet/sheets.py
44
44
  smartsheet/sights.py
45
45
  smartsheet/smartsheet.py
@@ -55,6 +55,7 @@ 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_shares_paginated_result.py
58
59
  smartsheet/models/attachment.py
59
60
  smartsheet/models/auto_number_format.py
60
61
  smartsheet/models/automation_action.py
@@ -213,6 +214,7 @@ smartsheet_python_sdk.egg-info/SOURCES.txt
213
214
  smartsheet_python_sdk.egg-info/dependency_links.txt
214
215
  smartsheet_python_sdk.egg-info/requires.txt
215
216
  smartsheet_python_sdk.egg-info/top_level.txt
217
+ tests/__init__.py
216
218
  tests/integration/README.md
217
219
  tests/integration/conftest.py
218
220
  tests/integration/test_attachments.py
@@ -248,11 +250,13 @@ tests/integration/fixtures/moe-curly.jpg
248
250
  tests/integration/fixtures/quote.txt
249
251
  tests/integration/fixtures/stooges_v1.jpg
250
252
  tests/integration/fixtures/stooges_v2.jpg
253
+ tests/mock_api/__init__.py
251
254
  tests/mock_api/mock_api_test_helper.py
252
255
  tests/mock_api/test_mock_api_automation_rules.py
253
256
  tests/mock_api/test_mock_api_columns.py
254
257
  tests/mock_api/test_mock_api_folders.py
255
258
  tests/mock_api/test_mock_api_rows.py
259
+ tests/mock_api/test_mock_api_sharing.py
256
260
  tests/mock_api/test_mock_api_sheets.py
257
261
  tests/mock_api/test_mock_api_sights.py
258
262
  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):