Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
54 commits
Select commit Hold shift + click to select a range
27bba51
Merge pull request #322 from thoughtspot/master
jp-spotter Jul 21, 2026
17f1eaa
Drop redundant snowflake-sqlalchemy install from fetch workflows; man…
jp-spotter Jul 21, 2026
46bdaab
Merge pull request #323 from jp-spotter/chore/snowflake-dep-cleanup
jp-spotter Jul 21, 2026
1a7d57f
Batch dependent-object searches one object at a time to avoid server-…
jp-spotter Jul 21, 2026
4cabfe4
Make metadata fetch resilient: skip failed batches, return partial in…
jp-spotter Jul 21, 2026
0cc8274
Return FetchResult from metadata fetch: report skipped batches alongs…
jp-spotter Jul 21, 2026
c381aae
Surface partial metadata extracts: loud summary + strategy-aware exit…
jp-spotter Jul 21, 2026
3617504
Merge pull request #324 from jp-spotter/fix/metadata-extract-reliability
jp-spotter Jul 21, 2026
58a577e
Skip dependents missing required fields instead of crashing the metad…
jp-spotter Jul 22, 2026
4862ee8
Raise dependent-search concurrency to 20 to cut metadata extract wall…
jp-spotter Jul 22, 2026
0e97b38
Merge pull request #325 from jp-spotter/fix/metadata-dependent-robust…
jp-spotter Jul 22, 2026
95258b0
Revert "Merge pull request #325 from jp-spotter/fix/metadata-dependen…
jp-spotter Jul 22, 2026
2ab1477
Revert "Merge pull request #324 from jp-spotter/fix/metadata-extract-…
jp-spotter Jul 22, 2026
5bb6a76
Merge pull request #326 from jp-spotter/revert/metadata-reliability-t…
jp-spotter Jul 22, 2026
46b2b3e
Tolerate null created/modified across searchable models
jp-spotter Jul 23, 2026
d2b162d
Remove dead retry_on_httpx_errors decorator on metadata fetch
jp-spotter Jul 23, 2026
e138f8a
Log start and per-entry timing for each WorkTracker phase
jp-spotter Jul 23, 2026
4b6063f
Merge pull request #329 from jp-spotter/feat/phase-progress-logging
jp-spotter Jul 23, 2026
766a998
Merge pull request #327 from jp-spotter/fix/searchable-dependent-keye…
jp-spotter Jul 23, 2026
6d6e3f2
Merge pull request #328 from jp-spotter/chore/remove-dead-fetch-retry
jp-spotter Jul 23, 2026
a2041db
Correlate deploy TML-import results positionally, not by request_index
jp-spotter Jul 23, 2026
3e7887d
Refresh uv.lock to satisfy pyproject (thoughtspot-tml >= 2.4.2)
jp-spotter Jul 23, 2026
615ee3c
Restore the terminal cursor when the progress tracker exits
jp-spotter Jul 23, 2026
b2d682f
Merge pull request #330 from jp-spotter/fix/searchable-deploy-request…
jp-spotter Jul 23, 2026
4dfed38
Merge pull request #332 from jp-spotter/chore/refresh-uv-lock
jp-spotter Jul 23, 2026
4f34eee
Merge pull request #331 from jp-spotter/fix/worktracker-restore-cursor
jp-spotter Jul 23, 2026
f0b8499
Bump actions/checkout to v4 in build-docs (clears Node 16 deprecation…
jp-spotter Jul 23, 2026
7332735
Stream unbuffered stdout in fetch workflows for live run logs
jp-spotter Jul 23, 2026
89d5abc
Resolve CS Tools version at runtime instead of hardcoding it per work…
jp-spotter Jul 23, 2026
d18a6e2
Resolve latest release via github.com redirect, not the rate-limited API
jp-spotter Jul 23, 2026
ae3b1f4
Merge pull request #333 from jp-spotter/fix/bootstrapper-install-reli…
jp-spotter Jul 24, 2026
ddf9e4d
Merge pull request #334 from jp-spotter/chore/workflow-hardening
jp-spotter Jul 24, 2026
bf6bc1f
Survive failed dependent/access batches instead of aborting the extract
jp-spotter Aug 4, 2026
bc94d74
Merge pull request #336 from jp-spotter/fix/dependent-fetch-resilience
jp-spotter Aug 4, 2026
92c6a83
Humanize the syncer init and INDEX_PRIORITY log messages
jp-spotter Aug 4, 2026
9d5814f
Merge pull request #337 from jp-spotter/chore/message-cleanup
jp-spotter Aug 4, 2026
06ddc04
Survive TML spec drift in deploy and flag unparseable checkpoint exports
jp-spotter Aug 5, 2026
d94de87
Exit with the command's return code when run as python -m cs_tools
jp-spotter Aug 5, 2026
83ac048
Merge pull request #338 from jp-spotter/fix/tml-drift-resilience
jp-spotter Aug 5, 2026
6578177
Bump checkout and setup-python to their node24 majors
jp-spotter Aug 5, 2026
885a398
Allow test-bootstrapper to install from a git ref
jp-spotter Aug 5, 2026
694000e
Merge pull request #340 from jp-spotter/chore/test-bootstrapper-ref-i…
jp-spotter Aug 5, 2026
d322293
Merge pull request #339 from jp-spotter/chore/gha-node24-bumps
jp-spotter Aug 5, 2026
6881d01
Clarify extract failure messages and make skipped loads visible
jp-spotter Aug 6, 2026
a4993d0
Merge pull request #341 from jp-spotter/chore/extract-clarity
jp-spotter Aug 6, 2026
62f4132
Bump version to 1.7.1 and bootstrapper to 1.0.4
jp-spotter Aug 6, 2026
77c2214
Name the parent table in duplicate-synonym console/log warnings
jp-spotter Aug 6, 2026
40356ba
Merge pull request #343 from jp-spotter/chore/synonym-warning-table-guid
jp-spotter Aug 6, 2026
ab0ff98
Name affected objects in the incomplete-extract report
jp-spotter Aug 7, 2026
9aa9bc2
Merge pull request #344 from jp-spotter/chore/incomplete-extract-names
jp-spotter Aug 7, 2026
cc5b70c
Write a complete named manifest of extract gaps to the logfile
jp-spotter Aug 7, 2026
35a4db3
Point the incomplete-extract report at this run's logfile
jp-spotter Aug 7, 2026
b46cda3
Merge pull request #345 from jp-spotter/chore/incomplete-extract-mani…
jp-spotter Aug 7, 2026
cdef87b
Merge pull request #346 from jp-spotter/chore/bump-version-1.7.1
jp-spotter Aug 7, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions .github/workflows/build-docs.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -21,11 +21,11 @@ jobs:
steps:
# CHECKOUT REPOSITORY.
- name: Checkout repository
uses: actions/checkout@v3
uses: actions/checkout@v7

# SETUP PYTHON.
- name: Set up Python
uses: actions/setup-python@v5
uses: actions/setup-python@v7

# UPDATE PIP.
- name: Ensure pip is up to date.
Expand Down
25 changes: 16 additions & 9 deletions .github/workflows/fetch-audit-logs.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -18,9 +18,10 @@ jobs:
runs-on: ubuntu-latest

env:
# CS TOOLS IS COMMAND LINE LIBRARY WRAPPING TS APIS
# https://thoughtspot.github.io/cs_tools/
CS_TOOLS_VERSION: ${{ github.event_name == 'workflow_dispatch' && inputs.cs_tools_version || 'v1.7.0' }}
# Stream Python stdout live (unbuffered) so long extracts show progress in the run log.
PYTHONUNBUFFERED: "1"

# CS_TOOLS_VERSION is set at runtime by the resolve step below.
CS_TOOLS_THOUGHTSPOT__URL: ${{ secrets.THOUGHTSPOT_URL }}
CS_TOOLS_THOUGHTSPOT__USERNAME: ${{ secrets.THOUGHTSPOT_USERNAME }}
CS_TOOLS_THOUGHTSPOT__SECRET_KEY: ${{ secrets.THOUGHTSPOT_SECRET_KEY }}
Expand All @@ -40,9 +41,20 @@ jobs:
"

steps:
# Dispatch input wins; otherwise resolve the latest release tag via the releases/latest redirect.
- name: Resolve CS Tools version
run: |
if [ -n "${{ inputs.cs_tools_version }}" ]; then
VERSION="${{ inputs.cs_tools_version }}"
else
VERSION="$(curl -fsSLI -o /dev/null -w '%{url_effective}' https://github.com/thoughtspot/cs_tools/releases/latest | sed 's#.*/tag/##')"
fi
echo "Resolved CS Tools version: $VERSION"
echo "CS_TOOLS_VERSION=$VERSION" >> "$GITHUB_ENV"

# SETUP PYTHON.
- name: Set up Python
uses: actions/setup-python@v5
uses: actions/setup-python@v7

# UPDATE PIP.
- name: Ensure pip is up to date.
Expand All @@ -52,11 +64,6 @@ jobs:
- name: Install a pinned version of CS Tools
run: python -m pip install "cs_tools[cli] @ https://github.com/thoughtspot/cs_tools/archive/${{ env.CS_TOOLS_VERSION }}.zip"

# ENSURE SYNCER DEPENDENCIES ARE INSTALLED.
# found in: https://github.com/thoughtspot/cs_tools/blob/master/sync/<dialect>/MANIFEST.json
- name: Install a pinned version of CS Tools
run: python -m pip install "snowflake-sqlalchemy >= 1.6.1"

# RUNS THE searchable tml COMMAND.
# https://thoughtspot.github.io/cs_tools/tools/searchable
#
Expand Down
25 changes: 16 additions & 9 deletions .github/workflows/fetch-bi-data.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -18,9 +18,10 @@ jobs:
runs-on: ubuntu-latest

env:
# CS TOOLS IS COMMAND LINE LIBRARY WRAPPING TS APIS
# https://thoughtspot.github.io/cs_tools/
CS_TOOLS_VERSION: ${{ github.event_name == 'workflow_dispatch' && inputs.cs_tools_version || 'v1.7.0' }}
# Stream Python stdout live (unbuffered) so long extracts show progress in the run log.
PYTHONUNBUFFERED: "1"

# CS_TOOLS_VERSION is set at runtime by the resolve step below.
CS_TOOLS_THOUGHTSPOT__URL: ${{ secrets.THOUGHTSPOT_URL }}
CS_TOOLS_THOUGHTSPOT__USERNAME: ${{ secrets.THOUGHTSPOT_USERNAME }}
CS_TOOLS_THOUGHTSPOT__SECRET_KEY: ${{ secrets.THOUGHTSPOT_SECRET_KEY }}
Expand All @@ -40,6 +41,17 @@ jobs:
"

steps:
# Dispatch input wins; otherwise resolve the latest release tag via the releases/latest redirect.
- name: Resolve CS Tools version
run: |
if [ -n "${{ inputs.cs_tools_version }}" ]; then
VERSION="${{ inputs.cs_tools_version }}"
else
VERSION="$(curl -fsSLI -o /dev/null -w '%{url_effective}' https://github.com/thoughtspot/cs_tools/releases/latest | sed 's#.*/tag/##')"
fi
echo "Resolved CS Tools version: $VERSION"
echo "CS_TOOLS_VERSION=$VERSION" >> "$GITHUB_ENV"

- name: Get 7 days ago
run: echo "days_ago_7=$(date -d "-7 days" +'%Y-%m-%d')" >> $GITHUB_ENV

Expand All @@ -48,7 +60,7 @@ jobs:

# SETUP PYTHON.
- name: Set up Python
uses: actions/setup-python@v5
uses: actions/setup-python@v7

# UPDATE PIP.
- name: Ensure pip is up to date.
Expand All @@ -58,11 +70,6 @@ jobs:
- name: Install a pinned version of CS Tools
run: python -m pip install "cs_tools[cli] @ https://github.com/thoughtspot/cs_tools/archive/${{ env.CS_TOOLS_VERSION }}.zip"

# ENSURE SYNCER DEPENDENCIES ARE INSTALLED.
# found in: https://github.com/thoughtspot/cs_tools/blob/master/sync/<dialect>/MANIFEST.json
- name: Install a pinned version of CS Tools
run: python -m pip install "snowflake-sqlalchemy >= 1.6.1"

# RUNS THE searchable tml COMMAND.
# https://thoughtspot.github.io/cs_tools/tools/searchable
#
Expand Down
25 changes: 16 additions & 9 deletions .github/workflows/fetch-metdata.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -17,9 +17,10 @@ jobs:
runs-on: ubuntu-latest

env:
# CS TOOLS IS COMMAND LINE LIBRARY WRAPPING TS APIS
# https://thoughtspot.github.io/cs_tools/
CS_TOOLS_VERSION: ${{ github.event_name == 'workflow_dispatch' && inputs.cs_tools_version || 'v1.7.0' }}
# Stream Python stdout live (unbuffered) so long extracts show progress in the run log.
PYTHONUNBUFFERED: "1"

# CS_TOOLS_VERSION is set at runtime by the resolve step below.
CS_TOOLS_THOUGHTSPOT__URL: ${{ secrets.THOUGHTSPOT_URL }}
CS_TOOLS_THOUGHTSPOT__USERNAME: ${{ secrets.THOUGHTSPOT_USERNAME }}
CS_TOOLS_THOUGHTSPOT__SECRET_KEY: ${{ secrets.THOUGHTSPOT_SECRET_KEY }}
Expand All @@ -39,9 +40,20 @@ jobs:
"

steps:
# Dispatch input wins; otherwise resolve the latest release tag via the releases/latest redirect.
- name: Resolve CS Tools version
run: |
if [ -n "${{ inputs.cs_tools_version }}" ]; then
VERSION="${{ inputs.cs_tools_version }}"
else
VERSION="$(curl -fsSLI -o /dev/null -w '%{url_effective}' https://github.com/thoughtspot/cs_tools/releases/latest | sed 's#.*/tag/##')"
fi
echo "Resolved CS Tools version: $VERSION"
echo "CS_TOOLS_VERSION=$VERSION" >> "$GITHUB_ENV"

# SETUP PYTHON.
- name: Set up Python
uses: actions/setup-python@v5
uses: actions/setup-python@v7

# UPDATE PIP.
- name: Ensure pip is up to date.
Expand All @@ -51,11 +63,6 @@ jobs:
- name: Install a pinned version of CS Tools
run: python -m pip install "cs_tools[cli] @ https://github.com/thoughtspot/cs_tools/archive/${{ env.CS_TOOLS_VERSION }}.zip"

# ENSURE SYNCER DEPENDENCIES ARE INSTALLED.
# found in: https://github.com/thoughtspot/cs_tools/blob/master/sync/<dialect>/MANIFEST.json
- name: Install a pinned version of CS Tools
run: python -m pip install "snowflake-sqlalchemy >= 1.6.1"

# RUNS THE searchable metadata COMMAND.
# https://thoughtspot.github.io/cs_tools/tools/searchable
#
Expand Down
25 changes: 16 additions & 9 deletions .github/workflows/fetch-tml.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -18,9 +18,10 @@ jobs:
runs-on: ubuntu-latest

env:
# CS TOOLS IS COMMAND LINE LIBRARY WRAPPING TS APIS
# https://thoughtspot.github.io/cs_tools/
CS_TOOLS_VERSION: ${{ github.event_name == 'workflow_dispatch' && inputs.cs_tools_version || 'v1.7.0' }}
# Stream Python stdout live (unbuffered) so long extracts show progress in the run log.
PYTHONUNBUFFERED: "1"

# CS_TOOLS_VERSION is set at runtime by the resolve step below.
CS_TOOLS_THOUGHTSPOT__URL: ${{ secrets.THOUGHTSPOT_URL }}
CS_TOOLS_THOUGHTSPOT__USERNAME: ${{ secrets.THOUGHTSPOT_USERNAME }}
CS_TOOLS_THOUGHTSPOT__SECRET_KEY: ${{ secrets.THOUGHTSPOT_SECRET_KEY }}
Expand All @@ -40,9 +41,20 @@ jobs:
"

steps:
# Dispatch input wins; otherwise resolve the latest release tag via the releases/latest redirect.
- name: Resolve CS Tools version
run: |
if [ -n "${{ inputs.cs_tools_version }}" ]; then
VERSION="${{ inputs.cs_tools_version }}"
else
VERSION="$(curl -fsSLI -o /dev/null -w '%{url_effective}' https://github.com/thoughtspot/cs_tools/releases/latest | sed 's#.*/tag/##')"
fi
echo "Resolved CS Tools version: $VERSION"
echo "CS_TOOLS_VERSION=$VERSION" >> "$GITHUB_ENV"

# SETUP PYTHON.
- name: Set up Python
uses: actions/setup-python@v5
uses: actions/setup-python@v7

# UPDATE PIP.
- name: Ensure pip is up to date.
Expand All @@ -52,11 +64,6 @@ jobs:
- name: Install a pinned version of CS Tools
run: python -m pip install "cs_tools[cli] @ https://github.com/thoughtspot/cs_tools/archive/${{ env.CS_TOOLS_VERSION }}.zip"

# ENSURE SYNCER DEPENDENCIES ARE INSTALLED.
# found in: https://github.com/thoughtspot/cs_tools/blob/master/sync/<dialect>/MANIFEST.json
- name: Install a pinned version of CS Tools
run: python -m pip install "snowflake-sqlalchemy >= 1.6.1"

# RUNS THE searchable tml COMMAND.
# https://thoughtspot.github.io/cs_tools/tools/searchable
#
Expand Down
25 changes: 16 additions & 9 deletions .github/workflows/fetch-ts-bi-data.yml
Original file line number Diff line number Diff line change
Expand Up @@ -17,9 +17,10 @@ jobs:
runs-on: ubuntu-latest

env:
# CS TOOLS IS COMMAND LINE LIBRARY WRAPPING TS APIS
# https://thoughtspot.github.io/cs_tools/
CS_TOOLS_VERSION: ${{ github.event_name == 'workflow_dispatch' && inputs.cs_tools_version || 'v1.7.0' }}
# Stream Python stdout live (unbuffered) so long extracts show progress in the run log.
PYTHONUNBUFFERED: "1"

# CS_TOOLS_VERSION is set at runtime by the resolve step below.
CS_TOOLS_THOUGHTSPOT__URL: ${{ secrets.THOUGHTSPOT_URL }}
CS_TOOLS_THOUGHTSPOT__USERNAME: ${{ secrets.THOUGHTSPOT_USERNAME }}
CS_TOOLS_THOUGHTSPOT__SECRET_KEY: ${{ secrets.THOUGHTSPOT_SECRET_KEY }}
Expand All @@ -29,6 +30,17 @@ jobs:
# https://thoughtspot.github.io/cs_tools/syncer/snowflake/

steps:
# Dispatch input wins; otherwise resolve the latest release tag via the releases/latest redirect.
- name: Resolve CS Tools version
run: |
if [ -n "${{ inputs.cs_tools_version }}" ]; then
VERSION="${{ inputs.cs_tools_version }}"
else
VERSION="$(curl -fsSLI -o /dev/null -w '%{url_effective}' https://github.com/thoughtspot/cs_tools/releases/latest | sed 's#.*/tag/##')"
fi
echo "Resolved CS Tools version: $VERSION"
echo "CS_TOOLS_VERSION=$VERSION" >> "$GITHUB_ENV"

- name: Get 7 days ago
run: echo "days_ago_7=$(date -d "-7 days" +'%Y-%m-%d')" >> $GITHUB_ENV

Expand All @@ -37,7 +49,7 @@ jobs:

# SETUP PYTHON.
- name: Set up Python
uses: actions/setup-python@v5
uses: actions/setup-python@v7

# UPDATE PIP.
- name: Ensure pip is up to date.
Expand All @@ -47,11 +59,6 @@ jobs:
- name: Install a pinned version of CS Tools
run: python -m pip install "cs_tools[cli] @ https://github.com/thoughtspot/cs_tools/archive/${{ env.CS_TOOLS_VERSION }}.zip"

# ENSURE SYNCER DEPENDENCIES ARE INSTALLED.
# found in: https://github.com/thoughtspot/cs_tools/blob/master/sync/<dialect>/MANIFEST.json
- name: Install a pinned version of CS Tools
run: python -m pip install "snowflake-sqlalchemy >= 1.6.1"

- name: Decode PEM file
run: echo "${{ secrets.SNOWFLAKE_PRIVATE_KEY }}" > $P8_KEY_PATH

Expand Down
18 changes: 14 additions & 4 deletions .github/workflows/test-bootstrapper.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,11 @@ name: Test CS Tools Bootstrapper

on:
workflow_dispatch:
inputs:
bootstrapper_ref:
description: "Git ref to test the bootstrapper from. Default: the published docs-site install.py."
required: false
type: string

push:
branches:
Expand All @@ -27,19 +32,24 @@ jobs:
- "3.12"
- "3.13"

env:
# DEFAULT = THE PUBLISHED INSTALLER (WHAT CUSTOMERS RUN). PASS bootstrapper_ref TO TEST A
# REF'S INSTALLER PRE-RELEASE -- install.py IS _bootstrapper.py MIRRORED AT DOCS-DEPLOY TIME.
BOOTSTRAPPER_URL: ${{ inputs.bootstrapper_ref != '' && format('https://raw.githubusercontent.com/thoughtspot/cs_tools/{0}/cs_tools/updater/_bootstrapper.py', inputs.bootstrapper_ref) || 'https://thoughtspot.github.io/cs_tools/install.py' }}

steps:
# SETUP PYTHON.
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v5
uses: actions/setup-python@v7
with:
python-version: ${{ matrix.python-version }}

# USES THE COMMAND FROM THE DOCS PAGE.
- if: ${{ runner.os == 'Windows' }}
name: Install on Windows.
run: powershell -ExecutionPolicy ByPass -c "IRM https://thoughtspot.github.io/cs_tools/install.py | python - --reinstall"
run: powershell -ExecutionPolicy ByPass -c "IRM $env:BOOTSTRAPPER_URL | python - --reinstall"

# USES THE COMMAND FROM THE DOCS PAGE.
- if: ${{ runner.os != 'Windows' }}
name: Install on Linux/MacOS.
run: curl -LsSf https://thoughtspot.github.io/cs_tools/install.py | python - --reinstall
run: curl -LsSf "$BOOTSTRAPPER_URL" | python - --reinstall
4 changes: 2 additions & 2 deletions .github/workflows/test-syncers.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -25,10 +25,10 @@ jobs:

steps:
- name: Checkout repository
uses: actions/checkout@v4
uses: actions/checkout@v7

- name: Set up Python
uses: actions/setup-python@v5
uses: actions/setup-python@v7
with:
python-version: "3.12"

Expand Down
3 changes: 2 additions & 1 deletion cs_tools/__main__.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
from __future__ import annotations

import logging
import sys

try:
from cs_tools.cli.commands.main import run
Expand All @@ -16,4 +17,4 @@
)

else:
run()
sys.exit(run())
2 changes: 1 addition & 1 deletion cs_tools/__project__.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
__version__ = "1.7.0"
__version__ = "1.7.1"
__docs__ = "https://thoughtspot.github.io/cs_tools/"
__repo__ = "https://github.com/thoughtspot/cs_tools"
__help__ = f"{__repo__}/discussions/"
Expand Down
Loading