pgiscluster 0.2.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.
@@ -0,0 +1,13 @@
1
+ # Changes here will be overwritten by Copier
2
+ _commit: v1.5.0
3
+ _src_path: https://github.com/DragonBishop/python-copier-template-ds.git
4
+ github_actions: true
5
+ include_module: true
6
+ include_notebooks: false
7
+ include_reports: false
8
+ module_name: pgiscluster
9
+ project_name: pgiscluster
10
+ project_type: data_science
11
+ publish_to_pypi: true
12
+ python_version: 3.14.7
13
+ use_rumdl: true
@@ -0,0 +1 @@
1
+ uv.lock linguist-generated=true
@@ -0,0 +1,92 @@
1
+ name: Bug report
2
+ description: Report a defect or error with the project
3
+ title: 'Bug: '
4
+ labels: ["bug"]
5
+ body:
6
+ # Description of issue template
7
+ - type: markdown
8
+ attributes:
9
+ value: >
10
+ Thank you for reporting a bug! Please provide as much detail as possible in the fields provided.
11
+ # Expected behavior
12
+ - type: textarea
13
+ id: exp-behave
14
+ attributes:
15
+ label: Expected Behavior
16
+ description: A concise description of what you expected to happen.
17
+ validations:
18
+ required: true
19
+ # Describe the bug
20
+ - type: textarea
21
+ id: bug-describe
22
+ attributes:
23
+ label: Describe the Bug
24
+ description: A clear description of what is actually happening.
25
+ validations:
26
+ required: true
27
+ # To Reproduce
28
+ - type: textarea
29
+ id: reproduce
30
+ attributes:
31
+ label: To Reproduce
32
+ description: List the exact steps to reproduce the bug.
33
+ value: |
34
+ 1.
35
+ 2.
36
+ 3.
37
+ validations:
38
+ required: true
39
+ - type: checkboxes
40
+ id: tooling
41
+ attributes:
42
+ label: Relevant Tools
43
+ description: What tools were you using when the bug occurred? Check everything relevant to this report.
44
+ options:
45
+ - label: Python script
46
+ - label: Notebook (Jupyter, JupyterLab, Colab)
47
+ - label: R environment (RStudio, Rscript, R Markdown)
48
+ - label: Distributed compute (Spark, Dask, Ray)
49
+ - label: PostgreSQL
50
+ - label: SQLite
51
+ - label: DuckDB
52
+ - label: MySQL / MariaDB
53
+ - label: Cloud warehouse (BigQuery, Snowflake, Redshift)
54
+ - type: input
55
+ id: tools-other
56
+ attributes:
57
+ label: Other Tools
58
+ description: Add any relevant tools that were not listed above.
59
+ placeholder: "e.g. dbt, Airflow, Databricks"
60
+ validations:
61
+ required: false
62
+ # Type of OS
63
+ - type: dropdown
64
+ id: os
65
+ attributes:
66
+ label: Operating System
67
+ options:
68
+ - Windows
69
+ - macOS
70
+ - Linux
71
+ - Android
72
+ - iOS
73
+ - Other
74
+ validations:
75
+ required: true
76
+ # OS Version
77
+ - type: input
78
+ id: os-vers
79
+ attributes:
80
+ label: OS Version
81
+ description: >
82
+ What version of this operating system did you use? (If you chose other, specify your OS here)
83
+ validations:
84
+ required: true
85
+ # Dependencies / Additional Context
86
+ - type: textarea
87
+ id: dependencies
88
+ attributes:
89
+ label: Dependencies and Additional Context
90
+ description: >
91
+ Provide any additional context here, such as the dependencies used in a Python project. Paste uv pip list, pip freeze,
92
+ conda list, etc. Remember, the most common reason for Python bug reports is dependency management!
@@ -0,0 +1 @@
1
+ blank_issues_enabled: false
@@ -0,0 +1,46 @@
1
+ name: Documentation Update
2
+ description: Report missing, unclear, outdated, or incorrect documentation
3
+ title: 'Docs: '
4
+ labels: ["documentation"]
5
+ body:
6
+ # Page Location
7
+ - type: input
8
+ id: page-location
9
+ attributes:
10
+ label: Page Location
11
+ description: Provide a URL or file path to the page needing update (e.g. `README.md`)
12
+ validations:
13
+ required: true
14
+ # Current Problem Types
15
+ - type: checkboxes
16
+ id: problem-type
17
+ attributes:
18
+ label: Problem Type
19
+ description: 'Please check all that apply:'
20
+ options:
21
+ - label: Outdated info
22
+ - label: Incorrect info
23
+ - label: Missing info
24
+ - label: Broken link / formatting
25
+ - label: Typo / Grammatical error
26
+ # Describe the Problem
27
+ - type: textarea
28
+ id: problem-describe
29
+ attributes:
30
+ label: Problem Description
31
+ description: Explain what's wrong, confusing or missing to you. Copy-paste text if applicable
32
+ validations:
33
+ required: true
34
+ # Proposed Changes
35
+ - type: textarea
36
+ id: changes
37
+ attributes:
38
+ label: Proposed Changes
39
+ description: >
40
+ What should the documentation say instead? Make your suggestions here.
41
+ # Additional Context
42
+ - type: textarea
43
+ id: context
44
+ attributes:
45
+ label: Additional Context
46
+ description: Provide any additional context about the issue below.
@@ -0,0 +1,65 @@
1
+ name: Feature Proposal
2
+ description: Propose an enhancement or new feature for the project
3
+ title: 'Proposal: '
4
+ labels: ["enhancement"]
5
+ body:
6
+ # Because
7
+ - type: markdown
8
+ attributes:
9
+ value: >
10
+ Use this to propose the project do something it currently does not. Use a bug report for broken features. Please be concise!
11
+ - type: textarea
12
+ id: rationale
13
+ attributes:
14
+ label: Because...
15
+ description: |
16
+ What is the problem you are trying to solve?
17
+ Describe the context of the problem.
18
+ placeholder: "The same setup steps get repeated by hand in every new project..."
19
+ validations:
20
+ required: true
21
+ # I Propose
22
+ - type: textarea
23
+ id: proposal
24
+ attributes:
25
+ label: I Propose...
26
+ description: |
27
+ Describe the change in operational terms.
28
+ What specifically needs to happen?
29
+ placeholder: "A single command that runs the whole setup sequence..."
30
+ validations:
31
+ required: true
32
+ # So That
33
+ - type: textarea
34
+ id: outcome
35
+ attributes:
36
+ label: So That...
37
+ description: |
38
+ Who benefits from this proposal?
39
+ What would show that it worked?
40
+ placeholder: "A new contributor can get moving on a project without being slowed down by..."
41
+ validations:
42
+ required: true
43
+ # Alternatives
44
+ - type: textarea
45
+ id: alternative
46
+ attributes:
47
+ label: Alternatives
48
+ description: Describe workarounds or alternatives you've tried, if any.
49
+ # Implementing
50
+ - type: dropdown
51
+ id: implement
52
+ attributes:
53
+ label: Are you willing to work on implementing this change?
54
+ options:
55
+ - "Yes"
56
+ - "No"
57
+ validations:
58
+ required: true
59
+ # Additional Notes
60
+ - type: textarea
61
+ id: notes
62
+ attributes:
63
+ label: Additional Notes
64
+ description: >
65
+ Provide relevant file paths, scripts, documentation, or any other additional notes about this proposal.
@@ -0,0 +1,47 @@
1
+ name: Technical Debt Resolution
2
+ description: Flag code that works but will cost the project later
3
+ title: 'Debt: '
4
+ labels: ["enhancement"]
5
+ body:
6
+ # Context
7
+ - type: textarea
8
+ id: context
9
+ attributes:
10
+ label: Context
11
+ description: Explain the source of tech debt in operational terms. What happens?
12
+ validations:
13
+ required: true
14
+ # Risk
15
+ - type: textarea
16
+ id: risk
17
+ attributes:
18
+ label: Risk
19
+ description: Explain how and why this creates a liability for the project.
20
+ validations:
21
+ required: true
22
+ # Urgency
23
+ - type: dropdown
24
+ id: urgency
25
+ attributes:
26
+ label: When will this become a problem?
27
+ options:
28
+ - It Already Has
29
+ - Soon
30
+ - Eventually
31
+ validations:
32
+ required: true
33
+ # Resolution
34
+ - type: textarea
35
+ id: resolution
36
+ attributes:
37
+ label: Resolution Proposal
38
+ description: Explain what specific changes will eliminate this technical debt
39
+ validations:
40
+ required: true
41
+ # Additional Notes
42
+ - type: textarea
43
+ id: notes
44
+ attributes:
45
+ label: Additional Notes
46
+ description: >
47
+ Provide relevant file paths, scripts, documentation, or any other additional notes about this issue.
@@ -0,0 +1,27 @@
1
+ name: lint
2
+
3
+ on:
4
+ workflow_dispatch:
5
+ pull_request:
6
+ # push:
7
+ # branches: [main]
8
+ permissions:
9
+ contents: read
10
+
11
+ jobs:
12
+ lint:
13
+ runs-on: ubuntu-latest
14
+ steps:
15
+ - uses: actions/checkout@v6
16
+ - name: Install uv
17
+ uses: astral-sh/setup-uv@v7
18
+ - name: "Set up Python"
19
+ uses: actions/setup-python@v6
20
+ with:
21
+ python-version-file: ".python-version"
22
+ - name: Install the project
23
+ run: uv sync --only-group lint --frozen
24
+ - name: check format
25
+ run: uv run ruff format --check --diff .
26
+ - name: check lints
27
+ run: uv run ruff check --output-format=github .
@@ -0,0 +1,35 @@
1
+ name: publish
2
+
3
+ on:
4
+ release:
5
+ types: [published]
6
+
7
+ permissions:
8
+ contents: read
9
+
10
+ jobs:
11
+ publish:
12
+ runs-on: ubuntu-latest
13
+ permissions:
14
+ id-token: write
15
+ steps:
16
+ - uses: actions/checkout@v6
17
+ - name: Install uv
18
+ uses: astral-sh/setup-uv@v7
19
+ - name: "Set up Python"
20
+ uses: actions/setup-python@v6
21
+ with:
22
+ python-version-file: ".python-version"
23
+ - name: Add repository URLs to package metadata
24
+ run: |
25
+ cat >> pyproject.toml << EOF
26
+
27
+ [project.urls]
28
+ Homepage = "${{ github.server_url }}/${{ github.repository }}"
29
+ Repository = "${{ github.server_url }}/${{ github.repository }}"
30
+ Issues = "${{ github.server_url }}/${{ github.repository }}/issues"
31
+ EOF
32
+ - name: Build package
33
+ run: uv build
34
+ - name: Publish to PyPI
35
+ uses: pypa/gh-action-pypi-publish@release/v1
@@ -0,0 +1,61 @@
1
+ name: release
2
+
3
+ on:
4
+ push:
5
+ branches: [main]
6
+ pull_request_target:
7
+ types: [opened, reopened, edited, synchronize]
8
+
9
+ permissions:
10
+ contents: write
11
+ issues: write
12
+ pull-requests: write
13
+
14
+ concurrency:
15
+ group: release-${{ github.head_ref || github.ref }}
16
+ cancel-in-progress: false
17
+
18
+ jobs:
19
+ lint-pr-title:
20
+ if: ${{ github.event_name == 'pull_request_target' }}
21
+ runs-on: ubuntu-latest
22
+ steps:
23
+ - uses: amannn/action-semantic-pull-request@v6
24
+ env:
25
+ GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
26
+
27
+ release-please:
28
+ if: ${{ github.event_name == 'push' }}
29
+ runs-on: ubuntu-latest
30
+ outputs:
31
+ release_created: ${{ steps.release.outputs.release_created }}
32
+ tag_name: ${{ steps.release.outputs.tag_name }}
33
+ steps:
34
+ - uses: actions/create-github-app-token@v2
35
+ id: app-token
36
+ with:
37
+ app-id: ${{ secrets.RELEASE_PLEASE_APP_ID }}
38
+ private-key: ${{ secrets.RELEASE_PLEASE_APP_PRIVATE_KEY }}
39
+ - uses: googleapis/release-please-action@v5
40
+ id: release
41
+ with:
42
+ token: ${{ steps.app-token.outputs.token }}
43
+
44
+ regenerate-changelog:
45
+ needs: release-please
46
+ if: ${{ needs.release-please.outputs.release_created }}
47
+ runs-on: ubuntu-latest
48
+ steps:
49
+ - uses: actions/checkout@v6
50
+ with:
51
+ ref: main
52
+ fetch-depth: 0
53
+ - uses: orhun/git-cliff-action@v4
54
+ with:
55
+ args: -o CHANGELOG.md
56
+ - run: |
57
+ git config user.name "github-actions[bot]"
58
+ git config user.email "github-actions[bot]@users.noreply.github.com"
59
+ git add CHANGELOG.md
60
+ git commit -m "docs: regenerate changelog for ${{ needs.release-please.outputs.tag_name }}" || exit 0
61
+ git push
@@ -0,0 +1,34 @@
1
+ name: tests
2
+
3
+ on:
4
+ workflow_dispatch:
5
+ pull_request:
6
+ # push:
7
+ # branches: [main]
8
+ permissions:
9
+ contents: read
10
+
11
+ jobs:
12
+ tests:
13
+ runs-on: ubuntu-latest
14
+ steps:
15
+ - uses: actions/checkout@v6
16
+ - name: Install uv
17
+ uses: astral-sh/setup-uv@v7
18
+ - name: "Set up Python"
19
+ uses: actions/setup-python@v6
20
+ with:
21
+ python-version-file: ".python-version"
22
+ - name: Install the project
23
+ run: uv sync --all-extras --all-groups --frozen
24
+ - name: unit tests
25
+ run: |
26
+ set -o pipefail && \
27
+ uv run pytest --cov=src/pgiscluster --cov-report=term-missing:skip-covered --junitxml=pytest.xml \
28
+ | tee pytest-coverage.txt
29
+ - name: Pytest coverage comment
30
+ uses: MishaKav/pytest-coverage-comment@main
31
+ continue-on-error: true
32
+ with:
33
+ pytest-coverage-path: ./pytest-coverage.txt
34
+ junitxml-path: ./pytest.xml
@@ -0,0 +1,193 @@
1
+ [Uu]ntitled*
2
+ scratch*
3
+
4
+ # Windows thumbnail cache files
5
+ Thumbs.db
6
+ Thumbs.db:encryptable
7
+ ehthumbs.db
8
+ ehthumbs_vista.db
9
+
10
+ # Dump file
11
+ *.stackdump
12
+
13
+ # Folder config file
14
+ [Dd]esktop.ini
15
+
16
+ # Recycle Bin used on file shares
17
+ $RECYCLE.BIN/
18
+
19
+ # Windows Installer files
20
+ *.cab
21
+ *.msi
22
+ *.msix
23
+ *.msm
24
+ *.msp
25
+
26
+ # Windows shortcuts
27
+ *.lnk
28
+
29
+ # Byte-compiled / optimized / DLL files
30
+ __pycache__/
31
+ *.py[cod]
32
+ *$py.class
33
+
34
+ # C extensions
35
+ *.so
36
+
37
+ # Distribution / packaging
38
+ .Python
39
+ build/
40
+ develop-eggs/
41
+ dist/
42
+ downloads/
43
+ eggs/
44
+ .eggs/
45
+ lib/
46
+ lib64/
47
+ parts/
48
+ sdist/
49
+ var/
50
+ wheels/
51
+ share/python-wheels/
52
+ *.egg-info/
53
+ .installed.cfg
54
+ *.egg
55
+ MANIFEST
56
+
57
+ # PyInstaller
58
+ # Usually these files are written by a python script from a template
59
+ # before PyInstaller builds the exe, so as to inject date/other infos into it.
60
+ *.manifest
61
+ *.spec
62
+
63
+ # Installer logs
64
+ pip-log.txt
65
+ pip-delete-this-directory.txt
66
+
67
+ # Unit test / coverage reports
68
+ lcov.info
69
+ htmlcov/
70
+ .tox/
71
+ .nox/
72
+ .coverage
73
+ .coverage.*
74
+ .cache
75
+ nosetests.xml
76
+ coverage.xml
77
+ *.cover
78
+ *.py,cover
79
+ .hypothesis/
80
+ .pytest_cache/
81
+ .ruff_cache/
82
+ .rumdl_cache/
83
+ cover/
84
+
85
+ # Translations
86
+ *.mo
87
+ *.pot
88
+
89
+ # Django stuff:
90
+ *.log
91
+ local_settings.py
92
+ db.sqlite3
93
+ db.sqlite3-journal
94
+
95
+ # Flask stuff:
96
+ instance/
97
+ .webassets-cache
98
+
99
+ # Scrapy stuff:
100
+ .scrapy
101
+
102
+ # Sphinx documentation
103
+ docs/_build/
104
+
105
+ # PyBuilder
106
+ .pybuilder/
107
+ target/
108
+
109
+ # Jupyter Notebook
110
+ .ipynb_checkpoints
111
+
112
+ # IPython
113
+ profile_default/
114
+ ipython_config.py
115
+
116
+ # pyenv
117
+ # For a library or package, you might want to ignore these files since the code is
118
+ # intended to run in multiple environments; otherwise, check them in:
119
+ # .python-version
120
+
121
+ # pipenv
122
+ # According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control.
123
+ # However, in case of collaboration, if having platform-specific dependencies or dependencies
124
+ # having no cross-platform support, pipenv may install dependencies that don't work, or not
125
+ # install all needed dependencies.
126
+ #Pipfile.lock
127
+
128
+ # poetry
129
+ # Similar to Pipfile.lock, it is generally recommended to include poetry.lock in version control.
130
+ # This is especially recommended for binary packages to ensure reproducibility, and is more
131
+ # commonly ignored for libraries.
132
+ # https://python-poetry.org/docs/basic-usage/#commit-your-poetrylock-file-to-version-control
133
+ #poetry.lock
134
+
135
+ # pdm
136
+ # Similar to Pipfile.lock, it is generally recommended to include pdm.lock in version control.
137
+ #pdm.lock
138
+ # pdm stores project-wide configurations in .pdm.toml, but it is recommended to not include it
139
+ # in version control.
140
+ # https://pdm.fming.dev/latest/usage/project/#working-with-version-control
141
+ .pdm.toml
142
+ .pdm-python
143
+ .pdm-build/
144
+
145
+ # PEP 582; used by e.g. github.com/David-OConnor/pyflow and github.com/pdm-project/pdm
146
+ __pypackages__/
147
+
148
+ # Celery stuff
149
+ celerybeat-schedule
150
+ celerybeat.pid
151
+
152
+ # SageMath parsed files
153
+ *.sage.py
154
+
155
+ # Environments
156
+ .env
157
+ .venv
158
+ env/
159
+ venv/
160
+ ENV/
161
+ env.bak/
162
+ venv.bak/
163
+
164
+ # Spyder project settings
165
+ .spyderproject
166
+ .spyproject
167
+
168
+ # Rope project settings
169
+ .ropeproject
170
+
171
+ # mkdocs documentation
172
+ /site
173
+
174
+ # mypy
175
+ .mypy_cache/
176
+ .dmypy.json
177
+ dmypy.json
178
+
179
+ # Pyre type checker
180
+ .pyre/
181
+
182
+ # pytype static type analyzer
183
+ .pytype/
184
+
185
+ # Cython debug symbols
186
+ cython_debug/
187
+
188
+ # PyCharm
189
+ # JetBrains specific template is maintained in a separate JetBrains.gitignore that can
190
+ # be found at https://github.com/github/gitignore/blob/main/Global/JetBrains.gitignore
191
+ # and can be added to the global gitignore or merged into this file. For a more nuclear
192
+ # option (not recommended) you can uncomment the following to ignore the entire idea folder.
193
+ #.idea/
@@ -0,0 +1,24 @@
1
+ repos:
2
+ - repo: https://github.com/pre-commit/pre-commit-hooks
3
+ rev: v6.0.0
4
+ hooks:
5
+ - id: trailing-whitespace
6
+ - id: end-of-file-fixer
7
+ - id: check-yaml
8
+ args: [--allow-multiple-documents]
9
+ - id: check-merge-conflict
10
+ - repo: https://github.com/astral-sh/ruff-pre-commit
11
+ # Ruff version.
12
+ rev: v0.16.5
13
+ hooks:
14
+ # Run the linter.
15
+ - id: ruff-check
16
+ types_or: [python, pyi]
17
+ # Run the formatter.
18
+ - id: ruff-format
19
+ types_or: [python, pyi]
20
+ - repo: https://github.com/rvben/rumdl-pre-commit
21
+ rev: v0.2.62
22
+ hooks:
23
+ - id: rumdl # Lint only (fails on issues)
24
+ - id: rumdl-fmt # Auto-format and fail if issues remain
@@ -0,0 +1 @@
1
+ 3.14.7
@@ -0,0 +1,3 @@
1
+ {
2
+ ".": "0.2.0"
3
+ }
@@ -0,0 +1,19 @@
1
+ # Changelog
2
+
3
+ ## [0.2.0](https://github.com/DragonBishop/pgiscluster/compare/v0.1.0...v0.2.0) (2026-09-17)
4
+
5
+
6
+ ### Features
7
+
8
+ * add dependencies and pyproject.toml metadata ([a06394c](https://github.com/DragonBishop/pgiscluster/commit/a06394c0ac37325e77b3a6dae1cb518e92c9617d))
9
+ * **connector:** add HostDBConnector and HostAdminDBConnector, file-based db_query, pluggable target resolver ([2556cd4](https://github.com/DragonBishop/pgiscluster/commit/2556cd450ce50e745953ca57032b7e8d4c82ab50))
10
+ * **connector:** implement DBConnector._get_target CiliumLocalRedirectPolicy lookup ([5c51b46](https://github.com/DragonBishop/pgiscluster/commit/5c51b46ad49b2630e34991a597f9cf090e0c0722))
11
+ * initialize project via copier template (uv, pytest, CI, notebooks) ([af5469c](https://github.com/DragonBishop/pgiscluster/commit/af5469c8d63cfd6e77fdf920d3800a1da2b280f4))
12
+ * prepare pgiscluster for publication ([cc2e1b9](https://github.com/DragonBishop/pgiscluster/commit/cc2e1b9593042afcb230f74f1c4e11ee4eade194))
13
+ * Update dependencies and configurations across multiple components ([51e42d9](https://github.com/DragonBishop/pgiscluster/commit/51e42d91908444ae48fcb50fee4f088bf629827f))
14
+
15
+
16
+ ### Documentation
17
+
18
+ * move package README to repo root, fix repo links ([6c2420c](https://github.com/DragonBishop/pgiscluster/commit/6c2420c034aa5eb8a4623bd8cf8a6c282aacdff7))
19
+ * regenerate changelog for v1.0.0 ([9e258b1](https://github.com/DragonBishop/pgiscluster/commit/9e258b1a27594c8ed8ccb9815cd987ff3578f947))