From a00e6936e9900f4dc650095b679fd8a78bec22e7 Mon Sep 17 00:00:00 2001 From: box-sdk-build Date: Tue, 6 Oct 2026 07:11:32 -0700 Subject: [PATCH] feat(python): Add py.typed marker for type checking (box/box-codegen#996) --- .codegen.json | 2 +- box_sdk_gen/box/ccg_auth.py | 12 ++-- box_sdk_gen/box/developer_token_auth.py | 6 +- box_sdk_gen/box/errors.py | 6 +- box_sdk_gen/box/event_stream.py | 3 +- box_sdk_gen/box/jwt_auth.py | 12 ++-- box_sdk_gen/box/oauth.py | 10 ++- box_sdk_gen/client.py | 10 ++- box_sdk_gen/internal/base_object.py | 12 +++- box_sdk_gen/internal/utils.py | 69 ++++++++++++------- box_sdk_gen/managers/ai.py | 2 +- box_sdk_gen/managers/ai_studio.py | 2 +- box_sdk_gen/managers/app_item_associations.py | 2 +- box_sdk_gen/managers/archives.py | 2 +- box_sdk_gen/managers/authorization.py | 2 +- box_sdk_gen/managers/automate_workflows.py | 2 +- box_sdk_gen/managers/avatars.py | 2 +- box_sdk_gen/managers/chunked_uploads.py | 2 +- box_sdk_gen/managers/classifications.py | 2 +- .../collaboration_allowlist_entries.py | 2 +- .../collaboration_allowlist_exempt_targets.py | 2 +- box_sdk_gen/managers/collections.py | 2 +- box_sdk_gen/managers/comments.py | 2 +- box_sdk_gen/managers/device_pinners.py | 2 +- box_sdk_gen/managers/docgen.py | 2 +- box_sdk_gen/managers/docgen_template.py | 2 +- box_sdk_gen/managers/downloads.py | 2 +- box_sdk_gen/managers/email_aliases.py | 2 +- .../managers/enterprise_configurations.py | 2 +- box_sdk_gen/managers/events.py | 10 +-- box_sdk_gen/managers/external_users.py | 2 +- box_sdk_gen/managers/file_classifications.py | 2 +- box_sdk_gen/managers/file_metadata.py | 2 +- box_sdk_gen/managers/file_requests.py | 2 +- .../managers/file_version_legal_holds.py | 2 +- .../managers/file_version_retentions.py | 2 +- box_sdk_gen/managers/file_versions.py | 2 +- box_sdk_gen/managers/file_watermarks.py | 2 +- box_sdk_gen/managers/files.py | 2 +- .../managers/folder_classifications.py | 2 +- box_sdk_gen/managers/folder_locks.py | 2 +- box_sdk_gen/managers/folder_metadata.py | 2 +- box_sdk_gen/managers/folder_watermarks.py | 2 +- box_sdk_gen/managers/folders.py | 2 +- box_sdk_gen/managers/groups.py | 2 +- box_sdk_gen/managers/hub_collaborations.py | 2 +- box_sdk_gen/managers/hub_document.py | 2 +- box_sdk_gen/managers/hub_items.py | 2 +- box_sdk_gen/managers/hubs.py | 2 +- box_sdk_gen/managers/integration_mappings.py | 2 +- box_sdk_gen/managers/invites.py | 2 +- box_sdk_gen/managers/legal_hold_policies.py | 2 +- .../managers/legal_hold_policy_assignments.py | 2 +- box_sdk_gen/managers/list_collaborations.py | 2 +- box_sdk_gen/managers/memberships.py | 2 +- .../managers/metadata_cascade_policies.py | 2 +- box_sdk_gen/managers/metadata_taxonomies.py | 2 +- box_sdk_gen/managers/metadata_templates.py | 2 +- box_sdk_gen/managers/notes.py | 2 +- box_sdk_gen/managers/query.py | 2 +- box_sdk_gen/managers/recent_items.py | 2 +- box_sdk_gen/managers/retention_policies.py | 2 +- .../managers/retention_policy_assignments.py | 2 +- box_sdk_gen/managers/search.py | 2 +- box_sdk_gen/managers/session_termination.py | 2 +- .../managers/shared_links_app_items.py | 2 +- box_sdk_gen/managers/shared_links_files.py | 2 +- box_sdk_gen/managers/shared_links_folders.py | 2 +- .../managers/shared_links_web_links.py | 2 +- .../shield_information_barrier_reports.py | 2 +- ...eld_information_barrier_segment_members.py | 2 +- ...nformation_barrier_segment_restrictions.py | 2 +- .../shield_information_barrier_segments.py | 2 +- .../managers/shield_information_barriers.py | 2 +- box_sdk_gen/managers/shield_lists.py | 2 +- box_sdk_gen/managers/sign_requests.py | 2 +- box_sdk_gen/managers/sign_templates.py | 2 +- box_sdk_gen/managers/skills.py | 2 +- box_sdk_gen/managers/storage_policies.py | 2 +- .../managers/storage_policy_assignments.py | 2 +- box_sdk_gen/managers/task_assignments.py | 2 +- box_sdk_gen/managers/tasks.py | 2 +- .../terms_of_service_user_statuses.py | 2 +- box_sdk_gen/managers/terms_of_services.py | 2 +- box_sdk_gen/managers/transfer.py | 2 +- box_sdk_gen/managers/trashed_files.py | 2 +- box_sdk_gen/managers/trashed_folders.py | 2 +- box_sdk_gen/managers/trashed_items.py | 2 +- box_sdk_gen/managers/trashed_web_links.py | 2 +- box_sdk_gen/managers/uploads.py | 2 +- box_sdk_gen/managers/user_collaborations.py | 2 +- box_sdk_gen/managers/users.py | 2 +- box_sdk_gen/managers/web_links.py | 2 +- box_sdk_gen/managers/webhooks.py | 2 +- box_sdk_gen/managers/workflows.py | 2 +- box_sdk_gen/managers/zip_downloads.py | 2 +- box_sdk_gen/networking/box_network_client.py | 48 +++++++------ box_sdk_gen/networking/multipart_stream.py | 3 +- box_sdk_gen/networking/network.py | 18 ++--- box_sdk_gen/py.typed | 0 box_sdk_gen/serialization/json.py | 51 +++++++++++--- setup.py | 2 + 102 files changed, 264 insertions(+), 180 deletions(-) create mode 100644 box_sdk_gen/py.typed diff --git a/.codegen.json b/.codegen.json index b053f0119..394d35b00 100644 --- a/.codegen.json +++ b/.codegen.json @@ -1 +1 @@ -{ "engineHash": "fd56d95", "specHash": "c5a35a6", "version": "10.17.0" } +{ "engineHash": "d55532c", "specHash": "c5a35a6", "version": "10.17.0" } diff --git a/box_sdk_gen/box/ccg_auth.py b/box_sdk_gen/box/ccg_auth.py index f4dbd05a8..811923ab4 100644 --- a/box_sdk_gen/box/ccg_auth.py +++ b/box_sdk_gen/box/ccg_auth.py @@ -35,7 +35,7 @@ def __init__( *, enterprise_id: Optional[str] = None, user_id: Optional[str] = None, - token_storage: TokenStorage = None + token_storage: Optional[TokenStorage] = None ): """ :param client_id: Box API key used for identifying the application the user is authenticating with @@ -47,7 +47,7 @@ def __init__( :param user_id: The user id to authenticate. This value is not required. But if it is provided, then the user will be auto-authenticated at the time of the first API call., defaults to None :type user_id: Optional[str], optional :param token_storage: Object responsible for storing token. If no custom implementation provided,the token will be stored in memory., defaults to None - :type token_storage: TokenStorage, optional + :type token_storage: Optional[TokenStorage], optional """ if token_storage is None: token_storage = InMemoryTokenStorage() @@ -122,7 +122,7 @@ def retrieve_authorization_header( return ''.join(['Bearer ', token.access_token]) def with_user_subject( - self, user_id: str, *, token_storage: TokenStorage = None + self, user_id: str, *, token_storage: Optional[TokenStorage] = None ) -> 'BoxCCGAuth': """ Create a new BoxCCGAuth instance that uses the provided user ID as the subject ID. @@ -138,7 +138,7 @@ def with_user_subject( :param user_id: The id of the user to authenticate :type user_id: str :param token_storage: Object responsible for storing token in newly created BoxCCGAuth. If no custom implementation provided, the token will be stored in memory., defaults to None - :type token_storage: TokenStorage, optional + :type token_storage: Optional[TokenStorage], optional """ if token_storage is None: token_storage = InMemoryTokenStorage() @@ -152,14 +152,14 @@ def with_user_subject( return BoxCCGAuth(config=new_config) def with_enterprise_subject( - self, enterprise_id: str, *, token_storage: TokenStorage = None + self, enterprise_id: str, *, token_storage: Optional[TokenStorage] = None ) -> 'BoxCCGAuth': """ Create a new BoxCCGAuth instance that uses the provided enterprise ID as the subject ID. :param enterprise_id: The id of the enterprise to authenticate :type enterprise_id: str :param token_storage: Object responsible for storing token in newly created BoxCCGAuth. If no custom implementation provided, the token will be stored in memory., defaults to None - :type token_storage: TokenStorage, optional + :type token_storage: Optional[TokenStorage], optional """ if token_storage is None: token_storage = InMemoryTokenStorage() diff --git a/box_sdk_gen/box/developer_token_auth.py b/box_sdk_gen/box/developer_token_auth.py index 8c803c8a4..08c24c12d 100644 --- a/box_sdk_gen/box/developer_token_auth.py +++ b/box_sdk_gen/box/developer_token_auth.py @@ -34,10 +34,12 @@ def __init__( class BoxDeveloperTokenAuth(Authentication): - def __init__(self, token: str, *, config: DeveloperTokenConfig = None, **kwargs): + def __init__( + self, token: str, *, config: Optional[DeveloperTokenConfig] = None, **kwargs + ): """ :param config: Configuration object of DeveloperTokenAuth., defaults to None - :type config: DeveloperTokenConfig, optional + :type config: Optional[DeveloperTokenConfig], optional """ super().__init__(**kwargs) self.token = token diff --git a/box_sdk_gen/box/errors.py b/box_sdk_gen/box/errors.py index cc9b36a9f..5eb7b53c2 100644 --- a/box_sdk_gen/box/errors.py +++ b/box_sdk_gen/box/errors.py @@ -77,7 +77,7 @@ def __init__( self, status_code: int, headers: Dict[str, str], - body: Dict = None, + body: Optional[Dict] = None, raw_body: Optional[str] = None, code: Optional[str] = None, context_info: Optional[Dict[str, Any]] = None, @@ -122,9 +122,9 @@ def __init__( response_info: ResponseInfo, message: str, timestamp: Optional[datetime] = None, - error: Optional[str] = None, + error: Optional[Exception] = None, *, - data_sanitizer: DataSanitizer = None, + data_sanitizer: Optional[DataSanitizer] = None, **kwargs, ): super().__init__(message=message, timestamp=timestamp, error=error, **kwargs) diff --git a/box_sdk_gen/box/event_stream.py b/box_sdk_gen/box/event_stream.py index efa8719b3..6ce9a3e54 100644 --- a/box_sdk_gen/box/event_stream.py +++ b/box_sdk_gen/box/event_stream.py @@ -149,7 +149,8 @@ def _do_long_poll(self) -> str: try: self._long_polling_retries += 1 - long_poll_url = self._long_polling_info.url + # _get_long_poll_info always runs before the first poll + long_poll_url: str = self._long_polling_info.url # type: ignore[union-attr, assignment] separator = '&' if '?' in long_poll_url else '?' long_poll_with_stream_position = ( f"{long_poll_url}{separator}stream_position={self._stream_position}" diff --git a/box_sdk_gen/box/jwt_auth.py b/box_sdk_gen/box/jwt_auth.py index 0040f7da9..7f268b282 100644 --- a/box_sdk_gen/box/jwt_auth.py +++ b/box_sdk_gen/box/jwt_auth.py @@ -165,8 +165,8 @@ def __init__( enterprise_id: Optional[str] = None, user_id: Optional[str] = None, algorithm: Optional[JwtAlgorithm] = JwtAlgorithm.RS256, - token_storage: TokenStorage = None, - private_key_decryptor: PrivateKeyDecryptor = None + token_storage: Optional[TokenStorage] = None, + private_key_decryptor: Optional[PrivateKeyDecryptor] = None ): """ :param client_id: App client ID @@ -356,7 +356,7 @@ def retrieve_authorization_header( return ''.join(['Bearer ', token.access_token]) def with_user_subject( - self, user_id: str, *, token_storage: TokenStorage = None + self, user_id: str, *, token_storage: Optional[TokenStorage] = None ) -> 'BoxJWTAuth': """ Create a new BoxJWTAuth instance that uses the provided user ID as the subject of the JWT assertion. @@ -372,7 +372,7 @@ def with_user_subject( :param user_id: The id of the user to authenticate :type user_id: str :param token_storage: Object responsible for storing token in newly created BoxJWTAuth. If no custom implementation provided, the token will be stored in memory., defaults to None - :type token_storage: TokenStorage, optional + :type token_storage: Optional[TokenStorage], optional """ if token_storage is None: token_storage = InMemoryTokenStorage() @@ -390,14 +390,14 @@ def with_user_subject( return new_auth def with_enterprise_subject( - self, enterprise_id: str, *, token_storage: TokenStorage = None + self, enterprise_id: str, *, token_storage: Optional[TokenStorage] = None ) -> 'BoxJWTAuth': """ Create a new BoxJWTAuth instance that uses the provided enterprise ID as the subject of the JWT assertion. :param enterprise_id: The id of the enterprise to authenticate :type enterprise_id: str :param token_storage: Object responsible for storing token in newly created BoxJWTAuth. If no custom implementation provided, the token will be stored in memory., defaults to None - :type token_storage: TokenStorage, optional + :type token_storage: Optional[TokenStorage], optional """ if token_storage is None: token_storage = InMemoryTokenStorage() diff --git a/box_sdk_gen/box/oauth.py b/box_sdk_gen/box/oauth.py index 1c62ead04..b4d1dcba0 100644 --- a/box_sdk_gen/box/oauth.py +++ b/box_sdk_gen/box/oauth.py @@ -37,7 +37,11 @@ class OAuthConfig: def __init__( - self, client_id: str, client_secret: str, *, token_storage: TokenStorage = None + self, + client_id: str, + client_secret: str, + *, + token_storage: Optional[TokenStorage] = None ): if token_storage is None: token_storage = InMemoryTokenStorage() @@ -85,7 +89,9 @@ def __init__(self, config: OAuthConfig, **kwargs): self.config = config self.token_storage = self.config.token_storage - def get_authorize_url(self, *, options: GetAuthorizeUrlOptions = None) -> str: + def get_authorize_url( + self, *, options: Optional[GetAuthorizeUrlOptions] = None + ) -> str: """ Get the authorization URL for the app user. """ diff --git a/box_sdk_gen/client.py b/box_sdk_gen/client.py index 1be4933e1..055076108 100644 --- a/box_sdk_gen/client.py +++ b/box_sdk_gen/client.py @@ -1,5 +1,7 @@ from typing import Dict +from typing import Optional + from box_sdk_gen.managers.authorization import AuthorizationManager from box_sdk_gen.managers.files import FilesManager @@ -216,7 +218,9 @@ class BoxClient: - def __init__(self, auth: Authentication, *, network_session: NetworkSession = None): + def __init__( + self, auth: Authentication, *, network_session: Optional[NetworkSession] = None + ): if network_session is None: network_session = NetworkSession(base_urls=BaseUrls()) self.auth = auth @@ -531,12 +535,12 @@ def with_suppressed_notifications(self) -> 'BoxClient': ) def with_extra_headers( - self, *, extra_headers: Dict[str, str] = None + self, *, extra_headers: Optional[Dict[str, str]] = None ) -> 'BoxClient': """ Create a new client with a custom set of headers that will be included in every API call :param extra_headers: Custom set of headers that will be included in every API call, defaults to None - :type extra_headers: Dict[str, str], optional + :type extra_headers: Optional[Dict[str, str]], optional """ if extra_headers is None: extra_headers = {} diff --git a/box_sdk_gen/internal/base_object.py b/box_sdk_gen/internal/base_object.py index f9ce7718e..f2ee62d1c 100644 --- a/box_sdk_gen/internal/base_object.py +++ b/box_sdk_gen/internal/base_object.py @@ -1,13 +1,18 @@ from datetime import datetime, date from enum import EnumMeta, Enum +import typing as _typing from typing import get_args, get_origin, Union, Optional from .null_value import NullValue class BaseObject: - _discriminator = (None, {}) - _json_to_fields_mapping = {} - _fields_to_json_mapping = {} + # typing is aliased because this module is star-exported and Collection is also a schema name + _discriminator = ( + None, + {}, + ) # type: _typing.Tuple[Optional[str], _typing.Collection[str]] + _json_to_fields_mapping = {} # type: _typing.Dict[str, str] + _fields_to_json_mapping = {} # type: _typing.Dict[str, str] def __init__(self, **kwargs): self._raw_data: dict = {} @@ -40,6 +45,7 @@ def to_dict(self) -> dict: continue if v is None: continue + value: _typing.Any if isinstance(v, NullValue): value = None elif type(v) is list: diff --git a/box_sdk_gen/internal/utils.py b/box_sdk_gen/internal/utils.py index dacf187e0..1cb770051 100644 --- a/box_sdk_gen/internal/utils.py +++ b/box_sdk_gen/internal/utils.py @@ -10,7 +10,17 @@ from random import uniform from enum import Enum from io import SEEK_CUR, SEEK_END, SEEK_SET, BufferedIOBase, BytesIO -from typing import Any, Callable, Dict, Iterable, Optional, TypeVar, BinaryIO +from typing import ( + TYPE_CHECKING, + Any, + Callable, + Dict, + Iterable, + Optional, + TypeVar, + BinaryIO, + overload, +) from abc import abstractmethod from typing import Any @@ -103,7 +113,7 @@ def seek(self, position, whence=SEEK_SET): return self._position -def get_env_var(name: str) -> str: +def get_env_var(name: str) -> Optional[str]: return os.getenv(name) @@ -170,25 +180,38 @@ def prepare_params(map: Dict[str, Optional[str]]) -> Dict[str, str]: return {k: v for k, v in map.items() if v is not None} -def to_string(value: Any) -> Optional[str]: - if value is None: - return None - if isinstance(value, datetime.datetime): - return date_time_to_string(value) - if isinstance(value, datetime.date): - return date_to_string(value) - if ( - isinstance(value, BaseObject) - or isinstance(value, list) - and len(value) >= 1 - and isinstance(value[0], BaseObject) - ): - return ''.join(sd_to_json(serialize(value)).split()) - if isinstance(value, list): - return ','.join(map(to_string, value)) - if isinstance(value, Enum): - return value.value - return str(value) +# Overloads exist for type checkers only, so the runtime function stays unchanged +if TYPE_CHECKING: + + @overload + def to_string(value: None) -> None: ... + + @overload + def to_string(value: Any) -> str: ... + + def to_string(value: Any) -> Optional[str]: ... + +else: + + def to_string(value: Any) -> Optional[str]: + if value is None: + return None + if isinstance(value, datetime.datetime): + return date_time_to_string(value) + if isinstance(value, datetime.date): + return date_to_string(value) + if ( + isinstance(value, BaseObject) + or isinstance(value, list) + and len(value) >= 1 + and isinstance(value[0], BaseObject) + ): + return ''.join(sd_to_json(serialize(value)).split()) + if isinstance(value, list): + return ','.join(map(to_string, value)) + if isinstance(value, Enum): + return value.value + return str(value) class HashName(str, Enum): @@ -210,7 +233,7 @@ def digest_hash(self, encoding): return base64.b64encode(self.hash.digest()).decode("utf-8") -def hex_to_base_64(data: hex): +def hex_to_base_64(data: str) -> str: return base64.b64encode(bytes.fromhex(data)).decode() @@ -321,7 +344,7 @@ class JwtSignOptions(BaseObject): def __init__( self, algorithm: JwtAlgorithm, - headers: Dict[str, str] = None, + headers: Optional[Dict[str, str]] = None, audience: Optional[str] = None, issuer: Optional[str] = None, subject: Optional[str] = None, diff --git a/box_sdk_gen/managers/ai.py b/box_sdk_gen/managers/ai.py index 001f0dc2d..8093c9a35 100644 --- a/box_sdk_gen/managers/ai.py +++ b/box_sdk_gen/managers/ai.py @@ -239,7 +239,7 @@ def __init__( self, *, auth: Optional[Authentication] = None, - network_session: NetworkSession = None + network_session: Optional[NetworkSession] = None ): if network_session is None: network_session = NetworkSession() diff --git a/box_sdk_gen/managers/ai_studio.py b/box_sdk_gen/managers/ai_studio.py index d43740e2a..e193c935c 100644 --- a/box_sdk_gen/managers/ai_studio.py +++ b/box_sdk_gen/managers/ai_studio.py @@ -68,7 +68,7 @@ def __init__( self, *, auth: Optional[Authentication] = None, - network_session: NetworkSession = None + network_session: Optional[NetworkSession] = None ): if network_session is None: network_session = NetworkSession() diff --git a/box_sdk_gen/managers/app_item_associations.py b/box_sdk_gen/managers/app_item_associations.py index 6f32278ed..66e08ed93 100644 --- a/box_sdk_gen/managers/app_item_associations.py +++ b/box_sdk_gen/managers/app_item_associations.py @@ -38,7 +38,7 @@ def __init__( self, *, auth: Optional[Authentication] = None, - network_session: NetworkSession = None + network_session: Optional[NetworkSession] = None ): if network_session is None: network_session = NetworkSession() diff --git a/box_sdk_gen/managers/archives.py b/box_sdk_gen/managers/archives.py index 24c64bd29..3615d6ec2 100644 --- a/box_sdk_gen/managers/archives.py +++ b/box_sdk_gen/managers/archives.py @@ -46,7 +46,7 @@ def __init__( self, *, auth: Optional[Authentication] = None, - network_session: NetworkSession = None + network_session: Optional[NetworkSession] = None ): if network_session is None: network_session = NetworkSession() diff --git a/box_sdk_gen/managers/authorization.py b/box_sdk_gen/managers/authorization.py index e03ae65e5..23b3d690f 100644 --- a/box_sdk_gen/managers/authorization.py +++ b/box_sdk_gen/managers/authorization.py @@ -93,7 +93,7 @@ def __init__( self, *, auth: Optional[Authentication] = None, - network_session: NetworkSession = None + network_session: Optional[NetworkSession] = None ): if network_session is None: network_session = NetworkSession() diff --git a/box_sdk_gen/managers/automate_workflows.py b/box_sdk_gen/managers/automate_workflows.py index 4ce3592d6..f43df97ef 100644 --- a/box_sdk_gen/managers/automate_workflows.py +++ b/box_sdk_gen/managers/automate_workflows.py @@ -52,7 +52,7 @@ def __init__( self, *, auth: Optional[Authentication] = None, - network_session: NetworkSession = None + network_session: Optional[NetworkSession] = None ): if network_session is None: network_session = NetworkSession() diff --git a/box_sdk_gen/managers/avatars.py b/box_sdk_gen/managers/avatars.py index a6ff17103..cc020bd96 100644 --- a/box_sdk_gen/managers/avatars.py +++ b/box_sdk_gen/managers/avatars.py @@ -40,7 +40,7 @@ def __init__( self, *, auth: Optional[Authentication] = None, - network_session: NetworkSession = None + network_session: Optional[NetworkSession] = None ): if network_session is None: network_session = NetworkSession() diff --git a/box_sdk_gen/managers/chunked_uploads.py b/box_sdk_gen/managers/chunked_uploads.py index 3b790a178..8cedb0174 100644 --- a/box_sdk_gen/managers/chunked_uploads.py +++ b/box_sdk_gen/managers/chunked_uploads.py @@ -99,7 +99,7 @@ def __init__( self, *, auth: Optional[Authentication] = None, - network_session: NetworkSession = None + network_session: Optional[NetworkSession] = None ): if network_session is None: network_session = NetworkSession() diff --git a/box_sdk_gen/managers/classifications.py b/box_sdk_gen/managers/classifications.py index a76312ce7..5a6cd95cf 100644 --- a/box_sdk_gen/managers/classifications.py +++ b/box_sdk_gen/managers/classifications.py @@ -483,7 +483,7 @@ def __init__( self, *, auth: Optional[Authentication] = None, - network_session: NetworkSession = None + network_session: Optional[NetworkSession] = None ): if network_session is None: network_session = NetworkSession() diff --git a/box_sdk_gen/managers/collaboration_allowlist_entries.py b/box_sdk_gen/managers/collaboration_allowlist_entries.py index 15176d4fe..61c4a2fef 100644 --- a/box_sdk_gen/managers/collaboration_allowlist_entries.py +++ b/box_sdk_gen/managers/collaboration_allowlist_entries.py @@ -54,7 +54,7 @@ def __init__( self, *, auth: Optional[Authentication] = None, - network_session: NetworkSession = None + network_session: Optional[NetworkSession] = None ): if network_session is None: network_session = NetworkSession() diff --git a/box_sdk_gen/managers/collaboration_allowlist_exempt_targets.py b/box_sdk_gen/managers/collaboration_allowlist_exempt_targets.py index aaacce06f..0b46d7878 100644 --- a/box_sdk_gen/managers/collaboration_allowlist_exempt_targets.py +++ b/box_sdk_gen/managers/collaboration_allowlist_exempt_targets.py @@ -58,7 +58,7 @@ def __init__( self, *, auth: Optional[Authentication] = None, - network_session: NetworkSession = None + network_session: Optional[NetworkSession] = None ): if network_session is None: network_session = NetworkSession() diff --git a/box_sdk_gen/managers/collections.py b/box_sdk_gen/managers/collections.py index bb060a8d3..01f112266 100644 --- a/box_sdk_gen/managers/collections.py +++ b/box_sdk_gen/managers/collections.py @@ -44,7 +44,7 @@ def __init__( self, *, auth: Optional[Authentication] = None, - network_session: NetworkSession = None + network_session: Optional[NetworkSession] = None ): if network_session is None: network_session = NetworkSession() diff --git a/box_sdk_gen/managers/comments.py b/box_sdk_gen/managers/comments.py index f09708a1b..c953636d5 100644 --- a/box_sdk_gen/managers/comments.py +++ b/box_sdk_gen/managers/comments.py @@ -68,7 +68,7 @@ def __init__( self, *, auth: Optional[Authentication] = None, - network_session: NetworkSession = None + network_session: Optional[NetworkSession] = None ): if network_session is None: network_session = NetworkSession() diff --git a/box_sdk_gen/managers/device_pinners.py b/box_sdk_gen/managers/device_pinners.py index 612289415..d64872521 100644 --- a/box_sdk_gen/managers/device_pinners.py +++ b/box_sdk_gen/managers/device_pinners.py @@ -47,7 +47,7 @@ def __init__( self, *, auth: Optional[Authentication] = None, - network_session: NetworkSession = None + network_session: Optional[NetworkSession] = None ): if network_session is None: network_session = NetworkSession() diff --git a/box_sdk_gen/managers/docgen.py b/box_sdk_gen/managers/docgen.py index b5aad98a2..09b33c483 100644 --- a/box_sdk_gen/managers/docgen.py +++ b/box_sdk_gen/managers/docgen.py @@ -99,7 +99,7 @@ def __init__( self, *, auth: Optional[Authentication] = None, - network_session: NetworkSession = None + network_session: Optional[NetworkSession] = None ): if network_session is None: network_session = NetworkSession() diff --git a/box_sdk_gen/managers/docgen_template.py b/box_sdk_gen/managers/docgen_template.py index 203f2b097..6cbadf293 100644 --- a/box_sdk_gen/managers/docgen_template.py +++ b/box_sdk_gen/managers/docgen_template.py @@ -66,7 +66,7 @@ def __init__( self, *, auth: Optional[Authentication] = None, - network_session: NetworkSession = None + network_session: Optional[NetworkSession] = None ): if network_session is None: network_session = NetworkSession() diff --git a/box_sdk_gen/managers/downloads.py b/box_sdk_gen/managers/downloads.py index c5bde893c..f4f0d9f4c 100644 --- a/box_sdk_gen/managers/downloads.py +++ b/box_sdk_gen/managers/downloads.py @@ -36,7 +36,7 @@ def __init__( self, *, auth: Optional[Authentication] = None, - network_session: NetworkSession = None + network_session: Optional[NetworkSession] = None ): if network_session is None: network_session = NetworkSession() diff --git a/box_sdk_gen/managers/email_aliases.py b/box_sdk_gen/managers/email_aliases.py index 6d837b116..c54dc5574 100644 --- a/box_sdk_gen/managers/email_aliases.py +++ b/box_sdk_gen/managers/email_aliases.py @@ -42,7 +42,7 @@ def __init__( self, *, auth: Optional[Authentication] = None, - network_session: NetworkSession = None + network_session: Optional[NetworkSession] = None ): if network_session is None: network_session = NetworkSession() diff --git a/box_sdk_gen/managers/enterprise_configurations.py b/box_sdk_gen/managers/enterprise_configurations.py index 9fccb4610..dbb2b2571 100644 --- a/box_sdk_gen/managers/enterprise_configurations.py +++ b/box_sdk_gen/managers/enterprise_configurations.py @@ -46,7 +46,7 @@ def __init__( self, *, auth: Optional[Authentication] = None, - network_session: NetworkSession = None + network_session: Optional[NetworkSession] = None ): if network_session is None: network_session = NetworkSession() diff --git a/box_sdk_gen/managers/events.py b/box_sdk_gen/managers/events.py index 482b3cbcd..abbf56dd0 100644 --- a/box_sdk_gen/managers/events.py +++ b/box_sdk_gen/managers/events.py @@ -449,7 +449,7 @@ def __init__( self, *, auth: Optional[Authentication] = None, - network_session: NetworkSession = None + network_session: Optional[NetworkSession] = None ): if network_session is None: network_session = NetworkSession() @@ -664,15 +664,15 @@ def get_events( def get_event_stream( self, *, - query_params: GetEventStreamQueryParams = None, - headers: GetEventStreamHeaders = None + query_params: Optional[GetEventStreamQueryParams] = None, + headers: Optional[GetEventStreamHeaders] = None ) -> EventStream: """ Get an event stream for the Box API :param query_params: Query parameters of getEvents method, defaults to None - :type query_params: GetEventStreamQueryParams, optional + :type query_params: Optional[GetEventStreamQueryParams], optional :param headers: Headers of getEvents method, defaults to None - :type headers: GetEventStreamHeaders, optional + :type headers: Optional[GetEventStreamHeaders], optional """ if query_params is None: query_params = GetEventStreamQueryParams() diff --git a/box_sdk_gen/managers/external_users.py b/box_sdk_gen/managers/external_users.py index cf69a6a3c..40ef4350b 100644 --- a/box_sdk_gen/managers/external_users.py +++ b/box_sdk_gen/managers/external_users.py @@ -54,7 +54,7 @@ def __init__( self, *, auth: Optional[Authentication] = None, - network_session: NetworkSession = None + network_session: Optional[NetworkSession] = None ): if network_session is None: network_session = NetworkSession() diff --git a/box_sdk_gen/managers/file_classifications.py b/box_sdk_gen/managers/file_classifications.py index 58836c38e..cd99961d2 100644 --- a/box_sdk_gen/managers/file_classifications.py +++ b/box_sdk_gen/managers/file_classifications.py @@ -83,7 +83,7 @@ def __init__( self, *, auth: Optional[Authentication] = None, - network_session: NetworkSession = None + network_session: Optional[NetworkSession] = None ): if network_session is None: network_session = NetworkSession() diff --git a/box_sdk_gen/managers/file_metadata.py b/box_sdk_gen/managers/file_metadata.py index 21b7236af..ae33378e3 100644 --- a/box_sdk_gen/managers/file_metadata.py +++ b/box_sdk_gen/managers/file_metadata.py @@ -124,7 +124,7 @@ def __init__( self, *, auth: Optional[Authentication] = None, - network_session: NetworkSession = None + network_session: Optional[NetworkSession] = None ): if network_session is None: network_session = NetworkSession() diff --git a/box_sdk_gen/managers/file_requests.py b/box_sdk_gen/managers/file_requests.py index 594365858..fd17b7942 100644 --- a/box_sdk_gen/managers/file_requests.py +++ b/box_sdk_gen/managers/file_requests.py @@ -86,7 +86,7 @@ def __init__( self, *, auth: Optional[Authentication] = None, - network_session: NetworkSession = None + network_session: Optional[NetworkSession] = None ): if network_session is None: network_session = NetworkSession() diff --git a/box_sdk_gen/managers/file_version_legal_holds.py b/box_sdk_gen/managers/file_version_legal_holds.py index 2dc2451de..58eff755c 100644 --- a/box_sdk_gen/managers/file_version_legal_holds.py +++ b/box_sdk_gen/managers/file_version_legal_holds.py @@ -40,7 +40,7 @@ def __init__( self, *, auth: Optional[Authentication] = None, - network_session: NetworkSession = None + network_session: Optional[NetworkSession] = None ): if network_session is None: network_session = NetworkSession() diff --git a/box_sdk_gen/managers/file_version_retentions.py b/box_sdk_gen/managers/file_version_retentions.py index 9598a3ddd..3fc18f333 100644 --- a/box_sdk_gen/managers/file_version_retentions.py +++ b/box_sdk_gen/managers/file_version_retentions.py @@ -47,7 +47,7 @@ def __init__( self, *, auth: Optional[Authentication] = None, - network_session: NetworkSession = None + network_session: Optional[NetworkSession] = None ): if network_session is None: network_session = NetworkSession() diff --git a/box_sdk_gen/managers/file_versions.py b/box_sdk_gen/managers/file_versions.py index 238a25ae4..fce624307 100644 --- a/box_sdk_gen/managers/file_versions.py +++ b/box_sdk_gen/managers/file_versions.py @@ -54,7 +54,7 @@ def __init__( self, *, auth: Optional[Authentication] = None, - network_session: NetworkSession = None + network_session: Optional[NetworkSession] = None ): if network_session is None: network_session = NetworkSession() diff --git a/box_sdk_gen/managers/file_watermarks.py b/box_sdk_gen/managers/file_watermarks.py index c82eeb42d..79dc6be98 100644 --- a/box_sdk_gen/managers/file_watermarks.py +++ b/box_sdk_gen/managers/file_watermarks.py @@ -65,7 +65,7 @@ def __init__( self, *, auth: Optional[Authentication] = None, - network_session: NetworkSession = None + network_session: Optional[NetworkSession] = None ): if network_session is None: network_session = NetworkSession() diff --git a/box_sdk_gen/managers/files.py b/box_sdk_gen/managers/files.py index 6175976ca..6bdc09f38 100644 --- a/box_sdk_gen/managers/files.py +++ b/box_sdk_gen/managers/files.py @@ -225,7 +225,7 @@ def __init__( self, *, auth: Optional[Authentication] = None, - network_session: NetworkSession = None + network_session: Optional[NetworkSession] = None ): if network_session is None: network_session = NetworkSession() diff --git a/box_sdk_gen/managers/folder_classifications.py b/box_sdk_gen/managers/folder_classifications.py index 4241588f9..28b9e58c7 100644 --- a/box_sdk_gen/managers/folder_classifications.py +++ b/box_sdk_gen/managers/folder_classifications.py @@ -83,7 +83,7 @@ def __init__( self, *, auth: Optional[Authentication] = None, - network_session: NetworkSession = None + network_session: Optional[NetworkSession] = None ): if network_session is None: network_session = NetworkSession() diff --git a/box_sdk_gen/managers/folder_locks.py b/box_sdk_gen/managers/folder_locks.py index c7c7e8e39..450f4ad2c 100644 --- a/box_sdk_gen/managers/folder_locks.py +++ b/box_sdk_gen/managers/folder_locks.py @@ -71,7 +71,7 @@ def __init__( self, *, auth: Optional[Authentication] = None, - network_session: NetworkSession = None + network_session: Optional[NetworkSession] = None ): if network_session is None: network_session = NetworkSession() diff --git a/box_sdk_gen/managers/folder_metadata.py b/box_sdk_gen/managers/folder_metadata.py index 3a88749a9..c42e7c424 100644 --- a/box_sdk_gen/managers/folder_metadata.py +++ b/box_sdk_gen/managers/folder_metadata.py @@ -124,7 +124,7 @@ def __init__( self, *, auth: Optional[Authentication] = None, - network_session: NetworkSession = None + network_session: Optional[NetworkSession] = None ): if network_session is None: network_session = NetworkSession() diff --git a/box_sdk_gen/managers/folder_watermarks.py b/box_sdk_gen/managers/folder_watermarks.py index 56ac61a99..d93be00df 100644 --- a/box_sdk_gen/managers/folder_watermarks.py +++ b/box_sdk_gen/managers/folder_watermarks.py @@ -65,7 +65,7 @@ def __init__( self, *, auth: Optional[Authentication] = None, - network_session: NetworkSession = None + network_session: Optional[NetworkSession] = None ): if network_session is None: network_session = NetworkSession() diff --git a/box_sdk_gen/managers/folders.py b/box_sdk_gen/managers/folders.py index fc55bef41..dd7b809cd 100644 --- a/box_sdk_gen/managers/folders.py +++ b/box_sdk_gen/managers/folders.py @@ -273,7 +273,7 @@ def __init__( self, *, auth: Optional[Authentication] = None, - network_session: NetworkSession = None + network_session: Optional[NetworkSession] = None ): if network_session is None: network_session = NetworkSession() diff --git a/box_sdk_gen/managers/groups.py b/box_sdk_gen/managers/groups.py index 200116ba6..2b5d33b12 100644 --- a/box_sdk_gen/managers/groups.py +++ b/box_sdk_gen/managers/groups.py @@ -70,7 +70,7 @@ def __init__( self, *, auth: Optional[Authentication] = None, - network_session: NetworkSession = None + network_session: Optional[NetworkSession] = None ): if network_session is None: network_session = NetworkSession() diff --git a/box_sdk_gen/managers/hub_collaborations.py b/box_sdk_gen/managers/hub_collaborations.py index 158617823..d17acefbc 100644 --- a/box_sdk_gen/managers/hub_collaborations.py +++ b/box_sdk_gen/managers/hub_collaborations.py @@ -116,7 +116,7 @@ def __init__( self, *, auth: Optional[Authentication] = None, - network_session: NetworkSession = None + network_session: Optional[NetworkSession] = None ): if network_session is None: network_session = NetworkSession() diff --git a/box_sdk_gen/managers/hub_document.py b/box_sdk_gen/managers/hub_document.py index e5b80191b..3850c97be 100644 --- a/box_sdk_gen/managers/hub_document.py +++ b/box_sdk_gen/managers/hub_document.py @@ -48,7 +48,7 @@ def __init__( self, *, auth: Optional[Authentication] = None, - network_session: NetworkSession = None + network_session: Optional[NetworkSession] = None ): if network_session is None: network_session = NetworkSession() diff --git a/box_sdk_gen/managers/hub_items.py b/box_sdk_gen/managers/hub_items.py index 46a829d7b..22314d1eb 100644 --- a/box_sdk_gen/managers/hub_items.py +++ b/box_sdk_gen/managers/hub_items.py @@ -58,7 +58,7 @@ def __init__( self, *, auth: Optional[Authentication] = None, - network_session: NetworkSession = None + network_session: Optional[NetworkSession] = None ): if network_session is None: network_session = NetworkSession() diff --git a/box_sdk_gen/managers/hubs.py b/box_sdk_gen/managers/hubs.py index a919678a1..1d4779dd4 100644 --- a/box_sdk_gen/managers/hubs.py +++ b/box_sdk_gen/managers/hubs.py @@ -74,7 +74,7 @@ def __init__( self, *, auth: Optional[Authentication] = None, - network_session: NetworkSession = None + network_session: Optional[NetworkSession] = None ): if network_session is None: network_session = NetworkSession() diff --git a/box_sdk_gen/managers/integration_mappings.py b/box_sdk_gen/managers/integration_mappings.py index 49245b679..1f83512b2 100644 --- a/box_sdk_gen/managers/integration_mappings.py +++ b/box_sdk_gen/managers/integration_mappings.py @@ -91,7 +91,7 @@ def __init__( self, *, auth: Optional[Authentication] = None, - network_session: NetworkSession = None + network_session: Optional[NetworkSession] = None ): if network_session is None: network_session = NetworkSession() diff --git a/box_sdk_gen/managers/invites.py b/box_sdk_gen/managers/invites.py index e143df6fd..8ef308324 100644 --- a/box_sdk_gen/managers/invites.py +++ b/box_sdk_gen/managers/invites.py @@ -64,7 +64,7 @@ def __init__( self, *, auth: Optional[Authentication] = None, - network_session: NetworkSession = None + network_session: Optional[NetworkSession] = None ): if network_session is None: network_session = NetworkSession() diff --git a/box_sdk_gen/managers/legal_hold_policies.py b/box_sdk_gen/managers/legal_hold_policies.py index 014b75ac3..0382dd8c1 100644 --- a/box_sdk_gen/managers/legal_hold_policies.py +++ b/box_sdk_gen/managers/legal_hold_policies.py @@ -46,7 +46,7 @@ def __init__( self, *, auth: Optional[Authentication] = None, - network_session: NetworkSession = None + network_session: Optional[NetworkSession] = None ): if network_session is None: network_session = NetworkSession() diff --git a/box_sdk_gen/managers/legal_hold_policy_assignments.py b/box_sdk_gen/managers/legal_hold_policy_assignments.py index 2653ffd8d..c6ab11457 100644 --- a/box_sdk_gen/managers/legal_hold_policy_assignments.py +++ b/box_sdk_gen/managers/legal_hold_policy_assignments.py @@ -92,7 +92,7 @@ def __init__( self, *, auth: Optional[Authentication] = None, - network_session: NetworkSession = None + network_session: Optional[NetworkSession] = None ): if network_session is None: network_session = NetworkSession() diff --git a/box_sdk_gen/managers/list_collaborations.py b/box_sdk_gen/managers/list_collaborations.py index b30238ad5..dc162868a 100644 --- a/box_sdk_gen/managers/list_collaborations.py +++ b/box_sdk_gen/managers/list_collaborations.py @@ -50,7 +50,7 @@ def __init__( self, *, auth: Optional[Authentication] = None, - network_session: NetworkSession = None + network_session: Optional[NetworkSession] = None ): if network_session is None: network_session = NetworkSession() diff --git a/box_sdk_gen/managers/memberships.py b/box_sdk_gen/managers/memberships.py index 7719acbc6..c809d9849 100644 --- a/box_sdk_gen/managers/memberships.py +++ b/box_sdk_gen/managers/memberships.py @@ -82,7 +82,7 @@ def __init__( self, *, auth: Optional[Authentication] = None, - network_session: NetworkSession = None + network_session: Optional[NetworkSession] = None ): if network_session is None: network_session = NetworkSession() diff --git a/box_sdk_gen/managers/metadata_cascade_policies.py b/box_sdk_gen/managers/metadata_cascade_policies.py index e6cf00629..43454fcab 100644 --- a/box_sdk_gen/managers/metadata_cascade_policies.py +++ b/box_sdk_gen/managers/metadata_cascade_policies.py @@ -56,7 +56,7 @@ def __init__( self, *, auth: Optional[Authentication] = None, - network_session: NetworkSession = None + network_session: Optional[NetworkSession] = None ): if network_session is None: network_session = NetworkSession() diff --git a/box_sdk_gen/managers/metadata_taxonomies.py b/box_sdk_gen/managers/metadata_taxonomies.py index fe6421d68..758fea78a 100644 --- a/box_sdk_gen/managers/metadata_taxonomies.py +++ b/box_sdk_gen/managers/metadata_taxonomies.py @@ -52,7 +52,7 @@ def __init__( self, *, auth: Optional[Authentication] = None, - network_session: NetworkSession = None + network_session: Optional[NetworkSession] = None ): if network_session is None: network_session = NetworkSession() diff --git a/box_sdk_gen/managers/metadata_templates.py b/box_sdk_gen/managers/metadata_templates.py index aa93dedeb..7813f444c 100644 --- a/box_sdk_gen/managers/metadata_templates.py +++ b/box_sdk_gen/managers/metadata_templates.py @@ -291,7 +291,7 @@ def __init__( self, *, auth: Optional[Authentication] = None, - network_session: NetworkSession = None + network_session: Optional[NetworkSession] = None ): if network_session is None: network_session = NetworkSession() diff --git a/box_sdk_gen/managers/notes.py b/box_sdk_gen/managers/notes.py index 5d76d7bb3..c5a37036d 100644 --- a/box_sdk_gen/managers/notes.py +++ b/box_sdk_gen/managers/notes.py @@ -60,7 +60,7 @@ def __init__( self, *, auth: Optional[Authentication] = None, - network_session: NetworkSession = None + network_session: Optional[NetworkSession] = None ): if network_session is None: network_session = NetworkSession() diff --git a/box_sdk_gen/managers/query.py b/box_sdk_gen/managers/query.py index 82001e0ac..0fc7ae276 100644 --- a/box_sdk_gen/managers/query.py +++ b/box_sdk_gen/managers/query.py @@ -135,7 +135,7 @@ def __init__( self, *, auth: Optional[Authentication] = None, - network_session: NetworkSession = None + network_session: Optional[NetworkSession] = None ): if network_session is None: network_session = NetworkSession() diff --git a/box_sdk_gen/managers/recent_items.py b/box_sdk_gen/managers/recent_items.py index 83313a980..58acd589f 100644 --- a/box_sdk_gen/managers/recent_items.py +++ b/box_sdk_gen/managers/recent_items.py @@ -40,7 +40,7 @@ def __init__( self, *, auth: Optional[Authentication] = None, - network_session: NetworkSession = None + network_session: Optional[NetworkSession] = None ): if network_session is None: network_session = NetworkSession() diff --git a/box_sdk_gen/managers/retention_policies.py b/box_sdk_gen/managers/retention_policies.py index 5b05c1c94..1831fc575 100644 --- a/box_sdk_gen/managers/retention_policies.py +++ b/box_sdk_gen/managers/retention_policies.py @@ -82,7 +82,7 @@ def __init__( self, *, auth: Optional[Authentication] = None, - network_session: NetworkSession = None + network_session: Optional[NetworkSession] = None ): if network_session is None: network_session = NetworkSession() diff --git a/box_sdk_gen/managers/retention_policy_assignments.py b/box_sdk_gen/managers/retention_policy_assignments.py index fd612d1ec..9ead34fcf 100644 --- a/box_sdk_gen/managers/retention_policy_assignments.py +++ b/box_sdk_gen/managers/retention_policy_assignments.py @@ -101,7 +101,7 @@ def __init__( self, *, auth: Optional[Authentication] = None, - network_session: NetworkSession = None + network_session: Optional[NetworkSession] = None ): if network_session is None: network_session = NetworkSession() diff --git a/box_sdk_gen/managers/search.py b/box_sdk_gen/managers/search.py index cdfc76d84..6dbef2997 100644 --- a/box_sdk_gen/managers/search.py +++ b/box_sdk_gen/managers/search.py @@ -123,7 +123,7 @@ def __init__( self, *, auth: Optional[Authentication] = None, - network_session: NetworkSession = None + network_session: Optional[NetworkSession] = None ): if network_session is None: network_session = NetworkSession() diff --git a/box_sdk_gen/managers/session_termination.py b/box_sdk_gen/managers/session_termination.py index 756666a0c..c9f9025c4 100644 --- a/box_sdk_gen/managers/session_termination.py +++ b/box_sdk_gen/managers/session_termination.py @@ -38,7 +38,7 @@ def __init__( self, *, auth: Optional[Authentication] = None, - network_session: NetworkSession = None + network_session: Optional[NetworkSession] = None ): if network_session is None: network_session = NetworkSession() diff --git a/box_sdk_gen/managers/shared_links_app_items.py b/box_sdk_gen/managers/shared_links_app_items.py index bb9017660..cb4d39c4c 100644 --- a/box_sdk_gen/managers/shared_links_app_items.py +++ b/box_sdk_gen/managers/shared_links_app_items.py @@ -38,7 +38,7 @@ def __init__( self, *, auth: Optional[Authentication] = None, - network_session: NetworkSession = None + network_session: Optional[NetworkSession] = None ): if network_session is None: network_session = NetworkSession() diff --git a/box_sdk_gen/managers/shared_links_files.py b/box_sdk_gen/managers/shared_links_files.py index 0cfad2018..bda3c2669 100644 --- a/box_sdk_gen/managers/shared_links_files.py +++ b/box_sdk_gen/managers/shared_links_files.py @@ -237,7 +237,7 @@ def __init__( self, *, auth: Optional[Authentication] = None, - network_session: NetworkSession = None + network_session: Optional[NetworkSession] = None ): if network_session is None: network_session = NetworkSession() diff --git a/box_sdk_gen/managers/shared_links_folders.py b/box_sdk_gen/managers/shared_links_folders.py index 94be61488..d5c1ae142 100644 --- a/box_sdk_gen/managers/shared_links_folders.py +++ b/box_sdk_gen/managers/shared_links_folders.py @@ -233,7 +233,7 @@ def __init__( self, *, auth: Optional[Authentication] = None, - network_session: NetworkSession = None + network_session: Optional[NetworkSession] = None ): if network_session is None: network_session = NetworkSession() diff --git a/box_sdk_gen/managers/shared_links_web_links.py b/box_sdk_gen/managers/shared_links_web_links.py index 97ed09613..3c2081b76 100644 --- a/box_sdk_gen/managers/shared_links_web_links.py +++ b/box_sdk_gen/managers/shared_links_web_links.py @@ -231,7 +231,7 @@ def __init__( self, *, auth: Optional[Authentication] = None, - network_session: NetworkSession = None + network_session: Optional[NetworkSession] = None ): if network_session is None: network_session = NetworkSession() diff --git a/box_sdk_gen/managers/shield_information_barrier_reports.py b/box_sdk_gen/managers/shield_information_barrier_reports.py index d25c0bce8..66c81e3ba 100644 --- a/box_sdk_gen/managers/shield_information_barrier_reports.py +++ b/box_sdk_gen/managers/shield_information_barrier_reports.py @@ -54,7 +54,7 @@ def __init__( self, *, auth: Optional[Authentication] = None, - network_session: NetworkSession = None + network_session: Optional[NetworkSession] = None ): if network_session is None: network_session = NetworkSession() diff --git a/box_sdk_gen/managers/shield_information_barrier_segment_members.py b/box_sdk_gen/managers/shield_information_barrier_segment_members.py index 8580d3d54..f6f7e2183 100644 --- a/box_sdk_gen/managers/shield_information_barrier_segment_members.py +++ b/box_sdk_gen/managers/shield_information_barrier_segment_members.py @@ -94,7 +94,7 @@ def __init__( self, *, auth: Optional[Authentication] = None, - network_session: NetworkSession = None + network_session: Optional[NetworkSession] = None ): if network_session is None: network_session = NetworkSession() diff --git a/box_sdk_gen/managers/shield_information_barrier_segment_restrictions.py b/box_sdk_gen/managers/shield_information_barrier_segment_restrictions.py index e499efbe3..4362d162f 100644 --- a/box_sdk_gen/managers/shield_information_barrier_segment_restrictions.py +++ b/box_sdk_gen/managers/shield_information_barrier_segment_restrictions.py @@ -123,7 +123,7 @@ def __init__( self, *, auth: Optional[Authentication] = None, - network_session: NetworkSession = None + network_session: Optional[NetworkSession] = None ): if network_session is None: network_session = NetworkSession() diff --git a/box_sdk_gen/managers/shield_information_barrier_segments.py b/box_sdk_gen/managers/shield_information_barrier_segments.py index d258edeca..86b368df3 100644 --- a/box_sdk_gen/managers/shield_information_barrier_segments.py +++ b/box_sdk_gen/managers/shield_information_barrier_segments.py @@ -54,7 +54,7 @@ def __init__( self, *, auth: Optional[Authentication] = None, - network_session: NetworkSession = None + network_session: Optional[NetworkSession] = None ): if network_session is None: network_session = NetworkSession() diff --git a/box_sdk_gen/managers/shield_information_barriers.py b/box_sdk_gen/managers/shield_information_barriers.py index b3784dae2..65e4c534b 100644 --- a/box_sdk_gen/managers/shield_information_barriers.py +++ b/box_sdk_gen/managers/shield_information_barriers.py @@ -51,7 +51,7 @@ def __init__( self, *, auth: Optional[Authentication] = None, - network_session: NetworkSession = None + network_session: Optional[NetworkSession] = None ): if network_session is None: network_session = NetworkSession() diff --git a/box_sdk_gen/managers/shield_lists.py b/box_sdk_gen/managers/shield_lists.py index ec363b9a3..8e9eb5213 100644 --- a/box_sdk_gen/managers/shield_lists.py +++ b/box_sdk_gen/managers/shield_lists.py @@ -74,7 +74,7 @@ def __init__( self, *, auth: Optional[Authentication] = None, - network_session: NetworkSession = None + network_session: Optional[NetworkSession] = None ): if network_session is None: network_session = NetworkSession() diff --git a/box_sdk_gen/managers/sign_requests.py b/box_sdk_gen/managers/sign_requests.py index cc1dffd75..a9bd89755 100644 --- a/box_sdk_gen/managers/sign_requests.py +++ b/box_sdk_gen/managers/sign_requests.py @@ -68,7 +68,7 @@ def __init__( self, *, auth: Optional[Authentication] = None, - network_session: NetworkSession = None + network_session: Optional[NetworkSession] = None ): if network_session is None: network_session = NetworkSession() diff --git a/box_sdk_gen/managers/sign_templates.py b/box_sdk_gen/managers/sign_templates.py index 531c1f0c6..3e7c2d19a 100644 --- a/box_sdk_gen/managers/sign_templates.py +++ b/box_sdk_gen/managers/sign_templates.py @@ -40,7 +40,7 @@ def __init__( self, *, auth: Optional[Authentication] = None, - network_session: NetworkSession = None + network_session: Optional[NetworkSession] = None ): if network_session is None: network_session = NetworkSession() diff --git a/box_sdk_gen/managers/skills.py b/box_sdk_gen/managers/skills.py index 697d72656..0494b26ab 100644 --- a/box_sdk_gen/managers/skills.py +++ b/box_sdk_gen/managers/skills.py @@ -166,7 +166,7 @@ def __init__( self, *, auth: Optional[Authentication] = None, - network_session: NetworkSession = None + network_session: Optional[NetworkSession] = None ): if network_session is None: network_session = NetworkSession() diff --git a/box_sdk_gen/managers/storage_policies.py b/box_sdk_gen/managers/storage_policies.py index 54f08cb97..2b1396dae 100644 --- a/box_sdk_gen/managers/storage_policies.py +++ b/box_sdk_gen/managers/storage_policies.py @@ -42,7 +42,7 @@ def __init__( self, *, auth: Optional[Authentication] = None, - network_session: NetworkSession = None + network_session: Optional[NetworkSession] = None ): if network_session is None: network_session = NetworkSession() diff --git a/box_sdk_gen/managers/storage_policy_assignments.py b/box_sdk_gen/managers/storage_policy_assignments.py index be0f88b2a..2109f4f17 100644 --- a/box_sdk_gen/managers/storage_policy_assignments.py +++ b/box_sdk_gen/managers/storage_policy_assignments.py @@ -123,7 +123,7 @@ def __init__( self, *, auth: Optional[Authentication] = None, - network_session: NetworkSession = None + network_session: Optional[NetworkSession] = None ): if network_session is None: network_session = NetworkSession() diff --git a/box_sdk_gen/managers/task_assignments.py b/box_sdk_gen/managers/task_assignments.py index f7d5a8139..840ed7658 100644 --- a/box_sdk_gen/managers/task_assignments.py +++ b/box_sdk_gen/managers/task_assignments.py @@ -98,7 +98,7 @@ def __init__( self, *, auth: Optional[Authentication] = None, - network_session: NetworkSession = None + network_session: Optional[NetworkSession] = None ): if network_session is None: network_session = NetworkSession() diff --git a/box_sdk_gen/managers/tasks.py b/box_sdk_gen/managers/tasks.py index d6b13c19c..c84dc7178 100644 --- a/box_sdk_gen/managers/tasks.py +++ b/box_sdk_gen/managers/tasks.py @@ -93,7 +93,7 @@ def __init__( self, *, auth: Optional[Authentication] = None, - network_session: NetworkSession = None + network_session: Optional[NetworkSession] = None ): if network_session is None: network_session = NetworkSession() diff --git a/box_sdk_gen/managers/terms_of_service_user_statuses.py b/box_sdk_gen/managers/terms_of_service_user_statuses.py index 9374d3c21..29d265fe7 100644 --- a/box_sdk_gen/managers/terms_of_service_user_statuses.py +++ b/box_sdk_gen/managers/terms_of_service_user_statuses.py @@ -98,7 +98,7 @@ def __init__( self, *, auth: Optional[Authentication] = None, - network_session: NetworkSession = None + network_session: Optional[NetworkSession] = None ): if network_session is None: network_session = NetworkSession() diff --git a/box_sdk_gen/managers/terms_of_services.py b/box_sdk_gen/managers/terms_of_services.py index 2440409f1..d55639088 100644 --- a/box_sdk_gen/managers/terms_of_services.py +++ b/box_sdk_gen/managers/terms_of_services.py @@ -64,7 +64,7 @@ def __init__( self, *, auth: Optional[Authentication] = None, - network_session: NetworkSession = None + network_session: Optional[NetworkSession] = None ): if network_session is None: network_session = NetworkSession() diff --git a/box_sdk_gen/managers/transfer.py b/box_sdk_gen/managers/transfer.py index 1461f26bb..e5c99a628 100644 --- a/box_sdk_gen/managers/transfer.py +++ b/box_sdk_gen/managers/transfer.py @@ -55,7 +55,7 @@ def __init__( self, *, auth: Optional[Authentication] = None, - network_session: NetworkSession = None + network_session: Optional[NetworkSession] = None ): if network_session is None: network_session = NetworkSession() diff --git a/box_sdk_gen/managers/trashed_files.py b/box_sdk_gen/managers/trashed_files.py index 6aa6eddf0..9f2808766 100644 --- a/box_sdk_gen/managers/trashed_files.py +++ b/box_sdk_gen/managers/trashed_files.py @@ -56,7 +56,7 @@ def __init__( self, *, auth: Optional[Authentication] = None, - network_session: NetworkSession = None + network_session: Optional[NetworkSession] = None ): if network_session is None: network_session = NetworkSession() diff --git a/box_sdk_gen/managers/trashed_folders.py b/box_sdk_gen/managers/trashed_folders.py index 0796cc262..2b8de2882 100644 --- a/box_sdk_gen/managers/trashed_folders.py +++ b/box_sdk_gen/managers/trashed_folders.py @@ -56,7 +56,7 @@ def __init__( self, *, auth: Optional[Authentication] = None, - network_session: NetworkSession = None + network_session: Optional[NetworkSession] = None ): if network_session is None: network_session = NetworkSession() diff --git a/box_sdk_gen/managers/trashed_items.py b/box_sdk_gen/managers/trashed_items.py index 0b2551174..29b914c82 100644 --- a/box_sdk_gen/managers/trashed_items.py +++ b/box_sdk_gen/managers/trashed_items.py @@ -53,7 +53,7 @@ def __init__( self, *, auth: Optional[Authentication] = None, - network_session: NetworkSession = None + network_session: Optional[NetworkSession] = None ): if network_session is None: network_session = NetworkSession() diff --git a/box_sdk_gen/managers/trashed_web_links.py b/box_sdk_gen/managers/trashed_web_links.py index de1cbe168..56525cd79 100644 --- a/box_sdk_gen/managers/trashed_web_links.py +++ b/box_sdk_gen/managers/trashed_web_links.py @@ -56,7 +56,7 @@ def __init__( self, *, auth: Optional[Authentication] = None, - network_session: NetworkSession = None + network_session: Optional[NetworkSession] = None ): if network_session is None: network_session = NetworkSession() diff --git a/box_sdk_gen/managers/uploads.py b/box_sdk_gen/managers/uploads.py index 1bdb269a6..3ed940d28 100644 --- a/box_sdk_gen/managers/uploads.py +++ b/box_sdk_gen/managers/uploads.py @@ -174,7 +174,7 @@ def __init__( self, *, auth: Optional[Authentication] = None, - network_session: NetworkSession = None + network_session: Optional[NetworkSession] = None ): if network_session is None: network_session = NetworkSession() diff --git a/box_sdk_gen/managers/user_collaborations.py b/box_sdk_gen/managers/user_collaborations.py index 3728c07aa..000f4861c 100644 --- a/box_sdk_gen/managers/user_collaborations.py +++ b/box_sdk_gen/managers/user_collaborations.py @@ -137,7 +137,7 @@ def __init__( self, *, auth: Optional[Authentication] = None, - network_session: NetworkSession = None + network_session: Optional[NetworkSession] = None ): if network_session is None: network_session = NetworkSession() diff --git a/box_sdk_gen/managers/users.py b/box_sdk_gen/managers/users.py index 63de618d2..a59df50c3 100644 --- a/box_sdk_gen/managers/users.py +++ b/box_sdk_gen/managers/users.py @@ -94,7 +94,7 @@ def __init__( self, *, auth: Optional[Authentication] = None, - network_session: NetworkSession = None + network_session: Optional[NetworkSession] = None ): if network_session is None: network_session = NetworkSession() diff --git a/box_sdk_gen/managers/web_links.py b/box_sdk_gen/managers/web_links.py index 1ee5165c2..9b337b76d 100644 --- a/box_sdk_gen/managers/web_links.py +++ b/box_sdk_gen/managers/web_links.py @@ -128,7 +128,7 @@ def __init__( self, *, auth: Optional[Authentication] = None, - network_session: NetworkSession = None + network_session: Optional[NetworkSession] = None ): if network_session is None: network_session = NetworkSession() diff --git a/box_sdk_gen/managers/webhooks.py b/box_sdk_gen/managers/webhooks.py index 27f3e3a17..f52b3ea95 100644 --- a/box_sdk_gen/managers/webhooks.py +++ b/box_sdk_gen/managers/webhooks.py @@ -204,7 +204,7 @@ def __init__( self, *, auth: Optional[Authentication] = None, - network_session: NetworkSession = None + network_session: Optional[NetworkSession] = None ): if network_session is None: network_session = NetworkSession() diff --git a/box_sdk_gen/managers/workflows.py b/box_sdk_gen/managers/workflows.py index 7e0881040..55fcd0870 100644 --- a/box_sdk_gen/managers/workflows.py +++ b/box_sdk_gen/managers/workflows.py @@ -117,7 +117,7 @@ def __init__( self, *, auth: Optional[Authentication] = None, - network_session: NetworkSession = None + network_session: Optional[NetworkSession] = None ): if network_session is None: network_session = NetworkSession() diff --git a/box_sdk_gen/managers/zip_downloads.py b/box_sdk_gen/managers/zip_downloads.py index c056430a5..2b9d4a186 100644 --- a/box_sdk_gen/managers/zip_downloads.py +++ b/box_sdk_gen/managers/zip_downloads.py @@ -90,7 +90,7 @@ def __init__( self, *, auth: Optional[Authentication] = None, - network_session: NetworkSession = None + network_session: Optional[NetworkSession] = None ): if network_session is None: network_session = NetworkSession() diff --git a/box_sdk_gen/networking/box_network_client.py b/box_sdk_gen/networking/box_network_client.py index 3c12d6e24..417d7a18f 100644 --- a/box_sdk_gen/networking/box_network_client.py +++ b/box_sdk_gen/networking/box_network_client.py @@ -2,7 +2,7 @@ import time from dataclasses import dataclass -from typing import Optional, Dict, Union, Tuple, List +from typing import TYPE_CHECKING, NoReturn, Optional, Dict, Union, Tuple, List from sys import version_info as py_version import requests @@ -25,6 +25,9 @@ ) from ..networking.version import __version__ +if TYPE_CHECKING: + from ..serialization.json import SerializedData + SDK_VERSION = __version__ USER_AGENT_HEADER = f'box-python-generated-sdk-{SDK_VERSION}' X_BOX_UA_HEADER = ( @@ -41,21 +44,22 @@ class APIRequest: params: Dict[str, str] data: Optional[Union[str, ByteStream, MultipartStream]] content_type: Optional[str] = None - allow_redirects: bool = True + allow_redirects: Optional[bool] = True timeout: Optional[Union[float, Tuple[Optional[float], Optional[float]]]] = None @dataclass class APIResponse: network_response: Optional[Response] = None - reauthentication_needed: Optional[bool] = False + reauthentication_needed: bool = False raised_exception: Optional[Exception] = None def get_header( self, header_name: str, default_value: Optional[str] = None ) -> Optional[str]: try: - return self.network_response.headers[header_name] + # a missing response surfaces as AttributeError and falls back to the default + return self.network_response.headers[header_name] # type: ignore[union-attr] except (ValueError, KeyError, AttributeError): return default_value @@ -79,7 +83,7 @@ def fetch(self, options: 'FetchOptions') -> FetchResponse: attempt_nr = 1 number_of_retries_on_exception = 0 - response = APIResponse() + response: APIResponse = APIResponse() options_stream_position = self._get_options_stream_position(options) multipart_streams_positions = self._get_multipart_stream_positions(options) @@ -88,7 +92,7 @@ def fetch(self, options: 'FetchOptions') -> FetchResponse: request: APIRequest = self._prepare_request( options=options, reauthenticate=response.reauthentication_needed ) - response: APIResponse = self._make_request(request=request) + response = self._make_request(request=request) if response.network_response is not None: attempt_for_retry = attempt_nr network_response = response.network_response @@ -98,7 +102,7 @@ def fetch(self, options: 'FetchOptions') -> FetchResponse: fetch_response = FetchResponse( url=network_response.url, status=network_response.status_code, - headers=response_headers, + headers=response_headers, # type: ignore[arg-type] content=ResponseByteStream( response.network_response.iter_content(chunk_size=1024) ), @@ -107,7 +111,7 @@ def fetch(self, options: 'FetchOptions') -> FetchResponse: fetch_response = FetchResponse( url=network_response.url, status=network_response.status_code, - headers=response_headers, + headers=response_headers, # type: ignore[arg-type] data=(self._read_json_body(network_response.text)), content=io.BytesIO(network_response.content), ) @@ -151,7 +155,7 @@ def _prepare_request( ) -> APIRequest: headers = self._prepare_headers(options, reauthenticate) params = options.params or {} - data = self._prepare_body( + data: Optional[Union[str, ByteStream, MultipartStream]] = self._prepare_body( options.content_type, options.file_stream or options.data ) allow_redirects = options.follow_redirects @@ -188,8 +192,9 @@ def _prepare_request( def _prepare_multipart_fields( options: 'FetchOptions', ) -> List[MultipartField]: - fields = [] - for part in options.multipart_data: + fields: List[MultipartField] = [] + # only called for multipart requests, which always carry multipart_data + for part in options.multipart_data: # type: ignore[union-attr] if part.data is not None: fields.append((part.part_name, None, sd_to_json(part.data), None)) elif part.file_stream is not None: @@ -237,7 +242,7 @@ def _get_request_timeout( if connection_timeout_ms is not None: return connection_timeout_ms / 1000.0 - return read_timeout_ms / 1000.0 + return read_timeout_ms / 1000.0 # type: ignore[operator] @staticmethod def _prepare_headers( @@ -261,20 +266,20 @@ def _prepare_headers( @staticmethod def _prepare_body( - content_type: str, data: Union[dict, ByteStream] + content_type: str, data: 'Optional[Union[SerializedData, ByteStream]]' ) -> Optional[Union[str, ByteStream]]: if ( content_type == 'application/json' or content_type == 'application/json-patch+json' ): - return sd_to_json(data) if data else None + return sd_to_json(data) if data else None # type: ignore[arg-type] if content_type == 'application/x-www-form-urlencoded': - return sd_to_url_params(data) + return sd_to_url_params(data) # type: ignore[arg-type] if ( content_type == 'multipart/form-data' or content_type == 'application/octet-stream' ): - return data + return data # type: ignore[return-value] raise ValueError(f'Unsupported content type: {content_type}') def _make_request(self, request: APIRequest) -> APIResponse: @@ -288,7 +293,8 @@ def _make_request(self, request: APIRequest) -> APIResponse: headers=request.headers, data=request.data, params=request.params, - allow_redirects=request.allow_redirects, + # requests treats None like False, its stubs just only declare bool + allow_redirects=request.allow_redirects, # type: ignore[arg-type] stream=True, timeout=timeout, ) @@ -315,13 +321,14 @@ def _make_request(self, request: APIRequest) -> APIResponse: @staticmethod def _raise_on_unsuccessful_request( request: APIRequest, response: APIResponse, data_sanitizer: DataSanitizer - ) -> None: + ) -> NoReturn: if response.raised_exception: raise BoxSDKError( message=str(response.raised_exception), error=response.raised_exception ) - network_response = response.network_response + # without a raised exception the request always produced a response + network_response: Response = response.network_response # type: ignore[assignment] response_json = BoxNetworkClient._read_json_body(network_response.text) raise BoxAPIError( @@ -378,7 +385,8 @@ def _read_json_body(response_body: str) -> dict: if not response_body: return {} try: - return json_to_serialized_data(response_body) + # Box API response bodies are JSON objects + return json_to_serialized_data(response_body) # type: ignore[return-value] except (ValueError, TypeError): return {} diff --git a/box_sdk_gen/networking/multipart_stream.py b/box_sdk_gen/networking/multipart_stream.py index 78be03017..bf1ff98f3 100644 --- a/box_sdk_gen/networking/multipart_stream.py +++ b/box_sdk_gen/networking/multipart_stream.py @@ -71,7 +71,7 @@ def _stream_size(stream: PartStream) -> Optional[int]: if hasattr(stream, '__len__'): end = len(stream) elif getattr(stream, 'len', None) is not None: - end = stream.len + end = stream.len # type: ignore[attr-defined] else: stream.seek(0, SEEK_END) end = stream.tell() @@ -97,6 +97,7 @@ def read(self, size: Optional[int] = -1) -> bytes: return b''.join(iter(lambda: self.read(CHUNK_SIZE), b'')) chunks = [] + chunk: Union[bytes, str] while size > 0 and self._index < len(self._segments): segment = self._segments[self._index] if self._pending: diff --git a/box_sdk_gen/networking/network.py b/box_sdk_gen/networking/network.py index 7431d9918..f217e0c30 100644 --- a/box_sdk_gen/networking/network.py +++ b/box_sdk_gen/networking/network.py @@ -1,4 +1,4 @@ -from typing import Dict +from typing import Dict, Optional from ..internal.logging import DataSanitizer from .network_client import NetworkClient @@ -13,13 +13,13 @@ class NetworkSession: def __init__( self, *, - network_client: NetworkClient = None, - retry_strategy: RetryStrategy = None, - additional_headers: Dict[str, str] = None, - base_urls: BaseUrls = None, - proxy_url: str = None, - data_sanitizer: DataSanitizer = None, - timeout_config: TimeoutConfig = None, + network_client: Optional[NetworkClient] = None, + retry_strategy: Optional[RetryStrategy] = None, + additional_headers: Optional[Dict[str, str]] = None, + base_urls: Optional[BaseUrls] = None, + proxy_url: Optional[str] = None, + data_sanitizer: Optional[DataSanitizer] = None, + timeout_config: Optional[TimeoutConfig] = None, ): if additional_headers is None: additional_headers = {} @@ -54,7 +54,7 @@ def __init__( self.timeout_config = timeout_config def with_additional_headers( - self, additional_headers: Dict[str, str] = None + self, additional_headers: Optional[Dict[str, str]] = None ) -> 'NetworkSession': """ Generate a fresh network session by duplicating the existing configuration and network parameters, diff --git a/box_sdk_gen/py.typed b/box_sdk_gen/py.typed new file mode 100644 index 000000000..e69de29bb diff --git a/box_sdk_gen/serialization/json.py b/box_sdk_gen/serialization/json.py index 4c0500c48..26be70ffa 100644 --- a/box_sdk_gen/serialization/json.py +++ b/box_sdk_gen/serialization/json.py @@ -1,10 +1,26 @@ import json -from typing import Dict, get_origin, Union, Type +from typing import ( + TYPE_CHECKING, + Any, + Dict, + List, + get_origin, + Optional, + Union, + Type, + TypeVar, + overload, +) from urllib.parse import urlencode from ..internal.base_object import BaseObject -SerializedData = Dict +if TYPE_CHECKING: + # JSON request bodies can also be lists; the runtime alias stays Dict + SerializedData = Union[Dict, List] + _T = TypeVar('_T', bound=BaseObject) +else: + SerializedData = Dict def json_to_serialized_data(data: str) -> SerializedData: @@ -19,7 +35,7 @@ def sd_to_url_params(data: SerializedData) -> str: return urlencode(data) -def get_sd_value_by_key(data: SerializedData, key: str): +def get_sd_value_by_key(data: Dict, key: str): return data.get(key) @@ -36,12 +52,27 @@ def serialize(obj: Union[BaseObject, dict, list]) -> SerializedData: return obj -def deserialize(value: SerializedData, type: Type[BaseObject]): - if get_origin(type) == Union: - type = BaseObject._deserialize_union('', value, type) - obj = type.from_dict(value) - obj._raw_data = value - return obj +# Builds an instance of `type` (a BaseObject subclass, or a Union of them to pick the +# matching member from) from serialized data and keeps the input as its raw data. +# Overloads exist for type checkers only, so the runtime function stays unchanged. +if TYPE_CHECKING: + + @overload + def deserialize(value: Optional[SerializedData], type: Type[_T]) -> _T: ... + + @overload + def deserialize(value: Optional[SerializedData], type: Any) -> Any: ... + + def deserialize(value: Optional[SerializedData], type: Any) -> Any: ... + +else: + + def deserialize(value: SerializedData, type: Type[BaseObject]): + if get_origin(type) == Union: + type = BaseObject._deserialize_union('', value, type) + obj = type.from_dict(value) + obj._raw_data = value + return obj def sanitized_value() -> str: @@ -79,7 +110,7 @@ def sanitize_serialized_data( ) -> SerializedData: if not isinstance(sd, Dict): return sd - sanitized_dictionary = {} + sanitized_dictionary: Dict = {} for key, value in sd.items(): if key.lower() in keys_to_sanitize and isinstance(value, str): sanitized_dictionary[key] = sanitized_value() diff --git a/setup.py b/setup.py index e986f876f..1e181450f 100644 --- a/setup.py +++ b/setup.py @@ -60,6 +60,8 @@ def main(): tests_require=tests_require, extras_require=extras_require, packages=find_packages(exclude=['docs', '*test*']), + package_data={'box_sdk_gen': ['py.typed']}, + zip_safe=False, )