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.
Files changed (131) hide show
  1. {pgcli-4.4.0 → pgcli-4.6.0}/.github/PULL_REQUEST_TEMPLATE.md +1 -2
  2. {pgcli-4.4.0 → pgcli-4.6.0}/.github/workflows/ci.yml +1 -1
  3. pgcli-4.6.0/.github/workflows/codex-review.yml +91 -0
  4. {pgcli-4.4.0 → pgcli-4.6.0}/.github/workflows/publish.yml +3 -3
  5. {pgcli-4.4.0 → pgcli-4.6.0}/.pre-commit-config.yaml +1 -1
  6. {pgcli-4.4.0 → pgcli-4.6.0}/AUTHORS +10 -0
  7. {pgcli-4.4.0 → pgcli-4.6.0}/CONTRIBUTING.rst +0 -37
  8. {pgcli-4.4.0 → pgcli-4.6.0}/Dockerfile +1 -1
  9. {pgcli-4.4.0 → pgcli-4.6.0}/PKG-INFO +13 -13
  10. {pgcli-4.4.0 → pgcli-4.6.0}/README.rst +7 -6
  11. {pgcli-4.4.0 → pgcli-4.6.0}/changelog.rst +54 -1
  12. pgcli-4.6.0/pgcli/__init__.py +1 -0
  13. {pgcli-4.4.0 → pgcli-4.6.0}/pgcli/magic.py +1 -1
  14. {pgcli-4.4.0 → pgcli-4.6.0}/pgcli/main.py +124 -15
  15. {pgcli-4.4.0 → pgcli-4.6.0}/pgcli/packages/parseutils/__init__.py +2 -0
  16. {pgcli-4.4.0 → pgcli-4.6.0}/pgcli/packages/parseutils/ctes.py +3 -0
  17. {pgcli-4.4.0 → pgcli-4.6.0}/pgcli/packages/parseutils/tables.py +3 -0
  18. {pgcli-4.4.0 → pgcli-4.6.0}/pgcli/packages/parseutils/utils.py +3 -0
  19. {pgcli-4.4.0 → pgcli-4.6.0}/pgcli/packages/pgliterals/pgliterals.json +1 -0
  20. {pgcli-4.4.0 → pgcli-4.6.0}/pgcli/packages/prioritization.py +2 -0
  21. {pgcli-4.4.0 → pgcli-4.6.0}/pgcli/packages/sqlcompletion.py +28 -3
  22. {pgcli-4.4.0 → pgcli-4.6.0}/pgcli/pgbuffer.py +6 -2
  23. {pgcli-4.4.0 → pgcli-4.6.0}/pgcli/pgclirc +9 -0
  24. {pgcli-4.4.0 → pgcli-4.6.0}/pgcli/pgcompleter.py +7 -0
  25. {pgcli-4.4.0 → pgcli-4.6.0}/pgcli/pgexecute.py +25 -4
  26. {pgcli-4.4.0 → pgcli-4.6.0}/pgcli.egg-info/PKG-INFO +13 -13
  27. {pgcli-4.4.0 → pgcli-4.6.0}/pgcli.egg-info/SOURCES.txt +4 -1
  28. {pgcli-4.4.0 → pgcli-4.6.0}/pgcli.egg-info/requires.txt +2 -2
  29. pgcli-4.6.0/pgcli.egg-info/scm_file_list.json +122 -0
  30. pgcli-4.6.0/pgcli.egg-info/scm_version.json +8 -0
  31. {pgcli-4.4.0 → pgcli-4.6.0}/pyproject.toml +7 -9
  32. pgcli-4.6.0/release.py +228 -0
  33. {pgcli-4.4.0 → pgcli-4.6.0}/tests/conftest.py +8 -0
  34. {pgcli-4.4.0 → pgcli-4.6.0}/tests/test_main.py +106 -0
  35. {pgcli-4.4.0 → pgcli-4.6.0}/tests/test_naive_completion.py +7 -0
  36. {pgcli-4.4.0 → pgcli-4.6.0}/tests/test_pgcompleter.py +16 -0
  37. {pgcli-4.4.0 → pgcli-4.6.0}/tests/test_pgexecute.py +9 -9
  38. {pgcli-4.4.0 → pgcli-4.6.0}/tests/test_rowlimit.py +26 -2
  39. {pgcli-4.4.0 → pgcli-4.6.0}/tests/test_smart_completion_public_schema_only.py +6 -0
  40. {pgcli-4.4.0 → pgcli-4.6.0}/tests/test_sqlcompletion.py +26 -0
  41. {pgcli-4.4.0 → pgcli-4.6.0}/tests/test_ssh_tunnel.py +52 -22
  42. pgcli-4.6.0/tests/test_trailing_comments.py +47 -0
  43. {pgcli-4.4.0 → pgcli-4.6.0}/tox.ini +11 -0
  44. pgcli-4.4.0/Vagrantfile +0 -138
  45. pgcli-4.4.0/pgcli/__init__.py +0 -1
  46. pgcli-4.4.0/release.py +0 -132
  47. {pgcli-4.4.0 → pgcli-4.6.0}/.coveragerc +0 -0
  48. {pgcli-4.4.0 → pgcli-4.6.0}/.editorconfig +0 -0
  49. {pgcli-4.4.0 → pgcli-4.6.0}/.git-blame-ignore-revs +0 -0
  50. {pgcli-4.4.0 → pgcli-4.6.0}/.github/ISSUE_TEMPLATE.md +0 -0
  51. {pgcli-4.4.0 → pgcli-4.6.0}/.github/workflows/codeql.yml +0 -0
  52. {pgcli-4.4.0 → pgcli-4.6.0}/.gitignore +0 -0
  53. {pgcli-4.4.0 → pgcli-4.6.0}/LICENSE.txt +0 -0
  54. {pgcli-4.4.0 → pgcli-4.6.0}/MANIFEST.in +0 -0
  55. {pgcli-4.4.0 → pgcli-4.6.0}/RELEASES.md +0 -0
  56. {pgcli-4.4.0 → pgcli-4.6.0}/TODO +0 -0
  57. {pgcli-4.4.0 → pgcli-4.6.0}/pgcli/__main__.py +0 -0
  58. {pgcli-4.4.0 → pgcli-4.6.0}/pgcli/auth.py +0 -0
  59. {pgcli-4.4.0 → pgcli-4.6.0}/pgcli/completion_refresher.py +0 -0
  60. {pgcli-4.4.0 → pgcli-4.6.0}/pgcli/config.py +0 -0
  61. {pgcli-4.4.0 → pgcli-4.6.0}/pgcli/explain_output_formatter.py +0 -0
  62. {pgcli-4.4.0 → pgcli-4.6.0}/pgcli/key_bindings.py +0 -0
  63. {pgcli-4.4.0 → pgcli-4.6.0}/pgcli/packages/__init__.py +0 -0
  64. {pgcli-4.4.0 → pgcli-4.6.0}/pgcli/packages/formatter/__init__.py +0 -0
  65. {pgcli-4.4.0 → pgcli-4.6.0}/pgcli/packages/formatter/sqlformatter.py +0 -0
  66. {pgcli-4.4.0 → pgcli-4.6.0}/pgcli/packages/parseutils/meta.py +0 -0
  67. {pgcli-4.4.0 → pgcli-4.6.0}/pgcli/packages/pgliterals/__init__.py +0 -0
  68. {pgcli-4.4.0 → pgcli-4.6.0}/pgcli/packages/pgliterals/main.py +0 -0
  69. {pgcli-4.4.0 → pgcli-4.6.0}/pgcli/packages/prompt_utils.py +0 -0
  70. {pgcli-4.4.0 → pgcli-4.6.0}/pgcli/pgstyle.py +0 -0
  71. {pgcli-4.4.0 → pgcli-4.6.0}/pgcli/pgtoolbar.py +0 -0
  72. {pgcli-4.4.0 → pgcli-4.6.0}/pgcli/pyev.py +0 -0
  73. {pgcli-4.4.0 → pgcli-4.6.0}/pgcli-completion.bash +0 -0
  74. {pgcli-4.4.0 → pgcli-4.6.0}/pgcli.egg-info/dependency_links.txt +0 -0
  75. {pgcli-4.4.0 → pgcli-4.6.0}/pgcli.egg-info/entry_points.txt +0 -0
  76. {pgcli-4.4.0 → pgcli-4.6.0}/pgcli.egg-info/top_level.txt +0 -0
  77. {pgcli-4.4.0 → pgcli-4.6.0}/post-install +0 -0
  78. {pgcli-4.4.0 → pgcli-4.6.0}/post-remove +0 -0
  79. {pgcli-4.4.0 → pgcli-4.6.0}/pylintrc +0 -0
  80. {pgcli-4.4.0 → pgcli-4.6.0}/sanity_checks.txt +0 -0
  81. {pgcli-4.4.0 → pgcli-4.6.0}/screenshots/image01.png +0 -0
  82. {pgcli-4.4.0 → pgcli-4.6.0}/screenshots/image02.png +0 -0
  83. {pgcli-4.4.0 → pgcli-4.6.0}/screenshots/kharkiv-destroyed.jpg +0 -0
  84. {pgcli-4.4.0 → pgcli-4.6.0}/screenshots/pgcli.gif +0 -0
  85. {pgcli-4.4.0 → pgcli-4.6.0}/setup.cfg +0 -0
  86. {pgcli-4.4.0 → pgcli-4.6.0}/tests/features/__init__.py +0 -0
  87. {pgcli-4.4.0 → pgcli-4.6.0}/tests/features/auto_vertical.feature +0 -0
  88. {pgcli-4.4.0 → pgcli-4.6.0}/tests/features/basic_commands.feature +0 -0
  89. {pgcli-4.4.0 → pgcli-4.6.0}/tests/features/crud_database.feature +0 -0
  90. {pgcli-4.4.0 → pgcli-4.6.0}/tests/features/crud_table.feature +0 -0
  91. {pgcli-4.4.0 → pgcli-4.6.0}/tests/features/db_utils.py +0 -0
  92. {pgcli-4.4.0 → pgcli-4.6.0}/tests/features/environment.py +0 -0
  93. {pgcli-4.4.0 → pgcli-4.6.0}/tests/features/expanded.feature +0 -0
  94. {pgcli-4.4.0 → pgcli-4.6.0}/tests/features/fixture_data/help.txt +0 -0
  95. {pgcli-4.4.0 → pgcli-4.6.0}/tests/features/fixture_data/help_commands.txt +0 -0
  96. {pgcli-4.4.0 → pgcli-4.6.0}/tests/features/fixture_data/mock_pg_service.conf +0 -0
  97. {pgcli-4.4.0 → pgcli-4.6.0}/tests/features/fixture_utils.py +0 -0
  98. {pgcli-4.4.0 → pgcli-4.6.0}/tests/features/iocommands.feature +0 -0
  99. {pgcli-4.4.0 → pgcli-4.6.0}/tests/features/named_queries.feature +0 -0
  100. {pgcli-4.4.0 → pgcli-4.6.0}/tests/features/pgbouncer.feature +0 -0
  101. {pgcli-4.4.0 → pgcli-4.6.0}/tests/features/specials.feature +0 -0
  102. {pgcli-4.4.0 → pgcli-4.6.0}/tests/features/steps/__init__.py +0 -0
  103. {pgcli-4.4.0 → pgcli-4.6.0}/tests/features/steps/auto_vertical.py +0 -0
  104. {pgcli-4.4.0 → pgcli-4.6.0}/tests/features/steps/basic_commands.py +0 -0
  105. {pgcli-4.4.0 → pgcli-4.6.0}/tests/features/steps/crud_database.py +0 -0
  106. {pgcli-4.4.0 → pgcli-4.6.0}/tests/features/steps/crud_table.py +0 -0
  107. {pgcli-4.4.0 → pgcli-4.6.0}/tests/features/steps/expanded.py +0 -0
  108. {pgcli-4.4.0 → pgcli-4.6.0}/tests/features/steps/iocommands.py +0 -0
  109. {pgcli-4.4.0 → pgcli-4.6.0}/tests/features/steps/named_queries.py +0 -0
  110. {pgcli-4.4.0 → pgcli-4.6.0}/tests/features/steps/pgbouncer.py +0 -0
  111. {pgcli-4.4.0 → pgcli-4.6.0}/tests/features/steps/specials.py +0 -0
  112. {pgcli-4.4.0 → pgcli-4.6.0}/tests/features/steps/wrappers.py +0 -0
  113. {pgcli-4.4.0 → pgcli-4.6.0}/tests/features/wrappager.py +0 -0
  114. {pgcli-4.4.0 → pgcli-4.6.0}/tests/formatter/__init__.py +0 -0
  115. {pgcli-4.4.0 → pgcli-4.6.0}/tests/formatter/test_sqlformatter.py +0 -0
  116. {pgcli-4.4.0 → pgcli-4.6.0}/tests/metadata.py +0 -0
  117. {pgcli-4.4.0 → pgcli-4.6.0}/tests/parseutils/test_ctes.py +0 -0
  118. {pgcli-4.4.0 → pgcli-4.6.0}/tests/parseutils/test_function_metadata.py +0 -0
  119. {pgcli-4.4.0 → pgcli-4.6.0}/tests/parseutils/test_parseutils.py +0 -0
  120. {pgcli-4.4.0 → pgcli-4.6.0}/tests/pytest.ini +0 -0
  121. {pgcli-4.4.0 → pgcli-4.6.0}/tests/test_application_name.py +0 -0
  122. {pgcli-4.4.0 → pgcli-4.6.0}/tests/test_auth.py +0 -0
  123. {pgcli-4.4.0 → pgcli-4.6.0}/tests/test_completion_refresher.py +0 -0
  124. {pgcli-4.4.0 → pgcli-4.6.0}/tests/test_config.py +0 -0
  125. {pgcli-4.4.0 → pgcli-4.6.0}/tests/test_fuzzy_completion.py +0 -0
  126. {pgcli-4.4.0 → pgcli-4.6.0}/tests/test_init_commands_simple.py +0 -0
  127. {pgcli-4.4.0 → pgcli-4.6.0}/tests/test_pgspecial.py +0 -0
  128. {pgcli-4.4.0 → pgcli-4.6.0}/tests/test_prioritization.py +0 -0
  129. {pgcli-4.4.0 → pgcli-4.6.0}/tests/test_prompt_utils.py +0 -0
  130. {pgcli-4.4.0 → pgcli-4.6.0}/tests/test_smart_completion_multiple_schemata.py +0 -0
  131. {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)
@@ -14,7 +14,7 @@ jobs:
14
14
 
15
15
  strategy:
16
16
  matrix:
17
- python-version: ["3.9", "3.10", "3.11", "3.12", "3.13"]
17
+ python-version: ["3.10", "3.11", "3.12", "3.13", "3.14"]
18
18
 
19
19
  services:
20
20
  postgres:
@@ -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.9", "3.10", "3.11", "3.12", "3.13"]
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.13
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
@@ -1,7 +1,7 @@
1
1
  repos:
2
2
  - repo: https://github.com/astral-sh/ruff-pre-commit
3
3
  # Ruff version.
4
- rev: v0.11.7
4
+ rev: v0.14.10
5
5
  hooks:
6
6
  # Run the linter.
7
7
  - id: ruff
@@ -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,4 +1,4 @@
1
- FROM python:3.8
1
+ FROM python:3.14
2
2
 
3
3
  COPY . /app
4
4
  RUN cd /app && pip install -e .
@@ -1,36 +1,35 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: pgcli
3
- Version: 4.4.0
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.9
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<8.1.8,>=4.1
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.6,>=0.3.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: http://pgcli.com
84
+ Home Page: https://pgcli.com
86
85
 
87
- MySQL Equivalent: http://mycli.net
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 <http://twitter.com/amjithr>`_
217
- * Irina, pgcli maintainer: i.chernyavska@gmail.com, Twitter: `@irinatruong <http://twitter.com/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 <http://github.com/jonathanslenders/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 <http://click.pocoo.org/>`_ is used for command line option parsing
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: http://pgcli.com
31
+ Home Page: https://pgcli.com
32
32
 
33
- MySQL Equivalent: http://mycli.net
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 <http://twitter.com/amjithr>`_
163
- * Irina, pgcli maintainer: i.chernyavska@gmail.com, Twitter: `@irinatruong <http://twitter.com/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 <http://github.com/jonathanslenders/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 <http://click.pocoo.org/>`_ is used for command line option parsing
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.session.engine.url
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")))