adcp 3.0.0__tar.gz → 3.1.0__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 (289) hide show
  1. {adcp-3.0.0/src/adcp.egg-info → adcp-3.1.0}/PKG-INFO +1 -1
  2. {adcp-3.0.0 → adcp-3.1.0}/pyproject.toml +1 -1
  3. {adcp-3.0.0 → adcp-3.1.0}/src/adcp/__init__.py +9 -1
  4. {adcp-3.0.0 → adcp-3.1.0}/src/adcp/types/__init__.py +4 -0
  5. {adcp-3.0.0 → adcp-3.1.0}/src/adcp/types/aliases.py +55 -0
  6. {adcp-3.0.0 → adcp-3.1.0/src/adcp.egg-info}/PKG-INFO +1 -1
  7. {adcp-3.0.0 → adcp-3.1.0}/tests/test_type_aliases.py +233 -0
  8. {adcp-3.0.0 → adcp-3.1.0}/LICENSE +0 -0
  9. {adcp-3.0.0 → adcp-3.1.0}/MANIFEST.in +0 -0
  10. {adcp-3.0.0 → adcp-3.1.0}/README.md +0 -0
  11. {adcp-3.0.0 → adcp-3.1.0}/setup.cfg +0 -0
  12. {adcp-3.0.0 → adcp-3.1.0}/src/adcp/ADCP_VERSION +0 -0
  13. {adcp-3.0.0 → adcp-3.1.0}/src/adcp/__main__.py +0 -0
  14. {adcp-3.0.0 → adcp-3.1.0}/src/adcp/adagents.py +0 -0
  15. {adcp-3.0.0 → adcp-3.1.0}/src/adcp/client.py +0 -0
  16. {adcp-3.0.0 → adcp-3.1.0}/src/adcp/config.py +0 -0
  17. {adcp-3.0.0 → adcp-3.1.0}/src/adcp/exceptions.py +0 -0
  18. {adcp-3.0.0 → adcp-3.1.0}/src/adcp/protocols/__init__.py +0 -0
  19. {adcp-3.0.0 → adcp-3.1.0}/src/adcp/protocols/a2a.py +0 -0
  20. {adcp-3.0.0 → adcp-3.1.0}/src/adcp/protocols/base.py +0 -0
  21. {adcp-3.0.0 → adcp-3.1.0}/src/adcp/protocols/mcp.py +0 -0
  22. {adcp-3.0.0 → adcp-3.1.0}/src/adcp/py.typed +0 -0
  23. {adcp-3.0.0 → adcp-3.1.0}/src/adcp/server/__init__.py +0 -0
  24. {adcp-3.0.0 → adcp-3.1.0}/src/adcp/server/base.py +0 -0
  25. {adcp-3.0.0 → adcp-3.1.0}/src/adcp/server/content_standards.py +0 -0
  26. {adcp-3.0.0 → adcp-3.1.0}/src/adcp/server/governance.py +0 -0
  27. {adcp-3.0.0 → adcp-3.1.0}/src/adcp/server/mcp_tools.py +0 -0
  28. {adcp-3.0.0 → adcp-3.1.0}/src/adcp/server/proposal.py +0 -0
  29. {adcp-3.0.0 → adcp-3.1.0}/src/adcp/server/sponsored_intelligence.py +0 -0
  30. {adcp-3.0.0 → adcp-3.1.0}/src/adcp/simple.py +0 -0
  31. {adcp-3.0.0 → adcp-3.1.0}/src/adcp/testing/__init__.py +0 -0
  32. {adcp-3.0.0 → adcp-3.1.0}/src/adcp/testing/test_helpers.py +0 -0
  33. {adcp-3.0.0 → adcp-3.1.0}/src/adcp/types/_ergonomic.py +0 -0
  34. {adcp-3.0.0 → adcp-3.1.0}/src/adcp/types/_generated.py +0 -0
  35. {adcp-3.0.0 → adcp-3.1.0}/src/adcp/types/base.py +0 -0
  36. {adcp-3.0.0 → adcp-3.1.0}/src/adcp/types/coercion.py +0 -0
  37. {adcp-3.0.0 → adcp-3.1.0}/src/adcp/types/core.py +0 -0
  38. {adcp-3.0.0 → adcp-3.1.0}/src/adcp/types/generated_poc/__init__.py +0 -0
  39. {adcp-3.0.0 → adcp-3.1.0}/src/adcp/types/generated_poc/adagents.py +0 -0
  40. {adcp-3.0.0 → adcp-3.1.0}/src/adcp/types/generated_poc/content_standards/__init__.py +0 -0
  41. {adcp-3.0.0 → adcp-3.1.0}/src/adcp/types/generated_poc/content_standards/artifact.py +0 -0
  42. {adcp-3.0.0 → adcp-3.1.0}/src/adcp/types/generated_poc/content_standards/artifact_webhook_payload.py +0 -0
  43. {adcp-3.0.0 → adcp-3.1.0}/src/adcp/types/generated_poc/content_standards/calibrate_content_request.py +0 -0
  44. {adcp-3.0.0 → adcp-3.1.0}/src/adcp/types/generated_poc/content_standards/calibrate_content_response.py +0 -0
  45. {adcp-3.0.0 → adcp-3.1.0}/src/adcp/types/generated_poc/content_standards/content_standards.py +0 -0
  46. {adcp-3.0.0 → adcp-3.1.0}/src/adcp/types/generated_poc/content_standards/create_content_standards_request.py +0 -0
  47. {adcp-3.0.0 → adcp-3.1.0}/src/adcp/types/generated_poc/content_standards/create_content_standards_response.py +0 -0
  48. {adcp-3.0.0 → adcp-3.1.0}/src/adcp/types/generated_poc/content_standards/get_content_standards_request.py +0 -0
  49. {adcp-3.0.0 → adcp-3.1.0}/src/adcp/types/generated_poc/content_standards/get_content_standards_response.py +0 -0
  50. {adcp-3.0.0 → adcp-3.1.0}/src/adcp/types/generated_poc/content_standards/get_media_buy_artifacts_request.py +0 -0
  51. {adcp-3.0.0 → adcp-3.1.0}/src/adcp/types/generated_poc/content_standards/get_media_buy_artifacts_response.py +0 -0
  52. {adcp-3.0.0 → adcp-3.1.0}/src/adcp/types/generated_poc/content_standards/list_content_standards_request.py +0 -0
  53. {adcp-3.0.0 → adcp-3.1.0}/src/adcp/types/generated_poc/content_standards/list_content_standards_response.py +0 -0
  54. {adcp-3.0.0 → adcp-3.1.0}/src/adcp/types/generated_poc/content_standards/update_content_standards_request.py +0 -0
  55. {adcp-3.0.0 → adcp-3.1.0}/src/adcp/types/generated_poc/content_standards/update_content_standards_response.py +0 -0
  56. {adcp-3.0.0 → adcp-3.1.0}/src/adcp/types/generated_poc/content_standards/validate_content_delivery_request.py +0 -0
  57. {adcp-3.0.0 → adcp-3.1.0}/src/adcp/types/generated_poc/content_standards/validate_content_delivery_response.py +0 -0
  58. {adcp-3.0.0 → adcp-3.1.0}/src/adcp/types/generated_poc/core/__init__.py +0 -0
  59. {adcp-3.0.0 → adcp-3.1.0}/src/adcp/types/generated_poc/core/activation_key.py +0 -0
  60. {adcp-3.0.0 → adcp-3.1.0}/src/adcp/types/generated_poc/core/assets/__init__.py +0 -0
  61. {adcp-3.0.0 → adcp-3.1.0}/src/adcp/types/generated_poc/core/assets/audio_asset.py +0 -0
  62. {adcp-3.0.0 → adcp-3.1.0}/src/adcp/types/generated_poc/core/assets/css_asset.py +0 -0
  63. {adcp-3.0.0 → adcp-3.1.0}/src/adcp/types/generated_poc/core/assets/daast_asset.py +0 -0
  64. {adcp-3.0.0 → adcp-3.1.0}/src/adcp/types/generated_poc/core/assets/html_asset.py +0 -0
  65. {adcp-3.0.0 → adcp-3.1.0}/src/adcp/types/generated_poc/core/assets/image_asset.py +0 -0
  66. {adcp-3.0.0 → adcp-3.1.0}/src/adcp/types/generated_poc/core/assets/javascript_asset.py +0 -0
  67. {adcp-3.0.0 → adcp-3.1.0}/src/adcp/types/generated_poc/core/assets/text_asset.py +0 -0
  68. {adcp-3.0.0 → adcp-3.1.0}/src/adcp/types/generated_poc/core/assets/url_asset.py +0 -0
  69. {adcp-3.0.0 → adcp-3.1.0}/src/adcp/types/generated_poc/core/assets/vast_asset.py +0 -0
  70. {adcp-3.0.0 → adcp-3.1.0}/src/adcp/types/generated_poc/core/assets/video_asset.py +0 -0
  71. {adcp-3.0.0 → adcp-3.1.0}/src/adcp/types/generated_poc/core/assets/webhook_asset.py +0 -0
  72. {adcp-3.0.0 → adcp-3.1.0}/src/adcp/types/generated_poc/core/async_response_data.py +0 -0
  73. {adcp-3.0.0 → adcp-3.1.0}/src/adcp/types/generated_poc/core/brand_manifest.py +0 -0
  74. {adcp-3.0.0 → adcp-3.1.0}/src/adcp/types/generated_poc/core/brand_manifest_ref.py +0 -0
  75. {adcp-3.0.0 → adcp-3.1.0}/src/adcp/types/generated_poc/core/context.py +0 -0
  76. {adcp-3.0.0 → adcp-3.1.0}/src/adcp/types/generated_poc/core/creative_asset.py +0 -0
  77. {adcp-3.0.0 → adcp-3.1.0}/src/adcp/types/generated_poc/core/creative_assignment.py +0 -0
  78. {adcp-3.0.0 → adcp-3.1.0}/src/adcp/types/generated_poc/core/creative_filters.py +0 -0
  79. {adcp-3.0.0 → adcp-3.1.0}/src/adcp/types/generated_poc/core/creative_manifest.py +0 -0
  80. {adcp-3.0.0 → adcp-3.1.0}/src/adcp/types/generated_poc/core/creative_policy.py +0 -0
  81. {adcp-3.0.0 → adcp-3.1.0}/src/adcp/types/generated_poc/core/delivery_metrics.py +0 -0
  82. {adcp-3.0.0 → adcp-3.1.0}/src/adcp/types/generated_poc/core/deployment.py +0 -0
  83. {adcp-3.0.0 → adcp-3.1.0}/src/adcp/types/generated_poc/core/destination.py +0 -0
  84. {adcp-3.0.0 → adcp-3.1.0}/src/adcp/types/generated_poc/core/error.py +0 -0
  85. {adcp-3.0.0 → adcp-3.1.0}/src/adcp/types/generated_poc/core/ext.py +0 -0
  86. {adcp-3.0.0 → adcp-3.1.0}/src/adcp/types/generated_poc/core/format.py +0 -0
  87. {adcp-3.0.0 → adcp-3.1.0}/src/adcp/types/generated_poc/core/format_id.py +0 -0
  88. {adcp-3.0.0 → adcp-3.1.0}/src/adcp/types/generated_poc/core/frequency_cap.py +0 -0
  89. {adcp-3.0.0 → adcp-3.1.0}/src/adcp/types/generated_poc/core/identifier.py +0 -0
  90. {adcp-3.0.0 → adcp-3.1.0}/src/adcp/types/generated_poc/core/mcp_webhook_payload.py +0 -0
  91. {adcp-3.0.0 → adcp-3.1.0}/src/adcp/types/generated_poc/core/measurement.py +0 -0
  92. {adcp-3.0.0 → adcp-3.1.0}/src/adcp/types/generated_poc/core/media_buy.py +0 -0
  93. {adcp-3.0.0 → adcp-3.1.0}/src/adcp/types/generated_poc/core/media_buy_features.py +0 -0
  94. {adcp-3.0.0 → adcp-3.1.0}/src/adcp/types/generated_poc/core/offering.py +0 -0
  95. {adcp-3.0.0 → adcp-3.1.0}/src/adcp/types/generated_poc/core/package.py +0 -0
  96. {adcp-3.0.0 → adcp-3.1.0}/src/adcp/types/generated_poc/core/performance_feedback.py +0 -0
  97. {adcp-3.0.0 → adcp-3.1.0}/src/adcp/types/generated_poc/core/placement.py +0 -0
  98. {adcp-3.0.0 → adcp-3.1.0}/src/adcp/types/generated_poc/core/pricing_option.py +0 -0
  99. {adcp-3.0.0 → adcp-3.1.0}/src/adcp/types/generated_poc/core/product.py +0 -0
  100. {adcp-3.0.0 → adcp-3.1.0}/src/adcp/types/generated_poc/core/product_allocation.py +0 -0
  101. {adcp-3.0.0 → adcp-3.1.0}/src/adcp/types/generated_poc/core/product_filters.py +0 -0
  102. {adcp-3.0.0 → adcp-3.1.0}/src/adcp/types/generated_poc/core/promoted_offerings.py +0 -0
  103. {adcp-3.0.0 → adcp-3.1.0}/src/adcp/types/generated_poc/core/promoted_products.py +0 -0
  104. {adcp-3.0.0 → adcp-3.1.0}/src/adcp/types/generated_poc/core/property.py +0 -0
  105. {adcp-3.0.0 → adcp-3.1.0}/src/adcp/types/generated_poc/core/property_id.py +0 -0
  106. {adcp-3.0.0 → adcp-3.1.0}/src/adcp/types/generated_poc/core/property_list_ref.py +0 -0
  107. {adcp-3.0.0 → adcp-3.1.0}/src/adcp/types/generated_poc/core/property_tag.py +0 -0
  108. {adcp-3.0.0 → adcp-3.1.0}/src/adcp/types/generated_poc/core/proposal.py +0 -0
  109. {adcp-3.0.0 → adcp-3.1.0}/src/adcp/types/generated_poc/core/protocol_envelope.py +0 -0
  110. {adcp-3.0.0 → adcp-3.1.0}/src/adcp/types/generated_poc/core/publisher_property_selector.py +0 -0
  111. {adcp-3.0.0 → adcp-3.1.0}/src/adcp/types/generated_poc/core/push_notification_config.py +0 -0
  112. {adcp-3.0.0 → adcp-3.1.0}/src/adcp/types/generated_poc/core/reporting_capabilities.py +0 -0
  113. {adcp-3.0.0 → adcp-3.1.0}/src/adcp/types/generated_poc/core/reporting_webhook.py +0 -0
  114. {adcp-3.0.0 → adcp-3.1.0}/src/adcp/types/generated_poc/core/response.py +0 -0
  115. {adcp-3.0.0 → adcp-3.1.0}/src/adcp/types/generated_poc/core/signal_filters.py +0 -0
  116. {adcp-3.0.0 → adcp-3.1.0}/src/adcp/types/generated_poc/core/start_timing.py +0 -0
  117. {adcp-3.0.0 → adcp-3.1.0}/src/adcp/types/generated_poc/core/sub_asset.py +0 -0
  118. {adcp-3.0.0 → adcp-3.1.0}/src/adcp/types/generated_poc/core/targeting.py +0 -0
  119. {adcp-3.0.0 → adcp-3.1.0}/src/adcp/types/generated_poc/creative/__init__.py +0 -0
  120. {adcp-3.0.0 → adcp-3.1.0}/src/adcp/types/generated_poc/creative/list_creative_formats_request.py +0 -0
  121. {adcp-3.0.0 → adcp-3.1.0}/src/adcp/types/generated_poc/creative/list_creative_formats_response.py +0 -0
  122. {adcp-3.0.0 → adcp-3.1.0}/src/adcp/types/generated_poc/creative/preview_creative_request.py +0 -0
  123. {adcp-3.0.0 → adcp-3.1.0}/src/adcp/types/generated_poc/creative/preview_creative_response.py +0 -0
  124. {adcp-3.0.0 → adcp-3.1.0}/src/adcp/types/generated_poc/creative/preview_render.py +0 -0
  125. {adcp-3.0.0 → adcp-3.1.0}/src/adcp/types/generated_poc/enums/__init__.py +0 -0
  126. {adcp-3.0.0 → adcp-3.1.0}/src/adcp/types/generated_poc/enums/adcp_domain.py +0 -0
  127. {adcp-3.0.0 → adcp-3.1.0}/src/adcp/types/generated_poc/enums/asset_content_type.py +0 -0
  128. {adcp-3.0.0 → adcp-3.1.0}/src/adcp/types/generated_poc/enums/auth_scheme.py +0 -0
  129. {adcp-3.0.0 → adcp-3.1.0}/src/adcp/types/generated_poc/enums/available_metric.py +0 -0
  130. {adcp-3.0.0 → adcp-3.1.0}/src/adcp/types/generated_poc/enums/channels.py +0 -0
  131. {adcp-3.0.0 → adcp-3.1.0}/src/adcp/types/generated_poc/enums/co_branding_requirement.py +0 -0
  132. {adcp-3.0.0 → adcp-3.1.0}/src/adcp/types/generated_poc/enums/creative_action.py +0 -0
  133. {adcp-3.0.0 → adcp-3.1.0}/src/adcp/types/generated_poc/enums/creative_agent_capability.py +0 -0
  134. {adcp-3.0.0 → adcp-3.1.0}/src/adcp/types/generated_poc/enums/creative_sort_field.py +0 -0
  135. {adcp-3.0.0 → adcp-3.1.0}/src/adcp/types/generated_poc/enums/creative_status.py +0 -0
  136. {adcp-3.0.0 → adcp-3.1.0}/src/adcp/types/generated_poc/enums/daast_tracking_event.py +0 -0
  137. {adcp-3.0.0 → adcp-3.1.0}/src/adcp/types/generated_poc/enums/daast_version.py +0 -0
  138. {adcp-3.0.0 → adcp-3.1.0}/src/adcp/types/generated_poc/enums/delivery_type.py +0 -0
  139. {adcp-3.0.0 → adcp-3.1.0}/src/adcp/types/generated_poc/enums/dimension_unit.py +0 -0
  140. {adcp-3.0.0 → adcp-3.1.0}/src/adcp/types/generated_poc/enums/feed_format.py +0 -0
  141. {adcp-3.0.0 → adcp-3.1.0}/src/adcp/types/generated_poc/enums/feedback_source.py +0 -0
  142. {adcp-3.0.0 → adcp-3.1.0}/src/adcp/types/generated_poc/enums/format_category.py +0 -0
  143. {adcp-3.0.0 → adcp-3.1.0}/src/adcp/types/generated_poc/enums/format_id_parameter.py +0 -0
  144. {adcp-3.0.0 → adcp-3.1.0}/src/adcp/types/generated_poc/enums/frequency_cap_scope.py +0 -0
  145. {adcp-3.0.0 → adcp-3.1.0}/src/adcp/types/generated_poc/enums/geo_level.py +0 -0
  146. {adcp-3.0.0 → adcp-3.1.0}/src/adcp/types/generated_poc/enums/history_entry_type.py +0 -0
  147. {adcp-3.0.0 → adcp-3.1.0}/src/adcp/types/generated_poc/enums/http_method.py +0 -0
  148. {adcp-3.0.0 → adcp-3.1.0}/src/adcp/types/generated_poc/enums/identifier_types.py +0 -0
  149. {adcp-3.0.0 → adcp-3.1.0}/src/adcp/types/generated_poc/enums/javascript_module_type.py +0 -0
  150. {adcp-3.0.0 → adcp-3.1.0}/src/adcp/types/generated_poc/enums/landing_page_requirement.py +0 -0
  151. {adcp-3.0.0 → adcp-3.1.0}/src/adcp/types/generated_poc/enums/markdown_flavor.py +0 -0
  152. {adcp-3.0.0 → adcp-3.1.0}/src/adcp/types/generated_poc/enums/media_buy_status.py +0 -0
  153. {adcp-3.0.0 → adcp-3.1.0}/src/adcp/types/generated_poc/enums/metric_type.py +0 -0
  154. {adcp-3.0.0 → adcp-3.1.0}/src/adcp/types/generated_poc/enums/metro_system.py +0 -0
  155. {adcp-3.0.0 → adcp-3.1.0}/src/adcp/types/generated_poc/enums/notification_type.py +0 -0
  156. {adcp-3.0.0 → adcp-3.1.0}/src/adcp/types/generated_poc/enums/pacing.py +0 -0
  157. {adcp-3.0.0 → adcp-3.1.0}/src/adcp/types/generated_poc/enums/postal_system.py +0 -0
  158. {adcp-3.0.0 → adcp-3.1.0}/src/adcp/types/generated_poc/enums/preview_output_format.py +0 -0
  159. {adcp-3.0.0 → adcp-3.1.0}/src/adcp/types/generated_poc/enums/pricing_model.py +0 -0
  160. {adcp-3.0.0 → adcp-3.1.0}/src/adcp/types/generated_poc/enums/property_type.py +0 -0
  161. {adcp-3.0.0 → adcp-3.1.0}/src/adcp/types/generated_poc/enums/publisher_identifier_types.py +0 -0
  162. {adcp-3.0.0 → adcp-3.1.0}/src/adcp/types/generated_poc/enums/reporting_frequency.py +0 -0
  163. {adcp-3.0.0 → adcp-3.1.0}/src/adcp/types/generated_poc/enums/signal_catalog_type.py +0 -0
  164. {adcp-3.0.0 → adcp-3.1.0}/src/adcp/types/generated_poc/enums/sort_direction.py +0 -0
  165. {adcp-3.0.0 → adcp-3.1.0}/src/adcp/types/generated_poc/enums/task_status.py +0 -0
  166. {adcp-3.0.0 → adcp-3.1.0}/src/adcp/types/generated_poc/enums/task_type.py +0 -0
  167. {adcp-3.0.0 → adcp-3.1.0}/src/adcp/types/generated_poc/enums/update_frequency.py +0 -0
  168. {adcp-3.0.0 → adcp-3.1.0}/src/adcp/types/generated_poc/enums/url_asset_type.py +0 -0
  169. {adcp-3.0.0 → adcp-3.1.0}/src/adcp/types/generated_poc/enums/validation_mode.py +0 -0
  170. {adcp-3.0.0 → adcp-3.1.0}/src/adcp/types/generated_poc/enums/vast_tracking_event.py +0 -0
  171. {adcp-3.0.0 → adcp-3.1.0}/src/adcp/types/generated_poc/enums/vast_version.py +0 -0
  172. {adcp-3.0.0 → adcp-3.1.0}/src/adcp/types/generated_poc/enums/webhook_response_type.py +0 -0
  173. {adcp-3.0.0 → adcp-3.1.0}/src/adcp/types/generated_poc/enums/webhook_security_method.py +0 -0
  174. {adcp-3.0.0 → adcp-3.1.0}/src/adcp/types/generated_poc/extensions/__init__.py +0 -0
  175. {adcp-3.0.0 → adcp-3.1.0}/src/adcp/types/generated_poc/extensions/extension_meta.py +0 -0
  176. {adcp-3.0.0 → adcp-3.1.0}/src/adcp/types/generated_poc/media_buy/__init__.py +0 -0
  177. {adcp-3.0.0 → adcp-3.1.0}/src/adcp/types/generated_poc/media_buy/build_creative_request.py +0 -0
  178. {adcp-3.0.0 → adcp-3.1.0}/src/adcp/types/generated_poc/media_buy/build_creative_response.py +0 -0
  179. {adcp-3.0.0 → adcp-3.1.0}/src/adcp/types/generated_poc/media_buy/create_media_buy_async_response_input_required.py +0 -0
  180. {adcp-3.0.0 → adcp-3.1.0}/src/adcp/types/generated_poc/media_buy/create_media_buy_async_response_submitted.py +0 -0
  181. {adcp-3.0.0 → adcp-3.1.0}/src/adcp/types/generated_poc/media_buy/create_media_buy_async_response_working.py +0 -0
  182. {adcp-3.0.0 → adcp-3.1.0}/src/adcp/types/generated_poc/media_buy/create_media_buy_request.py +0 -0
  183. {adcp-3.0.0 → adcp-3.1.0}/src/adcp/types/generated_poc/media_buy/create_media_buy_response.py +0 -0
  184. {adcp-3.0.0 → adcp-3.1.0}/src/adcp/types/generated_poc/media_buy/get_media_buy_delivery_request.py +0 -0
  185. {adcp-3.0.0 → adcp-3.1.0}/src/adcp/types/generated_poc/media_buy/get_media_buy_delivery_response.py +0 -0
  186. {adcp-3.0.0 → adcp-3.1.0}/src/adcp/types/generated_poc/media_buy/get_products_async_response_input_required.py +0 -0
  187. {adcp-3.0.0 → adcp-3.1.0}/src/adcp/types/generated_poc/media_buy/get_products_async_response_submitted.py +0 -0
  188. {adcp-3.0.0 → adcp-3.1.0}/src/adcp/types/generated_poc/media_buy/get_products_async_response_working.py +0 -0
  189. {adcp-3.0.0 → adcp-3.1.0}/src/adcp/types/generated_poc/media_buy/get_products_request.py +0 -0
  190. {adcp-3.0.0 → adcp-3.1.0}/src/adcp/types/generated_poc/media_buy/get_products_response.py +0 -0
  191. {adcp-3.0.0 → adcp-3.1.0}/src/adcp/types/generated_poc/media_buy/list_authorized_properties_request.py +0 -0
  192. {adcp-3.0.0 → adcp-3.1.0}/src/adcp/types/generated_poc/media_buy/list_authorized_properties_response.py +0 -0
  193. {adcp-3.0.0 → adcp-3.1.0}/src/adcp/types/generated_poc/media_buy/list_creative_formats_request.py +0 -0
  194. {adcp-3.0.0 → adcp-3.1.0}/src/adcp/types/generated_poc/media_buy/list_creative_formats_response.py +0 -0
  195. {adcp-3.0.0 → adcp-3.1.0}/src/adcp/types/generated_poc/media_buy/list_creatives_request.py +0 -0
  196. {adcp-3.0.0 → adcp-3.1.0}/src/adcp/types/generated_poc/media_buy/list_creatives_response.py +0 -0
  197. {adcp-3.0.0 → adcp-3.1.0}/src/adcp/types/generated_poc/media_buy/package_request.py +0 -0
  198. {adcp-3.0.0 → adcp-3.1.0}/src/adcp/types/generated_poc/media_buy/package_update.py +0 -0
  199. {adcp-3.0.0 → adcp-3.1.0}/src/adcp/types/generated_poc/media_buy/provide_performance_feedback_request.py +0 -0
  200. {adcp-3.0.0 → adcp-3.1.0}/src/adcp/types/generated_poc/media_buy/provide_performance_feedback_response.py +0 -0
  201. {adcp-3.0.0 → adcp-3.1.0}/src/adcp/types/generated_poc/media_buy/sync_creatives_async_response_input_required.py +0 -0
  202. {adcp-3.0.0 → adcp-3.1.0}/src/adcp/types/generated_poc/media_buy/sync_creatives_async_response_submitted.py +0 -0
  203. {adcp-3.0.0 → adcp-3.1.0}/src/adcp/types/generated_poc/media_buy/sync_creatives_async_response_working.py +0 -0
  204. {adcp-3.0.0 → adcp-3.1.0}/src/adcp/types/generated_poc/media_buy/sync_creatives_request.py +0 -0
  205. {adcp-3.0.0 → adcp-3.1.0}/src/adcp/types/generated_poc/media_buy/sync_creatives_response.py +0 -0
  206. {adcp-3.0.0 → adcp-3.1.0}/src/adcp/types/generated_poc/media_buy/update_media_buy_async_response_input_required.py +0 -0
  207. {adcp-3.0.0 → adcp-3.1.0}/src/adcp/types/generated_poc/media_buy/update_media_buy_async_response_submitted.py +0 -0
  208. {adcp-3.0.0 → adcp-3.1.0}/src/adcp/types/generated_poc/media_buy/update_media_buy_async_response_working.py +0 -0
  209. {adcp-3.0.0 → adcp-3.1.0}/src/adcp/types/generated_poc/media_buy/update_media_buy_request.py +0 -0
  210. {adcp-3.0.0 → adcp-3.1.0}/src/adcp/types/generated_poc/media_buy/update_media_buy_response.py +0 -0
  211. {adcp-3.0.0 → adcp-3.1.0}/src/adcp/types/generated_poc/pricing_options/__init__.py +0 -0
  212. {adcp-3.0.0 → adcp-3.1.0}/src/adcp/types/generated_poc/pricing_options/cpc_option.py +0 -0
  213. {adcp-3.0.0 → adcp-3.1.0}/src/adcp/types/generated_poc/pricing_options/cpcv_option.py +0 -0
  214. {adcp-3.0.0 → adcp-3.1.0}/src/adcp/types/generated_poc/pricing_options/cpm_option.py +0 -0
  215. {adcp-3.0.0 → adcp-3.1.0}/src/adcp/types/generated_poc/pricing_options/cpp_option.py +0 -0
  216. {adcp-3.0.0 → adcp-3.1.0}/src/adcp/types/generated_poc/pricing_options/cpv_option.py +0 -0
  217. {adcp-3.0.0 → adcp-3.1.0}/src/adcp/types/generated_poc/pricing_options/flat_rate_option.py +0 -0
  218. {adcp-3.0.0 → adcp-3.1.0}/src/adcp/types/generated_poc/pricing_options/vcpm_option.py +0 -0
  219. {adcp-3.0.0 → adcp-3.1.0}/src/adcp/types/generated_poc/property/__init__.py +0 -0
  220. {adcp-3.0.0 → adcp-3.1.0}/src/adcp/types/generated_poc/property/base_property_source.py +0 -0
  221. {adcp-3.0.0 → adcp-3.1.0}/src/adcp/types/generated_poc/property/create_property_list_request.py +0 -0
  222. {adcp-3.0.0 → adcp-3.1.0}/src/adcp/types/generated_poc/property/create_property_list_response.py +0 -0
  223. {adcp-3.0.0 → adcp-3.1.0}/src/adcp/types/generated_poc/property/delete_property_list_request.py +0 -0
  224. {adcp-3.0.0 → adcp-3.1.0}/src/adcp/types/generated_poc/property/delete_property_list_response.py +0 -0
  225. {adcp-3.0.0 → adcp-3.1.0}/src/adcp/types/generated_poc/property/feature_requirement.py +0 -0
  226. {adcp-3.0.0 → adcp-3.1.0}/src/adcp/types/generated_poc/property/get_property_list_request.py +0 -0
  227. {adcp-3.0.0 → adcp-3.1.0}/src/adcp/types/generated_poc/property/get_property_list_response.py +0 -0
  228. {adcp-3.0.0 → adcp-3.1.0}/src/adcp/types/generated_poc/property/list_property_lists_request.py +0 -0
  229. {adcp-3.0.0 → adcp-3.1.0}/src/adcp/types/generated_poc/property/list_property_lists_response.py +0 -0
  230. {adcp-3.0.0 → adcp-3.1.0}/src/adcp/types/generated_poc/property/property_error.py +0 -0
  231. {adcp-3.0.0 → adcp-3.1.0}/src/adcp/types/generated_poc/property/property_feature.py +0 -0
  232. {adcp-3.0.0 → adcp-3.1.0}/src/adcp/types/generated_poc/property/property_feature_definition.py +0 -0
  233. {adcp-3.0.0 → adcp-3.1.0}/src/adcp/types/generated_poc/property/property_list.py +0 -0
  234. {adcp-3.0.0 → adcp-3.1.0}/src/adcp/types/generated_poc/property/property_list_changed_webhook.py +0 -0
  235. {adcp-3.0.0 → adcp-3.1.0}/src/adcp/types/generated_poc/property/property_list_filters.py +0 -0
  236. {adcp-3.0.0 → adcp-3.1.0}/src/adcp/types/generated_poc/property/update_property_list_request.py +0 -0
  237. {adcp-3.0.0 → adcp-3.1.0}/src/adcp/types/generated_poc/property/update_property_list_response.py +0 -0
  238. {adcp-3.0.0 → adcp-3.1.0}/src/adcp/types/generated_poc/protocol/__init__.py +0 -0
  239. {adcp-3.0.0 → adcp-3.1.0}/src/adcp/types/generated_poc/protocol/get_adcp_capabilities_request.py +0 -0
  240. {adcp-3.0.0 → adcp-3.1.0}/src/adcp/types/generated_poc/protocol/get_adcp_capabilities_response.py +0 -0
  241. {adcp-3.0.0 → adcp-3.1.0}/src/adcp/types/generated_poc/protocols/__init__.py +0 -0
  242. {adcp-3.0.0 → adcp-3.1.0}/src/adcp/types/generated_poc/protocols/adcp_extension.py +0 -0
  243. {adcp-3.0.0 → adcp-3.1.0}/src/adcp/types/generated_poc/signals/__init__.py +0 -0
  244. {adcp-3.0.0 → adcp-3.1.0}/src/adcp/types/generated_poc/signals/activate_signal_request.py +0 -0
  245. {adcp-3.0.0 → adcp-3.1.0}/src/adcp/types/generated_poc/signals/activate_signal_response.py +0 -0
  246. {adcp-3.0.0 → adcp-3.1.0}/src/adcp/types/generated_poc/signals/get_signals_request.py +0 -0
  247. {adcp-3.0.0 → adcp-3.1.0}/src/adcp/types/generated_poc/signals/get_signals_response.py +0 -0
  248. {adcp-3.0.0 → adcp-3.1.0}/src/adcp/types/generated_poc/sponsored_intelligence/__init__.py +0 -0
  249. {adcp-3.0.0 → adcp-3.1.0}/src/adcp/types/generated_poc/sponsored_intelligence/si_capabilities.py +0 -0
  250. {adcp-3.0.0 → adcp-3.1.0}/src/adcp/types/generated_poc/sponsored_intelligence/si_get_offering_request.py +0 -0
  251. {adcp-3.0.0 → adcp-3.1.0}/src/adcp/types/generated_poc/sponsored_intelligence/si_get_offering_response.py +0 -0
  252. {adcp-3.0.0 → adcp-3.1.0}/src/adcp/types/generated_poc/sponsored_intelligence/si_identity.py +0 -0
  253. {adcp-3.0.0 → adcp-3.1.0}/src/adcp/types/generated_poc/sponsored_intelligence/si_initiate_session_request.py +0 -0
  254. {adcp-3.0.0 → adcp-3.1.0}/src/adcp/types/generated_poc/sponsored_intelligence/si_initiate_session_response.py +0 -0
  255. {adcp-3.0.0 → adcp-3.1.0}/src/adcp/types/generated_poc/sponsored_intelligence/si_send_message_request.py +0 -0
  256. {adcp-3.0.0 → adcp-3.1.0}/src/adcp/types/generated_poc/sponsored_intelligence/si_send_message_response.py +0 -0
  257. {adcp-3.0.0 → adcp-3.1.0}/src/adcp/types/generated_poc/sponsored_intelligence/si_terminate_session_request.py +0 -0
  258. {adcp-3.0.0 → adcp-3.1.0}/src/adcp/types/generated_poc/sponsored_intelligence/si_terminate_session_response.py +0 -0
  259. {adcp-3.0.0 → adcp-3.1.0}/src/adcp/types/generated_poc/sponsored_intelligence/si_ui_element.py +0 -0
  260. {adcp-3.0.0 → adcp-3.1.0}/src/adcp/utils/__init__.py +0 -0
  261. {adcp-3.0.0 → adcp-3.1.0}/src/adcp/utils/format_assets.py +0 -0
  262. {adcp-3.0.0 → adcp-3.1.0}/src/adcp/utils/operation_id.py +0 -0
  263. {adcp-3.0.0 → adcp-3.1.0}/src/adcp/utils/preview_cache.py +0 -0
  264. {adcp-3.0.0 → adcp-3.1.0}/src/adcp/utils/response_parser.py +0 -0
  265. {adcp-3.0.0 → adcp-3.1.0}/src/adcp/validation.py +0 -0
  266. {adcp-3.0.0 → adcp-3.1.0}/src/adcp/webhooks.py +0 -0
  267. {adcp-3.0.0 → adcp-3.1.0}/src/adcp.egg-info/SOURCES.txt +0 -0
  268. {adcp-3.0.0 → adcp-3.1.0}/src/adcp.egg-info/dependency_links.txt +0 -0
  269. {adcp-3.0.0 → adcp-3.1.0}/src/adcp.egg-info/entry_points.txt +0 -0
  270. {adcp-3.0.0 → adcp-3.1.0}/src/adcp.egg-info/requires.txt +0 -0
  271. {adcp-3.0.0 → adcp-3.1.0}/src/adcp.egg-info/top_level.txt +0 -0
  272. {adcp-3.0.0 → adcp-3.1.0}/tests/test_adagents.py +0 -0
  273. {adcp-3.0.0 → adcp-3.1.0}/tests/test_cli.py +0 -0
  274. {adcp-3.0.0 → adcp-3.1.0}/tests/test_client.py +0 -0
  275. {adcp-3.0.0 → adcp-3.1.0}/tests/test_code_generation.py +0 -0
  276. {adcp-3.0.0 → adcp-3.1.0}/tests/test_discriminated_unions.py +0 -0
  277. {adcp-3.0.0 → adcp-3.1.0}/tests/test_format_assets.py +0 -0
  278. {adcp-3.0.0 → adcp-3.1.0}/tests/test_format_id_validation.py +0 -0
  279. {adcp-3.0.0 → adcp-3.1.0}/tests/test_helpers.py +0 -0
  280. {adcp-3.0.0 → adcp-3.1.0}/tests/test_preview_html.py +0 -0
  281. {adcp-3.0.0 → adcp-3.1.0}/tests/test_protocols.py +0 -0
  282. {adcp-3.0.0 → adcp-3.1.0}/tests/test_public_api.py +0 -0
  283. {adcp-3.0.0 → adcp-3.1.0}/tests/test_response_parser.py +0 -0
  284. {adcp-3.0.0 → adcp-3.1.0}/tests/test_response_str.py +0 -0
  285. {adcp-3.0.0 → adcp-3.1.0}/tests/test_server_framework.py +0 -0
  286. {adcp-3.0.0 → adcp-3.1.0}/tests/test_simple_api.py +0 -0
  287. {adcp-3.0.0 → adcp-3.1.0}/tests/test_type_coercion.py +0 -0
  288. {adcp-3.0.0 → adcp-3.1.0}/tests/test_version_interop.py +0 -0
  289. {adcp-3.0.0 → adcp-3.1.0}/tests/test_webhook_handling.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: adcp
3
- Version: 3.0.0
3
+ Version: 3.1.0
4
4
  Summary: Official Python client for the Ad Context Protocol (AdCP)
5
5
  Author-email: AdCP Community <maintainers@adcontextprotocol.org>
6
6
  License: Apache-2.0
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "adcp"
7
- version = "3.0.0"
7
+ version = "3.1.0"
8
8
  description = "Official Python client for the Ad Context Protocol (AdCP)"
9
9
  authors = [
10
10
  {name = "AdCP Community", email = "maintainers@adcontextprotocol.org"}
@@ -139,6 +139,8 @@ from adcp.types.aliases import (
139
139
  BuildCreativeSuccessResponse,
140
140
  CreateMediaBuyErrorResponse,
141
141
  CreateMediaBuySuccessResponse,
142
+ Deployment,
143
+ Destination,
142
144
  HtmlPreviewRender,
143
145
  InlineDaastAsset,
144
146
  InlineVastAsset,
@@ -149,10 +151,12 @@ from adcp.types.aliases import (
149
151
  PreviewCreativeInteractiveResponse,
150
152
  PreviewCreativeManifestRequest,
151
153
  PreviewCreativeStaticResponse,
154
+ PricingOption,
152
155
  PropertyId,
153
156
  PropertyTag,
154
157
  ProvidePerformanceFeedbackErrorResponse,
155
158
  ProvidePerformanceFeedbackSuccessResponse,
159
+ PublisherProperties,
156
160
  PublisherPropertiesAll,
157
161
  PublisherPropertiesById,
158
162
  PublisherPropertiesByTag,
@@ -193,7 +197,7 @@ from adcp.webhooks import (
193
197
  get_adcp_signed_headers_for_webhook,
194
198
  )
195
199
 
196
- __version__ = "3.0.0"
200
+ __version__ = "3.1.0"
197
201
 
198
202
 
199
203
  def get_adcp_version() -> str:
@@ -362,6 +366,8 @@ __all__ = [
362
366
  "BuildCreativeErrorResponse",
363
367
  "CreateMediaBuySuccessResponse",
364
368
  "CreateMediaBuyErrorResponse",
369
+ "Deployment",
370
+ "Destination",
365
371
  "HtmlPreviewRender",
366
372
  "InlineDaastAsset",
367
373
  "InlineVastAsset",
@@ -372,10 +378,12 @@ __all__ = [
372
378
  "PreviewCreativeManifestRequest",
373
379
  "PreviewCreativeStaticResponse",
374
380
  "PreviewCreativeInteractiveResponse",
381
+ "PricingOption",
375
382
  "PropertyId",
376
383
  "PropertyTag",
377
384
  "ProvidePerformanceFeedbackSuccessResponse",
378
385
  "ProvidePerformanceFeedbackErrorResponse",
386
+ "PublisherProperties",
379
387
  "PublisherPropertiesAll",
380
388
  "PublisherPropertiesById",
381
389
  "PublisherPropertiesByTag",
@@ -289,10 +289,12 @@ from adcp.types.aliases import (
289
289
  PreviewCreativeInteractiveResponse,
290
290
  PreviewCreativeManifestRequest,
291
291
  PreviewCreativeStaticResponse,
292
+ PricingOption,
292
293
  PropertyId,
293
294
  PropertyTag,
294
295
  ProvidePerformanceFeedbackErrorResponse,
295
296
  ProvidePerformanceFeedbackSuccessResponse,
297
+ PublisherProperties,
296
298
  PublisherPropertiesAll,
297
299
  PublisherPropertiesById,
298
300
  PublisherPropertiesByTag,
@@ -602,10 +604,12 @@ __all__ = [
602
604
  "PreviewCreativeInteractiveResponse",
603
605
  "PreviewCreativeManifestRequest",
604
606
  "PreviewCreativeStaticResponse",
607
+ "PricingOption",
605
608
  "PropertyId",
606
609
  "PropertyTag",
607
610
  "ProvidePerformanceFeedbackErrorResponse",
608
611
  "ProvidePerformanceFeedbackSuccessResponse",
612
+ "PublisherProperties",
609
613
  "PublisherPropertiesAll",
610
614
  "PublisherPropertiesById",
611
615
  "PublisherPropertiesByTag",
@@ -43,6 +43,11 @@ from adcp.types._generated import (
43
43
  # Build creative responses
44
44
  BuildCreativeResponse1,
45
45
  BuildCreativeResponse2,
46
+ CpcPricingOption,
47
+ CpcvPricingOption,
48
+ CpmPricingOption,
49
+ CppPricingOption,
50
+ CpvPricingOption,
46
51
  # Create media buy responses
47
52
  CreateMediaBuyResponse1,
48
53
  CreateMediaBuyResponse2,
@@ -55,6 +60,7 @@ from adcp.types._generated import (
55
60
  # Destination types
56
61
  Destination1,
57
62
  Destination2,
63
+ FlatRatePricingOption,
58
64
  # Preview creative requests
59
65
  PreviewCreativeRequest1,
60
66
  PreviewCreativeRequest2,
@@ -86,6 +92,7 @@ from adcp.types._generated import (
86
92
  # VAST assets
87
93
  VastAsset1,
88
94
  VastAsset2,
95
+ VcpmPricingOption,
89
96
  )
90
97
  from adcp.types._generated import (
91
98
  PublisherPropertySelector1 as PublisherPropertiesInternal,
@@ -688,6 +695,52 @@ Example:
688
695
  ```
689
696
  """
690
697
 
698
+ # ============================================================================
699
+ # PRICING OPTION UNION TYPE - For Type Hints Without RootModel Wrapper
700
+ # ============================================================================
701
+ # The generated PricingOption is a RootModel wrapper that mypy doesn't recognize
702
+ # as compatible with the individual variant types. This union alias provides a
703
+ # way to type-hint pricing options without the wrapper, fixing mypy list-item errors.
704
+
705
+ PricingOption = (
706
+ CpmPricingOption
707
+ | VcpmPricingOption
708
+ | CpcPricingOption
709
+ | CpcvPricingOption
710
+ | CpvPricingOption
711
+ | CppPricingOption
712
+ | FlatRatePricingOption
713
+ )
714
+ """Union type for all pricing option variants.
715
+
716
+ Use this for type hints when constructing Product.pricing_options or any field
717
+ that accepts pricing options. This fixes mypy list-item errors that occur when
718
+ using the individual variant types.
719
+
720
+ Example:
721
+ ```python
722
+ from adcp.types import Product, CpmPricingOption, PricingOption
723
+
724
+ # Type hint for a list of pricing options
725
+ def get_pricing(options: list[PricingOption]) -> None:
726
+ for opt in options:
727
+ print(f"Model: {opt.pricing_model}")
728
+
729
+ # Use in Product construction (no more mypy errors!)
730
+ product = Product(
731
+ product_id="test",
732
+ name="Test Product",
733
+ pricing_options=[
734
+ CpmPricingOption(
735
+ pricing_model="cpm",
736
+ floor_price=1.50,
737
+ currency="USD"
738
+ )
739
+ ]
740
+ )
741
+ ```
742
+ """
743
+
691
744
  # ============================================================================
692
745
  # EXPORTS
693
746
  # ============================================================================
@@ -759,4 +812,6 @@ __all__ = [
759
812
  "AgentDestination",
760
813
  # Destination union
761
814
  "Destination",
815
+ # Pricing option union
816
+ "PricingOption",
762
817
  ]
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: adcp
3
- Version: 3.0.0
3
+ Version: 3.1.0
4
4
  Summary: Official Python client for the Ad Context Protocol (AdCP)
5
5
  Author-email: AdCP Community <maintainers@adcontextprotocol.org>
6
6
  License: Apache-2.0
@@ -572,3 +572,236 @@ def test_deployment_destination_aliases_in_exports():
572
572
  assert "AgentDeployment" in aliases_module.__all__
573
573
  assert "PlatformDestination" in aliases_module.__all__
574
574
  assert "AgentDestination" in aliases_module.__all__
575
+
576
+
577
+ # ============================================================================
578
+ # UNION TYPE ALIASES TESTS
579
+ # ============================================================================
580
+
581
+
582
+ def test_pricing_option_union_import():
583
+ """Test that PricingOption union type can be imported."""
584
+ from adcp import PricingOption
585
+ from adcp.types.aliases import PricingOption as AliasPricingOption
586
+
587
+ # Verify all import paths work
588
+ assert PricingOption is AliasPricingOption
589
+
590
+
591
+ def test_pricing_option_union_is_union_type():
592
+ """Test that PricingOption is a union type, not a RootModel."""
593
+ import types
594
+
595
+ from adcp import PricingOption
596
+
597
+ # Should be a Union type, not a class
598
+ # In Python 3.10+, unions created with | are types.UnionType
599
+ assert isinstance(PricingOption, types.UnionType)
600
+
601
+
602
+ def test_pricing_option_union_contains_all_variants():
603
+ """Test that PricingOption union contains all pricing variants."""
604
+ from typing import get_args
605
+
606
+ from adcp import (
607
+ CpcPricingOption,
608
+ CpcvPricingOption,
609
+ CpmPricingOption,
610
+ CppPricingOption,
611
+ CpvPricingOption,
612
+ FlatRatePricingOption,
613
+ PricingOption,
614
+ VcpmPricingOption,
615
+ )
616
+
617
+ # Get all types in the union
618
+ union_args = set(get_args(PricingOption))
619
+
620
+ # Verify all pricing option variants are in the union
621
+ expected_variants = {
622
+ CpmPricingOption,
623
+ VcpmPricingOption,
624
+ CpcPricingOption,
625
+ CpcvPricingOption,
626
+ CpvPricingOption,
627
+ CppPricingOption,
628
+ FlatRatePricingOption,
629
+ }
630
+
631
+ assert union_args == expected_variants
632
+
633
+
634
+ def test_pricing_option_union_exported():
635
+ """Test that PricingOption union is properly exported."""
636
+ import adcp
637
+ import adcp.types.aliases as aliases_module
638
+
639
+ # Check main package exports
640
+ assert hasattr(adcp, "PricingOption")
641
+ assert "PricingOption" in adcp.__all__
642
+
643
+ # Check aliases module exports
644
+ assert hasattr(aliases_module, "PricingOption")
645
+ assert "PricingOption" in aliases_module.__all__
646
+
647
+
648
+ def test_pricing_option_variants_type_compatible():
649
+ """Test that pricing option variants are type-compatible with the union.
650
+
651
+ This is the key test from issue #120 - verifying that individual pricing
652
+ option types can be used where PricingOption is expected without mypy errors.
653
+ """
654
+ from adcp import CpmPricingOption, PricingOption, VcpmPricingOption
655
+
656
+ # Create instances of variants (pricing_option_id is required)
657
+ cpm = CpmPricingOption(
658
+ pricing_option_id="cpm-1",
659
+ pricing_model="cpm",
660
+ floor_price=1.50,
661
+ currency="USD",
662
+ )
663
+ vcpm = VcpmPricingOption(
664
+ pricing_option_id="vcpm-1",
665
+ pricing_model="vcpm",
666
+ floor_price=2.00,
667
+ currency="USD",
668
+ )
669
+
670
+ # These should be type-compatible with PricingOption union
671
+ # (mypy will verify this at type-check time, but we can verify instances at runtime)
672
+ options: list[PricingOption] = [cpm, vcpm]
673
+
674
+ assert len(options) == 2
675
+ assert options[0].pricing_model == "cpm"
676
+ assert options[1].pricing_model == "vcpm"
677
+
678
+
679
+ def test_publisher_properties_union_import():
680
+ """Test that PublisherProperties union type can be imported."""
681
+ from adcp import PublisherProperties
682
+ from adcp.types.aliases import PublisherProperties as AliasPublisherProperties
683
+
684
+ # Verify all import paths work
685
+ assert PublisherProperties is AliasPublisherProperties
686
+
687
+
688
+ def test_publisher_properties_union_is_union_type():
689
+ """Test that PublisherProperties is a union type, not a RootModel."""
690
+ import types
691
+
692
+ from adcp import PublisherProperties
693
+
694
+ # Should be a Union type, not a class
695
+ assert isinstance(PublisherProperties, types.UnionType)
696
+
697
+
698
+ def test_publisher_properties_union_contains_all_variants():
699
+ """Test that PublisherProperties union contains all property selector variants."""
700
+ from typing import get_args
701
+
702
+ from adcp import (
703
+ PublisherProperties,
704
+ PublisherPropertiesAll,
705
+ PublisherPropertiesById,
706
+ PublisherPropertiesByTag,
707
+ )
708
+
709
+ # Get all types in the union
710
+ union_args = set(get_args(PublisherProperties))
711
+
712
+ # Verify all publisher properties variants are in the union
713
+ expected_variants = {
714
+ PublisherPropertiesAll,
715
+ PublisherPropertiesById,
716
+ PublisherPropertiesByTag,
717
+ }
718
+
719
+ assert union_args == expected_variants
720
+
721
+
722
+ def test_publisher_properties_union_exported():
723
+ """Test that PublisherProperties union is properly exported."""
724
+ import adcp
725
+ import adcp.types.aliases as aliases_module
726
+
727
+ # Check main package exports
728
+ assert hasattr(adcp, "PublisherProperties")
729
+ assert "PublisherProperties" in adcp.__all__
730
+
731
+ # Check aliases module exports
732
+ assert hasattr(aliases_module, "PublisherProperties")
733
+ assert "PublisherProperties" in aliases_module.__all__
734
+
735
+
736
+ def test_deployment_union_import():
737
+ """Test that Deployment union type can be imported."""
738
+ from adcp import Deployment
739
+ from adcp.types.aliases import Deployment as AliasDeployment
740
+
741
+ # Verify all import paths work
742
+ assert Deployment is AliasDeployment
743
+
744
+
745
+ def test_deployment_union_is_union_type():
746
+ """Test that Deployment is a union type, not a RootModel."""
747
+ import types
748
+
749
+ from adcp import Deployment
750
+
751
+ # Should be a Union type, not a class
752
+ assert isinstance(Deployment, types.UnionType)
753
+
754
+
755
+ def test_deployment_union_contains_all_variants():
756
+ """Test that Deployment union contains all deployment variants."""
757
+ from typing import get_args
758
+
759
+ from adcp import AgentDeployment, Deployment, PlatformDeployment
760
+
761
+ # Get all types in the union
762
+ union_args = set(get_args(Deployment))
763
+
764
+ # Verify all deployment variants are in the union
765
+ expected_variants = {
766
+ PlatformDeployment,
767
+ AgentDeployment,
768
+ }
769
+
770
+ assert union_args == expected_variants
771
+
772
+
773
+ def test_destination_union_import():
774
+ """Test that Destination union type can be imported."""
775
+ from adcp import Destination
776
+ from adcp.types.aliases import Destination as AliasDestination
777
+
778
+ # Verify all import paths work
779
+ assert Destination is AliasDestination
780
+
781
+
782
+ def test_destination_union_is_union_type():
783
+ """Test that Destination is a union type, not a RootModel."""
784
+ import types
785
+
786
+ from adcp import Destination
787
+
788
+ # Should be a Union type, not a class
789
+ assert isinstance(Destination, types.UnionType)
790
+
791
+
792
+ def test_destination_union_contains_all_variants():
793
+ """Test that Destination union contains all destination variants."""
794
+ from typing import get_args
795
+
796
+ from adcp import AgentDestination, Destination, PlatformDestination
797
+
798
+ # Get all types in the union
799
+ union_args = set(get_args(Destination))
800
+
801
+ # Verify all destination variants are in the union
802
+ expected_variants = {
803
+ PlatformDestination,
804
+ AgentDestination,
805
+ }
806
+
807
+ assert union_args == expected_variants
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
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
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes