Office365-REST-Python-Client 2.5.1__py3-none-any.whl → 2.5.3__py3-none-any.whl

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 (271) hide show
  1. {Office365_REST_Python_Client-2.5.1.dist-info → Office365_REST_Python_Client-2.5.3.dist-info}/METADATA +6 -6
  2. {Office365_REST_Python_Client-2.5.1.dist-info → Office365_REST_Python_Client-2.5.3.dist-info}/RECORD +265 -259
  3. office365/base_item.py +12 -20
  4. office365/communications/onlinemeetings/collection.py +1 -1
  5. office365/communications/onlinemeetings/online_meeting.py +20 -35
  6. office365/communications/presences/presence.py +18 -7
  7. office365/delta_collection.py +10 -1
  8. office365/delta_path.py +1 -1
  9. office365/directory/administrative_unit.py +6 -7
  10. office365/directory/applications/application.py +24 -18
  11. office365/directory/applications/roles/assignment.py +13 -1
  12. office365/directory/applications/roles/collection.py +13 -0
  13. office365/directory/applications/roles/role.py +6 -1
  14. office365/directory/audit/directory.py +8 -7
  15. office365/directory/audit/log_root.py +3 -0
  16. office365/directory/audit/signins/signin.py +19 -29
  17. office365/directory/authentication/authentication.py +1 -0
  18. office365/directory/authentication/methods/details.py +8 -6
  19. office365/directory/authentication/methods/phone.py +3 -1
  20. office365/directory/extensions/extension_property.py +7 -9
  21. office365/directory/groups/collection.py +10 -3
  22. office365/directory/groups/group.py +19 -19
  23. office365/directory/groups/lifecycle_policy.py +8 -7
  24. office365/directory/identities/provider.py +5 -6
  25. office365/directory/insights/usage_details.py +8 -3
  26. office365/directory/internal/paths/me.py +1 -1
  27. office365/directory/invitations/collection.py +1 -1
  28. office365/directory/invitations/invitation.py +6 -6
  29. office365/directory/object_collection.py +2 -3
  30. office365/directory/permissions/email_identity.py +7 -0
  31. office365/directory/permissions/grants/resource_specific.py +10 -9
  32. office365/directory/permissions/identity.py +3 -0
  33. office365/directory/permissions/identity_set.py +3 -0
  34. office365/directory/policies/base.py +4 -4
  35. office365/directory/policies/root.py +6 -4
  36. office365/directory/protection/information.py +3 -3
  37. office365/directory/rolemanagement/application.py +2 -0
  38. office365/directory/rolemanagement/role.py +11 -10
  39. office365/directory/rolemanagement/template.py +9 -8
  40. office365/directory/rolemanagement/unified_role_assignment.py +5 -4
  41. office365/directory/rolemanagement/unified_role_definition.py +6 -4
  42. office365/directory/security/security.py +3 -0
  43. office365/directory/serviceprincipals/collection.py +20 -4
  44. office365/directory/serviceprincipals/service_principal.py +79 -12
  45. office365/directory/users/activities/activity.py +5 -4
  46. office365/directory/users/user.py +29 -34
  47. office365/entity.py +2 -2
  48. office365/entity_collection.py +12 -5
  49. office365/graph_client.py +90 -8
  50. office365/intune/audit/event.py +4 -3
  51. office365/intune/devices/enrollment/configuration.py +6 -4
  52. office365/intune/devices/managed.py +9 -12
  53. office365/onedrive/analytics/item_activity_stat.py +4 -3
  54. office365/onedrive/columns/column_link.py +4 -4
  55. office365/onedrive/columns/definition.py +29 -32
  56. office365/onedrive/columns/definition_collection.py +1 -1
  57. office365/onedrive/contenttypes/content_type.py +16 -18
  58. office365/onedrive/documentsets/version.py +7 -3
  59. office365/onedrive/driveitems/driveItem.py +48 -49
  60. office365/onedrive/drives/drive.py +7 -2
  61. office365/onedrive/internal/paths/children.py +2 -2
  62. office365/onedrive/internal/paths/root.py +1 -1
  63. office365/onedrive/internal/paths/shared.py +1 -1
  64. office365/onedrive/internal/paths/site.py +3 -3
  65. office365/onedrive/internal/paths/url.py +2 -2
  66. office365/onedrive/listitems/list_item.py +2 -0
  67. office365/onedrive/lists/list.py +7 -4
  68. office365/onedrive/permissions/collection.py +28 -7
  69. office365/onedrive/permissions/permission.py +5 -7
  70. office365/onedrive/permissions/sharing_link.py +1 -1
  71. office365/onedrive/sharepoint.py +1 -0
  72. office365/onedrive/shares/collection.py +2 -5
  73. office365/onedrive/shares/drive_item.py +4 -0
  74. office365/onedrive/sites/site.py +6 -0
  75. office365/onedrive/termstore/groups/collection.py +3 -8
  76. office365/onedrive/termstore/groups/group.py +8 -0
  77. office365/onedrive/termstore/sets/collection.py +2 -6
  78. office365/onedrive/termstore/sets/name.py +5 -0
  79. office365/onedrive/termstore/sets/set.py +7 -0
  80. office365/onedrive/termstore/store.py +10 -13
  81. office365/onedrive/versions/drive_item.py +3 -1
  82. office365/onedrive/workbooks/ranges/range.py +9 -13
  83. office365/onedrive/workbooks/ranges/view.py +1 -0
  84. office365/onedrive/workbooks/tables/rows/row.py +3 -0
  85. office365/onedrive/workbooks/tables/table.py +7 -4
  86. office365/onedrive/workbooks/worksheets/worksheet.py +12 -4
  87. office365/onenote/entity_hierarchy_model.py +4 -0
  88. office365/onenote/internal/multipart_page_query.py +4 -5
  89. office365/onenote/notebooks/notebook.py +4 -0
  90. office365/onenote/pages/collection.py +3 -2
  91. office365/onenote/resources/resource.py +5 -4
  92. office365/onenote/sectiongroups/section_group.py +10 -7
  93. office365/onenote/sections/section.py +1 -1
  94. office365/outlook/calendar/attendees/base.py +2 -1
  95. office365/outlook/calendar/calendar.py +18 -10
  96. office365/outlook/calendar/events/collection.py +0 -2
  97. office365/outlook/calendar/group.py +7 -8
  98. office365/outlook/calendar/meetingtimes/suggestion.py +8 -4
  99. office365/outlook/calendar/meetingtimes/time_slot.py +3 -0
  100. office365/outlook/calendar/permissions/collection.py +1 -1
  101. office365/outlook/calendar/rooms/__init__.py +0 -0
  102. office365/outlook/calendar/rooms/list.py +27 -0
  103. office365/outlook/calendar/rooms/room.py +8 -0
  104. office365/outlook/calendar/schedule/information.py +0 -1
  105. office365/outlook/contacts/collection.py +0 -8
  106. office365/outlook/contacts/contact.py +14 -14
  107. office365/outlook/contacts/folder.py +3 -0
  108. office365/outlook/mail/attachments/attachment.py +31 -31
  109. office365/outlook/mail/attachments/collection.py +34 -6
  110. office365/outlook/mail/conversation.py +6 -4
  111. office365/outlook/mail/folders/collection.py +0 -7
  112. office365/outlook/mail/folders/folder.py +50 -18
  113. office365/outlook/mail/messages/collection.py +0 -1
  114. office365/outlook/mail/messages/message.py +58 -68
  115. office365/outlook/mail/physical_address.py +11 -5
  116. office365/outlook/mail/recipient.py +3 -1
  117. office365/outlook/mail/recurrence_range.py +14 -6
  118. office365/outlook/user.py +1 -0
  119. office365/planner/planner.py +9 -12
  120. office365/planner/plans/collection.py +17 -18
  121. office365/planner/plans/container.py +11 -0
  122. office365/planner/plans/plan.py +21 -10
  123. office365/runtime/auth/authentication_context.py +3 -3
  124. office365/runtime/auth/providers/acs_token_provider.py +7 -9
  125. office365/runtime/auth/providers/saml_token_provider.py +5 -2
  126. office365/runtime/client_object.py +6 -15
  127. office365/runtime/client_object_collection.py +36 -35
  128. office365/runtime/client_result.py +6 -7
  129. office365/runtime/client_runtime_context.py +10 -16
  130. office365/runtime/client_value_collection.py +3 -10
  131. office365/runtime/compat.py +2 -0
  132. office365/runtime/odata/query_options.py +1 -3
  133. office365/runtime/odata/reader.py +1 -1
  134. office365/runtime/odata/request.py +2 -4
  135. office365/runtime/odata/type.py +17 -0
  136. office365/runtime/odata/v4/upload_session_request.py +27 -30
  137. office365/runtime/paths/appid.py +1 -1
  138. office365/runtime/{odata/url_builder.py → paths/builder.py} +24 -9
  139. office365/runtime/paths/item.py +3 -1
  140. office365/runtime/paths/resource_path.py +12 -16
  141. office365/runtime/paths/service_operation.py +8 -7
  142. office365/runtime/paths/v3/__init__.py +0 -0
  143. office365/runtime/paths/{key.py → v3/entity.py} +5 -5
  144. office365/runtime/paths/v4/__init__.py +0 -0
  145. office365/runtime/paths/{entity.py → v4/entity.py} +13 -11
  146. office365/runtime/queries/function.py +1 -1
  147. office365/runtime/types/event_handler.py +1 -3
  148. office365/search/entity.py +15 -8
  149. office365/search/external/external.py +1 -0
  150. office365/search/sort_property.py +3 -0
  151. office365/sharepoint/attachments/attachment.py +3 -1
  152. office365/sharepoint/attachments/collection.py +3 -0
  153. office365/sharepoint/changes/change.py +12 -1
  154. office365/sharepoint/changes/collection.py +1 -1
  155. office365/sharepoint/changes/list.py +3 -0
  156. office365/sharepoint/changes/token.py +4 -0
  157. office365/sharepoint/changes/type.py +23 -23
  158. office365/sharepoint/changes/web.py +7 -3
  159. office365/sharepoint/client_context.py +21 -18
  160. office365/sharepoint/clientsidecomponent/hostedapps/manager.py +3 -3
  161. office365/sharepoint/contenttypes/content_type.py +47 -56
  162. office365/sharepoint/contenttypes/content_type_id.py +1 -1
  163. office365/sharepoint/documentmanagement/document_id.py +2 -2
  164. office365/sharepoint/documentmanagement/document_set.py +6 -7
  165. office365/sharepoint/entity_collection.py +9 -0
  166. office365/sharepoint/features/feature.py +6 -8
  167. office365/sharepoint/fields/collection.py +6 -5
  168. office365/sharepoint/fields/field.py +28 -46
  169. office365/sharepoint/fields/related_field_collection.py +1 -1
  170. office365/sharepoint/fields/user_value.py +3 -3
  171. office365/sharepoint/files/checked_out_file.py +4 -2
  172. office365/sharepoint/files/checked_out_file_collection.py +1 -1
  173. office365/sharepoint/files/collection.py +84 -14
  174. office365/sharepoint/files/file.py +118 -110
  175. office365/sharepoint/files/versions/collection.py +5 -3
  176. office365/sharepoint/files/versions/event.py +6 -3
  177. office365/sharepoint/files/versions/version.py +31 -18
  178. office365/sharepoint/folders/collection.py +5 -10
  179. office365/sharepoint/folders/folder.py +41 -24
  180. office365/sharepoint/forms/collection.py +1 -1
  181. office365/sharepoint/forms/form.py +4 -4
  182. office365/sharepoint/internal/paths/static_operation.py +9 -0
  183. office365/sharepoint/internal/paths/web.py +20 -0
  184. office365/sharepoint/listitems/collection.py +4 -0
  185. office365/sharepoint/listitems/listitem.py +37 -38
  186. office365/sharepoint/listitems/versions/collection.py +1 -1
  187. office365/sharepoint/listitems/versions/version.py +18 -11
  188. office365/sharepoint/lists/collection.py +1 -2
  189. office365/sharepoint/lists/list.py +106 -153
  190. office365/sharepoint/marketplace/app_metadata_collection.py +3 -1
  191. office365/sharepoint/navigation/node.py +16 -15
  192. office365/sharepoint/navigation/node_collection.py +9 -3
  193. office365/sharepoint/permissions/base_permissions.py +11 -6
  194. office365/sharepoint/permissions/roles/assignments/collection.py +8 -12
  195. office365/sharepoint/permissions/roles/definitions/definition.py +3 -1
  196. office365/sharepoint/permissions/securable_object.py +38 -31
  197. office365/sharepoint/portal/groups/service.py +12 -16
  198. office365/sharepoint/portal/groups/site_manager.py +0 -1
  199. office365/sharepoint/principal/groups/group.py +24 -30
  200. office365/sharepoint/principal/principal.py +21 -19
  201. office365/sharepoint/principal/users/collection.py +5 -0
  202. office365/sharepoint/principal/users/user.py +20 -26
  203. office365/sharepoint/publishing/pages/collection.py +1 -4
  204. office365/sharepoint/publishing/pages/metadata.py +38 -51
  205. office365/sharepoint/publishing/pages/metadata_collection.py +5 -2
  206. office365/sharepoint/publishing/pages/page.py +12 -21
  207. office365/sharepoint/publishing/pages/reposts/repost.py +5 -9
  208. office365/sharepoint/publishing/pages/service.py +36 -49
  209. office365/sharepoint/pushnotifications/collection.py +3 -1
  210. office365/sharepoint/recyclebin/item.py +11 -9
  211. office365/sharepoint/recyclebin/item_collection.py +1 -1
  212. office365/sharepoint/search/service.py +8 -6
  213. office365/sharepoint/sharing/links/info.py +5 -2
  214. office365/sharepoint/sharing/links/share_response.py +3 -0
  215. office365/sharepoint/sharing/links/share_settings.py +3 -0
  216. office365/sharepoint/sharing/object_sharing_information.py +25 -19
  217. office365/sharepoint/sharing/object_sharing_information_user.py +10 -19
  218. office365/sharepoint/sharing/result.py +18 -41
  219. office365/sharepoint/sharing/role.py +20 -0
  220. office365/sharepoint/sharing/role_type.py +1 -0
  221. office365/sharepoint/sharing/user_sharing_result.py +12 -0
  222. office365/sharepoint/sites/language.py +6 -0
  223. office365/sharepoint/sites/language_collection.py +3 -0
  224. office365/sharepoint/sites/site.py +65 -86
  225. office365/sharepoint/storagemetrics/storage_metrics.py +5 -6
  226. office365/sharepoint/taxonomy/item.py +11 -10
  227. office365/sharepoint/taxonomy/stores/store.py +8 -8
  228. office365/sharepoint/taxonomy/terms/label.py +3 -0
  229. office365/sharepoint/taxonomy/terms/term.py +31 -0
  230. office365/sharepoint/tenant/administration/collaboration/insights_overview.py +10 -0
  231. office365/sharepoint/tenant/administration/hubsites/collection.py +1 -2
  232. office365/sharepoint/tenant/administration/hubsites/hub_site.py +20 -24
  233. office365/sharepoint/tenant/administration/internal/permission_grant.py +7 -0
  234. office365/sharepoint/tenant/administration/sites/properties.py +55 -44
  235. office365/sharepoint/tenant/administration/tenant.py +69 -69
  236. office365/sharepoint/types/resource_path.py +2 -2
  237. office365/sharepoint/ui/applicationpages/peoplepicker/query_parameters.py +1 -1
  238. office365/sharepoint/usercustomactions/collection.py +1 -2
  239. office365/sharepoint/userprofiles/my_site_links.py +4 -4
  240. office365/sharepoint/userprofiles/people_manager.py +1 -3
  241. office365/sharepoint/userprofiles/user_profile.py +9 -11
  242. office365/sharepoint/utilities/principal_info.py +12 -0
  243. office365/sharepoint/viva/employee_engagement.py +1 -1
  244. office365/sharepoint/webparts/definition_collection.py +1 -1
  245. office365/sharepoint/webs/collection.py +8 -0
  246. office365/sharepoint/webs/template_collection.py +3 -5
  247. office365/sharepoint/webs/web.py +75 -95
  248. office365/subscriptions/collection.py +1 -1
  249. office365/subscriptions/subscription.py +13 -11
  250. office365/teams/apps/app.py +1 -0
  251. office365/teams/channels/channel.py +1 -3
  252. office365/teams/collection.py +12 -16
  253. office365/teams/info.py +7 -4
  254. office365/teams/members/conversation_collection.py +1 -3
  255. office365/teams/operations/async_operation.py +3 -5
  256. office365/teams/schedule/groups/group.py +3 -0
  257. office365/teams/team.py +18 -20
  258. office365/todo/attachments/base.py +7 -9
  259. office365/todo/linked_resource.py +6 -6
  260. office365/todo/tasks/list.py +1 -0
  261. office365/todo/tasks/task.py +3 -0
  262. office365/onedrive/internal/queries/resumable_file_upload.py +0 -36
  263. office365/outlook/internal/queries/attachment_upload.py +0 -53
  264. office365/runtime/odata/path_builder.py +0 -23
  265. office365/sharepoint/internal/key_value.py +0 -28
  266. office365/sharepoint/internal/queries/create_file.py +0 -20
  267. office365/sharepoint/internal/queries/upload_session.py +0 -103
  268. {Office365_REST_Python_Client-2.5.1.dist-info → Office365_REST_Python_Client-2.5.3.dist-info}/LICENSE +0 -0
  269. {Office365_REST_Python_Client-2.5.1.dist-info → Office365_REST_Python_Client-2.5.3.dist-info}/WHEEL +0 -0
  270. {Office365_REST_Python_Client-2.5.1.dist-info → Office365_REST_Python_Client-2.5.3.dist-info}/top_level.txt +0 -0
  271. /office365/planner/plans/{plan_details.py → details.py} +0 -0
@@ -1,5 +1,6 @@
1
+ import os
1
2
  from datetime import datetime
2
- from typing import Optional
3
+ from typing import AnyStr, Optional
3
4
 
4
5
  from office365.runtime.client_result import ClientResult
5
6
  from office365.runtime.client_value_collection import ClientValueCollection
@@ -7,6 +8,7 @@ from office365.runtime.paths.resource_path import ResourcePath
7
8
  from office365.runtime.paths.service_operation import ServiceOperationPath
8
9
  from office365.runtime.queries.service_operation import ServiceOperationQuery
9
10
  from office365.sharepoint.changes.collection import ChangeCollection
11
+ from office365.sharepoint.changes.log_item_query import ChangeLogItemQuery
10
12
  from office365.sharepoint.changes.query import ChangeQuery
11
13
  from office365.sharepoint.changes.token import ChangeToken
12
14
  from office365.sharepoint.contenttypes.collection import ContentTypeCollection
@@ -69,6 +71,9 @@ class List(SecurableObject):
69
71
  def __init__(self, context, resource_path=None):
70
72
  super(List, self).__init__(context, resource_path)
71
73
 
74
+ def __repr__(self):
75
+ return self.id or self.title or self.entity_type_name
76
+
72
77
  def create_document_and_get_edit_link(
73
78
  self,
74
79
  file_name=None,
@@ -130,9 +135,7 @@ class List(SecurableObject):
130
135
  return return_type
131
136
 
132
137
  def get_metadata_navigation_settings(self):
133
- """
134
- Retrieves the configured metadata navigation settings for the list.
135
- """
138
+ """Retrieves the configured metadata navigation settings for the list."""
136
139
  from office365.sharepoint.navigation.metadata_settings import (
137
140
  MetadataNavigationSettings,
138
141
  )
@@ -150,12 +153,10 @@ class List(SecurableObject):
150
153
  return return_type
151
154
 
152
155
  def get_sharing_settings(self):
153
- """
154
- Retrieves a sharing settings for a List
155
- """
156
+ """Retrieves a sharing settings for a List"""
156
157
  return_type = ObjectSharingSettings(self.context)
157
158
 
158
- def _list_loaded():
159
+ def _get_sharing_settings():
159
160
  from office365.sharepoint.webs.web import Web
160
161
 
161
162
  list_abs_path = SPResPath.create_absolute(
@@ -165,7 +166,7 @@ class List(SecurableObject):
165
166
  self.context, str(list_abs_path), return_type=return_type
166
167
  )
167
168
 
168
- self.ensure_property("RootFolder", _list_loaded)
169
+ self.ensure_property("RootFolder", _get_sharing_settings)
169
170
  return return_type
170
171
 
171
172
  def get_site_script(self, options=None):
@@ -173,7 +174,7 @@ class List(SecurableObject):
173
174
 
174
175
  :param dict or None options:
175
176
  """
176
- return_type = ClientResult(self.context)
177
+ return_type = ClientResult(self.context) # type: ClientResult[str]
177
178
 
178
179
  def _list_loaded():
179
180
  list_abs_path = SPResPath.create_absolute(
@@ -187,9 +188,7 @@ class List(SecurableObject):
187
188
  return return_type
188
189
 
189
190
  def get_all_rules(self):
190
- """
191
- Retrieves rules of a List
192
- """
191
+ """Retrieves rules of a List"""
193
192
  return_type = ClientResult(self.context, ClientValueCollection(SPListRule))
194
193
  qry = ServiceOperationQuery(self, "GetAllRules", None, None, None, return_type)
195
194
  self.context.add_query(qry)
@@ -278,7 +277,7 @@ class List(SecurableObject):
278
277
  :param str folder_path: The path within the current list at which to create the document.
279
278
  :param str extension: The file extension without dot prefix.
280
279
  """
281
- return_type = ClientResult(self.context)
280
+ return_type = ClientResult(self.context) # type: ClientResult[str]
282
281
  payload = {"folderPath": folder_path, "extension": extension}
283
282
  qry = ServiceOperationQuery(
284
283
  self, "CreateDocumentWithDefaultName", None, payload, None, return_type
@@ -375,7 +374,6 @@ class List(SecurableObject):
375
374
 
376
375
  def get_lookup_field_choices(self, target_field_name, paging_info=None):
377
376
  """
378
-
379
377
  :param str target_field_name:
380
378
  :param str paging_info:
381
379
  """
@@ -388,11 +386,10 @@ class List(SecurableObject):
388
386
  return return_type
389
387
 
390
388
  def get_list_item_changes_since_token(self, query):
389
+ # type: (ChangeLogItemQuery) -> ClientResult[AnyStr]
391
390
  """
392
391
  Returns the changes made to the list since the date and time specified in the change token defined
393
- by the query input parameter.<57>
394
-
395
- :type query: office365.sharepoint.changes.log_item_query.ChangeLogItemQuery
392
+ by the query input parameter.
396
393
  """
397
394
  return_type = ClientResult(self.context, bytes())
398
395
  payload = {"query": query}
@@ -435,7 +432,6 @@ class List(SecurableObject):
435
432
  :param str description: A string that contains the description for the list template.
436
433
  :param str name: A string that contains the title for the list template.
437
434
  :param str file_name: A string that contains the file name for the list template with an .stp extension.
438
- :return:
439
435
  """
440
436
  payload = {
441
437
  "strFileName": file_name,
@@ -450,7 +446,6 @@ class List(SecurableObject):
450
446
  def get_item_by_unique_id(self, unique_id):
451
447
  """
452
448
  Returns the list item with the specified ID.
453
-
454
449
  :param str unique_id: The unique ID that is associated with the list item.
455
450
  """
456
451
  return ListItem(
@@ -459,11 +454,10 @@ class List(SecurableObject):
459
454
  )
460
455
 
461
456
  def get_web_dav_url(self, source_url):
457
+ # type: (str) -> ClientResult[str]
462
458
  """
463
459
  Gets the trusted URL for opening the folder in Explorer view.
464
-
465
460
  :param str source_url: The URL of the current folder the user is in.
466
- :return: ClientResult
467
461
  """
468
462
 
469
463
  return_type = ClientResult(self.context, str())
@@ -475,10 +469,8 @@ class List(SecurableObject):
475
469
  return return_type
476
470
 
477
471
  def get_items(self, caml_query=None):
478
- """Returns a collection of items from the list based on the specified query.
479
-
480
- :type caml_query: CamlQuery
481
- """
472
+ # type: (CamlQuery) -> ListItemCollection
473
+ """Returns a collection of items from the list based on the specified query."""
482
474
  if not caml_query:
483
475
  caml_query = CamlQuery.create_all_items_query()
484
476
  return_type = ListItemCollection(self.context, self.items.resource_path)
@@ -519,7 +511,6 @@ class List(SecurableObject):
519
511
  def create_wiki_page(self, page_name, page_content):
520
512
  """
521
513
  Creates a wiki page.
522
-
523
514
  :param str page_name:
524
515
  :param str page_content:
525
516
  """
@@ -585,18 +576,31 @@ class List(SecurableObject):
585
576
  return return_type
586
577
 
587
578
  def get_item_by_id(self, item_id):
588
- """Returns the list item with the specified list item identifier.
589
-
590
- :type item_id: int
591
- """
579
+ # type: (int) -> ListItem
580
+ """Returns the list item with the specified list item identifier."""
592
581
  return ListItem(
593
582
  self.context,
594
583
  ServiceOperationPath("getItemById", [item_id], self.resource_path),
595
584
  )
596
585
 
586
+ def get_item_by_url(self, url):
587
+ # type: (str) -> ListItem
588
+ """Returns the list item with the specified site or server relative url."""
589
+ return_type = ListItem(self.context)
590
+ self.items.add_child(return_type)
591
+
592
+ def _after_loaded(item):
593
+ [return_type.set_property(k, v, False) for k, v in item.properties.items()]
594
+
595
+ def _get_item_by_url():
596
+ path = os.path.join(self.root_folder.serverRelativeUrl, url)
597
+ self.items.get_by_url(path).after_execute(_after_loaded, execute_first=True)
598
+
599
+ self.ensure_property("RootFolder", _get_item_by_url)
600
+ return return_type
601
+
597
602
  def get_view(self, view_id):
598
603
  """Returns the list view with the specified view identifier.
599
-
600
604
  :type view_id: str
601
605
  """
602
606
  return View(
@@ -631,10 +635,9 @@ class List(SecurableObject):
631
635
  return return_type
632
636
 
633
637
  def reserve_list_item_id(self):
634
- """
635
- Reserves the returned list item identifier for the idempotent creation of a list item.
636
- """
637
- return_type = ClientResult(self.context, int()) # type: ClientResult[int]
638
+ # type: () -> ClientResult[int]
639
+ """Reserves the returned list item identifier for the idempotent creation of a list item."""
640
+ return_type = ClientResult(self.context, int())
638
641
  qry = ServiceOperationQuery(
639
642
  self, "ReserveListItemId", None, None, None, return_type
640
643
  )
@@ -673,19 +676,13 @@ class List(SecurableObject):
673
676
 
674
677
  @property
675
678
  def id(self):
676
- """
677
- Gets a value that specifies the list identifier.
678
-
679
- :rtype: str
680
- """
679
+ # type: () -> Optional[str]
680
+ """Gets a value that specifies the list identifier."""
681
681
  return self.properties.get("Id", None)
682
682
 
683
683
  @property
684
684
  def additional_ux_properties(self):
685
- """
686
-
687
- :rtype: str
688
- """
685
+ # type: () -> Optional[str]
689
686
  return self.properties.get("AdditionalUXProperties", None)
690
687
 
691
688
  @property
@@ -697,45 +694,39 @@ class List(SecurableObject):
697
694
 
698
695
  @property
699
696
  def allow_content_types(self):
700
- """
701
- Specifies whether the list supports content types.
702
- :rtype: bool or None
703
- """
697
+ # type: () -> Optional[bool]
698
+ """Specifies whether the list supports content types."""
704
699
  return self.properties.get("AllowContentTypes", None)
705
700
 
706
701
  @property
707
702
  def allow_deletion(self):
708
- """
709
- Specifies whether the list could be deleted.
710
- :rtype: bool or None
711
- """
703
+ # type: () -> Optional[bool]
704
+ """Specifies whether the list could be deleted."""
712
705
  return self.properties.get("AllowDeletion", None)
713
706
 
714
707
  @property
715
708
  def base_template(self):
716
- """
717
- Specifies the list server template of the list.
718
- :rtype: int or None
719
- """
709
+ # type: () -> Optional[int]
710
+ """Specifies the list server template of the list."""
720
711
  return self.properties.get("BaseTemplate", None)
721
712
 
722
713
  @property
723
714
  def base_type(self):
715
+ # type: () -> Optional[int]
724
716
  """
725
717
  Specifies the base type of the list.
726
718
  It MUST be one of the following values: GenericList, DocumentLibrary, DiscussionBoard, Survey, or Issue.
727
- :rtype: int or None
728
719
  """
729
720
  return self.properties.get("BaseType", None)
730
721
 
731
722
  @property
732
723
  def browser_file_handling(self):
724
+ # type: () -> Optional[int]
733
725
  """
734
726
  Specifies the override at the list level for the BrowserFileHandling property of the Web application.
735
727
  If the BrowserFileHandling property of the Web application is BrowserFileHandling.Strict,
736
728
  then this setting MUST be ignored. If the BrowserFileHandling property of the Web application is
737
729
  BrowserFileHandling.Permissive, then this setting MUST be respected.
738
- :rtype: int or None
739
730
  """
740
731
  return self.properties.get("BrowserFileHandling", None)
741
732
 
@@ -746,33 +737,29 @@ class List(SecurableObject):
746
737
 
747
738
  @property
748
739
  def default_display_form_url(self):
749
- """
750
- Specifies the location of the default display form for the list.
751
- :rtype: str or None
752
- """
740
+ # type: () -> Optional[str]
741
+ """Specifies the location of the default display form for the list."""
753
742
  return self.properties.get("DefaultDisplayFormUrl", None)
754
743
 
755
744
  @property
756
745
  def default_view_path(self):
757
- """
758
- Specifies the server-relative URL of the default view for the list.
759
- """
746
+ """Specifies the server-relative URL of the default view for the list."""
760
747
  return self.properties.get("DefaultViewPath", SPResPath())
761
748
 
762
749
  @property
763
750
  def default_view_url(self):
751
+ # type: () -> Optional[str]
764
752
  """
765
753
  Specifies the server-relative URL of the default view for the list.
766
- :rtype: str or None
767
754
  """
768
755
  return self.properties.get("DefaultViewUrl", None)
769
756
 
770
757
  @property
771
758
  def crawl_non_default_views(self):
759
+ # type: () -> Optional[bool]
772
760
  """
773
761
  Specifies whether or not the crawler indexes the non-default views of the list.
774
762
  Specify a value of true if the crawler indexes the list's non-default views; specify false if otherwise.
775
- :rtype: bool or None
776
763
  """
777
764
  return self.properties.get("CrawlNonDefaultViews", None)
778
765
 
@@ -809,41 +796,33 @@ class List(SecurableObject):
809
796
 
810
797
  @property
811
798
  def default_edit_form_url(self):
812
- """
813
- Gets a value that specifies the URL of the edit form to use for list items in the list.
814
- :rtype: str or None
815
- """
799
+ # type: () -> Optional[str]
800
+ """Gets a value that specifies the URL of the edit form to use for list items in the list."""
816
801
  return self.properties.get("DefaultEditFormUrl", None)
817
802
 
818
803
  @property
819
804
  def default_item_open_in_browser(self):
820
- """
821
- :rtype: bool or None
822
- """
805
+ # type: () -> Optional[bool]
823
806
  return self.properties.get("DefaultItemOpenInBrowser", None)
824
807
 
825
808
  @property
826
809
  def default_item_open_use_list_setting(self):
810
+ # type: () -> Optional[bool]
827
811
  """
828
812
  This property returns whether to use the List setting or the server wide setting for
829
813
  DefaultItemOpen (BrowserEnabledDocuments setting) in the Web application. This property can only be set to
830
814
  false, thereby using the server-wide setting. To set it to use List setting, set the value for DefaultItemOpen.
831
- :rtype: bool or None
832
815
  """
833
816
  return self.properties.get("DefaultItemOpenUseListSetting", None)
834
817
 
835
818
  @property
836
819
  def disable_commenting(self):
837
- """
838
- :rtype: bool or None
839
- """
820
+ # type: () -> Optional[bool]
840
821
  return self.properties.get("DisableCommenting", None)
841
822
 
842
823
  @property
843
824
  def disable_grid_editing(self):
844
- """
845
- :rtype: bool or None
846
- """
825
+ # type: () -> Optional[bool]
847
826
  return self.properties.get("DisableGridEditing", None)
848
827
 
849
828
  @property
@@ -869,103 +848,89 @@ class List(SecurableObject):
869
848
 
870
849
  @property
871
850
  def enable_assign_to_email(self):
851
+ # type: () -> Optional[bool]
872
852
  """
873
853
  Gets or sets a Boolean value specifying whether e-mail notification is enabled for the list.
874
- :rtype: bool or None
875
854
  """
876
855
  return self.properties.get("EnableAssignToEmail", None)
877
856
 
878
857
  @property
879
858
  def enable_attachments(self):
880
- """
881
- Specifies whether list item attachments are enabled for the list.
882
- :rtype: bool or None
883
- """
859
+ # type: () -> Optional[bool]
860
+ """Specifies whether list item attachments are enabled for the list"""
884
861
  return self.properties.get("EnableAttachments", None)
885
862
 
886
863
  @property
887
864
  def enable_folder_creation(self):
888
- """
889
- Specifies whether new list folders can be added to the list.
890
- :rtype: bool or None
891
- """
865
+ # type: () -> Optional[bool]
866
+ """Specifies whether new list folders can be added to the list."""
892
867
  return self.properties.get("EnableFolderCreation", None)
893
868
 
894
869
  @enable_folder_creation.setter
895
870
  def enable_folder_creation(self, value):
871
+ # type: (bool) -> None
896
872
  self.set_property("EnableFolderCreation", value, True)
897
873
 
898
874
  @property
899
875
  def enable_minor_versions(self):
900
- """
901
- Specifies whether minor versions are enabled for the list.
902
- :rtype: bool or None
903
- """
876
+ # type: () -> Optional[bool]
877
+ """Specifies whether minor versions are enabled for the list."""
904
878
  return self.properties.get("EnableMinorVersions", None)
905
879
 
906
880
  @property
907
881
  def enable_moderation(self):
908
- """
909
- Specifies whether content approval is enabled for the list.
910
- :rtype: bool or None
911
- """
882
+ # type: () -> Optional[bool]
883
+ """Specifies whether content approval is enabled for the list."""
912
884
  return self.properties.get("EnableModeration", None)
913
885
 
914
886
  @property
915
887
  def enable_request_sign_off(self):
916
- """
917
- :rtype: bool or None
918
- """
888
+ # type: () -> Optional[bool]
919
889
  return self.properties.get("EnableRequestSignOff", None)
920
890
 
921
891
  @property
922
892
  def enable_versioning(self):
923
- """
924
- Specifies whether content approval is enabled for the list.
925
- :rtype: bool or None
926
- """
893
+ # type: () -> Optional[bool]
894
+ """Specifies whether content approval is enabled for the list."""
927
895
  return self.properties.get("EnableVersioning", None)
928
896
 
929
897
  @property
930
898
  def exclude_from_offline_client(self):
899
+ # type: () -> Optional[bool]
931
900
  """
932
901
  This doesn't block sync but acts as a recommendation to the client to not take this list offline.
933
902
  This gets returned as part of list properties in GetListSchema soap call.
934
- :rtype: bool or None
935
903
  """
936
904
  return self.properties.get("ExcludeFromOfflineClient", None)
937
905
 
938
906
  @property
939
907
  def exempt_from_block_download_of_non_viewable_files(self):
908
+ # type: () -> Optional[bool]
940
909
  """
941
910
  Property indicating whether the list is exempt from the policy to block download of non-server handled files.
942
911
  This SHOULD be set using the SetExemptFromBlockDownloadOfNonViewableFiles (section 3.2.5.79.2.1.25) method.
943
- :rtype: bool or None
944
912
  """
945
913
  return self.properties.get("ExemptFromBlockDownloadOfNonViewableFiles", None)
946
914
 
947
915
  @property
948
916
  def file_save_post_processing_enabled(self):
917
+ # type: () -> Optional[bool]
949
918
  """
950
919
  Specifies whether or not the files in the list can be processed in asynchronous manner
951
920
  Specify a value of true if the list files can be processed asynchronously; specify false if otherwise.
952
- :rtype: bool or None
953
921
  """
954
922
  return self.properties.get("FileSavePostProcessingEnabled", None)
955
923
 
956
924
  @property
957
925
  def force_checkout(self):
958
- """
959
- Specifies whether check out is required when adding or editing documents in the list.
960
- :rtype: bool or None
961
- """
926
+ # type: () -> Optional[bool]
927
+ """Specifies whether check out is required when adding or editing documents in the list"""
962
928
  return self.properties.get("ForceCheckout", None)
963
929
 
964
930
  @property
965
931
  def has_content_assembly_templates(self):
966
- """
967
- :rtype: bool or None
968
- """
932
+ # type: () -> Optional[bool]
933
+ """ """
969
934
  return self.properties.get("HasContentAssemblyTemplates", None)
970
935
 
971
936
  @property
@@ -1039,35 +1004,34 @@ class List(SecurableObject):
1039
1004
 
1040
1005
  @property
1041
1006
  def content_types_enabled(self):
1042
- """Specifies whether content types are enabled for the list.
1043
- :rtype: bool or None
1044
- """
1007
+ # type: () -> Optional[bool]
1008
+ """Specifies whether content types are enabled for the list."""
1045
1009
  return self.properties.get("ContentTypesEnabled", None)
1046
1010
 
1047
1011
  @property
1048
1012
  def is_private(self):
1013
+ # type: () -> Optional[bool]
1049
1014
  """
1050
1015
  Specifies whether the list is a private list with restricted permissions.
1051
1016
  True if the list is a private list, otherwise False.
1052
- :rtype: bool or None
1053
1017
  """
1054
1018
  return self.properties.get("IsPrivate", None)
1055
1019
 
1056
1020
  @property
1057
1021
  def is_site_assets_library(self):
1022
+ # type: () -> Optional[bool]
1058
1023
  """
1059
1024
  Specifies whether the list is designated as a default asset location for images or other files which the
1060
1025
  users upload to their wiki pages.
1061
- :rtype: bool or None
1062
1026
  """
1063
1027
  return self.properties.get("IsSiteAssetsLibrary", None)
1064
1028
 
1065
1029
  @property
1066
1030
  def is_system_list(self):
1031
+ # type: () -> Optional[bool]
1067
1032
  """
1068
1033
  Indicates whether the list is system list that does not contain end user data and created by system account.
1069
1034
  A value of True means yes.
1070
- :rtype: bool or None
1071
1035
  """
1072
1036
  return self.properties.get("IsSystemList", None)
1073
1037
 
@@ -1117,10 +1081,8 @@ class List(SecurableObject):
1117
1081
 
1118
1082
  @property
1119
1083
  def item_count(self):
1120
- """
1121
- Gets a value that specifies the number of list items in the list.
1122
- :rtype: int or None
1123
- """
1084
+ # type: () -> Optional[int]
1085
+ """Gets a value that specifies the number of list items in the list"""
1124
1086
  return self.properties.get("ItemCount", None)
1125
1087
 
1126
1088
  @property
@@ -1150,33 +1112,32 @@ class List(SecurableObject):
1150
1112
 
1151
1113
  @property
1152
1114
  def list_experience_options(self):
1115
+ # type: () -> Optional[int]
1153
1116
  """
1154
1117
  Gets or sets the list to new experience, classic experience or default experience set by my administrator.
1155
- :rtype: int or None
1156
1118
  """
1157
1119
  return self.properties.get("ListExperienceOptions", None)
1158
1120
 
1159
1121
  @property
1160
1122
  def list_form_customized(self):
1161
- """
1162
- :rtype: bool or None
1163
- """
1123
+ # type: () -> Optional[bool]
1124
+ """ """
1164
1125
  return self.properties.get("ListFormCustomized", None)
1165
1126
 
1166
1127
  @property
1167
1128
  def list_item_entity_type_full_name(self):
1129
+ # type: () -> Optional[str]
1168
1130
  """
1169
1131
  Specifies the full type name of the list item.
1170
- :rtype: str or None
1171
1132
  """
1172
1133
  return self.properties.get("ListItemEntityTypeFullName", None)
1173
1134
 
1174
1135
  @property
1175
1136
  def major_version_limit(self):
1137
+ # type: () -> Optional[int]
1176
1138
  """
1177
1139
  Gets the maximum number of major versions allowed for an item in a document library that uses version
1178
1140
  control with major versions only.
1179
- :rtype: int or None
1180
1141
  """
1181
1142
  return self.properties.get("MajorVersionLimit", None)
1182
1143
 
@@ -1242,33 +1203,27 @@ class List(SecurableObject):
1242
1203
 
1243
1204
  @property
1244
1205
  def read_security(self):
1245
- """
1246
- Gets or sets the Read security setting for the list.
1247
- :rtype: int or None
1248
- """
1206
+ # type: () -> Optional[int]
1207
+ """Gets or sets the Read security setting for the list."""
1249
1208
  return self.properties.get("ReadSecurity", None)
1250
1209
 
1251
1210
  @property
1252
1211
  def server_template_can_create_folders(self):
1212
+ # type: () -> Optional[bool]
1253
1213
  """
1254
1214
  Specifies whether the list template the list is based on allows the creation of folders.
1255
- :rtype: bool or None
1256
1215
  """
1257
1216
  return self.properties.get("ServerTemplateCanCreateFolders", None)
1258
1217
 
1259
1218
  @property
1260
1219
  def show_hidden_fields_in_modern_form(self):
1261
- """
1262
- :rtype: bool or None
1263
- """
1220
+ # type: () -> Optional[bool]
1264
1221
  return self.properties.get("ShowHiddenFieldsInModernForm", None)
1265
1222
 
1266
1223
  @property
1267
1224
  def title(self):
1268
1225
  # type: () -> Optional[str]
1269
- """
1270
- Gets the displayed title for the list.
1271
- """
1226
+ """Gets the displayed title for the list."""
1272
1227
  return self.properties.get("Title", None)
1273
1228
 
1274
1229
  @title.setter
@@ -1278,22 +1233,22 @@ class List(SecurableObject):
1278
1233
 
1279
1234
  @property
1280
1235
  def default_content_approval_workflow_id(self):
1236
+ # type: () -> Optional[str]
1281
1237
  """
1282
1238
  Specifies the default workflow identifier for content approval on the list. It MUST be an empty GUID
1283
- if there is no default content approval workflow.
1284
- :rtype: str
1239
+ if there is no default content approval workflow
1285
1240
  """
1286
1241
  return self.properties.get("DefaultContentApprovalWorkflowId", None)
1287
1242
 
1288
1243
  @property
1289
1244
  def description(self):
1290
- """Gets the description for the list.
1291
- :rtype: str or None
1292
- """
1245
+ # type: () -> Optional[str]
1246
+ """Gets the description for the list."""
1293
1247
  return self.properties.get("Description", None)
1294
1248
 
1295
1249
  @description.setter
1296
1250
  def description(self, val):
1251
+ # type: (str) -> None
1297
1252
  """Sets the description for the list."""
1298
1253
  self.set_property("Description", val)
1299
1254
 
@@ -1314,18 +1269,16 @@ class List(SecurableObject):
1314
1269
 
1315
1270
  @property
1316
1271
  def schema_xml(self):
1317
- """
1318
- Specifies the list schema of the list.
1319
- :rtype: str or None
1320
- """
1272
+ # type: () -> Optional[str]
1273
+ """Specifies the list schema of the list."""
1321
1274
  return self.properties.get("SchemaXml", None)
1322
1275
 
1323
1276
  @property
1324
1277
  def template_feature_id(self):
1278
+ # type: () -> Optional[str]
1325
1279
  """
1326
1280
  Specifies the feature identifier of the feature that contains the list schema for the list.
1327
1281
  It MUST be an empty GUID if the list schema for the list is not contained within a feature.
1328
- :rtype: str or None
1329
1282
  """
1330
1283
  return self.properties.get("TemplateFeatureId", None)
1331
1284
 
@@ -3,7 +3,9 @@ from office365.sharepoint.entity_collection import EntityCollection
3
3
  from office365.sharepoint.marketplace.app_metadata import CorporateCatalogAppMetadata
4
4
 
5
5
 
6
- class CorporateCatalogAppMetadataCollection(EntityCollection):
6
+ class CorporateCatalogAppMetadataCollection(
7
+ EntityCollection[CorporateCatalogAppMetadata]
8
+ ):
7
9
  """Collection of app metadata."""
8
10
 
9
11
  def __init__(self, context, resource_path=None):