[pod/analytics-report-live-5nmfd-live-build-pod/step-prepare-dockerfile] 2026-07-19T21:08:10.549566883-05:00 Wrote Dockerfile.reportcheck: [pod/analytics-report-live-5nmfd-live-build-pod/step-prepare-dockerfile] 2026-07-19T21:08:10.550532508-05:00 # Throwaway image for the live report build. Layers the checkout [pod/analytics-report-live-5nmfd-live-build-pod/step-prepare-dockerfile] 2026-07-19T21:08:10.550547468-05:00 # (analytics/ + notebooks/ + tests) over the prod runtime so the live [pod/analytics-report-live-5nmfd-live-build-pod/step-prepare-dockerfile] 2026-07-19T21:08:10.550551938-05:00 # trait suite can run with real deps + real secrets (mounted by the Job). [pod/analytics-report-live-5nmfd-live-build-pod/step-prepare-dockerfile] 2026-07-19T21:08:10.550555178-05:00 FROM registry.storeminder.ai/images/storeminder:latest [pod/analytics-report-live-5nmfd-live-build-pod/step-prepare-dockerfile] 2026-07-19T21:08:10.550558238-05:00 COPY . /prsrc [pod/analytics-report-live-5nmfd-live-build-pod/step-prepare-dockerfile] 2026-07-19T21:08:10.550561498-05:00 WORKDIR /prsrc [pod/analytics-report-live-5nmfd-live-build-pod/step-prepare-dockerfile] 2026-07-19T21:08:10.550564678-05:00 # Overlay the report package over the baked one (deps already resolved in [pod/analytics-report-live-5nmfd-live-build-pod/step-prepare-dockerfile] 2026-07-19T21:08:10.550567668-05:00 # the base), then add the test runner. Prefer the [test] extra (adds [pod/analytics-report-live-5nmfd-live-build-pod/step-prepare-dockerfile] 2026-07-19T21:08:10.550570808-05:00 # papermill/nbclient/scrapbook); fall back to bare pytest. [pod/analytics-report-live-5nmfd-live-build-pod/step-prepare-dockerfile] 2026-07-19T21:08:10.550574278-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-5nmfd-live-build-pod/step-build-pr-image] 2026-07-19T21:08:10.818020254-05:00 INFO[0000] Retrieving image manifest registry.storeminder.ai/images/storeminder:latest [pod/analytics-report-live-5nmfd-live-build-pod/step-build-pr-image] 2026-07-19T21:08:10.818062234-05:00 INFO[0000] Retrieving image registry.storeminder.ai/images/storeminder:latest from registry registry.storeminder.ai [pod/analytics-report-live-5nmfd-live-build-pod/step-build-pr-image] 2026-07-19T21:08:10.836792100-05:00 INFO[0000] Retrieving image manifest registry.storeminder.ai/images/storeminder:latest [pod/analytics-report-live-5nmfd-live-build-pod/step-build-pr-image] 2026-07-19T21:08:10.836806490-05:00 INFO[0000] Returning cached image manifest [pod/analytics-report-live-5nmfd-live-build-pod/step-build-pr-image] 2026-07-19T21:08:10.843912857-05:00 INFO[0000] Built cross stage deps: map[] [pod/analytics-report-live-5nmfd-live-build-pod/step-build-pr-image] 2026-07-19T21:08:10.843926837-05:00 INFO[0000] Retrieving image manifest registry.storeminder.ai/images/storeminder:latest [pod/analytics-report-live-5nmfd-live-build-pod/step-build-pr-image] 2026-07-19T21:08:10.843930557-05:00 INFO[0000] Returning cached image manifest [pod/analytics-report-live-5nmfd-live-build-pod/step-build-pr-image] 2026-07-19T21:08:10.843937867-05:00 INFO[0000] Retrieving image manifest registry.storeminder.ai/images/storeminder:latest [pod/analytics-report-live-5nmfd-live-build-pod/step-build-pr-image] 2026-07-19T21:08:10.843940957-05:00 INFO[0000] Returning cached image manifest [pod/analytics-report-live-5nmfd-live-build-pod/step-build-pr-image] 2026-07-19T21:08:10.844040187-05:00 INFO[0000] Executing 0 build triggers [pod/analytics-report-live-5nmfd-live-build-pod/step-build-pr-image] 2026-07-19T21:08:10.844299486-05:00 INFO[0000] Building stage 'registry.storeminder.ai/images/storeminder:latest' [idx: '0', base-idx: '-1'] [pod/analytics-report-live-5nmfd-live-build-pod/step-build-pr-image] 2026-07-19T21:08:10.900144454-05:00 INFO[0000] Checking for cached layer registry.storeminder.ai/images/cache:9c55c95bbe7816e2dcaf8187f7758828cfbe6ec60143b0f9910b7f241631d16a... [pod/analytics-report-live-5nmfd-live-build-pod/step-build-pr-image] 2026-07-19T21:08:10.919551487-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-5nmfd-live-build-pod/step-build-pr-image] 2026-07-19T21:08:10.919576677-05:00 INFO[0000] Unpacking rootfs as cmd COPY . /prsrc requires it. [pod/analytics-report-live-5nmfd-live-build-pod/step-build-pr-image] 2026-07-19T21:08:23.800983445-05:00 INFO[0013] COPY . /prsrc [pod/analytics-report-live-5nmfd-live-build-pod/step-build-pr-image] 2026-07-19T21:08:24.046467163-05:00 INFO[0013] Taking snapshot of files... [pod/analytics-report-live-5nmfd-live-build-pod/step-build-pr-image] 2026-07-19T21:08:24.347442829-05:00 INFO[0013] WORKDIR /prsrc [pod/analytics-report-live-5nmfd-live-build-pod/step-build-pr-image] 2026-07-19T21:08:24.347466968-05:00 INFO[0013] Cmd: workdir [pod/analytics-report-live-5nmfd-live-build-pod/step-build-pr-image] 2026-07-19T21:08:24.347472318-05:00 INFO[0013] Changed working directory to /prsrc [pod/analytics-report-live-5nmfd-live-build-pod/step-build-pr-image] 2026-07-19T21:08:24.347808387-05:00 INFO[0013] No files changed in this command, skipping snapshotting. [pod/analytics-report-live-5nmfd-live-build-pod/step-build-pr-image] 2026-07-19T21:08:24.347846627-05:00 INFO[0013] 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-5nmfd-live-build-pod/step-build-pr-image] 2026-07-19T21:08:24.347853067-05:00 INFO[0013] Initializing snapshotter ... [pod/analytics-report-live-5nmfd-live-build-pod/step-build-pr-image] 2026-07-19T21:08:24.347858647-05:00 INFO[0013] Taking snapshot of full filesystem... [pod/analytics-report-live-5nmfd-live-build-pod/step-build-pr-image] 2026-07-19T21:08:32.952592691-05:00 INFO[0022] Cmd: /bin/sh [pod/analytics-report-live-5nmfd-live-build-pod/step-build-pr-image] 2026-07-19T21:08:32.952730311-05:00 INFO[0022] 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-5nmfd-live-build-pod/step-build-pr-image] 2026-07-19T21:08:32.952743421-05:00 INFO[0022] 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-5nmfd-live-build-pod/step-build-pr-image] 2026-07-19T21:08:33.381425930-05:00 Obtaining file:///prsrc/analytics [pod/analytics-report-live-5nmfd-live-build-pod/step-build-pr-image] 2026-07-19T21:08:33.384730305-05:00 Installing build dependencies: started [pod/analytics-report-live-5nmfd-live-build-pod/step-build-pr-image] 2026-07-19T21:08:36.109263008-05:00 Installing build dependencies: finished with status 'done' [pod/analytics-report-live-5nmfd-live-build-pod/step-build-pr-image] 2026-07-19T21:08:36.110242254-05:00 Checking if build backend supports build_editable: started [pod/analytics-report-live-5nmfd-live-build-pod/step-build-pr-image] 2026-07-19T21:08:36.279879851-05:00 Checking if build backend supports build_editable: finished with status 'done' [pod/analytics-report-live-5nmfd-live-build-pod/step-build-pr-image] 2026-07-19T21:08:36.281464273-05:00 Getting requirements to build editable: started [pod/analytics-report-live-5nmfd-live-build-pod/step-build-pr-image] 2026-07-19T21:08:36.502148858-05:00 Getting requirements to build editable: finished with status 'done' [pod/analytics-report-live-5nmfd-live-build-pod/step-build-pr-image] 2026-07-19T21:08:36.503443132-05:00 Preparing editable metadata (pyproject.toml): started [pod/analytics-report-live-5nmfd-live-build-pod/step-build-pr-image] 2026-07-19T21:08:36.731940971-05:00 Preparing editable metadata (pyproject.toml): finished with status 'done' [pod/analytics-report-live-5nmfd-live-build-pod/step-build-pr-image] 2026-07-19T21:08:36.780321420-05:00 Building wheels for collected packages: storeminder [pod/analytics-report-live-5nmfd-live-build-pod/step-build-pr-image] 2026-07-19T21:08:36.781630554-05:00 Building editable for storeminder (pyproject.toml): started [pod/analytics-report-live-5nmfd-live-build-pod/step-build-pr-image] 2026-07-19T21:08:37.036270134-05:00 Building editable for storeminder (pyproject.toml): finished with status 'done' [pod/analytics-report-live-5nmfd-live-build-pod/step-build-pr-image] 2026-07-19T21:08:37.037232239-05:00 Created wheel for storeminder: filename=storeminder-0.1.0-0.editable-py3-none-any.whl size=2011 sha256=714627f8cd869aa912e60ee17e0ac83615f9576eae579b2c246692d7b6712c2e [pod/analytics-report-live-5nmfd-live-build-pod/step-build-pr-image] 2026-07-19T21:08:37.037519998-05:00 Stored in directory: /tmp/pip-ephem-wheel-cache-lpqlptsv/wheels/3d/79/a1/5b9945b9b299ef8e95d41afe8b877f821e7a9e81cca81ac5fa [pod/analytics-report-live-5nmfd-live-build-pod/step-build-pr-image] 2026-07-19T21:08:37.040357855-05:00 Successfully built storeminder [pod/analytics-report-live-5nmfd-live-build-pod/step-build-pr-image] 2026-07-19T21:08:37.040613324-05:00 Installing collected packages: storeminder [pod/analytics-report-live-5nmfd-live-build-pod/step-build-pr-image] 2026-07-19T21:08:37.040764743-05:00 Attempting uninstall: storeminder [pod/analytics-report-live-5nmfd-live-build-pod/step-build-pr-image] 2026-07-19T21:08:37.087586290-05:00 Found existing installation: storeminder 0.1.0 [pod/analytics-report-live-5nmfd-live-build-pod/step-build-pr-image] 2026-07-19T21:08:37.096091881-05:00 Uninstalling storeminder-0.1.0: [pod/analytics-report-live-5nmfd-live-build-pod/step-build-pr-image] 2026-07-19T21:08:37.098498120-05:00 Successfully uninstalled storeminder-0.1.0 [pod/analytics-report-live-5nmfd-live-build-pod/step-build-pr-image] 2026-07-19T21:08:37.186508089-05:00 Successfully installed storeminder-0.1.0 [pod/analytics-report-live-5nmfd-live-build-pod/step-build-pr-image] 2026-07-19T21:08:37.186783367-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-5nmfd-live-build-pod/step-build-pr-image] 2026-07-19T21:08:37.352266703-05:00 [pod/analytics-report-live-5nmfd-live-build-pod/step-build-pr-image] 2026-07-19T21:08:37.352318133-05:00 [notice] A new release of pip is available: 24.0 -> 26.1.2 [pod/analytics-report-live-5nmfd-live-build-pod/step-build-pr-image] 2026-07-19T21:08:37.352326473-05:00 [notice] To update, run: pip install --upgrade pip [pod/analytics-report-live-5nmfd-live-build-pod/step-build-pr-image] 2026-07-19T21:08:37.960837958-05:00 Obtaining file:///prsrc/analytics [pod/analytics-report-live-5nmfd-live-build-pod/step-build-pr-image] 2026-07-19T21:08:37.963394447-05:00 Installing build dependencies: started [pod/analytics-report-live-5nmfd-live-build-pod/step-build-pr-image] 2026-07-19T21:08:40.809082371-05:00 Installing build dependencies: finished with status 'done' [pod/analytics-report-live-5nmfd-live-build-pod/step-build-pr-image] 2026-07-19T21:08:40.809965897-05:00 Checking if build backend supports build_editable: started [pod/analytics-report-live-5nmfd-live-build-pod/step-build-pr-image] 2026-07-19T21:08:40.959273576-05:00 Checking if build backend supports build_editable: finished with status 'done' [pod/analytics-report-live-5nmfd-live-build-pod/step-build-pr-image] 2026-07-19T21:08:40.960666259-05:00 Getting requirements to build editable: started [pod/analytics-report-live-5nmfd-live-build-pod/step-build-pr-image] 2026-07-19T21:08:41.147040998-05:00 Getting requirements to build editable: finished with status 'done' [pod/analytics-report-live-5nmfd-live-build-pod/step-build-pr-image] 2026-07-19T21:08:41.148552091-05:00 Preparing editable metadata (pyproject.toml): started [pod/analytics-report-live-5nmfd-live-build-pod/step-build-pr-image] 2026-07-19T21:08:41.340132046-05:00 Preparing editable metadata (pyproject.toml): finished with status 'done' [pod/analytics-report-live-5nmfd-live-build-pod/step-build-pr-image] 2026-07-19T21:08:41.421363565-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-5nmfd-live-build-pod/step-build-pr-image] 2026-07-19T21:08:41.423302126-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-5nmfd-live-build-pod/step-build-pr-image] 2026-07-19T21:08:41.424766400-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-5nmfd-live-build-pod/step-build-pr-image] 2026-07-19T21:08:41.425661946-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-5nmfd-live-build-pod/step-build-pr-image] 2026-07-19T21:08:41.426693131-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-5nmfd-live-build-pod/step-build-pr-image] 2026-07-19T21:08:41.427922045-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-5nmfd-live-build-pod/step-build-pr-image] 2026-07-19T21:08:41.429698707-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-5nmfd-live-build-pod/step-build-pr-image] 2026-07-19T21:08:41.430543893-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-5nmfd-live-build-pod/step-build-pr-image] 2026-07-19T21:08:41.657707606-05:00 Collecting pytest>=7 (from storeminder==0.1.0) [pod/analytics-report-live-5nmfd-live-build-pod/step-build-pr-image] 2026-07-19T21:08:41.728084574-05:00 Downloading pytest-9.1.1-py3-none-any.whl.metadata (7.6 kB) [pod/analytics-report-live-5nmfd-live-build-pod/step-build-pr-image] 2026-07-19T21:08:41.742404879-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-5nmfd-live-build-pod/step-build-pr-image] 2026-07-19T21:08:41.743330095-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-5nmfd-live-build-pod/step-build-pr-image] 2026-07-19T21:08:41.744323550-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-5nmfd-live-build-pod/step-build-pr-image] 2026-07-19T21:08:41.745312806-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-5nmfd-live-build-pod/step-build-pr-image] 2026-07-19T21:08:41.746134062-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-5nmfd-live-build-pod/step-build-pr-image] 2026-07-19T21:08:41.748896189-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-5nmfd-live-build-pod/step-build-pr-image] 2026-07-19T21:08:41.749549856-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-5nmfd-live-build-pod/step-build-pr-image] 2026-07-19T21:08:41.750463732-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-5nmfd-live-build-pod/step-build-pr-image] 2026-07-19T21:08:41.755453519-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-5nmfd-live-build-pod/step-build-pr-image] 2026-07-19T21:08:41.756442255-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-5nmfd-live-build-pod/step-build-pr-image] 2026-07-19T21:08:41.757420960-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-5nmfd-live-build-pod/step-build-pr-image] 2026-07-19T21:08:41.760934224-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-5nmfd-live-build-pod/step-build-pr-image] 2026-07-19T21:08:41.813052066-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-5nmfd-live-build-pod/step-build-pr-image] 2026-07-19T21:08:41.862655340-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-5nmfd-live-build-pod/step-build-pr-image] 2026-07-19T21:08:41.864126953-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-5nmfd-live-build-pod/step-build-pr-image] 2026-07-19T21:08:41.907702944-05:00 Collecting iniconfig>=1.0.1 (from pytest>=7->storeminder==0.1.0) [pod/analytics-report-live-5nmfd-live-build-pod/step-build-pr-image] 2026-07-19T21:08:41.927012116-05:00 Downloading iniconfig-2.3.0-py3-none-any.whl.metadata (2.5 kB) [pod/analytics-report-live-5nmfd-live-build-pod/step-build-pr-image] 2026-07-19T21:08:41.930179511-05:00 Requirement already satisfied: packaging>=22 in /usr/local/lib/python3.11/site-packages (from pytest>=7->storeminder==0.1.0) (25.0) [pod/analytics-report-live-5nmfd-live-build-pod/step-build-pr-image] 2026-07-19T21:08:41.973371774-05:00 Collecting pluggy<2,>=1.5 (from pytest>=7->storeminder==0.1.0) [pod/analytics-report-live-5nmfd-live-build-pod/step-build-pr-image] 2026-07-19T21:08:41.991374042-05:00 Downloading pluggy-1.6.0-py3-none-any.whl.metadata (4.8 kB) [pod/analytics-report-live-5nmfd-live-build-pod/step-build-pr-image] 2026-07-19T21:08:41.994654637-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-5nmfd-live-build-pod/step-build-pr-image] 2026-07-19T21:08:42.006818331-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-5nmfd-live-build-pod/step-build-pr-image] 2026-07-19T21:08:42.008183645-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-5nmfd-live-build-pod/step-build-pr-image] 2026-07-19T21:08:42.009462479-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-5nmfd-live-build-pod/step-build-pr-image] 2026-07-19T21:08:42.010567194-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-5nmfd-live-build-pod/step-build-pr-image] 2026-07-19T21:08:42.087875321-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-5nmfd-live-build-pod/step-build-pr-image] 2026-07-19T21:08:42.098430903-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-5nmfd-live-build-pod/step-build-pr-image] 2026-07-19T21:08:42.136859327-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-5nmfd-live-build-pod/step-build-pr-image] 2026-07-19T21:08:42.138187181-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-5nmfd-live-build-pod/step-build-pr-image] 2026-07-19T21:08:42.139947643-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-5nmfd-live-build-pod/step-build-pr-image] 2026-07-19T21:08:42.157485093-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-5nmfd-live-build-pod/step-build-pr-image] 2026-07-19T21:08:42.238023655-05:00 Downloading pytest-9.1.1-py3-none-any.whl (386 kB) [pod/analytics-report-live-5nmfd-live-build-pod/step-build-pr-image] 2026-07-19T21:08:42.302682779-05:00 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 386.5/386.5 kB 6.2 MB/s eta 0:00:00 [pod/analytics-report-live-5nmfd-live-build-pod/step-build-pr-image] 2026-07-19T21:08:42.321647873-05:00 Downloading iniconfig-2.3.0-py3-none-any.whl (7.5 kB) [pod/analytics-report-live-5nmfd-live-build-pod/step-build-pr-image] 2026-07-19T21:08:42.339489701-05:00 Downloading pluggy-1.6.0-py3-none-any.whl (20 kB) [pod/analytics-report-live-5nmfd-live-build-pod/step-build-pr-image] 2026-07-19T21:08:42.345014656-05:00 Checking if build backend supports build_editable: started [pod/analytics-report-live-5nmfd-live-build-pod/step-build-pr-image] 2026-07-19T21:08:42.490139503-05:00 Checking if build backend supports build_editable: finished with status 'done' [pod/analytics-report-live-5nmfd-live-build-pod/step-build-pr-image] 2026-07-19T21:08:42.490814090-05:00 Building wheels for collected packages: storeminder [pod/analytics-report-live-5nmfd-live-build-pod/step-build-pr-image] 2026-07-19T21:08:42.491956884-05:00 Building editable for storeminder (pyproject.toml): started [pod/analytics-report-live-5nmfd-live-build-pod/step-build-pr-image] 2026-07-19T21:08:42.774727562-05:00 Building editable for storeminder (pyproject.toml): finished with status 'done' [pod/analytics-report-live-5nmfd-live-build-pod/step-build-pr-image] 2026-07-19T21:08:42.775715288-05:00 Created wheel for storeminder: filename=storeminder-0.1.0-0.editable-py3-none-any.whl size=2011 sha256=54f91f0a4e21e7e5d93dcae9b186977dba648f9cd9aa3ee3e0f750e9e245dcc3 [pod/analytics-report-live-5nmfd-live-build-pod/step-build-pr-image] 2026-07-19T21:08:42.775946967-05:00 Stored in directory: /tmp/pip-ephem-wheel-cache-49yy2rpa/wheels/3d/79/a1/5b9945b9b299ef8e95d41afe8b877f821e7a9e81cca81ac5fa [pod/analytics-report-live-5nmfd-live-build-pod/step-build-pr-image] 2026-07-19T21:08:42.778641754-05:00 Successfully built storeminder [pod/analytics-report-live-5nmfd-live-build-pod/step-build-pr-image] 2026-07-19T21:08:44.014730014-05:00 Installing collected packages: pluggy, iniconfig, pytest, storeminder [pod/analytics-report-live-5nmfd-live-build-pod/step-build-pr-image] 2026-07-19T21:08:44.367061513-05:00 Attempting uninstall: storeminder [pod/analytics-report-live-5nmfd-live-build-pod/step-build-pr-image] 2026-07-19T21:08:44.434458304-05:00 Found existing installation: storeminder 0.1.0 [pod/analytics-report-live-5nmfd-live-build-pod/step-build-pr-image] 2026-07-19T21:08:44.436627075-05:00 Uninstalling storeminder-0.1.0: [pod/analytics-report-live-5nmfd-live-build-pod/step-build-pr-image] 2026-07-19T21:08:44.758245304-05:00 Successfully uninstalled storeminder-0.1.0 [pod/analytics-report-live-5nmfd-live-build-pod/step-build-pr-image] 2026-07-19T21:08:45.083845424-05:00 Successfully installed iniconfig-2.3.0 pluggy-1.6.0 pytest-9.1.1 storeminder-0.1.0 [pod/analytics-report-live-5nmfd-live-build-pod/step-build-pr-image] 2026-07-19T21:08:45.084276482-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-5nmfd-live-build-pod/step-build-pr-image] 2026-07-19T21:08:45.233573279-05:00 [pod/analytics-report-live-5nmfd-live-build-pod/step-build-pr-image] 2026-07-19T21:08:45.233613759-05:00 [notice] A new release of pip is available: 24.0 -> 26.1.2 [pod/analytics-report-live-5nmfd-live-build-pod/step-build-pr-image] 2026-07-19T21:08:45.233623119-05:00 [notice] To update, run: pip install --upgrade pip [pod/analytics-report-live-5nmfd-live-build-pod/step-build-pr-image] 2026-07-19T21:08:45.468178566-05:00 INFO[0034] Taking snapshot of full filesystem... [pod/analytics-report-live-5nmfd-live-build-pod/step-build-pr-image] 2026-07-19T21:08:48.557653049-05:00 INFO[0037] Pushing layer registry.storeminder.ai/images/cache:9c55c95bbe7816e2dcaf8187f7758828cfbe6ec60143b0f9910b7f241631d16a to cache now [pod/analytics-report-live-5nmfd-live-build-pod/step-build-pr-image] 2026-07-19T21:08:48.557939018-05:00 INFO[0037] Pushing image to registry.storeminder.ai/images/cache:9c55c95bbe7816e2dcaf8187f7758828cfbe6ec60143b0f9910b7f241631d16a [pod/analytics-report-live-5nmfd-live-build-pod/step-build-pr-image] 2026-07-19T21:08:48.710042451-05:00 INFO[0037] Pushed registry.storeminder.ai/images/cache@sha256:c88398cbe5b7a781d9f6bebd53b4ba6030ab2a3ac45a5135149687951b4c6c45 [pod/analytics-report-live-5nmfd-live-build-pod/step-build-pr-image] 2026-07-19T21:08:48.711092376-05:00 INFO[0037] Pushing image to registry.storeminder.ai/images/storeminder-report-live:338a327d5be1ca6243b59ead7ef8be2a33ec8148 [pod/analytics-report-live-5nmfd-live-build-pod/step-build-pr-image] 2026-07-19T21:08:48.914146326-05:00 INFO[0038] Pushed registry.storeminder.ai/images/storeminder-report-live@sha256:245d02d24dea948639925f8a0b326e7f9a94dad7784acd9f5d9f77c701870103 [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:08:49.100291933-05:00 /tekton/scripts/script-2-h7phd: line 27: steps.build-pr-image.exitCode.path: command not found [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:08:49.235069375-05:00 job.batch/report-live-338a327 created [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:08:59.824768162-05:00 ----- live Job logs (report-live-338a327) ----- [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.143619515-05:00 Running live report trait suite (real Vertex + DB, DRY_RUN): analytics/tests/test_report_traits_live.py [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.143645614-05:00 ============================= test session starts ============================== [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.143652074-05:00 platform linux -- Python 3.11.15, pytest-9.1.1, pluggy-1.6.0 -- /usr/local/bin/python [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.143657274-05:00 cachedir: .pytest_cache [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.143665884-05:00 rootdir: /prsrc/analytics [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.143670894-05:00 configfile: pyproject.toml [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.143676694-05:00 plugins: anyio-4.14.2, langsmith-0.10.6 [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.143682144-05:00 collecting ... collected 10 items [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.143687924-05:00 [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.143693464-05:00 analytics/tests/test_report_traits_live.py::test_daily_builds_and_renders ERROR [ 10%] [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.143698834-05:00 analytics/tests/test_report_traits_live.py::test_daily_is_sendable_and_no_weekly_leak ERROR [ 20%] [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.143704224-05:00 analytics/tests/test_report_traits_live.py::test_daily_headline_labeled_total_sales ERROR [ 30%] [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.143709804-05:00 analytics/tests/test_report_traits_live.py::test_daily_sms_not_truncated ERROR [ 40%] [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.143715494-05:00 analytics/tests/test_report_traits_live.py::test_daily_artifact_bundle_written ERROR [ 50%] [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.143720694-05:00 analytics/tests/test_report_traits_live.py::test_weekly_builds_and_renders ERROR [ 60%] [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.143726214-05:00 analytics/tests/test_report_traits_live.py::test_weekly_is_sendable ERROR [ 70%] [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.143731474-05:00 analytics/tests/test_report_traits_live.py::test_weekly_headline_labeled_total_sales ERROR [ 80%] [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.143737534-05:00 analytics/tests/test_report_traits_live.py::test_weekly_sms_not_truncated ERROR [ 90%] [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.143743204-05:00 analytics/tests/test_report_traits_live.py::test_weekly_artifact_bundle_written ERROR [100%] [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.143748374-05:00 [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.143753614-05:00 ==================================== ERRORS ==================================== [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.143759264-05:00 _______________ ERROR at setup of test_daily_builds_and_renders ________________ [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.143764344-05:00 [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.143769634-05:00 @pytest.fixture(scope="module") [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.143775004-05:00 def daily_report(): [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.143780344-05:00 > return _run("daily") [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.143786234-05:00 ^^^^^^^^^^^^^ [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.143791294-05:00 [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.143796614-05:00 analytics/tests/test_report_traits_live.py:94: [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.143802264-05:00 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.143808264-05:00 analytics/tests/test_report_traits_live.py:75: in _run [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.143813534-05:00 res = fn(store, end_date=d, dry_run=True, deliver=False, clean=True) [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.143819284-05:00 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.143824654-05:00 analytics/src/storeminder/runner.py:317: in run_daily [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.143830594-05:00 return _run_report(params, clean=clean) [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.143835894-05:00 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.143841614-05:00 analytics/src/storeminder/runner.py:161: in _run_report [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.143869423-05:00 conf = manage_api.store_config(store_id) [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.143873263-05:00 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.143877233-05:00 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.143880533-05:00 [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.143884663-05:00 store_id = 'Fastime' [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.143888163-05:00 [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.143895273-05:00 def store_config(store_id: str) -> dict[str, Any] | None: [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.143899093-05:00 """The store's authoritative report config (== the legacy conf/{slug}.yaml). [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.143902813-05:00 [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.143906683-05:00 Returns the config dict on 200, or None on a 404 (unknown store — the caller [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.143910403-05:00 turns this into an explicit error). Raises ManageApiError when the base URL is [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.143914143-05:00 unset or the manage app is unreachable / returns any other status: config is [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.143917823-05:00 Django-only, so we fail loud rather than run an unconfigured store. [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.143921843-05:00 """ [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.143925733-05:00 base = _require_base() [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.143929593-05:00 try: [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.143933363-05:00 import requests [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.143937313-05:00 r = requests.get(f"{base}/api/stores/{store_id}/config/", [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.143941093-05:00 headers=_headers(), timeout=10) [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.143944833-05:00 except Exception as e: # transport error → loud [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.143948953-05:00 raise ManageApiError( [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.143952843-05:00 f"manage_api store_config({store_id}) transport error: " [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.143956443-05:00 f"{type(e).__name__}: {e}") from e [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.143960023-05:00 if r.status_code == 404: [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.143963853-05:00 return None [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.143968063-05:00 if r.status_code != 200: [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.143971783-05:00 > raise ManageApiError( [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.143975693-05:00 f"manage_api store_config({store_id}) returned HTTP {r.status_code}") [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.143980643-05:00 E storeminder.manage_api.ManageApiError: manage_api store_config(Fastime) returned HTTP 400 [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.143984243-05:00 [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.143987973-05:00 analytics/src/storeminder/manage_api.py:93: ManageApiError [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.143991723-05:00 _________ ERROR at setup of test_daily_is_sendable_and_no_weekly_leak __________ [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.143995263-05:00 [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.143999143-05:00 @pytest.fixture(scope="module") [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.144002713-05:00 def daily_report(): [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.144006483-05:00 > return _run("daily") [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.144010313-05:00 ^^^^^^^^^^^^^ [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.144014113-05:00 [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.144017783-05:00 analytics/tests/test_report_traits_live.py:94: [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.144021503-05:00 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.144025343-05:00 analytics/tests/test_report_traits_live.py:75: in _run [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.144029363-05:00 res = fn(store, end_date=d, dry_run=True, deliver=False, clean=True) [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.144039413-05:00 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.144043403-05:00 analytics/src/storeminder/runner.py:317: in run_daily [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.144047623-05:00 return _run_report(params, clean=clean) [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.144058422-05:00 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.144062162-05:00 analytics/src/storeminder/runner.py:161: in _run_report [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.144065692-05:00 conf = manage_api.store_config(store_id) [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.144069522-05:00 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.144073612-05:00 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.144076822-05:00 [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.144080432-05:00 store_id = 'Fastime' [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.144083672-05:00 [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.144087022-05:00 def store_config(store_id: str) -> dict[str, Any] | None: [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.144090542-05:00 """The store's authoritative report config (== the legacy conf/{slug}.yaml). [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.144093902-05:00 [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.144098132-05:00 Returns the config dict on 200, or None on a 404 (unknown store — the caller [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.144102032-05:00 turns this into an explicit error). Raises ManageApiError when the base URL is [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.144105932-05:00 unset or the manage app is unreachable / returns any other status: config is [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.144109912-05:00 Django-only, so we fail loud rather than run an unconfigured store. [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.144113752-05:00 """ [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.144117312-05:00 base = _require_base() [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.144121342-05:00 try: [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.144125442-05:00 import requests [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.144129222-05:00 r = requests.get(f"{base}/api/stores/{store_id}/config/", [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.144132762-05:00 headers=_headers(), timeout=10) [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.144138252-05:00 except Exception as e: # transport error → loud [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.144142202-05:00 raise ManageApiError( [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.144146152-05:00 f"manage_api store_config({store_id}) transport error: " [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.144149992-05:00 f"{type(e).__name__}: {e}") from e [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.144153772-05:00 if r.status_code == 404: [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.144157522-05:00 return None [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.144161402-05:00 if r.status_code != 200: [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.144165122-05:00 > raise ManageApiError( [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.144169032-05:00 f"manage_api store_config({store_id}) returned HTTP {r.status_code}") [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.144172842-05:00 E storeminder.manage_api.ManageApiError: manage_api store_config(Fastime) returned HTTP 400 [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.144176362-05:00 [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.144180082-05:00 analytics/src/storeminder/manage_api.py:93: ManageApiError [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.144183842-05:00 __________ ERROR at setup of test_daily_headline_labeled_total_sales ___________ [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.144187282-05:00 [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.144191032-05:00 @pytest.fixture(scope="module") [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.144194692-05:00 def daily_report(): [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.144198232-05:00 > return _run("daily") [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.144201942-05:00 ^^^^^^^^^^^^^ [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.144205522-05:00 [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.144209322-05:00 analytics/tests/test_report_traits_live.py:94: [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.144213462-05:00 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.144217182-05:00 analytics/tests/test_report_traits_live.py:75: in _run [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.144221032-05:00 res = fn(store, end_date=d, dry_run=True, deliver=False, clean=True) [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.144224682-05:00 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.144235152-05:00 analytics/src/storeminder/runner.py:317: in run_daily [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.144238922-05:00 return _run_report(params, clean=clean) [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.144242422-05:00 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.144246702-05:00 analytics/src/storeminder/runner.py:161: in _run_report [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.144251272-05:00 conf = manage_api.store_config(store_id) [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.144254812-05:00 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.144258952-05:00 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.144262382-05:00 [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.144265971-05:00 store_id = 'Fastime' [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.144269501-05:00 [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.144273671-05:00 def store_config(store_id: str) -> dict[str, Any] | None: [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.144277651-05:00 """The store's authoritative report config (== the legacy conf/{slug}.yaml). [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.144281501-05:00 [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.144285651-05:00 Returns the config dict on 200, or None on a 404 (unknown store — the caller [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.144289331-05:00 turns this into an explicit error). Raises ManageApiError when the base URL is [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.144293351-05:00 unset or the manage app is unreachable / returns any other status: config is [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.144297291-05:00 Django-only, so we fail loud rather than run an unconfigured store. [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.144300951-05:00 """ [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.144304841-05:00 base = _require_base() [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.144308661-05:00 try: [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.144312191-05:00 import requests [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.144315811-05:00 r = requests.get(f"{base}/api/stores/{store_id}/config/", [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.144319521-05:00 headers=_headers(), timeout=10) [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.144323251-05:00 except Exception as e: # transport error → loud [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.144326881-05:00 raise ManageApiError( [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.144330531-05:00 f"manage_api store_config({store_id}) transport error: " [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.144334341-05:00 f"{type(e).__name__}: {e}") from e [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.144372111-05:00 if r.status_code == 404: [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.144378561-05:00 return None [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.144382241-05:00 if r.status_code != 200: [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.144385861-05:00 > raise ManageApiError( [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.144389681-05:00 f"manage_api store_config({store_id}) returned HTTP {r.status_code}") [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.144393391-05:00 E storeminder.manage_api.ManageApiError: manage_api store_config(Fastime) returned HTTP 400 [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.144396791-05:00 [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.144400531-05:00 analytics/src/storeminder/manage_api.py:93: ManageApiError [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.144404191-05:00 ________________ ERROR at setup of test_daily_sms_not_truncated ________________ [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.144407661-05:00 [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.144411411-05:00 @pytest.fixture(scope="module") [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.144419541-05:00 def daily_report(): [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.144423191-05:00 > return _run("daily") [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.144426921-05:00 ^^^^^^^^^^^^^ [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.144430521-05:00 [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.144434201-05:00 analytics/tests/test_report_traits_live.py:94: [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.144437821-05:00 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.144449371-05:00 analytics/tests/test_report_traits_live.py:75: in _run [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.144453161-05:00 res = fn(store, end_date=d, dry_run=True, deliver=False, clean=True) [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.144456771-05:00 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.144461001-05:00 analytics/src/storeminder/runner.py:317: in run_daily [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.144464711-05:00 return _run_report(params, clean=clean) [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.144468491-05:00 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.144472091-05:00 analytics/src/storeminder/runner.py:161: in _run_report [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.144476681-05:00 conf = manage_api.store_config(store_id) [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.144480431-05:00 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.144484240-05:00 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.144487740-05:00 [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.144491360-05:00 store_id = 'Fastime' [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.144494990-05:00 [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.144498770-05:00 def store_config(store_id: str) -> dict[str, Any] | None: [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.144502280-05:00 """The store's authoritative report config (== the legacy conf/{slug}.yaml). [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.144506020-05:00 [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.144509650-05:00 Returns the config dict on 200, or None on a 404 (unknown store — the caller [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.144513170-05:00 turns this into an explicit error). Raises ManageApiError when the base URL is [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.144516620-05:00 unset or the manage app is unreachable / returns any other status: config is [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.144520060-05:00 Django-only, so we fail loud rather than run an unconfigured store. [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.144523720-05:00 """ [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.144527150-05:00 base = _require_base() [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.144531260-05:00 try: [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.144535040-05:00 import requests [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.144538870-05:00 r = requests.get(f"{base}/api/stores/{store_id}/config/", [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.144573770-05:00 headers=_headers(), timeout=10) [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.144577380-05:00 except Exception as e: # transport error → loud [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.144580690-05:00 raise ManageApiError( [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.144584600-05:00 f"manage_api store_config({store_id}) transport error: " [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.144588450-05:00 f"{type(e).__name__}: {e}") from e [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.144592410-05:00 if r.status_code == 404: [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.144596120-05:00 return None [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.144599870-05:00 if r.status_code != 200: [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.144603730-05:00 > raise ManageApiError( [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.144607470-05:00 f"manage_api store_config({store_id}) returned HTTP {r.status_code}") [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.144611200-05:00 E storeminder.manage_api.ManageApiError: manage_api store_config(Fastime) returned HTTP 400 [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.144614710-05:00 [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.144618370-05:00 analytics/src/storeminder/manage_api.py:93: ManageApiError [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.144622010-05:00 _____________ ERROR at setup of test_daily_artifact_bundle_written _____________ [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.144625650-05:00 [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.144632550-05:00 @pytest.fixture(scope="module") [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.144636400-05:00 def daily_report(): [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.144640340-05:00 > return _run("daily") [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.144643770-05:00 ^^^^^^^^^^^^^ [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.144647210-05:00 [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.144650750-05:00 analytics/tests/test_report_traits_live.py:94: [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.144660990-05:00 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.144665530-05:00 analytics/tests/test_report_traits_live.py:75: in _run [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.144669430-05:00 res = fn(store, end_date=d, dry_run=True, deliver=False, clean=True) [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.144673320-05:00 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.144677000-05:00 analytics/src/storeminder/runner.py:317: in run_daily [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.144680710-05:00 return _run_report(params, clean=clean) [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.144684440-05:00 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.144688830-05:00 analytics/src/storeminder/runner.py:161: in _run_report [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.144692550-05:00 conf = manage_api.store_config(store_id) [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.144696160-05:00 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.144699960-05:00 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.144703440-05:00 [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.144707179-05:00 store_id = 'Fastime' [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.144710669-05:00 [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.144714329-05:00 def store_config(store_id: str) -> dict[str, Any] | None: [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.144718269-05:00 """The store's authoritative report config (== the legacy conf/{slug}.yaml). [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.144722079-05:00 [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.144725779-05:00 Returns the config dict on 200, or None on a 404 (unknown store — the caller [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.144730039-05:00 turns this into an explicit error). Raises ManageApiError when the base URL is [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.144733979-05:00 unset or the manage app is unreachable / returns any other status: config is [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.144737759-05:00 Django-only, so we fail loud rather than run an unconfigured store. [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.144741579-05:00 """ [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.144745329-05:00 base = _require_base() [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.144749469-05:00 try: [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.144753479-05:00 import requests [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.144757369-05:00 r = requests.get(f"{base}/api/stores/{store_id}/config/", [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.144761059-05:00 headers=_headers(), timeout=10) [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.144765209-05:00 except Exception as e: # transport error → loud [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.144768919-05:00 raise ManageApiError( [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.144773209-05:00 f"manage_api store_config({store_id}) transport error: " [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.144776899-05:00 f"{type(e).__name__}: {e}") from e [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.144780649-05:00 if r.status_code == 404: [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.144784289-05:00 return None [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.144787949-05:00 if r.status_code != 200: [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.144792449-05:00 > raise ManageApiError( [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.144800589-05:00 f"manage_api store_config({store_id}) returned HTTP {r.status_code}") [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.144804499-05:00 E storeminder.manage_api.ManageApiError: manage_api store_config(Fastime) returned HTTP 400 [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.144808089-05:00 [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.144811809-05:00 analytics/src/storeminder/manage_api.py:93: ManageApiError [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.144815629-05:00 _______________ ERROR at setup of test_weekly_builds_and_renders _______________ [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.144818929-05:00 [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.144823289-05:00 @pytest.fixture(scope="module") [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.144827379-05:00 def weekly_report(): [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.144837459-05:00 > return _run("weekly") [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.144841099-05:00 ^^^^^^^^^^^^^^ [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.144844589-05:00 [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.144848399-05:00 analytics/tests/test_report_traits_live.py:99: [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.144852269-05:00 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.144855819-05:00 analytics/tests/test_report_traits_live.py:75: in _run [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.144859689-05:00 res = fn(store, end_date=d, dry_run=True, deliver=False, clean=True) [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.144863469-05:00 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.144867369-05:00 analytics/src/storeminder/runner.py:336: in run_weekly [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.144871179-05:00 return _run_report(params, clean=clean) [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.144874749-05:00 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.144878769-05:00 analytics/src/storeminder/runner.py:161: in _run_report [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.144882379-05:00 conf = manage_api.store_config(store_id) [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.144886019-05:00 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.144889869-05:00 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.144893399-05:00 [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.144897209-05:00 store_id = 'Fastime' [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.144900589-05:00 [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.144904609-05:00 def store_config(store_id: str) -> dict[str, Any] | None: [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.144909069-05:00 """The store's authoritative report config (== the legacy conf/{slug}.yaml). [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.144912709-05:00 [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.144917139-05:00 Returns the config dict on 200, or None on a 404 (unknown store — the caller [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.144920819-05:00 turns this into an explicit error). Raises ManageApiError when the base URL is [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.144924519-05:00 unset or the manage app is unreachable / returns any other status: config is [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.144928158-05:00 Django-only, so we fail loud rather than run an unconfigured store. [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.144931808-05:00 """ [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.144935448-05:00 base = _require_base() [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.144938808-05:00 try: [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.144942168-05:00 import requests [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.144945688-05:00 r = requests.get(f"{base}/api/stores/{store_id}/config/", [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.144949178-05:00 headers=_headers(), timeout=10) [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.144952668-05:00 except Exception as e: # transport error → loud [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.144956098-05:00 raise ManageApiError( [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.144959478-05:00 f"manage_api store_config({store_id}) transport error: " [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.144963108-05:00 f"{type(e).__name__}: {e}") from e [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.144966678-05:00 if r.status_code == 404: [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.144970378-05:00 return None [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.144974248-05:00 if r.status_code != 200: [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.144977818-05:00 > raise ManageApiError( [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.144981368-05:00 f"manage_api store_config({store_id}) returned HTTP {r.status_code}") [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.144985058-05:00 E storeminder.manage_api.ManageApiError: manage_api store_config(Fastime) returned HTTP 400 [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.144988528-05:00 [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.144992128-05:00 analytics/src/storeminder/manage_api.py:93: ManageApiError [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.144995728-05:00 __________________ ERROR at setup of test_weekly_is_sendable ___________________ [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.145005268-05:00 [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.145008998-05:00 @pytest.fixture(scope="module") [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.145012648-05:00 def weekly_report(): [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.145016548-05:00 > return _run("weekly") [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.145020178-05:00 ^^^^^^^^^^^^^^ [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.145023638-05:00 [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.145027388-05:00 analytics/tests/test_report_traits_live.py:99: [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.145031028-05:00 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.145034728-05:00 analytics/tests/test_report_traits_live.py:75: in _run [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.145038378-05:00 res = fn(store, end_date=d, dry_run=True, deliver=False, clean=True) [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.145042068-05:00 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.145045758-05:00 analytics/src/storeminder/runner.py:336: in run_weekly [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.145049568-05:00 return _run_report(params, clean=clean) [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.145053278-05:00 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.145056808-05:00 analytics/src/storeminder/runner.py:161: in _run_report [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.145060448-05:00 conf = manage_api.store_config(store_id) [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.145064008-05:00 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.145067898-05:00 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.145071418-05:00 [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.145075018-05:00 store_id = 'Fastime' [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.145078688-05:00 [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.145082328-05:00 def store_config(store_id: str) -> dict[str, Any] | None: [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.145085938-05:00 """The store's authoritative report config (== the legacy conf/{slug}.yaml). [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.145089668-05:00 [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.145093508-05:00 Returns the config dict on 200, or None on a 404 (unknown store — the caller [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.145097138-05:00 turns this into an explicit error). Raises ManageApiError when the base URL is [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.145102928-05:00 unset or the manage app is unreachable / returns any other status: config is [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.145106588-05:00 Django-only, so we fail loud rather than run an unconfigured store. [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.145110558-05:00 """ [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.145114338-05:00 base = _require_base() [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.145117868-05:00 try: [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.145121478-05:00 import requests [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.145125118-05:00 r = requests.get(f"{base}/api/stores/{store_id}/config/", [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.145129118-05:00 headers=_headers(), timeout=10) [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.145136848-05:00 except Exception as e: # transport error → loud [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.145140998-05:00 raise ManageApiError( [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.145144858-05:00 f"manage_api store_config({store_id}) transport error: " [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.145149497-05:00 f"{type(e).__name__}: {e}") from e [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.145153097-05:00 if r.status_code == 404: [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.145156957-05:00 return None [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.145160637-05:00 if r.status_code != 200: [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.145164357-05:00 > raise ManageApiError( [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.145168347-05:00 f"manage_api store_config({store_id}) returned HTTP {r.status_code}") [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.145172077-05:00 E storeminder.manage_api.ManageApiError: manage_api store_config(Fastime) returned HTTP 400 [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.145181517-05:00 [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.145185817-05:00 analytics/src/storeminder/manage_api.py:93: ManageApiError [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.145189557-05:00 __________ ERROR at setup of test_weekly_headline_labeled_total_sales __________ [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.145193127-05:00 [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.145196777-05:00 @pytest.fixture(scope="module") [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.145200347-05:00 def weekly_report(): [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.145203947-05:00 > return _run("weekly") [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.145207657-05:00 ^^^^^^^^^^^^^^ [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.145211137-05:00 [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.145214877-05:00 analytics/tests/test_report_traits_live.py:99: [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.145218577-05:00 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.145223397-05:00 analytics/tests/test_report_traits_live.py:75: in _run [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.145227247-05:00 res = fn(store, end_date=d, dry_run=True, deliver=False, clean=True) [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.145231137-05:00 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.145234707-05:00 analytics/src/storeminder/runner.py:336: in run_weekly [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.145238457-05:00 return _run_report(params, clean=clean) [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.145242147-05:00 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.145245597-05:00 analytics/src/storeminder/runner.py:161: in _run_report [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.145249257-05:00 conf = manage_api.store_config(store_id) [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.145253227-05:00 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.145256937-05:00 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.145260397-05:00 [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.145264137-05:00 store_id = 'Fastime' [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.145267637-05:00 [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.145271207-05:00 def store_config(store_id: str) -> dict[str, Any] | None: [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.145274857-05:00 """The store's authoritative report config (== the legacy conf/{slug}.yaml). [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.145278597-05:00 [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.145282437-05:00 Returns the config dict on 200, or None on a 404 (unknown store — the caller [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.145286187-05:00 turns this into an explicit error). Raises ManageApiError when the base URL is [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.145290127-05:00 unset or the manage app is unreachable / returns any other status: config is [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.145293737-05:00 Django-only, so we fail loud rather than run an unconfigured store. [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.145297427-05:00 """ [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.145301087-05:00 base = _require_base() [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.145314147-05:00 try: [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.145317857-05:00 import requests [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.145321617-05:00 r = requests.get(f"{base}/api/stores/{store_id}/config/", [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.145325277-05:00 headers=_headers(), timeout=10) [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.145329017-05:00 except Exception as e: # transport error → loud [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.145332727-05:00 raise ManageApiError( [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.145336577-05:00 f"manage_api store_config({store_id}) transport error: " [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.145350337-05:00 f"{type(e).__name__}: {e}") from e [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.145354117-05:00 if r.status_code == 404: [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.145357877-05:00 return None [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.145361567-05:00 if r.status_code != 200: [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.145365237-05:00 > raise ManageApiError( [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.145369616-05:00 f"manage_api store_config({store_id}) returned HTTP {r.status_code}") [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.145380166-05:00 E storeminder.manage_api.ManageApiError: manage_api store_config(Fastime) returned HTTP 400 [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.145383626-05:00 [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.145387256-05:00 analytics/src/storeminder/manage_api.py:93: ManageApiError [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.145390896-05:00 _______________ ERROR at setup of test_weekly_sms_not_truncated ________________ [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.145394386-05:00 [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.145398036-05:00 @pytest.fixture(scope="module") [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.145401706-05:00 def weekly_report(): [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.145405246-05:00 > return _run("weekly") [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.145408876-05:00 ^^^^^^^^^^^^^^ [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.145412646-05:00 [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.145416266-05:00 analytics/tests/test_report_traits_live.py:99: [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.145420046-05:00 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.145423936-05:00 analytics/tests/test_report_traits_live.py:75: in _run [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.145427706-05:00 res = fn(store, end_date=d, dry_run=True, deliver=False, clean=True) [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.145431396-05:00 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.145435136-05:00 analytics/src/storeminder/runner.py:336: in run_weekly [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.145438726-05:00 return _run_report(params, clean=clean) [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.145442316-05:00 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.145445976-05:00 analytics/src/storeminder/runner.py:161: in _run_report [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.145449516-05:00 conf = manage_api.store_config(store_id) [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.145453156-05:00 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.145456756-05:00 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.145460236-05:00 [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.145463986-05:00 store_id = 'Fastime' [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.145467446-05:00 [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.145471116-05:00 def store_config(store_id: str) -> dict[str, Any] | None: [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.145474606-05:00 """The store's authoritative report config (== the legacy conf/{slug}.yaml). [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.145478076-05:00 [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.145481896-05:00 Returns the config dict on 200, or None on a 404 (unknown store — the caller [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.145485486-05:00 turns this into an explicit error). Raises ManageApiError when the base URL is [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.145493776-05:00 unset or the manage app is unreachable / returns any other status: config is [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.145497336-05:00 Django-only, so we fail loud rather than run an unconfigured store. [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.145501236-05:00 """ [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.145504756-05:00 base = _require_base() [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.145508406-05:00 try: [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.145511966-05:00 import requests [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.145515716-05:00 r = requests.get(f"{base}/api/stores/{store_id}/config/", [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.145519396-05:00 headers=_headers(), timeout=10) [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.145523066-05:00 except Exception as e: # transport error → loud [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.145526616-05:00 raise ManageApiError( [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.145530236-05:00 f"manage_api store_config({store_id}) transport error: " [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.145533856-05:00 f"{type(e).__name__}: {e}") from e [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.145537496-05:00 if r.status_code == 404: [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.145541236-05:00 return None [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.145551056-05:00 if r.status_code != 200: [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.145554516-05:00 > raise ManageApiError( [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.145558326-05:00 f"manage_api store_config({store_id}) returned HTTP {r.status_code}") [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.145562316-05:00 E storeminder.manage_api.ManageApiError: manage_api store_config(Fastime) returned HTTP 400 [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.145566796-05:00 [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.145570456-05:00 analytics/src/storeminder/manage_api.py:93: ManageApiError [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.145574176-05:00 ____________ ERROR at setup of test_weekly_artifact_bundle_written _____________ [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.145577586-05:00 [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.145581135-05:00 @pytest.fixture(scope="module") [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.145584695-05:00 def weekly_report(): [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.145588365-05:00 > return _run("weekly") [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.145592025-05:00 ^^^^^^^^^^^^^^ [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.145595535-05:00 [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.145599115-05:00 analytics/tests/test_report_traits_live.py:99: [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.145602655-05:00 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.145606265-05:00 analytics/tests/test_report_traits_live.py:75: in _run [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.145611695-05:00 res = fn(store, end_date=d, dry_run=True, deliver=False, clean=True) [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.145615535-05:00 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.145619185-05:00 analytics/src/storeminder/runner.py:336: in run_weekly [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.145622955-05:00 return _run_report(params, clean=clean) [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.145626555-05:00 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.145630465-05:00 analytics/src/storeminder/runner.py:161: in _run_report [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.145634045-05:00 conf = manage_api.store_config(store_id) [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.145637585-05:00 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.145641985-05:00 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.145645515-05:00 [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.145649185-05:00 store_id = 'Fastime' [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.145652575-05:00 [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.145656065-05:00 def store_config(store_id: str) -> dict[str, Any] | None: [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.145659865-05:00 """The store's authoritative report config (== the legacy conf/{slug}.yaml). [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.145663415-05:00 [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.145667235-05:00 Returns the config dict on 200, or None on a 404 (unknown store — the caller [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.145671475-05:00 turns this into an explicit error). Raises ManageApiError when the base URL is [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.145675515-05:00 unset or the manage app is unreachable / returns any other status: config is [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.145679325-05:00 Django-only, so we fail loud rather than run an unconfigured store. [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.145683135-05:00 """ [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.145686855-05:00 base = _require_base() [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.145690705-05:00 try: [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.145694435-05:00 import requests [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.145698275-05:00 r = requests.get(f"{base}/api/stores/{store_id}/config/", [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.145701975-05:00 headers=_headers(), timeout=10) [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.145705785-05:00 except Exception as e: # transport error → loud [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.145709695-05:00 raise ManageApiError( [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.145713345-05:00 f"manage_api store_config({store_id}) transport error: " [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.145723935-05:00 f"{type(e).__name__}: {e}") from e [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.145727435-05:00 if r.status_code == 404: [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.145731755-05:00 return None [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.145735875-05:00 if r.status_code != 200: [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.145739585-05:00 > raise ManageApiError( [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.145743435-05:00 f"manage_api store_config({store_id}) returned HTTP {r.status_code}") [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.145747225-05:00 E storeminder.manage_api.ManageApiError: manage_api store_config(Fastime) returned HTTP 400 [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.145750875-05:00 [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.145754415-05:00 analytics/src/storeminder/manage_api.py:93: ManageApiError [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.145759055-05:00 --------------------- generated xml file: /tmp/traits.xml ---------------------- [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.145762935-05:00 =========================== short test summary info ============================ [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.145766725-05:00 ERROR analytics/tests/test_report_traits_live.py::test_daily_builds_and_renders [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.145770735-05:00 ERROR analytics/tests/test_report_traits_live.py::test_daily_is_sendable_and_no_weekly_leak [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.145774505-05:00 ERROR analytics/tests/test_report_traits_live.py::test_daily_headline_labeled_total_sales [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.145778285-05:00 ERROR analytics/tests/test_report_traits_live.py::test_daily_sms_not_truncated [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.145783045-05:00 ERROR analytics/tests/test_report_traits_live.py::test_daily_artifact_bundle_written [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.145786935-05:00 ERROR analytics/tests/test_report_traits_live.py::test_weekly_builds_and_renders [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.145790925-05:00 ERROR analytics/tests/test_report_traits_live.py::test_weekly_is_sendable - s... [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.145795004-05:00 ERROR analytics/tests/test_report_traits_live.py::test_weekly_headline_labeled_total_sales [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.145802784-05:00 ERROR analytics/tests/test_report_traits_live.py::test_weekly_sms_not_truncated [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.145806584-05:00 ERROR analytics/tests/test_report_traits_live.py::test_weekly_artifact_bundle_written [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.145810424-05:00 ============================== 10 errors in 0.88s ============================== [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.145814134-05:00 ===JUNIT_BEGIN=== [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.145819264-05:00 @pytest.fixture(scope="module") [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.145823674-05:00 def daily_report(): [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.145827284-05:00 > return _run("daily") [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.145830994-05:00 ^^^^^^^^^^^^^ [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.145834634-05:00 [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.145838244-05:00 analytics/tests/test_report_traits_live.py:94: [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.145842114-05:00 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.145845794-05:00 analytics/tests/test_report_traits_live.py:75: in _run [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.145849584-05:00 res = fn(store, end_date=d, dry_run=True, deliver=False, clean=True) [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.145854194-05:00 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.145857954-05:00 analytics/src/storeminder/runner.py:317: in run_daily [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.145861444-05:00 return _run_report(params, clean=clean) [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.145872114-05:00 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.145876244-05:00 analytics/src/storeminder/runner.py:161: in _run_report [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.145880164-05:00 conf = manage_api.store_config(store_id) [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.145883684-05:00 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.145887524-05:00 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.145891054-05:00 [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.145895024-05:00 store_id = 'Fastime' [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.145898564-05:00 [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.145902314-05:00 def store_config(store_id: str) -> dict[str, Any] | None: [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.145906124-05:00 """The store's authoritative report config (== the legacy conf/{slug}.yaml). [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.145909994-05:00 [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.145913714-05:00 Returns the config dict on 200, or None on a 404 (unknown store — the caller [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.145917584-05:00 turns this into an explicit error). Raises ManageApiError when the base URL is [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.145921444-05:00 unset or the manage app is unreachable / returns any other status: config is [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.145925274-05:00 Django-only, so we fail loud rather than run an unconfigured store. [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.145929104-05:00 """ [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.145932974-05:00 base = _require_base() [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.145936734-05:00 try: [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.145940494-05:00 import requests [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.145944444-05:00 r = requests.get(f"{base}/api/stores/{store_id}/config/", [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.145948084-05:00 headers=_headers(), timeout=10) [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.145951864-05:00 except Exception as e: # transport error → loud [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.145955544-05:00 raise ManageApiError( [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.145959294-05:00 f"manage_api store_config({store_id}) transport error: " [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.145963234-05:00 f"{type(e).__name__}: {e}") from e [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.145966984-05:00 if r.status_code == 404: [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.145970734-05:00 return None [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.145974544-05:00 if r.status_code != 200: [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.145978374-05:00 > raise ManageApiError( [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.145981944-05:00 f"manage_api store_config({store_id}) returned HTTP {r.status_code}") [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.145985664-05:00 E storeminder.manage_api.ManageApiError: manage_api store_config(Fastime) returned HTTP 400 [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.145989114-05:00 [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.145993534-05:00 analytics/src/storeminder/manage_api.py:93: ManageApiError@pytest.fixture(scope="module") [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.145997374-05:00 def daily_report(): [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.146000924-05:00 > return _run("daily") [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.146004573-05:00 ^^^^^^^^^^^^^ [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.146008533-05:00 [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.146012123-05:00 analytics/tests/test_report_traits_live.py:94: [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.146016393-05:00 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.146020153-05:00 analytics/tests/test_report_traits_live.py:75: in _run [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.146024003-05:00 res = fn(store, end_date=d, dry_run=True, deliver=False, clean=True) [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.146033823-05:00 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.146037493-05:00 analytics/src/storeminder/runner.py:317: in run_daily [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.146041233-05:00 return _run_report(params, clean=clean) [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.146044973-05:00 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.146048503-05:00 analytics/src/storeminder/runner.py:161: in _run_report [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.146052293-05:00 conf = manage_api.store_config(store_id) [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.146056043-05:00 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.146059903-05:00 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.146063543-05:00 [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.146067263-05:00 store_id = 'Fastime' [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.146070693-05:00 [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.146074683-05:00 def store_config(store_id: str) -> dict[str, Any] | None: [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.146082173-05:00 """The store's authoritative report config (== the legacy conf/{slug}.yaml). [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.146085923-05:00 [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.146089773-05:00 Returns the config dict on 200, or None on a 404 (unknown store — the caller [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.146093463-05:00 turns this into an explicit error). Raises ManageApiError when the base URL is [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.146097293-05:00 unset or the manage app is unreachable / returns any other status: config is [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.146100973-05:00 Django-only, so we fail loud rather than run an unconfigured store. [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.146104533-05:00 """ [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.146108233-05:00 base = _require_base() [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.146111933-05:00 try: [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.146115573-05:00 import requests [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.146119323-05:00 r = requests.get(f"{base}/api/stores/{store_id}/config/", [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.146123043-05:00 headers=_headers(), timeout=10) [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.146126683-05:00 except Exception as e: # transport error → loud [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.146130333-05:00 raise ManageApiError( [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.146134083-05:00 f"manage_api store_config({store_id}) transport error: " [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.146137673-05:00 f"{type(e).__name__}: {e}") from e [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.146141483-05:00 if r.status_code == 404: [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.146145113-05:00 return None [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.146148843-05:00 if r.status_code != 200: [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.146152453-05:00 > raise ManageApiError( [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.146156153-05:00 f"manage_api store_config({store_id}) returned HTTP {r.status_code}") [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.146161233-05:00 E storeminder.manage_api.ManageApiError: manage_api store_config(Fastime) returned HTTP 400 [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.146164553-05:00 [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.146168753-05:00 analytics/src/storeminder/manage_api.py:93: ManageApiError@pytest.fixture(scope="module") [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.146172493-05:00 def daily_report(): [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.146176033-05:00 > return _run("daily") [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.146179673-05:00 ^^^^^^^^^^^^^ [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.146183093-05:00 [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.146186833-05:00 analytics/tests/test_report_traits_live.py:94: [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.146196713-05:00 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.146200363-05:00 analytics/tests/test_report_traits_live.py:75: in _run [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.146203973-05:00 res = fn(store, end_date=d, dry_run=True, deliver=False, clean=True) [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.146207533-05:00 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.146211483-05:00 analytics/src/storeminder/runner.py:317: in run_daily [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.146215442-05:00 return _run_report(params, clean=clean) [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.146219892-05:00 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.146223662-05:00 analytics/src/storeminder/runner.py:161: in _run_report [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.146227812-05:00 conf = manage_api.store_config(store_id) [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.146231352-05:00 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.146234962-05:00 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.146238322-05:00 [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.146241922-05:00 store_id = 'Fastime' [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.146245502-05:00 [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.146249242-05:00 def store_config(store_id: str) -> dict[str, Any] | None: [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.146252772-05:00 """The store's authoritative report config (== the legacy conf/{slug}.yaml). [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.146256392-05:00 [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.146259942-05:00 Returns the config dict on 200, or None on a 404 (unknown store — the caller [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.146263482-05:00 turns this into an explicit error). Raises ManageApiError when the base URL is [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.146267222-05:00 unset or the manage app is unreachable / returns any other status: config is [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.146271152-05:00 Django-only, so we fail loud rather than run an unconfigured store. [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.146274692-05:00 """ [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.146278332-05:00 base = _require_base() [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.146281972-05:00 try: [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.146285542-05:00 import requests [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.146289042-05:00 r = requests.get(f"{base}/api/stores/{store_id}/config/", [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.146292572-05:00 headers=_headers(), timeout=10) [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.146296242-05:00 except Exception as e: # transport error → loud [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.146299862-05:00 raise ManageApiError( [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.146303562-05:00 f"manage_api store_config({store_id}) transport error: " [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.146307212-05:00 f"{type(e).__name__}: {e}") from e [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.146310802-05:00 if r.status_code == 404: [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.146314632-05:00 return None [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.146318142-05:00 if r.status_code != 200: [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.146321752-05:00 > raise ManageApiError( [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.146325492-05:00 f"manage_api store_config({store_id}) returned HTTP {r.status_code}") [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.146331622-05:00 E storeminder.manage_api.ManageApiError: manage_api store_config(Fastime) returned HTTP 400 [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.146335392-05:00 [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.146347892-05:00 analytics/src/storeminder/manage_api.py:93: ManageApiError@pytest.fixture(scope="module") [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.146354242-05:00 def daily_report(): [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.146367372-05:00 > return _run("daily") [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.146371132-05:00 ^^^^^^^^^^^^^ [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.146374642-05:00 [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.146378192-05:00 analytics/tests/test_report_traits_live.py:94: [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.146398162-05:00 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.146411822-05:00 analytics/tests/test_report_traits_live.py:75: in _run [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.146416312-05:00 res = fn(store, end_date=d, dry_run=True, deliver=False, clean=True) [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.146426312-05:00 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.146430132-05:00 analytics/src/storeminder/runner.py:317: in run_daily [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.146434311-05:00 return _run_report(params, clean=clean) [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.146437871-05:00 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.146441691-05:00 analytics/src/storeminder/runner.py:161: in _run_report [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.146445301-05:00 conf = manage_api.store_config(store_id) [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.146448951-05:00 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.146453311-05:00 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.146456661-05:00 [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.146461811-05:00 store_id = 'Fastime' [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.146465251-05:00 [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.146468781-05:00 def store_config(store_id: str) -> dict[str, Any] | None: [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.146473111-05:00 """The store's authoritative report config (== the legacy conf/{slug}.yaml). [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.146476701-05:00 [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.146480311-05:00 Returns the config dict on 200, or None on a 404 (unknown store — the caller [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.146484001-05:00 turns this into an explicit error). Raises ManageApiError when the base URL is [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.146487611-05:00 unset or the manage app is unreachable / returns any other status: config is [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.146491211-05:00 Django-only, so we fail loud rather than run an unconfigured store. [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.146494751-05:00 """ [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.146499801-05:00 base = _require_base() [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.146503531-05:00 try: [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.146507781-05:00 import requests [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.146511561-05:00 r = requests.get(f"{base}/api/stores/{store_id}/config/", [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.146515151-05:00 headers=_headers(), timeout=10) [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.146518841-05:00 except Exception as e: # transport error → loud [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.146522401-05:00 raise ManageApiError( [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.146526131-05:00 f"manage_api store_config({store_id}) transport error: " [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.146529661-05:00 f"{type(e).__name__}: {e}") from e [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.146533441-05:00 if r.status_code == 404: [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.146536941-05:00 return None [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.146540771-05:00 if r.status_code != 200: [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.146544331-05:00 > raise ManageApiError( [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.146548871-05:00 f"manage_api store_config({store_id}) returned HTTP {r.status_code}") [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.146553041-05:00 E storeminder.manage_api.ManageApiError: manage_api store_config(Fastime) returned HTTP 400 [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.146556571-05:00 [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.146560661-05:00 analytics/src/storeminder/manage_api.py:93: ManageApiError@pytest.fixture(scope="module") [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.146575481-05:00 def daily_report(): [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.146580391-05:00 > return _run("daily") [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.146584161-05:00 ^^^^^^^^^^^^^ [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.146587531-05:00 [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.146591131-05:00 analytics/tests/test_report_traits_live.py:94: [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.146594861-05:00 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.146599721-05:00 analytics/tests/test_report_traits_live.py:75: in _run [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.146603411-05:00 res = fn(store, end_date=d, dry_run=True, deliver=False, clean=True) [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.146607071-05:00 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.146610721-05:00 analytics/src/storeminder/runner.py:317: in run_daily [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.146614421-05:00 return _run_report(params, clean=clean) [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.146617891-05:00 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.146621511-05:00 analytics/src/storeminder/runner.py:161: in _run_report [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.146625081-05:00 conf = manage_api.store_config(store_id) [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.146628411-05:00 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.146631841-05:00 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.146635341-05:00 [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.146639061-05:00 store_id = 'Fastime' [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.146642441-05:00 [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.146645881-05:00 def store_config(store_id: str) -> dict[str, Any] | None: [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.146650401-05:00 """The store's authoritative report config (== the legacy conf/{slug}.yaml). [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.146654050-05:00 [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.146657730-05:00 Returns the config dict on 200, or None on a 404 (unknown store — the caller [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.146661700-05:00 turns this into an explicit error). Raises ManageApiError when the base URL is [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.146665630-05:00 unset or the manage app is unreachable / returns any other status: config is [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.146669240-05:00 Django-only, so we fail loud rather than run an unconfigured store. [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.146672990-05:00 """ [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.146676520-05:00 base = _require_base() [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.146680020-05:00 try: [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.146683700-05:00 import requests [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.146687540-05:00 r = requests.get(f"{base}/api/stores/{store_id}/config/", [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.146691190-05:00 headers=_headers(), timeout=10) [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.146694870-05:00 except Exception as e: # transport error → loud [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.146698480-05:00 raise ManageApiError( [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.146702080-05:00 f"manage_api store_config({store_id}) transport error: " [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.146706800-05:00 f"{type(e).__name__}: {e}") from e [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.146710400-05:00 if r.status_code == 404: [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.146713910-05:00 return None [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.146717560-05:00 if r.status_code != 200: [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.146721260-05:00 > raise ManageApiError( [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.146724930-05:00 f"manage_api store_config({store_id}) returned HTTP {r.status_code}") [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.146733150-05:00 E storeminder.manage_api.ManageApiError: manage_api store_config(Fastime) returned HTTP 400 [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.146743880-05:00 [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.146748010-05:00 analytics/src/storeminder/manage_api.py:93: ManageApiError@pytest.fixture(scope="module") [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.146751760-05:00 def weekly_report(): [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.146755260-05:00 > return _run("weekly") [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.146758950-05:00 ^^^^^^^^^^^^^^ [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.146762550-05:00 [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.146766120-05:00 analytics/tests/test_report_traits_live.py:99: [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.146770010-05:00 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.146773580-05:00 analytics/tests/test_report_traits_live.py:75: in _run [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.146777190-05:00 res = fn(store, end_date=d, dry_run=True, deliver=False, clean=True) [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.146780820-05:00 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.146784510-05:00 analytics/src/storeminder/runner.py:336: in run_weekly [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.146787950-05:00 return _run_report(params, clean=clean) [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.146791640-05:00 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.146795170-05:00 analytics/src/storeminder/runner.py:161: in _run_report [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.146798690-05:00 conf = manage_api.store_config(store_id) [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.146802240-05:00 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.146805810-05:00 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.146809170-05:00 [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.146812700-05:00 store_id = 'Fastime' [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.146816130-05:00 [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.146819710-05:00 def store_config(store_id: str) -> dict[str, Any] | None: [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.146823220-05:00 """The store's authoritative report config (== the legacy conf/{slug}.yaml). [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.146827600-05:00 [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.146831340-05:00 Returns the config dict on 200, or None on a 404 (unknown store — the caller [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.146834950-05:00 turns this into an explicit error). Raises ManageApiError when the base URL is [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.146838460-05:00 unset or the manage app is unreachable / returns any other status: config is [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.146842720-05:00 Django-only, so we fail loud rather than run an unconfigured store. [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.146846270-05:00 """ [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.146849890-05:00 base = _require_base() [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.146853540-05:00 try: [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.146857300-05:00 import requests [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.146860840-05:00 r = requests.get(f"{base}/api/stores/{store_id}/config/", [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.146864710-05:00 headers=_headers(), timeout=10) [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.146868250-05:00 except Exception as e: # transport error → loud [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.146871750-05:00 raise ManageApiError( [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.146875309-05:00 f"manage_api store_config({store_id}) transport error: " [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.146879009-05:00 f"{type(e).__name__}: {e}") from e [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.146882469-05:00 if r.status_code == 404: [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.146885999-05:00 return None [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.146889579-05:00 if r.status_code != 200: [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.146893109-05:00 > raise ManageApiError( [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.146902919-05:00 f"manage_api store_config({store_id}) returned HTTP {r.status_code}") [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.146906689-05:00 E storeminder.manage_api.ManageApiError: manage_api store_config(Fastime) returned HTTP 400 [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.146910069-05:00 [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.146914009-05:00 analytics/src/storeminder/manage_api.py:93: ManageApiError@pytest.fixture(scope="module") [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.146917759-05:00 def weekly_report(): [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.146921339-05:00 > return _run("weekly") [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.146924849-05:00 ^^^^^^^^^^^^^^ [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.146928269-05:00 [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.146931849-05:00 analytics/tests/test_report_traits_live.py:99: [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.146935399-05:00 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.146938799-05:00 analytics/tests/test_report_traits_live.py:75: in _run [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.146942189-05:00 res = fn(store, end_date=d, dry_run=True, deliver=False, clean=True) [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.146945599-05:00 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.146948889-05:00 analytics/src/storeminder/runner.py:336: in run_weekly [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.146952499-05:00 return _run_report(params, clean=clean) [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.146956129-05:00 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.146959629-05:00 analytics/src/storeminder/runner.py:161: in _run_report [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.146963139-05:00 conf = manage_api.store_config(store_id) [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.146966759-05:00 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.146970689-05:00 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.146974069-05:00 [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.146977739-05:00 store_id = 'Fastime' [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.146981209-05:00 [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.146984889-05:00 def store_config(store_id: str) -> dict[str, Any] | None: [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.146988629-05:00 """The store's authoritative report config (== the legacy conf/{slug}.yaml). [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.146992169-05:00 [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.146999649-05:00 Returns the config dict on 200, or None on a 404 (unknown store — the caller [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.147003479-05:00 turns this into an explicit error). Raises ManageApiError when the base URL is [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.147007149-05:00 unset or the manage app is unreachable / returns any other status: config is [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.147014989-05:00 Django-only, so we fail loud rather than run an unconfigured store. [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.147018759-05:00 """ [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.147022669-05:00 base = _require_base() [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.147026309-05:00 try: [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.147030109-05:00 import requests [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.147033779-05:00 r = requests.get(f"{base}/api/stores/{store_id}/config/", [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.147037919-05:00 headers=_headers(), timeout=10) [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.147041419-05:00 except Exception as e: # transport error → loud [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.147045109-05:00 raise ManageApiError( [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.147048739-05:00 f"manage_api store_config({store_id}) transport error: " [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.147052389-05:00 f"{type(e).__name__}: {e}") from e [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.147055969-05:00 if r.status_code == 404: [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.147065849-05:00 return None [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.147069439-05:00 if r.status_code != 200: [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.147073059-05:00 > raise ManageApiError( [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.147077379-05:00 f"manage_api store_config({store_id}) returned HTTP {r.status_code}") [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.147081009-05:00 E storeminder.manage_api.ManageApiError: manage_api store_config(Fastime) returned HTTP 400 [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.147084349-05:00 [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.147088089-05:00 analytics/src/storeminder/manage_api.py:93: ManageApiError@pytest.fixture(scope="module") [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.147091629-05:00 def weekly_report(): [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.147095088-05:00 > return _run("weekly") [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.147098768-05:00 ^^^^^^^^^^^^^^ [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.147102128-05:00 [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.147105768-05:00 analytics/tests/test_report_traits_live.py:99: [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.147109428-05:00 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.147112948-05:00 analytics/tests/test_report_traits_live.py:75: in _run [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.147116668-05:00 res = fn(store, end_date=d, dry_run=True, deliver=False, clean=True) [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.147120318-05:00 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.147123968-05:00 analytics/src/storeminder/runner.py:336: in run_weekly [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.147127428-05:00 return _run_report(params, clean=clean) [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.147130908-05:00 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.147134398-05:00 analytics/src/storeminder/runner.py:161: in _run_report [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.147137908-05:00 conf = manage_api.store_config(store_id) [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.147141388-05:00 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.147144958-05:00 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.147148368-05:00 [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.147151938-05:00 store_id = 'Fastime' [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.147155318-05:00 [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.147158848-05:00 def store_config(store_id: str) -> dict[str, Any] | None: [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.147162438-05:00 """The store's authoritative report config (== the legacy conf/{slug}.yaml). [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.147165998-05:00 [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.147169848-05:00 Returns the config dict on 200, or None on a 404 (unknown store — the caller [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.147173438-05:00 turns this into an explicit error). Raises ManageApiError when the base URL is [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.147177278-05:00 unset or the manage app is unreachable / returns any other status: config is [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.147181008-05:00 Django-only, so we fail loud rather than run an unconfigured store. [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.147184648-05:00 """ [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.147188268-05:00 base = _require_base() [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.147192058-05:00 try: [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.147196088-05:00 import requests [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.147199908-05:00 r = requests.get(f"{base}/api/stores/{store_id}/config/", [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.147203528-05:00 headers=_headers(), timeout=10) [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.147207268-05:00 except Exception as e: # transport error → loud [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.147210908-05:00 raise ManageApiError( [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.147220898-05:00 f"manage_api store_config({store_id}) transport error: " [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.147224458-05:00 f"{type(e).__name__}: {e}") from e [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.147227918-05:00 if r.status_code == 404: [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.147231478-05:00 return None [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.147235028-05:00 if r.status_code != 200: [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.147238788-05:00 > raise ManageApiError( [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.147242948-05:00 f"manage_api store_config({store_id}) returned HTTP {r.status_code}") [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.147246558-05:00 E storeminder.manage_api.ManageApiError: manage_api store_config(Fastime) returned HTTP 400 [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.147250178-05:00 [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.147254378-05:00 analytics/src/storeminder/manage_api.py:93: ManageApiError@pytest.fixture(scope="module") [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.147258078-05:00 def weekly_report(): [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.147261838-05:00 > return _run("weekly") [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.147265848-05:00 ^^^^^^^^^^^^^^ [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.147269278-05:00 [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.147272818-05:00 analytics/tests/test_report_traits_live.py:99: [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.147276588-05:00 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.147280288-05:00 analytics/tests/test_report_traits_live.py:75: in _run [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.147284108-05:00 res = fn(store, end_date=d, dry_run=True, deliver=False, clean=True) [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.147287748-05:00 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.147291408-05:00 analytics/src/storeminder/runner.py:336: in run_weekly [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.147298768-05:00 return _run_report(params, clean=clean) [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.147302388-05:00 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.147306048-05:00 analytics/src/storeminder/runner.py:161: in _run_report [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.147309578-05:00 conf = manage_api.store_config(store_id) [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.147313208-05:00 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.147316867-05:00 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.147320367-05:00 [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.147324037-05:00 store_id = 'Fastime' [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.147327247-05:00 [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.147330557-05:00 def store_config(store_id: str) -> dict[str, Any] | None: [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.147334257-05:00 """The store's authoritative report config (== the legacy conf/{slug}.yaml). [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.147359817-05:00 [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.147369917-05:00 Returns the config dict on 200, or None on a 404 (unknown store — the caller [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.147373707-05:00 turns this into an explicit error). Raises ManageApiError when the base URL is [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.147377387-05:00 unset or the manage app is unreachable / returns any other status: config is [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.147381027-05:00 Django-only, so we fail loud rather than run an unconfigured store. [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.147384627-05:00 """ [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.147388207-05:00 base = _require_base() [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.147391997-05:00 try: [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.147395677-05:00 import requests [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.147399407-05:00 r = requests.get(f"{base}/api/stores/{store_id}/config/", [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.147409867-05:00 headers=_headers(), timeout=10) [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.147414477-05:00 except Exception as e: # transport error → loud [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.147424727-05:00 raise ManageApiError( [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.147428427-05:00 f"manage_api store_config({store_id}) transport error: " [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.147431997-05:00 f"{type(e).__name__}: {e}") from e [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.147435637-05:00 if r.status_code == 404: [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.147439547-05:00 return None [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.147443117-05:00 if r.status_code != 200: [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.147446907-05:00 > raise ManageApiError( [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.147450577-05:00 f"manage_api store_config({store_id}) returned HTTP {r.status_code}") [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.147454417-05:00 E storeminder.manage_api.ManageApiError: manage_api store_config(Fastime) returned HTTP 400 [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.147457777-05:00 [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.147461607-05:00 analytics/src/storeminder/manage_api.py:93: ManageApiError@pytest.fixture(scope="module") [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.147465077-05:00 def weekly_report(): [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.147468357-05:00 > return _run("weekly") [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.147472207-05:00 ^^^^^^^^^^^^^^ [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.147475747-05:00 [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.147479247-05:00 analytics/tests/test_report_traits_live.py:99: [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.147482917-05:00 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.147486527-05:00 analytics/tests/test_report_traits_live.py:75: in _run [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.147490267-05:00 res = fn(store, end_date=d, dry_run=True, deliver=False, clean=True) [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.147494317-05:00 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.147497967-05:00 analytics/src/storeminder/runner.py:336: in run_weekly [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.147501917-05:00 return _run_report(params, clean=clean) [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.147505457-05:00 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.147509047-05:00 analytics/src/storeminder/runner.py:161: in _run_report [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.147512767-05:00 conf = manage_api.store_config(store_id) [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.147516437-05:00 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.147520307-05:00 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.147523617-05:00 [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.147527337-05:00 store_id = 'Fastime' [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.147530666-05:00 [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.147534206-05:00 def store_config(store_id: str) -> dict[str, Any] | None: [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.147537656-05:00 """The store's authoritative report config (== the legacy conf/{slug}.yaml). [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.147541396-05:00 [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.147545106-05:00 Returns the config dict on 200, or None on a 404 (unknown store — the caller [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.147548696-05:00 turns this into an explicit error). Raises ManageApiError when the base URL is [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.147552356-05:00 unset or the manage app is unreachable / returns any other status: config is [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.147556236-05:00 Django-only, so we fail loud rather than run an unconfigured store. [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.147559766-05:00 """ [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.147569146-05:00 base = _require_base() [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.147572786-05:00 try: [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.147576286-05:00 import requests [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.147580106-05:00 r = requests.get(f"{base}/api/stores/{store_id}/config/", [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.147584606-05:00 headers=_headers(), timeout=10) [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.147588196-05:00 except Exception as e: # transport error → loud [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.147591956-05:00 raise ManageApiError( [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.147595776-05:00 f"manage_api store_config({store_id}) transport error: " [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.147599366-05:00 f"{type(e).__name__}: {e}") from e [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.147603046-05:00 if r.status_code == 404: [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.147606866-05:00 return None [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.147610516-05:00 if r.status_code != 200: [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.147613926-05:00 > raise ManageApiError( [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.147617416-05:00 f"manage_api store_config({store_id}) returned HTTP {r.status_code}") [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.147621276-05:00 E storeminder.manage_api.ManageApiError: manage_api store_config(Fastime) returned HTTP 400 [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.147624666-05:00 [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.147636746-05:00 analytics/src/storeminder/manage_api.py:93: ManageApiError===JUNIT_END=== [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.147640786-05:00 ----- end live Job logs ----- [pod/analytics-report-live-5nmfd-live-build-pod/step-run-live] 2026-07-19T21:09:00.180701034-05:00 ==> live build: status=Failed conclusion=failure [pod/analytics-report-live-5nmfd-live-build-pod/prepare] 2026-07-19T21:08:03.116782814-05:00 2026/07/20 02:08:03 Entrypoint initialization [pod/analytics-report-live-5nmfd-live-build-pod/place-scripts] 2026-07-19T21:08:03.669885981-05:00 2026/07/20 02:08:03 Decoded script /tekton/scripts/script-0-lx79k [pod/analytics-report-live-5nmfd-live-build-pod/place-scripts] 2026-07-19T21:08:03.701202201-05:00 2026/07/20 02:08:03 Decoded script /tekton/scripts/script-2-h7phd