thoughtleaders-cli 0.6.40__tar.gz → 0.6.41__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {thoughtleaders_cli-0.6.40 → thoughtleaders_cli-0.6.41}/.claude-plugin/plugin.json +1 -1
- {thoughtleaders_cli-0.6.40 → thoughtleaders_cli-0.6.41}/PKG-INFO +1 -1
- {thoughtleaders_cli-0.6.40 → thoughtleaders_cli-0.6.41}/pyproject.toml +1 -1
- {thoughtleaders_cli-0.6.40 → thoughtleaders_cli-0.6.41}/src/tl_cli/__init__.py +1 -1
- {thoughtleaders_cli-0.6.40 → thoughtleaders_cli-0.6.41}/src/tl_cli/auth/commands.py +65 -1
- {thoughtleaders_cli-0.6.40 → thoughtleaders_cli-0.6.41}/.claude-plugin/marketplace.json +0 -0
- {thoughtleaders_cli-0.6.40 → thoughtleaders_cli-0.6.41}/.github/workflows/python-publish.yml +0 -0
- {thoughtleaders_cli-0.6.40 → thoughtleaders_cli-0.6.41}/.gitignore +0 -0
- {thoughtleaders_cli-0.6.40 → thoughtleaders_cli-0.6.41}/AGENTS.md +0 -0
- {thoughtleaders_cli-0.6.40 → thoughtleaders_cli-0.6.41}/CLAUDE.md +0 -0
- {thoughtleaders_cli-0.6.40 → thoughtleaders_cli-0.6.41}/LICENSE +0 -0
- {thoughtleaders_cli-0.6.40 → thoughtleaders_cli-0.6.41}/README.md +0 -0
- {thoughtleaders_cli-0.6.40 → thoughtleaders_cli-0.6.41}/agents/tl-analyst.md +0 -0
- {thoughtleaders_cli-0.6.40 → thoughtleaders_cli-0.6.41}/docs/architecture.md +0 -0
- {thoughtleaders_cli-0.6.40 → thoughtleaders_cli-0.6.41}/hooks/hooks.json +0 -0
- {thoughtleaders_cli-0.6.40 → thoughtleaders_cli-0.6.41}/hooks/scripts/load-tl-skill.mjs +0 -0
- {thoughtleaders_cli-0.6.40 → thoughtleaders_cli-0.6.41}/hooks/scripts/post-usage.sh +0 -0
- {thoughtleaders_cli-0.6.40 → thoughtleaders_cli-0.6.41}/hooks/scripts/pre-check.sh +0 -0
- {thoughtleaders_cli-0.6.40 → thoughtleaders_cli-0.6.41}/skills/tl/SKILL.md +0 -0
- {thoughtleaders_cli-0.6.40 → thoughtleaders_cli-0.6.41}/skills/tl/references/business-glossary.md +0 -0
- {thoughtleaders_cli-0.6.40 → thoughtleaders_cli-0.6.41}/skills/tl/references/elasticsearch-schema.md +0 -0
- {thoughtleaders_cli-0.6.40 → thoughtleaders_cli-0.6.41}/skills/tl/references/firebolt-schema.md +0 -0
- {thoughtleaders_cli-0.6.40 → thoughtleaders_cli-0.6.41}/skills/tl/references/postgres-schema.md +0 -0
- {thoughtleaders_cli-0.6.40 → thoughtleaders_cli-0.6.41}/skills/tl-import/SKILL.md +0 -0
- {thoughtleaders_cli-0.6.40 → thoughtleaders_cli-0.6.41}/skills/tl-report-builder/SKILL.md +0 -0
- {thoughtleaders_cli-0.6.40 → thoughtleaders_cli-0.6.41}/skills/tl-report-builder/examples/e2e_findings.md +0 -0
- {thoughtleaders_cli-0.6.40 → thoughtleaders_cli-0.6.41}/skills/tl-report-builder/examples/golden_queries.md +0 -0
- {thoughtleaders_cli-0.6.40 → thoughtleaders_cli-0.6.41}/skills/tl-report-builder/references/columns_brands.md +0 -0
- {thoughtleaders_cli-0.6.40 → thoughtleaders_cli-0.6.41}/skills/tl-report-builder/references/columns_channels.md +0 -0
- {thoughtleaders_cli-0.6.40 → thoughtleaders_cli-0.6.41}/skills/tl-report-builder/references/columns_content.md +0 -0
- {thoughtleaders_cli-0.6.40 → thoughtleaders_cli-0.6.41}/skills/tl-report-builder/references/columns_sponsorships.md +0 -0
- {thoughtleaders_cli-0.6.40 → thoughtleaders_cli-0.6.41}/skills/tl-report-builder/references/intelligence_filterset_schema.json +0 -0
- {thoughtleaders_cli-0.6.40 → thoughtleaders_cli-0.6.41}/skills/tl-report-builder/references/intelligence_widget_schema.json +0 -0
- {thoughtleaders_cli-0.6.40 → thoughtleaders_cli-0.6.41}/skills/tl-report-builder/references/report_glossary.md +0 -0
- {thoughtleaders_cli-0.6.40 → thoughtleaders_cli-0.6.41}/skills/tl-report-builder/references/sortable_columns.json +0 -0
- {thoughtleaders_cli-0.6.40 → thoughtleaders_cli-0.6.41}/skills/tl-report-builder/references/sponsorship_filterset_schema.json +0 -0
- {thoughtleaders_cli-0.6.40 → thoughtleaders_cli-0.6.41}/skills/tl-report-builder/references/sponsorship_widget_schema.json +0 -0
- {thoughtleaders_cli-0.6.40 → thoughtleaders_cli-0.6.41}/skills/tl-report-builder/references/widgets.md +0 -0
- {thoughtleaders_cli-0.6.40 → thoughtleaders_cli-0.6.41}/skills/tl-report-builder/tools/column_builder.md +0 -0
- {thoughtleaders_cli-0.6.40 → thoughtleaders_cli-0.6.41}/skills/tl-report-builder/tools/database_query.md +0 -0
- {thoughtleaders_cli-0.6.40 → thoughtleaders_cli-0.6.41}/skills/tl-report-builder/tools/keyword_research.md +0 -0
- {thoughtleaders_cli-0.6.40 → thoughtleaders_cli-0.6.41}/skills/tl-report-builder/tools/name_resolver.md +0 -0
- {thoughtleaders_cli-0.6.40 → thoughtleaders_cli-0.6.41}/skills/tl-report-builder/tools/sample_judge.md +0 -0
- {thoughtleaders_cli-0.6.40 → thoughtleaders_cli-0.6.41}/skills/tl-report-builder/tools/similar_channels.md +0 -0
- {thoughtleaders_cli-0.6.40 → thoughtleaders_cli-0.6.41}/skills/tl-report-builder/tools/topic_matcher.md +0 -0
- {thoughtleaders_cli-0.6.40 → thoughtleaders_cli-0.6.41}/skills/tl-report-builder/tools/widget_builder.md +0 -0
- {thoughtleaders_cli-0.6.40 → thoughtleaders_cli-0.6.41}/src/tl_cli/_completions.py +0 -0
- {thoughtleaders_cli-0.6.40 → thoughtleaders_cli-0.6.41}/src/tl_cli/auth/__init__.py +0 -0
- {thoughtleaders_cli-0.6.40 → thoughtleaders_cli-0.6.41}/src/tl_cli/auth/finalize.py +0 -0
- {thoughtleaders_cli-0.6.40 → thoughtleaders_cli-0.6.41}/src/tl_cli/auth/login.py +0 -0
- {thoughtleaders_cli-0.6.40 → thoughtleaders_cli-0.6.41}/src/tl_cli/auth/pkce.py +0 -0
- {thoughtleaders_cli-0.6.40 → thoughtleaders_cli-0.6.41}/src/tl_cli/auth/token_store.py +0 -0
- {thoughtleaders_cli-0.6.40 → thoughtleaders_cli-0.6.41}/src/tl_cli/client/__init__.py +0 -0
- {thoughtleaders_cli-0.6.40 → thoughtleaders_cli-0.6.41}/src/tl_cli/client/errors.py +0 -0
- {thoughtleaders_cli-0.6.40 → thoughtleaders_cli-0.6.41}/src/tl_cli/client/http.py +0 -0
- {thoughtleaders_cli-0.6.40 → thoughtleaders_cli-0.6.41}/src/tl_cli/commands/__init__.py +0 -0
- {thoughtleaders_cli-0.6.40 → thoughtleaders_cli-0.6.41}/src/tl_cli/commands/_comments_common.py +0 -0
- {thoughtleaders_cli-0.6.40 → thoughtleaders_cli-0.6.41}/src/tl_cli/commands/ask.py +0 -0
- {thoughtleaders_cli-0.6.40 → thoughtleaders_cli-0.6.41}/src/tl_cli/commands/balance.py +0 -0
- {thoughtleaders_cli-0.6.40 → thoughtleaders_cli-0.6.41}/src/tl_cli/commands/brands.py +0 -0
- {thoughtleaders_cli-0.6.40 → thoughtleaders_cli-0.6.41}/src/tl_cli/commands/bulk_import.py +0 -0
- {thoughtleaders_cli-0.6.40 → thoughtleaders_cli-0.6.41}/src/tl_cli/commands/changelog.py +0 -0
- {thoughtleaders_cli-0.6.40 → thoughtleaders_cli-0.6.41}/src/tl_cli/commands/channels.py +0 -0
- {thoughtleaders_cli-0.6.40 → thoughtleaders_cli-0.6.41}/src/tl_cli/commands/credits.py +0 -0
- {thoughtleaders_cli-0.6.40 → thoughtleaders_cli-0.6.41}/src/tl_cli/commands/db.py +0 -0
- {thoughtleaders_cli-0.6.40 → thoughtleaders_cli-0.6.41}/src/tl_cli/commands/deals.py +0 -0
- {thoughtleaders_cli-0.6.40 → thoughtleaders_cli-0.6.41}/src/tl_cli/commands/describe.py +0 -0
- {thoughtleaders_cli-0.6.40 → thoughtleaders_cli-0.6.41}/src/tl_cli/commands/doctor.py +0 -0
- {thoughtleaders_cli-0.6.40 → thoughtleaders_cli-0.6.41}/src/tl_cli/commands/matches.py +0 -0
- {thoughtleaders_cli-0.6.40 → thoughtleaders_cli-0.6.41}/src/tl_cli/commands/proposals.py +0 -0
- {thoughtleaders_cli-0.6.40 → thoughtleaders_cli-0.6.41}/src/tl_cli/commands/recommender.py +0 -0
- {thoughtleaders_cli-0.6.40 → thoughtleaders_cli-0.6.41}/src/tl_cli/commands/reports.py +0 -0
- {thoughtleaders_cli-0.6.40 → thoughtleaders_cli-0.6.41}/src/tl_cli/commands/schema.py +0 -0
- {thoughtleaders_cli-0.6.40 → thoughtleaders_cli-0.6.41}/src/tl_cli/commands/setup.py +0 -0
- {thoughtleaders_cli-0.6.40 → thoughtleaders_cli-0.6.41}/src/tl_cli/commands/snapshots.py +0 -0
- {thoughtleaders_cli-0.6.40 → thoughtleaders_cli-0.6.41}/src/tl_cli/commands/sponsorships.py +0 -0
- {thoughtleaders_cli-0.6.40 → thoughtleaders_cli-0.6.41}/src/tl_cli/commands/uploads.py +0 -0
- {thoughtleaders_cli-0.6.40 → thoughtleaders_cli-0.6.41}/src/tl_cli/commands/whoami.py +0 -0
- {thoughtleaders_cli-0.6.40 → thoughtleaders_cli-0.6.41}/src/tl_cli/config.py +0 -0
- {thoughtleaders_cli-0.6.40 → thoughtleaders_cli-0.6.41}/src/tl_cli/filters.py +0 -0
- {thoughtleaders_cli-0.6.40 → thoughtleaders_cli-0.6.41}/src/tl_cli/hints.py +0 -0
- {thoughtleaders_cli-0.6.40 → thoughtleaders_cli-0.6.41}/src/tl_cli/main.py +0 -0
- {thoughtleaders_cli-0.6.40 → thoughtleaders_cli-0.6.41}/src/tl_cli/output/__init__.py +0 -0
- {thoughtleaders_cli-0.6.40 → thoughtleaders_cli-0.6.41}/src/tl_cli/output/formatter.py +0 -0
- {thoughtleaders_cli-0.6.40 → thoughtleaders_cli-0.6.41}/src/tl_cli/self_update.py +0 -0
- {thoughtleaders_cli-0.6.40 → thoughtleaders_cli-0.6.41}/tests/__init__.py +0 -0
- {thoughtleaders_cli-0.6.40 → thoughtleaders_cli-0.6.41}/tests/test_auth.py +0 -0
- {thoughtleaders_cli-0.6.40 → thoughtleaders_cli-0.6.41}/tests/test_filters.py +0 -0
- {thoughtleaders_cli-0.6.40 → thoughtleaders_cli-0.6.41}/tests/test_http_auth.py +0 -0
- {thoughtleaders_cli-0.6.40 → thoughtleaders_cli-0.6.41}/tests/test_output.py +0 -0
- {thoughtleaders_cli-0.6.40 → thoughtleaders_cli-0.6.41}/tests/test_reports.py +0 -0
- {thoughtleaders_cli-0.6.40 → thoughtleaders_cli-0.6.41}/tests/test_sponsorships.py +0 -0
- {thoughtleaders_cli-0.6.40 → thoughtleaders_cli-0.6.41}/uv.lock +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: thoughtleaders-cli
|
|
3
|
-
Version: 0.6.
|
|
3
|
+
Version: 0.6.41
|
|
4
4
|
Summary: ThoughtLeaders CLI — query sponsorship data, channels, brands, and intelligence
|
|
5
5
|
Project-URL: Homepage, https://thoughtleaders.io
|
|
6
6
|
Project-URL: Repository, https://github.com/ThoughtLeaders-io/thoughtleaders-cli
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
"""Auth CLI commands: tl auth login/logout/status."""
|
|
2
2
|
|
|
3
|
+
import sys
|
|
3
4
|
import time
|
|
4
5
|
|
|
5
6
|
import typer
|
|
@@ -14,6 +15,69 @@ app = typer.Typer(help="Authentication commands")
|
|
|
14
15
|
console = Console(stderr=True)
|
|
15
16
|
|
|
16
17
|
|
|
18
|
+
def _read_masked(prompt: str) -> str:
|
|
19
|
+
"""Read a line of input echoing `*` for each character.
|
|
20
|
+
|
|
21
|
+
Falls back to plain `input()` when stdin is not a TTY (piped input,
|
|
22
|
+
test harness). Uses stdlib `termios` on Unix and `msvcrt` on Windows
|
|
23
|
+
so no extra dependency is needed.
|
|
24
|
+
"""
|
|
25
|
+
if not sys.stdin.isatty():
|
|
26
|
+
return input(prompt)
|
|
27
|
+
|
|
28
|
+
sys.stdout.write(prompt)
|
|
29
|
+
sys.stdout.flush()
|
|
30
|
+
|
|
31
|
+
buf: list[str] = []
|
|
32
|
+
if sys.platform == 'win32':
|
|
33
|
+
import msvcrt
|
|
34
|
+
while True:
|
|
35
|
+
ch = msvcrt.getwch()
|
|
36
|
+
if ch in ('\r', '\n'):
|
|
37
|
+
sys.stdout.write('\n')
|
|
38
|
+
sys.stdout.flush()
|
|
39
|
+
break
|
|
40
|
+
if ch == '\x03': # Ctrl-C
|
|
41
|
+
raise KeyboardInterrupt
|
|
42
|
+
if ch in ('\b', '\x7f'):
|
|
43
|
+
if buf:
|
|
44
|
+
buf.pop()
|
|
45
|
+
sys.stdout.write('\b \b')
|
|
46
|
+
sys.stdout.flush()
|
|
47
|
+
continue
|
|
48
|
+
buf.append(ch)
|
|
49
|
+
sys.stdout.write('*')
|
|
50
|
+
sys.stdout.flush()
|
|
51
|
+
else:
|
|
52
|
+
import termios
|
|
53
|
+
import tty
|
|
54
|
+
fd = sys.stdin.fileno()
|
|
55
|
+
old = termios.tcgetattr(fd)
|
|
56
|
+
try:
|
|
57
|
+
tty.setcbreak(fd)
|
|
58
|
+
while True:
|
|
59
|
+
ch = sys.stdin.read(1)
|
|
60
|
+
if ch in ('\r', '\n'):
|
|
61
|
+
sys.stdout.write('\n')
|
|
62
|
+
sys.stdout.flush()
|
|
63
|
+
break
|
|
64
|
+
if ch == '\x03':
|
|
65
|
+
raise KeyboardInterrupt
|
|
66
|
+
if ch in ('\b', '\x7f'):
|
|
67
|
+
if buf:
|
|
68
|
+
buf.pop()
|
|
69
|
+
sys.stdout.write('\b \b')
|
|
70
|
+
sys.stdout.flush()
|
|
71
|
+
continue
|
|
72
|
+
buf.append(ch)
|
|
73
|
+
sys.stdout.write('*')
|
|
74
|
+
sys.stdout.flush()
|
|
75
|
+
finally:
|
|
76
|
+
termios.tcsetattr(fd, termios.TCSADRAIN, old)
|
|
77
|
+
|
|
78
|
+
return ''.join(buf)
|
|
79
|
+
|
|
80
|
+
|
|
17
81
|
@app.command("login", help="Log in to ThoughtLeaders.")
|
|
18
82
|
def login_cmd() -> None:
|
|
19
83
|
"""Log in to ThoughtLeaders.
|
|
@@ -58,7 +122,7 @@ def _login_api_key() -> None:
|
|
|
58
122
|
from tl_cli.client.errors import ApiError
|
|
59
123
|
from tl_cli.client.http import get_client
|
|
60
124
|
|
|
61
|
-
key =
|
|
125
|
+
key = _read_masked("Paste your API key: ").strip()
|
|
62
126
|
if not key:
|
|
63
127
|
console.print("[red]No key provided.[/red]")
|
|
64
128
|
raise typer.Exit(1)
|
|
File without changes
|
{thoughtleaders_cli-0.6.40 → thoughtleaders_cli-0.6.41}/.github/workflows/python-publish.yml
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{thoughtleaders_cli-0.6.40 → thoughtleaders_cli-0.6.41}/skills/tl/references/business-glossary.md
RENAMED
|
File without changes
|
{thoughtleaders_cli-0.6.40 → thoughtleaders_cli-0.6.41}/skills/tl/references/elasticsearch-schema.md
RENAMED
|
File without changes
|
{thoughtleaders_cli-0.6.40 → thoughtleaders_cli-0.6.41}/skills/tl/references/firebolt-schema.md
RENAMED
|
File without changes
|
{thoughtleaders_cli-0.6.40 → thoughtleaders_cli-0.6.41}/skills/tl/references/postgres-schema.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{thoughtleaders_cli-0.6.40 → thoughtleaders_cli-0.6.41}/src/tl_cli/commands/_comments_common.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|