pointblank 0.13.4__py3-none-any.whl → 0.15.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 (39) hide show
  1. pointblank/__init__.py +4 -0
  2. pointblank/_constants.py +117 -0
  3. pointblank/_constants_translations.py +487 -2
  4. pointblank/_interrogation.py +1065 -12
  5. pointblank/_spec_utils.py +1015 -0
  6. pointblank/_utils.py +17 -7
  7. pointblank/_utils_ai.py +875 -0
  8. pointblank/assistant.py +1 -1
  9. pointblank/cli.py +128 -115
  10. pointblank/column.py +1 -1
  11. pointblank/data/api-docs.txt +1838 -130
  12. pointblank/data/validations/README.md +108 -0
  13. pointblank/data/validations/complex_preprocessing.json +54 -0
  14. pointblank/data/validations/complex_preprocessing.pkl +0 -0
  15. pointblank/data/validations/generate_test_files.py +127 -0
  16. pointblank/data/validations/multiple_steps.json +83 -0
  17. pointblank/data/validations/multiple_steps.pkl +0 -0
  18. pointblank/data/validations/narwhals_function.json +28 -0
  19. pointblank/data/validations/narwhals_function.pkl +0 -0
  20. pointblank/data/validations/no_preprocessing.json +83 -0
  21. pointblank/data/validations/no_preprocessing.pkl +0 -0
  22. pointblank/data/validations/pandas_compatible.json +28 -0
  23. pointblank/data/validations/pandas_compatible.pkl +0 -0
  24. pointblank/data/validations/preprocessing_functions.py +46 -0
  25. pointblank/data/validations/simple_preprocessing.json +57 -0
  26. pointblank/data/validations/simple_preprocessing.pkl +0 -0
  27. pointblank/datascan.py +4 -4
  28. pointblank/draft.py +52 -3
  29. pointblank/scan_profile.py +6 -6
  30. pointblank/schema.py +8 -82
  31. pointblank/thresholds.py +1 -1
  32. pointblank/validate.py +3069 -437
  33. {pointblank-0.13.4.dist-info → pointblank-0.15.0.dist-info}/METADATA +67 -8
  34. pointblank-0.15.0.dist-info/RECORD +56 -0
  35. pointblank-0.13.4.dist-info/RECORD +0 -39
  36. {pointblank-0.13.4.dist-info → pointblank-0.15.0.dist-info}/WHEEL +0 -0
  37. {pointblank-0.13.4.dist-info → pointblank-0.15.0.dist-info}/entry_points.txt +0 -0
  38. {pointblank-0.13.4.dist-info → pointblank-0.15.0.dist-info}/licenses/LICENSE +0 -0
  39. {pointblank-0.13.4.dist-info → pointblank-0.15.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.15.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
@@ -59,6 +59,7 @@ Provides-Extra: generate
59
59
  Requires-Dist: chatlas>=0.3.0; extra == "generate"
60
60
  Requires-Dist: anthropic[bedrock]>=0.45.2; extra == "generate"
61
61
  Requires-Dist: openai>=1.63.0; extra == "generate"
62
+ Requires-Dist: httpx>=0.28.0; extra == "generate"
62
63
  Requires-Dist: shiny>=1.3.0; extra == "generate"
63
64
  Provides-Extra: mcp
64
65
  Requires-Dist: mcp[cli]>=1.10.1; extra == "mcp"
@@ -132,13 +133,63 @@ _Data validation made beautiful and powerful_
132
133
  <a href="translations/README.ar.md">العربية</a>
133
134
  </div>
134
135
 
135
- ## What is Pointblank?
136
+ <br>
137
+
138
+ 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.
139
+
140
+ **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.
141
+
142
+ 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.
143
+
144
+ ## Getting Started with AI-Powered Validation Drafting
145
+
146
+ 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.
147
+
148
+ ```python
149
+ import pointblank as pb
136
150
 
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.
151
+ # Load your data
152
+ data = pb.load_dataset("game_revenue") # A sample dataset
138
153
 
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.
154
+ # Use DraftValidation to generate a validation plan
155
+ pb.DraftValidation(data=data, model="anthropic:claude-sonnet-4-5")
156
+ ```
140
157
 
141
- ## Getting Started in 30 Seconds
158
+ The output is a complete validation plan with intelligent suggestions based on your data:
159
+
160
+ ```python
161
+ import pointblank as pb
162
+
163
+ # The validation plan
164
+ validation = (
165
+ pb.Validate(
166
+ data=data,
167
+ label="Draft Validation",
168
+ thresholds=pb.Thresholds(warning=0.10, error=0.25, critical=0.35)
169
+ )
170
+ .col_vals_in_set(columns="item_type", set=["iap", "ad"])
171
+ .col_vals_gt(columns="item_revenue", value=0)
172
+ .col_vals_between(columns="session_duration", left=3.2, right=41.0)
173
+ .col_count_match(count=11)
174
+ .row_count_match(count=2000)
175
+ .rows_distinct()
176
+ .interrogate()
177
+ )
178
+
179
+ validation
180
+ ```
181
+
182
+ <div align="center">
183
+ <img src="https://posit-dev.github.io/pointblank/assets/pointblank-draft-validation-report.png" width="800px">
184
+ </div>
185
+
186
+ <br>
187
+
188
+ Copy, paste, and customize the generated validation plan for your needs.
189
+
190
+ ## Chainable Validation API
191
+
192
+ 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
193
 
143
194
  ```python
144
195
  import pointblank as pb
@@ -164,6 +215,12 @@ validation
164
215
 
165
216
  <br>
166
217
 
218
+ Once you have an interrogated `validation` object, you can leverage a variety of methods to extract insights like:
219
+
220
+ - getting detailed reports for single steps to see what went wrong
221
+ - filtering tables based on validation results
222
+ - extracting problematic data for debugging
223
+
167
224
  ## Why Choose Pointblank?
168
225
 
169
226
  - **Works with your existing stack**: Seamlessly integrates with Polars, Pandas, DuckDB, MySQL, PostgreSQL, SQLite, Parquet, PySpark, Snowflake, and more!
@@ -172,7 +229,9 @@ validation
172
229
  - **Threshold-based alerts**: Set 'warning', 'error', and 'critical' thresholds with custom actions
173
230
  - **Practical outputs**: Use validation results to filter tables, extract problematic data, or trigger downstream processes
174
231
 
175
- ## Real-World Example
232
+ ## Production-Ready Validation Pipeline
233
+
234
+ Here's how Pointblank handles complex, real-world scenarios with advanced features like threshold management, automated alerts, and comprehensive business rule validation:
176
235
 
177
236
  ```python
178
237
  import pointblank as pb
@@ -280,7 +339,7 @@ validation = pb.yaml_interrogate("validation.yaml")
280
339
  validation.get_tabular_report().show()
281
340
  ```
282
341
 
283
- This approach is perfect for:
342
+ This approach is suitable for:
284
343
 
285
344
  - **CI/CD pipelines**: Store validation rules alongside your code
286
345
  - **Team collaboration**: Share validation logic in a readable format
@@ -0,0 +1,56 @@
1
+ pointblank/__init__.py,sha256=Nspcpnj_w940huEDBNcS5_lHpWsQif8t0gLst4dmZTs,1942
2
+ pointblank/_constants.py,sha256=ouRkOEdk-WqkjNn1tlxdPEbUr8u14ZZDwz3zekp3QjE,98217
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=kqsklOOhWmI246NA5iwZm-Bn1SVuSo7q5TgwFoFGID8,114359
6
+ pointblank/_spec_utils.py,sha256=rOSbv0BTS4gbLk241R3VDgKXEHBED_WNimQiit5JkvI,28395
7
+ pointblank/_typing.py,sha256=aItbCbzhbzqjK3lCbL27ltRyXoAH1c3-U6xQdRzg-lU,1594
8
+ pointblank/_utils.py,sha256=ExPoTWMOLrdYhwr_v9gR_nwcVS3X5v5gV6M6AMkrns8,32310
9
+ pointblank/_utils_ai.py,sha256=-Eamr6vwDxhQbnB99zfumnfxbB552UUwXfXfCVkR2nM,31125
10
+ pointblank/_utils_check_args.py,sha256=rFEc1nbCN8ftsQQWVjCNWmQ2QmUDxkfgmoJclrZeTLs,5489
11
+ pointblank/_utils_html.py,sha256=uJWvS9JwQVEZgwsGmScA_u_EBRND75rzUvnJPalbRVs,3731
12
+ pointblank/actions.py,sha256=D6o9B2_ES9PNQg9HZwREacrrt-3A5bhdrBkL1UXz__s,18281
13
+ pointblank/assistant.py,sha256=BcbZIz-ooFSOPOVZg3JtBhWeT8MIH8OPLes5yC8DSzI,15895
14
+ pointblank/cli.py,sha256=hRVPdjU4dxZZ4XdWN2A7OEnsvWB15dXFPn-Chhi7tNs,229394
15
+ pointblank/column.py,sha256=943ADTk8rCAs0KEihVYONgJqXUP5uwKx5oMEJnpG4VU,76801
16
+ pointblank/compare.py,sha256=kFd18CehHz7g-2MF1kSmJSdOoAP80q_9PaF6QzHC1ds,866
17
+ pointblank/datascan.py,sha256=xFhpcoLD16mJH_yhMm0NbCa5VUk5cz3iazn5RfNXlao,24710
18
+ pointblank/draft.py,sha256=j6uATRE3zVtBSiDj1G5JtwVdcjaIUzoCCPqiLuRSmV0,17817
19
+ pointblank/scan_profile.py,sha256=Zy-qyqggod0mP1PcES6qTxIaENkxT-FTNM8LWFVhRD0,10546
20
+ pointblank/scan_profile_stats.py,sha256=qdzoGXB-zi2hmpA4mTz6LLTqMnb-NRG9ndxU9cxS72w,4461
21
+ pointblank/schema.py,sha256=yir-2VNmHyNdH1vGpx3adqOXdvspJlMKhJmJQz4egqU,48794
22
+ pointblank/segments.py,sha256=RXp3lPr3FboVseadNqLgIeoMBh_mykrQSFp1WtV41Yg,5570
23
+ pointblank/thresholds.py,sha256=KhvCCB_rlUHq1RjZ6SxXZLVrolOn_D2Ppxb0ABnwCRw,25764
24
+ pointblank/validate.py,sha256=5zeaY8nFiwZjwZ1vaOXNowiyLUKlfRjKDFyV_fF_cG4,833382
25
+ pointblank/yaml.py,sha256=cHwDvybhp_oLOGR1rA83trEDQWYuRGhT4iEa6FMXi6w,63074
26
+ pointblank/data/api-docs.txt,sha256=g-UrvtqVYvkURjkZKFvgUrHj4f73Nm1MfGwMq3v8kyk,607326
27
+ pointblank/data/game_revenue-duckdb.zip,sha256=tKIVx48OGLYGsQPS3h5AjA2Nyq_rfEpLCjBiFUWhagU,35880
28
+ pointblank/data/game_revenue.zip,sha256=7c9EvHLyi93CHUd4p3dM4CZ-GucFCtXKSPxgLojL32U,33749
29
+ pointblank/data/global_sales-duckdb.zip,sha256=2ok_cvJ1ZuSkXnw0R6_OkKYRTWhJ-jJEMq2VYsv5fqY,1336390
30
+ pointblank/data/global_sales.zip,sha256=JeUnR1apKQ35PPwEcvTKCEIEiYeYQtoGmYjmzbz99DM,2138604
31
+ pointblank/data/nycflights-duckdb.zip,sha256=GQrHO9tp7d9cNGFNSbA9EKF19MLf6t2wZE0U9-hIKow,5293077
32
+ pointblank/data/nycflights.zip,sha256=yVjbUaKUz2LydSdF9cABuir0VReHBBgV7shiNWSd0mU,7828965
33
+ pointblank/data/polars-api-docs.txt,sha256=KGcS-BOtUs9zgpkWfXD-GFdFh4O_zjdkpX7msHjztLg,198045
34
+ pointblank/data/small_table-duckdb.zip,sha256=BhTaZ2CRS4-9Z1uVhOU6HggvW3XCar7etMznfENIcOc,2028
35
+ pointblank/data/small_table.zip,sha256=lmFb90Nb-v5X559Ikjg31YLAXuRyMkD9yLRElkXPMzQ,472
36
+ pointblank/data/validations/README.md,sha256=K_krlaGTBgE-NrdfHCvUJqaP40Wnb9gNGAh5tM53e9o,4292
37
+ pointblank/data/validations/complex_preprocessing.json,sha256=oqGk38WUze8qJsUTUx6_bD6VaOvOFTwJq1J3-gdHzE0,2040
38
+ pointblank/data/validations/complex_preprocessing.pkl,sha256=gyP87mnTL2POrZy1iM0AzvsozRwgh24VzVRpBy_knsM,7836
39
+ pointblank/data/validations/generate_test_files.py,sha256=roJo9Su16ix_oV44V_s5ucIZKqdTJMckslecKWOUvDc,4203
40
+ pointblank/data/validations/multiple_steps.json,sha256=ijbQfUThuovZVl4FJ9hzSiCvrb_A5N1bIDqf_D-E_gA,2544
41
+ pointblank/data/validations/multiple_steps.pkl,sha256=GfnvQQQlaSE3SsI8uDQ3oMI4ugVyAqRFIdDdJI3BeqQ,10415
42
+ pointblank/data/validations/narwhals_function.json,sha256=3V3lxipH1R1Gfmodd26EdILc69Hql4Nr3M99JqecyAg,872
43
+ pointblank/data/validations/narwhals_function.pkl,sha256=KU0UjbTv75JaF2tWXe6OpIyd0Dnv17TFmXPoBxvqdF4,3478
44
+ pointblank/data/validations/no_preprocessing.json,sha256=njU41sUbMUWm05FXgj_o2NBzBmgrvYp00Sz9qFGgTbA,2120
45
+ pointblank/data/validations/no_preprocessing.pkl,sha256=VmoEsS7dO_1VHfseJaRyXJu552xhKpOIqqd7BWIPoLI,9124
46
+ pointblank/data/validations/pandas_compatible.json,sha256=fduquqJCUyLKlTpZM7amgkmEiB9j14FdU4k4kson3Qk,1019
47
+ pointblank/data/validations/pandas_compatible.pkl,sha256=-85iBWKH_SYu8oq1752pAMKyHqJ7VHvvz0etXfoUUjg,4743
48
+ pointblank/data/validations/preprocessing_functions.py,sha256=DudTuQVGzEnZb0UYBaPou08ad3dmdxfcOZuPMkdM6A0,1422
49
+ pointblank/data/validations/simple_preprocessing.json,sha256=2aBnY2fmrIwlIbEprzqxYoZtsJbQ8o0VBjnuDo_dTqo,1546
50
+ pointblank/data/validations/simple_preprocessing.pkl,sha256=Arp9DHWbZVYbaLR7Xg-poZyvOgplYaqAQoWD1DohiZw,6785
51
+ pointblank-0.15.0.dist-info/licenses/LICENSE,sha256=apLF-HWPNU7pT5bmf5KmZpD5Cklpy2u-BN_0xBoRMLY,1081
52
+ pointblank-0.15.0.dist-info/METADATA,sha256=xieDwMxrum4i4fe1fRDu9DI1FG01hqqyOqhHqyYyb5s,22354
53
+ pointblank-0.15.0.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
54
+ pointblank-0.15.0.dist-info/entry_points.txt,sha256=GqqqOTOH8uZe22wLcvYjzpizqk_j4MNcUo2YM14ryCw,42
55
+ pointblank-0.15.0.dist-info/top_level.txt,sha256=-wHrS1SvV8-nhvc3w-PPYs1C1WtEc1pK-eGjubbCCKc,11
56
+ pointblank-0.15.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,,