===== analytics-report-live-wj9r6-archive-logs-pod.log ===== [pod/analytics-report-live-wj9r6-archive-logs-pod/prepare] 2026-07-17T17:30:08.595585819-05:00 2026/07/17 22:30:08 Entrypoint initialization [pod/analytics-report-live-wj9r6-archive-logs-pod/place-scripts] 2026-07-17T17:30:09.559466971-05:00 2026/07/17 22:30:09 Decoded script /tekton/scripts/script-0-dqv7t [pod/analytics-report-live-wj9r6-archive-logs-pod/place-scripts] 2026-07-17T17:30:09.586772549-05:00 2026/07/17 22:30:09 Decoded script /tekton/scripts/script-1-n7vlg [pod/analytics-report-live-wj9r6-archive-logs-pod/step-collect-logs] 2026-07-17T17:30:13.873245862-05:00 ==> collecting pod logs for PipelineRun=analytics-report-live-wj9r6 ===== analytics-report-live-wj9r6-clone-pod.log ===== [pod/analytics-report-live-wj9r6-clone-pod/prepare] 2026-07-17T17:28:58.202490136-05:00 2026/07/17 22:28:58 Entrypoint initialization [pod/analytics-report-live-wj9r6-clone-pod/place-scripts] 2026-07-17T17:28:58.525401629-05:00 2026/07/17 22:28:58 Decoded script /tekton/scripts/script-0-dcjdm [pod/analytics-report-live-wj9r6-clone-pod/step-clone] 2026-07-17T17:29:04.317520418-05:00 From https://github.com/storeminder-ai/storeminder [pod/analytics-report-live-wj9r6-clone-pod/step-clone] 2026-07-17T17:29:04.317553688-05:00 * branch e27845e12266bb1c91d580aac5ebb60fa9d874c3 -> FETCH_HEAD [pod/analytics-report-live-wj9r6-clone-pod/step-clone] 2026-07-17T17:29:04.373883243-05:00 Cloned e27845e12266bb1c91d580aac5ebb60fa9d874c3 ===== analytics-report-live-wj9r6-live-build-pod.log ===== [pod/analytics-report-live-wj9r6-live-build-pod/place-scripts] 2026-07-17T17:29:10.785768827-05:00 2026/07/17 22:29:10 Decoded script /tekton/scripts/script-0-d5bbq [pod/analytics-report-live-wj9r6-live-build-pod/place-scripts] 2026-07-17T17:29:10.805149959-05:00 2026/07/17 22:29:10 Decoded script /tekton/scripts/script-2-q8nnl [pod/analytics-report-live-wj9r6-live-build-pod/step-prepare-dockerfile] 2026-07-17T17:29:16.148446144-05:00 Wrote Dockerfile.reportcheck: [pod/analytics-report-live-wj9r6-live-build-pod/step-prepare-dockerfile] 2026-07-17T17:29:16.149457048-05:00 # Throwaway image for the live report build. Layers the checkout [pod/analytics-report-live-wj9r6-live-build-pod/step-prepare-dockerfile] 2026-07-17T17:29:16.149470708-05:00 # (analytics/ + notebooks/ + tests) over the prod runtime so the live [pod/analytics-report-live-wj9r6-live-build-pod/step-prepare-dockerfile] 2026-07-17T17:29:16.149475908-05:00 # trait suite can run with real deps + real secrets (mounted by the Job). [pod/analytics-report-live-wj9r6-live-build-pod/step-prepare-dockerfile] 2026-07-17T17:29:16.149479468-05:00 FROM registry.storeminder.ai/images/storeminder:latest [pod/analytics-report-live-wj9r6-live-build-pod/step-prepare-dockerfile] 2026-07-17T17:29:16.149483128-05:00 COPY . /prsrc [pod/analytics-report-live-wj9r6-live-build-pod/step-prepare-dockerfile] 2026-07-17T17:29:16.149486598-05:00 WORKDIR /prsrc [pod/analytics-report-live-wj9r6-live-build-pod/step-prepare-dockerfile] 2026-07-17T17:29:16.149490098-05:00 # Overlay the report package over the baked one (deps already resolved in [pod/analytics-report-live-wj9r6-live-build-pod/step-prepare-dockerfile] 2026-07-17T17:29:16.149493568-05:00 # the base), then add the test runner. Prefer the [test] extra (adds [pod/analytics-report-live-wj9r6-live-build-pod/step-prepare-dockerfile] 2026-07-17T17:29:16.149497028-05:00 # papermill/nbclient/scrapbook); fall back to bare pytest. [pod/analytics-report-live-wj9r6-live-build-pod/step-prepare-dockerfile] 2026-07-17T17:29:16.149501488-05:00 RUN pip install --no-cache-dir --no-deps -e /prsrc/analytics && (pip install --no-cache-dir -e "/prsrc/analytics[test]" || pip install --no-cache-dir pytest) [pod/analytics-report-live-wj9r6-live-build-pod/step-build-pr-image] 2026-07-17T17:29:16.383522709-05:00 INFO[0000] Retrieving image manifest registry.storeminder.ai/images/storeminder:latest [pod/analytics-report-live-wj9r6-live-build-pod/step-build-pr-image] 2026-07-17T17:29:16.383563858-05:00 INFO[0000] Retrieving image registry.storeminder.ai/images/storeminder:latest from registry registry.storeminder.ai [pod/analytics-report-live-wj9r6-live-build-pod/step-build-pr-image] 2026-07-17T17:29:16.403649346-05:00 INFO[0000] Retrieving image manifest registry.storeminder.ai/images/storeminder:latest [pod/analytics-report-live-wj9r6-live-build-pod/step-build-pr-image] 2026-07-17T17:29:16.403669556-05:00 INFO[0000] Returning cached image manifest [pod/analytics-report-live-wj9r6-live-build-pod/step-build-pr-image] 2026-07-17T17:29:16.411648436-05:00 INFO[0000] Built cross stage deps: map[] [pod/analytics-report-live-wj9r6-live-build-pod/step-build-pr-image] 2026-07-17T17:29:16.411670026-05:00 INFO[0000] Retrieving image manifest registry.storeminder.ai/images/storeminder:latest [pod/analytics-report-live-wj9r6-live-build-pod/step-build-pr-image] 2026-07-17T17:29:16.411675545-05:00 INFO[0000] Returning cached image manifest [pod/analytics-report-live-wj9r6-live-build-pod/step-build-pr-image] 2026-07-17T17:29:16.411693565-05:00 INFO[0000] Retrieving image manifest registry.storeminder.ai/images/storeminder:latest [pod/analytics-report-live-wj9r6-live-build-pod/step-build-pr-image] 2026-07-17T17:29:16.411699055-05:00 INFO[0000] Returning cached image manifest [pod/analytics-report-live-wj9r6-live-build-pod/step-build-pr-image] 2026-07-17T17:29:16.411777225-05:00 INFO[0000] Executing 0 build triggers [pod/analytics-report-live-wj9r6-live-build-pod/step-build-pr-image] 2026-07-17T17:29:16.415359357-05:00 INFO[0000] Building stage 'registry.storeminder.ai/images/storeminder:latest' [idx: '0', base-idx: '-1'] [pod/analytics-report-live-wj9r6-live-build-pod/step-build-pr-image] 2026-07-17T17:29:16.455862121-05:00 INFO[0000] Checking for cached layer registry.storeminder.ai/images/cache:3a96921fbedd21ea39b1d078a5944f0a0267f3e771952c7a90d421c08d0cb2d0... [pod/analytics-report-live-wj9r6-live-build-pod/step-build-pr-image] 2026-07-17T17:29:16.601171302-05:00 INFO[0000] No cached layer found for cmd RUN pip install --no-cache-dir --no-deps -e /prsrc/analytics && (pip install --no-cache-dir -e "/prsrc/analytics[test]" || pip install --no-cache-dir pytest) [pod/analytics-report-live-wj9r6-live-build-pod/step-build-pr-image] 2026-07-17T17:29:16.601274761-05:00 INFO[0000] Unpacking rootfs as cmd COPY . /prsrc requires it. [pod/analytics-report-live-wj9r6-live-build-pod/step-build-pr-image] 2026-07-17T17:29:25.574112315-05:00 INFO[0009] COPY . /prsrc [pod/analytics-report-live-wj9r6-live-build-pod/step-build-pr-image] 2026-07-17T17:29:25.721096335-05:00 INFO[0009] Taking snapshot of files... [pod/analytics-report-live-wj9r6-live-build-pod/step-build-pr-image] 2026-07-17T17:29:25.914161229-05:00 INFO[0009] WORKDIR /prsrc [pod/analytics-report-live-wj9r6-live-build-pod/step-build-pr-image] 2026-07-17T17:29:25.914182079-05:00 INFO[0009] Cmd: workdir [pod/analytics-report-live-wj9r6-live-build-pod/step-build-pr-image] 2026-07-17T17:29:25.914187879-05:00 INFO[0009] Changed working directory to /prsrc [pod/analytics-report-live-wj9r6-live-build-pod/step-build-pr-image] 2026-07-17T17:29:25.914488058-05:00 INFO[0009] No files changed in this command, skipping snapshotting. [pod/analytics-report-live-wj9r6-live-build-pod/step-build-pr-image] 2026-07-17T17:29:25.914510948-05:00 INFO[0009] RUN pip install --no-cache-dir --no-deps -e /prsrc/analytics && (pip install --no-cache-dir -e "/prsrc/analytics[test]" || pip install --no-cache-dir pytest) [pod/analytics-report-live-wj9r6-live-build-pod/step-build-pr-image] 2026-07-17T17:29:25.914516958-05:00 INFO[0009] Initializing snapshotter ... [pod/analytics-report-live-wj9r6-live-build-pod/step-build-pr-image] 2026-07-17T17:29:25.914521928-05:00 INFO[0009] Taking snapshot of full filesystem... [pod/analytics-report-live-wj9r6-live-build-pod/step-build-pr-image] 2026-07-17T17:29:31.769442548-05:00 INFO[0015] Cmd: /bin/sh [pod/analytics-report-live-wj9r6-live-build-pod/step-build-pr-image] 2026-07-17T17:29:31.769563218-05:00 INFO[0015] Args: [-c pip install --no-cache-dir --no-deps -e /prsrc/analytics && (pip install --no-cache-dir -e "/prsrc/analytics[test]" || pip install --no-cache-dir pytest)] [pod/analytics-report-live-wj9r6-live-build-pod/step-build-pr-image] 2026-07-17T17:29:31.769582117-05:00 INFO[0015] Running: [/bin/sh -c pip install --no-cache-dir --no-deps -e /prsrc/analytics && (pip install --no-cache-dir -e "/prsrc/analytics[test]" || pip install --no-cache-dir pytest)] [pod/analytics-report-live-wj9r6-live-build-pod/step-build-pr-image] 2026-07-17T17:29:32.137216245-05:00 Obtaining file:///prsrc/analytics [pod/analytics-report-live-wj9r6-live-build-pod/step-build-pr-image] 2026-07-17T17:29:32.139399514-05:00 Installing build dependencies: started [pod/analytics-report-live-wj9r6-live-build-pod/step-build-pr-image] 2026-07-17T17:29:34.277934016-05:00 Installing build dependencies: finished with status 'done' [pod/analytics-report-live-wj9r6-live-build-pod/step-build-pr-image] 2026-07-17T17:29:34.278831811-05:00 Checking if build backend supports build_editable: started [pod/analytics-report-live-wj9r6-live-build-pod/step-build-pr-image] 2026-07-17T17:29:34.407178723-05:00 Checking if build backend supports build_editable: finished with status 'done' [pod/analytics-report-live-wj9r6-live-build-pod/step-build-pr-image] 2026-07-17T17:29:34.409046934-05:00 Getting requirements to build editable: started [pod/analytics-report-live-wj9r6-live-build-pod/step-build-pr-image] 2026-07-17T17:29:34.600843590-05:00 Getting requirements to build editable: finished with status 'done' [pod/analytics-report-live-wj9r6-live-build-pod/step-build-pr-image] 2026-07-17T17:29:34.602026934-05:00 Preparing editable metadata (pyproject.toml): started [pod/analytics-report-live-wj9r6-live-build-pod/step-build-pr-image] 2026-07-17T17:29:34.779303165-05:00 Preparing editable metadata (pyproject.toml): finished with status 'done' [pod/analytics-report-live-wj9r6-live-build-pod/step-build-pr-image] 2026-07-17T17:29:34.815316551-05:00 Building wheels for collected packages: storeminder [pod/analytics-report-live-wj9r6-live-build-pod/step-build-pr-image] 2026-07-17T17:29:34.816139337-05:00 Building editable for storeminder (pyproject.toml): started [pod/analytics-report-live-wj9r6-live-build-pod/step-build-pr-image] 2026-07-17T17:29:35.001147968-05:00 Building editable for storeminder (pyproject.toml): finished with status 'done' [pod/analytics-report-live-wj9r6-live-build-pod/step-build-pr-image] 2026-07-17T17:29:35.001895514-05:00 Created wheel for storeminder: filename=storeminder-0.1.0-0.editable-py3-none-any.whl size=1920 sha256=ea5be0d591e698525b33248f522e1993bd23a6edf04656ffc6f041b85972aa55 [pod/analytics-report-live-wj9r6-live-build-pod/step-build-pr-image] 2026-07-17T17:29:35.002062543-05:00 Stored in directory: /tmp/pip-ephem-wheel-cache-krcq1fzr/wheels/3d/79/a1/5b9945b9b299ef8e95d41afe8b877f821e7a9e81cca81ac5fa [pod/analytics-report-live-wj9r6-live-build-pod/step-build-pr-image] 2026-07-17T17:29:35.004734490-05:00 Successfully built storeminder [pod/analytics-report-live-wj9r6-live-build-pod/step-build-pr-image] 2026-07-17T17:29:35.004936049-05:00 Installing collected packages: storeminder [pod/analytics-report-live-wj9r6-live-build-pod/step-build-pr-image] 2026-07-17T17:29:35.005095218-05:00 Attempting uninstall: storeminder [pod/analytics-report-live-wj9r6-live-build-pod/step-build-pr-image] 2026-07-17T17:29:35.059472139-05:00 Found existing installation: storeminder 0.1.0 [pod/analytics-report-live-wj9r6-live-build-pod/step-build-pr-image] 2026-07-17T17:29:35.063631778-05:00 Uninstalling storeminder-0.1.0: [pod/analytics-report-live-wj9r6-live-build-pod/step-build-pr-image] 2026-07-17T17:29:35.065458018-05:00 Successfully uninstalled storeminder-0.1.0 [pod/analytics-report-live-wj9r6-live-build-pod/step-build-pr-image] 2026-07-17T17:29:35.119798270-05:00 Successfully installed storeminder-0.1.0 [pod/analytics-report-live-wj9r6-live-build-pod/step-build-pr-image] 2026-07-17T17:29:35.119998049-05:00 WARNING: Running pip as the 'root' user can result in broken permissions and conflicting behaviour with the system package manager. It is recommended to use a virtual environment instead: https://pip.pypa.io/warnings/venv [pod/analytics-report-live-wj9r6-live-build-pod/step-build-pr-image] 2026-07-17T17:29:35.244134012-05:00 [pod/analytics-report-live-wj9r6-live-build-pod/step-build-pr-image] 2026-07-17T17:29:35.244781709-05:00 [notice] A new release of pip is available: 24.0 -> 26.1.2 [pod/analytics-report-live-wj9r6-live-build-pod/step-build-pr-image] 2026-07-17T17:29:35.244792729-05:00 [notice] To update, run: pip install --upgrade pip [pod/analytics-report-live-wj9r6-live-build-pod/step-build-pr-image] 2026-07-17T17:29:35.783220987-05:00 Obtaining file:///prsrc/analytics [pod/analytics-report-live-wj9r6-live-build-pod/step-build-pr-image] 2026-07-17T17:29:35.785495825-05:00 Installing build dependencies: started [pod/analytics-report-live-wj9r6-live-build-pod/step-build-pr-image] 2026-07-17T17:29:37.802118125-05:00 Installing build dependencies: finished with status 'done' [pod/analytics-report-live-wj9r6-live-build-pod/step-build-pr-image] 2026-07-17T17:29:37.803228120-05:00 Checking if build backend supports build_editable: started [pod/analytics-report-live-wj9r6-live-build-pod/step-build-pr-image] 2026-07-17T17:29:37.959665356-05:00 Checking if build backend supports build_editable: finished with status 'done' [pod/analytics-report-live-wj9r6-live-build-pod/step-build-pr-image] 2026-07-17T17:29:37.960974740-05:00 Getting requirements to build editable: started [pod/analytics-report-live-wj9r6-live-build-pod/step-build-pr-image] 2026-07-17T17:29:38.138546758-05:00 Getting requirements to build editable: finished with status 'done' [pod/analytics-report-live-wj9r6-live-build-pod/step-build-pr-image] 2026-07-17T17:29:38.139841971-05:00 Preparing editable metadata (pyproject.toml): started [pod/analytics-report-live-wj9r6-live-build-pod/step-build-pr-image] 2026-07-17T17:29:38.332496652-05:00 Preparing editable metadata (pyproject.toml): finished with status 'done' [pod/analytics-report-live-wj9r6-live-build-pod/step-build-pr-image] 2026-07-17T17:29:38.398389333-05:00 Requirement already satisfied: pandas>=1.5.0 in /usr/local/lib/python3.11/site-packages (from storeminder==0.1.0) (3.0.3) [pod/analytics-report-live-wj9r6-live-build-pod/step-build-pr-image] 2026-07-17T17:29:38.399698426-05:00 Requirement already satisfied: numpy>=1.23.0 in /usr/local/lib/python3.11/site-packages (from storeminder==0.1.0) (2.4.6) [pod/analytics-report-live-wj9r6-live-build-pod/step-build-pr-image] 2026-07-17T17:29:38.400895760-05:00 Requirement already satisfied: requests>=2.28.0 in /usr/local/lib/python3.11/site-packages (from storeminder==0.1.0) (2.34.2) [pod/analytics-report-live-wj9r6-live-build-pod/step-build-pr-image] 2026-07-17T17:29:38.401670326-05:00 Requirement already satisfied: openpyxl>=3.0.0 in /usr/local/lib/python3.11/site-packages (from storeminder==0.1.0) (3.1.5) [pod/analytics-report-live-wj9r6-live-build-pod/step-build-pr-image] 2026-07-17T17:29:38.402541682-05:00 Requirement already satisfied: anthropic>=0.25.0 in /usr/local/lib/python3.11/site-packages (from storeminder==0.1.0) (0.117.0) [pod/analytics-report-live-wj9r6-live-build-pod/step-build-pr-image] 2026-07-17T17:29:38.404006964-05:00 Requirement already satisfied: psycopg>=3.1 in /usr/local/lib/python3.11/site-packages (from psycopg[binary,pool]>=3.1->storeminder==0.1.0) (3.3.4) [pod/analytics-report-live-wj9r6-live-build-pod/step-build-pr-image] 2026-07-17T17:29:38.405559166-05:00 Requirement already satisfied: boto3>=1.34 in /usr/local/lib/python3.11/site-packages (from storeminder==0.1.0) (1.43.51) [pod/analytics-report-live-wj9r6-live-build-pod/step-build-pr-image] 2026-07-17T17:29:38.406360362-05:00 Requirement already satisfied: PyYAML>=6.0 in /usr/local/lib/python3.11/site-packages (from storeminder==0.1.0) (6.0.3) [pod/analytics-report-live-wj9r6-live-build-pod/step-build-pr-image] 2026-07-17T17:29:38.620818791-05:00 Collecting pytest>=7 (from storeminder==0.1.0) [pod/analytics-report-live-wj9r6-live-build-pod/step-build-pr-image] 2026-07-17T17:29:38.683908677-05:00 Downloading pytest-9.1.1-py3-none-any.whl.metadata (7.6 kB) [pod/analytics-report-live-wj9r6-live-build-pod/step-build-pr-image] 2026-07-17T17:29:38.697287158-05:00 Requirement already satisfied: anyio<5,>=3.5.0 in /usr/local/lib/python3.11/site-packages (from anthropic>=0.25.0->storeminder==0.1.0) (4.14.2) [pod/analytics-report-live-wj9r6-live-build-pod/step-build-pr-image] 2026-07-17T17:29:38.698233203-05:00 Requirement already satisfied: distro<2,>=1.7.0 in /usr/local/lib/python3.11/site-packages (from anthropic>=0.25.0->storeminder==0.1.0) (1.9.0) [pod/analytics-report-live-wj9r6-live-build-pod/step-build-pr-image] 2026-07-17T17:29:38.699161358-05:00 Requirement already satisfied: docstring-parser<1,>=0.15 in /usr/local/lib/python3.11/site-packages (from anthropic>=0.25.0->storeminder==0.1.0) (0.18.0) [pod/analytics-report-live-wj9r6-live-build-pod/step-build-pr-image] 2026-07-17T17:29:38.700068814-05:00 Requirement already satisfied: httpx<1,>=0.25.0 in /usr/local/lib/python3.11/site-packages (from anthropic>=0.25.0->storeminder==0.1.0) (0.28.1) [pod/analytics-report-live-wj9r6-live-build-pod/step-build-pr-image] 2026-07-17T17:29:38.700936639-05:00 Requirement already satisfied: jiter<1,>=0.4.0 in /usr/local/lib/python3.11/site-packages (from anthropic>=0.25.0->storeminder==0.1.0) (0.16.0) [pod/analytics-report-live-wj9r6-live-build-pod/step-build-pr-image] 2026-07-17T17:29:38.703277467-05:00 Requirement already satisfied: pydantic<3,>=1.9.0 in /usr/local/lib/python3.11/site-packages (from anthropic>=0.25.0->storeminder==0.1.0) (2.13.4) [pod/analytics-report-live-wj9r6-live-build-pod/step-build-pr-image] 2026-07-17T17:29:38.703901974-05:00 Requirement already satisfied: sniffio in /usr/local/lib/python3.11/site-packages (from anthropic>=0.25.0->storeminder==0.1.0) (1.3.1) [pod/analytics-report-live-wj9r6-live-build-pod/step-build-pr-image] 2026-07-17T17:29:38.704668090-05:00 Requirement already satisfied: typing-extensions<5,>=4.14 in /usr/local/lib/python3.11/site-packages (from anthropic>=0.25.0->storeminder==0.1.0) (4.16.0) [pod/analytics-report-live-wj9r6-live-build-pod/step-build-pr-image] 2026-07-17T17:29:38.708557130-05:00 Requirement already satisfied: botocore<1.44.0,>=1.43.51 in /usr/local/lib/python3.11/site-packages (from boto3>=1.34->storeminder==0.1.0) (1.43.51) [pod/analytics-report-live-wj9r6-live-build-pod/step-build-pr-image] 2026-07-17T17:29:38.709780274-05:00 Requirement already satisfied: jmespath<2.0.0,>=0.7.1 in /usr/local/lib/python3.11/site-packages (from boto3>=1.34->storeminder==0.1.0) (1.1.0) [pod/analytics-report-live-wj9r6-live-build-pod/step-build-pr-image] 2026-07-17T17:29:38.710691499-05:00 Requirement already satisfied: s3transfer<0.20.0,>=0.19.0 in /usr/local/lib/python3.11/site-packages (from boto3>=1.34->storeminder==0.1.0) (0.19.1) [pod/analytics-report-live-wj9r6-live-build-pod/step-build-pr-image] 2026-07-17T17:29:38.713749923-05:00 Requirement already satisfied: et-xmlfile in /usr/local/lib/python3.11/site-packages (from openpyxl>=3.0.0->storeminder==0.1.0) (2.0.0) [pod/analytics-report-live-wj9r6-live-build-pod/step-build-pr-image] 2026-07-17T17:29:38.767528237-05:00 Requirement already satisfied: python-dateutil>=2.8.2 in /usr/local/lib/python3.11/site-packages (from pandas>=1.5.0->storeminder==0.1.0) (2.9.0.post0) [pod/analytics-report-live-wj9r6-live-build-pod/step-build-pr-image] 2026-07-17T17:29:38.813911029-05:00 Requirement already satisfied: psycopg-binary==3.3.4 in /usr/local/lib/python3.11/site-packages (from psycopg[binary,pool]>=3.1->storeminder==0.1.0) (3.3.4) [pod/analytics-report-live-wj9r6-live-build-pod/step-build-pr-image] 2026-07-17T17:29:38.815325692-05:00 Requirement already satisfied: psycopg-pool in /usr/local/lib/python3.11/site-packages (from psycopg[binary,pool]>=3.1->storeminder==0.1.0) (3.3.1) [pod/analytics-report-live-wj9r6-live-build-pod/step-build-pr-image] 2026-07-17T17:29:38.865232615-05:00 Collecting iniconfig>=1.0.1 (from pytest>=7->storeminder==0.1.0) [pod/analytics-report-live-wj9r6-live-build-pod/step-build-pr-image] 2026-07-17T17:29:38.881260993-05:00 Downloading iniconfig-2.3.0-py3-none-any.whl.metadata (2.5 kB) [pod/analytics-report-live-wj9r6-live-build-pod/step-build-pr-image] 2026-07-17T17:29:38.883861970-05:00 Requirement already satisfied: packaging>=22 in /usr/local/lib/python3.11/site-packages (from pytest>=7->storeminder==0.1.0) (26.2) [pod/analytics-report-live-wj9r6-live-build-pod/step-build-pr-image] 2026-07-17T17:29:38.924879659-05:00 Collecting pluggy<2,>=1.5 (from pytest>=7->storeminder==0.1.0) [pod/analytics-report-live-wj9r6-live-build-pod/step-build-pr-image] 2026-07-17T17:29:38.943639863-05:00 Downloading pluggy-1.6.0-py3-none-any.whl.metadata (4.8 kB) [pod/analytics-report-live-wj9r6-live-build-pod/step-build-pr-image] 2026-07-17T17:29:38.946441208-05:00 Requirement already satisfied: pygments>=2.7.2 in /usr/local/lib/python3.11/site-packages (from pytest>=7->storeminder==0.1.0) (2.20.0) [pod/analytics-report-live-wj9r6-live-build-pod/step-build-pr-image] 2026-07-17T17:29:38.955088784-05:00 Requirement already satisfied: charset_normalizer<4,>=2 in /usr/local/lib/python3.11/site-packages (from requests>=2.28.0->storeminder==0.1.0) (3.4.9) [pod/analytics-report-live-wj9r6-live-build-pod/step-build-pr-image] 2026-07-17T17:29:38.956275298-05:00 Requirement already satisfied: idna<4,>=2.5 in /usr/local/lib/python3.11/site-packages (from requests>=2.28.0->storeminder==0.1.0) (3.18) [pod/analytics-report-live-wj9r6-live-build-pod/step-build-pr-image] 2026-07-17T17:29:38.957351272-05:00 Requirement already satisfied: urllib3<3,>=1.26 in /usr/local/lib/python3.11/site-packages (from requests>=2.28.0->storeminder==0.1.0) (2.7.0) [pod/analytics-report-live-wj9r6-live-build-pod/step-build-pr-image] 2026-07-17T17:29:38.958302047-05:00 Requirement already satisfied: certifi>=2023.5.7 in /usr/local/lib/python3.11/site-packages (from requests>=2.28.0->storeminder==0.1.0) (2026.6.17) [pod/analytics-report-live-wj9r6-live-build-pod/step-build-pr-image] 2026-07-17T17:29:39.034286927-05:00 Requirement already satisfied: httpcore==1.* in /usr/local/lib/python3.11/site-packages (from httpx<1,>=0.25.0->anthropic>=0.25.0->storeminder==0.1.0) (1.0.9) [pod/analytics-report-live-wj9r6-live-build-pod/step-build-pr-image] 2026-07-17T17:29:39.042406125-05:00 Requirement already satisfied: h11>=0.16 in /usr/local/lib/python3.11/site-packages (from httpcore==1.*->httpx<1,>=0.25.0->anthropic>=0.25.0->storeminder==0.1.0) (0.16.0) [pod/analytics-report-live-wj9r6-live-build-pod/step-build-pr-image] 2026-07-17T17:29:39.074398781-05:00 Requirement already satisfied: annotated-types>=0.6.0 in /usr/local/lib/python3.11/site-packages (from pydantic<3,>=1.9.0->anthropic>=0.25.0->storeminder==0.1.0) (0.7.0) [pod/analytics-report-live-wj9r6-live-build-pod/step-build-pr-image] 2026-07-17T17:29:39.075607235-05:00 Requirement already satisfied: pydantic-core==2.46.4 in /usr/local/lib/python3.11/site-packages (from pydantic<3,>=1.9.0->anthropic>=0.25.0->storeminder==0.1.0) (2.46.4) [pod/analytics-report-live-wj9r6-live-build-pod/step-build-pr-image] 2026-07-17T17:29:39.077582034-05:00 Requirement already satisfied: typing-inspection>=0.4.2 in /usr/local/lib/python3.11/site-packages (from pydantic<3,>=1.9.0->anthropic>=0.25.0->storeminder==0.1.0) (0.4.2) [pod/analytics-report-live-wj9r6-live-build-pod/step-build-pr-image] 2026-07-17T17:29:39.091795572-05:00 Requirement already satisfied: six>=1.5 in /usr/local/lib/python3.11/site-packages (from python-dateutil>=2.8.2->pandas>=1.5.0->storeminder==0.1.0) (1.17.0) [pod/analytics-report-live-wj9r6-live-build-pod/step-build-pr-image] 2026-07-17T17:29:39.185249291-05:00 Downloading pytest-9.1.1-py3-none-any.whl (386 kB) [pod/analytics-report-live-wj9r6-live-build-pod/step-build-pr-image] 2026-07-17T17:29:39.292871038-05:00 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 386.5/386.5 kB 3.8 MB/s eta 0:00:00 [pod/analytics-report-live-wj9r6-live-build-pod/step-build-pr-image] 2026-07-17T17:29:39.313186564-05:00 Downloading iniconfig-2.3.0-py3-none-any.whl (7.5 kB) [pod/analytics-report-live-wj9r6-live-build-pod/step-build-pr-image] 2026-07-17T17:29:39.338498184-05:00 Downloading pluggy-1.6.0-py3-none-any.whl (20 kB) [pod/analytics-report-live-wj9r6-live-build-pod/step-build-pr-image] 2026-07-17T17:29:39.344249554-05:00 Checking if build backend supports build_editable: started [pod/analytics-report-live-wj9r6-live-build-pod/step-build-pr-image] 2026-07-17T17:29:39.499844975-05:00 Checking if build backend supports build_editable: finished with status 'done' [pod/analytics-report-live-wj9r6-live-build-pod/step-build-pr-image] 2026-07-17T17:29:39.500670940-05:00 Building wheels for collected packages: storeminder [pod/analytics-report-live-wj9r6-live-build-pod/step-build-pr-image] 2026-07-17T17:29:39.501965494-05:00 Building editable for storeminder (pyproject.toml): started [pod/analytics-report-live-wj9r6-live-build-pod/step-build-pr-image] 2026-07-17T17:29:39.741274454-05:00 Building editable for storeminder (pyproject.toml): finished with status 'done' [pod/analytics-report-live-wj9r6-live-build-pod/step-build-pr-image] 2026-07-17T17:29:39.741888841-05:00 Created wheel for storeminder: filename=storeminder-0.1.0-0.editable-py3-none-any.whl size=1920 sha256=f34c26932e2ebd6ca07ef01606ed8d9d254520aadd516f11220097b1fd8acca2 [pod/analytics-report-live-wj9r6-live-build-pod/step-build-pr-image] 2026-07-17T17:29:39.742014340-05:00 Stored in directory: /tmp/pip-ephem-wheel-cache-3wkmo8ok/wheels/3d/79/a1/5b9945b9b299ef8e95d41afe8b877f821e7a9e81cca81ac5fa [pod/analytics-report-live-wj9r6-live-build-pod/step-build-pr-image] 2026-07-17T17:29:39.743846831-05:00 Successfully built storeminder [pod/analytics-report-live-wj9r6-live-build-pod/step-build-pr-image] 2026-07-17T17:29:40.658583099-05:00 Installing collected packages: pluggy, iniconfig, pytest, storeminder [pod/analytics-report-live-wj9r6-live-build-pod/step-build-pr-image] 2026-07-17T17:29:40.894943144-05:00 Attempting uninstall: storeminder [pod/analytics-report-live-wj9r6-live-build-pod/step-build-pr-image] 2026-07-17T17:29:40.938432900-05:00 Found existing installation: storeminder 0.1.0 [pod/analytics-report-live-wj9r6-live-build-pod/step-build-pr-image] 2026-07-17T17:29:40.940305471-05:00 Uninstalling storeminder-0.1.0: [pod/analytics-report-live-wj9r6-live-build-pod/step-build-pr-image] 2026-07-17T17:29:41.122723763-05:00 Successfully uninstalled storeminder-0.1.0 [pod/analytics-report-live-wj9r6-live-build-pod/step-build-pr-image] 2026-07-17T17:29:41.320935223-05:00 Successfully installed iniconfig-2.3.0 pluggy-1.6.0 pytest-9.1.1 storeminder-0.1.0 [pod/analytics-report-live-wj9r6-live-build-pod/step-build-pr-image] 2026-07-17T17:29:41.321331801-05:00 WARNING: Running pip as the 'root' user can result in broken permissions and conflicting behaviour with the system package manager. It is recommended to use a virtual environment instead: https://pip.pypa.io/warnings/venv [pod/analytics-report-live-wj9r6-live-build-pod/step-build-pr-image] 2026-07-17T17:29:41.518057989-05:00 [pod/analytics-report-live-wj9r6-live-build-pod/step-build-pr-image] 2026-07-17T17:29:41.518174989-05:00 [notice] A new release of pip is available: 24.0 -> 26.1.2 [pod/analytics-report-live-wj9r6-live-build-pod/step-build-pr-image] 2026-07-17T17:29:41.518181929-05:00 [notice] To update, run: pip install --upgrade pip [pod/analytics-report-live-wj9r6-live-build-pod/step-build-pr-image] 2026-07-17T17:29:41.727007475-05:00 INFO[0025] Taking snapshot of full filesystem... [pod/analytics-report-live-wj9r6-live-build-pod/step-build-pr-image] 2026-07-17T17:29:43.735818787-05:00 INFO[0027] Pushing layer registry.storeminder.ai/images/cache:3a96921fbedd21ea39b1d078a5944f0a0267f3e771952c7a90d421c08d0cb2d0 to cache now [pod/analytics-report-live-wj9r6-live-build-pod/step-build-pr-image] 2026-07-17T17:29:43.736038076-05:00 INFO[0027] Pushing image to registry.storeminder.ai/images/cache:3a96921fbedd21ea39b1d078a5944f0a0267f3e771952c7a90d421c08d0cb2d0 [pod/analytics-report-live-wj9r6-live-build-pod/step-build-pr-image] 2026-07-17T17:29:43.854710795-05:00 INFO[0027] Pushed registry.storeminder.ai/images/cache@sha256:3cdf078775c271c983f0d6139428d55ab4c486ae87c8f76b04f9d0efbc76e517 [pod/analytics-report-live-wj9r6-live-build-pod/step-build-pr-image] 2026-07-17T17:29:43.855591321-05:00 INFO[0027] Pushing image to registry.storeminder.ai/images/storeminder-report-live:e27845e12266bb1c91d580aac5ebb60fa9d874c3 [pod/analytics-report-live-wj9r6-live-build-pod/step-build-pr-image] 2026-07-17T17:29:44.041163695-05:00 INFO[0027] Pushed registry.storeminder.ai/images/storeminder-report-live@sha256:0942c7724be9539aa1ee2697f7dd878685e5367964ebe411c4fd9de3db2e56fb [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:29:44.551327528-05:00 /tekton/scripts/script-2-q8nnl: line 27: steps.build-pr-image.exitCode.path: command not found [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:29:44.665495040-05:00 job.batch/report-live-e27845e created [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.413251200-05:00 ----- live Job logs (report-live-e27845e) ----- [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.543602492-05:00 Running live report trait suite (real Vertex + DB, DRY_RUN): analytics/tests/test_report_traits_live.py [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.543637202-05:00 ============================= test session starts ============================== [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.543642642-05:00 platform linux -- Python 3.11.15, pytest-9.1.1, pluggy-1.6.0 -- /usr/local/bin/python [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.543647182-05:00 cachedir: .pytest_cache [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.543651812-05:00 rootdir: /prsrc/analytics [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.543656072-05:00 configfile: pyproject.toml [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.543659862-05:00 plugins: anyio-4.14.2 [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.543664232-05:00 collecting ... collected 10 items [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.543667792-05:00 [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.543671792-05:00 analytics/tests/test_report_traits_live.py::test_daily_builds_and_renders ERROR [ 10%] [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.543675662-05:00 analytics/tests/test_report_traits_live.py::test_daily_is_sendable_and_no_weekly_leak ERROR [ 20%] [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.543679512-05:00 analytics/tests/test_report_traits_live.py::test_daily_headline_labeled_total_sales ERROR [ 30%] [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.543683402-05:00 analytics/tests/test_report_traits_live.py::test_daily_sms_not_truncated ERROR [ 40%] [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.543687172-05:00 analytics/tests/test_report_traits_live.py::test_daily_artifact_bundle_written ERROR [ 50%] [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.543691702-05:00 analytics/tests/test_report_traits_live.py::test_weekly_builds_and_renders ERROR [ 60%] [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.543695452-05:00 analytics/tests/test_report_traits_live.py::test_weekly_is_sendable ERROR [ 70%] [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.543699691-05:00 analytics/tests/test_report_traits_live.py::test_weekly_headline_labeled_total_sales ERROR [ 80%] [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.543703561-05:00 analytics/tests/test_report_traits_live.py::test_weekly_sms_not_truncated ERROR [ 90%] [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.543707251-05:00 analytics/tests/test_report_traits_live.py::test_weekly_artifact_bundle_written ERROR [100%] [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.543710821-05:00 [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.543714651-05:00 ==================================== ERRORS ==================================== [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.543718401-05:00 _______________ ERROR at setup of test_daily_builds_and_renders ________________ [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.543721961-05:00 [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.543725581-05:00 @pytest.fixture(scope="module") [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.543729591-05:00 def daily_report(): [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.543733311-05:00 > return _run("daily") [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.543737061-05:00 ^^^^^^^^^^^^^ [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.543740731-05:00 [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.543744411-05:00 analytics/tests/test_report_traits_live.py:94: [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.543749191-05:00 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.543753771-05:00 analytics/tests/test_report_traits_live.py:75: in _run [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.543759151-05:00 res = fn(store, end_date=d, dry_run=True, deliver=False, clean=True) [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.543763641-05:00 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.543767491-05:00 analytics/src/storeminder/runner.py:310: in run_daily [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.543771161-05:00 return _run_report(params, clean=clean) [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.543774851-05:00 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.543778711-05:00 analytics/src/storeminder/runner.py:161: in _run_report [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.543796801-05:00 conf = manage_api.store_config(store_id) [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.543799471-05:00 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.543802191-05:00 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.543804621-05:00 [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.543807091-05:00 store_id = 'Fastime' [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.543809471-05:00 [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.543811921-05:00 def store_config(store_id: str) -> dict[str, Any] | None: [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.543814581-05:00 """The store's authoritative report config (== the legacy conf/{slug}.yaml). [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.543817111-05:00 [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.543819671-05:00 Returns the config dict on 200, or None on a 404 (unknown store — the caller [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.543822281-05:00 turns this into an explicit error). Raises ManageApiError when the base URL is [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.543824901-05:00 unset or the manage app is unreachable / returns any other status: config is [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.543827461-05:00 Django-only, so we fail loud rather than run an unconfigured store. [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.543830001-05:00 """ [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.543832491-05:00 base = _require_base() [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.543834971-05:00 try: [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.543837591-05:00 import requests [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.543840381-05:00 r = requests.get(f"{base}/api/stores/{store_id}/config/", [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.543842851-05:00 headers=_headers(), timeout=10) [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.543845391-05:00 except Exception as e: # transport error → loud [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.543848051-05:00 raise ManageApiError( [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.543850581-05:00 f"manage_api store_config({store_id}) transport error: " [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.543853111-05:00 f"{type(e).__name__}: {e}") from e [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.543855621-05:00 if r.status_code == 404: [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.543858061-05:00 return None [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.543860481-05:00 if r.status_code != 200: [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.543862891-05:00 > raise ManageApiError( [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.543865401-05:00 f"manage_api store_config({store_id}) returned HTTP {r.status_code}") [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.543868321-05:00 E storeminder.manage_api.ManageApiError: manage_api store_config(Fastime) returned HTTP 400 [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.543870661-05:00 [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.543873131-05:00 analytics/src/storeminder/manage_api.py:93: ManageApiError [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.543875681-05:00 _________ ERROR at setup of test_daily_is_sendable_and_no_weekly_leak __________ [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.543878721-05:00 [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.543881141-05:00 @pytest.fixture(scope="module") [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.543883561-05:00 def daily_report(): [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.543886001-05:00 > return _run("daily") [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.543888481-05:00 ^^^^^^^^^^^^^ [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.543890811-05:00 [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.543893390-05:00 analytics/tests/test_report_traits_live.py:94: [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.543896020-05:00 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.543898580-05:00 analytics/tests/test_report_traits_live.py:75: in _run [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.543901150-05:00 res = fn(store, end_date=d, dry_run=True, deliver=False, clean=True) [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.543910090-05:00 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.543912710-05:00 analytics/src/storeminder/runner.py:310: in run_daily [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.543916150-05:00 return _run_report(params, clean=clean) [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.543925350-05:00 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.543927860-05:00 analytics/src/storeminder/runner.py:161: in _run_report [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.543930270-05:00 conf = manage_api.store_config(store_id) [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.543932780-05:00 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.543935300-05:00 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.543937660-05:00 [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.543940100-05:00 store_id = 'Fastime' [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.543942470-05:00 [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.543944920-05:00 def store_config(store_id: str) -> dict[str, Any] | None: [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.543949160-05:00 """The store's authoritative report config (== the legacy conf/{slug}.yaml). [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.543951750-05:00 [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.543954370-05:00 Returns the config dict on 200, or None on a 404 (unknown store — the caller [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.543956950-05:00 turns this into an explicit error). Raises ManageApiError when the base URL is [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.543959520-05:00 unset or the manage app is unreachable / returns any other status: config is [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.543962040-05:00 Django-only, so we fail loud rather than run an unconfigured store. [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.543964490-05:00 """ [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.543966950-05:00 base = _require_base() [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.543969490-05:00 try: [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.543971950-05:00 import requests [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.543974480-05:00 r = requests.get(f"{base}/api/stores/{store_id}/config/", [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.543976960-05:00 headers=_headers(), timeout=10) [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.543979440-05:00 except Exception as e: # transport error → loud [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.543981900-05:00 raise ManageApiError( [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.543984450-05:00 f"manage_api store_config({store_id}) transport error: " [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.543986890-05:00 f"{type(e).__name__}: {e}") from e [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.543990080-05:00 if r.status_code == 404: [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.543992570-05:00 return None [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.543996950-05:00 if r.status_code != 200: [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.543999560-05:00 > raise ManageApiError( [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.544002560-05:00 f"manage_api store_config({store_id}) returned HTTP {r.status_code}") [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.544005170-05:00 E storeminder.manage_api.ManageApiError: manage_api store_config(Fastime) returned HTTP 400 [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.544007560-05:00 [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.544010610-05:00 analytics/src/storeminder/manage_api.py:93: ManageApiError [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.544013730-05:00 __________ ERROR at setup of test_daily_headline_labeled_total_sales ___________ [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.544016160-05:00 [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.544018580-05:00 @pytest.fixture(scope="module") [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.544021030-05:00 def daily_report(): [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.544023490-05:00 > return _run("daily") [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.544026030-05:00 ^^^^^^^^^^^^^ [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.544028370-05:00 [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.544031220-05:00 analytics/tests/test_report_traits_live.py:94: [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.544033760-05:00 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.544036320-05:00 analytics/tests/test_report_traits_live.py:75: in _run [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.544039210-05:00 res = fn(store, end_date=d, dry_run=True, deliver=False, clean=True) [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.544041790-05:00 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.544185259-05:00 analytics/src/storeminder/runner.py:310: in run_daily [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.544193739-05:00 return _run_report(params, clean=clean) [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.544197709-05:00 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.544201639-05:00 analytics/src/storeminder/runner.py:161: in _run_report [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.544205309-05:00 conf = manage_api.store_config(store_id) [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.544208999-05:00 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.544212759-05:00 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.544216269-05:00 [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.544219869-05:00 store_id = 'Fastime' [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.544223419-05:00 [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.544226989-05:00 def store_config(store_id: str) -> dict[str, Any] | None: [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.544232139-05:00 """The store's authoritative report config (== the legacy conf/{slug}.yaml). [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.544235919-05:00 [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.544239609-05:00 Returns the config dict on 200, or None on a 404 (unknown store — the caller [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.544243359-05:00 turns this into an explicit error). Raises ManageApiError when the base URL is [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.544247069-05:00 unset or the manage app is unreachable / returns any other status: config is [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.544250979-05:00 Django-only, so we fail loud rather than run an unconfigured store. [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.544254569-05:00 """ [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.544258589-05:00 base = _require_base() [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.544262299-05:00 try: [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.544265919-05:00 import requests [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.544269579-05:00 r = requests.get(f"{base}/api/stores/{store_id}/config/", [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.544273349-05:00 headers=_headers(), timeout=10) [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.544276939-05:00 except Exception as e: # transport error → loud [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.544280889-05:00 raise ManageApiError( [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.544284558-05:00 f"manage_api store_config({store_id}) transport error: " [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.544288158-05:00 f"{type(e).__name__}: {e}") from e [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.544291968-05:00 if r.status_code == 404: [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.544295588-05:00 return None [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.544299178-05:00 if r.status_code != 200: [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.544302848-05:00 > raise ManageApiError( [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.544306438-05:00 f"manage_api store_config({store_id}) returned HTTP {r.status_code}") [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.544310238-05:00 E storeminder.manage_api.ManageApiError: manage_api store_config(Fastime) returned HTTP 400 [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.544313758-05:00 [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.544317338-05:00 analytics/src/storeminder/manage_api.py:93: ManageApiError [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.544321308-05:00 ________________ ERROR at setup of test_daily_sms_not_truncated ________________ [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.544324838-05:00 [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.544329118-05:00 @pytest.fixture(scope="module") [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.544351788-05:00 def daily_report(): [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.544357158-05:00 > return _run("daily") [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.544360958-05:00 ^^^^^^^^^^^^^ [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.544364458-05:00 [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.544368078-05:00 analytics/tests/test_report_traits_live.py:94: [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.544371908-05:00 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.544375518-05:00 analytics/tests/test_report_traits_live.py:75: in _run [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.544385908-05:00 res = fn(store, end_date=d, dry_run=True, deliver=False, clean=True) [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.544388568-05:00 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.544390978-05:00 analytics/src/storeminder/runner.py:310: in run_daily [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.544393528-05:00 return _run_report(params, clean=clean) [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.544396078-05:00 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.544399208-05:00 analytics/src/storeminder/runner.py:161: in _run_report [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.544401748-05:00 conf = manage_api.store_config(store_id) [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.544404208-05:00 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.544406858-05:00 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.544409198-05:00 [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.544411698-05:00 store_id = 'Fastime' [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.544414058-05:00 [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.544416528-05:00 def store_config(store_id: str) -> dict[str, Any] | None: [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.544419138-05:00 """The store's authoritative report config (== the legacy conf/{slug}.yaml). [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.544421858-05:00 [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.544424398-05:00 Returns the config dict on 200, or None on a 404 (unknown store — the caller [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.544427008-05:00 turns this into an explicit error). Raises ManageApiError when the base URL is [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.544429608-05:00 unset or the manage app is unreachable / returns any other status: config is [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.544432208-05:00 Django-only, so we fail loud rather than run an unconfigured store. [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.544434658-05:00 """ [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.544437108-05:00 base = _require_base() [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.544439598-05:00 try: [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.544442078-05:00 import requests [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.544444678-05:00 r = requests.get(f"{base}/api/stores/{store_id}/config/", [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.544447158-05:00 headers=_headers(), timeout=10) [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.544449608-05:00 except Exception as e: # transport error → loud [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.544452058-05:00 raise ManageApiError( [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.544455008-05:00 f"manage_api store_config({store_id}) transport error: " [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.544457448-05:00 f"{type(e).__name__}: {e}") from e [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.544459938-05:00 if r.status_code == 404: [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.544462418-05:00 return None [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.544464868-05:00 if r.status_code != 200: [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.544467338-05:00 > raise ManageApiError( [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.544469868-05:00 f"manage_api store_config({store_id}) returned HTTP {r.status_code}") [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.544472418-05:00 E storeminder.manage_api.ManageApiError: manage_api store_config(Fastime) returned HTTP 400 [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.544474778-05:00 [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.544477178-05:00 analytics/src/storeminder/manage_api.py:93: ManageApiError [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.544479677-05:00 _____________ ERROR at setup of test_daily_artifact_bundle_written _____________ [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.544482037-05:00 [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.544484397-05:00 @pytest.fixture(scope="module") [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.544486847-05:00 def daily_report(): [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.544489267-05:00 > return _run("daily") [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.544491707-05:00 ^^^^^^^^^^^^^ [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.544494037-05:00 [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.544496447-05:00 analytics/tests/test_report_traits_live.py:94: [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.544503357-05:00 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.544505857-05:00 analytics/tests/test_report_traits_live.py:75: in _run [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.544508457-05:00 res = fn(store, end_date=d, dry_run=True, deliver=False, clean=True) [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.544510957-05:00 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.544513377-05:00 analytics/src/storeminder/runner.py:310: in run_daily [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.544515857-05:00 return _run_report(params, clean=clean) [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.544518347-05:00 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.544520767-05:00 analytics/src/storeminder/runner.py:161: in _run_report [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.544523247-05:00 conf = manage_api.store_config(store_id) [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.544525747-05:00 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.544528347-05:00 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.544530717-05:00 [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.544533137-05:00 store_id = 'Fastime' [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.544535507-05:00 [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.544537887-05:00 def store_config(store_id: str) -> dict[str, Any] | None: [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.544540797-05:00 """The store's authoritative report config (== the legacy conf/{slug}.yaml). [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.544543247-05:00 [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.544545857-05:00 Returns the config dict on 200, or None on a 404 (unknown store — the caller [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.544548387-05:00 turns this into an explicit error). Raises ManageApiError when the base URL is [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.544550917-05:00 unset or the manage app is unreachable / returns any other status: config is [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.544553427-05:00 Django-only, so we fail loud rather than run an unconfigured store. [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.544555887-05:00 """ [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.544558377-05:00 base = _require_base() [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.544560787-05:00 try: [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.544563547-05:00 import requests [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.544566067-05:00 r = requests.get(f"{base}/api/stores/{store_id}/config/", [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.544568557-05:00 headers=_headers(), timeout=10) [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.544571047-05:00 except Exception as e: # transport error → loud [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.544574347-05:00 raise ManageApiError( [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.544576887-05:00 f"manage_api store_config({store_id}) transport error: " [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.544579297-05:00 f"{type(e).__name__}: {e}") from e [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.544581717-05:00 if r.status_code == 404: [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.544584167-05:00 return None [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.544586617-05:00 if r.status_code != 200: [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.544589027-05:00 > raise ManageApiError( [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.544595667-05:00 f"manage_api store_config({store_id}) returned HTTP {r.status_code}") [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.544598177-05:00 E storeminder.manage_api.ManageApiError: manage_api store_config(Fastime) returned HTTP 400 [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.544600557-05:00 [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.544603057-05:00 analytics/src/storeminder/manage_api.py:93: ManageApiError [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.544605617-05:00 _______________ ERROR at setup of test_weekly_builds_and_renders _______________ [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.544607987-05:00 [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.544610467-05:00 @pytest.fixture(scope="module") [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.544612957-05:00 def weekly_report(): [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.544616567-05:00 > return _run("weekly") [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.544623637-05:00 ^^^^^^^^^^^^^^ [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.544626007-05:00 [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.544629107-05:00 analytics/tests/test_report_traits_live.py:99: [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.544631827-05:00 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.544634297-05:00 analytics/tests/test_report_traits_live.py:75: in _run [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.544636887-05:00 res = fn(store, end_date=d, dry_run=True, deliver=False, clean=True) [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.544640047-05:00 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.544642567-05:00 analytics/src/storeminder/runner.py:329: in run_weekly [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.544645037-05:00 return _run_report(params, clean=clean) [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.544647517-05:00 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.544649937-05:00 analytics/src/storeminder/runner.py:161: in _run_report [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.544652377-05:00 conf = manage_api.store_config(store_id) [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.544654847-05:00 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.544657607-05:00 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.544659957-05:00 [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.544662387-05:00 store_id = 'Fastime' [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.544664757-05:00 [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.544667437-05:00 def store_config(store_id: str) -> dict[str, Any] | None: [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.544670137-05:00 """The store's authoritative report config (== the legacy conf/{slug}.yaml). [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.544672616-05:00 [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.544675186-05:00 Returns the config dict on 200, or None on a 404 (unknown store — the caller [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.544678036-05:00 turns this into an explicit error). Raises ManageApiError when the base URL is [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.544680656-05:00 unset or the manage app is unreachable / returns any other status: config is [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.544683176-05:00 Django-only, so we fail loud rather than run an unconfigured store. [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.544685656-05:00 """ [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.544688116-05:00 base = _require_base() [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.544690556-05:00 try: [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.544692956-05:00 import requests [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.544695616-05:00 r = requests.get(f"{base}/api/stores/{store_id}/config/", [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.544698066-05:00 headers=_headers(), timeout=10) [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.544700626-05:00 except Exception as e: # transport error → loud [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.544703076-05:00 raise ManageApiError( [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.544705596-05:00 f"manage_api store_config({store_id}) transport error: " [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.544708036-05:00 f"{type(e).__name__}: {e}") from e [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.544710456-05:00 if r.status_code == 404: [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.544712886-05:00 return None [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.544715346-05:00 if r.status_code != 200: [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.544718656-05:00 > raise ManageApiError( [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.544722346-05:00 f"manage_api store_config({store_id}) returned HTTP {r.status_code}") [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.544727316-05:00 E storeminder.manage_api.ManageApiError: manage_api store_config(Fastime) returned HTTP 400 [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.544730856-05:00 [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.544734136-05:00 analytics/src/storeminder/manage_api.py:93: ManageApiError [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.544737766-05:00 __________________ ERROR at setup of test_weekly_is_sendable ___________________ [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.544747516-05:00 [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.544751136-05:00 @pytest.fixture(scope="module") [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.544754856-05:00 def weekly_report(): [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.544758506-05:00 > return _run("weekly") [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.544761946-05:00 ^^^^^^^^^^^^^^ [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.544765326-05:00 [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.544768576-05:00 analytics/tests/test_report_traits_live.py:99: [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.544771126-05:00 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.544773566-05:00 analytics/tests/test_report_traits_live.py:75: in _run [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.544776136-05:00 res = fn(store, end_date=d, dry_run=True, deliver=False, clean=True) [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.544778636-05:00 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.544781106-05:00 analytics/src/storeminder/runner.py:329: in run_weekly [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.544783556-05:00 return _run_report(params, clean=clean) [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.544786036-05:00 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.544789326-05:00 analytics/src/storeminder/runner.py:161: in _run_report [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.544791756-05:00 conf = manage_api.store_config(store_id) [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.544794236-05:00 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.544796846-05:00 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.544799226-05:00 [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.544801636-05:00 store_id = 'Fastime' [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.544803966-05:00 [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.544806486-05:00 def store_config(store_id: str) -> dict[str, Any] | None: [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.544809126-05:00 """The store's authoritative report config (== the legacy conf/{slug}.yaml). [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.544811586-05:00 [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.544814406-05:00 Returns the config dict on 200, or None on a 404 (unknown store — the caller [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.544816956-05:00 turns this into an explicit error). Raises ManageApiError when the base URL is [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.544819766-05:00 unset or the manage app is unreachable / returns any other status: config is [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.544822396-05:00 Django-only, so we fail loud rather than run an unconfigured store. [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.544825016-05:00 """ [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.544827466-05:00 base = _require_base() [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.544829986-05:00 try: [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.544832416-05:00 import requests [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.544835616-05:00 r = requests.get(f"{base}/api/stores/{store_id}/config/", [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.544838086-05:00 headers=_headers(), timeout=10) [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.544844406-05:00 except Exception as e: # transport error → loud [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.544847106-05:00 raise ManageApiError( [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.544849626-05:00 f"manage_api store_config({store_id}) transport error: " [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.544852316-05:00 f"{type(e).__name__}: {e}") from e [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.544854796-05:00 if r.status_code == 404: [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.544857236-05:00 return None [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.544859866-05:00 if r.status_code != 200: [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.544862356-05:00 > raise ManageApiError( [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.544864836-05:00 f"manage_api store_config({store_id}) returned HTTP {r.status_code}") [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.544867376-05:00 E storeminder.manage_api.ManageApiError: manage_api store_config(Fastime) returned HTTP 400 [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.544869755-05:00 [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.544878435-05:00 analytics/src/storeminder/manage_api.py:93: ManageApiError [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.544881055-05:00 __________ ERROR at setup of test_weekly_headline_labeled_total_sales __________ [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.544883395-05:00 [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.544886565-05:00 @pytest.fixture(scope="module") [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.544889025-05:00 def weekly_report(): [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.544891505-05:00 > return _run("weekly") [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.544893965-05:00 ^^^^^^^^^^^^^^ [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.544896355-05:00 [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.544898755-05:00 analytics/tests/test_report_traits_live.py:99: [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.544901265-05:00 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.544903695-05:00 analytics/tests/test_report_traits_live.py:75: in _run [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.544906175-05:00 res = fn(store, end_date=d, dry_run=True, deliver=False, clean=True) [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.544908675-05:00 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.544911095-05:00 analytics/src/storeminder/runner.py:329: in run_weekly [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.544913495-05:00 return _run_report(params, clean=clean) [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.544916045-05:00 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.544918615-05:00 analytics/src/storeminder/runner.py:161: in _run_report [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.544921045-05:00 conf = manage_api.store_config(store_id) [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.544923475-05:00 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.544926095-05:00 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.544928445-05:00 [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.544930835-05:00 store_id = 'Fastime' [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.544933165-05:00 [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.544937025-05:00 def store_config(store_id: str) -> dict[str, Any] | None: [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.544939475-05:00 """The store's authoritative report config (== the legacy conf/{slug}.yaml). [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.544941955-05:00 [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.544944715-05:00 Returns the config dict on 200, or None on a 404 (unknown store — the caller [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.544947245-05:00 turns this into an explicit error). Raises ManageApiError when the base URL is [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.544949935-05:00 unset or the manage app is unreachable / returns any other status: config is [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.544952515-05:00 Django-only, so we fail loud rather than run an unconfigured store. [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.544954955-05:00 """ [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.544957365-05:00 base = _require_base() [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.544959905-05:00 try: [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.544962335-05:00 import requests [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.544964855-05:00 r = requests.get(f"{base}/api/stores/{store_id}/config/", [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.544967365-05:00 headers=_headers(), timeout=10) [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.544969805-05:00 except Exception as e: # transport error → loud [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.544972235-05:00 raise ManageApiError( [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.544974785-05:00 f"manage_api store_config({store_id}) transport error: " [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.544977205-05:00 f"{type(e).__name__}: {e}") from e [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.544979665-05:00 if r.status_code == 404: [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.544982085-05:00 return None [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.544984505-05:00 if r.status_code != 200: [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.544987595-05:00 > raise ManageApiError( [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.544990105-05:00 f"manage_api store_config({store_id}) returned HTTP {r.status_code}") [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.544997145-05:00 E storeminder.manage_api.ManageApiError: manage_api store_config(Fastime) returned HTTP 400 [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.544999545-05:00 [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.545003995-05:00 analytics/src/storeminder/manage_api.py:93: ManageApiError [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.545008205-05:00 _______________ ERROR at setup of test_weekly_sms_not_truncated ________________ [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.545011855-05:00 [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.545015715-05:00 @pytest.fixture(scope="module") [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.545019195-05:00 def weekly_report(): [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.545021675-05:00 > return _run("weekly") [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.545024115-05:00 ^^^^^^^^^^^^^^ [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.545026515-05:00 [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.545028955-05:00 analytics/tests/test_report_traits_live.py:99: [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.545031485-05:00 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.545033945-05:00 analytics/tests/test_report_traits_live.py:75: in _run [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.545036935-05:00 res = fn(store, end_date=d, dry_run=True, deliver=False, clean=True) [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.545039545-05:00 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.545042345-05:00 analytics/src/storeminder/runner.py:329: in run_weekly [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.545044855-05:00 return _run_report(params, clean=clean) [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.545047405-05:00 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.545049945-05:00 analytics/src/storeminder/runner.py:161: in _run_report [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.545052465-05:00 conf = manage_api.store_config(store_id) [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.545054875-05:00 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.545057355-05:00 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.545059775-05:00 [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.545062245-05:00 store_id = 'Fastime' [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.545064564-05:00 [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.545067024-05:00 def store_config(store_id: str) -> dict[str, Any] | None: [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.545070254-05:00 """The store's authoritative report config (== the legacy conf/{slug}.yaml). [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.545072704-05:00 [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.545075344-05:00 Returns the config dict on 200, or None on a 404 (unknown store — the caller [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.545077914-05:00 turns this into an explicit error). Raises ManageApiError when the base URL is [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.545083994-05:00 unset or the manage app is unreachable / returns any other status: config is [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.545087154-05:00 Django-only, so we fail loud rather than run an unconfigured store. [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.545089734-05:00 """ [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.545092174-05:00 base = _require_base() [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.545094974-05:00 try: [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.545097394-05:00 import requests [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.545100114-05:00 r = requests.get(f"{base}/api/stores/{store_id}/config/", [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.545102634-05:00 headers=_headers(), timeout=10) [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.545105264-05:00 except Exception as e: # transport error → loud [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.545107834-05:00 raise ManageApiError( [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.545110364-05:00 f"manage_api store_config({store_id}) transport error: " [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.545113494-05:00 f"{type(e).__name__}: {e}") from e [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.545115934-05:00 if r.status_code == 404: [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.545118354-05:00 return None [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.545125564-05:00 if r.status_code != 200: [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.545128174-05:00 > raise ManageApiError( [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.545130794-05:00 f"manage_api store_config({store_id}) returned HTTP {r.status_code}") [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.545133284-05:00 E storeminder.manage_api.ManageApiError: manage_api store_config(Fastime) returned HTTP 400 [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.545135634-05:00 [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.545138354-05:00 analytics/src/storeminder/manage_api.py:93: ManageApiError [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.545140864-05:00 ____________ ERROR at setup of test_weekly_artifact_bundle_written _____________ [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.545143204-05:00 [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.545145644-05:00 @pytest.fixture(scope="module") [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.545148134-05:00 def weekly_report(): [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.545151354-05:00 > return _run("weekly") [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.545153764-05:00 ^^^^^^^^^^^^^^ [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.545156094-05:00 [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.545158514-05:00 analytics/tests/test_report_traits_live.py:99: [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.545161084-05:00 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.545164024-05:00 analytics/tests/test_report_traits_live.py:75: in _run [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.545166574-05:00 res = fn(store, end_date=d, dry_run=True, deliver=False, clean=True) [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.545169154-05:00 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.545172984-05:00 analytics/src/storeminder/runner.py:329: in run_weekly [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.545176794-05:00 return _run_report(params, clean=clean) [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.545181544-05:00 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.545184694-05:00 analytics/src/storeminder/runner.py:161: in _run_report [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.545188164-05:00 conf = manage_api.store_config(store_id) [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.545191614-05:00 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.545195014-05:00 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.545198354-05:00 [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.545201554-05:00 store_id = 'Fastime' [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.545204734-05:00 [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.545207954-05:00 def store_config(store_id: str) -> dict[str, Any] | None: [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.545211374-05:00 """The store's authoritative report config (== the legacy conf/{slug}.yaml). [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.545214624-05:00 [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.545218214-05:00 Returns the config dict on 200, or None on a 404 (unknown store — the caller [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.545221754-05:00 turns this into an explicit error). Raises ManageApiError when the base URL is [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.545225724-05:00 unset or the manage app is unreachable / returns any other status: config is [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.545229314-05:00 Django-only, so we fail loud rather than run an unconfigured store. [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.545234904-05:00 """ [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.545238764-05:00 base = _require_base() [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.545241944-05:00 try: [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.545245334-05:00 import requests [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.545249514-05:00 r = requests.get(f"{base}/api/stores/{store_id}/config/", [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.545253164-05:00 headers=_headers(), timeout=10) [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.545257264-05:00 except Exception as e: # transport error → loud [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.545261363-05:00 raise ManageApiError( [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.545265033-05:00 f"manage_api store_config({store_id}) transport error: " [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.545277223-05:00 f"{type(e).__name__}: {e}") from e [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.545280603-05:00 if r.status_code == 404: [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.545284613-05:00 return None [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.545288113-05:00 if r.status_code != 200: [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.545291833-05:00 > raise ManageApiError( [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.545295823-05:00 f"manage_api store_config({store_id}) returned HTTP {r.status_code}") [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.545300063-05:00 E storeminder.manage_api.ManageApiError: manage_api store_config(Fastime) returned HTTP 400 [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.545303823-05:00 [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.545307623-05:00 analytics/src/storeminder/manage_api.py:93: ManageApiError [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.545311313-05:00 --------------------- generated xml file: /tmp/traits.xml ---------------------- [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.545315473-05:00 =========================== short test summary info ============================ [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.545319083-05:00 ERROR analytics/tests/test_report_traits_live.py::test_daily_builds_and_renders [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.545324463-05:00 ERROR analytics/tests/test_report_traits_live.py::test_daily_is_sendable_and_no_weekly_leak [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.545328543-05:00 ERROR analytics/tests/test_report_traits_live.py::test_daily_headline_labeled_total_sales [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.545332423-05:00 ERROR analytics/tests/test_report_traits_live.py::test_daily_sms_not_truncated [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.545346133-05:00 ERROR analytics/tests/test_report_traits_live.py::test_daily_artifact_bundle_written [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.545353423-05:00 ERROR analytics/tests/test_report_traits_live.py::test_weekly_builds_and_renders [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.545357053-05:00 ERROR analytics/tests/test_report_traits_live.py::test_weekly_is_sendable - s... [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.545361003-05:00 ERROR analytics/tests/test_report_traits_live.py::test_weekly_headline_labeled_total_sales [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.545369463-05:00 ERROR analytics/tests/test_report_traits_live.py::test_weekly_sms_not_truncated [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.545373463-05:00 ERROR analytics/tests/test_report_traits_live.py::test_weekly_artifact_bundle_written [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.545377213-05:00 ============================== 10 errors in 0.80s ============================== [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.545382443-05:00 ===JUNIT_BEGIN=== [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.545386573-05:00 @pytest.fixture(scope="module") [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.545392173-05:00 def daily_report(): [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.545398963-05:00 > return _run("daily") [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.545402553-05:00 ^^^^^^^^^^^^^ [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.545405773-05:00 [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.545409813-05:00 analytics/tests/test_report_traits_live.py:94: [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.545413263-05:00 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.545417393-05:00 analytics/tests/test_report_traits_live.py:75: in _run [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.545420763-05:00 res = fn(store, end_date=d, dry_run=True, deliver=False, clean=True) [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.545424673-05:00 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.545428533-05:00 analytics/src/storeminder/runner.py:310: in run_daily [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.545432203-05:00 return _run_report(params, clean=clean) [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.545443313-05:00 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.545447033-05:00 analytics/src/storeminder/runner.py:161: in _run_report [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.545450512-05:00 conf = manage_api.store_config(store_id) [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.545453942-05:00 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.545457602-05:00 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.545460912-05:00 [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.545464512-05:00 store_id = 'Fastime' [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.545467852-05:00 [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.545471362-05:00 def store_config(store_id: str) -> dict[str, Any] | None: [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.545475102-05:00 """The store's authoritative report config (== the legacy conf/{slug}.yaml). [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.545478912-05:00 [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.545482522-05:00 Returns the config dict on 200, or None on a 404 (unknown store — the caller [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.545486692-05:00 turns this into an explicit error). Raises ManageApiError when the base URL is [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.545490592-05:00 unset or the manage app is unreachable / returns any other status: config is [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.545493982-05:00 Django-only, so we fail loud rather than run an unconfigured store. [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.545497432-05:00 """ [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.545500842-05:00 base = _require_base() [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.545504152-05:00 try: [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.545507552-05:00 import requests [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.545511102-05:00 r = requests.get(f"{base}/api/stores/{store_id}/config/", [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.545514752-05:00 headers=_headers(), timeout=10) [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.545518402-05:00 except Exception as e: # transport error → loud [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.545522202-05:00 raise ManageApiError( [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.545526112-05:00 f"manage_api store_config({store_id}) transport error: " [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.545529812-05:00 f"{type(e).__name__}: {e}") from e [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.545533562-05:00 if r.status_code == 404: [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.545537152-05:00 return None [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.545540542-05:00 if r.status_code != 200: [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.545543952-05:00 > raise ManageApiError( [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.545548022-05:00 f"manage_api store_config({store_id}) returned HTTP {r.status_code}") [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.545552702-05:00 E storeminder.manage_api.ManageApiError: manage_api store_config(Fastime) returned HTTP 400 [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.545556442-05:00 [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.545560852-05:00 analytics/src/storeminder/manage_api.py:93: ManageApiError@pytest.fixture(scope="module") [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.545564942-05:00 def daily_report(): [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.545568712-05:00 > return _run("daily") [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.545572792-05:00 ^^^^^^^^^^^^^ [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.545576052-05:00 [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.545579512-05:00 analytics/tests/test_report_traits_live.py:94: [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.545583212-05:00 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.545587142-05:00 analytics/tests/test_report_traits_live.py:75: in _run [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.545591022-05:00 res = fn(store, end_date=d, dry_run=True, deliver=False, clean=True) [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.545603242-05:00 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.545607032-05:00 analytics/src/storeminder/runner.py:310: in run_daily [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.545610712-05:00 return _run_report(params, clean=clean) [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.545614832-05:00 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.545617972-05:00 analytics/src/storeminder/runner.py:161: in _run_report [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.545621482-05:00 conf = manage_api.store_config(store_id) [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.545625362-05:00 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.545628882-05:00 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.545632142-05:00 [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.545635582-05:00 store_id = 'Fastime' [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.545638751-05:00 [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.545643131-05:00 def store_config(store_id: str) -> dict[str, Any] | None: [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.545652181-05:00 """The store's authoritative report config (== the legacy conf/{slug}.yaml). [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.545655521-05:00 [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.545659111-05:00 Returns the config dict on 200, or None on a 404 (unknown store — the caller [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.545663591-05:00 turns this into an explicit error). Raises ManageApiError when the base URL is [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.545667631-05:00 unset or the manage app is unreachable / returns any other status: config is [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.545671301-05:00 Django-only, so we fail loud rather than run an unconfigured store. [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.545674781-05:00 """ [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.545678191-05:00 base = _require_base() [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.545681591-05:00 try: [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.545685261-05:00 import requests [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.545688571-05:00 r = requests.get(f"{base}/api/stores/{store_id}/config/", [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.545692261-05:00 headers=_headers(), timeout=10) [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.545696381-05:00 except Exception as e: # transport error → loud [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.545699671-05:00 raise ManageApiError( [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.545703141-05:00 f"manage_api store_config({store_id}) transport error: " [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.545706381-05:00 f"{type(e).__name__}: {e}") from e [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.545709781-05:00 if r.status_code == 404: [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.545713031-05:00 return None [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.545716231-05:00 if r.status_code != 200: [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.545719791-05:00 > raise ManageApiError( [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.545723701-05:00 f"manage_api store_config({store_id}) returned HTTP {r.status_code}") [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.545727611-05:00 E storeminder.manage_api.ManageApiError: manage_api store_config(Fastime) returned HTTP 400 [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.545730761-05:00 [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.545734611-05:00 analytics/src/storeminder/manage_api.py:93: ManageApiError@pytest.fixture(scope="module") [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.545737911-05:00 def daily_report(): [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.545741201-05:00 > return _run("daily") [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.545744341-05:00 ^^^^^^^^^^^^^ [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.545747361-05:00 [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.545750501-05:00 analytics/tests/test_report_traits_live.py:94: [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.545753821-05:00 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.545763581-05:00 analytics/tests/test_report_traits_live.py:75: in _run [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.545766961-05:00 res = fn(store, end_date=d, dry_run=True, deliver=False, clean=True) [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.545770261-05:00 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.545773521-05:00 analytics/src/storeminder/runner.py:310: in run_daily [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.545776801-05:00 return _run_report(params, clean=clean) [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.545779961-05:00 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.545783391-05:00 analytics/src/storeminder/runner.py:161: in _run_report [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.545786731-05:00 conf = manage_api.store_config(store_id) [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.545789941-05:00 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.545793301-05:00 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.545796451-05:00 [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.545799661-05:00 store_id = 'Fastime' [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.545802861-05:00 [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.545805991-05:00 def store_config(store_id: str) -> dict[str, Any] | None: [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.545809331-05:00 """The store's authoritative report config (== the legacy conf/{slug}.yaml). [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.545812641-05:00 [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.545816031-05:00 Returns the config dict on 200, or None on a 404 (unknown store — the caller [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.545819991-05:00 turns this into an explicit error). Raises ManageApiError when the base URL is [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.545823261-05:00 unset or the manage app is unreachable / returns any other status: config is [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.545826600-05:00 Django-only, so we fail loud rather than run an unconfigured store. [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.545829980-05:00 """ [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.545833230-05:00 base = _require_base() [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.545836600-05:00 try: [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.545839860-05:00 import requests [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.545843060-05:00 r = requests.get(f"{base}/api/stores/{store_id}/config/", [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.545846460-05:00 headers=_headers(), timeout=10) [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.545849830-05:00 except Exception as e: # transport error → loud [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.545853850-05:00 raise ManageApiError( [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.545857330-05:00 f"manage_api store_config({store_id}) transport error: " [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.545861030-05:00 f"{type(e).__name__}: {e}") from e [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.545864780-05:00 if r.status_code == 404: [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.545868290-05:00 return None [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.545871710-05:00 if r.status_code != 200: [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.545874910-05:00 > raise ManageApiError( [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.545878220-05:00 f"manage_api store_config({store_id}) returned HTTP {r.status_code}") [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.545881710-05:00 E storeminder.manage_api.ManageApiError: manage_api store_config(Fastime) returned HTTP 400 [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.545884840-05:00 [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.545888640-05:00 analytics/src/storeminder/manage_api.py:93: ManageApiError@pytest.fixture(scope="module") [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.545892690-05:00 def daily_report(): [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.545895970-05:00 > return _run("daily") [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.545907720-05:00 ^^^^^^^^^^^^^ [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.545910920-05:00 [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.545913950-05:00 analytics/tests/test_report_traits_live.py:94: [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.545935300-05:00 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.545954480-05:00 analytics/tests/test_report_traits_live.py:75: in _run [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.545957880-05:00 res = fn(store, end_date=d, dry_run=True, deliver=False, clean=True) [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.545967780-05:00 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.545970740-05:00 analytics/src/storeminder/runner.py:310: in run_daily [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.545973760-05:00 return _run_report(params, clean=clean) [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.545976270-05:00 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.545978810-05:00 analytics/src/storeminder/runner.py:161: in _run_report [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.545982170-05:00 conf = manage_api.store_config(store_id) [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.545984950-05:00 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.545987600-05:00 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.545990310-05:00 [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.545993950-05:00 store_id = 'Fastime' [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.545996370-05:00 [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.545999490-05:00 def store_config(store_id: str) -> dict[str, Any] | None: [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.546002680-05:00 """The store's authoritative report config (== the legacy conf/{slug}.yaml). [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.546005330-05:00 [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.546007900-05:00 Returns the config dict on 200, or None on a 404 (unknown store — the caller [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.546010500-05:00 turns this into an explicit error). Raises ManageApiError when the base URL is [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.546013009-05:00 unset or the manage app is unreachable / returns any other status: config is [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.546015499-05:00 Django-only, so we fail loud rather than run an unconfigured store. [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.546018109-05:00 """ [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.546021019-05:00 base = _require_base() [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.546023549-05:00 try: [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.546026079-05:00 import requests [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.546028779-05:00 r = requests.get(f"{base}/api/stores/{store_id}/config/", [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.546031329-05:00 headers=_headers(), timeout=10) [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.546033939-05:00 except Exception as e: # transport error → loud [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.546036439-05:00 raise ManageApiError( [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.546039019-05:00 f"manage_api store_config({store_id}) transport error: " [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.546043489-05:00 f"{type(e).__name__}: {e}") from e [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.546046219-05:00 if r.status_code == 404: [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.546048819-05:00 return None [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.546051279-05:00 if r.status_code != 200: [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.546053909-05:00 > raise ManageApiError( [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.546056679-05:00 f"manage_api store_config({store_id}) returned HTTP {r.status_code}") [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.546059739-05:00 E storeminder.manage_api.ManageApiError: manage_api store_config(Fastime) returned HTTP 400 [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.546062199-05:00 [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.546066499-05:00 analytics/src/storeminder/manage_api.py:93: ManageApiError@pytest.fixture(scope="module") [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.546079459-05:00 def daily_report(): [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.546082059-05:00 > return _run("daily") [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.546084569-05:00 ^^^^^^^^^^^^^ [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.546086929-05:00 [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.546089449-05:00 analytics/tests/test_report_traits_live.py:94: [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.546092259-05:00 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.546095329-05:00 analytics/tests/test_report_traits_live.py:75: in _run [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.546098039-05:00 res = fn(store, end_date=d, dry_run=True, deliver=False, clean=True) [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.546100799-05:00 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.546103339-05:00 analytics/src/storeminder/runner.py:310: in run_daily [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.546105849-05:00 return _run_report(params, clean=clean) [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.546108359-05:00 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.546111309-05:00 analytics/src/storeminder/runner.py:161: in _run_report [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.546113829-05:00 conf = manage_api.store_config(store_id) [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.546117109-05:00 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.546119809-05:00 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.546122209-05:00 [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.546125349-05:00 store_id = 'Fastime' [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.546127999-05:00 [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.546130509-05:00 def store_config(store_id: str) -> dict[str, Any] | None: [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.546133029-05:00 """The store's authoritative report config (== the legacy conf/{slug}.yaml). [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.546135499-05:00 [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.546138009-05:00 Returns the config dict on 200, or None on a 404 (unknown store — the caller [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.546140679-05:00 turns this into an explicit error). Raises ManageApiError when the base URL is [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.546143139-05:00 unset or the manage app is unreachable / returns any other status: config is [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.546146159-05:00 Django-only, so we fail loud rather than run an unconfigured store. [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.546148619-05:00 """ [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.546151069-05:00 base = _require_base() [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.546153529-05:00 try: [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.546155939-05:00 import requests [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.546158439-05:00 r = requests.get(f"{base}/api/stores/{store_id}/config/", [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.546161389-05:00 headers=_headers(), timeout=10) [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.546163979-05:00 except Exception as e: # transport error → loud [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.546166629-05:00 raise ManageApiError( [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.546169269-05:00 f"manage_api store_config({store_id}) transport error: " [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.546171809-05:00 f"{type(e).__name__}: {e}") from e [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.546174249-05:00 if r.status_code == 404: [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.546176759-05:00 return None [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.546179169-05:00 if r.status_code != 200: [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.546181659-05:00 > raise ManageApiError( [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.546184209-05:00 f"manage_api store_config({store_id}) returned HTTP {r.status_code}") [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.546189239-05:00 E storeminder.manage_api.ManageApiError: manage_api store_config(Fastime) returned HTTP 400 [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.546191679-05:00 [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.546200058-05:00 analytics/src/storeminder/manage_api.py:93: ManageApiError@pytest.fixture(scope="module") [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.546202718-05:00 def weekly_report(): [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.546205178-05:00 > return _run("weekly") [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.546207618-05:00 ^^^^^^^^^^^^^^ [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.546209968-05:00 [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.546212518-05:00 analytics/tests/test_report_traits_live.py:99: [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.546215138-05:00 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.546218328-05:00 analytics/tests/test_report_traits_live.py:75: in _run [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.546220828-05:00 res = fn(store, end_date=d, dry_run=True, deliver=False, clean=True) [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.546223328-05:00 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.546227678-05:00 analytics/src/storeminder/runner.py:329: in run_weekly [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.546230158-05:00 return _run_report(params, clean=clean) [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.546232568-05:00 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.546235248-05:00 analytics/src/storeminder/runner.py:161: in _run_report [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.546237788-05:00 conf = manage_api.store_config(store_id) [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.546242688-05:00 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.546245348-05:00 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.546247848-05:00 [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.546250408-05:00 store_id = 'Fastime' [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.546252828-05:00 [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.546255628-05:00 def store_config(store_id: str) -> dict[str, Any] | None: [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.546258598-05:00 """The store's authoritative report config (== the legacy conf/{slug}.yaml). [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.546261058-05:00 [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.546263848-05:00 Returns the config dict on 200, or None on a 404 (unknown store — the caller [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.546266968-05:00 turns this into an explicit error). Raises ManageApiError when the base URL is [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.546270028-05:00 unset or the manage app is unreachable / returns any other status: config is [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.546272538-05:00 Django-only, so we fail loud rather than run an unconfigured store. [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.546275328-05:00 """ [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.546277808-05:00 base = _require_base() [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.546280428-05:00 try: [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.546283188-05:00 import requests [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.546286358-05:00 r = requests.get(f"{base}/api/stores/{store_id}/config/", [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.546288898-05:00 headers=_headers(), timeout=10) [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.546291368-05:00 except Exception as e: # transport error → loud [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.546294338-05:00 raise ManageApiError( [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.546296938-05:00 f"manage_api store_config({store_id}) transport error: " [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.546299428-05:00 f"{type(e).__name__}: {e}") from e [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.546301908-05:00 if r.status_code == 404: [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.546304348-05:00 return None [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.546306758-05:00 if r.status_code != 200: [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.546309268-05:00 > raise ManageApiError( [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.546311748-05:00 f"manage_api store_config({store_id}) returned HTTP {r.status_code}") [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.546318908-05:00 E storeminder.manage_api.ManageApiError: manage_api store_config(Fastime) returned HTTP 400 [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.546321318-05:00 [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.546324178-05:00 analytics/src/storeminder/manage_api.py:93: ManageApiError@pytest.fixture(scope="module") [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.546326758-05:00 def weekly_report(): [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.546329338-05:00 > return _run("weekly") [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.546331868-05:00 ^^^^^^^^^^^^^^ [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.546334248-05:00 [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.546336668-05:00 analytics/tests/test_report_traits_live.py:99: [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.546353178-05:00 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.546356148-05:00 analytics/tests/test_report_traits_live.py:75: in _run [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.546358708-05:00 res = fn(store, end_date=d, dry_run=True, deliver=False, clean=True) [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.546361468-05:00 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.546364708-05:00 analytics/src/storeminder/runner.py:329: in run_weekly [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.546367288-05:00 return _run_report(params, clean=clean) [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.546369778-05:00 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.546372268-05:00 analytics/src/storeminder/runner.py:161: in _run_report [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.546375088-05:00 conf = manage_api.store_config(store_id) [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.546377568-05:00 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.546381508-05:00 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.546384008-05:00 [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.546386438-05:00 store_id = 'Fastime' [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.546388827-05:00 [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.546391337-05:00 def store_config(store_id: str) -> dict[str, Any] | None: [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.546393867-05:00 """The store's authoritative report config (== the legacy conf/{slug}.yaml). [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.546396327-05:00 [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.546398837-05:00 Returns the config dict on 200, or None on a 404 (unknown store — the caller [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.546401367-05:00 turns this into an explicit error). Raises ManageApiError when the base URL is [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.546403977-05:00 unset or the manage app is unreachable / returns any other status: config is [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.546408807-05:00 Django-only, so we fail loud rather than run an unconfigured store. [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.546411447-05:00 """ [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.546413947-05:00 base = _require_base() [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.546416387-05:00 try: [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.546418797-05:00 import requests [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.546421317-05:00 r = requests.get(f"{base}/api/stores/{store_id}/config/", [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.546423907-05:00 headers=_headers(), timeout=10) [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.546426507-05:00 except Exception as e: # transport error → loud [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.546429007-05:00 raise ManageApiError( [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.546431587-05:00 f"manage_api store_config({store_id}) transport error: " [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.546434067-05:00 f"{type(e).__name__}: {e}") from e [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.546436617-05:00 if r.status_code == 404: [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.546445327-05:00 return None [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.546447827-05:00 if r.status_code != 200: [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.546450367-05:00 > raise ManageApiError( [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.546452877-05:00 f"manage_api store_config({store_id}) returned HTTP {r.status_code}") [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.546455417-05:00 E storeminder.manage_api.ManageApiError: manage_api store_config(Fastime) returned HTTP 400 [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.546457947-05:00 [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.546460767-05:00 analytics/src/storeminder/manage_api.py:93: ManageApiError@pytest.fixture(scope="module") [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.546463287-05:00 def weekly_report(): [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.546465767-05:00 > return _run("weekly") [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.546468717-05:00 ^^^^^^^^^^^^^^ [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.546471167-05:00 [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.546473707-05:00 analytics/tests/test_report_traits_live.py:99: [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.546476937-05:00 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.546479657-05:00 analytics/tests/test_report_traits_live.py:75: in _run [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.546482177-05:00 res = fn(store, end_date=d, dry_run=True, deliver=False, clean=True) [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.546484857-05:00 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.546487367-05:00 analytics/src/storeminder/runner.py:329: in run_weekly [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.546489837-05:00 return _run_report(params, clean=clean) [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.546492367-05:00 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.546494917-05:00 analytics/src/storeminder/runner.py:161: in _run_report [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.546497407-05:00 conf = manage_api.store_config(store_id) [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.546499917-05:00 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.546502417-05:00 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.546504867-05:00 [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.546507307-05:00 store_id = 'Fastime' [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.546509717-05:00 [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.546512487-05:00 def store_config(store_id: str) -> dict[str, Any] | None: [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.546515197-05:00 """The store's authoritative report config (== the legacy conf/{slug}.yaml). [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.546517627-05:00 [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.546520167-05:00 Returns the config dict on 200, or None on a 404 (unknown store — the caller [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.546522647-05:00 turns this into an explicit error). Raises ManageApiError when the base URL is [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.546525137-05:00 unset or the manage app is unreachable / returns any other status: config is [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.546527647-05:00 Django-only, so we fail loud rather than run an unconfigured store. [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.546530147-05:00 """ [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.546532717-05:00 base = _require_base() [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.546535227-05:00 try: [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.546537667-05:00 import requests [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.546540647-05:00 r = requests.get(f"{base}/api/stores/{store_id}/config/", [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.546543517-05:00 headers=_headers(), timeout=10) [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.546546007-05:00 except Exception as e: # transport error → loud [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.546548537-05:00 raise ManageApiError( [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.546555447-05:00 f"manage_api store_config({store_id}) transport error: " [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.546558197-05:00 f"{type(e).__name__}: {e}") from e [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.546561187-05:00 if r.status_code == 404: [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.546563717-05:00 return None [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.546566737-05:00 if r.status_code != 200: [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.546569587-05:00 > raise ManageApiError( [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.546572547-05:00 f"manage_api store_config({store_id}) returned HTTP {r.status_code}") [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.546575127-05:00 E storeminder.manage_api.ManageApiError: manage_api store_config(Fastime) returned HTTP 400 [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.546577447-05:00 [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.546580087-05:00 analytics/src/storeminder/manage_api.py:93: ManageApiError@pytest.fixture(scope="module") [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.546582567-05:00 def weekly_report(): [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.546585126-05:00 > return _run("weekly") [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.546587576-05:00 ^^^^^^^^^^^^^^ [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.546589926-05:00 [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.546592446-05:00 analytics/tests/test_report_traits_live.py:99: [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.546595026-05:00 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.546597556-05:00 analytics/tests/test_report_traits_live.py:75: in _run [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.546600236-05:00 res = fn(store, end_date=d, dry_run=True, deliver=False, clean=True) [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.546602766-05:00 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.546605216-05:00 analytics/src/storeminder/runner.py:329: in run_weekly [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.546611826-05:00 return _run_report(params, clean=clean) [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.546614346-05:00 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.546616876-05:00 analytics/src/storeminder/runner.py:161: in _run_report [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.546619436-05:00 conf = manage_api.store_config(store_id) [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.546622196-05:00 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.546625036-05:00 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.546627396-05:00 [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.546630026-05:00 store_id = 'Fastime' [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.546632356-05:00 [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.546635296-05:00 def store_config(store_id: str) -> dict[str, Any] | None: [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.546637836-05:00 """The store's authoritative report config (== the legacy conf/{slug}.yaml). [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.546640326-05:00 [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.546643366-05:00 Returns the config dict on 200, or None on a 404 (unknown store — the caller [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.546645896-05:00 turns this into an explicit error). Raises ManageApiError when the base URL is [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.546648446-05:00 unset or the manage app is unreachable / returns any other status: config is [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.546650996-05:00 Django-only, so we fail loud rather than run an unconfigured store. [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.546653436-05:00 """ [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.546655886-05:00 base = _require_base() [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.546658326-05:00 try: [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.546660816-05:00 import requests [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.546664026-05:00 r = requests.get(f"{base}/api/stores/{store_id}/config/", [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.546670876-05:00 headers=_headers(), timeout=10) [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.546673546-05:00 except Exception as e: # transport error → loud [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.546676126-05:00 raise ManageApiError( [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.546678646-05:00 f"manage_api store_config({store_id}) transport error: " [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.546681546-05:00 f"{type(e).__name__}: {e}") from e [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.546684076-05:00 if r.status_code == 404: [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.546686496-05:00 return None [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.546689066-05:00 if r.status_code != 200: [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.546691566-05:00 > raise ManageApiError( [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.546694186-05:00 f"manage_api store_config({store_id}) returned HTTP {r.status_code}") [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.546696816-05:00 E storeminder.manage_api.ManageApiError: manage_api store_config(Fastime) returned HTTP 400 [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.546699166-05:00 [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.546701716-05:00 analytics/src/storeminder/manage_api.py:93: ManageApiError@pytest.fixture(scope="module") [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.546704346-05:00 def weekly_report(): [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.546706796-05:00 > return _run("weekly") [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.546709366-05:00 ^^^^^^^^^^^^^^ [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.546711736-05:00 [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.546714196-05:00 analytics/tests/test_report_traits_live.py:99: [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.546716776-05:00 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.546719256-05:00 analytics/tests/test_report_traits_live.py:75: in _run [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.546721866-05:00 res = fn(store, end_date=d, dry_run=True, deliver=False, clean=True) [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.546724356-05:00 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.546727696-05:00 analytics/src/storeminder/runner.py:329: in run_weekly [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.546730706-05:00 return _run_report(params, clean=clean) [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.546733876-05:00 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.546736296-05:00 analytics/src/storeminder/runner.py:161: in _run_report [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.546739176-05:00 conf = manage_api.store_config(store_id) [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.546741626-05:00 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.546744506-05:00 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.546747076-05:00 [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.546749746-05:00 store_id = 'Fastime' [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.546752186-05:00 [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.546754766-05:00 def store_config(store_id: str) -> dict[str, Any] | None: [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.546757476-05:00 """The store's authoritative report config (== the legacy conf/{slug}.yaml). [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.546759966-05:00 [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.546762556-05:00 Returns the config dict on 200, or None on a 404 (unknown store — the caller [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.546765076-05:00 turns this into an explicit error). Raises ManageApiError when the base URL is [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.546769536-05:00 unset or the manage app is unreachable / returns any other status: config is [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.546772246-05:00 Django-only, so we fail loud rather than run an unconfigured store. [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.546774876-05:00 """ [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.546782155-05:00 base = _require_base() [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.546785265-05:00 try: [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.546787705-05:00 import requests [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.546790355-05:00 r = requests.get(f"{base}/api/stores/{store_id}/config/", [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.546792845-05:00 headers=_headers(), timeout=10) [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.546795335-05:00 except Exception as e: # transport error → loud [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.546798065-05:00 raise ManageApiError( [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.546800955-05:00 f"manage_api store_config({store_id}) transport error: " [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.546803665-05:00 f"{type(e).__name__}: {e}") from e [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.546806685-05:00 if r.status_code == 404: [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.546809125-05:00 return None [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.546811545-05:00 if r.status_code != 200: [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.546814005-05:00 > raise ManageApiError( [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.546816525-05:00 f"manage_api store_config({store_id}) returned HTTP {r.status_code}") [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.546819115-05:00 E storeminder.manage_api.ManageApiError: manage_api store_config(Fastime) returned HTTP 400 [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.546821555-05:00 [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.546833825-05:00 analytics/src/storeminder/manage_api.py:93: ManageApiError===JUNIT_END=== [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.546836545-05:00 ----- end live Job logs ----- [pod/analytics-report-live-wj9r6-live-build-pod/step-run-live] 2026-07-17T17:30:05.576034404-05:00 ==> live build: status=Failed conclusion=failure [pod/analytics-report-live-wj9r6-live-build-pod/prepare] 2026-07-17T17:29:10.178317566-05:00 2026/07/17 22:29:10 Entrypoint initialization ===== analytics-report-live-wj9r6-notify-on-failure-pod.log ===== [pod/analytics-report-live-wj9r6-notify-on-failure-pod/prepare] 2026-07-17T17:30:07.294724337-05:00 2026/07/17 22:30:07 Entrypoint initialization [pod/analytics-report-live-wj9r6-notify-on-failure-pod/place-scripts] 2026-07-17T17:30:08.430878546-05:00 2026/07/17 22:30:08 Decoded script /tekton/scripts/script-0-vr88v [pod/analytics-report-live-wj9r6-notify-on-failure-pod/step-slack-alert] 2026-07-17T17:30:13.879003302-05:00 slack-preview-token absent — skipping Slack alert (see the storeminder/slack Vault grant) ===== analytics-report-live-wj9r6-post-check-live-pod.log ===== [pod/analytics-report-live-wj9r6-post-check-live-pod/prepare] 2026-07-17T17:30:08.894261975-05:00 2026/07/17 22:30:08 Entrypoint initialization [pod/analytics-report-live-wj9r6-post-check-live-pod/place-scripts] 2026-07-17T17:30:09.580735611-05:00 2026/07/17 22:30:09 Decoded script /tekton/scripts/script-0-2jjd4 [pod/analytics-report-live-wj9r6-post-check-live-pod/step-post-check] 2026-07-17T17:30:13.747565897-05:00 Installing PyJWT + cryptography + requests… ===== analytics-report-live-wj9r6-post-status-live-pod.log ===== [pod/analytics-report-live-wj9r6-post-status-live-pod/prepare] 2026-07-17T17:30:09.570894202-05:00 2026/07/17 22:30:09 Entrypoint initialization [pod/analytics-report-live-wj9r6-post-status-live-pod/place-scripts] 2026-07-17T17:30:10.751217755-05:00 2026/07/17 22:30:10 Decoded script /tekton/scripts/script-0-kmnc5 ===== analytics-report-live-wj9r6-reclaim-workspace-pod.log ===== [pod/analytics-report-live-wj9r6-reclaim-workspace-pod/place-scripts] 2026-07-17T17:30:10.713895000-05:00 2026/07/17 22:30:10 Decoded script /tekton/scripts/script-0-6rq9w [pod/analytics-report-live-wj9r6-reclaim-workspace-pod/prepare] 2026-07-17T17:30:09.757627360-05:00 2026/07/17 22:30:09 Entrypoint initialization