adcp 2.6.0__py3-none-any.whl → 2.7.0__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
adcp/__init__.py CHANGED
@@ -56,47 +56,6 @@ from adcp.testing import (
56
56
  from adcp.types import _generated as generated
57
57
  from adcp.types import aliases
58
58
 
59
- # Re-export commonly-used request/response types for convenience
60
- # Users should import from main package (e.g., `from adcp import GetProductsRequest`)
61
- # rather than internal modules for better API stability
62
- from adcp.types._generated import (
63
- # Audience & Targeting
64
- ActivateSignalRequest,
65
- ActivateSignalResponse,
66
- # Creative Operations
67
- BuildCreativeRequest,
68
- BuildCreativeResponse,
69
- # Media Buy Operations
70
- CreateMediaBuyRequest,
71
- CreateMediaBuyResponse,
72
- # Common data types
73
- Error,
74
- Format,
75
- GetMediaBuyDeliveryRequest,
76
- GetMediaBuyDeliveryResponse,
77
- GetProductsRequest,
78
- GetProductsResponse,
79
- GetSignalsRequest,
80
- GetSignalsResponse,
81
- ListAuthorizedPropertiesRequest,
82
- ListAuthorizedPropertiesResponse,
83
- ListCreativeFormatsRequest,
84
- ListCreativeFormatsResponse,
85
- ListCreativesRequest,
86
- ListCreativesResponse,
87
- PreviewCreativeRequest,
88
- PreviewCreativeResponse,
89
- Product,
90
- Property,
91
- ProvidePerformanceFeedbackRequest,
92
- ProvidePerformanceFeedbackResponse,
93
- SyncCreativesRequest,
94
- SyncCreativesResponse,
95
- UpdateMediaBuyRequest,
96
- UpdateMediaBuyResponse,
97
- )
98
- from adcp.types._generated import TaskStatus as GeneratedTaskStatus
99
-
100
59
  # Re-export semantic type aliases for better ergonomics
101
60
  from adcp.types.aliases import (
102
61
  ActivateSignalErrorResponse,
@@ -141,11 +100,20 @@ from adcp.types.aliases import (
141
100
  )
142
101
  from adcp.types.core import AgentConfig, Protocol, TaskResult, TaskStatus, WebhookMetadata
143
102
 
103
+ # Re-export commonly-used request/response types for convenience
104
+ # Users should import from main package (e.g., `from adcp import GetProductsRequest`)
105
+ # rather than internal modules for better API stability
144
106
  # Re-export core domain types and pricing options from stable API
145
107
  # These are commonly used in typical workflows
146
108
  from adcp.types.stable import (
109
+ # Audience & Targeting
110
+ ActivateSignalRequest,
111
+ ActivateSignalResponse,
147
112
  # Core domain types
148
113
  BrandManifest,
114
+ # Creative Operations
115
+ BuildCreativeRequest,
116
+ BuildCreativeResponse,
149
117
  # Pricing options (all 9 types for product creation)
150
118
  CpcPricingOption,
151
119
  CpcvPricingOption,
@@ -153,19 +121,54 @@ from adcp.types.stable import (
153
121
  CpmFixedRatePricingOption,
154
122
  CppPricingOption,
155
123
  CpvPricingOption,
124
+ # Media Buy Operations
125
+ CreateMediaBuyRequest,
126
+ CreateMediaBuyResponse,
156
127
  Creative,
157
128
  CreativeManifest,
158
129
  # Status enums (for control flow)
159
130
  CreativeStatus,
131
+ # Common data types
132
+ Error,
160
133
  FlatRatePricingOption,
134
+ Format,
135
+ FormatId,
136
+ GetMediaBuyDeliveryRequest,
137
+ GetMediaBuyDeliveryResponse,
138
+ GetProductsRequest,
139
+ GetProductsResponse,
140
+ GetSignalsRequest,
141
+ GetSignalsResponse,
142
+ ListAuthorizedPropertiesRequest,
143
+ ListAuthorizedPropertiesResponse,
144
+ ListCreativeFormatsRequest,
145
+ ListCreativeFormatsResponse,
146
+ ListCreativesRequest,
147
+ ListCreativesResponse,
161
148
  MediaBuy,
162
149
  MediaBuyStatus,
163
150
  Package,
151
+ PackageRequest,
164
152
  PackageStatus,
153
+ PreviewCreativeRequest,
154
+ PreviewCreativeResponse,
155
+ PriceGuidance,
165
156
  PricingModel,
157
+ Product,
158
+ Property,
159
+ ProvidePerformanceFeedbackRequest,
160
+ ProvidePerformanceFeedbackResponse,
161
+ PushNotificationConfig,
162
+ SyncCreativesRequest,
163
+ SyncCreativesResponse,
164
+ UpdateMediaBuyRequest,
165
+ UpdateMediaBuyResponse,
166
166
  VcpmAuctionPricingOption,
167
167
  VcpmFixedRatePricingOption,
168
168
  )
169
+ from adcp.types.stable import (
170
+ TaskStatus as GeneratedTaskStatus,
171
+ )
169
172
  from adcp.validation import (
170
173
  ValidationError,
171
174
  validate_adagents,
@@ -174,7 +177,7 @@ from adcp.validation import (
174
177
  validate_publisher_properties_item,
175
178
  )
176
179
 
177
- __version__ = "2.6.0"
180
+ __version__ = "2.7.0"
178
181
 
179
182
  __all__ = [
180
183
  # Client classes
@@ -215,6 +218,7 @@ __all__ = [
215
218
  "ProvidePerformanceFeedbackResponse",
216
219
  "Error",
217
220
  "Format",
221
+ "FormatId",
218
222
  "Product",
219
223
  "Property",
220
224
  # Core domain types (from stable API)
@@ -223,6 +227,7 @@ __all__ = [
223
227
  "CreativeManifest",
224
228
  "MediaBuy",
225
229
  "Package",
230
+ "PackageRequest",
226
231
  # Package type aliases
227
232
  "CreatedPackageReference",
228
233
  # Status enums (for control flow)
@@ -230,7 +235,7 @@ __all__ = [
230
235
  "MediaBuyStatus",
231
236
  "PackageStatus",
232
237
  "PricingModel",
233
- # Pricing options (all 9 types)
238
+ # Pricing-related types
234
239
  "CpcPricingOption",
235
240
  "CpcvPricingOption",
236
241
  "CpmAuctionPricingOption",
@@ -238,8 +243,11 @@ __all__ = [
238
243
  "CppPricingOption",
239
244
  "CpvPricingOption",
240
245
  "FlatRatePricingOption",
246
+ "PriceGuidance",
241
247
  "VcpmAuctionPricingOption",
242
248
  "VcpmFixedRatePricingOption",
249
+ # Configuration types
250
+ "PushNotificationConfig",
243
251
  # Adagents validation
244
252
  "AuthorizationContext",
245
253
  "fetch_adagents",
adcp/client.py CHANGED
@@ -17,7 +17,15 @@ from adcp.exceptions import ADCPWebhookSignatureError
17
17
  from adcp.protocols.a2a import A2AAdapter
18
18
  from adcp.protocols.base import ProtocolAdapter
19
19
  from adcp.protocols.mcp import MCPAdapter
20
- from adcp.types._generated import (
20
+ from adcp.types.core import (
21
+ Activity,
22
+ ActivityType,
23
+ AgentConfig,
24
+ Protocol,
25
+ TaskResult,
26
+ TaskStatus,
27
+ )
28
+ from adcp.types.stable import (
21
29
  ActivateSignalRequest,
22
30
  ActivateSignalResponse,
23
31
  GetMediaBuyDeliveryRequest,
@@ -40,15 +48,9 @@ from adcp.types._generated import (
40
48
  SyncCreativesResponse,
41
49
  WebhookPayload,
42
50
  )
43
- from adcp.types.core import (
44
- Activity,
45
- ActivityType,
46
- AgentConfig,
47
- Protocol,
48
- TaskResult,
49
- TaskStatus,
51
+ from adcp.types.stable import (
52
+ TaskStatus as GeneratedTaskStatus,
50
53
  )
51
- from adcp.types.generated_poc.task_status import TaskStatus as GeneratedTaskStatus
52
54
  from adcp.utils.operation_id import create_operation_id
53
55
 
54
56
  logger = logging.getLogger(__name__)
adcp/simple.py CHANGED
@@ -23,7 +23,7 @@ from __future__ import annotations
23
23
  from typing import TYPE_CHECKING, Any
24
24
 
25
25
  from adcp.exceptions import ADCPSimpleAPIError
26
- from adcp.types._generated import (
26
+ from adcp.types.stable import (
27
27
  ActivateSignalRequest,
28
28
  ActivateSignalResponse,
29
29
  GetMediaBuyDeliveryRequest,
adcp/types/_generated.py CHANGED
@@ -10,7 +10,7 @@ Auto-generated by datamodel-code-generator from JSON schemas.
10
10
  DO NOT EDIT MANUALLY.
11
11
 
12
12
  Generated from: https://github.com/adcontextprotocol/adcp/tree/main/schemas
13
- Generation date: 2025-11-18 12:52:17 UTC
13
+ Generation date: 2025-11-19 02:03:09 UTC
14
14
  """
15
15
  # ruff: noqa: E501, I001
16
16
  from __future__ import annotations
@@ -19,7 +19,7 @@ from __future__ import annotations
19
19
  from adcp.types.generated_poc.activate_signal_request import ActivateSignalRequest
20
20
  from adcp.types.generated_poc.activate_signal_response import ActivateSignalResponse, ActivateSignalResponse1, ActivateSignalResponse2
21
21
  from adcp.types.generated_poc.activation_key import ActivationKey1, ActivationKey2
22
- from adcp.types.generated_poc.adagents import AuthorizedAgents, AuthorizedAgents1, AuthorizedAgents2, AuthorizedAgents3, AuthorizedSalesAgents, Contact, PropertyId, PropertyTag, PublisherProperties, PublisherProperties1, Tags
22
+ from adcp.types.generated_poc.adagents import AuthorizedAgents, AuthorizedAgents1, AuthorizedAgents2, AuthorizedAgents3, AuthorizedSalesAgents, Contact, PropertyId, PropertyTag, Tags
23
23
  from adcp.types.generated_poc.asset_type import AssetTypeSchema, ContentLength, Dimensions, Duration, FileSize, Quality, Requirements, Type
24
24
  from adcp.types.generated_poc.audio_asset import AudioAsset
25
25
  from adcp.types.generated_poc.brand_manifest import Asset, AssetType, BrandManifest, Colors, Disclaimer, FeedFormat, Fonts, Logo, Metadata, ProductCatalog, UpdateFrequency
@@ -33,7 +33,7 @@ from adcp.types.generated_poc.cpm_fixed_option import CpmFixedRatePricingOption
33
33
  from adcp.types.generated_poc.cpp_option import CppPricingOption, Parameters
34
34
  from adcp.types.generated_poc.cpv_option import CpvPricingOption, ViewThreshold, ViewThreshold1
35
35
  from adcp.types.generated_poc.create_media_buy_request import CreateMediaBuyRequest, ReportingFrequency, ReportingWebhook, RequestedMetric
36
- from adcp.types.generated_poc.create_media_buy_response import CreateMediaBuyResponse, CreateMediaBuyResponse1, CreateMediaBuyResponse2, Package
36
+ from adcp.types.generated_poc.create_media_buy_response import CreateMediaBuyResponse, CreateMediaBuyResponse1, CreateMediaBuyResponse2
37
37
  from adcp.types.generated_poc.creative_asset import CreativeAsset, Input
38
38
  from adcp.types.generated_poc.creative_assignment import CreativeAssignment
39
39
  from adcp.types.generated_poc.creative_manifest import CreativeManifest
@@ -80,7 +80,7 @@ from adcp.types.generated_poc.preview_creative_request import Input2, OutputForm
80
80
  from adcp.types.generated_poc.preview_creative_response import Input4, Preview, Preview1, Preview2, PreviewCreativeResponse, PreviewCreativeResponse1, PreviewCreativeResponse2, Response, Response1, Results, Results1
81
81
  from adcp.types.generated_poc.preview_render import Embedding, PreviewRender, PreviewRender1, PreviewRender2, PreviewRender3
82
82
  from adcp.types.generated_poc.pricing_model import PricingModel
83
- from adcp.types.generated_poc.product import DeliveryMeasurement, Product, ProductCard, ProductCardDetailed, PublisherProperties4, PublisherProperties5
83
+ from adcp.types.generated_poc.product import DeliveryMeasurement, Product, ProductCard, ProductCardDetailed
84
84
  from adcp.types.generated_poc.promoted_offerings import AssetSelectors, Offering, PromotedOfferings
85
85
  from adcp.types.generated_poc.promoted_products import PromotedProducts
86
86
  from adcp.types.generated_poc.property import Identifier, Property, PropertyType, Tag
@@ -88,6 +88,7 @@ from adcp.types.generated_poc.protocol_envelope import ProtocolEnvelope
88
88
  from adcp.types.generated_poc.provide_performance_feedback_request import ProvidePerformanceFeedbackRequest
89
89
  from adcp.types.generated_poc.provide_performance_feedback_response import ProvidePerformanceFeedbackResponse, ProvidePerformanceFeedbackResponse1, ProvidePerformanceFeedbackResponse2
90
90
  from adcp.types.generated_poc.publisher_identifier_types import PublisherIdentifierTypes
91
+ from adcp.types.generated_poc.publisher_property_selector import PublisherPropertySelector1, PublisherPropertySelector2, PublisherPropertySelector3
91
92
  from adcp.types.generated_poc.push_notification_config import Authentication, PushNotificationConfig, Scheme
92
93
  from adcp.types.generated_poc.reporting_capabilities import AvailableMetric, AvailableReportingFrequency, ReportingCapabilities
93
94
  from adcp.types.generated_poc.response import ProtocolResponse
@@ -113,6 +114,10 @@ from adcp.types.generated_poc.video_asset import VideoAsset
113
114
  from adcp.types.generated_poc.webhook_asset import Method, Method1, ResponseType, Security, WebhookAsset
114
115
  from adcp.types.generated_poc.webhook_payload import WebhookPayload
115
116
 
117
+ # Special imports for name collisions (qualified names for types defined in multiple modules)
118
+ from adcp.types.generated_poc.create_media_buy_response import Package as _PackageFromCreateMediaBuyResponse
119
+ from adcp.types.generated_poc.package import Package as _PackageFromPackage
120
+
116
121
  # Backward compatibility aliases for renamed types
117
122
  Channels = AdvertisingChannels
118
123
 
@@ -146,9 +151,9 @@ __all__ = [
146
151
  "ListCreativesResponse", "Logo", "MarkdownAsset", "MarkdownFlavor", "Measurement",
147
152
  "MeasurementPeriod", "MediaBuy", "MediaBuyDelivery", "MediaBuyStatus", "Metadata", "Method",
148
153
  "Method1", "MetricType", "ModuleType", "NotificationType", "Offering", "OutputFormat",
149
- "Pacing", "Package", "PackageRequest", "PackageStatus", "Packages", "Packages1", "Packages2",
150
- "Packages3", "Pagination", "Parameters", "Performance", "PerformanceFeedback", "Placement",
151
- "Preview", "Preview1", "Preview2", "PreviewCreativeRequest", "PreviewCreativeRequest1",
154
+ "Pacing", "PackageRequest", "PackageStatus", "Packages", "Packages1", "Packages2", "Packages3",
155
+ "Pagination", "Parameters", "Performance", "PerformanceFeedback", "Placement", "Preview",
156
+ "Preview1", "Preview2", "PreviewCreativeRequest", "PreviewCreativeRequest1",
152
157
  "PreviewCreativeRequest2", "PreviewCreativeResponse", "PreviewCreativeResponse1",
153
158
  "PreviewCreativeResponse2", "PreviewRender", "PreviewRender1", "PreviewRender2",
154
159
  "PreviewRender3", "PriceGuidance", "Pricing", "PricingModel", "PrimaryCountry", "Product",
@@ -157,7 +162,7 @@ __all__ = [
157
162
  "PropertyType", "ProtocolEnvelope", "ProtocolResponse", "ProvidePerformanceFeedbackRequest",
158
163
  "ProvidePerformanceFeedbackResponse", "ProvidePerformanceFeedbackResponse1",
159
164
  "ProvidePerformanceFeedbackResponse2", "PublisherDomain", "PublisherIdentifierTypes",
160
- "PublisherProperties", "PublisherProperties1", "PublisherProperties4", "PublisherProperties5",
165
+ "PublisherPropertySelector1", "PublisherPropertySelector2", "PublisherPropertySelector3",
161
166
  "PushNotificationConfig", "Quality", "QuartileData", "QuerySummary", "Render",
162
167
  "ReportingCapabilities", "ReportingFrequency", "ReportingPeriod", "ReportingWebhook",
163
168
  "Request", "RequestedMetric", "Requirements", "Response", "Response1", "ResponseType",
@@ -171,5 +176,6 @@ __all__ = [
171
176
  "UpdateMediaBuyResponse", "UpdateMediaBuyResponse1", "UpdateMediaBuyResponse2", "UrlAsset",
172
177
  "UrlType", "ValidationMode", "VastAsset1", "VastAsset2", "VastVersion",
173
178
  "VcpmAuctionPricingOption", "VcpmFixedRatePricingOption", "VenueBreakdownItem", "VideoAsset",
174
- "ViewThreshold", "ViewThreshold1", "WebhookAsset", "WebhookPayload"
179
+ "ViewThreshold", "ViewThreshold1", "WebhookAsset", "WebhookPayload",
180
+ "_PackageFromCreateMediaBuyResponse", "_PackageFromPackage"
175
181
  ]
adcp/types/aliases.py CHANGED
@@ -31,7 +31,6 @@ immediately rather than at runtime when users try to use the aliases.
31
31
 
32
32
  from __future__ import annotations
33
33
 
34
- # Import all generated types that need semantic aliases
35
34
  from adcp.types._generated import (
36
35
  # Activation responses
37
36
  ActivateSignalResponse1,
@@ -64,6 +63,9 @@ from adcp.types._generated import (
64
63
  PreviewRender1,
65
64
  PreviewRender2,
66
65
  PreviewRender3,
66
+ # Publisher properties types
67
+ PropertyId,
68
+ PropertyTag,
67
69
  # Performance feedback responses
68
70
  ProvidePerformanceFeedbackResponse1,
69
71
  ProvidePerformanceFeedbackResponse2,
@@ -83,26 +85,23 @@ from adcp.types._generated import (
83
85
  VastAsset1,
84
86
  VastAsset2,
85
87
  )
86
-
87
- # Import Package types directly from their modules to avoid collision issues
88
- from adcp.types.generated_poc.create_media_buy_response import (
89
- Package as CreatedPackageInternal,
88
+ from adcp.types._generated import (
89
+ PublisherPropertySelector1 as PublisherPropertiesInternal,
90
90
  )
91
- from adcp.types.generated_poc.package import Package as FullPackageInternal
92
-
93
- # Import PublisherProperties types and related types from product module
94
- from adcp.types.generated_poc.product import (
95
- PropertyId,
96
- PropertyTag,
91
+ from adcp.types._generated import (
92
+ PublisherPropertySelector2 as PublisherPropertiesByIdInternal,
97
93
  )
98
- from adcp.types.generated_poc.product import (
99
- PublisherProperties as PublisherPropertiesInternal,
94
+ from adcp.types._generated import (
95
+ PublisherPropertySelector3 as PublisherPropertiesByTagInternal,
100
96
  )
101
- from adcp.types.generated_poc.product import (
102
- PublisherProperties4 as PublisherPropertiesByIdInternal,
97
+
98
+ # Import all generated types that need semantic aliases
99
+ from adcp.types._generated import (
100
+ # Package types (from name collision resolution)
101
+ _PackageFromCreateMediaBuyResponse as CreatedPackageInternal,
103
102
  )
104
- from adcp.types.generated_poc.product import (
105
- PublisherProperties5 as PublisherPropertiesByTagInternal,
103
+ from adcp.types._generated import (
104
+ _PackageFromPackage as FullPackageInternal,
106
105
  )
107
106
 
108
107
  # ============================================================================
@@ -1,6 +1,6 @@
1
1
  # generated by datamodel-codegen:
2
2
  # filename: adagents.json
3
- # timestamp: 2025-11-18T03:35:10+00:00
3
+ # timestamp: 2025-11-19T02:02:39+00:00
4
4
 
5
5
  from __future__ import annotations
6
6
 
@@ -9,7 +9,7 @@ from typing import Annotated, Literal
9
9
  from adcp.types.base import AdCPBaseModel
10
10
  from pydantic import AnyUrl, AwareDatetime, ConfigDict, EmailStr, Field, RootModel
11
11
 
12
- from . import property
12
+ from . import property, publisher_property_selector
13
13
 
14
14
 
15
15
  class PropertyId(RootModel[str]):
@@ -72,81 +72,6 @@ class AuthorizedAgents1(AdCPBaseModel):
72
72
  url: Annotated[AnyUrl, Field(description="The authorized agent's API endpoint URL")]
73
73
 
74
74
 
75
- class PublisherProperties(AdCPBaseModel):
76
- model_config = ConfigDict(
77
- extra='forbid',
78
- )
79
- property_ids: Annotated[
80
- list[PropertyId],
81
- Field(
82
- description="Specific property IDs from the publisher's adagents.json properties array",
83
- min_length=1,
84
- ),
85
- ]
86
- publisher_domain: Annotated[
87
- str,
88
- Field(
89
- description="Domain where the publisher's adagents.json is hosted (e.g., 'cnn.com')",
90
- pattern='^[a-z0-9]([a-z0-9-]*[a-z0-9])?(\\.[a-z0-9]([a-z0-9-]*[a-z0-9])?)*$',
91
- ),
92
- ]
93
- selection_type: Annotated[
94
- Literal['by_id'],
95
- Field(description='Discriminator indicating selection by specific property IDs'),
96
- ]
97
-
98
-
99
- class PublisherProperties1(AdCPBaseModel):
100
- model_config = ConfigDict(
101
- extra='forbid',
102
- )
103
- property_tags: Annotated[
104
- list[PropertyTag],
105
- Field(
106
- description="Property tags from the publisher's adagents.json tags. Agent is authorized for all properties with these tags",
107
- min_length=1,
108
- ),
109
- ]
110
- publisher_domain: Annotated[
111
- str,
112
- Field(
113
- description="Domain where the publisher's adagents.json is hosted (e.g., 'cnn.com')",
114
- pattern='^[a-z0-9]([a-z0-9-]*[a-z0-9])?(\\.[a-z0-9]([a-z0-9-]*[a-z0-9])?)*$',
115
- ),
116
- ]
117
- selection_type: Annotated[
118
- Literal['by_tag'], Field(description='Discriminator indicating selection by property tags')
119
- ]
120
-
121
-
122
- class AuthorizedAgents3(AdCPBaseModel):
123
- model_config = ConfigDict(
124
- extra='forbid',
125
- )
126
- authorization_type: Annotated[
127
- Literal['publisher_properties'],
128
- Field(
129
- description='Discriminator indicating authorization for properties from other publisher domains'
130
- ),
131
- ]
132
- authorized_for: Annotated[
133
- str,
134
- Field(
135
- description='Human-readable description of what this agent is authorized to sell',
136
- max_length=500,
137
- min_length=1,
138
- ),
139
- ]
140
- publisher_properties: Annotated[
141
- list[PublisherProperties | PublisherProperties1],
142
- Field(
143
- description='Properties from other publisher domains this agent is authorized for. Each entry specifies a publisher domain and which of their properties this agent can sell',
144
- min_length=1,
145
- ),
146
- ]
147
- url: Annotated[AnyUrl, Field(description="The authorized agent's API endpoint URL")]
148
-
149
-
150
75
  class Contact(AdCPBaseModel):
151
76
  model_config = ConfigDict(
152
77
  extra='forbid',
@@ -226,6 +151,38 @@ class AuthorizedAgents2(AdCPBaseModel):
226
151
  url: Annotated[AnyUrl, Field(description="The authorized agent's API endpoint URL")]
227
152
 
228
153
 
154
+ class AuthorizedAgents3(AdCPBaseModel):
155
+ model_config = ConfigDict(
156
+ extra='forbid',
157
+ )
158
+ authorization_type: Annotated[
159
+ Literal['publisher_properties'],
160
+ Field(
161
+ description='Discriminator indicating authorization for properties from other publisher domains'
162
+ ),
163
+ ]
164
+ authorized_for: Annotated[
165
+ str,
166
+ Field(
167
+ description='Human-readable description of what this agent is authorized to sell',
168
+ max_length=500,
169
+ min_length=1,
170
+ ),
171
+ ]
172
+ publisher_properties: Annotated[
173
+ list[
174
+ publisher_property_selector.PublisherPropertySelector1
175
+ | publisher_property_selector.PublisherPropertySelector2
176
+ | publisher_property_selector.PublisherPropertySelector3
177
+ ],
178
+ Field(
179
+ description='Properties from other publisher domains this agent is authorized for. Each entry specifies a publisher domain and which of their properties this agent can sell',
180
+ min_length=1,
181
+ ),
182
+ ]
183
+ url: Annotated[AnyUrl, Field(description="The authorized agent's API endpoint URL")]
184
+
185
+
229
186
  class AuthorizedSalesAgents(AdCPBaseModel):
230
187
  model_config = ConfigDict(
231
188
  extra='forbid',
@@ -1,13 +1,13 @@
1
1
  # generated by datamodel-codegen:
2
2
  # filename: product.json
3
- # timestamp: 2025-11-18T05:05:53+00:00
3
+ # timestamp: 2025-11-19T02:02:39+00:00
4
4
 
5
5
  from __future__ import annotations
6
6
 
7
- from typing import Annotated, Any, Literal
7
+ from typing import Annotated, Any
8
8
 
9
9
  from adcp.types.base import AdCPBaseModel
10
- from pydantic import AwareDatetime, ConfigDict, Field, RootModel
10
+ from pydantic import AwareDatetime, ConfigDict, Field
11
11
 
12
12
  from . import cpc_option, cpcv_option, cpm_auction_option, cpm_fixed_option, cpp_option, cpv_option
13
13
  from . import creative_policy as creative_policy_1
@@ -15,7 +15,7 @@ from . import delivery_type as delivery_type_1
15
15
  from . import flat_rate_option
16
16
  from . import format_id as format_id_1
17
17
  from . import measurement as measurement_1
18
- from . import placement
18
+ from . import placement, publisher_property_selector
19
19
  from . import reporting_capabilities as reporting_capabilities_1
20
20
  from . import vcpm_auction_option, vcpm_fixed_option
21
21
 
@@ -69,77 +69,6 @@ class ProductCardDetailed(AdCPBaseModel):
69
69
  ]
70
70
 
71
71
 
72
- class PublisherProperties(AdCPBaseModel):
73
- model_config = ConfigDict(
74
- extra='forbid',
75
- )
76
- publisher_domain: Annotated[
77
- str,
78
- Field(
79
- description="Domain where publisher's adagents.json is hosted (e.g., 'cnn.com')",
80
- pattern='^[a-z0-9]([a-z0-9-]*[a-z0-9])?(\\.[a-z0-9]([a-z0-9-]*[a-z0-9])?)*$',
81
- ),
82
- ]
83
- selection_type: Annotated[
84
- Literal['all'],
85
- Field(
86
- description='Discriminator indicating all properties from this publisher are included'
87
- ),
88
- ]
89
-
90
-
91
- class PropertyId(RootModel[str]):
92
- root: Annotated[str, Field(pattern='^[a-z0-9_]+$')]
93
-
94
-
95
- class PublisherProperties4(AdCPBaseModel):
96
- model_config = ConfigDict(
97
- extra='forbid',
98
- )
99
- property_ids: Annotated[
100
- list[PropertyId],
101
- Field(description="Specific property IDs from the publisher's adagents.json", min_length=1),
102
- ]
103
- publisher_domain: Annotated[
104
- str,
105
- Field(
106
- description="Domain where publisher's adagents.json is hosted (e.g., 'cnn.com')",
107
- pattern='^[a-z0-9]([a-z0-9-]*[a-z0-9])?(\\.[a-z0-9]([a-z0-9-]*[a-z0-9])?)*$',
108
- ),
109
- ]
110
- selection_type: Annotated[
111
- Literal['by_id'],
112
- Field(description='Discriminator indicating selection by specific property IDs'),
113
- ]
114
-
115
-
116
- class PropertyTag(PropertyId):
117
- pass
118
-
119
-
120
- class PublisherProperties5(AdCPBaseModel):
121
- model_config = ConfigDict(
122
- extra='forbid',
123
- )
124
- property_tags: Annotated[
125
- list[PropertyTag],
126
- Field(
127
- description="Property tags from the publisher's adagents.json. Product covers all properties with these tags",
128
- min_length=1,
129
- ),
130
- ]
131
- publisher_domain: Annotated[
132
- str,
133
- Field(
134
- description="Domain where publisher's adagents.json is hosted (e.g., 'cnn.com')",
135
- pattern='^[a-z0-9]([a-z0-9-]*[a-z0-9])?(\\.[a-z0-9]([a-z0-9-]*[a-z0-9])?)*$',
136
- ),
137
- ]
138
- selection_type: Annotated[
139
- Literal['by_tag'], Field(description='Discriminator indicating selection by property tags')
140
- ]
141
-
142
-
143
72
  class Product(AdCPBaseModel):
144
73
  model_config = ConfigDict(
145
74
  extra='forbid',
@@ -212,7 +141,11 @@ class Product(AdCPBaseModel):
212
141
  ] = None
213
142
  product_id: Annotated[str, Field(description='Unique identifier for the product')]
214
143
  publisher_properties: Annotated[
215
- list[PublisherProperties | PublisherProperties4 | PublisherProperties5],
144
+ list[
145
+ publisher_property_selector.PublisherPropertySelector1
146
+ | publisher_property_selector.PublisherPropertySelector2
147
+ | publisher_property_selector.PublisherPropertySelector3
148
+ ],
216
149
  Field(
217
150
  description="Publisher properties covered by this product. Buyers fetch actual property definitions from each publisher's adagents.json and validate agent authorization. Selection patterns mirror the authorization patterns in adagents.json for consistency.",
218
151
  min_length=1,
@@ -0,0 +1,81 @@
1
+ # generated by datamodel-codegen:
2
+ # filename: publisher-property-selector.json
3
+ # timestamp: 2025-11-19T02:02:39+00:00
4
+
5
+ from __future__ import annotations
6
+
7
+ from typing import Annotated, Literal
8
+
9
+ from adcp.types.base import AdCPBaseModel
10
+ from pydantic import ConfigDict, Field, RootModel
11
+
12
+
13
+ class PublisherPropertySelector1(AdCPBaseModel):
14
+ model_config = ConfigDict(
15
+ extra='forbid',
16
+ )
17
+ publisher_domain: Annotated[
18
+ str,
19
+ Field(
20
+ description="Domain where publisher's adagents.json is hosted (e.g., 'cnn.com')",
21
+ pattern='^[a-z0-9]([a-z0-9-]*[a-z0-9])?(\\.[a-z0-9]([a-z0-9-]*[a-z0-9])?)*$',
22
+ ),
23
+ ]
24
+ selection_type: Annotated[
25
+ Literal['all'],
26
+ Field(
27
+ description='Discriminator indicating all properties from this publisher are included'
28
+ ),
29
+ ]
30
+
31
+
32
+ class PropertyId(RootModel[str]):
33
+ root: Annotated[str, Field(pattern='^[a-z0-9_]+$')]
34
+
35
+
36
+ class PublisherPropertySelector2(AdCPBaseModel):
37
+ model_config = ConfigDict(
38
+ extra='forbid',
39
+ )
40
+ property_ids: Annotated[
41
+ list[PropertyId],
42
+ Field(description="Specific property IDs from the publisher's adagents.json", min_length=1),
43
+ ]
44
+ publisher_domain: Annotated[
45
+ str,
46
+ Field(
47
+ description="Domain where publisher's adagents.json is hosted (e.g., 'cnn.com')",
48
+ pattern='^[a-z0-9]([a-z0-9-]*[a-z0-9])?(\\.[a-z0-9]([a-z0-9-]*[a-z0-9])?)*$',
49
+ ),
50
+ ]
51
+ selection_type: Annotated[
52
+ Literal['by_id'],
53
+ Field(description='Discriminator indicating selection by specific property IDs'),
54
+ ]
55
+
56
+
57
+ class PropertyTag(PropertyId):
58
+ pass
59
+
60
+
61
+ class PublisherPropertySelector3(AdCPBaseModel):
62
+ model_config = ConfigDict(
63
+ extra='forbid',
64
+ )
65
+ property_tags: Annotated[
66
+ list[PropertyTag],
67
+ Field(
68
+ description="Property tags from the publisher's adagents.json. Selector covers all properties with these tags",
69
+ min_length=1,
70
+ ),
71
+ ]
72
+ publisher_domain: Annotated[
73
+ str,
74
+ Field(
75
+ description="Domain where publisher's adagents.json is hosted (e.g., 'cnn.com')",
76
+ pattern='^[a-z0-9]([a-z0-9-]*[a-z0-9])?(\\.[a-z0-9]([a-z0-9-]*[a-z0-9])?)*$',
77
+ ),
78
+ ]
79
+ selection_type: Annotated[
80
+ Literal['by_tag'], Field(description='Discriminator indicating selection by property tags')
81
+ ]
adcp/types/stable.py CHANGED
@@ -48,6 +48,7 @@ from adcp.types._generated import (
48
48
  Error,
49
49
  FlatRatePricingOption,
50
50
  Format,
51
+ FormatId,
51
52
  GetMediaBuyDeliveryRequest,
52
53
  GetMediaBuyDeliveryResponse,
53
54
  GetProductsRequest,
@@ -66,14 +67,17 @@ from adcp.types._generated import (
66
67
  MarkdownAsset,
67
68
  MediaBuy,
68
69
  MediaBuyStatus,
70
+ PackageRequest,
69
71
  PackageStatus,
70
72
  PreviewCreativeRequest,
71
73
  PreviewCreativeResponse,
74
+ PriceGuidance,
72
75
  PricingModel,
73
76
  Product,
74
77
  Property,
75
78
  ProvidePerformanceFeedbackRequest,
76
79
  ProvidePerformanceFeedbackResponse,
80
+ PushNotificationConfig,
77
81
  SyncCreativesRequest,
78
82
  SyncCreativesResponse,
79
83
  TasksGetRequest,
@@ -90,11 +94,12 @@ from adcp.types._generated import (
90
94
  VcpmFixedRatePricingOption,
91
95
  VideoAsset,
92
96
  WebhookAsset,
97
+ WebhookPayload,
93
98
  )
94
99
 
95
100
  # Import all generated types from internal consolidated module
96
- # Import Package directly from its module to avoid collision with Response Package
97
- from adcp.types.generated_poc.package import Package
101
+ # Import Package from _generated (uses qualified name to avoid collision)
102
+ from adcp.types._generated import _PackageFromPackage as Package
98
103
 
99
104
  # Note: BrandManifest is currently split into BrandManifest1/2 due to upstream schema
100
105
  # using anyOf incorrectly. This will be fixed upstream to create a single BrandManifest type.
@@ -142,11 +147,13 @@ __all__ = [
142
147
  "CreativeManifest",
143
148
  "Error",
144
149
  "Format",
150
+ "FormatId",
145
151
  "MediaBuy",
146
152
  "Package",
153
+ "PackageRequest",
147
154
  "Product",
148
155
  "Property",
149
- # Pricing options
156
+ # Pricing-related types
150
157
  "CpcPricingOption",
151
158
  "CpcvPricingOption",
152
159
  "CpmAuctionPricingOption",
@@ -154,6 +161,7 @@ __all__ = [
154
161
  "CppPricingOption",
155
162
  "CpvPricingOption",
156
163
  "FlatRatePricingOption",
164
+ "PriceGuidance",
157
165
  "VcpmAuctionPricingOption",
158
166
  "VcpmFixedRatePricingOption",
159
167
  # Status enums
@@ -163,6 +171,8 @@ __all__ = [
163
171
  "PricingModel",
164
172
  "TaskStatus",
165
173
  "TaskType",
174
+ # Configuration types
175
+ "PushNotificationConfig",
166
176
  # Assets
167
177
  "AudioAsset",
168
178
  "CssAsset",
@@ -174,4 +184,5 @@ __all__ = [
174
184
  "UrlAsset",
175
185
  "VideoAsset",
176
186
  "WebhookAsset",
187
+ "WebhookPayload",
177
188
  ]
@@ -10,7 +10,7 @@ from typing import TYPE_CHECKING, Any
10
10
 
11
11
  if TYPE_CHECKING:
12
12
  from adcp.client import ADCPClient
13
- from adcp.types._generated import CreativeManifest, Format, FormatId, Product
13
+ from adcp.types.stable import CreativeManifest, Format, FormatId, Product
14
14
 
15
15
  logger = logging.getLogger(__name__)
16
16
 
@@ -67,7 +67,7 @@ class PreviewURLGenerator:
67
67
  Returns:
68
68
  Preview data with preview_url and metadata, or None if generation fails
69
69
  """
70
- from adcp.types._generated import PreviewCreativeRequest1
70
+ from adcp.types.aliases import PreviewCreativeFormatRequest
71
71
 
72
72
  cache_key = _make_manifest_cache_key(format_id, manifest.model_dump(exclude_none=True))
73
73
 
@@ -75,7 +75,7 @@ class PreviewURLGenerator:
75
75
  return self._preview_cache[cache_key]
76
76
 
77
77
  try:
78
- request = PreviewCreativeRequest1(
78
+ request = PreviewCreativeFormatRequest(
79
79
  request_type="single",
80
80
  format_id=format_id,
81
81
  creative_manifest=manifest,
@@ -123,7 +123,7 @@ class PreviewURLGenerator:
123
123
  Returns:
124
124
  List of preview data dicts (or None for failures), in same order as requests
125
125
  """
126
- from adcp.types._generated import PreviewCreativeRequest
126
+ from adcp.types.stable import PreviewCreativeRequest
127
127
 
128
128
  if not requests:
129
129
  return []
@@ -396,7 +396,7 @@ def _create_sample_manifest_for_format(fmt: Format) -> CreativeManifest | None:
396
396
  Returns:
397
397
  Sample CreativeManifest, or None if unable to create one
398
398
  """
399
- from adcp.types._generated import CreativeManifest
399
+ from adcp.types.stable import CreativeManifest
400
400
 
401
401
  if not fmt.assets_required:
402
402
  return None
@@ -436,7 +436,7 @@ def _create_sample_manifest_for_format_id(
436
436
  Returns:
437
437
  Sample CreativeManifest with placeholder assets
438
438
  """
439
- from adcp.types._generated import CreativeManifest, ImageAsset, UrlAsset
439
+ from adcp.types.stable import CreativeManifest, ImageAsset, UrlAsset
440
440
 
441
441
  assets = {
442
442
  "primary_asset": ImageAsset(url="https://example.com/sample-image.jpg"),
@@ -456,7 +456,7 @@ def _create_sample_asset(asset_type: str | None) -> Any:
456
456
  Returns:
457
457
  Sample asset object (Pydantic model)
458
458
  """
459
- from adcp.types._generated import (
459
+ from adcp.types.stable import (
460
460
  HtmlAsset,
461
461
  ImageAsset,
462
462
  TextAsset,
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: adcp
3
- Version: 2.6.0
3
+ Version: 2.7.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
@@ -1,11 +1,11 @@
1
- adcp/__init__.py,sha256=WTIxgfr9VU1apx9J6AinZ3xwV61Z2O0smUnQEdEarmY,9034
1
+ adcp/__init__.py,sha256=yoj3l_T1DPfbYUIWSMWMXOsxTqhIyhbeuvlAtU-HAGg,9188
2
2
  adcp/__main__.py,sha256=YF2GUXF1LICW1TPxNQiGIfSp5cpAsejoEG2fuOgbzrc,12839
3
3
  adcp/adagents.py,sha256=o-vTBmdZvu9aER-TAlLLL3s-WGYY8N67jnrAH24lST8,22333
4
- adcp/client.py,sha256=Z70D0bHcLNmr0NBGXbFUvW8dBdzHkcv8CmFcYo3pIjw,28803
4
+ adcp/client.py,sha256=EzHS5Aysau3liwkGp_clYkYxTHACeqP4zNT8jSLz0hs,28789
5
5
  adcp/config.py,sha256=Vsy7ZPOI8G3fB_i5Nk-CHbC7wdasCUWuKlos0fwA0kY,2017
6
6
  adcp/exceptions.py,sha256=1aZEWpaM92OxD2jl9yKsqJp5ReSWaj0S0DFhxChhLlA,6732
7
7
  adcp/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
8
- adcp/simple.py,sha256=A3Ly_GadbXNodi-LCjbP1uYAkFl0bAtz9hCpTGwCDPE,10441
8
+ adcp/simple.py,sha256=OYoAF9MBK4dkvYQz3eMOVNEC-OZUNRkCgLDxmKSNZZY,10437
9
9
  adcp/validation.py,sha256=NsTwTQbLmd1Z1bMcztR1llJB21ai1xuw5aVrca7LoE8,6793
10
10
  adcp/protocols/__init__.py,sha256=6UFwACQ0QadBUzy17wUROHqsJDp8ztPW2jzyl53Zh_g,262
11
11
  adcp/protocols/a2a.py,sha256=FHgc6G_eU2qD0vH7_RyS1eZvUFSb2j3-EsceoHPi384,12467
@@ -14,16 +14,16 @@ adcp/protocols/mcp.py,sha256=d9uSpGd0BKvQ0JxztkfDvHwoDrDYhuiw5oivpYOAbmM,16647
14
14
  adcp/testing/__init__.py,sha256=ZWp_floWjVZfy8RBG5v_FUXQ8YbN7xjXvVcX-_zl_HU,1416
15
15
  adcp/testing/test_helpers.py,sha256=-UKuxxyKQald5EvXxguQH34b3J0JdsxKH_nRT6GTjkQ,10029
16
16
  adcp/types/__init__.py,sha256=V_Tme95-OoTGZkrMTQwNP76cN5QelO-Q-9sRTg-EBIA,2926
17
- adcp/types/_generated.py,sha256=p4U_P3BROGjCnS0Cd2o9ZJ_bShQLffB3D9_0D29JB0g,14926
18
- adcp/types/aliases.py,sha256=puqrz_cwlfSq6Td78EIaWtDUzcsCGMVM98Pv3T7qSlo,18445
17
+ adcp/types/_generated.py,sha256=XYYu3xvuZ0ivIOHt5pViD8FBXehTv3OlAQcxQsd2TzA,15307
18
+ adcp/types/aliases.py,sha256=cTQa2SKWA4dzJEClWe0nkdZ0Z2G_6bbORqnfwHyyWmE,18325
19
19
  adcp/types/base.py,sha256=QoEuVfI4yzefup0dc2KN11AcJTbcGxRep7xOw5hXfs8,837
20
20
  adcp/types/core.py,sha256=RXkKCWCXS9BVJTNpe3Opm5O1I_LaQPMUuVwa-ipvS1Q,4839
21
- adcp/types/stable.py,sha256=Q_rxnpLuUGfqGusiJcMuPADIGLQgs2uLp98S4YnAksw,4997
21
+ adcp/types/stable.py,sha256=m0HUdlkwQPGFPSGBrkEHp7fuCjKHhw9_E5WQuQsIn50,5244
22
22
  adcp/types/generated_poc/__init__.py,sha256=bgFFvPK1-e04eOnyw0qmtVMzoA2V7GeAMPDVrx-VIwA,103
23
23
  adcp/types/generated_poc/activate_signal_request.py,sha256=mI1MskO30yEcbQQ7ueEExMF7FhfARQj0_kbz5CAdSzQ,1188
24
24
  adcp/types/generated_poc/activate_signal_response.py,sha256=ltt5yDsocK3VfELeRuMjUiNMmUZe__VP5az6fsMCOuc,2015
25
25
  adcp/types/generated_poc/activation_key.py,sha256=FFUHvn-q0zKMdImOv-VHKS_78U8FVikUE8M-IOuiamg,952
26
- adcp/types/generated_poc/adagents.py,sha256=5HqvEckcnEZkrGDbZxa7zBR0xeLaj7WGii-dZDjvFbY,8490
26
+ adcp/types/generated_poc/adagents.py,sha256=tuMLnT5RRwVFCe8otpHugkz33a3IS3naLUCHUgxvk9c,7192
27
27
  adcp/types/generated_poc/asset_type.py,sha256=mNeAkjoEACZbj7lvqjAHcQ6vSNW8dt1qFNxp0fON-Qw,3169
28
28
  adcp/types/generated_poc/audio_asset.py,sha256=gu1HQI0310qmY27OzHzBD_gPTPYJv7GzCDgrEymZJ-k,795
29
29
  adcp/types/generated_poc/brand_manifest.py,sha256=jJYmM81eTMqVoBFHvoUJEaCrlKcsS_WQa8aJfUcAv3Y,7501
@@ -85,7 +85,7 @@ adcp/types/generated_poc/preview_creative_request.py,sha256=ul7gJhSQPR9EnPXfjoD5
85
85
  adcp/types/generated_poc/preview_creative_response.py,sha256=d2OGyfRATgOlLv9B7ow04fzwMyUCmLYbm9s1cg4MRlU,6140
86
86
  adcp/types/generated_poc/preview_render.py,sha256=zLlG5IaZsyxZOPzHqjBiyyl7MU3aqVJtZonySAj2ZBk,5076
87
87
  adcp/types/generated_poc/pricing_model.py,sha256=8HPxHhLHcOA8vvkqyj5Uem8dWxRgsnbx73l2WAWm-Zg,324
88
- adcp/types/generated_poc/product.py,sha256=nxKXK6jsnHsanB1K3jkws19yW0cd1VOFmdjM2XAYN4Y,7993
88
+ adcp/types/generated_poc/product.py,sha256=QRgqTw0ABkDSrMy_IpNfawY2xBDH57zGniteBwZx_6o,6038
89
89
  adcp/types/generated_poc/promoted_offerings.py,sha256=R5a551tIy43kZ2BUk-Lktu0t5hXLJfcNZWLHNDBgXp0,3223
90
90
  adcp/types/generated_poc/promoted_products.py,sha256=kdPVuzMgOCsHjQiW6YIg9AYriLAFqTFYd-4oDEmEexM,1252
91
91
  adcp/types/generated_poc/property.py,sha256=r6km5T5-Sd7tf6w7XmINWyAetlExq1TDNEee8hexaVE,2563
@@ -93,6 +93,7 @@ adcp/types/generated_poc/protocol_envelope.py,sha256=4XAHgtypta00roZnzsAhfVu1n_h
93
93
  adcp/types/generated_poc/provide_performance_feedback_request.py,sha256=nuhQuva-W4rQMCfK-0rmeX2lwVA9UcbGP4InKFDRm2Q,2820
94
94
  adcp/types/generated_poc/provide_performance_feedback_response.py,sha256=6eVf1r8O_8PPBOXdB1w_7JdZUPkPvip7WVIMsANqoGI,1973
95
95
  adcp/types/generated_poc/publisher_identifier_types.py,sha256=CctG8XQRfR1wtxo9bCCuU4oGZ8UoTa87FE0R-kPxYy0,321
96
+ adcp/types/generated_poc/publisher_property_selector.py,sha256=QgxN9jiS9dExTYzLKYsdndDVFXfbLONxcz5Q6xbJhtM,2424
96
97
  adcp/types/generated_poc/push_notification_config.py,sha256=s69T-mz9dSiKPJj-U1icEvqYn0T_Lwl4eygKiM0KhCM,1732
97
98
  adcp/types/generated_poc/reporting_capabilities.py,sha256=Q-Bdl-Vyqky6q3doorGXcvDCb6Kl3go3qnaptp6RJgY,2107
98
99
  adcp/types/generated_poc/response.py,sha256=BrWU9po0mAyIs8htcKgqsO8hehXo0pekqC7hyZNCwrA,707
@@ -119,11 +120,11 @@ adcp/types/generated_poc/webhook_asset.py,sha256=iSSikTEiBBZl0nVEx7tTMHHb1Tknv7l
119
120
  adcp/types/generated_poc/webhook_payload.py,sha256=59d5lN932v_WQC3gHwf_QV4SxKlfsqJmjmtp5ZtziWM,3563
120
121
  adcp/utils/__init__.py,sha256=uetvSJB19CjQbtwEYZiTnumJG11GsafQmXm5eR3hL7E,153
121
122
  adcp/utils/operation_id.py,sha256=wQX9Bb5epXzRq23xoeYPTqzu5yLuhshg7lKJZihcM2k,294
122
- adcp/utils/preview_cache.py,sha256=oc1AUkPrHHmUqfZa5920OCKY7qrDDR86XO6oi1PEHTA,18504
123
+ adcp/utils/preview_cache.py,sha256=PH9bSDOPQzLKqkC_o0a9Xn2i4cNC2oy76dkJdS3j7ck,18491
123
124
  adcp/utils/response_parser.py,sha256=uPk2vIH-RYZmq7y3i8lC4HTMQ3FfKdlgXKTjgJ1955M,6253
124
- adcp-2.6.0.dist-info/licenses/LICENSE,sha256=PF39NR3Ae8PLgBhg3Uxw6ju7iGVIf8hfv9LRWQdii_U,629
125
- adcp-2.6.0.dist-info/METADATA,sha256=r91G1kiiN13GSt8F5PBOxJQiqHBayDibdtvAd8v-blI,25810
126
- adcp-2.6.0.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
127
- adcp-2.6.0.dist-info/entry_points.txt,sha256=DQKpcGsJX8DtVI_SGApQ7tNvqUB4zkTLaTAEpFgmi3U,44
128
- adcp-2.6.0.dist-info/top_level.txt,sha256=T1_NF0GefncFU9v_k56oDwKSJREyCqIM8lAwNZf0EOs,5
129
- adcp-2.6.0.dist-info/RECORD,,
125
+ adcp-2.7.0.dist-info/licenses/LICENSE,sha256=PF39NR3Ae8PLgBhg3Uxw6ju7iGVIf8hfv9LRWQdii_U,629
126
+ adcp-2.7.0.dist-info/METADATA,sha256=SXCp0-h2nmhbbaRPPH4wO4C6pqWqdqYLbQRr7uon4rE,25810
127
+ adcp-2.7.0.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
128
+ adcp-2.7.0.dist-info/entry_points.txt,sha256=DQKpcGsJX8DtVI_SGApQ7tNvqUB4zkTLaTAEpFgmi3U,44
129
+ adcp-2.7.0.dist-info/top_level.txt,sha256=T1_NF0GefncFU9v_k56oDwKSJREyCqIM8lAwNZf0EOs,5
130
+ adcp-2.7.0.dist-info/RECORD,,
File without changes