pointblank 0.11.6__py3-none-any.whl → 0.12.0__py3-none-any.whl

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.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: pointblank
3
- Version: 0.11.6
3
+ Version: 0.12.0
4
4
  Summary: Find out if your data is what you think it is.
5
5
  Author-email: Richard Iannone <riannone@me.com>
6
6
  License: MIT License
@@ -43,7 +43,7 @@ License-File: LICENSE
43
43
  Requires-Dist: commonmark>=0.9.1
44
44
  Requires-Dist: importlib-metadata
45
45
  Requires-Dist: great_tables>=0.17.0
46
- Requires-Dist: narwhals>=1.45.0
46
+ Requires-Dist: narwhals>=2.0.1
47
47
  Requires-Dist: typing_extensions>=3.10.0.0
48
48
  Requires-Dist: requests>=2.31.0
49
49
  Requires-Dist: click>=8.0.0
@@ -53,6 +53,8 @@ Provides-Extra: pd
53
53
  Requires-Dist: pandas>=2.2.3; extra == "pd"
54
54
  Provides-Extra: pl
55
55
  Requires-Dist: polars>=1.24.0; extra == "pl"
56
+ Provides-Extra: pyspark
57
+ Requires-Dist: pyspark==3.5.6; extra == "pyspark"
56
58
  Provides-Extra: generate
57
59
  Requires-Dist: chatlas>=0.3.0; extra == "generate"
58
60
  Requires-Dist: anthropic[bedrock]>=0.45.2; extra == "generate"
@@ -70,8 +72,6 @@ Provides-Extra: mssql
70
72
  Requires-Dist: ibis-framework[mssql]>=9.5.0; extra == "mssql"
71
73
  Provides-Extra: postgres
72
74
  Requires-Dist: ibis-framework[postgres]>=9.5.0; extra == "postgres"
73
- Provides-Extra: pyspark
74
- Requires-Dist: ibis-framework[pyspark]>=9.5.0; extra == "pyspark"
75
75
  Provides-Extra: snowflake
76
76
  Requires-Dist: ibis-framework[snowflake]>=9.5.0; extra == "snowflake"
77
77
  Provides-Extra: sqlite
@@ -83,6 +83,7 @@ Requires-Dist: nbformat>=5.10.4; extra == "docs"
83
83
  Requires-Dist: quartodoc>=0.8.1; python_version >= "3.9" and extra == "docs"
84
84
  Requires-Dist: pandas>=2.2.3; extra == "docs"
85
85
  Requires-Dist: polars>=1.17.1; extra == "docs"
86
+ Requires-Dist: pyspark==3.5.6; extra == "docs"
86
87
  Dynamic: license-file
87
88
 
88
89
  <div align="center">
@@ -236,6 +237,48 @@ validation.get_step_report(i=3).show("browser") # Get failing records from step
236
237
 
237
238
  <br>
238
239
 
240
+ ## YAML Configuration
241
+
242
+ For teams that need portable, version-controlled validation workflows, Pointblank supports YAML configuration files. This makes it easy to share validation logic across different environments and team members, ensuring everyone is on the same page.
243
+
244
+ **validation.yaml**
245
+
246
+ ```yaml
247
+ validate:
248
+ data: small_table
249
+ tbl_name: "small_table"
250
+ label: "Getting started validation"
251
+
252
+ steps:
253
+ - col_vals_gt:
254
+ columns: "d"
255
+ value: 100
256
+ - col_vals_le:
257
+ columns: "c"
258
+ value: 5
259
+ - col_exists:
260
+ columns: ["date", "date_time"]
261
+ ```
262
+
263
+ **Execute the YAML validation**
264
+
265
+ ```python
266
+ import pointblank as pb
267
+
268
+ # Run validation from YAML configuration
269
+ validation = pb.yaml_interrogate("validation.yaml")
270
+
271
+ # Get the results just like any other validation
272
+ validation.get_tabular_report().show()
273
+ ```
274
+
275
+ This approach is perfect for:
276
+
277
+ - **CI/CD pipelines**: Store validation rules alongside your code
278
+ - **Team collaboration**: Share validation logic in a readable format
279
+ - **Environment consistency**: Use the same validation across dev, staging, and production
280
+ - **Documentation**: YAML files serve as living documentation of your data quality requirements
281
+
239
282
  ## Command Line Interface (CLI)
240
283
 
241
284
  Pointblank includes a powerful CLI utility called `pb` that lets you run data validation workflows directly from the command line. Perfect for CI/CD pipelines, scheduled data quality checks, or quick validation tasks.
@@ -263,6 +306,12 @@ pb scan "duckdb:///data/sales.ddb::customers"
263
306
  **Run Essential Validations**
264
307
 
265
308
  ```bash
309
+ # Run validation from YAML configuration file
310
+ pb run validation.yaml
311
+
312
+ # Run validation from Python file
313
+ pb run validation.py
314
+
266
315
  # Check for duplicate rows
267
316
  pb validate small_table --check rows-distinct
268
317
 
@@ -279,8 +328,12 @@ pb validate small_table --check col-vals-gt --column a --value 5 --show-extract
279
328
  **Integrate with CI/CD**
280
329
 
281
330
  ```bash
282
- # Use exit codes for automation (0 = pass, 1 = fail)
331
+ # Use exit codes for automation in one-liner validations (0 = pass, 1 = fail)
283
332
  pb validate small_table --check rows-distinct --exit-code
333
+
334
+ # Run validation workflows with exit codes
335
+ pb run validation.yaml --exit-code
336
+ pb run validation.py --exit-code
284
337
  ```
285
338
 
286
339
  Click the following headings to see some video demonstrations of the CLI:
@@ -1,28 +1,29 @@
1
- pointblank/__init__.py,sha256=g7KAdNKGj2fPXey_nIev90riUEOSxmqxD2KLXD2IkZY,1856
2
- pointblank/_constants.py,sha256=xJ4hqLeoTsu07PFGnaSRhS6S5UOGyBg1yKF4_x_Gbtk,81527
1
+ pointblank/__init__.py,sha256=Qt6HEcSoduSkphatxf2Bqy4KNP-wXssRv9zlEslhTJk,1915
2
+ pointblank/_constants.py,sha256=rB8qTnhabwmSQURevHqokC1pp5lfaWMCzhmbMZ0CP8A,81512
3
3
  pointblank/_constants_docs.py,sha256=JBmtt16zTYQ-zaM4ElLExtKs-dKlnN553Ys2ML1Y1C8,2099
4
4
  pointblank/_constants_translations.py,sha256=HXcCYmKoMjoaFv-Ym4UWv3AsIVXik2zDyAy7xvTvv0Y,186710
5
5
  pointblank/_datascan_utils.py,sha256=EMfeabXm_ZsCUKPROB7rFhyOpjtRs8jcnZ_9nBtMyws,1750
6
- pointblank/_interrogation.py,sha256=U4GQ8Ik5rP75BYBkmunBvHKwf3XvLPHcUx18JwiBQZI,89422
6
+ pointblank/_interrogation.py,sha256=hTC8G0f_FBzEua_u1ZaDZAtbyf4cuJp2B7ss8TDwz-s,95498
7
7
  pointblank/_typing.py,sha256=aItbCbzhbzqjK3lCbL27ltRyXoAH1c3-U6xQdRzg-lU,1594
8
- pointblank/_utils.py,sha256=ttgYKKfufsUAiEBFfmWcejLz8hm6ff88DK_rDzk7VtE,28430
8
+ pointblank/_utils.py,sha256=0UuwPJCJCeo09k9IqZ-oncXAyFvI_1Ntc76CtwbyZYo,29466
9
9
  pointblank/_utils_check_args.py,sha256=rFEc1nbCN8ftsQQWVjCNWmQ2QmUDxkfgmoJclrZeTLs,5489
10
10
  pointblank/_utils_html.py,sha256=uJWvS9JwQVEZgwsGmScA_u_EBRND75rzUvnJPalbRVs,3731
11
11
  pointblank/actions.py,sha256=D6o9B2_ES9PNQg9HZwREacrrt-3A5bhdrBkL1UXz__s,18281
12
- pointblank/assistant.py,sha256=YsQ9U1wacVIuYFRIJ4maBbBDTzEQPzirhUUPgySosM4,15428
13
- pointblank/cli.py,sha256=EfmRG9pQMltubcCprIXIbrVLXYWzbS1fQiJIWzLeKVE,228496
12
+ pointblank/assistant.py,sha256=vcdFgXmdVSiylQgTW3e62c13X3vAicBPjyG8OTZXmGM,15902
13
+ pointblank/cli.py,sha256=p2cO-NKInQ41hqRMy6TNmxOj48pR5vq8s7JTLXfcP4M,228188
14
14
  pointblank/column.py,sha256=_FJjpjv760D1p6YGgqbwmKYktouG7AJ2A9uIMYQBTYA,76560
15
15
  pointblank/compare.py,sha256=kFd18CehHz7g-2MF1kSmJSdOoAP80q_9PaF6QzHC1ds,866
16
16
  pointblank/datascan.py,sha256=nmTcRLW8nAZfvRS_Nf00Wgx4oUX-o6WFOZqLDbedbu8,24563
17
17
  pointblank/draft.py,sha256=cusr4fBiNncCKIOU8UwvJcvkBeBuUnqH_UfYp9dtNss,15777
18
18
  pointblank/scan_profile.py,sha256=lZU5hlnzznDATNn9W3gNdyuFm05WDP8y1RjDJEcE5zg,10426
19
19
  pointblank/scan_profile_stats.py,sha256=qdzoGXB-zi2hmpA4mTz6LLTqMnb-NRG9ndxU9cxS72w,4461
20
- pointblank/schema.py,sha256=d93omncsV2lVbatM_QUFeCfCFA42WPZcgO_kE-ktjfU,45107
20
+ pointblank/schema.py,sha256=vwGF8UKy2riRSQzcwatcI6L0t_6ccdbOayrKonvyodE,45777
21
+ pointblank/segments.py,sha256=RXp3lPr3FboVseadNqLgIeoMBh_mykrQSFp1WtV41Yg,5570
21
22
  pointblank/tf.py,sha256=8o_8m4i01teulEe3-YYMotSNf3tImjBMInsvdjSAO5Q,8844
22
23
  pointblank/thresholds.py,sha256=mybeLzTVdmN04NLKoV-jiSBXsWknwHO0Gox0ttVN_MU,25766
23
- pointblank/validate.py,sha256=CelY6wwB1JRyii-KWEyKfiazd7mToxAegHG1GMtKIm4,680332
24
+ pointblank/validate.py,sha256=0AP7Dm9HH0i-gnlZ_d9Wg1abovpO6tPLE3Sn1z7ju0Y,693119
24
25
  pointblank/yaml.py,sha256=4DrkOJwCQ3CaXQ7ESNIW72pp-dL1ctlX6ONU30Vh1Fs,57901
25
- pointblank/data/api-docs.txt,sha256=_mKEb3zuI6TR0bPNkpr5Y-GUtbB3Qv5WESR7MFuL06I,506515
26
+ pointblank/data/api-docs.txt,sha256=0wXk__xYwgKeS24ZjbaTPFeJ3ZO7AIyMQoFClCcvPTc,529897
26
27
  pointblank/data/game_revenue-duckdb.zip,sha256=tKIVx48OGLYGsQPS3h5AjA2Nyq_rfEpLCjBiFUWhagU,35880
27
28
  pointblank/data/game_revenue.zip,sha256=7c9EvHLyi93CHUd4p3dM4CZ-GucFCtXKSPxgLojL32U,33749
28
29
  pointblank/data/global_sales-duckdb.zip,sha256=2ok_cvJ1ZuSkXnw0R6_OkKYRTWhJ-jJEMq2VYsv5fqY,1336390
@@ -32,9 +33,9 @@ pointblank/data/nycflights.zip,sha256=yVjbUaKUz2LydSdF9cABuir0VReHBBgV7shiNWSd0m
32
33
  pointblank/data/polars-api-docs.txt,sha256=KGcS-BOtUs9zgpkWfXD-GFdFh4O_zjdkpX7msHjztLg,198045
33
34
  pointblank/data/small_table-duckdb.zip,sha256=BhTaZ2CRS4-9Z1uVhOU6HggvW3XCar7etMznfENIcOc,2028
34
35
  pointblank/data/small_table.zip,sha256=lmFb90Nb-v5X559Ikjg31YLAXuRyMkD9yLRElkXPMzQ,472
35
- pointblank-0.11.6.dist-info/licenses/LICENSE,sha256=apLF-HWPNU7pT5bmf5KmZpD5Cklpy2u-BN_0xBoRMLY,1081
36
- pointblank-0.11.6.dist-info/METADATA,sha256=ni-fTo_hxUkYWEsW2qmncCPnpeyfh6me5aqexPcxXSA,17777
37
- pointblank-0.11.6.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
38
- pointblank-0.11.6.dist-info/entry_points.txt,sha256=GqqqOTOH8uZe22wLcvYjzpizqk_j4MNcUo2YM14ryCw,42
39
- pointblank-0.11.6.dist-info/top_level.txt,sha256=-wHrS1SvV8-nhvc3w-PPYs1C1WtEc1pK-eGjubbCCKc,11
40
- pointblank-0.11.6.dist-info/RECORD,,
36
+ pointblank-0.12.0.dist-info/licenses/LICENSE,sha256=apLF-HWPNU7pT5bmf5KmZpD5Cklpy2u-BN_0xBoRMLY,1081
37
+ pointblank-0.12.0.dist-info/METADATA,sha256=eKVOvRdSQMDFuvOKyMjHZ4s5P3vsVmQaqO7lZCR7P3g,19246
38
+ pointblank-0.12.0.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
39
+ pointblank-0.12.0.dist-info/entry_points.txt,sha256=GqqqOTOH8uZe22wLcvYjzpizqk_j4MNcUo2YM14ryCw,42
40
+ pointblank-0.12.0.dist-info/top_level.txt,sha256=-wHrS1SvV8-nhvc3w-PPYs1C1WtEc1pK-eGjubbCCKc,11
41
+ pointblank-0.12.0.dist-info/RECORD,,