pytgcli 0.8.0__tar.gz → 0.8.2__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.
Files changed (32) hide show
  1. {pytgcli-0.8.0 → pytgcli-0.8.2}/.github/workflows/ci.yml +0 -1
  2. pytgcli-0.8.2/.github/workflows/publish.yml +80 -0
  3. {pytgcli-0.8.0 → pytgcli-0.8.2}/AGENTS.md +1 -0
  4. {pytgcli-0.8.0 → pytgcli-0.8.2}/PKG-INFO +2 -4
  5. {pytgcli-0.8.0 → pytgcli-0.8.2}/README.md +1 -3
  6. {pytgcli-0.8.0 → pytgcli-0.8.2}/pyproject.toml +1 -1
  7. {pytgcli-0.8.0 → pytgcli-0.8.2}/uv.lock +1 -1
  8. pytgcli-0.8.0/.github/workflows/publish.yml +0 -17
  9. {pytgcli-0.8.0 → pytgcli-0.8.2}/.github/dependabot.yml +0 -0
  10. {pytgcli-0.8.0 → pytgcli-0.8.2}/.gitignore +0 -0
  11. {pytgcli-0.8.0 → pytgcli-0.8.2}/.pre-commit-config.yaml +0 -0
  12. {pytgcli-0.8.0 → pytgcli-0.8.2}/.python-version +0 -0
  13. {pytgcli-0.8.0 → pytgcli-0.8.2}/CLAUDE.md +0 -0
  14. {pytgcli-0.8.0 → pytgcli-0.8.2}/LICENSE +0 -0
  15. {pytgcli-0.8.0 → pytgcli-0.8.2}/install.sh +0 -0
  16. {pytgcli-0.8.0 → pytgcli-0.8.2}/src/tgcli/__init__.py +0 -0
  17. {pytgcli-0.8.0 → pytgcli-0.8.2}/src/tgcli/auth.py +0 -0
  18. {pytgcli-0.8.0 → pytgcli-0.8.2}/src/tgcli/cli.py +0 -0
  19. {pytgcli-0.8.0 → pytgcli-0.8.2}/src/tgcli/client.py +0 -0
  20. {pytgcli-0.8.0 → pytgcli-0.8.2}/src/tgcli/config.py +0 -0
  21. {pytgcli-0.8.0 → pytgcli-0.8.2}/src/tgcli/formatting.py +0 -0
  22. {pytgcli-0.8.0 → pytgcli-0.8.2}/src/tgcli/session.py +0 -0
  23. {pytgcli-0.8.0 → pytgcli-0.8.2}/src/tgcli/update.py +0 -0
  24. {pytgcli-0.8.0 → pytgcli-0.8.2}/tests/__init__.py +0 -0
  25. {pytgcli-0.8.0 → pytgcli-0.8.2}/tests/conftest.py +0 -0
  26. {pytgcli-0.8.0 → pytgcli-0.8.2}/tests/test_auth.py +0 -0
  27. {pytgcli-0.8.0 → pytgcli-0.8.2}/tests/test_cli.py +0 -0
  28. {pytgcli-0.8.0 → pytgcli-0.8.2}/tests/test_client.py +0 -0
  29. {pytgcli-0.8.0 → pytgcli-0.8.2}/tests/test_config.py +0 -0
  30. {pytgcli-0.8.0 → pytgcli-0.8.2}/tests/test_formatting.py +0 -0
  31. {pytgcli-0.8.0 → pytgcli-0.8.2}/tests/test_session.py +0 -0
  32. {pytgcli-0.8.0 → pytgcli-0.8.2}/tests/test_update.py +0 -0
@@ -4,7 +4,6 @@ on:
4
4
  push:
5
5
  branches: [main]
6
6
  pull_request:
7
- branches: [main]
8
7
 
9
8
  jobs:
10
9
  lint:
@@ -0,0 +1,80 @@
1
+ name: Release
2
+
3
+ on:
4
+ push:
5
+ tags:
6
+ - "v*"
7
+
8
+ jobs:
9
+ verify:
10
+ runs-on: ubuntu-latest
11
+ permissions:
12
+ contents: read
13
+ steps:
14
+ - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
15
+ with:
16
+ ref: ${{ github.ref_name }}
17
+ - name: Verify tag matches pyproject version
18
+ run: |
19
+ TAG_VERSION="${{ github.ref_name }}"
20
+ TAG_VERSION="${TAG_VERSION#v}"
21
+ PROJECT_VERSION="$(python3 -c "import tomllib;print(tomllib.load(open('pyproject.toml','rb'))['project']['version'])")"
22
+ if [ "$TAG_VERSION" != "$PROJECT_VERSION" ]; then
23
+ echo "Tag version ($TAG_VERSION) does not match pyproject version ($PROJECT_VERSION)."
24
+ exit 1
25
+ fi
26
+
27
+ build:
28
+ needs: verify
29
+ runs-on: ubuntu-latest
30
+ permissions:
31
+ contents: read
32
+ steps:
33
+ - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
34
+ with:
35
+ ref: ${{ github.ref_name }}
36
+ - uses: astral-sh/setup-uv@eac588ad8def6316056a12d4907a9d4d84ff7a3b # v7.3.0
37
+ - run: uv build
38
+ - uses: actions/upload-artifact@v4
39
+ with:
40
+ name: dist
41
+ path: dist/*
42
+
43
+ github-release:
44
+ needs: build
45
+ runs-on: ubuntu-latest
46
+ permissions:
47
+ contents: write
48
+ steps:
49
+ - uses: actions/download-artifact@v4
50
+ with:
51
+ name: dist
52
+ path: dist
53
+ - name: Create GitHub release and upload assets
54
+ env:
55
+ GH_TOKEN: ${{ github.token }}
56
+ run: |
57
+ if gh release view "${{ github.ref_name }}" --repo "${{ github.repository }}" > /dev/null 2>&1; then
58
+ echo "Release ${{ github.ref_name }} already exists."
59
+ else
60
+ gh release create "${{ github.ref_name }}" \
61
+ --repo "${{ github.repository }}" \
62
+ --title "${{ github.ref_name }}" \
63
+ --notes "Automated release for ${{ github.ref_name }}"
64
+ fi
65
+ gh release upload "${{ github.ref_name }}" dist/* --repo "${{ github.repository }}" --clobber
66
+
67
+ publish-pypi:
68
+ needs: build
69
+ runs-on: ubuntu-latest
70
+ environment: pypi
71
+ permissions:
72
+ id-token: write
73
+ contents: read
74
+ steps:
75
+ - uses: actions/download-artifact@v4
76
+ with:
77
+ name: dist
78
+ path: dist
79
+ - uses: astral-sh/setup-uv@eac588ad8def6316056a12d4907a9d4d84ff7a3b # v7.3.0
80
+ - run: uv publish --trusted-publishing always dist/*
@@ -10,6 +10,7 @@ src/tgcli/
10
10
  config.py # Config loading (TOML + env vars)
11
11
  formatting.py # Pure output formatting functions (no I/O)
12
12
  session.py # Keychain-backed StringSession via keyring (cross-platform)
13
+ update.py # Update checking, install method detection (stdlib only)
13
14
  tests/ # pytest + pytest-asyncio, Telethon fully mocked
14
15
  ```
15
16
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: pytgcli
3
- Version: 0.8.0
3
+ Version: 0.8.2
4
4
  Summary: CLI tool to read Telegram messages from the terminal
5
5
  Project-URL: Repository, https://github.com/tksohishi/tgcli
6
6
  Author: Takeshi
@@ -35,8 +35,6 @@ Give AI agents (Claude Code, Codex, Cursor, etc.) direct access to your Telegram
35
35
 
36
36
  ## Installation
37
37
 
38
- Requires Python 3.12+.
39
-
40
38
  **One-liner** (installs [uv](https://docs.astral.sh/uv/) if needed):
41
39
 
42
40
  ```bash
@@ -154,7 +152,7 @@ Read recent messages from a chat. Returns JSONL by default, newest first.
154
152
 
155
153
  ### `tg update`
156
154
 
157
- Upgrade tgcli to the latest version (via `uv tool install --upgrade`).
155
+ Upgrade tgcli to the latest version. Detects the install method and runs the right command (or tells you what to run for Homebrew installs).
158
156
 
159
157
  tgcli checks PyPI for new versions once per day and prints a notice to stderr when an update is available. Set `TGCLI_NO_UPDATE_CHECK=1` to disable.
160
158
 
@@ -12,8 +12,6 @@ Give AI agents (Claude Code, Codex, Cursor, etc.) direct access to your Telegram
12
12
 
13
13
  ## Installation
14
14
 
15
- Requires Python 3.12+.
16
-
17
15
  **One-liner** (installs [uv](https://docs.astral.sh/uv/) if needed):
18
16
 
19
17
  ```bash
@@ -131,7 +129,7 @@ Read recent messages from a chat. Returns JSONL by default, newest first.
131
129
 
132
130
  ### `tg update`
133
131
 
134
- Upgrade tgcli to the latest version (via `uv tool install --upgrade`).
132
+ Upgrade tgcli to the latest version. Detects the install method and runs the right command (or tells you what to run for Homebrew installs).
135
133
 
136
134
  tgcli checks PyPI for new versions once per day and prints a notice to stderr when an update is available. Set `TGCLI_NO_UPDATE_CHECK=1` to disable.
137
135
 
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "pytgcli"
7
- version = "0.8.0"
7
+ version = "0.8.2"
8
8
  description = "CLI tool to read Telegram messages from the terminal"
9
9
  readme = "README.md"
10
10
  license = "MIT"
@@ -579,7 +579,7 @@ wheels = [
579
579
 
580
580
  [[package]]
581
581
  name = "pytgcli"
582
- version = "0.8.0"
582
+ version = "0.8.2"
583
583
  source = { editable = "." }
584
584
  dependencies = [
585
585
  { name = "keyring" },
@@ -1,17 +0,0 @@
1
- name: Publish to PyPI
2
-
3
- on:
4
- release:
5
- types: [published]
6
-
7
- jobs:
8
- publish:
9
- runs-on: ubuntu-latest
10
- environment: pypi
11
- permissions:
12
- id-token: write
13
- steps:
14
- - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
15
- - uses: astral-sh/setup-uv@eac588ad8def6316056a12d4907a9d4d84ff7a3b # v7.3.0
16
- - run: uv build
17
- - run: uv publish --trusted-publishing always
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