smartsheet-python-sdk 3.5.4__tar.gz → 3.5.6__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 (281) hide show
  1. {smartsheet_python_sdk-3.5.4 → smartsheet_python_sdk-3.5.6}/.github/pull_request_template.md +1 -0
  2. {smartsheet_python_sdk-3.5.4 → smartsheet_python_sdk-3.5.6}/.github/workflows/publish-distribution.yaml +7 -4
  3. {smartsheet_python_sdk-3.5.4 → smartsheet_python_sdk-3.5.6}/.github/workflows/publish-documentation.yaml +6 -3
  4. {smartsheet_python_sdk-3.5.4 → smartsheet_python_sdk-3.5.6}/.github/workflows/test-build.yaml +22 -24
  5. {smartsheet_python_sdk-3.5.4 → smartsheet_python_sdk-3.5.6}/.gitignore +1 -2
  6. {smartsheet_python_sdk-3.5.4 → smartsheet_python_sdk-3.5.6}/ADVANCED.md +87 -13
  7. {smartsheet_python_sdk-3.5.4 → smartsheet_python_sdk-3.5.6}/CHANGELOG.md +33 -0
  8. {smartsheet_python_sdk-3.5.4 → smartsheet_python_sdk-3.5.6}/CONTRIBUTING.md +21 -0
  9. {smartsheet_python_sdk-3.5.4 → smartsheet_python_sdk-3.5.6}/PKG-INFO +21 -19
  10. smartsheet_python_sdk-3.5.6/docs-source/index.rst +141 -0
  11. smartsheet_python_sdk-3.5.6/docs-source/smartsheet_api.rst +186 -0
  12. smartsheet_python_sdk-3.5.6/docs-source/smartsheet_enums.rst +290 -0
  13. smartsheet_python_sdk-3.5.6/docs-source/smartsheet_exceptions.rst +7 -0
  14. smartsheet_python_sdk-3.5.6/docs-source/smartsheet_models.rst +978 -0
  15. smartsheet_python_sdk-3.5.6/docs-source/smartsheet_types.rst +7 -0
  16. smartsheet_python_sdk-3.5.6/pyproject.toml +127 -0
  17. smartsheet_python_sdk-3.5.6/setup.cfg +4 -0
  18. {smartsheet_python_sdk-3.5.4 → smartsheet_python_sdk-3.5.6}/smartsheet/__init__.py +2 -2
  19. {smartsheet_python_sdk-3.5.4 → smartsheet_python_sdk-3.5.6}/smartsheet/attachments.py +1 -1
  20. {smartsheet_python_sdk-3.5.4 → smartsheet_python_sdk-3.5.6}/smartsheet/cells.py +1 -1
  21. {smartsheet_python_sdk-3.5.4 → smartsheet_python_sdk-3.5.6}/smartsheet/contacts.py +1 -1
  22. {smartsheet_python_sdk-3.5.4 → smartsheet_python_sdk-3.5.6}/smartsheet/discussions.py +1 -1
  23. {smartsheet_python_sdk-3.5.4 → smartsheet_python_sdk-3.5.6}/smartsheet/events.py +1 -1
  24. {smartsheet_python_sdk-3.5.4 → smartsheet_python_sdk-3.5.6}/smartsheet/favorites.py +1 -1
  25. {smartsheet_python_sdk-3.5.4 → smartsheet_python_sdk-3.5.6}/smartsheet/folders.py +1 -1
  26. {smartsheet_python_sdk-3.5.4 → smartsheet_python_sdk-3.5.6}/smartsheet/groups.py +1 -1
  27. {smartsheet_python_sdk-3.5.4 → smartsheet_python_sdk-3.5.6}/smartsheet/home.py +1 -1
  28. {smartsheet_python_sdk-3.5.4 → smartsheet_python_sdk-3.5.6}/smartsheet/images.py +1 -1
  29. {smartsheet_python_sdk-3.5.4 → smartsheet_python_sdk-3.5.6}/smartsheet/models/asset_share.py +28 -1
  30. {smartsheet_python_sdk-3.5.4 → smartsheet_python_sdk-3.5.6}/smartsheet/models/enums/__init__.py +1 -1
  31. {smartsheet_python_sdk-3.5.4 → smartsheet_python_sdk-3.5.6}/smartsheet/passthrough.py +1 -1
  32. {smartsheet_python_sdk-3.5.4 → smartsheet_python_sdk-3.5.6}/smartsheet/reports.py +1 -1
  33. {smartsheet_python_sdk-3.5.4 → smartsheet_python_sdk-3.5.6}/smartsheet/search.py +1 -1
  34. {smartsheet_python_sdk-3.5.4 → smartsheet_python_sdk-3.5.6}/smartsheet/server.py +1 -1
  35. {smartsheet_python_sdk-3.5.4 → smartsheet_python_sdk-3.5.6}/smartsheet/sharing.py +1 -1
  36. {smartsheet_python_sdk-3.5.4 → smartsheet_python_sdk-3.5.6}/smartsheet/sheets.py +1 -1
  37. {smartsheet_python_sdk-3.5.4 → smartsheet_python_sdk-3.5.6}/smartsheet/sights.py +1 -1
  38. {smartsheet_python_sdk-3.5.4 → smartsheet_python_sdk-3.5.6}/smartsheet/smartsheet.py +58 -26
  39. {smartsheet_python_sdk-3.5.4 → smartsheet_python_sdk-3.5.6}/smartsheet/templates.py +1 -1
  40. {smartsheet_python_sdk-3.5.4 → smartsheet_python_sdk-3.5.6}/smartsheet/token.py +1 -1
  41. {smartsheet_python_sdk-3.5.4 → smartsheet_python_sdk-3.5.6}/smartsheet/users.py +1 -1
  42. {smartsheet_python_sdk-3.5.4 → smartsheet_python_sdk-3.5.6}/smartsheet/util.py +26 -3
  43. smartsheet_python_sdk-3.5.6/smartsheet/version.py +34 -0
  44. {smartsheet_python_sdk-3.5.4 → smartsheet_python_sdk-3.5.6}/smartsheet/webhooks.py +1 -1
  45. {smartsheet_python_sdk-3.5.4 → smartsheet_python_sdk-3.5.6}/smartsheet/workspaces.py +4 -3
  46. {smartsheet_python_sdk-3.5.4 → smartsheet_python_sdk-3.5.6}/smartsheet_python_sdk.egg-info/PKG-INFO +21 -19
  47. {smartsheet_python_sdk-3.5.4 → smartsheet_python_sdk-3.5.6}/smartsheet_python_sdk.egg-info/SOURCES.txt +9 -39
  48. {smartsheet_python_sdk-3.5.4 → smartsheet_python_sdk-3.5.6}/smartsheet_python_sdk.egg-info/requires.txt +14 -0
  49. {smartsheet_python_sdk-3.5.4 → smartsheet_python_sdk-3.5.6}/tests/mock_api/test_mock_api_sharing.py +24 -3
  50. {smartsheet_python_sdk-3.5.4 → smartsheet_python_sdk-3.5.6}/tests/mock_api/users/test_list_users.py +1 -1
  51. smartsheet_python_sdk-3.5.6/tests/mock_api/users/test_remove_user_from_plan.py +68 -0
  52. {smartsheet_python_sdk-3.5.4 → smartsheet_python_sdk-3.5.6}/tests/mock_api/users/test_user_upgrade_downgrade.py +19 -0
  53. smartsheet_python_sdk-3.5.6/tests/test_util_serialize_dict.py +362 -0
  54. smartsheet_python_sdk-3.5.4/docs-source/index.rst +0 -52
  55. smartsheet_python_sdk-3.5.4/pylintrc +0 -14
  56. smartsheet_python_sdk-3.5.4/setup.cfg +0 -38
  57. smartsheet_python_sdk-3.5.4/setup.py +0 -89
  58. smartsheet_python_sdk-3.5.4/smartsheet/version.py +0 -4
  59. smartsheet_python_sdk-3.5.4/tests/integration/README.md +0 -37
  60. smartsheet_python_sdk-3.5.4/tests/integration/conftest.py +0 -174
  61. smartsheet_python_sdk-3.5.4/tests/integration/fixtures/calling_all_curs.txt +0 -1
  62. smartsheet_python_sdk-3.5.4/tests/integration/fixtures/curly.jpg +0 -0
  63. smartsheet_python_sdk-3.5.4/tests/integration/fixtures/moe-curly.jpg +0 -0
  64. smartsheet_python_sdk-3.5.4/tests/integration/fixtures/quote.txt +0 -1
  65. smartsheet_python_sdk-3.5.4/tests/integration/fixtures/stooges_v1.jpg +0 -0
  66. smartsheet_python_sdk-3.5.4/tests/integration/fixtures/stooges_v2.jpg +0 -0
  67. smartsheet_python_sdk-3.5.4/tests/integration/test_attachments.py +0 -99
  68. smartsheet_python_sdk-3.5.4/tests/integration/test_columns.py +0 -91
  69. smartsheet_python_sdk-3.5.4/tests/integration/test_contacts.py +0 -27
  70. smartsheet_python_sdk-3.5.4/tests/integration/test_cross_sheet_references.py +0 -30
  71. smartsheet_python_sdk-3.5.4/tests/integration/test_discussions.py +0 -195
  72. smartsheet_python_sdk-3.5.4/tests/integration/test_events.py +0 -56
  73. smartsheet_python_sdk-3.5.4/tests/integration/test_favorites.py +0 -33
  74. smartsheet_python_sdk-3.5.4/tests/integration/test_folders.py +0 -130
  75. smartsheet_python_sdk-3.5.4/tests/integration/test_groups.py +0 -92
  76. smartsheet_python_sdk-3.5.4/tests/integration/test_home.py +0 -99
  77. smartsheet_python_sdk-3.5.4/tests/integration/test_model_attributes.py +0 -2848
  78. smartsheet_python_sdk-3.5.4/tests/integration/test_multi_picklist.py +0 -66
  79. smartsheet_python_sdk-3.5.4/tests/integration/test_object_value.py +0 -126
  80. smartsheet_python_sdk-3.5.4/tests/integration/test_passthrough.py +0 -37
  81. smartsheet_python_sdk-3.5.4/tests/integration/test_regression.py +0 -240
  82. smartsheet_python_sdk-3.5.4/tests/integration/test_reports.py +0 -134
  83. smartsheet_python_sdk-3.5.4/tests/integration/test_rows.py +0 -196
  84. smartsheet_python_sdk-3.5.4/tests/integration/test_server_info.py +0 -10
  85. smartsheet_python_sdk-3.5.4/tests/integration/test_sharing.py +0 -83
  86. smartsheet_python_sdk-3.5.4/tests/integration/test_sheet_summary.py +0 -64
  87. smartsheet_python_sdk-3.5.4/tests/integration/test_sheets.py +0 -384
  88. smartsheet_python_sdk-3.5.4/tests/integration/test_templates.py +0 -21
  89. smartsheet_python_sdk-3.5.4/tests/integration/test_update_requests.py +0 -61
  90. smartsheet_python_sdk-3.5.4/tests/integration/test_users.py +0 -134
  91. smartsheet_python_sdk-3.5.4/tests/integration/test_webhooks.py +0 -50
  92. smartsheet_python_sdk-3.5.4/tests/integration/test_workspaces.py +0 -271
  93. smartsheet_python_sdk-3.5.4/tests/integration/test_zsearch.py +0 -30
  94. {smartsheet_python_sdk-3.5.4 → smartsheet_python_sdk-3.5.6}/.gitchangelog.rc +0 -0
  95. {smartsheet_python_sdk-3.5.4 → smartsheet_python_sdk-3.5.6}/.gitchangelog.tpl +0 -0
  96. {smartsheet_python_sdk-3.5.4 → smartsheet_python_sdk-3.5.6}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
  97. {smartsheet_python_sdk-3.5.4 → smartsheet_python_sdk-3.5.6}/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
  98. {smartsheet_python_sdk-3.5.4 → smartsheet_python_sdk-3.5.6}/.markdownlint.json +0 -0
  99. {smartsheet_python_sdk-3.5.4 → smartsheet_python_sdk-3.5.6}/LICENSE.md +0 -0
  100. {smartsheet_python_sdk-3.5.4 → smartsheet_python_sdk-3.5.6}/Makefile +0 -0
  101. {smartsheet_python_sdk-3.5.4 → smartsheet_python_sdk-3.5.6}/NOTICE +0 -0
  102. {smartsheet_python_sdk-3.5.4 → smartsheet_python_sdk-3.5.6}/README.md +0 -0
  103. {smartsheet_python_sdk-3.5.4 → smartsheet_python_sdk-3.5.6}/docs-source/Makefile +0 -0
  104. {smartsheet_python_sdk-3.5.4 → smartsheet_python_sdk-3.5.6}/docs-source/conf.py +0 -0
  105. {smartsheet_python_sdk-3.5.4 → smartsheet_python_sdk-3.5.6}/smartsheet/exceptions.py +0 -0
  106. {smartsheet_python_sdk-3.5.4 → smartsheet_python_sdk-3.5.6}/smartsheet/models/__init__.py +0 -0
  107. {smartsheet_python_sdk-3.5.4 → smartsheet_python_sdk-3.5.6}/smartsheet/models/access_token.py +0 -0
  108. {smartsheet_python_sdk-3.5.4 → smartsheet_python_sdk-3.5.6}/smartsheet/models/account.py +0 -0
  109. {smartsheet_python_sdk-3.5.4 → smartsheet_python_sdk-3.5.6}/smartsheet/models/alternate_email.py +0 -0
  110. {smartsheet_python_sdk-3.5.4 → smartsheet_python_sdk-3.5.6}/smartsheet/models/asset_shares_paginated_result.py +0 -0
  111. {smartsheet_python_sdk-3.5.4 → smartsheet_python_sdk-3.5.6}/smartsheet/models/attachment.py +0 -0
  112. {smartsheet_python_sdk-3.5.4 → smartsheet_python_sdk-3.5.6}/smartsheet/models/auto_number_format.py +0 -0
  113. {smartsheet_python_sdk-3.5.4 → smartsheet_python_sdk-3.5.6}/smartsheet/models/automation_action.py +0 -0
  114. {smartsheet_python_sdk-3.5.4 → smartsheet_python_sdk-3.5.6}/smartsheet/models/automation_rule.py +0 -0
  115. {smartsheet_python_sdk-3.5.4 → smartsheet_python_sdk-3.5.6}/smartsheet/models/boolean_object_value.py +0 -0
  116. {smartsheet_python_sdk-3.5.4 → smartsheet_python_sdk-3.5.6}/smartsheet/models/bulk_item_failure.py +0 -0
  117. {smartsheet_python_sdk-3.5.4 → smartsheet_python_sdk-3.5.6}/smartsheet/models/bulk_item_result.py +0 -0
  118. {smartsheet_python_sdk-3.5.4 → smartsheet_python_sdk-3.5.6}/smartsheet/models/cell.py +0 -0
  119. {smartsheet_python_sdk-3.5.4 → smartsheet_python_sdk-3.5.6}/smartsheet/models/cell_data_item.py +0 -0
  120. {smartsheet_python_sdk-3.5.4 → smartsheet_python_sdk-3.5.6}/smartsheet/models/cell_history.py +0 -0
  121. {smartsheet_python_sdk-3.5.4 → smartsheet_python_sdk-3.5.6}/smartsheet/models/cell_link.py +0 -0
  122. {smartsheet_python_sdk-3.5.4 → smartsheet_python_sdk-3.5.6}/smartsheet/models/cell_link_widget_content.py +0 -0
  123. {smartsheet_python_sdk-3.5.4 → smartsheet_python_sdk-3.5.6}/smartsheet/models/chart_widget_content.py +0 -0
  124. {smartsheet_python_sdk-3.5.4 → smartsheet_python_sdk-3.5.6}/smartsheet/models/column.py +0 -0
  125. {smartsheet_python_sdk-3.5.4 → smartsheet_python_sdk-3.5.6}/smartsheet/models/comment.py +0 -0
  126. {smartsheet_python_sdk-3.5.4 → smartsheet_python_sdk-3.5.6}/smartsheet/models/contact.py +0 -0
  127. {smartsheet_python_sdk-3.5.4 → smartsheet_python_sdk-3.5.6}/smartsheet/models/contact_object_value.py +0 -0
  128. {smartsheet_python_sdk-3.5.4 → smartsheet_python_sdk-3.5.6}/smartsheet/models/container_destination.py +0 -0
  129. {smartsheet_python_sdk-3.5.4 → smartsheet_python_sdk-3.5.6}/smartsheet/models/copy_or_move_row_destination.py +0 -0
  130. {smartsheet_python_sdk-3.5.4 → smartsheet_python_sdk-3.5.6}/smartsheet/models/copy_or_move_row_directive.py +0 -0
  131. {smartsheet_python_sdk-3.5.4 → smartsheet_python_sdk-3.5.6}/smartsheet/models/copy_or_move_row_result.py +0 -0
  132. {smartsheet_python_sdk-3.5.4 → smartsheet_python_sdk-3.5.6}/smartsheet/models/criteria.py +0 -0
  133. {smartsheet_python_sdk-3.5.4 → smartsheet_python_sdk-3.5.6}/smartsheet/models/cross_sheet_reference.py +0 -0
  134. {smartsheet_python_sdk-3.5.4 → smartsheet_python_sdk-3.5.6}/smartsheet/models/currency.py +0 -0
  135. {smartsheet_python_sdk-3.5.4 → smartsheet_python_sdk-3.5.6}/smartsheet/models/date_object_value.py +0 -0
  136. {smartsheet_python_sdk-3.5.4 → smartsheet_python_sdk-3.5.6}/smartsheet/models/datetime_object_value.py +0 -0
  137. {smartsheet_python_sdk-3.5.4 → smartsheet_python_sdk-3.5.6}/smartsheet/models/discussion.py +0 -0
  138. {smartsheet_python_sdk-3.5.4 → smartsheet_python_sdk-3.5.6}/smartsheet/models/downloaded_file.py +0 -0
  139. {smartsheet_python_sdk-3.5.4 → smartsheet_python_sdk-3.5.6}/smartsheet/models/duration.py +0 -0
  140. {smartsheet_python_sdk-3.5.4 → smartsheet_python_sdk-3.5.6}/smartsheet/models/email.py +0 -0
  141. {smartsheet_python_sdk-3.5.4 → smartsheet_python_sdk-3.5.6}/smartsheet/models/enums/access_level.py +0 -0
  142. {smartsheet_python_sdk-3.5.4 → smartsheet_python_sdk-3.5.6}/smartsheet/models/enums/asset_type.py +0 -0
  143. {smartsheet_python_sdk-3.5.4 → smartsheet_python_sdk-3.5.6}/smartsheet/models/enums/attachment_parent_type.py +0 -0
  144. {smartsheet_python_sdk-3.5.4 → smartsheet_python_sdk-3.5.6}/smartsheet/models/enums/attachment_sub_type.py +0 -0
  145. {smartsheet_python_sdk-3.5.4 → smartsheet_python_sdk-3.5.6}/smartsheet/models/enums/attachment_type.py +0 -0
  146. {smartsheet_python_sdk-3.5.4 → smartsheet_python_sdk-3.5.6}/smartsheet/models/enums/automation_action_frequency.py +0 -0
  147. {smartsheet_python_sdk-3.5.4 → smartsheet_python_sdk-3.5.6}/smartsheet/models/enums/automation_action_type.py +0 -0
  148. {smartsheet_python_sdk-3.5.4 → smartsheet_python_sdk-3.5.6}/smartsheet/models/enums/automation_rule_disabled_reason.py +0 -0
  149. {smartsheet_python_sdk-3.5.4 → smartsheet_python_sdk-3.5.6}/smartsheet/models/enums/cell_link_status.py +0 -0
  150. {smartsheet_python_sdk-3.5.4 → smartsheet_python_sdk-3.5.6}/smartsheet/models/enums/column_type.py +0 -0
  151. {smartsheet_python_sdk-3.5.4 → smartsheet_python_sdk-3.5.6}/smartsheet/models/enums/criteria_target.py +0 -0
  152. {smartsheet_python_sdk-3.5.4 → smartsheet_python_sdk-3.5.6}/smartsheet/models/enums/cross_sheet_reference_status.py +0 -0
  153. {smartsheet_python_sdk-3.5.4 → smartsheet_python_sdk-3.5.6}/smartsheet/models/enums/currency_code.py +0 -0
  154. {smartsheet_python_sdk-3.5.4 → smartsheet_python_sdk-3.5.6}/smartsheet/models/enums/day_descriptors.py +0 -0
  155. {smartsheet_python_sdk-3.5.4 → smartsheet_python_sdk-3.5.6}/smartsheet/models/enums/day_ordinal.py +0 -0
  156. {smartsheet_python_sdk-3.5.4 → smartsheet_python_sdk-3.5.6}/smartsheet/models/enums/event_action.py +0 -0
  157. /smartsheet_python_sdk-3.5.4/smartsheet/models/enums/event_obejct_type.py → /smartsheet_python_sdk-3.5.6/smartsheet/models/enums/event_object_type.py +0 -0
  158. {smartsheet_python_sdk-3.5.4 → smartsheet_python_sdk-3.5.6}/smartsheet/models/enums/event_source.py +0 -0
  159. {smartsheet_python_sdk-3.5.4 → smartsheet_python_sdk-3.5.6}/smartsheet/models/enums/global_template.py +0 -0
  160. {smartsheet_python_sdk-3.5.4 → smartsheet_python_sdk-3.5.6}/smartsheet/models/enums/operator.py +0 -0
  161. {smartsheet_python_sdk-3.5.4 → smartsheet_python_sdk-3.5.6}/smartsheet/models/enums/paper_type.py +0 -0
  162. {smartsheet_python_sdk-3.5.4 → smartsheet_python_sdk-3.5.6}/smartsheet/models/enums/predecessor_type.py +0 -0
  163. {smartsheet_python_sdk-3.5.4 → smartsheet_python_sdk-3.5.6}/smartsheet/models/enums/publish_accessible_by.py +0 -0
  164. {smartsheet_python_sdk-3.5.4 → smartsheet_python_sdk-3.5.6}/smartsheet/models/enums/schedule_type.py +0 -0
  165. {smartsheet_python_sdk-3.5.4 → smartsheet_python_sdk-3.5.6}/smartsheet/models/enums/seat_type.py +0 -0
  166. {smartsheet_python_sdk-3.5.4 → smartsheet_python_sdk-3.5.6}/smartsheet/models/enums/share_scope.py +0 -0
  167. {smartsheet_python_sdk-3.5.4 → smartsheet_python_sdk-3.5.6}/smartsheet/models/enums/share_type.py +0 -0
  168. {smartsheet_python_sdk-3.5.4 → smartsheet_python_sdk-3.5.6}/smartsheet/models/enums/sheet_email_format.py +0 -0
  169. {smartsheet_python_sdk-3.5.4 → smartsheet_python_sdk-3.5.6}/smartsheet/models/enums/sheet_filter_operator.py +0 -0
  170. {smartsheet_python_sdk-3.5.4 → smartsheet_python_sdk-3.5.6}/smartsheet/models/enums/sheet_filter_type.py +0 -0
  171. {smartsheet_python_sdk-3.5.4 → smartsheet_python_sdk-3.5.6}/smartsheet/models/enums/sort_direction.py +0 -0
  172. {smartsheet_python_sdk-3.5.4 → smartsheet_python_sdk-3.5.6}/smartsheet/models/enums/symbol.py +0 -0
  173. {smartsheet_python_sdk-3.5.4 → smartsheet_python_sdk-3.5.6}/smartsheet/models/enums/system_column_type.py +0 -0
  174. {smartsheet_python_sdk-3.5.4 → smartsheet_python_sdk-3.5.6}/smartsheet/models/enums/update_request_status.py +0 -0
  175. {smartsheet_python_sdk-3.5.4 → smartsheet_python_sdk-3.5.6}/smartsheet/models/enums/user_status.py +0 -0
  176. {smartsheet_python_sdk-3.5.4 → smartsheet_python_sdk-3.5.6}/smartsheet/models/enums/widget_type.py +0 -0
  177. {smartsheet_python_sdk-3.5.4 → smartsheet_python_sdk-3.5.6}/smartsheet/models/error.py +0 -0
  178. {smartsheet_python_sdk-3.5.4 → smartsheet_python_sdk-3.5.6}/smartsheet/models/error_result.py +0 -0
  179. {smartsheet_python_sdk-3.5.4 → smartsheet_python_sdk-3.5.6}/smartsheet/models/event.py +0 -0
  180. {smartsheet_python_sdk-3.5.4 → smartsheet_python_sdk-3.5.6}/smartsheet/models/event_result.py +0 -0
  181. {smartsheet_python_sdk-3.5.4 → smartsheet_python_sdk-3.5.6}/smartsheet/models/explicit_null.py +0 -0
  182. {smartsheet_python_sdk-3.5.4 → smartsheet_python_sdk-3.5.6}/smartsheet/models/favorite.py +0 -0
  183. {smartsheet_python_sdk-3.5.4 → smartsheet_python_sdk-3.5.6}/smartsheet/models/folder.py +0 -0
  184. {smartsheet_python_sdk-3.5.4 → smartsheet_python_sdk-3.5.6}/smartsheet/models/font_family.py +0 -0
  185. {smartsheet_python_sdk-3.5.4 → smartsheet_python_sdk-3.5.6}/smartsheet/models/format_details.py +0 -0
  186. {smartsheet_python_sdk-3.5.4 → smartsheet_python_sdk-3.5.6}/smartsheet/models/format_tables.py +0 -0
  187. {smartsheet_python_sdk-3.5.4 → smartsheet_python_sdk-3.5.6}/smartsheet/models/group.py +0 -0
  188. {smartsheet_python_sdk-3.5.4 → smartsheet_python_sdk-3.5.6}/smartsheet/models/group_member.py +0 -0
  189. {smartsheet_python_sdk-3.5.4 → smartsheet_python_sdk-3.5.6}/smartsheet/models/home.py +0 -0
  190. {smartsheet_python_sdk-3.5.4 → smartsheet_python_sdk-3.5.6}/smartsheet/models/hyperlink.py +0 -0
  191. {smartsheet_python_sdk-3.5.4 → smartsheet_python_sdk-3.5.6}/smartsheet/models/image.py +0 -0
  192. {smartsheet_python_sdk-3.5.4 → smartsheet_python_sdk-3.5.6}/smartsheet/models/image_url.py +0 -0
  193. {smartsheet_python_sdk-3.5.4 → smartsheet_python_sdk-3.5.6}/smartsheet/models/image_url_map.py +0 -0
  194. {smartsheet_python_sdk-3.5.4 → smartsheet_python_sdk-3.5.6}/smartsheet/models/image_widget_content.py +0 -0
  195. {smartsheet_python_sdk-3.5.4 → smartsheet_python_sdk-3.5.6}/smartsheet/models/index_result.py +0 -0
  196. {smartsheet_python_sdk-3.5.4 → smartsheet_python_sdk-3.5.6}/smartsheet/models/json_object.py +0 -0
  197. {smartsheet_python_sdk-3.5.4 → smartsheet_python_sdk-3.5.6}/smartsheet/models/multi_contact_object_value.py +0 -0
  198. {smartsheet_python_sdk-3.5.4 → smartsheet_python_sdk-3.5.6}/smartsheet/models/multi_picklist_object_value.py +0 -0
  199. {smartsheet_python_sdk-3.5.4 → smartsheet_python_sdk-3.5.6}/smartsheet/models/multi_row_email.py +0 -0
  200. {smartsheet_python_sdk-3.5.4 → smartsheet_python_sdk-3.5.6}/smartsheet/models/number_object_value.py +0 -0
  201. {smartsheet_python_sdk-3.5.4 → smartsheet_python_sdk-3.5.6}/smartsheet/models/o_auth_error.py +0 -0
  202. {smartsheet_python_sdk-3.5.4 → smartsheet_python_sdk-3.5.6}/smartsheet/models/object_value.py +0 -0
  203. {smartsheet_python_sdk-3.5.4 → smartsheet_python_sdk-3.5.6}/smartsheet/models/paginated_children_result.py +0 -0
  204. {smartsheet_python_sdk-3.5.4 → smartsheet_python_sdk-3.5.6}/smartsheet/models/predecessor.py +0 -0
  205. {smartsheet_python_sdk-3.5.4 → smartsheet_python_sdk-3.5.6}/smartsheet/models/predecessor_list.py +0 -0
  206. {smartsheet_python_sdk-3.5.4 → smartsheet_python_sdk-3.5.6}/smartsheet/models/primitive_object_value.py +0 -0
  207. {smartsheet_python_sdk-3.5.4 → smartsheet_python_sdk-3.5.6}/smartsheet/models/profile_image.py +0 -0
  208. {smartsheet_python_sdk-3.5.4 → smartsheet_python_sdk-3.5.6}/smartsheet/models/project_settings.py +0 -0
  209. {smartsheet_python_sdk-3.5.4 → smartsheet_python_sdk-3.5.6}/smartsheet/models/recipient.py +0 -0
  210. {smartsheet_python_sdk-3.5.4 → smartsheet_python_sdk-3.5.6}/smartsheet/models/report.py +0 -0
  211. {smartsheet_python_sdk-3.5.4 → smartsheet_python_sdk-3.5.6}/smartsheet/models/report_cell.py +0 -0
  212. {smartsheet_python_sdk-3.5.4 → smartsheet_python_sdk-3.5.6}/smartsheet/models/report_column.py +0 -0
  213. {smartsheet_python_sdk-3.5.4 → smartsheet_python_sdk-3.5.6}/smartsheet/models/report_publish.py +0 -0
  214. {smartsheet_python_sdk-3.5.4 → smartsheet_python_sdk-3.5.6}/smartsheet/models/report_row.py +0 -0
  215. {smartsheet_python_sdk-3.5.4 → smartsheet_python_sdk-3.5.6}/smartsheet/models/report_widget_content.py +0 -0
  216. {smartsheet_python_sdk-3.5.4 → smartsheet_python_sdk-3.5.6}/smartsheet/models/result.py +0 -0
  217. {smartsheet_python_sdk-3.5.4 → smartsheet_python_sdk-3.5.6}/smartsheet/models/row.py +0 -0
  218. {smartsheet_python_sdk-3.5.4 → smartsheet_python_sdk-3.5.6}/smartsheet/models/row_email.py +0 -0
  219. {smartsheet_python_sdk-3.5.4 → smartsheet_python_sdk-3.5.6}/smartsheet/models/row_mapping.py +0 -0
  220. {smartsheet_python_sdk-3.5.4 → smartsheet_python_sdk-3.5.6}/smartsheet/models/schedule.py +0 -0
  221. {smartsheet_python_sdk-3.5.4 → smartsheet_python_sdk-3.5.6}/smartsheet/models/scope.py +0 -0
  222. {smartsheet_python_sdk-3.5.4 → smartsheet_python_sdk-3.5.6}/smartsheet/models/search_result.py +0 -0
  223. {smartsheet_python_sdk-3.5.4 → smartsheet_python_sdk-3.5.6}/smartsheet/models/search_result_item.py +0 -0
  224. {smartsheet_python_sdk-3.5.4 → smartsheet_python_sdk-3.5.6}/smartsheet/models/selection_range.py +0 -0
  225. {smartsheet_python_sdk-3.5.4 → smartsheet_python_sdk-3.5.6}/smartsheet/models/sent_update_request.py +0 -0
  226. {smartsheet_python_sdk-3.5.4 → smartsheet_python_sdk-3.5.6}/smartsheet/models/server_info.py +0 -0
  227. {smartsheet_python_sdk-3.5.4 → smartsheet_python_sdk-3.5.6}/smartsheet/models/share.py +0 -0
  228. {smartsheet_python_sdk-3.5.4 → smartsheet_python_sdk-3.5.6}/smartsheet/models/sheet.py +0 -0
  229. {smartsheet_python_sdk-3.5.4 → smartsheet_python_sdk-3.5.6}/smartsheet/models/sheet_email.py +0 -0
  230. {smartsheet_python_sdk-3.5.4 → smartsheet_python_sdk-3.5.6}/smartsheet/models/sheet_filter.py +0 -0
  231. {smartsheet_python_sdk-3.5.4 → smartsheet_python_sdk-3.5.6}/smartsheet/models/sheet_filter_details.py +0 -0
  232. {smartsheet_python_sdk-3.5.4 → smartsheet_python_sdk-3.5.6}/smartsheet/models/sheet_publish.py +0 -0
  233. {smartsheet_python_sdk-3.5.4 → smartsheet_python_sdk-3.5.6}/smartsheet/models/sheet_summary.py +0 -0
  234. {smartsheet_python_sdk-3.5.4 → smartsheet_python_sdk-3.5.6}/smartsheet/models/sheet_user_permissions.py +0 -0
  235. {smartsheet_python_sdk-3.5.4 → smartsheet_python_sdk-3.5.6}/smartsheet/models/sheet_user_settings.py +0 -0
  236. {smartsheet_python_sdk-3.5.4 → smartsheet_python_sdk-3.5.6}/smartsheet/models/shortcut_data_item.py +0 -0
  237. {smartsheet_python_sdk-3.5.4 → smartsheet_python_sdk-3.5.6}/smartsheet/models/shortcut_widget_content.py +0 -0
  238. {smartsheet_python_sdk-3.5.4 → smartsheet_python_sdk-3.5.6}/smartsheet/models/sight.py +0 -0
  239. {smartsheet_python_sdk-3.5.4 → smartsheet_python_sdk-3.5.6}/smartsheet/models/sight_publish.py +0 -0
  240. {smartsheet_python_sdk-3.5.4 → smartsheet_python_sdk-3.5.6}/smartsheet/models/sort_criterion.py +0 -0
  241. {smartsheet_python_sdk-3.5.4 → smartsheet_python_sdk-3.5.6}/smartsheet/models/sort_specifier.py +0 -0
  242. {smartsheet_python_sdk-3.5.4 → smartsheet_python_sdk-3.5.6}/smartsheet/models/source.py +0 -0
  243. {smartsheet_python_sdk-3.5.4 → smartsheet_python_sdk-3.5.6}/smartsheet/models/string_object_value.py +0 -0
  244. {smartsheet_python_sdk-3.5.4 → smartsheet_python_sdk-3.5.6}/smartsheet/models/summary_field.py +0 -0
  245. {smartsheet_python_sdk-3.5.4 → smartsheet_python_sdk-3.5.6}/smartsheet/models/template.py +0 -0
  246. {smartsheet_python_sdk-3.5.4 → smartsheet_python_sdk-3.5.6}/smartsheet/models/title_rich_text_widget_content.py +0 -0
  247. {smartsheet_python_sdk-3.5.4 → smartsheet_python_sdk-3.5.6}/smartsheet/models/token_paginated_result.py +0 -0
  248. {smartsheet_python_sdk-3.5.4 → smartsheet_python_sdk-3.5.6}/smartsheet/models/update_request.py +0 -0
  249. {smartsheet_python_sdk-3.5.4 → smartsheet_python_sdk-3.5.6}/smartsheet/models/user.py +0 -0
  250. {smartsheet_python_sdk-3.5.4 → smartsheet_python_sdk-3.5.6}/smartsheet/models/user_model.py +0 -0
  251. {smartsheet_python_sdk-3.5.4 → smartsheet_python_sdk-3.5.6}/smartsheet/models/user_plan.py +0 -0
  252. {smartsheet_python_sdk-3.5.4 → smartsheet_python_sdk-3.5.6}/smartsheet/models/user_profile.py +0 -0
  253. {smartsheet_python_sdk-3.5.4 → smartsheet_python_sdk-3.5.6}/smartsheet/models/version.py +0 -0
  254. {smartsheet_python_sdk-3.5.4 → smartsheet_python_sdk-3.5.6}/smartsheet/models/web_content_widget_content.py +0 -0
  255. {smartsheet_python_sdk-3.5.4 → smartsheet_python_sdk-3.5.6}/smartsheet/models/webhook.py +0 -0
  256. {smartsheet_python_sdk-3.5.4 → smartsheet_python_sdk-3.5.6}/smartsheet/models/webhook_secret.py +0 -0
  257. {smartsheet_python_sdk-3.5.4 → smartsheet_python_sdk-3.5.6}/smartsheet/models/webhook_stats.py +0 -0
  258. {smartsheet_python_sdk-3.5.4 → smartsheet_python_sdk-3.5.6}/smartsheet/models/webhook_subscope.py +0 -0
  259. {smartsheet_python_sdk-3.5.4 → smartsheet_python_sdk-3.5.6}/smartsheet/models/widget.py +0 -0
  260. {smartsheet_python_sdk-3.5.4 → smartsheet_python_sdk-3.5.6}/smartsheet/models/widget_content.py +0 -0
  261. {smartsheet_python_sdk-3.5.4 → smartsheet_python_sdk-3.5.6}/smartsheet/models/widget_hyperlink.py +0 -0
  262. {smartsheet_python_sdk-3.5.4 → smartsheet_python_sdk-3.5.6}/smartsheet/models/workspace.py +0 -0
  263. {smartsheet_python_sdk-3.5.4 → smartsheet_python_sdk-3.5.6}/smartsheet/object_value.py +0 -0
  264. {smartsheet_python_sdk-3.5.4 → smartsheet_python_sdk-3.5.6}/smartsheet/session.py +0 -0
  265. {smartsheet_python_sdk-3.5.4 → smartsheet_python_sdk-3.5.6}/smartsheet/types.py +0 -0
  266. {smartsheet_python_sdk-3.5.4 → smartsheet_python_sdk-3.5.6}/smartsheet_python_sdk.egg-info/dependency_links.txt +0 -0
  267. {smartsheet_python_sdk-3.5.4 → smartsheet_python_sdk-3.5.6}/smartsheet_python_sdk.egg-info/top_level.txt +0 -0
  268. {smartsheet_python_sdk-3.5.4 → smartsheet_python_sdk-3.5.6}/tests/__init__.py +0 -0
  269. {smartsheet_python_sdk-3.5.4 → smartsheet_python_sdk-3.5.6}/tests/mock_api/__init__.py +0 -0
  270. {smartsheet_python_sdk-3.5.4 → smartsheet_python_sdk-3.5.6}/tests/mock_api/mock_api_test_helper.py +0 -0
  271. {smartsheet_python_sdk-3.5.4 → smartsheet_python_sdk-3.5.6}/tests/mock_api/test_mock_api_automation_rules.py +0 -0
  272. {smartsheet_python_sdk-3.5.4 → smartsheet_python_sdk-3.5.6}/tests/mock_api/test_mock_api_columns.py +0 -0
  273. {smartsheet_python_sdk-3.5.4 → smartsheet_python_sdk-3.5.6}/tests/mock_api/test_mock_api_folders.py +0 -0
  274. {smartsheet_python_sdk-3.5.4 → smartsheet_python_sdk-3.5.6}/tests/mock_api/test_mock_api_rows.py +0 -0
  275. {smartsheet_python_sdk-3.5.4 → smartsheet_python_sdk-3.5.6}/tests/mock_api/test_mock_api_sheets.py +0 -0
  276. {smartsheet_python_sdk-3.5.4 → smartsheet_python_sdk-3.5.6}/tests/mock_api/test_mock_api_sights.py +0 -0
  277. {smartsheet_python_sdk-3.5.4 → smartsheet_python_sdk-3.5.6}/tests/mock_api/test_mock_api_workspaces.py +0 -0
  278. {smartsheet_python_sdk-3.5.4 → smartsheet_python_sdk-3.5.6}/tests/mock_api/test_mock_change_agent.py +0 -0
  279. {smartsheet_python_sdk-3.5.4 → smartsheet_python_sdk-3.5.6}/tests/mock_api/test_mock_serialization.py +0 -0
  280. {smartsheet_python_sdk-3.5.4 → smartsheet_python_sdk-3.5.6}/tests/mock_api/users/common_test_constants.py +0 -0
  281. {smartsheet_python_sdk-3.5.4 → smartsheet_python_sdk-3.5.6}/tests/mock_api/users/test_list_user_plans.py +0 -0
@@ -35,6 +35,7 @@
35
35
  - [ ] I have performed a self-review of my own code
36
36
  - [ ] I have commented my code, particularly in hard-to-understand areas
37
37
  - [ ] I have made corresponding changes to the documentation
38
+ - [ ] I have updated the relevant files in `docs-source/` (see [Documentation guidelines](../../../CONTRIBUTING.md#documentation))
38
39
  - [ ] My changes generate no new warnings
39
40
  - [ ] I have added tests that prove my fix is effective or that my feature works
40
41
  - [ ] New and existing unit tests pass locally with my changes
@@ -10,16 +10,19 @@ jobs:
10
10
 
11
11
  steps:
12
12
  - uses: actions/checkout@v4
13
- - name: Set up Python 3.10
13
+ - name: Set up Python 3.14
14
14
  uses: actions/setup-python@v4
15
15
  with:
16
- python-version: '3.10'
16
+ python-version: '3.14'
17
17
  - name: Install build packages
18
18
  run: |
19
- pip install enum34 requests six python-dateutil setuptools-scm==7.1.0 gitchangelog mako wheel twine sphinx sphinx_rtd_theme
19
+ pip install build
20
+ - name: Install packaging dependencies
21
+ run: |
22
+ pip install .[packaging]
20
23
  - name: Build distribution
21
24
  run: |
22
- python setup.py sdist bdist_wheel
25
+ python -m build
23
26
  - name: Archive distribution artifacts
24
27
  uses: actions/upload-artifact@v4
25
28
  with:
@@ -10,13 +10,16 @@ jobs:
10
10
 
11
11
  steps:
12
12
  - uses: actions/checkout@v4
13
- - name: Set up Python 3.10
13
+ - name: Set up Python 3.14
14
14
  uses: actions/setup-python@v4
15
15
  with:
16
- python-version: '3.10'
16
+ python-version: '3.14'
17
17
  - name: Install build packages
18
18
  run: |
19
- pip install enum34 requests six python-dateutil setuptools-scm==7.1.0 gitchangelog mako wheel twine sphinx sphinx_rtd_theme
19
+ pip install build
20
+ - name: Install documentation dependencies
21
+ run: |
22
+ pip install .[docs]
20
23
  - name: Generate documentation
21
24
  run: |
22
25
  sphinx-apidoc -o docs-source smartsheet
@@ -10,33 +10,27 @@ jobs:
10
10
  - name: Set up Python
11
11
  uses: actions/setup-python@v4
12
12
  with:
13
- python-version: '3.10'
13
+ python-version: '3.14'
14
14
  - name: Install dependencies
15
15
  run: |
16
- pip install pylint requests six python-dateutil
16
+ pip install build
17
+ - name: Install project and lint dependencies
18
+ run: |
19
+ pip install .[develop]
17
20
  - name: Run Markdown Lint
18
21
  uses: articulate/actions-markdownlint@v1
19
22
  with:
20
23
  ignore: ./LICENSE.md
21
24
  - name: Run Pylint
22
25
  run: |
23
- pylint smartsheet --rcfile pylintrc
26
+ pylint smartsheet
24
27
 
25
- mock-api-test:
28
+ test:
26
29
  needs: lint
27
- runs-on: ${{ matrix.os }}
30
+ runs-on: ubuntu-latest
28
31
  strategy:
29
32
  matrix:
30
- python-version: ["3.7", "3.8", "3.9", "3.10"]
31
- include:
32
- - python-version: "3.7"
33
- os: ubuntu-22.04
34
- - python-version: "3.8"
35
- os: ubuntu-latest
36
- - python-version: "3.9"
37
- os: ubuntu-latest
38
- - python-version: "3.10"
39
- os: ubuntu-latest
33
+ python-version: ["3.10", "3.11", "3.12", "3.13", "3.14"]
40
34
 
41
35
  steps:
42
36
  - uses: actions/checkout@v4
@@ -44,12 +38,13 @@ jobs:
44
38
  uses: actions/setup-python@v4
45
39
  with:
46
40
  python-version: ${{ matrix.python-version }}
47
- os: ${{ matrix.os }}
48
41
  - name: Install Python dependencies
49
42
  run: |
50
43
  python -m pip install --upgrade pip
51
- pip install certifi enum34 requests six python-dateutil coverage coveralls[yaml] pytest pytest-instafail requests-toolbelt setuptools-scm
52
- if [ -f requirements.txt ]; then pip install -r requirements.txt; fi
44
+ pip install build
45
+ - name: Install test dependencies
46
+ run: |
47
+ pip install .[test]
53
48
  - name: Clone smartsheet/smartsheet-sdk-tests PUBLIC repository
54
49
  uses: GuillaumeFalourd/clone-github-repo-action@v2
55
50
  with:
@@ -58,9 +53,9 @@ jobs:
58
53
  - name: Setup Mock API
59
54
  run: |
60
55
  docker compose -f smartsheet-sdk-tests/docker-compose.yml up -d --wait
61
- - name: Run mock API tests
56
+ - name: Run tests
62
57
  run: |
63
- coverage run --source=smartsheet -m pytest tests/mock_api/
58
+ coverage run --source=smartsheet -m pytest
64
59
  coverage lcov
65
60
  - name: Coveralls Parallel
66
61
  uses: coverallsapp/github-action@master
@@ -72,17 +67,17 @@ jobs:
72
67
 
73
68
  build-packages-test:
74
69
  runs-on: ubuntu-latest
75
- needs: [mock-api-test]
70
+ needs: [test]
76
71
  steps:
77
72
  - uses: actions/checkout@v4
78
73
  - name: Set up Python
79
74
  uses: actions/setup-python@v4
80
75
  - name: Install build packages
81
76
  run: |
82
- pip install enum34 requests six python-dateutil setuptools-scm==7.1.0 gitchangelog mako wheel twine
77
+ pip install build
83
78
  - name: Build distribution
84
79
  run: |
85
- python setup.py sdist bdist_wheel
80
+ python -m build
86
81
  - name: Archive distribution artifacts
87
82
  uses: actions/upload-artifact@v4
88
83
  with:
@@ -97,7 +92,10 @@ jobs:
97
92
  - uses: actions/checkout@v4
98
93
  - name: Install documentation tools
99
94
  run: |
100
- pip install sphinx sphinx_rtd_theme setuptools-scm
95
+ pip install build
96
+ - name: Install documentation dependencies
97
+ run: |
98
+ pip install .[docs]
101
99
  - name: Generate API documentation
102
100
  run: sphinx-apidoc -o docs-source smartsheet
103
101
  - name: Generate HTML
@@ -12,8 +12,7 @@ smartsheet*.egg-info/
12
12
  # Ignore SDK reference docs artifacts
13
13
  gh-pages/
14
14
  docs-source/_build/
15
- docs-source/modules.rst
16
- docs-source/smartsheet*.rst
15
+ docs-source/_static/
17
16
 
18
17
  # Ignore the test cases log files
19
18
  *.log
@@ -4,9 +4,9 @@
4
4
 
5
5
  The following packages are required.
6
6
 
7
- * [setuptools](https://pypi.org/project/setuptools/)
8
- * [six](https://pypi.python.org/pypi/six)
9
- * [requests](https://pypi.python.org/pypi/requests)
7
+ - [setuptools](https://pypi.org/project/setuptools/)
8
+ - [six](https://pypi.python.org/pypi/six)
9
+ - [requests](https://pypi.python.org/pypi/requests)
10
10
 
11
11
  To install this SDK manually:
12
12
 
@@ -55,9 +55,9 @@ To invoke the passthrough, your code can call one of the following four methods:
55
55
 
56
56
  `response = client.Passthrough.delete(endpoint)`
57
57
 
58
- * `endpoint`: The specific API endpoint you wish to invoke. The client object base URL gets prepended to the caller’s endpoint URL argument, so in the above `get` example, if endpoint is `'/sheets'` an HTTP GET is requested from the URL `https://api.smartsheet.com/2.0/sheets`
59
- * `payload`: The data to be passed through, can be either a dictionary or string.
60
- * `query_params`: An optional dictionary of query parameters.
58
+ - `endpoint`: The specific API endpoint you wish to invoke. The client object base URL gets prepended to the caller’s endpoint URL argument, so in the above `get` example, if endpoint is `'/sheets'` an HTTP GET is requested from the URL `https://api.smartsheet.com/2.0/sheets`
59
+ - `payload`: The data to be passed through, can be either a dictionary or string.
60
+ - `query_params`: An optional dictionary of query parameters.
61
61
 
62
62
  All calls to passthrough methods return a JSON result. The `data` attribute contains the JSON result as a dictionary. For example, after a PUT operation the API's result message will be contained in `response.data['message']`. If you prefer raw JSON instead of a dictionary, you can use the `to_json()` method, for example `response.to_json()`.
63
63
 
@@ -78,17 +78,91 @@ response = client.Passthrough.post('/sheets', payload)
78
78
 
79
79
  ## Testing
80
80
 
81
- ### Integration Tests
81
+ ### Mock API Tests
82
82
 
83
- 1. Follow the [Integration test instructions](tests/integration/README.md)
84
- 2. Run `pytest tests/integration`
83
+ We use WireMock for API contract testing. This allows us to simulate Smartsheet API responses and run tests without relying on the live API.
84
+ The [smartsheet-sdk-tests](https://github.com/smartsheet/smartsheet-sdk-tests) repo provides a standalone WireMock server with JSON mappings that simulate the Smartsheet API.
85
+ Each mapping defines a request to match and a response to return.
86
+
87
+ Common test cases use catch-all path patterns (e.g., /errors/500-response).
88
+
89
+ We use two custom headers:
90
+
91
+ - x-test-name: Used for exact mapping match, allowing different mock responses for the same HTTP method and endpoint.
92
+ - x-request-id: A UUID generated for each request, used to verify request URLs and search for requests in WireMock admin history.
93
+
94
+ To run the mock API tests:
95
+
96
+ 1. Clone the [smartsheet-sdk-tests](https://github.com/smartsheet/smartsheet-sdk-tests) repo and follow the instructions from the readme to start the mock server.
97
+
98
+ 2. `pytest tests/mock_api`
99
+
100
+ To add new mock API tests:
101
+
102
+ 1. Add a WireMock Mapping (JSON) in the [smartsheet-sdk-tests](https://github.com/smartsheet/smartsheet-sdk-tests):
103
+
104
+ ```json
105
+ {
106
+ "request": {
107
+ "urlPathTemplate": "/2.0/users/{userId}/plans",
108
+ "method": "GET",
109
+ "headers": {
110
+ "Authorization": {
111
+ "matches": "Bearer .*"
112
+ },
113
+ "x-test-name": {
114
+ "equalTo": "/users/list-user-plans/all-response-body-properties"
115
+ },
116
+ "x-request-id": {
117
+ "matches": ".*"
118
+ }
119
+ }
120
+ },
121
+ "response": {
122
+ "statusMessage": "OK",
123
+ "status": 200,
124
+ "jsonBody": {
125
+ "lastKey": "12345678901234569",
126
+ "data": [
127
+ {
128
+ "planId": 1234567890123456,
129
+ "seatType": "MEMBER",
130
+ "seatTypeLastChangedAt": "2025-01-01T00:00:00.123456789Z",
131
+ "provisionalExpirationDate": "2026-12-13T12:17:52.525696Z",
132
+ "isInternal": false
133
+ }
134
+ ]
135
+ },
136
+ "headers": {
137
+ "Content-Type": "application/json"
138
+ }
139
+ }
140
+ }
141
+ ```
85
142
 
86
- ### Mock API Tests
143
+ <!-- markdownlint-disable MD029 -->
144
+ 2. Write a Test in the SDK:
145
+ <!-- markdownlint-enable MD029 -->
87
146
 
88
- **NOTE:** the mock API tests will fail unless the mock server is running.
147
+ - Always use x-test-name to target specific mock responses.
148
+ - Use x-request-id for traceability in WireMock admin.
149
+ - Keep mappings in the smartsheet-sdk-tests repository organized and descriptive
89
150
 
90
- 1. Clone the [Smartsheet SDK tests](https://github.com/smartsheet-platform/smartsheet-sdk-tests) repo and follow the instructions from the README to start the mock server
91
- 2. Run `pytest tests/mock_api`
151
+ ```python
152
+ def test_list_user_plans_all_response_properties():
153
+ request_id = uuid.uuid4().hex
154
+ client = get_mock_api_client(
155
+ "/users/list-user-plans/all-response-body-properties", request_id
156
+ )
157
+
158
+ response = client.Users.list_user_plans(
159
+ user_id=TEST_USER_ID,
160
+ last_key=TEST_LAST_KEY,
161
+ max_items=TEST_MAX_ITEMS
162
+ )
163
+
164
+ assert isinstance(response, TokenPaginatedResult)
165
+ ```
92
166
 
93
167
  ## HTTP Proxy
94
168
 
@@ -5,6 +5,39 @@ 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.6] - 2025-11-18
9
+
10
+ ### Removed
11
+
12
+ - Remove integration tests from the sdk test suite
13
+
14
+ ### Added
15
+
16
+ - Add support for code completion. Now code editors will be able to recognize and complete expressions like `smart.Users` and `smart.Users.list_users`.
17
+
18
+ ### Updated
19
+
20
+ - Improved the generated reference documentation.
21
+ - ADVANCED.md integration and mock api testing documentation
22
+
23
+ ## [3.5.5] - 2025-11-11
24
+
25
+ ### Fixed
26
+
27
+ - Fix response body logging. When the response Content-Type is application/json the response body is logged.
28
+
29
+ ### Added
30
+
31
+ - WiremMock integration tests for contract testing for GET /2.0/users/{userId}/plans and GET /2.0/users endpoints
32
+ - WireMock integration tests for contract testing for POST /2.0/users/{userId}/plans/{planId}/upgrade and POST /2.0/users/{userId}/plans/{planId}/downgrade
33
+ - WireMock integration tests for contract testing for DELETE /{userId}/plans/{planId} endpoint
34
+ - Add dict serialization tests
35
+ - Add missing properties from [AssetShare](smartsheet/models/asset_share.py): `cc_me`, `message`, `subject`.
36
+
37
+ ### Updated
38
+
39
+ - Folder structure for the Users related WireMock tests
40
+
8
41
  ## [3.5.4] - 2025-10-31
9
42
 
10
43
  ### Fixed
@@ -36,6 +36,27 @@ Changes that are cosmetic in nature and do not add anything substantial to the s
36
36
 
37
37
  - Write unit tests for new features and bug fixes. All tests should pass before submitting a PR.
38
38
 
39
+ ## Documentation
40
+
41
+ - If your changes affect the public API, you must update the corresponding Sphinx documentation files in `docs-source/`:
42
+ - **API Resources** (modules in `smartsheet/`): Update `docs-source/smartsheet_api.rst`
43
+ - **Models** (classes in `smartsheet/models/`): Update `docs-source/smartsheet_models.rst`
44
+ - **Enums** (enums in `smartsheet/models/enums/`): Update `docs-source/smartsheet_enums.rst`
45
+ - **Types** (type definitions in `smartsheet/types.py`): Update `docs-source/smartsheet_types.rst`
46
+ - **Exceptions** (exceptions in `smartsheet/exceptions.py`): Update `docs-source/smartsheet_exceptions.rst`
47
+ - **General documentation** (installation, quickstart, examples): Update `docs-source/index.rst`
48
+
49
+ - The documentation uses Sphinx with autodoc to generate API documentation from docstrings. Ensure your docstrings follow Google-style format as configured in `docs-source/conf.py`.
50
+
51
+ - After making changes to `docs-source/`, you can build the documentation locally to verify your changes:
52
+
53
+ ```bash
54
+ cd docs-source
55
+ make html
56
+ ```
57
+
58
+ - The built documentation will be in `docs-source/_build/html/`. Open `index.html` in a browser to review your changes.
59
+
39
60
  ## Running Tests
40
61
 
41
62
  - To run the test suite, use the following command:
@@ -1,24 +1,25 @@
1
1
  Metadata-Version: 2.4
2
- Name: smartsheet_python_sdk
3
- Version: 3.5.4
2
+ Name: smartsheet-python-sdk
3
+ Version: 3.5.6
4
4
  Summary: Library that uses Python to connect to Smartsheet services (using API 2.0).
5
- Home-page: http://smartsheet-platform.github.io/api-docs/
6
- Author: Smartsheet
7
- Author-email: sdk@smartsheet.com
8
- License: Apache-2.0
9
- Keywords: Smartsheet,Collaboration,Project Management,Excel,spreadsheet
5
+ License-Expression: Apache-2.0
10
6
  Classifier: Development Status :: 5 - Production/Stable
11
7
  Classifier: Intended Audience :: Developers
12
8
  Classifier: Natural Language :: English
13
9
  Classifier: Operating System :: OS Independent
14
- Classifier: License :: OSI Approved :: Apache Software License
15
10
  Classifier: Programming Language :: Python
16
11
  Classifier: Programming Language :: Python :: 3.7
17
12
  Classifier: Programming Language :: Python :: 3.8
18
13
  Classifier: Programming Language :: Python :: 3.9
19
14
  Classifier: Programming Language :: Python :: 3.10
15
+ Classifier: Programming Language :: Python :: 3.11
16
+ Classifier: Programming Language :: Python :: 3.12
17
+ Classifier: Programming Language :: Python :: 3.13
18
+ Classifier: Programming Language :: Python :: 3.14
19
+ Classifier: Programming Language :: Python :: 3.15
20
20
  Classifier: Topic :: Software Development :: Libraries :: Python Modules
21
21
  Classifier: Topic :: Office/Business :: Financial :: Spreadsheet
22
+ Requires-Python: >=3.7
22
23
  Description-Content-Type: text/markdown
23
24
  License-File: LICENSE.md
24
25
  License-File: NOTICE
@@ -31,23 +32,24 @@ Provides-Extra: test
31
32
  Requires-Dist: coverage; extra == "test"
32
33
  Requires-Dist: coveralls; extra == "test"
33
34
  Requires-Dist: pytest; extra == "test"
35
+ Requires-Dist: pytest-rerunfailures; extra == "test"
36
+ Requires-Dist: requests-toolbelt; extra == "test"
34
37
  Provides-Extra: develop
35
38
  Requires-Dist: coverage; extra == "develop"
36
39
  Requires-Dist: coveralls[yaml]; extra == "develop"
37
40
  Requires-Dist: pytest; extra == "develop"
38
41
  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
42
+ Requires-Dist: pylint; extra == "develop"
43
+ Provides-Extra: docs
44
+ Requires-Dist: sphinx; extra == "docs"
45
+ Requires-Dist: sphinx_rtd_theme; extra == "docs"
46
+ Requires-Dist: setuptools_scm; extra == "docs"
47
+ Provides-Extra: packaging
48
+ Requires-Dist: wheel; extra == "packaging"
49
+ Requires-Dist: twine; extra == "packaging"
50
+ Requires-Dist: gitchangelog; extra == "packaging"
51
+ Requires-Dist: mako; extra == "packaging"
47
52
  Dynamic: license-file
48
- Dynamic: provides-extra
49
- Dynamic: requires-dist
50
- Dynamic: summary
51
53
 
52
54
  # Smartsheet Python SDK
53
55
 
@@ -0,0 +1,141 @@
1
+ .. toctree::
2
+ :maxdepth: 2
3
+ :hidden:
4
+
5
+ smartsheet_api
6
+ smartsheet_models
7
+ smartsheet_enums
8
+ smartsheet_types
9
+ smartsheet_exceptions
10
+
11
+ Smartsheet Python SDK Documentation
12
+ ===================================
13
+
14
+ * Release v\ |version|
15
+
16
+ * `GitHub repository <https://github.com/smartsheet/smartsheet-python-sdk>`_
17
+
18
+ * `Changelog <https://github.com/smartsheet/smartsheet-python-sdk/blob/mainline/CHANGELOG.md>`_
19
+
20
+ Installation
21
+ ------------
22
+
23
+ To install using pip::
24
+
25
+ pip install smartsheet-python-sdk
26
+
27
+ Quickstart
28
+ ----------
29
+
30
+ Getting started is easy:
31
+
32
+ #. Get your Smartsheet API access token. Find out more about getting
33
+ `direct API access <https://developers.smartsheet.com/api/smartsheet/guides/getting-started>`_ in the Smartsheet API Documentation.
34
+ You can generate an access token in Smartsheet UI under Account > Personal Settings > API Access.
35
+
36
+ #. Install the Smartsheet Python SDK from the `Python Package Index <http://pypi.python.org/pypi/smartsheet-python-sdk>`_,
37
+ or by using "pip install smartsheet-python-sdk".
38
+
39
+ #. Import the smartsheet module and start using the SDK (see examples below).
40
+
41
+ Authentication
42
+ --------------
43
+
44
+ You can authenticate with the Smartsheet API in two ways:
45
+
46
+ **Option 1: Environment Variable (Recommended)**
47
+
48
+ Set the **SMARTSHEET_ACCESS_TOKEN** environment variable::
49
+
50
+ export SMARTSHEET_ACCESS_TOKEN="your_token_here"
51
+
52
+ Then create the client without parameters::
53
+
54
+ import smartsheet
55
+ smart = smartsheet.Smartsheet()
56
+
57
+ **Option 2: Direct Token**
58
+
59
+ Pass the access token directly to the Smartsheet constructor::
60
+
61
+ import smartsheet
62
+ smart = smartsheet.Smartsheet(access_token='your_token_here')
63
+
64
+ Example Usage
65
+ -------------
66
+
67
+ Basic Example
68
+ ~~~~~~~~~~~~~
69
+
70
+ The following example shows how to create a Smartsheet client and perform some basic operations::
71
+
72
+ import smartsheet
73
+
74
+ # Create a Smartsheet client (uses SMARTSHEET_ACCESS_TOKEN environment variable)
75
+ smart = smartsheet.Smartsheet()
76
+
77
+ # Or create with explicit token:
78
+ # smart = smartsheet.Smartsheet(access_token='your_token_here')
79
+
80
+ # List all sheets
81
+ response = smart.Sheets.list_sheets()
82
+
83
+ # Get the ID of the first sheet
84
+ sheet_id = response.data[0].id
85
+
86
+ # Load the sheet by using its ID
87
+ sheet = smart.Sheets.get_sheet(sheet_id)
88
+
89
+ # Print information about the sheet
90
+ print(f"The sheet {sheet.name} has {sheet.total_row_count} rows")
91
+
92
+ Working with Rows
93
+ ~~~~~~~~~~~~~~~~~
94
+
95
+ Add rows to a sheet::
96
+
97
+ import smartsheet
98
+
99
+ smart = smartsheet.Smartsheet()
100
+
101
+ # Build new row
102
+ new_row = smart.models.Row()
103
+ new_row.to_top = True
104
+ new_row.cells.append({
105
+ 'column_id': 123456789,
106
+ 'value': 'New Value'
107
+ })
108
+
109
+ # Add rows to sheet
110
+ response = smart.Sheets.add_rows(sheet_id, [new_row])
111
+
112
+ Working with Cells
113
+ ~~~~~~~~~~~~~~~~~~
114
+
115
+ Update cell values::
116
+
117
+ import smartsheet
118
+
119
+ smart = smartsheet.Smartsheet()
120
+
121
+ # Build new cell value
122
+ new_cell = smart.models.Cell()
123
+ new_cell.column_id = 123456789
124
+ new_cell.value = 'Updated Value'
125
+ new_cell.strict = False
126
+
127
+ # Build the row to update
128
+ new_row = smart.models.Row()
129
+ new_row.id = 987654321
130
+ new_row.cells.append(new_cell)
131
+
132
+ # Update rows
133
+ response = smart.Sheets.update_rows(sheet_id, [new_row])
134
+
135
+ Additional Resources
136
+ --------------------
137
+
138
+ For more examples and detailed documentation:
139
+
140
+ * `Smartsheet Python SDK sample project <https://github.com/smartsheet-samples/python-read-write-sheet>`_
141
+ * `Smartsheet API Documentation <https://developers.smartsheet.com/api/smartsheet/introduction>`_ for dozens of Python SDK usage examples