linq-python 0.2.0__tar.gz → 0.2.2__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (189) hide show
  1. linq_python-0.2.2/.release-please-manifest.json +3 -0
  2. {linq_python-0.2.0 → linq_python-0.2.2}/CHANGELOG.md +16 -0
  3. {linq_python-0.2.0 → linq_python-0.2.2}/PKG-INFO +1 -1
  4. {linq_python-0.2.0 → linq_python-0.2.2}/pyproject.toml +1 -1
  5. {linq_python-0.2.0 → linq_python-0.2.2}/src/linq/_base_client.py +4 -0
  6. {linq_python-0.2.0 → linq_python-0.2.2}/src/linq/_version.py +1 -1
  7. {linq_python-0.2.0 → linq_python-0.2.2}/src/linq/resources/attachments.py +42 -18
  8. linq_python-0.2.2/src/linq/types/attachment_create_params.py +54 -0
  9. {linq_python-0.2.0 → linq_python-0.2.2}/src/linq/types/attachment_retrieve_response.py +21 -9
  10. {linq_python-0.2.0 → linq_python-0.2.2}/src/linq/types/supported_content_type.py +11 -13
  11. {linq_python-0.2.0 → linq_python-0.2.2}/tests/test_client.py +48 -0
  12. linq_python-0.2.0/.release-please-manifest.json +0 -3
  13. linq_python-0.2.0/src/linq/types/attachment_create_params.py +0 -42
  14. {linq_python-0.2.0 → linq_python-0.2.2}/.gitignore +0 -0
  15. {linq_python-0.2.0 → linq_python-0.2.2}/CONTRIBUTING.md +0 -0
  16. {linq_python-0.2.0 → linq_python-0.2.2}/LICENSE +0 -0
  17. {linq_python-0.2.0 → linq_python-0.2.2}/README.md +0 -0
  18. {linq_python-0.2.0 → linq_python-0.2.2}/SECURITY.md +0 -0
  19. {linq_python-0.2.0 → linq_python-0.2.2}/api.md +0 -0
  20. {linq_python-0.2.0 → linq_python-0.2.2}/bin/check-release-environment +0 -0
  21. {linq_python-0.2.0 → linq_python-0.2.2}/bin/publish-pypi +0 -0
  22. {linq_python-0.2.0 → linq_python-0.2.2}/examples/.keep +0 -0
  23. {linq_python-0.2.0 → linq_python-0.2.2}/release-please-config.json +0 -0
  24. {linq_python-0.2.0 → linq_python-0.2.2}/requirements-dev.lock +0 -0
  25. {linq_python-0.2.0 → linq_python-0.2.2}/src/linq/__init__.py +0 -0
  26. {linq_python-0.2.0 → linq_python-0.2.2}/src/linq/_client.py +0 -0
  27. {linq_python-0.2.0 → linq_python-0.2.2}/src/linq/_compat.py +0 -0
  28. {linq_python-0.2.0 → linq_python-0.2.2}/src/linq/_constants.py +0 -0
  29. {linq_python-0.2.0 → linq_python-0.2.2}/src/linq/_exceptions.py +0 -0
  30. {linq_python-0.2.0 → linq_python-0.2.2}/src/linq/_files.py +0 -0
  31. {linq_python-0.2.0 → linq_python-0.2.2}/src/linq/_models.py +0 -0
  32. {linq_python-0.2.0 → linq_python-0.2.2}/src/linq/_qs.py +0 -0
  33. {linq_python-0.2.0 → linq_python-0.2.2}/src/linq/_resource.py +0 -0
  34. {linq_python-0.2.0 → linq_python-0.2.2}/src/linq/_response.py +0 -0
  35. {linq_python-0.2.0 → linq_python-0.2.2}/src/linq/_streaming.py +0 -0
  36. {linq_python-0.2.0 → linq_python-0.2.2}/src/linq/_types.py +0 -0
  37. {linq_python-0.2.0 → linq_python-0.2.2}/src/linq/_utils/__init__.py +0 -0
  38. {linq_python-0.2.0 → linq_python-0.2.2}/src/linq/_utils/_compat.py +0 -0
  39. {linq_python-0.2.0 → linq_python-0.2.2}/src/linq/_utils/_datetime_parse.py +0 -0
  40. {linq_python-0.2.0 → linq_python-0.2.2}/src/linq/_utils/_json.py +0 -0
  41. {linq_python-0.2.0 → linq_python-0.2.2}/src/linq/_utils/_logs.py +0 -0
  42. {linq_python-0.2.0 → linq_python-0.2.2}/src/linq/_utils/_path.py +0 -0
  43. {linq_python-0.2.0 → linq_python-0.2.2}/src/linq/_utils/_proxy.py +0 -0
  44. {linq_python-0.2.0 → linq_python-0.2.2}/src/linq/_utils/_reflection.py +0 -0
  45. {linq_python-0.2.0 → linq_python-0.2.2}/src/linq/_utils/_resources_proxy.py +0 -0
  46. {linq_python-0.2.0 → linq_python-0.2.2}/src/linq/_utils/_streams.py +0 -0
  47. {linq_python-0.2.0 → linq_python-0.2.2}/src/linq/_utils/_sync.py +0 -0
  48. {linq_python-0.2.0 → linq_python-0.2.2}/src/linq/_utils/_transform.py +0 -0
  49. {linq_python-0.2.0 → linq_python-0.2.2}/src/linq/_utils/_typing.py +0 -0
  50. {linq_python-0.2.0 → linq_python-0.2.2}/src/linq/_utils/_utils.py +0 -0
  51. {linq_python-0.2.0 → linq_python-0.2.2}/src/linq/lib/.keep +0 -0
  52. {linq_python-0.2.0 → linq_python-0.2.2}/src/linq/pagination.py +0 -0
  53. {linq_python-0.2.0 → linq_python-0.2.2}/src/linq/py.typed +0 -0
  54. {linq_python-0.2.0 → linq_python-0.2.2}/src/linq/resources/__init__.py +0 -0
  55. {linq_python-0.2.0 → linq_python-0.2.2}/src/linq/resources/capability.py +0 -0
  56. {linq_python-0.2.0 → linq_python-0.2.2}/src/linq/resources/chats/__init__.py +0 -0
  57. {linq_python-0.2.0 → linq_python-0.2.2}/src/linq/resources/chats/chats.py +0 -0
  58. {linq_python-0.2.0 → linq_python-0.2.2}/src/linq/resources/chats/messages.py +0 -0
  59. {linq_python-0.2.0 → linq_python-0.2.2}/src/linq/resources/chats/participants.py +0 -0
  60. {linq_python-0.2.0 → linq_python-0.2.2}/src/linq/resources/chats/typing.py +0 -0
  61. {linq_python-0.2.0 → linq_python-0.2.2}/src/linq/resources/contact_card.py +0 -0
  62. {linq_python-0.2.0 → linq_python-0.2.2}/src/linq/resources/messages.py +0 -0
  63. {linq_python-0.2.0 → linq_python-0.2.2}/src/linq/resources/phone_numbers.py +0 -0
  64. {linq_python-0.2.0 → linq_python-0.2.2}/src/linq/resources/phonenumbers.py +0 -0
  65. {linq_python-0.2.0 → linq_python-0.2.2}/src/linq/resources/webhook_events.py +0 -0
  66. {linq_python-0.2.0 → linq_python-0.2.2}/src/linq/resources/webhook_subscriptions.py +0 -0
  67. {linq_python-0.2.0 → linq_python-0.2.2}/src/linq/resources/webhooks.py +0 -0
  68. {linq_python-0.2.0 → linq_python-0.2.2}/src/linq/types/__init__.py +0 -0
  69. {linq_python-0.2.0 → linq_python-0.2.2}/src/linq/types/attachment_create_response.py +0 -0
  70. {linq_python-0.2.0 → linq_python-0.2.2}/src/linq/types/capability_check_RCS_params.py +0 -0
  71. {linq_python-0.2.0 → linq_python-0.2.2}/src/linq/types/capability_check_i_message_params.py +0 -0
  72. {linq_python-0.2.0 → linq_python-0.2.2}/src/linq/types/chat.py +0 -0
  73. {linq_python-0.2.0 → linq_python-0.2.2}/src/linq/types/chat_create_params.py +0 -0
  74. {linq_python-0.2.0 → linq_python-0.2.2}/src/linq/types/chat_create_response.py +0 -0
  75. {linq_python-0.2.0 → linq_python-0.2.2}/src/linq/types/chat_created_webhook_event.py +0 -0
  76. {linq_python-0.2.0 → linq_python-0.2.2}/src/linq/types/chat_group_icon_update_failed_webhook_event.py +0 -0
  77. {linq_python-0.2.0 → linq_python-0.2.2}/src/linq/types/chat_group_icon_updated_webhook_event.py +0 -0
  78. {linq_python-0.2.0 → linq_python-0.2.2}/src/linq/types/chat_group_name_update_failed_webhook_event.py +0 -0
  79. {linq_python-0.2.0 → linq_python-0.2.2}/src/linq/types/chat_group_name_updated_webhook_event.py +0 -0
  80. {linq_python-0.2.0 → linq_python-0.2.2}/src/linq/types/chat_leave_chat_response.py +0 -0
  81. {linq_python-0.2.0 → linq_python-0.2.2}/src/linq/types/chat_list_chats_params.py +0 -0
  82. {linq_python-0.2.0 → linq_python-0.2.2}/src/linq/types/chat_send_voicememo_params.py +0 -0
  83. {linq_python-0.2.0 → linq_python-0.2.2}/src/linq/types/chat_send_voicememo_response.py +0 -0
  84. {linq_python-0.2.0 → linq_python-0.2.2}/src/linq/types/chat_typing_indicator_started_webhook_event.py +0 -0
  85. {linq_python-0.2.0 → linq_python-0.2.2}/src/linq/types/chat_typing_indicator_stopped_webhook_event.py +0 -0
  86. {linq_python-0.2.0 → linq_python-0.2.2}/src/linq/types/chat_update_params.py +0 -0
  87. {linq_python-0.2.0 → linq_python-0.2.2}/src/linq/types/chat_update_response.py +0 -0
  88. {linq_python-0.2.0 → linq_python-0.2.2}/src/linq/types/chats/__init__.py +0 -0
  89. {linq_python-0.2.0 → linq_python-0.2.2}/src/linq/types/chats/message_list_params.py +0 -0
  90. {linq_python-0.2.0 → linq_python-0.2.2}/src/linq/types/chats/message_send_params.py +0 -0
  91. {linq_python-0.2.0 → linq_python-0.2.2}/src/linq/types/chats/message_send_response.py +0 -0
  92. {linq_python-0.2.0 → linq_python-0.2.2}/src/linq/types/chats/participant_add_params.py +0 -0
  93. {linq_python-0.2.0 → linq_python-0.2.2}/src/linq/types/chats/participant_add_response.py +0 -0
  94. {linq_python-0.2.0 → linq_python-0.2.2}/src/linq/types/chats/participant_remove_params.py +0 -0
  95. {linq_python-0.2.0 → linq_python-0.2.2}/src/linq/types/chats/participant_remove_response.py +0 -0
  96. {linq_python-0.2.0 → linq_python-0.2.2}/src/linq/types/chats/sent_message.py +0 -0
  97. {linq_python-0.2.0 → linq_python-0.2.2}/src/linq/types/contact_card_create_params.py +0 -0
  98. {linq_python-0.2.0 → linq_python-0.2.2}/src/linq/types/contact_card_retrieve_params.py +0 -0
  99. {linq_python-0.2.0 → linq_python-0.2.2}/src/linq/types/contact_card_retrieve_response.py +0 -0
  100. {linq_python-0.2.0 → linq_python-0.2.2}/src/linq/types/contact_card_update_params.py +0 -0
  101. {linq_python-0.2.0 → linq_python-0.2.2}/src/linq/types/events_webhook_event.py +0 -0
  102. {linq_python-0.2.0 → linq_python-0.2.2}/src/linq/types/handle_check_response.py +0 -0
  103. {linq_python-0.2.0 → linq_python-0.2.2}/src/linq/types/link_part_param.py +0 -0
  104. {linq_python-0.2.0 → linq_python-0.2.2}/src/linq/types/media_part_param.py +0 -0
  105. {linq_python-0.2.0 → linq_python-0.2.2}/src/linq/types/message.py +0 -0
  106. {linq_python-0.2.0 → linq_python-0.2.2}/src/linq/types/message_add_reaction_params.py +0 -0
  107. {linq_python-0.2.0 → linq_python-0.2.2}/src/linq/types/message_add_reaction_response.py +0 -0
  108. {linq_python-0.2.0 → linq_python-0.2.2}/src/linq/types/message_content_param.py +0 -0
  109. {linq_python-0.2.0 → linq_python-0.2.2}/src/linq/types/message_delivered_webhook_event.py +0 -0
  110. {linq_python-0.2.0 → linq_python-0.2.2}/src/linq/types/message_edited_webhook_event.py +0 -0
  111. {linq_python-0.2.0 → linq_python-0.2.2}/src/linq/types/message_effect.py +0 -0
  112. {linq_python-0.2.0 → linq_python-0.2.2}/src/linq/types/message_effect_param.py +0 -0
  113. {linq_python-0.2.0 → linq_python-0.2.2}/src/linq/types/message_event_v2.py +0 -0
  114. {linq_python-0.2.0 → linq_python-0.2.2}/src/linq/types/message_failed_webhook_event.py +0 -0
  115. {linq_python-0.2.0 → linq_python-0.2.2}/src/linq/types/message_list_messages_thread_params.py +0 -0
  116. {linq_python-0.2.0 → linq_python-0.2.2}/src/linq/types/message_read_webhook_event.py +0 -0
  117. {linq_python-0.2.0 → linq_python-0.2.2}/src/linq/types/message_received_webhook_event.py +0 -0
  118. {linq_python-0.2.0 → linq_python-0.2.2}/src/linq/types/message_sent_webhook_event.py +0 -0
  119. {linq_python-0.2.0 → linq_python-0.2.2}/src/linq/types/message_update_params.py +0 -0
  120. {linq_python-0.2.0 → linq_python-0.2.2}/src/linq/types/participant_added_webhook_event.py +0 -0
  121. {linq_python-0.2.0 → linq_python-0.2.2}/src/linq/types/participant_removed_webhook_event.py +0 -0
  122. {linq_python-0.2.0 → linq_python-0.2.2}/src/linq/types/phone_number_list_response.py +0 -0
  123. {linq_python-0.2.0 → linq_python-0.2.2}/src/linq/types/phone_number_status_updated_webhook_event.py +0 -0
  124. {linq_python-0.2.0 → linq_python-0.2.2}/src/linq/types/phonenumber_list_response.py +0 -0
  125. {linq_python-0.2.0 → linq_python-0.2.2}/src/linq/types/reaction_added_webhook_event.py +0 -0
  126. {linq_python-0.2.0 → linq_python-0.2.2}/src/linq/types/reaction_event_base.py +0 -0
  127. {linq_python-0.2.0 → linq_python-0.2.2}/src/linq/types/reaction_removed_webhook_event.py +0 -0
  128. {linq_python-0.2.0 → linq_python-0.2.2}/src/linq/types/reply_to.py +0 -0
  129. {linq_python-0.2.0 → linq_python-0.2.2}/src/linq/types/reply_to_param.py +0 -0
  130. {linq_python-0.2.0 → linq_python-0.2.2}/src/linq/types/schemas_media_part_response.py +0 -0
  131. {linq_python-0.2.0 → linq_python-0.2.2}/src/linq/types/schemas_message_effect.py +0 -0
  132. {linq_python-0.2.0 → linq_python-0.2.2}/src/linq/types/schemas_text_part_response.py +0 -0
  133. {linq_python-0.2.0 → linq_python-0.2.2}/src/linq/types/set_contact_card.py +0 -0
  134. {linq_python-0.2.0 → linq_python-0.2.2}/src/linq/types/shared/__init__.py +0 -0
  135. {linq_python-0.2.0 → linq_python-0.2.2}/src/linq/types/shared/chat_handle.py +0 -0
  136. {linq_python-0.2.0 → linq_python-0.2.2}/src/linq/types/shared/link_part_response.py +0 -0
  137. {linq_python-0.2.0 → linq_python-0.2.2}/src/linq/types/shared/media_part_response.py +0 -0
  138. {linq_python-0.2.0 → linq_python-0.2.2}/src/linq/types/shared/reaction.py +0 -0
  139. {linq_python-0.2.0 → linq_python-0.2.2}/src/linq/types/shared/reaction_type.py +0 -0
  140. {linq_python-0.2.0 → linq_python-0.2.2}/src/linq/types/shared/service_type.py +0 -0
  141. {linq_python-0.2.0 → linq_python-0.2.2}/src/linq/types/shared/text_decoration.py +0 -0
  142. {linq_python-0.2.0 → linq_python-0.2.2}/src/linq/types/shared/text_part_response.py +0 -0
  143. {linq_python-0.2.0 → linq_python-0.2.2}/src/linq/types/shared_params/__init__.py +0 -0
  144. {linq_python-0.2.0 → linq_python-0.2.2}/src/linq/types/shared_params/reaction_type.py +0 -0
  145. {linq_python-0.2.0 → linq_python-0.2.2}/src/linq/types/shared_params/service_type.py +0 -0
  146. {linq_python-0.2.0 → linq_python-0.2.2}/src/linq/types/shared_params/text_decoration.py +0 -0
  147. {linq_python-0.2.0 → linq_python-0.2.2}/src/linq/types/text_part_param.py +0 -0
  148. {linq_python-0.2.0 → linq_python-0.2.2}/src/linq/types/webhook_event_list_response.py +0 -0
  149. {linq_python-0.2.0 → linq_python-0.2.2}/src/linq/types/webhook_event_type.py +0 -0
  150. {linq_python-0.2.0 → linq_python-0.2.2}/src/linq/types/webhook_subscription.py +0 -0
  151. {linq_python-0.2.0 → linq_python-0.2.2}/src/linq/types/webhook_subscription_create_params.py +0 -0
  152. {linq_python-0.2.0 → linq_python-0.2.2}/src/linq/types/webhook_subscription_create_response.py +0 -0
  153. {linq_python-0.2.0 → linq_python-0.2.2}/src/linq/types/webhook_subscription_list_response.py +0 -0
  154. {linq_python-0.2.0 → linq_python-0.2.2}/src/linq/types/webhook_subscription_update_params.py +0 -0
  155. {linq_python-0.2.0 → linq_python-0.2.2}/src/linq_api_v3/lib/.keep +0 -0
  156. {linq_python-0.2.0 → linq_python-0.2.2}/tests/__init__.py +0 -0
  157. {linq_python-0.2.0 → linq_python-0.2.2}/tests/api_resources/__init__.py +0 -0
  158. {linq_python-0.2.0 → linq_python-0.2.2}/tests/api_resources/chats/__init__.py +0 -0
  159. {linq_python-0.2.0 → linq_python-0.2.2}/tests/api_resources/chats/test_messages.py +0 -0
  160. {linq_python-0.2.0 → linq_python-0.2.2}/tests/api_resources/chats/test_participants.py +0 -0
  161. {linq_python-0.2.0 → linq_python-0.2.2}/tests/api_resources/chats/test_typing.py +0 -0
  162. {linq_python-0.2.0 → linq_python-0.2.2}/tests/api_resources/test_attachments.py +0 -0
  163. {linq_python-0.2.0 → linq_python-0.2.2}/tests/api_resources/test_capability.py +0 -0
  164. {linq_python-0.2.0 → linq_python-0.2.2}/tests/api_resources/test_chats.py +0 -0
  165. {linq_python-0.2.0 → linq_python-0.2.2}/tests/api_resources/test_contact_card.py +0 -0
  166. {linq_python-0.2.0 → linq_python-0.2.2}/tests/api_resources/test_messages.py +0 -0
  167. {linq_python-0.2.0 → linq_python-0.2.2}/tests/api_resources/test_phone_numbers.py +0 -0
  168. {linq_python-0.2.0 → linq_python-0.2.2}/tests/api_resources/test_phonenumbers.py +0 -0
  169. {linq_python-0.2.0 → linq_python-0.2.2}/tests/api_resources/test_webhook_events.py +0 -0
  170. {linq_python-0.2.0 → linq_python-0.2.2}/tests/api_resources/test_webhook_subscriptions.py +0 -0
  171. {linq_python-0.2.0 → linq_python-0.2.2}/tests/api_resources/test_webhooks.py +0 -0
  172. {linq_python-0.2.0 → linq_python-0.2.2}/tests/conftest.py +0 -0
  173. {linq_python-0.2.0 → linq_python-0.2.2}/tests/sample_file.txt +0 -0
  174. {linq_python-0.2.0 → linq_python-0.2.2}/tests/test_deepcopy.py +0 -0
  175. {linq_python-0.2.0 → linq_python-0.2.2}/tests/test_extract_files.py +0 -0
  176. {linq_python-0.2.0 → linq_python-0.2.2}/tests/test_files.py +0 -0
  177. {linq_python-0.2.0 → linq_python-0.2.2}/tests/test_models.py +0 -0
  178. {linq_python-0.2.0 → linq_python-0.2.2}/tests/test_qs.py +0 -0
  179. {linq_python-0.2.0 → linq_python-0.2.2}/tests/test_required_args.py +0 -0
  180. {linq_python-0.2.0 → linq_python-0.2.2}/tests/test_response.py +0 -0
  181. {linq_python-0.2.0 → linq_python-0.2.2}/tests/test_streaming.py +0 -0
  182. {linq_python-0.2.0 → linq_python-0.2.2}/tests/test_transform.py +0 -0
  183. {linq_python-0.2.0 → linq_python-0.2.2}/tests/test_utils/test_datetime_parse.py +0 -0
  184. {linq_python-0.2.0 → linq_python-0.2.2}/tests/test_utils/test_json.py +0 -0
  185. {linq_python-0.2.0 → linq_python-0.2.2}/tests/test_utils/test_path.py +0 -0
  186. {linq_python-0.2.0 → linq_python-0.2.2}/tests/test_utils/test_proxy.py +0 -0
  187. {linq_python-0.2.0 → linq_python-0.2.2}/tests/test_utils/test_typing.py +0 -0
  188. {linq_python-0.2.0 → linq_python-0.2.2}/tests/utils.py +0 -0
  189. {linq_python-0.2.0 → linq_python-0.2.2}/uv.lock +0 -0
@@ -0,0 +1,3 @@
1
+ {
2
+ ".": "0.2.2"
3
+ }
@@ -1,5 +1,21 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.2.2 (2026-04-08)
4
+
5
+ Full Changelog: [v0.2.1...v0.2.2](https://github.com/linq-team/linq-python/compare/v0.2.1...v0.2.2)
6
+
7
+ ### Bug Fixes
8
+
9
+ * **client:** preserve hardcoded query params when merging with user params ([6c18c57](https://github.com/linq-team/linq-python/commit/6c18c57b5aa590fe7a096b98ef617f3be086d066))
10
+
11
+ ## 0.2.1 (2026-04-07)
12
+
13
+ Full Changelog: [v0.2.0...v0.2.1](https://github.com/linq-team/linq-python/compare/v0.2.0...v0.2.1)
14
+
15
+ ### Bug Fixes
16
+
17
+ * add SVG support to synapse attachments ([c329c0a](https://github.com/linq-team/linq-python/commit/c329c0a19f398623d5035d1ff9e60375fc368f23))
18
+
3
19
  ## 0.2.0 (2026-04-04)
4
20
 
5
21
  Full Changelog: [v0.1.0...v0.2.0](https://github.com/linq-team/linq-python/compare/v0.1.0...v0.2.0)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: linq-python
3
- Version: 0.2.0
3
+ Version: 0.2.2
4
4
  Summary: The official Python library for the linq-api-v3 API
5
5
  Project-URL: Homepage, https://github.com/linq-team/linq-python
6
6
  Project-URL: Repository, https://github.com/linq-team/linq-python
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "linq-python"
3
- version = "0.2.0"
3
+ version = "0.2.2"
4
4
  description = "The official Python library for the linq-api-v3 API"
5
5
  dynamic = ["readme"]
6
6
  license = "Apache-2.0"
@@ -558,6 +558,10 @@ class BaseClient(Generic[_HttpxClientT, _DefaultStreamT]):
558
558
  files = cast(HttpxRequestFiles, ForceMultipartDict())
559
559
 
560
560
  prepared_url = self._prepare_url(options.url)
561
+ # preserve hard-coded query params from the url
562
+ if params and prepared_url.query:
563
+ params = {**dict(prepared_url.params.items()), **params}
564
+ prepared_url = prepared_url.copy_with(raw_path=prepared_url.raw_path.split(b"?", 1)[0])
561
565
  if "_" in prepared_url.host:
562
566
  # work around https://github.com/encode/httpx/discussions/2880
563
567
  kwargs["extensions"] = {"sni_hostname": prepared_url.host.replace("_", "-")}
@@ -1,4 +1,4 @@
1
1
  # File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
2
2
 
3
3
  __title__ = "linq"
4
- __version__ = "0.2.0" # x-release-please-version
4
+ __version__ = "0.2.2" # x-release-please-version
@@ -199,25 +199,37 @@ class AttachmentsResource(SyncAPIResource):
199
199
  content_type: Supported MIME types for file attachments and media URLs.
200
200
 
201
201
  **Images:** image/jpeg, image/png, image/gif, image/heic, image/heif,
202
- image/tiff, image/bmp
202
+ image/tiff, image/bmp, image/svg+xml, image/webp, image/x-icon
203
203
 
204
- **Videos:** video/mp4, video/quicktime, video/mpeg, video/3gpp
204
+ **Videos:** video/mp4, video/quicktime, video/mpeg, video/mpeg2,
205
+ video/x-msvideo, video/3gpp
205
206
 
206
- **Audio:** audio/mpeg, audio/mp4, audio/x-m4a, audio/x-caf, audio/wav,
207
- audio/aiff, audio/aac, audio/amr
207
+ **Audio:** audio/mpeg, audio/x-m4a, audio/x-caf, audio/x-wav, audio/x-aiff,
208
+ audio/aac, audio/midi, audio/amr
208
209
 
209
210
  **Documents:** application/pdf, text/plain, text/markdown, text/vcard, text/rtf,
210
- text/csv, text/html, text/calendar, application/msword,
211
+ text/csv, text/html, text/calendar, text/xml, application/json,
212
+ application/msword,
211
213
  application/vnd.openxmlformats-officedocument.wordprocessingml.document,
212
214
  application/vnd.ms-excel,
213
215
  application/vnd.openxmlformats-officedocument.spreadsheetml.sheet,
214
216
  application/vnd.ms-powerpoint,
215
217
  application/vnd.openxmlformats-officedocument.presentationml.presentation,
216
- application/vnd.apple.pages, application/vnd.apple.numbers,
217
- application/vnd.apple.keynote, application/epub+zip, application/zip
218
+ application/x-iwork-pages-sffpages, application/x-iwork-numbers-sffnumbers,
219
+ application/x-iwork-keynote-sffkey, application/epub+zip, application/zip,
220
+ application/x-gzip
218
221
 
219
- **Unsupported:** WebP, SVG, FLAC, OGG, and executable files are explicitly
220
- rejected.
222
+ **Deprecated (accepted but transcoded):**
223
+
224
+ - `audio/mp3` — Deprecated. Use `audio/mpeg` instead. Files sent as audio/mp3
225
+ will be delivered as audio/mpeg.
226
+ - `audio/mp4` — Deprecated. Use `audio/x-m4a` instead. Files sent as audio/mp4
227
+ will be delivered as audio/x-m4a.
228
+ - `audio/aiff` — Deprecated. Use `audio/x-aiff` instead. Files sent as
229
+ audio/aiff will be delivered as audio/x-aiff.
230
+ - `image/tiff` — Accepted, but TIFF images are transcoded to JPEG for delivery.
231
+
232
+ **Unsupported:** FLAC, OGG, and executable files are explicitly rejected.
221
233
 
222
234
  filename: Name of the file to upload
223
235
 
@@ -458,25 +470,37 @@ class AsyncAttachmentsResource(AsyncAPIResource):
458
470
  content_type: Supported MIME types for file attachments and media URLs.
459
471
 
460
472
  **Images:** image/jpeg, image/png, image/gif, image/heic, image/heif,
461
- image/tiff, image/bmp
473
+ image/tiff, image/bmp, image/svg+xml, image/webp, image/x-icon
462
474
 
463
- **Videos:** video/mp4, video/quicktime, video/mpeg, video/3gpp
475
+ **Videos:** video/mp4, video/quicktime, video/mpeg, video/mpeg2,
476
+ video/x-msvideo, video/3gpp
464
477
 
465
- **Audio:** audio/mpeg, audio/mp4, audio/x-m4a, audio/x-caf, audio/wav,
466
- audio/aiff, audio/aac, audio/amr
478
+ **Audio:** audio/mpeg, audio/x-m4a, audio/x-caf, audio/x-wav, audio/x-aiff,
479
+ audio/aac, audio/midi, audio/amr
467
480
 
468
481
  **Documents:** application/pdf, text/plain, text/markdown, text/vcard, text/rtf,
469
- text/csv, text/html, text/calendar, application/msword,
482
+ text/csv, text/html, text/calendar, text/xml, application/json,
483
+ application/msword,
470
484
  application/vnd.openxmlformats-officedocument.wordprocessingml.document,
471
485
  application/vnd.ms-excel,
472
486
  application/vnd.openxmlformats-officedocument.spreadsheetml.sheet,
473
487
  application/vnd.ms-powerpoint,
474
488
  application/vnd.openxmlformats-officedocument.presentationml.presentation,
475
- application/vnd.apple.pages, application/vnd.apple.numbers,
476
- application/vnd.apple.keynote, application/epub+zip, application/zip
489
+ application/x-iwork-pages-sffpages, application/x-iwork-numbers-sffnumbers,
490
+ application/x-iwork-keynote-sffkey, application/epub+zip, application/zip,
491
+ application/x-gzip
492
+
493
+ **Deprecated (accepted but transcoded):**
494
+
495
+ - `audio/mp3` — Deprecated. Use `audio/mpeg` instead. Files sent as audio/mp3
496
+ will be delivered as audio/mpeg.
497
+ - `audio/mp4` — Deprecated. Use `audio/x-m4a` instead. Files sent as audio/mp4
498
+ will be delivered as audio/x-m4a.
499
+ - `audio/aiff` — Deprecated. Use `audio/x-aiff` instead. Files sent as
500
+ audio/aiff will be delivered as audio/x-aiff.
501
+ - `image/tiff` — Accepted, but TIFF images are transcoded to JPEG for delivery.
477
502
 
478
- **Unsupported:** WebP, SVG, FLAC, OGG, and executable files are explicitly
479
- rejected.
503
+ **Unsupported:** FLAC, OGG, and executable files are explicitly rejected.
480
504
 
481
505
  filename: Name of the file to upload
482
506
 
@@ -0,0 +1,54 @@
1
+ # File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
2
+
3
+ from __future__ import annotations
4
+
5
+ from typing_extensions import Required, TypedDict
6
+
7
+ from .supported_content_type import SupportedContentType
8
+
9
+ __all__ = ["AttachmentCreateParams"]
10
+
11
+
12
+ class AttachmentCreateParams(TypedDict, total=False):
13
+ content_type: Required[SupportedContentType]
14
+ """Supported MIME types for file attachments and media URLs.
15
+
16
+ **Images:** image/jpeg, image/png, image/gif, image/heic, image/heif,
17
+ image/tiff, image/bmp, image/svg+xml, image/webp, image/x-icon
18
+
19
+ **Videos:** video/mp4, video/quicktime, video/mpeg, video/mpeg2,
20
+ video/x-msvideo, video/3gpp
21
+
22
+ **Audio:** audio/mpeg, audio/x-m4a, audio/x-caf, audio/x-wav, audio/x-aiff,
23
+ audio/aac, audio/midi, audio/amr
24
+
25
+ **Documents:** application/pdf, text/plain, text/markdown, text/vcard, text/rtf,
26
+ text/csv, text/html, text/calendar, text/xml, application/json,
27
+ application/msword,
28
+ application/vnd.openxmlformats-officedocument.wordprocessingml.document,
29
+ application/vnd.ms-excel,
30
+ application/vnd.openxmlformats-officedocument.spreadsheetml.sheet,
31
+ application/vnd.ms-powerpoint,
32
+ application/vnd.openxmlformats-officedocument.presentationml.presentation,
33
+ application/x-iwork-pages-sffpages, application/x-iwork-numbers-sffnumbers,
34
+ application/x-iwork-keynote-sffkey, application/epub+zip, application/zip,
35
+ application/x-gzip
36
+
37
+ **Deprecated (accepted but transcoded):**
38
+
39
+ - `audio/mp3` — Deprecated. Use `audio/mpeg` instead. Files sent as audio/mp3
40
+ will be delivered as audio/mpeg.
41
+ - `audio/mp4` — Deprecated. Use `audio/x-m4a` instead. Files sent as audio/mp4
42
+ will be delivered as audio/x-m4a.
43
+ - `audio/aiff` — Deprecated. Use `audio/x-aiff` instead. Files sent as
44
+ audio/aiff will be delivered as audio/x-aiff.
45
+ - `image/tiff` — Accepted, but TIFF images are transcoded to JPEG for delivery.
46
+
47
+ **Unsupported:** FLAC, OGG, and executable files are explicitly rejected.
48
+ """
49
+
50
+ filename: Required[str]
51
+ """Name of the file to upload"""
52
+
53
+ size_bytes: Required[int]
54
+ """Size of the file in bytes (max 100MB)"""
@@ -18,25 +18,37 @@ class AttachmentRetrieveResponse(BaseModel):
18
18
  """Supported MIME types for file attachments and media URLs.
19
19
 
20
20
  **Images:** image/jpeg, image/png, image/gif, image/heic, image/heif,
21
- image/tiff, image/bmp
21
+ image/tiff, image/bmp, image/svg+xml, image/webp, image/x-icon
22
22
 
23
- **Videos:** video/mp4, video/quicktime, video/mpeg, video/3gpp
23
+ **Videos:** video/mp4, video/quicktime, video/mpeg, video/mpeg2,
24
+ video/x-msvideo, video/3gpp
24
25
 
25
- **Audio:** audio/mpeg, audio/mp4, audio/x-m4a, audio/x-caf, audio/wav,
26
- audio/aiff, audio/aac, audio/amr
26
+ **Audio:** audio/mpeg, audio/x-m4a, audio/x-caf, audio/x-wav, audio/x-aiff,
27
+ audio/aac, audio/midi, audio/amr
27
28
 
28
29
  **Documents:** application/pdf, text/plain, text/markdown, text/vcard, text/rtf,
29
- text/csv, text/html, text/calendar, application/msword,
30
+ text/csv, text/html, text/calendar, text/xml, application/json,
31
+ application/msword,
30
32
  application/vnd.openxmlformats-officedocument.wordprocessingml.document,
31
33
  application/vnd.ms-excel,
32
34
  application/vnd.openxmlformats-officedocument.spreadsheetml.sheet,
33
35
  application/vnd.ms-powerpoint,
34
36
  application/vnd.openxmlformats-officedocument.presentationml.presentation,
35
- application/vnd.apple.pages, application/vnd.apple.numbers,
36
- application/vnd.apple.keynote, application/epub+zip, application/zip
37
+ application/x-iwork-pages-sffpages, application/x-iwork-numbers-sffnumbers,
38
+ application/x-iwork-keynote-sffkey, application/epub+zip, application/zip,
39
+ application/x-gzip
37
40
 
38
- **Unsupported:** WebP, SVG, FLAC, OGG, and executable files are explicitly
39
- rejected.
41
+ **Deprecated (accepted but transcoded):**
42
+
43
+ - `audio/mp3` — Deprecated. Use `audio/mpeg` instead. Files sent as audio/mp3
44
+ will be delivered as audio/mpeg.
45
+ - `audio/mp4` — Deprecated. Use `audio/x-m4a` instead. Files sent as audio/mp4
46
+ will be delivered as audio/x-m4a.
47
+ - `audio/aiff` — Deprecated. Use `audio/x-aiff` instead. Files sent as
48
+ audio/aiff will be delivered as audio/x-aiff.
49
+ - `image/tiff` — Accepted, but TIFF images are transcoded to JPEG for delivery.
50
+
51
+ **Unsupported:** FLAC, OGG, and executable files are explicitly rejected.
40
52
  """
41
53
 
42
54
  created_at: datetime
@@ -6,39 +6,38 @@ __all__ = ["SupportedContentType"]
6
6
 
7
7
  SupportedContentType: TypeAlias = Literal[
8
8
  "image/jpeg",
9
- "image/jpg",
10
9
  "image/png",
11
10
  "image/gif",
12
11
  "image/heic",
13
12
  "image/heif",
14
13
  "image/tiff",
15
14
  "image/bmp",
16
- "image/x-ms-bmp",
15
+ "image/svg+xml",
16
+ "image/webp",
17
+ "image/x-icon",
17
18
  "video/mp4",
18
19
  "video/quicktime",
19
20
  "video/mpeg",
21
+ "video/mpeg2",
20
22
  "video/x-m4v",
23
+ "video/x-msvideo",
21
24
  "video/3gpp",
22
25
  "audio/mpeg",
23
26
  "audio/mp3",
24
- "audio/mp4",
25
27
  "audio/x-m4a",
26
- "audio/m4a",
28
+ "audio/mp4",
27
29
  "audio/x-caf",
28
- "audio/wav",
29
30
  "audio/x-wav",
30
- "audio/aiff",
31
31
  "audio/x-aiff",
32
+ "audio/aiff",
32
33
  "audio/aac",
33
- "audio/x-aac",
34
+ "audio/midi",
34
35
  "audio/amr",
35
36
  "application/pdf",
36
37
  "text/plain",
37
38
  "text/markdown",
38
39
  "text/vcard",
39
- "text/x-vcard",
40
40
  "text/rtf",
41
- "application/rtf",
42
41
  "text/csv",
43
42
  "text/html",
44
43
  "text/calendar",
@@ -48,13 +47,12 @@ SupportedContentType: TypeAlias = Literal[
48
47
  "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",
49
48
  "application/vnd.ms-powerpoint",
50
49
  "application/vnd.openxmlformats-officedocument.presentationml.presentation",
51
- "application/vnd.apple.pages",
52
50
  "application/x-iwork-pages-sffpages",
53
- "application/vnd.apple.numbers",
54
51
  "application/x-iwork-numbers-sffnumbers",
55
- "application/vnd.apple.keynote",
56
52
  "application/x-iwork-keynote-sffkey",
57
53
  "application/epub+zip",
54
+ "text/xml",
55
+ "application/json",
58
56
  "application/zip",
59
- "application/x-zip-compressed",
57
+ "application/x-gzip",
60
58
  ]
@@ -429,6 +429,30 @@ class TestLinqApiv3:
429
429
 
430
430
  client.close()
431
431
 
432
+ def test_hardcoded_query_params_in_url(self, client: LinqAPIV3) -> None:
433
+ request = client._build_request(FinalRequestOptions(method="get", url="/foo?beta=true"))
434
+ url = httpx.URL(request.url)
435
+ assert dict(url.params) == {"beta": "true"}
436
+
437
+ request = client._build_request(
438
+ FinalRequestOptions(
439
+ method="get",
440
+ url="/foo?beta=true",
441
+ params={"limit": "10", "page": "abc"},
442
+ )
443
+ )
444
+ url = httpx.URL(request.url)
445
+ assert dict(url.params) == {"beta": "true", "limit": "10", "page": "abc"}
446
+
447
+ request = client._build_request(
448
+ FinalRequestOptions(
449
+ method="get",
450
+ url="/files/a%2Fb?beta=true",
451
+ params={"limit": "10"},
452
+ )
453
+ )
454
+ assert request.url.raw_path == b"/files/a%2Fb?beta=true&limit=10"
455
+
432
456
  def test_request_extra_json(self, client: LinqAPIV3) -> None:
433
457
  request = client._build_request(
434
458
  FinalRequestOptions(
@@ -1377,6 +1401,30 @@ class TestAsyncLinqApiv3:
1377
1401
 
1378
1402
  await client.close()
1379
1403
 
1404
+ async def test_hardcoded_query_params_in_url(self, async_client: AsyncLinqAPIV3) -> None:
1405
+ request = async_client._build_request(FinalRequestOptions(method="get", url="/foo?beta=true"))
1406
+ url = httpx.URL(request.url)
1407
+ assert dict(url.params) == {"beta": "true"}
1408
+
1409
+ request = async_client._build_request(
1410
+ FinalRequestOptions(
1411
+ method="get",
1412
+ url="/foo?beta=true",
1413
+ params={"limit": "10", "page": "abc"},
1414
+ )
1415
+ )
1416
+ url = httpx.URL(request.url)
1417
+ assert dict(url.params) == {"beta": "true", "limit": "10", "page": "abc"}
1418
+
1419
+ request = async_client._build_request(
1420
+ FinalRequestOptions(
1421
+ method="get",
1422
+ url="/files/a%2Fb?beta=true",
1423
+ params={"limit": "10"},
1424
+ )
1425
+ )
1426
+ assert request.url.raw_path == b"/files/a%2Fb?beta=true&limit=10"
1427
+
1380
1428
  def test_request_extra_json(self, client: LinqAPIV3) -> None:
1381
1429
  request = client._build_request(
1382
1430
  FinalRequestOptions(
@@ -1,3 +0,0 @@
1
- {
2
- ".": "0.2.0"
3
- }
@@ -1,42 +0,0 @@
1
- # File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
2
-
3
- from __future__ import annotations
4
-
5
- from typing_extensions import Required, TypedDict
6
-
7
- from .supported_content_type import SupportedContentType
8
-
9
- __all__ = ["AttachmentCreateParams"]
10
-
11
-
12
- class AttachmentCreateParams(TypedDict, total=False):
13
- content_type: Required[SupportedContentType]
14
- """Supported MIME types for file attachments and media URLs.
15
-
16
- **Images:** image/jpeg, image/png, image/gif, image/heic, image/heif,
17
- image/tiff, image/bmp
18
-
19
- **Videos:** video/mp4, video/quicktime, video/mpeg, video/3gpp
20
-
21
- **Audio:** audio/mpeg, audio/mp4, audio/x-m4a, audio/x-caf, audio/wav,
22
- audio/aiff, audio/aac, audio/amr
23
-
24
- **Documents:** application/pdf, text/plain, text/markdown, text/vcard, text/rtf,
25
- text/csv, text/html, text/calendar, application/msword,
26
- application/vnd.openxmlformats-officedocument.wordprocessingml.document,
27
- application/vnd.ms-excel,
28
- application/vnd.openxmlformats-officedocument.spreadsheetml.sheet,
29
- application/vnd.ms-powerpoint,
30
- application/vnd.openxmlformats-officedocument.presentationml.presentation,
31
- application/vnd.apple.pages, application/vnd.apple.numbers,
32
- application/vnd.apple.keynote, application/epub+zip, application/zip
33
-
34
- **Unsupported:** WebP, SVG, FLAC, OGG, and executable files are explicitly
35
- rejected.
36
- """
37
-
38
- filename: Required[str]
39
- """Name of the file to upload"""
40
-
41
- size_bytes: Required[int]
42
- """Size of the file in bytes (max 100MB)"""
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes