pointblank 0.13.4__py3-none-any.whl → 0.14.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.
Files changed (36) hide show
  1. pointblank/__init__.py +4 -0
  2. pointblank/_constants.py +54 -0
  3. pointblank/_constants_translations.py +487 -2
  4. pointblank/_interrogation.py +182 -11
  5. pointblank/_utils.py +3 -3
  6. pointblank/_utils_ai.py +850 -0
  7. pointblank/cli.py +128 -115
  8. pointblank/column.py +1 -1
  9. pointblank/data/api-docs.txt +198 -13
  10. pointblank/data/validations/README.md +108 -0
  11. pointblank/data/validations/complex_preprocessing.json +54 -0
  12. pointblank/data/validations/complex_preprocessing.pkl +0 -0
  13. pointblank/data/validations/generate_test_files.py +127 -0
  14. pointblank/data/validations/multiple_steps.json +83 -0
  15. pointblank/data/validations/multiple_steps.pkl +0 -0
  16. pointblank/data/validations/narwhals_function.json +28 -0
  17. pointblank/data/validations/narwhals_function.pkl +0 -0
  18. pointblank/data/validations/no_preprocessing.json +83 -0
  19. pointblank/data/validations/no_preprocessing.pkl +0 -0
  20. pointblank/data/validations/pandas_compatible.json +28 -0
  21. pointblank/data/validations/pandas_compatible.pkl +0 -0
  22. pointblank/data/validations/preprocessing_functions.py +46 -0
  23. pointblank/data/validations/simple_preprocessing.json +57 -0
  24. pointblank/data/validations/simple_preprocessing.pkl +0 -0
  25. pointblank/datascan.py +4 -4
  26. pointblank/scan_profile.py +6 -6
  27. pointblank/schema.py +8 -82
  28. pointblank/thresholds.py +1 -1
  29. pointblank/validate.py +1233 -12
  30. {pointblank-0.13.4.dist-info → pointblank-0.14.0.dist-info}/METADATA +66 -8
  31. pointblank-0.14.0.dist-info/RECORD +55 -0
  32. pointblank-0.13.4.dist-info/RECORD +0 -39
  33. {pointblank-0.13.4.dist-info → pointblank-0.14.0.dist-info}/WHEEL +0 -0
  34. {pointblank-0.13.4.dist-info → pointblank-0.14.0.dist-info}/entry_points.txt +0 -0
  35. {pointblank-0.13.4.dist-info → pointblank-0.14.0.dist-info}/licenses/LICENSE +0 -0
  36. {pointblank-0.13.4.dist-info → pointblank-0.14.0.dist-info}/top_level.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: pointblank
3
- Version: 0.13.4
3
+ Version: 0.14.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
@@ -42,7 +42,7 @@ Description-Content-Type: text/markdown
42
42
  License-File: LICENSE
43
43
  Requires-Dist: commonmark>=0.9.1
44
44
  Requires-Dist: importlib-metadata
45
- Requires-Dist: great_tables>=0.17.0
45
+ Requires-Dist: great_tables>=0.19.0
46
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
@@ -132,13 +132,63 @@ _Data validation made beautiful and powerful_
132
132
  <a href="translations/README.ar.md">العربية</a>
133
133
  </div>
134
134
 
135
- ## What is Pointblank?
135
+ <br>
136
+
137
+ Pointblank takes a different approach to data quality. It doesn't have to be a tedious technical task. Rather, it can become a process focused on clear communication between team members. While other validation libraries focus solely on catching errors, Pointblank is great at both **finding issues and sharing insights**. Our beautiful, customizable reports turn validation results into conversations with stakeholders, making data quality issues immediately understandable and actionable for everyone on your team.
138
+
139
+ **Get started in minutes, not hours.** Pointblank's AI-powered [`DraftValidation`](https://posit-dev.github.io/pointblank/user-guide/draft-validation.html) feature analyzes your data and suggests intelligent validation rules automatically. So there's no need to stare at an empty validation script wondering where to begin. Pointblank can kickstart your data quality journey so you can focus on what matters most.
140
+
141
+ Whether you're a data scientist who needs to quickly communicate data quality findings, a data engineer building robust pipelines, or an analyst presenting data quality results to business stakeholders, Pointblank helps you to turn data quality from an afterthought into a competitive advantage.
142
+
143
+ ## Getting Started with AI-Powered Validation Drafting
144
+
145
+ The `DraftValidation` class uses LLMs to analyze your data and generate a complete validation plan with intelligent suggestions. This helps you quickly get started with data validation or jumpstart a new project.
146
+
147
+ ```python
148
+ import pointblank as pb
136
149
 
137
- Pointblank is a powerful, yet elegant data validation framework for Python that transforms how you ensure data quality. With its intuitive, chainable API, you can quickly validate your data against comprehensive quality checks and visualize results through stunning, interactive reports that make data issues immediately actionable.
150
+ # Load your data
151
+ data = pb.load_dataset("game_revenue") # A sample dataset
138
152
 
139
- Whether you're a data scientist, data engineer, or analyst, Pointblank helps you catch data quality issues before they impact your analyses or downstream systems.
153
+ # Use DraftValidation to generate a validation plan
154
+ pb.DraftValidation(data=data, model="anthropic:claude-sonnet-4-5")
155
+ ```
140
156
 
141
- ## Getting Started in 30 Seconds
157
+ The output is a complete validation plan with intelligent suggestions based on your data:
158
+
159
+ ```python
160
+ import pointblank as pb
161
+
162
+ # The validation plan
163
+ validation = (
164
+ pb.Validate(
165
+ data=data,
166
+ label="Draft Validation",
167
+ thresholds=pb.Thresholds(warning=0.10, error=0.25, critical=0.35)
168
+ )
169
+ .col_vals_in_set(columns="item_type", set=["iap", "ad"])
170
+ .col_vals_gt(columns="item_revenue", value=0)
171
+ .col_vals_between(columns="session_duration", left=3.2, right=41.0)
172
+ .col_count_match(count=11)
173
+ .row_count_match(count=2000)
174
+ .rows_distinct()
175
+ .interrogate()
176
+ )
177
+
178
+ validation
179
+ ```
180
+
181
+ <div align="center">
182
+ <img src="https://posit-dev.github.io/pointblank/assets/pointblank-draft-validation-report.png" width="800px">
183
+ </div>
184
+
185
+ <br>
186
+
187
+ Copy, paste, and customize the generated validation plan for your needs.
188
+
189
+ ## Chainable Validation API
190
+
191
+ Pointblank's chainable API makes validation simple and readable. The same pattern always applies: (1) start with `Validate`, (2) add validation steps, and (3) finish with `interrogate()`.
142
192
 
143
193
  ```python
144
194
  import pointblank as pb
@@ -164,6 +214,12 @@ validation
164
214
 
165
215
  <br>
166
216
 
217
+ Once you have an interrogated `validation` object, you can leverage a variety of methods to extract insights like:
218
+
219
+ - getting detailed reports for single steps to see what went wrong
220
+ - filtering tables based on validation results
221
+ - extracting problematic data for debugging
222
+
167
223
  ## Why Choose Pointblank?
168
224
 
169
225
  - **Works with your existing stack**: Seamlessly integrates with Polars, Pandas, DuckDB, MySQL, PostgreSQL, SQLite, Parquet, PySpark, Snowflake, and more!
@@ -172,7 +228,9 @@ validation
172
228
  - **Threshold-based alerts**: Set 'warning', 'error', and 'critical' thresholds with custom actions
173
229
  - **Practical outputs**: Use validation results to filter tables, extract problematic data, or trigger downstream processes
174
230
 
175
- ## Real-World Example
231
+ ## Production-Ready Validation Pipeline
232
+
233
+ Here's how Pointblank handles complex, real-world scenarios with advanced features like threshold management, automated alerts, and comprehensive business rule validation:
176
234
 
177
235
  ```python
178
236
  import pointblank as pb
@@ -280,7 +338,7 @@ validation = pb.yaml_interrogate("validation.yaml")
280
338
  validation.get_tabular_report().show()
281
339
  ```
282
340
 
283
- This approach is perfect for:
341
+ This approach is suitable for:
284
342
 
285
343
  - **CI/CD pipelines**: Store validation rules alongside your code
286
344
  - **Team collaboration**: Share validation logic in a readable format
@@ -0,0 +1,55 @@
1
+ pointblank/__init__.py,sha256=Nspcpnj_w940huEDBNcS5_lHpWsQif8t0gLst4dmZTs,1942
2
+ pointblank/_constants.py,sha256=HR1V-A-flMY17qlBQQf7SbCxBtbCugQUlh3WHzwuqys,84010
3
+ pointblank/_constants_translations.py,sha256=2ux_qFW7JZ65-0VOjlhlTQ7Ts8FlCNYqp3SneuTOCmk,242476
4
+ pointblank/_datascan_utils.py,sha256=EMfeabXm_ZsCUKPROB7rFhyOpjtRs8jcnZ_9nBtMyws,1750
5
+ pointblank/_interrogation.py,sha256=wNCBRGwYUdk64OC56juM_Kx2fW2Z5wIK-oamnSyT20c,83655
6
+ pointblank/_typing.py,sha256=aItbCbzhbzqjK3lCbL27ltRyXoAH1c3-U6xQdRzg-lU,1594
7
+ pointblank/_utils.py,sha256=NFQsIrW3dZ7IzCloiwgVblr0-7eg-OigLEq7W1lUuyo,31948
8
+ pointblank/_utils_ai.py,sha256=I7Oe3Ojm1t_haBii17v6s4IemkBDWvKFMVxX8UCY67Q,30228
9
+ pointblank/_utils_check_args.py,sha256=rFEc1nbCN8ftsQQWVjCNWmQ2QmUDxkfgmoJclrZeTLs,5489
10
+ pointblank/_utils_html.py,sha256=uJWvS9JwQVEZgwsGmScA_u_EBRND75rzUvnJPalbRVs,3731
11
+ pointblank/actions.py,sha256=D6o9B2_ES9PNQg9HZwREacrrt-3A5bhdrBkL1UXz__s,18281
12
+ pointblank/assistant.py,sha256=vcdFgXmdVSiylQgTW3e62c13X3vAicBPjyG8OTZXmGM,15902
13
+ pointblank/cli.py,sha256=hRVPdjU4dxZZ4XdWN2A7OEnsvWB15dXFPn-Chhi7tNs,229394
14
+ pointblank/column.py,sha256=943ADTk8rCAs0KEihVYONgJqXUP5uwKx5oMEJnpG4VU,76801
15
+ pointblank/compare.py,sha256=kFd18CehHz7g-2MF1kSmJSdOoAP80q_9PaF6QzHC1ds,866
16
+ pointblank/datascan.py,sha256=xFhpcoLD16mJH_yhMm0NbCa5VUk5cz3iazn5RfNXlao,24710
17
+ pointblank/draft.py,sha256=cusr4fBiNncCKIOU8UwvJcvkBeBuUnqH_UfYp9dtNss,15777
18
+ pointblank/scan_profile.py,sha256=Zy-qyqggod0mP1PcES6qTxIaENkxT-FTNM8LWFVhRD0,10546
19
+ pointblank/scan_profile_stats.py,sha256=qdzoGXB-zi2hmpA4mTz6LLTqMnb-NRG9ndxU9cxS72w,4461
20
+ pointblank/schema.py,sha256=yir-2VNmHyNdH1vGpx3adqOXdvspJlMKhJmJQz4egqU,48794
21
+ pointblank/segments.py,sha256=RXp3lPr3FboVseadNqLgIeoMBh_mykrQSFp1WtV41Yg,5570
22
+ pointblank/thresholds.py,sha256=KhvCCB_rlUHq1RjZ6SxXZLVrolOn_D2Ppxb0ABnwCRw,25764
23
+ pointblank/validate.py,sha256=EDCGjKTX8BNuODY-yAGYzbFtHb_d9bf5m_2PXv9koTg,772558
24
+ pointblank/yaml.py,sha256=cHwDvybhp_oLOGR1rA83trEDQWYuRGhT4iEa6FMXi6w,63074
25
+ pointblank/data/api-docs.txt,sha256=p1OdPXjlVUz5XnWyjqB3I-jXRh1hWo96qJYBGhDOYwU,537590
26
+ pointblank/data/game_revenue-duckdb.zip,sha256=tKIVx48OGLYGsQPS3h5AjA2Nyq_rfEpLCjBiFUWhagU,35880
27
+ pointblank/data/game_revenue.zip,sha256=7c9EvHLyi93CHUd4p3dM4CZ-GucFCtXKSPxgLojL32U,33749
28
+ pointblank/data/global_sales-duckdb.zip,sha256=2ok_cvJ1ZuSkXnw0R6_OkKYRTWhJ-jJEMq2VYsv5fqY,1336390
29
+ pointblank/data/global_sales.zip,sha256=JeUnR1apKQ35PPwEcvTKCEIEiYeYQtoGmYjmzbz99DM,2138604
30
+ pointblank/data/nycflights-duckdb.zip,sha256=GQrHO9tp7d9cNGFNSbA9EKF19MLf6t2wZE0U9-hIKow,5293077
31
+ pointblank/data/nycflights.zip,sha256=yVjbUaKUz2LydSdF9cABuir0VReHBBgV7shiNWSd0mU,7828965
32
+ pointblank/data/polars-api-docs.txt,sha256=KGcS-BOtUs9zgpkWfXD-GFdFh4O_zjdkpX7msHjztLg,198045
33
+ pointblank/data/small_table-duckdb.zip,sha256=BhTaZ2CRS4-9Z1uVhOU6HggvW3XCar7etMznfENIcOc,2028
34
+ pointblank/data/small_table.zip,sha256=lmFb90Nb-v5X559Ikjg31YLAXuRyMkD9yLRElkXPMzQ,472
35
+ pointblank/data/validations/README.md,sha256=K_krlaGTBgE-NrdfHCvUJqaP40Wnb9gNGAh5tM53e9o,4292
36
+ pointblank/data/validations/complex_preprocessing.json,sha256=oqGk38WUze8qJsUTUx6_bD6VaOvOFTwJq1J3-gdHzE0,2040
37
+ pointblank/data/validations/complex_preprocessing.pkl,sha256=gyP87mnTL2POrZy1iM0AzvsozRwgh24VzVRpBy_knsM,7836
38
+ pointblank/data/validations/generate_test_files.py,sha256=roJo9Su16ix_oV44V_s5ucIZKqdTJMckslecKWOUvDc,4203
39
+ pointblank/data/validations/multiple_steps.json,sha256=ijbQfUThuovZVl4FJ9hzSiCvrb_A5N1bIDqf_D-E_gA,2544
40
+ pointblank/data/validations/multiple_steps.pkl,sha256=GfnvQQQlaSE3SsI8uDQ3oMI4ugVyAqRFIdDdJI3BeqQ,10415
41
+ pointblank/data/validations/narwhals_function.json,sha256=3V3lxipH1R1Gfmodd26EdILc69Hql4Nr3M99JqecyAg,872
42
+ pointblank/data/validations/narwhals_function.pkl,sha256=KU0UjbTv75JaF2tWXe6OpIyd0Dnv17TFmXPoBxvqdF4,3478
43
+ pointblank/data/validations/no_preprocessing.json,sha256=njU41sUbMUWm05FXgj_o2NBzBmgrvYp00Sz9qFGgTbA,2120
44
+ pointblank/data/validations/no_preprocessing.pkl,sha256=VmoEsS7dO_1VHfseJaRyXJu552xhKpOIqqd7BWIPoLI,9124
45
+ pointblank/data/validations/pandas_compatible.json,sha256=fduquqJCUyLKlTpZM7amgkmEiB9j14FdU4k4kson3Qk,1019
46
+ pointblank/data/validations/pandas_compatible.pkl,sha256=-85iBWKH_SYu8oq1752pAMKyHqJ7VHvvz0etXfoUUjg,4743
47
+ pointblank/data/validations/preprocessing_functions.py,sha256=DudTuQVGzEnZb0UYBaPou08ad3dmdxfcOZuPMkdM6A0,1422
48
+ pointblank/data/validations/simple_preprocessing.json,sha256=2aBnY2fmrIwlIbEprzqxYoZtsJbQ8o0VBjnuDo_dTqo,1546
49
+ pointblank/data/validations/simple_preprocessing.pkl,sha256=Arp9DHWbZVYbaLR7Xg-poZyvOgplYaqAQoWD1DohiZw,6785
50
+ pointblank-0.14.0.dist-info/licenses/LICENSE,sha256=apLF-HWPNU7pT5bmf5KmZpD5Cklpy2u-BN_0xBoRMLY,1081
51
+ pointblank-0.14.0.dist-info/METADATA,sha256=YD28gD8Nqk-2fwqTidW5DzP6TeK61KC1QGtitUgD9To,22304
52
+ pointblank-0.14.0.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
53
+ pointblank-0.14.0.dist-info/entry_points.txt,sha256=GqqqOTOH8uZe22wLcvYjzpizqk_j4MNcUo2YM14ryCw,42
54
+ pointblank-0.14.0.dist-info/top_level.txt,sha256=-wHrS1SvV8-nhvc3w-PPYs1C1WtEc1pK-eGjubbCCKc,11
55
+ pointblank-0.14.0.dist-info/RECORD,,
@@ -1,39 +0,0 @@
1
- pointblank/__init__.py,sha256=IZ-JwGWr2DOFBfq4XvE0SzceWMkFewtBN10V4F9pIGg,1876
2
- pointblank/_constants.py,sha256=HHiGuso_To-PsKQLxVDYa_Iczy92iPoIYurTy6BAtL4,80778
3
- pointblank/_constants_translations.py,sha256=4URW8TLp33ngSLQG9eRlXKFLFeueQHe73mKF7p4D4Gw,197531
4
- pointblank/_datascan_utils.py,sha256=EMfeabXm_ZsCUKPROB7rFhyOpjtRs8jcnZ_9nBtMyws,1750
5
- pointblank/_interrogation.py,sha256=ZNBPiVF1_ohoUCqj0jLDNwquJ2r52AlHoagUeeTExlc,77054
6
- pointblank/_typing.py,sha256=aItbCbzhbzqjK3lCbL27ltRyXoAH1c3-U6xQdRzg-lU,1594
7
- pointblank/_utils.py,sha256=H8Rw4Bmo7n7bxhtUJapj1c06pvzmg8UJKzxhKk869VA,31888
8
- pointblank/_utils_check_args.py,sha256=rFEc1nbCN8ftsQQWVjCNWmQ2QmUDxkfgmoJclrZeTLs,5489
9
- pointblank/_utils_html.py,sha256=uJWvS9JwQVEZgwsGmScA_u_EBRND75rzUvnJPalbRVs,3731
10
- pointblank/actions.py,sha256=D6o9B2_ES9PNQg9HZwREacrrt-3A5bhdrBkL1UXz__s,18281
11
- pointblank/assistant.py,sha256=vcdFgXmdVSiylQgTW3e62c13X3vAicBPjyG8OTZXmGM,15902
12
- pointblank/cli.py,sha256=p2cO-NKInQ41hqRMy6TNmxOj48pR5vq8s7JTLXfcP4M,228188
13
- pointblank/column.py,sha256=w41CBg3lt3ZzKS_j-SYdkRmnOWcP5xXa0rRjsPVRE_M,76781
14
- pointblank/compare.py,sha256=kFd18CehHz7g-2MF1kSmJSdOoAP80q_9PaF6QzHC1ds,866
15
- pointblank/datascan.py,sha256=tQiwe9x0jAbK9OJLQe53R_qRl2uBKireaWsMlM8K1sw,24630
16
- pointblank/draft.py,sha256=cusr4fBiNncCKIOU8UwvJcvkBeBuUnqH_UfYp9dtNss,15777
17
- pointblank/scan_profile.py,sha256=lZU5hlnzznDATNn9W3gNdyuFm05WDP8y1RjDJEcE5zg,10426
18
- pointblank/scan_profile_stats.py,sha256=qdzoGXB-zi2hmpA4mTz6LLTqMnb-NRG9ndxU9cxS72w,4461
19
- pointblank/schema.py,sha256=hjALMuYppNfELC_nAqfM9fLjPdN1w2M3rDMusrPqFYA,50757
20
- pointblank/segments.py,sha256=RXp3lPr3FboVseadNqLgIeoMBh_mykrQSFp1WtV41Yg,5570
21
- pointblank/thresholds.py,sha256=mybeLzTVdmN04NLKoV-jiSBXsWknwHO0Gox0ttVN_MU,25766
22
- pointblank/validate.py,sha256=TbbSMQNKorlHZCeqZftML_iqwXfLg-Lfz2e0kzrIB_w,719283
23
- pointblank/yaml.py,sha256=cHwDvybhp_oLOGR1rA83trEDQWYuRGhT4iEa6FMXi6w,63074
24
- pointblank/data/api-docs.txt,sha256=w2nIkIL_fJpXlPR9clogqcgdiv-uHvdSDI8gjkP_mCQ,531711
25
- pointblank/data/game_revenue-duckdb.zip,sha256=tKIVx48OGLYGsQPS3h5AjA2Nyq_rfEpLCjBiFUWhagU,35880
26
- pointblank/data/game_revenue.zip,sha256=7c9EvHLyi93CHUd4p3dM4CZ-GucFCtXKSPxgLojL32U,33749
27
- pointblank/data/global_sales-duckdb.zip,sha256=2ok_cvJ1ZuSkXnw0R6_OkKYRTWhJ-jJEMq2VYsv5fqY,1336390
28
- pointblank/data/global_sales.zip,sha256=JeUnR1apKQ35PPwEcvTKCEIEiYeYQtoGmYjmzbz99DM,2138604
29
- pointblank/data/nycflights-duckdb.zip,sha256=GQrHO9tp7d9cNGFNSbA9EKF19MLf6t2wZE0U9-hIKow,5293077
30
- pointblank/data/nycflights.zip,sha256=yVjbUaKUz2LydSdF9cABuir0VReHBBgV7shiNWSd0mU,7828965
31
- pointblank/data/polars-api-docs.txt,sha256=KGcS-BOtUs9zgpkWfXD-GFdFh4O_zjdkpX7msHjztLg,198045
32
- pointblank/data/small_table-duckdb.zip,sha256=BhTaZ2CRS4-9Z1uVhOU6HggvW3XCar7etMznfENIcOc,2028
33
- pointblank/data/small_table.zip,sha256=lmFb90Nb-v5X559Ikjg31YLAXuRyMkD9yLRElkXPMzQ,472
34
- pointblank-0.13.4.dist-info/licenses/LICENSE,sha256=apLF-HWPNU7pT5bmf5KmZpD5Cklpy2u-BN_0xBoRMLY,1081
35
- pointblank-0.13.4.dist-info/METADATA,sha256=XvsS92v8b82Y3Ub1zfBvHH-ADegFhgUif0QOV-r6Rnc,19582
36
- pointblank-0.13.4.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
37
- pointblank-0.13.4.dist-info/entry_points.txt,sha256=GqqqOTOH8uZe22wLcvYjzpizqk_j4MNcUo2YM14ryCw,42
38
- pointblank-0.13.4.dist-info/top_level.txt,sha256=-wHrS1SvV8-nhvc3w-PPYs1C1WtEc1pK-eGjubbCCKc,11
39
- pointblank-0.13.4.dist-info/RECORD,,