pgcli 4.4.0__tar.gz → 4.6.0__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.
- {pgcli-4.4.0 → pgcli-4.6.0}/.github/PULL_REQUEST_TEMPLATE.md +1 -2
- {pgcli-4.4.0 → pgcli-4.6.0}/.github/workflows/ci.yml +1 -1
- pgcli-4.6.0/.github/workflows/codex-review.yml +91 -0
- {pgcli-4.4.0 → pgcli-4.6.0}/.github/workflows/publish.yml +3 -3
- {pgcli-4.4.0 → pgcli-4.6.0}/.pre-commit-config.yaml +1 -1
- {pgcli-4.4.0 → pgcli-4.6.0}/AUTHORS +10 -0
- {pgcli-4.4.0 → pgcli-4.6.0}/CONTRIBUTING.rst +0 -37
- {pgcli-4.4.0 → pgcli-4.6.0}/Dockerfile +1 -1
- {pgcli-4.4.0 → pgcli-4.6.0}/PKG-INFO +13 -13
- {pgcli-4.4.0 → pgcli-4.6.0}/README.rst +7 -6
- {pgcli-4.4.0 → pgcli-4.6.0}/changelog.rst +54 -1
- pgcli-4.6.0/pgcli/__init__.py +1 -0
- {pgcli-4.4.0 → pgcli-4.6.0}/pgcli/magic.py +1 -1
- {pgcli-4.4.0 → pgcli-4.6.0}/pgcli/main.py +124 -15
- {pgcli-4.4.0 → pgcli-4.6.0}/pgcli/packages/parseutils/__init__.py +2 -0
- {pgcli-4.4.0 → pgcli-4.6.0}/pgcli/packages/parseutils/ctes.py +3 -0
- {pgcli-4.4.0 → pgcli-4.6.0}/pgcli/packages/parseutils/tables.py +3 -0
- {pgcli-4.4.0 → pgcli-4.6.0}/pgcli/packages/parseutils/utils.py +3 -0
- {pgcli-4.4.0 → pgcli-4.6.0}/pgcli/packages/pgliterals/pgliterals.json +1 -0
- {pgcli-4.4.0 → pgcli-4.6.0}/pgcli/packages/prioritization.py +2 -0
- {pgcli-4.4.0 → pgcli-4.6.0}/pgcli/packages/sqlcompletion.py +28 -3
- {pgcli-4.4.0 → pgcli-4.6.0}/pgcli/pgbuffer.py +6 -2
- {pgcli-4.4.0 → pgcli-4.6.0}/pgcli/pgclirc +9 -0
- {pgcli-4.4.0 → pgcli-4.6.0}/pgcli/pgcompleter.py +7 -0
- {pgcli-4.4.0 → pgcli-4.6.0}/pgcli/pgexecute.py +25 -4
- {pgcli-4.4.0 → pgcli-4.6.0}/pgcli.egg-info/PKG-INFO +13 -13
- {pgcli-4.4.0 → pgcli-4.6.0}/pgcli.egg-info/SOURCES.txt +4 -1
- {pgcli-4.4.0 → pgcli-4.6.0}/pgcli.egg-info/requires.txt +2 -2
- pgcli-4.6.0/pgcli.egg-info/scm_file_list.json +122 -0
- pgcli-4.6.0/pgcli.egg-info/scm_version.json +8 -0
- {pgcli-4.4.0 → pgcli-4.6.0}/pyproject.toml +7 -9
- pgcli-4.6.0/release.py +228 -0
- {pgcli-4.4.0 → pgcli-4.6.0}/tests/conftest.py +8 -0
- {pgcli-4.4.0 → pgcli-4.6.0}/tests/test_main.py +106 -0
- {pgcli-4.4.0 → pgcli-4.6.0}/tests/test_naive_completion.py +7 -0
- {pgcli-4.4.0 → pgcli-4.6.0}/tests/test_pgcompleter.py +16 -0
- {pgcli-4.4.0 → pgcli-4.6.0}/tests/test_pgexecute.py +9 -9
- {pgcli-4.4.0 → pgcli-4.6.0}/tests/test_rowlimit.py +26 -2
- {pgcli-4.4.0 → pgcli-4.6.0}/tests/test_smart_completion_public_schema_only.py +6 -0
- {pgcli-4.4.0 → pgcli-4.6.0}/tests/test_sqlcompletion.py +26 -0
- {pgcli-4.4.0 → pgcli-4.6.0}/tests/test_ssh_tunnel.py +52 -22
- pgcli-4.6.0/tests/test_trailing_comments.py +47 -0
- {pgcli-4.4.0 → pgcli-4.6.0}/tox.ini +11 -0
- pgcli-4.4.0/Vagrantfile +0 -138
- pgcli-4.4.0/pgcli/__init__.py +0 -1
- pgcli-4.4.0/release.py +0 -132
- {pgcli-4.4.0 → pgcli-4.6.0}/.coveragerc +0 -0
- {pgcli-4.4.0 → pgcli-4.6.0}/.editorconfig +0 -0
- {pgcli-4.4.0 → pgcli-4.6.0}/.git-blame-ignore-revs +0 -0
- {pgcli-4.4.0 → pgcli-4.6.0}/.github/ISSUE_TEMPLATE.md +0 -0
- {pgcli-4.4.0 → pgcli-4.6.0}/.github/workflows/codeql.yml +0 -0
- {pgcli-4.4.0 → pgcli-4.6.0}/.gitignore +0 -0
- {pgcli-4.4.0 → pgcli-4.6.0}/LICENSE.txt +0 -0
- {pgcli-4.4.0 → pgcli-4.6.0}/MANIFEST.in +0 -0
- {pgcli-4.4.0 → pgcli-4.6.0}/RELEASES.md +0 -0
- {pgcli-4.4.0 → pgcli-4.6.0}/TODO +0 -0
- {pgcli-4.4.0 → pgcli-4.6.0}/pgcli/__main__.py +0 -0
- {pgcli-4.4.0 → pgcli-4.6.0}/pgcli/auth.py +0 -0
- {pgcli-4.4.0 → pgcli-4.6.0}/pgcli/completion_refresher.py +0 -0
- {pgcli-4.4.0 → pgcli-4.6.0}/pgcli/config.py +0 -0
- {pgcli-4.4.0 → pgcli-4.6.0}/pgcli/explain_output_formatter.py +0 -0
- {pgcli-4.4.0 → pgcli-4.6.0}/pgcli/key_bindings.py +0 -0
- {pgcli-4.4.0 → pgcli-4.6.0}/pgcli/packages/__init__.py +0 -0
- {pgcli-4.4.0 → pgcli-4.6.0}/pgcli/packages/formatter/__init__.py +0 -0
- {pgcli-4.4.0 → pgcli-4.6.0}/pgcli/packages/formatter/sqlformatter.py +0 -0
- {pgcli-4.4.0 → pgcli-4.6.0}/pgcli/packages/parseutils/meta.py +0 -0
- {pgcli-4.4.0 → pgcli-4.6.0}/pgcli/packages/pgliterals/__init__.py +0 -0
- {pgcli-4.4.0 → pgcli-4.6.0}/pgcli/packages/pgliterals/main.py +0 -0
- {pgcli-4.4.0 → pgcli-4.6.0}/pgcli/packages/prompt_utils.py +0 -0
- {pgcli-4.4.0 → pgcli-4.6.0}/pgcli/pgstyle.py +0 -0
- {pgcli-4.4.0 → pgcli-4.6.0}/pgcli/pgtoolbar.py +0 -0
- {pgcli-4.4.0 → pgcli-4.6.0}/pgcli/pyev.py +0 -0
- {pgcli-4.4.0 → pgcli-4.6.0}/pgcli-completion.bash +0 -0
- {pgcli-4.4.0 → pgcli-4.6.0}/pgcli.egg-info/dependency_links.txt +0 -0
- {pgcli-4.4.0 → pgcli-4.6.0}/pgcli.egg-info/entry_points.txt +0 -0
- {pgcli-4.4.0 → pgcli-4.6.0}/pgcli.egg-info/top_level.txt +0 -0
- {pgcli-4.4.0 → pgcli-4.6.0}/post-install +0 -0
- {pgcli-4.4.0 → pgcli-4.6.0}/post-remove +0 -0
- {pgcli-4.4.0 → pgcli-4.6.0}/pylintrc +0 -0
- {pgcli-4.4.0 → pgcli-4.6.0}/sanity_checks.txt +0 -0
- {pgcli-4.4.0 → pgcli-4.6.0}/screenshots/image01.png +0 -0
- {pgcli-4.4.0 → pgcli-4.6.0}/screenshots/image02.png +0 -0
- {pgcli-4.4.0 → pgcli-4.6.0}/screenshots/kharkiv-destroyed.jpg +0 -0
- {pgcli-4.4.0 → pgcli-4.6.0}/screenshots/pgcli.gif +0 -0
- {pgcli-4.4.0 → pgcli-4.6.0}/setup.cfg +0 -0
- {pgcli-4.4.0 → pgcli-4.6.0}/tests/features/__init__.py +0 -0
- {pgcli-4.4.0 → pgcli-4.6.0}/tests/features/auto_vertical.feature +0 -0
- {pgcli-4.4.0 → pgcli-4.6.0}/tests/features/basic_commands.feature +0 -0
- {pgcli-4.4.0 → pgcli-4.6.0}/tests/features/crud_database.feature +0 -0
- {pgcli-4.4.0 → pgcli-4.6.0}/tests/features/crud_table.feature +0 -0
- {pgcli-4.4.0 → pgcli-4.6.0}/tests/features/db_utils.py +0 -0
- {pgcli-4.4.0 → pgcli-4.6.0}/tests/features/environment.py +0 -0
- {pgcli-4.4.0 → pgcli-4.6.0}/tests/features/expanded.feature +0 -0
- {pgcli-4.4.0 → pgcli-4.6.0}/tests/features/fixture_data/help.txt +0 -0
- {pgcli-4.4.0 → pgcli-4.6.0}/tests/features/fixture_data/help_commands.txt +0 -0
- {pgcli-4.4.0 → pgcli-4.6.0}/tests/features/fixture_data/mock_pg_service.conf +0 -0
- {pgcli-4.4.0 → pgcli-4.6.0}/tests/features/fixture_utils.py +0 -0
- {pgcli-4.4.0 → pgcli-4.6.0}/tests/features/iocommands.feature +0 -0
- {pgcli-4.4.0 → pgcli-4.6.0}/tests/features/named_queries.feature +0 -0
- {pgcli-4.4.0 → pgcli-4.6.0}/tests/features/pgbouncer.feature +0 -0
- {pgcli-4.4.0 → pgcli-4.6.0}/tests/features/specials.feature +0 -0
- {pgcli-4.4.0 → pgcli-4.6.0}/tests/features/steps/__init__.py +0 -0
- {pgcli-4.4.0 → pgcli-4.6.0}/tests/features/steps/auto_vertical.py +0 -0
- {pgcli-4.4.0 → pgcli-4.6.0}/tests/features/steps/basic_commands.py +0 -0
- {pgcli-4.4.0 → pgcli-4.6.0}/tests/features/steps/crud_database.py +0 -0
- {pgcli-4.4.0 → pgcli-4.6.0}/tests/features/steps/crud_table.py +0 -0
- {pgcli-4.4.0 → pgcli-4.6.0}/tests/features/steps/expanded.py +0 -0
- {pgcli-4.4.0 → pgcli-4.6.0}/tests/features/steps/iocommands.py +0 -0
- {pgcli-4.4.0 → pgcli-4.6.0}/tests/features/steps/named_queries.py +0 -0
- {pgcli-4.4.0 → pgcli-4.6.0}/tests/features/steps/pgbouncer.py +0 -0
- {pgcli-4.4.0 → pgcli-4.6.0}/tests/features/steps/specials.py +0 -0
- {pgcli-4.4.0 → pgcli-4.6.0}/tests/features/steps/wrappers.py +0 -0
- {pgcli-4.4.0 → pgcli-4.6.0}/tests/features/wrappager.py +0 -0
- {pgcli-4.4.0 → pgcli-4.6.0}/tests/formatter/__init__.py +0 -0
- {pgcli-4.4.0 → pgcli-4.6.0}/tests/formatter/test_sqlformatter.py +0 -0
- {pgcli-4.4.0 → pgcli-4.6.0}/tests/metadata.py +0 -0
- {pgcli-4.4.0 → pgcli-4.6.0}/tests/parseutils/test_ctes.py +0 -0
- {pgcli-4.4.0 → pgcli-4.6.0}/tests/parseutils/test_function_metadata.py +0 -0
- {pgcli-4.4.0 → pgcli-4.6.0}/tests/parseutils/test_parseutils.py +0 -0
- {pgcli-4.4.0 → pgcli-4.6.0}/tests/pytest.ini +0 -0
- {pgcli-4.4.0 → pgcli-4.6.0}/tests/test_application_name.py +0 -0
- {pgcli-4.4.0 → pgcli-4.6.0}/tests/test_auth.py +0 -0
- {pgcli-4.4.0 → pgcli-4.6.0}/tests/test_completion_refresher.py +0 -0
- {pgcli-4.4.0 → pgcli-4.6.0}/tests/test_config.py +0 -0
- {pgcli-4.4.0 → pgcli-4.6.0}/tests/test_fuzzy_completion.py +0 -0
- {pgcli-4.4.0 → pgcli-4.6.0}/tests/test_init_commands_simple.py +0 -0
- {pgcli-4.4.0 → pgcli-4.6.0}/tests/test_pgspecial.py +0 -0
- {pgcli-4.4.0 → pgcli-4.6.0}/tests/test_prioritization.py +0 -0
- {pgcli-4.4.0 → pgcli-4.6.0}/tests/test_prompt_utils.py +0 -0
- {pgcli-4.4.0 → pgcli-4.6.0}/tests/test_smart_completion_multiple_schemata.py +0 -0
- {pgcli-4.4.0 → pgcli-4.6.0}/tests/utils.py +0 -0
|
@@ -1,12 +1,11 @@
|
|
|
1
1
|
## Description
|
|
2
2
|
<!--- Describe your changes in detail. -->
|
|
3
3
|
|
|
4
|
-
|
|
5
|
-
|
|
6
4
|
## Checklist
|
|
7
5
|
<!--- We appreciate your help and want to give you credit. Please take a moment to put an `x` in the boxes below as you complete them. -->
|
|
8
6
|
- [ ] I've added this contribution to the `changelog.rst`.
|
|
9
7
|
- [ ] I've added my name to the `AUTHORS` file (or it's already there).
|
|
10
8
|
<!-- We would appreciate if you comply with our code style guidelines. -->
|
|
11
9
|
- [ ] I installed pre-commit hooks (`pip install pre-commit && pre-commit install`).
|
|
10
|
+
- [ ] I verified that my changes work as expected (this may include manually testing them in your local environment, or in other available environments). Cross this out if not relevant (for example, if you're making a documentation change).
|
|
12
11
|
- [x] Please squash merge this pull request (uncheck if you'd like us to merge as multiple commits)
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
name: Codex Review
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
pull_request_target:
|
|
5
|
+
types: [opened, labeled, reopened, ready_for_review]
|
|
6
|
+
paths-ignore:
|
|
7
|
+
- '**.md'
|
|
8
|
+
- '**.rst'
|
|
9
|
+
- 'LICENSE.txt'
|
|
10
|
+
- 'doc/**/*.txt'
|
|
11
|
+
- '**/AUTHORS'
|
|
12
|
+
- '**/SPONSORS'
|
|
13
|
+
- '**/TIPS'
|
|
14
|
+
- 'pgcli-completion.bash'
|
|
15
|
+
- 'sanity_checks.txt'
|
|
16
|
+
- 'post-install'
|
|
17
|
+
- 'post-remove'
|
|
18
|
+
- 'screenshots/**'
|
|
19
|
+
|
|
20
|
+
jobs:
|
|
21
|
+
codex-review:
|
|
22
|
+
if: github.event.pull_request.draft == false || (github.event.action == 'labeled' && contains(github.event.pull_request.labels.*.name, 'codex'))
|
|
23
|
+
runs-on: ubuntu-latest
|
|
24
|
+
permissions:
|
|
25
|
+
contents: read
|
|
26
|
+
outputs:
|
|
27
|
+
final_message: ${{ steps.run_codex.outputs.final-message }}
|
|
28
|
+
|
|
29
|
+
steps:
|
|
30
|
+
- name: Check out PR merge commit
|
|
31
|
+
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
|
32
|
+
with:
|
|
33
|
+
ref: refs/pull/${{ github.event.pull_request.number }}/merge
|
|
34
|
+
|
|
35
|
+
- name: Fetch base and head refs
|
|
36
|
+
run: |
|
|
37
|
+
git fetch --no-tags origin \
|
|
38
|
+
${{ github.event.pull_request.base.ref }} \
|
|
39
|
+
+refs/pull/${{ github.event.pull_request.number }}/head
|
|
40
|
+
|
|
41
|
+
- name: Run Codex review
|
|
42
|
+
id: run_codex
|
|
43
|
+
uses: openai/codex-action@v1
|
|
44
|
+
env:
|
|
45
|
+
# Use env variables to handle untrusted metadata safely
|
|
46
|
+
PR_TITLE: ${{ github.event.pull_request.title }}
|
|
47
|
+
PR_BODY: ${{ github.event.pull_request.body }}
|
|
48
|
+
with:
|
|
49
|
+
openai-api-key: ${{ secrets.OPENAI_API_KEY }}
|
|
50
|
+
prompt: |
|
|
51
|
+
You are reviewing PR #${{ github.event.pull_request.number }} for ${{ github.repository }}.
|
|
52
|
+
|
|
53
|
+
Only review changes introduced by this PR:
|
|
54
|
+
git log --oneline ${{ github.event.pull_request.base.sha }}...${{ github.event.pull_request.head.sha }}
|
|
55
|
+
|
|
56
|
+
Focus on:
|
|
57
|
+
- correctness bugs and regressions
|
|
58
|
+
- security concerns
|
|
59
|
+
- missing tests or edge cases
|
|
60
|
+
|
|
61
|
+
Keep feedback concise and actionable.
|
|
62
|
+
|
|
63
|
+
Pull request title and body:
|
|
64
|
+
----
|
|
65
|
+
$PR_TITLE
|
|
66
|
+
$PR_BODY
|
|
67
|
+
|
|
68
|
+
post-feedback:
|
|
69
|
+
runs-on: ubuntu-latest
|
|
70
|
+
needs: codex-review
|
|
71
|
+
if: needs.codex-review.outputs.final_message != ''
|
|
72
|
+
permissions:
|
|
73
|
+
issues: write
|
|
74
|
+
pull-requests: write
|
|
75
|
+
|
|
76
|
+
steps:
|
|
77
|
+
- name: Post Codex review as PR comment
|
|
78
|
+
uses: actions/github-script@v8
|
|
79
|
+
env:
|
|
80
|
+
CODEX_FINAL_MESSAGE: |
|
|
81
|
+
${{ format('## Codex Review
|
|
82
|
+
{0}', needs.codex-review.outputs.final_message) }}
|
|
83
|
+
with:
|
|
84
|
+
github-token: ${{ github.token }}
|
|
85
|
+
script: |
|
|
86
|
+
await github.rest.issues.createComment({
|
|
87
|
+
owner: context.repo.owner,
|
|
88
|
+
repo: context.repo.repo,
|
|
89
|
+
issue_number: context.payload.pull_request.number,
|
|
90
|
+
body: process.env.CODEX_FINAL_MESSAGE,
|
|
91
|
+
});
|
|
@@ -13,7 +13,7 @@ jobs:
|
|
|
13
13
|
|
|
14
14
|
strategy:
|
|
15
15
|
matrix:
|
|
16
|
-
python-version: ["3.
|
|
16
|
+
python-version: ["3.10", "3.11", "3.12", "3.13", "3.14"]
|
|
17
17
|
|
|
18
18
|
services:
|
|
19
19
|
postgres:
|
|
@@ -68,7 +68,7 @@ jobs:
|
|
|
68
68
|
python-version: '3.13'
|
|
69
69
|
|
|
70
70
|
- name: Install dependencies
|
|
71
|
-
run: uv sync --all-extras -p 3.
|
|
71
|
+
run: uv sync --all-extras -p 3.14
|
|
72
72
|
|
|
73
73
|
- name: Build
|
|
74
74
|
run: uv build
|
|
@@ -94,4 +94,4 @@ jobs:
|
|
|
94
94
|
name: python-packages
|
|
95
95
|
path: dist/
|
|
96
96
|
- name: Publish to PyPI
|
|
97
|
-
uses: pypa/gh-action-pypi-publish@76f52bc884231f62b9a034ebfe128415bbaabdfc # v1.12.4
|
|
97
|
+
uses: pypa/gh-action-pypi-publish@76f52bc884231f62b9a034ebfe128415bbaabdfc # v1.12.4
|
|
@@ -144,6 +144,16 @@ Contributors:
|
|
|
144
144
|
* Jay Knight (jay-knight)
|
|
145
145
|
* fbdb
|
|
146
146
|
* Charbel Jacquin (charbeljc)
|
|
147
|
+
* Jeronimo Garcia (bechampion)
|
|
148
|
+
* Devadathan M B (devadathanmb)
|
|
149
|
+
* Charalampos Stratakis
|
|
150
|
+
* Laszlo Bimba (bimlas)
|
|
151
|
+
* Anjanna
|
|
152
|
+
* Shayan Golshani (shgol)
|
|
153
|
+
* Tommi Kyntölä (kynde)
|
|
154
|
+
* Diego
|
|
155
|
+
* Chris (ChrisJr404)
|
|
156
|
+
* Pieter Ouwerkerk (pouwerkerk)
|
|
147
157
|
|
|
148
158
|
Creator:
|
|
149
159
|
--------
|
|
@@ -101,43 +101,6 @@ Within the project, create a file: .vscode\\launch.json like below.
|
|
|
101
101
|
]
|
|
102
102
|
}
|
|
103
103
|
|
|
104
|
-
Building RPM and DEB packages
|
|
105
|
-
-----------------------------
|
|
106
|
-
|
|
107
|
-
You will need Vagrant 1.7.2 or higher. In the project root there is a
|
|
108
|
-
Vagrantfile that is setup to do multi-vm provisioning. If you're setting things
|
|
109
|
-
up for the first time, then do:
|
|
110
|
-
|
|
111
|
-
::
|
|
112
|
-
|
|
113
|
-
$ version=x.y.z vagrant up debian
|
|
114
|
-
$ version=x.y.z vagrant up centos
|
|
115
|
-
|
|
116
|
-
If you already have those VMs setup and you're merely creating a new version of
|
|
117
|
-
DEB or RPM package, then you can do:
|
|
118
|
-
|
|
119
|
-
::
|
|
120
|
-
|
|
121
|
-
$ version=x.y.z vagrant provision
|
|
122
|
-
|
|
123
|
-
That will create a .deb file and a .rpm file.
|
|
124
|
-
|
|
125
|
-
The deb package can be installed as follows:
|
|
126
|
-
|
|
127
|
-
::
|
|
128
|
-
|
|
129
|
-
$ sudo dpkg -i pgcli*.deb # if dependencies are available.
|
|
130
|
-
|
|
131
|
-
or
|
|
132
|
-
|
|
133
|
-
$ sudo apt-get install -f pgcli*.deb # if dependencies are not available.
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
The rpm package can be installed as follows:
|
|
137
|
-
|
|
138
|
-
::
|
|
139
|
-
|
|
140
|
-
$ sudo yum install pgcli*.rpm
|
|
141
104
|
|
|
142
105
|
Running the integration tests
|
|
143
106
|
-----------------------------
|
|
@@ -1,36 +1,35 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: pgcli
|
|
3
|
-
Version: 4.
|
|
3
|
+
Version: 4.6.0
|
|
4
4
|
Summary: CLI for Postgres Database. With auto-completion and syntax highlighting.
|
|
5
5
|
Author-email: Pgcli Core Team <pgcli-dev@googlegroups.com>
|
|
6
|
-
License: BSD
|
|
6
|
+
License-Expression: BSD-3-Clause
|
|
7
7
|
Project-URL: Homepage, https://pgcli.com
|
|
8
8
|
Classifier: Intended Audience :: Developers
|
|
9
|
-
Classifier: License :: OSI Approved :: BSD License
|
|
10
9
|
Classifier: Operating System :: Unix
|
|
11
10
|
Classifier: Programming Language :: Python
|
|
12
11
|
Classifier: Programming Language :: Python :: 3
|
|
13
|
-
Classifier: Programming Language :: Python :: 3.9
|
|
14
12
|
Classifier: Programming Language :: Python :: 3.10
|
|
15
13
|
Classifier: Programming Language :: Python :: 3.11
|
|
16
14
|
Classifier: Programming Language :: Python :: 3.12
|
|
17
15
|
Classifier: Programming Language :: Python :: 3.13
|
|
16
|
+
Classifier: Programming Language :: Python :: 3.14
|
|
18
17
|
Classifier: Programming Language :: SQL
|
|
19
18
|
Classifier: Topic :: Database
|
|
20
19
|
Classifier: Topic :: Database :: Front-Ends
|
|
21
20
|
Classifier: Topic :: Software Development
|
|
22
21
|
Classifier: Topic :: Software Development :: Libraries :: Python Modules
|
|
23
|
-
Requires-Python: >=3.
|
|
22
|
+
Requires-Python: >=3.10
|
|
24
23
|
Description-Content-Type: text/x-rst
|
|
25
24
|
License-File: LICENSE.txt
|
|
26
25
|
License-File: AUTHORS
|
|
27
26
|
Requires-Dist: pgspecial>=2.0.0
|
|
28
|
-
Requires-Dist: click
|
|
27
|
+
Requires-Dist: click!=8.1.8,!=8.2.*,!=8.3.0,<9,>=4.1
|
|
29
28
|
Requires-Dist: Pygments>=2.0
|
|
30
29
|
Requires-Dist: prompt_toolkit<4.0.0,>=2.0.6
|
|
31
30
|
Requires-Dist: psycopg>=3.0.14; sys_platform != "win32"
|
|
32
31
|
Requires-Dist: psycopg-binary>=3.0.14; sys_platform == "win32"
|
|
33
|
-
Requires-Dist: sqlparse<0.
|
|
32
|
+
Requires-Dist: sqlparse<0.7,>=0.3.0
|
|
34
33
|
Requires-Dist: configobj>=5.0.6
|
|
35
34
|
Requires-Dist: cli_helpers[styles]>=2.4.0
|
|
36
35
|
Requires-Dist: setproctitle>=1.1.9; sys_platform != "win32" and "CYGWIN" not in sys_platform
|
|
@@ -82,9 +81,9 @@ A REPL for Postgres
|
|
|
82
81
|
|
|
83
82
|
This is a postgres client that does auto-completion and syntax highlighting.
|
|
84
83
|
|
|
85
|
-
Home Page:
|
|
84
|
+
Home Page: https://pgcli.com
|
|
86
85
|
|
|
87
|
-
MySQL Equivalent:
|
|
86
|
+
MySQL Equivalent: https://mycli.net
|
|
88
87
|
|
|
89
88
|
.. image:: screenshots/pgcli.gif
|
|
90
89
|
.. image:: screenshots/image01.png
|
|
@@ -213,8 +212,8 @@ https://github.com/dbcli/pgcli/blob/main/CONTRIBUTING.rst
|
|
|
213
212
|
|
|
214
213
|
Please feel free to reach out to us if you need help.
|
|
215
214
|
|
|
216
|
-
* Amjith, pgcli author: amjith.r@gmail.com, Twitter: `@amjithr <
|
|
217
|
-
* Irina, pgcli maintainer: i.chernyavska@gmail.com, Twitter: `@irinatruong <
|
|
215
|
+
* Amjith, pgcli author: amjith.r@gmail.com, Twitter: `@amjithr <https://twitter.com/amjithr>`_
|
|
216
|
+
* Irina, pgcli maintainer: i.chernyavska@gmail.com, Twitter: `@irinatruong <https://twitter.com/irinatruong>`_
|
|
218
217
|
|
|
219
218
|
Detailed Installation Instructions:
|
|
220
219
|
-----------------------------------
|
|
@@ -395,17 +394,18 @@ Pgcli dropped support for:
|
|
|
395
394
|
|
|
396
395
|
* Python<3.8 as of 4.0.0.
|
|
397
396
|
* Python<3.9 as of 4.2.0.
|
|
397
|
+
* Python<10 as of 4.5.0.
|
|
398
398
|
|
|
399
399
|
Thanks:
|
|
400
400
|
-------
|
|
401
401
|
|
|
402
402
|
A special thanks to `Jonathan Slenders <https://twitter.com/jonathan_s>`_ for
|
|
403
|
-
creating `Python Prompt Toolkit <
|
|
403
|
+
creating `Python Prompt Toolkit <https://github.com/jonathanslenders/python-prompt-toolkit>`_,
|
|
404
404
|
which is quite literally the backbone library, that made this app possible.
|
|
405
405
|
Jonathan has also provided valuable feedback and support during the development
|
|
406
406
|
of this app.
|
|
407
407
|
|
|
408
|
-
`Click <
|
|
408
|
+
`Click <https://click.pocoo.org/>`_ is used for command line option parsing
|
|
409
409
|
and printing error messages.
|
|
410
410
|
|
|
411
411
|
Thanks to `psycopg <https://www.psycopg.org/>`_ for providing a rock solid
|
|
@@ -28,9 +28,9 @@ A REPL for Postgres
|
|
|
28
28
|
|
|
29
29
|
This is a postgres client that does auto-completion and syntax highlighting.
|
|
30
30
|
|
|
31
|
-
Home Page:
|
|
31
|
+
Home Page: https://pgcli.com
|
|
32
32
|
|
|
33
|
-
MySQL Equivalent:
|
|
33
|
+
MySQL Equivalent: https://mycli.net
|
|
34
34
|
|
|
35
35
|
.. image:: screenshots/pgcli.gif
|
|
36
36
|
.. image:: screenshots/image01.png
|
|
@@ -159,8 +159,8 @@ https://github.com/dbcli/pgcli/blob/main/CONTRIBUTING.rst
|
|
|
159
159
|
|
|
160
160
|
Please feel free to reach out to us if you need help.
|
|
161
161
|
|
|
162
|
-
* Amjith, pgcli author: amjith.r@gmail.com, Twitter: `@amjithr <
|
|
163
|
-
* Irina, pgcli maintainer: i.chernyavska@gmail.com, Twitter: `@irinatruong <
|
|
162
|
+
* Amjith, pgcli author: amjith.r@gmail.com, Twitter: `@amjithr <https://twitter.com/amjithr>`_
|
|
163
|
+
* Irina, pgcli maintainer: i.chernyavska@gmail.com, Twitter: `@irinatruong <https://twitter.com/irinatruong>`_
|
|
164
164
|
|
|
165
165
|
Detailed Installation Instructions:
|
|
166
166
|
-----------------------------------
|
|
@@ -341,17 +341,18 @@ Pgcli dropped support for:
|
|
|
341
341
|
|
|
342
342
|
* Python<3.8 as of 4.0.0.
|
|
343
343
|
* Python<3.9 as of 4.2.0.
|
|
344
|
+
* Python<10 as of 4.5.0.
|
|
344
345
|
|
|
345
346
|
Thanks:
|
|
346
347
|
-------
|
|
347
348
|
|
|
348
349
|
A special thanks to `Jonathan Slenders <https://twitter.com/jonathan_s>`_ for
|
|
349
|
-
creating `Python Prompt Toolkit <
|
|
350
|
+
creating `Python Prompt Toolkit <https://github.com/jonathanslenders/python-prompt-toolkit>`_,
|
|
350
351
|
which is quite literally the backbone library, that made this app possible.
|
|
351
352
|
Jonathan has also provided valuable feedback and support during the development
|
|
352
353
|
of this app.
|
|
353
354
|
|
|
354
|
-
`Click <
|
|
355
|
+
`Click <https://click.pocoo.org/>`_ is used for command line option parsing
|
|
355
356
|
and printing error messages.
|
|
356
357
|
|
|
357
358
|
Thanks to `psycopg <https://www.psycopg.org/>`_ for providing a rock solid
|
|
@@ -1,5 +1,58 @@
|
|
|
1
|
+
4.6.0 (2026-08-26)
|
|
2
|
+
==================
|
|
3
|
+
|
|
4
|
+
Bug fixes:
|
|
5
|
+
----------
|
|
6
|
+
* Restore cursor shape behaviour for Emacs mode
|
|
7
|
+
* Fix ``TypeError: cannot use a string pattern on a bytes-like object`` when
|
|
8
|
+
completion metadata comes back as bytes (e.g. ``SQL_ASCII`` client encoding).
|
|
9
|
+
* Suggest columns, not datatypes, after a column literally named ``type`` in a ``SELECT`` list.
|
|
10
|
+
* Allow ``sqlparse`` 0.6.x. sqlparse 0.6.0 fixes several denial-of-service
|
|
11
|
+
issues (CVE-2026-59893, CVE-2026-54284, CVE-2026-71491) and a string-escaping
|
|
12
|
+
bug (CVE-2026-59894); the previous ``<0.6`` cap prevented users from
|
|
13
|
+
installing the fixed release.
|
|
14
|
+
|
|
15
|
+
Features:
|
|
16
|
+
---------
|
|
17
|
+
* Honor the ``PSQL_EDITOR`` environment variable when opening the external
|
|
18
|
+
editor (``\\e``, ``\\ev``, ``\\ef``, ``\\ne``), matching psql's precedence of
|
|
19
|
+
``PSQL_EDITOR``, then ``EDITOR``, then ``VISUAL`` ([issue 1398](https://github.com/dbcli/pgcli/issues/1398)).
|
|
20
|
+
* Add ``\\ne <name>`` to edit a named query in the external editor. Loads the
|
|
21
|
+
named query's SQL into ``$EDITOR``; on save it is written back to the
|
|
22
|
+
``[named queries]`` section, creating it if it does not exist. Complements
|
|
23
|
+
``\\ns`` (save) by making longer queries easier to edit ([issue 1430](https://github.com/dbcli/pgcli/issues/1430)).
|
|
24
|
+
* Enable ``.pgpass`` support for SSH tunnel connections.
|
|
25
|
+
* Preserve original hostname for ``.pgpass`` lookup using PostgreSQL's ``hostaddr`` parameter
|
|
26
|
+
* SSH tunnel endpoint (``127.0.0.1``) is passed via ``hostaddr``, keeping ``host`` for ``.pgpass``
|
|
27
|
+
* Works with both DSN and host/port connection styles
|
|
28
|
+
|
|
29
|
+
4.5.0 (2026-06-02)
|
|
30
|
+
==================
|
|
31
|
+
|
|
32
|
+
Features:
|
|
33
|
+
---------
|
|
34
|
+
* Add support for `\\T` prompt escape sequence to display transaction status (similar to psql's `%x`).
|
|
35
|
+
* Add cursor shape support for vi mode. When ``vi = True``, the terminal cursor now
|
|
36
|
+
reflects the current editing mode: beam in INSERT, block in NORMAL, underline in REPLACE.
|
|
37
|
+
Uses prompt_toolkit's ``ModalCursorShapeConfig``.
|
|
38
|
+
* Add the option to force-quit pgcli when a transaction is in progress.
|
|
39
|
+
* Add support of Python 3.14.
|
|
40
|
+
* Drop support of Python 3.9.
|
|
41
|
+
|
|
42
|
+
Bug fixes:
|
|
43
|
+
----------
|
|
44
|
+
* Add `VERSION` to built-in function completion so `SELECT VERSION();` is suggested.
|
|
45
|
+
* Hide timezone notice at startup when local and server timezones are the same.
|
|
46
|
+
* Let `sqlparse` accept arbitrarily-large queries.
|
|
47
|
+
* Respect user-specified `LIMIT` clauses when the limit value starts on a new line.
|
|
48
|
+
* Fix trailing SQL comments preventing query submission and execution.
|
|
49
|
+
* ``SELECT 1; -- note`` now submits correctly in multiline mode
|
|
50
|
+
* ``rstrip(";")`` in ``pgexecute.py`` now handles comments after the semicolon
|
|
51
|
+
* Fix completion crash when tables are created during refresh.
|
|
52
|
+
* Suggest columns after `GROUP BY`, like `ORDER BY` already does.
|
|
53
|
+
|
|
1
54
|
4.4.0 (2025-12-24)
|
|
2
|
-
|
|
55
|
+
==================
|
|
3
56
|
|
|
4
57
|
Features:
|
|
5
58
|
---------
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
__version__ = "4.6.0"
|
|
@@ -40,7 +40,7 @@ def pgcli_line_magic(line):
|
|
|
40
40
|
# from the sqlalchemy connection, so just grab the url and make a
|
|
41
41
|
# new connection
|
|
42
42
|
pgcli = PGCli()
|
|
43
|
-
u = conn.
|
|
43
|
+
u = conn.url
|
|
44
44
|
_logger.debug("New pgcli: %r", str(u))
|
|
45
45
|
|
|
46
46
|
pgcli.connect_uri(str(u._replace(drivername="postgres")))
|