tha-wright-stuff 0.1.5__tar.gz → 0.1.7__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.
- tha_wright_stuff-0.1.7/.github/workflows/bump-dep-floors.yml +111 -0
- tha_wright_stuff-0.1.7/.github/workflows/ci.yml +12 -0
- tha_wright_stuff-0.1.7/.github/workflows/dep-floors-check.yml +42 -0
- {tha_wright_stuff-0.1.5 → tha_wright_stuff-0.1.7}/.github/workflows/publish.yml +5 -5
- {tha_wright_stuff-0.1.5 → tha_wright_stuff-0.1.7}/PKG-INFO +16 -11
- {tha_wright_stuff-0.1.5 → tha_wright_stuff-0.1.7}/README.md +5 -1
- {tha_wright_stuff-0.1.5 → tha_wright_stuff-0.1.7}/pyproject.toml +12 -10
- tha_wright_stuff-0.1.5/.github/workflows/ci.yml +0 -36
- {tha_wright_stuff-0.1.5 → tha_wright_stuff-0.1.7}/.github/dependabot.yml +0 -0
- {tha_wright_stuff-0.1.5 → tha_wright_stuff-0.1.7}/.github/workflows/dependabot-auto-merge.yml +0 -0
- {tha_wright_stuff-0.1.5 → tha_wright_stuff-0.1.7}/.gitignore +0 -0
- {tha_wright_stuff-0.1.5 → tha_wright_stuff-0.1.7}/src/tha_wright_stuff/__init__.py +0 -0
- {tha_wright_stuff-0.1.5 → tha_wright_stuff-0.1.7}/src/tha_wright_stuff/py.typed +0 -0
- {tha_wright_stuff-0.1.5 → tha_wright_stuff-0.1.7}/tests/test_imports.py +0 -0
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
name: Bump Dependency Floors
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
schedule:
|
|
5
|
+
- cron: '0 9 * * 5' # Fridays at 9am UTC
|
|
6
|
+
workflow_dispatch:
|
|
7
|
+
|
|
8
|
+
permissions:
|
|
9
|
+
contents: write
|
|
10
|
+
pull-requests: write
|
|
11
|
+
|
|
12
|
+
jobs:
|
|
13
|
+
bump:
|
|
14
|
+
runs-on: ubuntu-latest
|
|
15
|
+
steps:
|
|
16
|
+
- uses: actions/checkout@v7
|
|
17
|
+
|
|
18
|
+
- name: Install uv
|
|
19
|
+
uses: astral-sh/setup-uv@v8.2.0
|
|
20
|
+
with:
|
|
21
|
+
version: "latest"
|
|
22
|
+
|
|
23
|
+
- name: Check and update dependency floors
|
|
24
|
+
id: check
|
|
25
|
+
run: |
|
|
26
|
+
python3 - <<'PYEOF'
|
|
27
|
+
import re, json, os, sys
|
|
28
|
+
from urllib.request import urlopen
|
|
29
|
+
|
|
30
|
+
with open("pyproject.toml") as f:
|
|
31
|
+
content = f.read()
|
|
32
|
+
|
|
33
|
+
pattern = r'"(tha-[a-z-]+)>=([\d]+\.[\d]+\.[\d]+)"'
|
|
34
|
+
deps = re.findall(pattern, content)
|
|
35
|
+
|
|
36
|
+
bumps = []
|
|
37
|
+
for pkg, floor in deps:
|
|
38
|
+
try:
|
|
39
|
+
with urlopen(f"https://pypi.org/pypi/{pkg}/json", timeout=10) as r:
|
|
40
|
+
latest = json.load(r)["info"]["version"]
|
|
41
|
+
except Exception:
|
|
42
|
+
print(f" skipping {pkg} (PyPI lookup failed)")
|
|
43
|
+
continue
|
|
44
|
+
|
|
45
|
+
floor_t = tuple(int(x) for x in floor.split("."))
|
|
46
|
+
latest_t = tuple(int(x) for x in latest.split("."))
|
|
47
|
+
|
|
48
|
+
if latest_t > floor_t:
|
|
49
|
+
bumps.append((pkg, floor, latest))
|
|
50
|
+
print(f" {pkg}: >={floor} -> >={latest}")
|
|
51
|
+
else:
|
|
52
|
+
print(f" {pkg}: >={floor} ok (latest={latest})")
|
|
53
|
+
|
|
54
|
+
gho = os.environ["GITHUB_OUTPUT"]
|
|
55
|
+
if not bumps:
|
|
56
|
+
print("All floors current -- no PR needed.")
|
|
57
|
+
with open(gho, "a") as f:
|
|
58
|
+
f.write("changed=false\n")
|
|
59
|
+
sys.exit(0)
|
|
60
|
+
|
|
61
|
+
new_content = content
|
|
62
|
+
for pkg, old, new in bumps:
|
|
63
|
+
new_content = new_content.replace(f'"{pkg}>={old}"', f'"{pkg}>={new}"')
|
|
64
|
+
|
|
65
|
+
ver_m = re.search(r'^version = "(\d+)\.(\d+)\.(\d+)"', new_content, re.MULTILINE)
|
|
66
|
+
major, minor, patch = int(ver_m.group(1)), int(ver_m.group(2)), int(ver_m.group(3))
|
|
67
|
+
old_ver = f"{major}.{minor}.{patch}"
|
|
68
|
+
new_ver = f"{major}.{minor}.{patch + 1}"
|
|
69
|
+
new_content = new_content.replace(f'version = "{old_ver}"', f'version = "{new_ver}"')
|
|
70
|
+
|
|
71
|
+
with open("pyproject.toml", "w") as f:
|
|
72
|
+
f.write(new_content)
|
|
73
|
+
|
|
74
|
+
pr_lines = [f"- `{pkg}`: `>={old}` -> `>={new}`" for pkg, old, new in bumps]
|
|
75
|
+
pr_body = (
|
|
76
|
+
"## Dependency Floor Bumps\n\n"
|
|
77
|
+
+ "\n".join(pr_lines)
|
|
78
|
+
+ f"\n\nPackage version bumped `{old_ver}` -> `{new_ver}`."
|
|
79
|
+
)
|
|
80
|
+
|
|
81
|
+
with open("/tmp/pr_body.txt", "w") as f:
|
|
82
|
+
f.write(pr_body)
|
|
83
|
+
|
|
84
|
+
with open(gho, "a") as f:
|
|
85
|
+
f.write("changed=true\n")
|
|
86
|
+
f.write(f"new_version={new_ver}\n")
|
|
87
|
+
|
|
88
|
+
print(f"pyproject.toml updated -- version {old_ver} -> {new_ver}")
|
|
89
|
+
PYEOF
|
|
90
|
+
|
|
91
|
+
- name: Update lockfile
|
|
92
|
+
if: steps.check.outputs.changed == 'true'
|
|
93
|
+
run: uv lock
|
|
94
|
+
|
|
95
|
+
- name: Commit and open PR
|
|
96
|
+
if: steps.check.outputs.changed == 'true'
|
|
97
|
+
run: |
|
|
98
|
+
git config user.name "github-actions[bot]"
|
|
99
|
+
git config user.email "github-actions[bot]@users.noreply.github.com"
|
|
100
|
+
BRANCH="chore/bump-dep-floors-$(date +%Y%m%d)"
|
|
101
|
+
git checkout -b "$BRANCH"
|
|
102
|
+
git add pyproject.toml uv.lock
|
|
103
|
+
git commit -m "chore: bump tha-* dependency floors to v${{ steps.check.outputs.new_version }}"
|
|
104
|
+
git push origin "$BRANCH"
|
|
105
|
+
gh pr create \
|
|
106
|
+
--title "chore: bump tha-* dependency floors (${{ steps.check.outputs.new_version }})" \
|
|
107
|
+
--body-file /tmp/pr_body.txt \
|
|
108
|
+
--base main \
|
|
109
|
+
--head "$BRANCH"
|
|
110
|
+
env:
|
|
111
|
+
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
name: Dep Floors Status
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
schedule:
|
|
5
|
+
- cron: '0 8 * * *' # Daily at 8am UTC
|
|
6
|
+
workflow_dispatch:
|
|
7
|
+
|
|
8
|
+
jobs:
|
|
9
|
+
check:
|
|
10
|
+
runs-on: ubuntu-latest
|
|
11
|
+
steps:
|
|
12
|
+
- uses: actions/checkout@v7
|
|
13
|
+
|
|
14
|
+
- name: Check dependency floors
|
|
15
|
+
run: |
|
|
16
|
+
python3 - <<'PYEOF'
|
|
17
|
+
import re, json, sys
|
|
18
|
+
from urllib.request import urlopen
|
|
19
|
+
|
|
20
|
+
with open("pyproject.toml") as f:
|
|
21
|
+
content = f.read()
|
|
22
|
+
|
|
23
|
+
pattern = r'"(tha-[a-z-]+)>=([\d]+\.[\d]+\.[\d]+)"'
|
|
24
|
+
deps = re.findall(pattern, content)
|
|
25
|
+
|
|
26
|
+
stale = []
|
|
27
|
+
for pkg, floor in deps:
|
|
28
|
+
try:
|
|
29
|
+
with urlopen(f"https://pypi.org/pypi/{pkg}/json", timeout=10) as r:
|
|
30
|
+
latest = json.load(r)["info"]["version"]
|
|
31
|
+
except Exception:
|
|
32
|
+
print(f" skipping {pkg}")
|
|
33
|
+
continue
|
|
34
|
+
if tuple(int(x) for x in latest.split(".")) > tuple(int(x) for x in floor.split(".")):
|
|
35
|
+
stale.append(f"{pkg} (>={floor}, latest {latest})")
|
|
36
|
+
print(f" stale: {stale[-1]}")
|
|
37
|
+
|
|
38
|
+
if not stale:
|
|
39
|
+
print(" all floors current")
|
|
40
|
+
else:
|
|
41
|
+
sys.exit(1)
|
|
42
|
+
PYEOF
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
name: Publish
|
|
1
|
+
name: Publish
|
|
2
2
|
|
|
3
3
|
on:
|
|
4
4
|
push:
|
|
@@ -9,10 +9,10 @@ jobs:
|
|
|
9
9
|
build:
|
|
10
10
|
runs-on: ubuntu-latest
|
|
11
11
|
steps:
|
|
12
|
-
- uses: actions/checkout@
|
|
12
|
+
- uses: actions/checkout@v7
|
|
13
13
|
|
|
14
14
|
- name: Install uv
|
|
15
|
-
uses: astral-sh/setup-uv@
|
|
15
|
+
uses: astral-sh/setup-uv@v8.2.0
|
|
16
16
|
|
|
17
17
|
- name: Build
|
|
18
18
|
run: uv build
|
|
@@ -37,7 +37,7 @@ jobs:
|
|
|
37
37
|
path: dist/
|
|
38
38
|
|
|
39
39
|
- name: Install uv
|
|
40
|
-
uses: astral-sh/setup-uv@
|
|
40
|
+
uses: astral-sh/setup-uv@v8.2.0
|
|
41
41
|
|
|
42
42
|
- name: Publish to TestPyPI
|
|
43
43
|
run: uv publish --publish-url https://test.pypi.org/legacy/ --trusted-publishing always
|
|
@@ -56,7 +56,7 @@ jobs:
|
|
|
56
56
|
path: dist/
|
|
57
57
|
|
|
58
58
|
- name: Install uv
|
|
59
|
-
uses: astral-sh/setup-uv@
|
|
59
|
+
uses: astral-sh/setup-uv@v8.2.0
|
|
60
60
|
|
|
61
61
|
- name: Publish to PyPI
|
|
62
62
|
run: uv publish --trusted-publishing always
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: tha-wright-stuff
|
|
3
|
-
Version: 0.1.
|
|
3
|
+
Version: 0.1.7
|
|
4
4
|
Summary: A Tabular Helper meta-package that bundles the full tha-* library family in a single install.
|
|
5
5
|
Project-URL: Homepage, https://github.com/tha-guy-nate/tha-wright-stuff
|
|
6
6
|
Project-URL: Issues, https://github.com/tha-guy-nate/tha-wright-stuff/issues
|
|
@@ -15,18 +15,19 @@ Classifier: Programming Language :: Python :: 3.10
|
|
|
15
15
|
Classifier: Programming Language :: Python :: 3.11
|
|
16
16
|
Classifier: Programming Language :: Python :: 3.12
|
|
17
17
|
Classifier: Programming Language :: Python :: 3.13
|
|
18
|
-
Classifier: Programming Language :: Python :: 3.14
|
|
19
18
|
Classifier: Topic :: Utilities
|
|
20
19
|
Classifier: Typing :: Typed
|
|
21
20
|
Requires-Python: >=3.10
|
|
22
|
-
Requires-Dist: tha-aws-runner>=0.1.
|
|
23
|
-
Requires-Dist: tha-csv-runner>=0.2.
|
|
24
|
-
Requires-Dist: tha-edfi-runner>=0.1.
|
|
25
|
-
Requires-Dist: tha-google-runner>=0.1.
|
|
26
|
-
Requires-Dist: tha-map-runner>=0.2.
|
|
27
|
-
Requires-Dist: tha-req-runner>=0.2.
|
|
28
|
-
Requires-Dist: tha-snowflake-runner>=0.1.
|
|
29
|
-
Requires-Dist: tha-utils-helper>=0.2.
|
|
21
|
+
Requires-Dist: tha-aws-runner>=0.1.16
|
|
22
|
+
Requires-Dist: tha-csv-runner>=0.2.7
|
|
23
|
+
Requires-Dist: tha-edfi-runner>=0.1.3
|
|
24
|
+
Requires-Dist: tha-google-runner>=0.1.6
|
|
25
|
+
Requires-Dist: tha-map-runner>=0.2.8
|
|
26
|
+
Requires-Dist: tha-req-runner>=0.2.3
|
|
27
|
+
Requires-Dist: tha-snowflake-runner>=0.1.2
|
|
28
|
+
Requires-Dist: tha-utils-helper>=0.2.4
|
|
29
|
+
Provides-Extra: all
|
|
30
|
+
Requires-Dist: tha-req-runner[httpx]; extra == 'all'
|
|
30
31
|
Provides-Extra: dev
|
|
31
32
|
Requires-Dist: mypy>=2.1.0; extra == 'dev'
|
|
32
33
|
Requires-Dist: pytest>=9.1.0; extra == 'dev'
|
|
@@ -35,10 +36,14 @@ Description-Content-Type: text/markdown
|
|
|
35
36
|
|
|
36
37
|
# tha-wright-stuff
|
|
37
38
|
|
|
39
|
+
[](https://pypi.org/project/tha-wright-stuff/)
|
|
40
|
+
[](https://github.com/tha-guy-nate/tha-wright-stuff/actions/workflows/dep-floors-check.yml)
|
|
41
|
+
|
|
38
42
|
> Install the entire Tabular Helper (`tha-*`) library family in one shot.
|
|
39
43
|
|
|
40
44
|
```bash
|
|
41
|
-
pip install tha-wright-stuff
|
|
45
|
+
pip install tha-wright-stuff # core family
|
|
46
|
+
pip install tha-wright-stuff[all] # + all optional extras (httpx backend, etc.)
|
|
42
47
|
```
|
|
43
48
|
|
|
44
49
|
---
|
|
@@ -1,9 +1,13 @@
|
|
|
1
1
|
# tha-wright-stuff
|
|
2
2
|
|
|
3
|
+
[](https://pypi.org/project/tha-wright-stuff/)
|
|
4
|
+
[](https://github.com/tha-guy-nate/tha-wright-stuff/actions/workflows/dep-floors-check.yml)
|
|
5
|
+
|
|
3
6
|
> Install the entire Tabular Helper (`tha-*`) library family in one shot.
|
|
4
7
|
|
|
5
8
|
```bash
|
|
6
|
-
pip install tha-wright-stuff
|
|
9
|
+
pip install tha-wright-stuff # core family
|
|
10
|
+
pip install tha-wright-stuff[all] # + all optional extras (httpx backend, etc.)
|
|
7
11
|
```
|
|
8
12
|
|
|
9
13
|
---
|
|
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "tha-wright-stuff"
|
|
7
|
-
version = "0.1.
|
|
7
|
+
version = "0.1.7"
|
|
8
8
|
description = "A Tabular Helper meta-package that bundles the full tha-* library family in a single install."
|
|
9
9
|
readme = "README.md"
|
|
10
10
|
license = { text = "MIT" }
|
|
@@ -16,7 +16,6 @@ classifiers = [
|
|
|
16
16
|
"Programming Language :: Python :: 3.11",
|
|
17
17
|
"Programming Language :: Python :: 3.12",
|
|
18
18
|
"Programming Language :: Python :: 3.13",
|
|
19
|
-
"Programming Language :: Python :: 3.14",
|
|
20
19
|
"License :: OSI Approved :: MIT License",
|
|
21
20
|
"Operating System :: OS Independent",
|
|
22
21
|
"Intended Audience :: Developers",
|
|
@@ -25,17 +24,20 @@ classifiers = [
|
|
|
25
24
|
]
|
|
26
25
|
keywords = ["tabular", "helper", "api", "csv", "aws", "edfi", "google", "snowflake", "utilities", "meta"]
|
|
27
26
|
dependencies = [
|
|
28
|
-
"tha-csv-runner>=0.2.
|
|
29
|
-
"tha-map-runner>=0.2.
|
|
30
|
-
"tha-req-runner>=0.2.
|
|
31
|
-
"tha-aws-runner>=0.1.
|
|
32
|
-
"tha-utils-helper>=0.2.
|
|
33
|
-
"tha-edfi-runner>=0.1.
|
|
34
|
-
"tha-google-runner>=0.1.
|
|
35
|
-
"tha-snowflake-runner>=0.1.
|
|
27
|
+
"tha-csv-runner>=0.2.7",
|
|
28
|
+
"tha-map-runner>=0.2.8",
|
|
29
|
+
"tha-req-runner>=0.2.3",
|
|
30
|
+
"tha-aws-runner>=0.1.16",
|
|
31
|
+
"tha-utils-helper>=0.2.4",
|
|
32
|
+
"tha-edfi-runner>=0.1.3",
|
|
33
|
+
"tha-google-runner>=0.1.6",
|
|
34
|
+
"tha-snowflake-runner>=0.1.2",
|
|
36
35
|
]
|
|
37
36
|
|
|
38
37
|
[project.optional-dependencies]
|
|
38
|
+
all = [
|
|
39
|
+
"tha-req-runner[httpx]",
|
|
40
|
+
]
|
|
39
41
|
dev = [
|
|
40
42
|
"pytest>=9.1.0",
|
|
41
43
|
"ruff>=0.15.17",
|
|
@@ -1,36 +0,0 @@
|
|
|
1
|
-
name: CI
|
|
2
|
-
|
|
3
|
-
on:
|
|
4
|
-
push:
|
|
5
|
-
branches: ["main"]
|
|
6
|
-
pull_request:
|
|
7
|
-
|
|
8
|
-
jobs:
|
|
9
|
-
test:
|
|
10
|
-
runs-on: ubuntu-latest
|
|
11
|
-
strategy:
|
|
12
|
-
matrix:
|
|
13
|
-
python-version: ["3.10", "3.11", "3.12", "3.13"]
|
|
14
|
-
|
|
15
|
-
steps:
|
|
16
|
-
- uses: actions/checkout@v6
|
|
17
|
-
|
|
18
|
-
- name: Install uv
|
|
19
|
-
uses: astral-sh/setup-uv@v7
|
|
20
|
-
with:
|
|
21
|
-
version: "latest"
|
|
22
|
-
|
|
23
|
-
- name: Set up Python ${{ matrix.python-version }}
|
|
24
|
-
run: uv python install ${{ matrix.python-version }}
|
|
25
|
-
|
|
26
|
-
- name: Install dependencies
|
|
27
|
-
run: uv sync --extra dev --python ${{ matrix.python-version }}
|
|
28
|
-
|
|
29
|
-
- name: Lint
|
|
30
|
-
run: uv run ruff check src/
|
|
31
|
-
|
|
32
|
-
- name: Test
|
|
33
|
-
run: uv run pytest
|
|
34
|
-
|
|
35
|
-
- name: Type check
|
|
36
|
-
run: uv run mypy src/
|
|
File without changes
|
{tha_wright_stuff-0.1.5 → tha_wright_stuff-0.1.7}/.github/workflows/dependabot-auto-merge.yml
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|