tha-wright-stuff 0.1.0__tar.gz → 0.1.3__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,18 @@
1
+ name: Dependabot auto-merge
2
+
3
+ on: pull_request
4
+
5
+ permissions:
6
+ contents: write
7
+ pull-requests: write
8
+
9
+ jobs:
10
+ auto-merge:
11
+ runs-on: ubuntu-latest
12
+ if: github.actor == 'dependabot[bot]'
13
+ steps:
14
+ - name: Auto-merge Dependabot PR
15
+ run: gh pr merge --auto --merge "$PR_URL"
16
+ env:
17
+ PR_URL: ${{ github.event.pull_request.html_url }}
18
+ GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: tha-wright-stuff
3
- Version: 0.1.0
3
+ Version: 0.1.3
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
@@ -14,13 +14,15 @@ Classifier: Programming Language :: Python :: 3
14
14
  Classifier: Programming Language :: Python :: 3.10
15
15
  Classifier: Programming Language :: Python :: 3.11
16
16
  Classifier: Programming Language :: Python :: 3.12
17
+ Classifier: Programming Language :: Python :: 3.13
18
+ Classifier: Programming Language :: Python :: 3.14
17
19
  Classifier: Topic :: Utilities
18
20
  Classifier: Typing :: Typed
19
21
  Requires-Python: >=3.10
20
22
  Requires-Dist: tha-aws-runner>=0.1.15
21
23
  Requires-Dist: tha-csv-runner>=0.2.6
22
24
  Requires-Dist: tha-edfi-runner>=0.1.2
23
- Requires-Dist: tha-google-runner>=0.1.0
25
+ Requires-Dist: tha-google-runner>=0.1.3
24
26
  Requires-Dist: tha-map-runner>=0.2.7
25
27
  Requires-Dist: tha-req-runner>=0.2.2
26
28
  Requires-Dist: tha-snowflake-runner>=0.1.1
@@ -50,7 +52,7 @@ pip install tha-wright-stuff
50
52
  One install pulls in every `tha-*` library and re-exports all of their public symbols from a single namespace. Instead of installing and importing from eight separate packages, you can just do:
51
53
 
52
54
  ```python
53
- from tha_wright_stuff import ThaCSV, ThaMap, ThaReq, ThaDict, ThaDdb, ThaEdfiBase, ThaSheets, ThaSnowflake
55
+ from tha_wright_stuff import ThaCSV, ThaMap, ThaReq, ThaDict, ThaDdb, ThaEdfiBase, ThaSheets, ThaDocs, ThaDrive, ThaSlides, ThaGmail, ThaSnowflake
54
56
  ```
55
57
 
56
58
  Every public class, function, and error type from all eight libraries is available at the top level.
@@ -68,10 +70,10 @@ Every public class, function, and error type from all eight libraries is availab
68
70
  | **tha-csv-runner** | [![PyPI](https://img.shields.io/pypi/v/tha-csv-runner)](https://pypi.org/project/tha-csv-runner/) | [tha-csv-runner](https://github.com/tha-guy-nate/tha-csv-runner) | Read and write CSVs with progress bars, header validation, chunking, sort/filter, and an optional per-row validator callback. |
69
71
  | **tha-map-runner** | [![PyPI](https://img.shields.io/pypi/v/tha-map-runner)](https://pypi.org/project/tha-map-runner/) | [tha-map-runner](https://github.com/tha-guy-nate/tha-map-runner) | Enrich and join dicts using dotted-path projection and O(n+m) index-based lookups. Supports left / inner / anti joins and DynamoDB result shapes. |
70
72
  | **tha-req-runner** | [![PyPI](https://img.shields.io/pypi/v/tha-req-runner)](https://pypi.org/project/tha-req-runner/) | [tha-req-runner](https://github.com/tha-guy-nate/tha-req-runner) | Transport layer for API runners — session management, retries, `safe_call`, and a normalized `parse_response` dict. Supports both `requests` and `httpx` backends. |
71
- | **tha-aws-runner** | [![PyPI](https://img.shields.io/pypi/v/tha-aws-runner)](https://pypi.org/project/tha-aws-runner/) | [tha-aws-runner](https://github.com/tha-guy-nate/tha-aws-runner) | DynamoDB (`ThaDdb`), GSI queries (`ThaGsi`), S3 (`ThaS3`), SSM Parameter Store (`ThaSSM`), and a `DdbCostTracker` context manager that tallies RCU/WCU and USD cost per run. |
73
+ | **tha-aws-runner** | [![PyPI](https://img.shields.io/pypi/v/tha-aws-runner)](https://pypi.org/project/tha-aws-runner/) | [tha-aws-runner](https://github.com/tha-guy-nate/tha-aws-runner) | DynamoDB (`ThaDdb`), GSI queries (`ThaGsi`), S3 (`ThaS3`), SSM Parameter Store (`ThaSSM`), a `DdbCostTracker` context manager that tallies RCU/WCU and USD cost per run, and standalone helpers (`cli_auth_check`, `current_identity`, `parse_arn`, `parse_assumed_role_arn`). |
72
74
  | **tha-utils-helper** | [![PyPI](https://img.shields.io/pypi/v/tha-utils-helper)](https://pypi.org/project/tha-utils-helper/) | [tha-utils-helper](https://github.com/tha-guy-nate/tha-utils-helper) | Zero-dependency utilities: `ThaStr` (slugify, format), `ThaNum` (currency, parens-as-negative, cast), `ThaDT` (auto-detect date formats), `ThaDict` (pick, omit, rename), `ThaList` (chunk, flatten), `ThaType` (bool/int/float coercion). All include matching `*_rows` batch methods. |
73
75
  | **tha-edfi-runner** | [![PyPI](https://img.shields.io/pypi/v/tha-edfi-runner)](https://pypi.org/project/tha-edfi-runner/) | [tha-edfi-runner](https://github.com/tha-guy-nate/tha-edfi-runner) | Ed-Fi ODS API client — OAuth client-credentials auth, pagination, and chunked parallel posting via `ThreadPoolExecutor`. |
74
- | **tha-google-runner** | [![PyPI](https://img.shields.io/pypi/v/tha-google-runner)](https://pypi.org/project/tha-google-runner/) | [tha-google-runner](https://github.com/tha-guy-nate/tha-google-runner) | Google Sheets reader/writer (`ThaSheets`) using a service accountreads sheets to row dicts, writes row dicts back with optional header control. |
76
+ | **tha-google-runner** | [![PyPI](https://img.shields.io/pypi/v/tha-google-runner)](https://pypi.org/project/tha-google-runner/) | [tha-google-runner](https://github.com/tha-guy-nate/tha-google-runner) | Typed wrappers for Google Sheets (`ThaSheets`), Docs (`ThaDocs`), Drive (`ThaDrive`), Slides (`ThaSlides`), and Gmail (`ThaGmail`) OAuth2 or ADC auth, read/write/upsert rows, file download, presentation creation, and email sending. |
75
77
  | **tha-snowflake-runner** | [![PyPI](https://img.shields.io/pypi/v/tha-snowflake-runner)](https://pypi.org/project/tha-snowflake-runner/) | [tha-snowflake-runner](https://github.com/tha-guy-nate/tha-snowflake-runner) | Snowflake query runner (`ThaSnowflake`) — named connection profiles, query execution to row dicts, and chunked parallel inserts. |
76
78
 
77
79
  ---
@@ -17,7 +17,7 @@ pip install tha-wright-stuff
17
17
  One install pulls in every `tha-*` library and re-exports all of their public symbols from a single namespace. Instead of installing and importing from eight separate packages, you can just do:
18
18
 
19
19
  ```python
20
- from tha_wright_stuff import ThaCSV, ThaMap, ThaReq, ThaDict, ThaDdb, ThaEdfiBase, ThaSheets, ThaSnowflake
20
+ from tha_wright_stuff import ThaCSV, ThaMap, ThaReq, ThaDict, ThaDdb, ThaEdfiBase, ThaSheets, ThaDocs, ThaDrive, ThaSlides, ThaGmail, ThaSnowflake
21
21
  ```
22
22
 
23
23
  Every public class, function, and error type from all eight libraries is available at the top level.
@@ -35,10 +35,10 @@ Every public class, function, and error type from all eight libraries is availab
35
35
  | **tha-csv-runner** | [![PyPI](https://img.shields.io/pypi/v/tha-csv-runner)](https://pypi.org/project/tha-csv-runner/) | [tha-csv-runner](https://github.com/tha-guy-nate/tha-csv-runner) | Read and write CSVs with progress bars, header validation, chunking, sort/filter, and an optional per-row validator callback. |
36
36
  | **tha-map-runner** | [![PyPI](https://img.shields.io/pypi/v/tha-map-runner)](https://pypi.org/project/tha-map-runner/) | [tha-map-runner](https://github.com/tha-guy-nate/tha-map-runner) | Enrich and join dicts using dotted-path projection and O(n+m) index-based lookups. Supports left / inner / anti joins and DynamoDB result shapes. |
37
37
  | **tha-req-runner** | [![PyPI](https://img.shields.io/pypi/v/tha-req-runner)](https://pypi.org/project/tha-req-runner/) | [tha-req-runner](https://github.com/tha-guy-nate/tha-req-runner) | Transport layer for API runners — session management, retries, `safe_call`, and a normalized `parse_response` dict. Supports both `requests` and `httpx` backends. |
38
- | **tha-aws-runner** | [![PyPI](https://img.shields.io/pypi/v/tha-aws-runner)](https://pypi.org/project/tha-aws-runner/) | [tha-aws-runner](https://github.com/tha-guy-nate/tha-aws-runner) | DynamoDB (`ThaDdb`), GSI queries (`ThaGsi`), S3 (`ThaS3`), SSM Parameter Store (`ThaSSM`), and a `DdbCostTracker` context manager that tallies RCU/WCU and USD cost per run. |
38
+ | **tha-aws-runner** | [![PyPI](https://img.shields.io/pypi/v/tha-aws-runner)](https://pypi.org/project/tha-aws-runner/) | [tha-aws-runner](https://github.com/tha-guy-nate/tha-aws-runner) | DynamoDB (`ThaDdb`), GSI queries (`ThaGsi`), S3 (`ThaS3`), SSM Parameter Store (`ThaSSM`), a `DdbCostTracker` context manager that tallies RCU/WCU and USD cost per run, and standalone helpers (`cli_auth_check`, `current_identity`, `parse_arn`, `parse_assumed_role_arn`). |
39
39
  | **tha-utils-helper** | [![PyPI](https://img.shields.io/pypi/v/tha-utils-helper)](https://pypi.org/project/tha-utils-helper/) | [tha-utils-helper](https://github.com/tha-guy-nate/tha-utils-helper) | Zero-dependency utilities: `ThaStr` (slugify, format), `ThaNum` (currency, parens-as-negative, cast), `ThaDT` (auto-detect date formats), `ThaDict` (pick, omit, rename), `ThaList` (chunk, flatten), `ThaType` (bool/int/float coercion). All include matching `*_rows` batch methods. |
40
40
  | **tha-edfi-runner** | [![PyPI](https://img.shields.io/pypi/v/tha-edfi-runner)](https://pypi.org/project/tha-edfi-runner/) | [tha-edfi-runner](https://github.com/tha-guy-nate/tha-edfi-runner) | Ed-Fi ODS API client — OAuth client-credentials auth, pagination, and chunked parallel posting via `ThreadPoolExecutor`. |
41
- | **tha-google-runner** | [![PyPI](https://img.shields.io/pypi/v/tha-google-runner)](https://pypi.org/project/tha-google-runner/) | [tha-google-runner](https://github.com/tha-guy-nate/tha-google-runner) | Google Sheets reader/writer (`ThaSheets`) using a service accountreads sheets to row dicts, writes row dicts back with optional header control. |
41
+ | **tha-google-runner** | [![PyPI](https://img.shields.io/pypi/v/tha-google-runner)](https://pypi.org/project/tha-google-runner/) | [tha-google-runner](https://github.com/tha-guy-nate/tha-google-runner) | Typed wrappers for Google Sheets (`ThaSheets`), Docs (`ThaDocs`), Drive (`ThaDrive`), Slides (`ThaSlides`), and Gmail (`ThaGmail`) OAuth2 or ADC auth, read/write/upsert rows, file download, presentation creation, and email sending. |
42
42
  | **tha-snowflake-runner** | [![PyPI](https://img.shields.io/pypi/v/tha-snowflake-runner)](https://pypi.org/project/tha-snowflake-runner/) | [tha-snowflake-runner](https://github.com/tha-guy-nate/tha-snowflake-runner) | Snowflake query runner (`ThaSnowflake`) — named connection profiles, query execution to row dicts, and chunked parallel inserts. |
43
43
 
44
44
  ---
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "tha-wright-stuff"
7
- version = "0.1.0"
7
+ version = "0.1.3"
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" }
@@ -15,6 +15,8 @@ classifiers = [
15
15
  "Programming Language :: Python :: 3.10",
16
16
  "Programming Language :: Python :: 3.11",
17
17
  "Programming Language :: Python :: 3.12",
18
+ "Programming Language :: Python :: 3.13",
19
+ "Programming Language :: Python :: 3.14",
18
20
  "License :: OSI Approved :: MIT License",
19
21
  "Operating System :: OS Independent",
20
22
  "Intended Audience :: Developers",
@@ -29,7 +31,7 @@ dependencies = [
29
31
  "tha-aws-runner>=0.1.15",
30
32
  "tha-utils-helper>=0.2.3",
31
33
  "tha-edfi-runner>=0.1.2",
32
- "tha-google-runner>=0.1.0",
34
+ "tha-google-runner>=0.1.3",
33
35
  "tha-snowflake-runner>=0.1.1",
34
36
  ]
35
37
 
@@ -19,7 +19,7 @@ from tha_aws_runner import (
19
19
  )
20
20
  from tha_csv_runner import ConfigError, ThaCSV
21
21
  from tha_edfi_runner import EdfiError, ThaEdfiBase, ThaStudentAssessment
22
- from tha_google_runner import GoogleError, ThaSheets
22
+ from tha_google_runner import GoogleError, ThaDocs, ThaDrive, ThaGmail, ThaSheets, ThaSlides
23
23
  from tha_map_runner import MapperError, ThaMap
24
24
  from tha_req_runner import ReqError, ThaReq
25
25
  from tha_snowflake_runner import Session, SnowflakeError, ThaSnowflake, list_profiles
@@ -39,40 +39,35 @@ from tha_utils_helper import (
39
39
  UtilsError,
40
40
  )
41
41
 
42
- __version__ = "0.1.0"
42
+ __version__ = "0.1.3"
43
43
  __all__ = [
44
- # tha-aws-runner
45
44
  "AWSBase",
46
45
  "AWSClients",
47
46
  "AwsError",
48
47
  "BatchCountResult",
49
48
  "BatchQueryResult",
50
49
  "BatchUpdateResult",
51
- # tha-csv-runner
52
50
  "ConfigError",
53
51
  "DateError",
54
52
  "DdbCostTracker",
55
53
  "DictUtils",
56
- # tha-edfi-runner
57
54
  "EdfiError",
58
- # tha-google-runner
59
55
  "GoogleError",
60
56
  "ListUtils",
61
- # tha-map-runner
62
57
  "MapperError",
63
58
  "NumError",
64
- # tha-req-runner
65
59
  "ReqError",
66
- # tha-snowflake-runner
67
60
  "Session",
68
61
  "SnowflakeError",
69
62
  "StrError",
70
63
  "ThaCSV",
71
64
  "ThaDT",
72
65
  "ThaDdb",
73
- # tha-utils-helper
74
66
  "ThaDict",
67
+ "ThaDocs",
68
+ "ThaDrive",
75
69
  "ThaEdfiBase",
70
+ "ThaGmail",
76
71
  "ThaGsi",
77
72
  "ThaList",
78
73
  "ThaMap",
@@ -81,6 +76,7 @@ __all__ = [
81
76
  "ThaS3",
82
77
  "ThaSSM",
83
78
  "ThaSheets",
79
+ "ThaSlides",
84
80
  "ThaSnowflake",
85
81
  "ThaStr",
86
82
  "ThaStudentAssessment",
@@ -10,19 +10,23 @@ def test_top_level_imports() -> None:
10
10
  Session,
11
11
  SnowflakeError,
12
12
  ThaCSV,
13
- ThaDT,
14
13
  ThaDdb,
15
14
  ThaDict,
15
+ ThaDocs,
16
+ ThaDrive,
17
+ ThaDT,
16
18
  ThaEdfiBase,
19
+ ThaGmail,
17
20
  ThaGsi,
18
21
  ThaList,
19
22
  ThaMap,
20
23
  ThaNum,
21
24
  ThaReq,
22
25
  ThaS3,
23
- ThaSSM,
24
26
  ThaSheets,
27
+ ThaSlides,
25
28
  ThaSnowflake,
29
+ ThaSSM,
26
30
  ThaStr,
27
31
  ThaStudentAssessment,
28
32
  ThaType,
@@ -46,6 +50,10 @@ def test_top_level_imports() -> None:
46
50
  assert ThaStudentAssessment is not None
47
51
  assert ThaEdfiBase is not None
48
52
  assert ThaSheets is not None
53
+ assert ThaDocs is not None
54
+ assert ThaDrive is not None
55
+ assert ThaSlides is not None
56
+ assert ThaGmail is not None
49
57
  assert ThaSnowflake is not None
50
58
  assert Session is not None
51
59
  assert AWSBase is not None