pystylometry 0.1.0__py3-none-any.whl → 1.1.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 (61) hide show
  1. pystylometry/__init__.py +30 -5
  2. pystylometry/_normalize.py +277 -0
  3. pystylometry/_types.py +1954 -28
  4. pystylometry/_utils.py +4 -0
  5. pystylometry/authorship/__init__.py +26 -1
  6. pystylometry/authorship/additional_methods.py +75 -0
  7. pystylometry/authorship/kilgarriff.py +347 -0
  8. pystylometry/character/__init__.py +15 -0
  9. pystylometry/character/character_metrics.py +389 -0
  10. pystylometry/cli.py +427 -0
  11. pystylometry/consistency/__init__.py +57 -0
  12. pystylometry/consistency/_thresholds.py +162 -0
  13. pystylometry/consistency/drift.py +549 -0
  14. pystylometry/dialect/__init__.py +65 -0
  15. pystylometry/dialect/_data/dialect_markers.json +1134 -0
  16. pystylometry/dialect/_loader.py +360 -0
  17. pystylometry/dialect/detector.py +533 -0
  18. pystylometry/lexical/__init__.py +13 -6
  19. pystylometry/lexical/advanced_diversity.py +680 -0
  20. pystylometry/lexical/function_words.py +590 -0
  21. pystylometry/lexical/hapax.py +310 -33
  22. pystylometry/lexical/mtld.py +180 -22
  23. pystylometry/lexical/ttr.py +149 -0
  24. pystylometry/lexical/word_frequency_sophistication.py +1805 -0
  25. pystylometry/lexical/yule.py +142 -29
  26. pystylometry/ngrams/__init__.py +2 -0
  27. pystylometry/ngrams/entropy.py +150 -49
  28. pystylometry/ngrams/extended_ngrams.py +235 -0
  29. pystylometry/prosody/__init__.py +12 -0
  30. pystylometry/prosody/rhythm_prosody.py +53 -0
  31. pystylometry/readability/__init__.py +12 -0
  32. pystylometry/readability/additional_formulas.py +2110 -0
  33. pystylometry/readability/ari.py +173 -35
  34. pystylometry/readability/coleman_liau.py +150 -30
  35. pystylometry/readability/complex_words.py +531 -0
  36. pystylometry/readability/flesch.py +181 -32
  37. pystylometry/readability/gunning_fog.py +208 -35
  38. pystylometry/readability/smog.py +126 -28
  39. pystylometry/readability/syllables.py +137 -30
  40. pystylometry/stylistic/__init__.py +20 -0
  41. pystylometry/stylistic/cohesion_coherence.py +45 -0
  42. pystylometry/stylistic/genre_register.py +45 -0
  43. pystylometry/stylistic/markers.py +131 -0
  44. pystylometry/stylistic/vocabulary_overlap.py +47 -0
  45. pystylometry/syntactic/__init__.py +4 -0
  46. pystylometry/syntactic/advanced_syntactic.py +494 -0
  47. pystylometry/syntactic/pos_ratios.py +172 -17
  48. pystylometry/syntactic/sentence_stats.py +105 -18
  49. pystylometry/syntactic/sentence_types.py +526 -0
  50. pystylometry/viz/__init__.py +71 -0
  51. pystylometry/viz/drift.py +589 -0
  52. pystylometry/viz/jsx/__init__.py +31 -0
  53. pystylometry/viz/jsx/_base.py +144 -0
  54. pystylometry/viz/jsx/report.py +677 -0
  55. pystylometry/viz/jsx/timeline.py +716 -0
  56. pystylometry/viz/jsx/viewer.py +1032 -0
  57. {pystylometry-0.1.0.dist-info → pystylometry-1.1.0.dist-info}/METADATA +49 -9
  58. pystylometry-1.1.0.dist-info/RECORD +63 -0
  59. pystylometry-1.1.0.dist-info/entry_points.txt +4 -0
  60. pystylometry-0.1.0.dist-info/RECORD +0 -26
  61. {pystylometry-0.1.0.dist-info → pystylometry-1.1.0.dist-info}/WHEEL +0 -0
@@ -1,13 +1,13 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: pystylometry
3
- Version: 0.1.0
3
+ Version: 1.1.0
4
4
  Summary: Comprehensive Python package for stylometric analysis
5
5
  License: MIT
6
6
  Keywords: stylometry,nlp,text-analysis,authorship,readability,lexical-diversity,readability-metrics
7
7
  Author: Craig Trim
8
8
  Author-email: craigtrim@gmail.com
9
9
  Requires-Python: >=3.11,<4.0
10
- Classifier: Development Status :: 3 - Alpha
10
+ Classifier: Development Status :: 4 - Beta
11
11
  Classifier: Intended Audience :: Developers
12
12
  Classifier: Intended Audience :: Science/Research
13
13
  Classifier: License :: OSI Approved :: MIT License
@@ -33,6 +33,7 @@ Description-Content-Type: text/markdown
33
33
  [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
34
34
  [![Code style: ruff](https://img.shields.io/badge/code%20style-ruff-000000.svg)](https://github.com/astral-sh/ruff)
35
35
  [![PyPI version](https://badge.fury.io/py/pystylometry.svg)](https://badge.fury.io/py/pystylometry)
36
+ [![Downloads](https://pepy.tech/badge/pystylometry)](https://pepy.tech/project/pystylometry)
36
37
 
37
38
  A comprehensive Python package for stylometric analysis with modular architecture and optional dependencies.
38
39
 
@@ -149,10 +150,47 @@ result = compute_yule(text)
149
150
  - **Flesch Reading Ease** - 0-100 difficulty scale
150
151
  - **Flesch-Kincaid Grade** - US grade level
151
152
  - **SMOG Index** - Years of education needed
152
- - **Gunning Fog** - Readability complexity
153
+ - **Gunning Fog** - NLP-enhanced readability complexity (see below)
153
154
  - **Coleman-Liau** - Character-based grade level
154
155
  - **ARI** - Automated Readability Index
155
156
 
157
+ #### Gunning Fog Index - NLP Enhancement
158
+
159
+ The Gunning Fog Index implementation includes advanced NLP features when spaCy is available:
160
+
161
+ **Enhanced Mode** (with spaCy):
162
+ - Accurate proper noun detection via POS tagging (PROPN)
163
+ - True morphological analysis via lemmatization
164
+ - Component-based hyphenated word analysis
165
+ - Handles edge cases: acronyms, irregular verbs, compound nouns
166
+
167
+ **Basic Mode** (without spaCy):
168
+ - Capitalization-based proper noun detection
169
+ - Simple suffix stripping for inflections (-es, -ed, -ing)
170
+ - Component-based hyphenated word analysis
171
+ - Works without external dependencies
172
+
173
+ ```python
174
+ from pystylometry.readability import compute_gunning_fog
175
+
176
+ text = "Understanding computational linguistics requires significant dedication."
177
+ result = compute_gunning_fog(text)
178
+
179
+ print(f"Fog Index: {result.fog_index:.1f}")
180
+ print(f"Grade Level: {result.grade_level}")
181
+ print(f"Detection Mode: {result.metadata['mode']}") # "enhanced" or "basic"
182
+ ```
183
+
184
+ **To enable enhanced mode:**
185
+ ```bash
186
+ pip install pystylometry[readability]
187
+ python -m spacy download en_core_web_sm
188
+ ```
189
+
190
+ **Reference:** Gunning, R. (1952). The Technique of Clear Writing. McGraw-Hill.
191
+
192
+ **Implementation Details:** See [GitHub PR #4](https://github.com/craigtrim/pystylometry/pull/4) for the rationale behind NLP enhancements.
193
+
156
194
  ### Syntactic (requires spaCy)
157
195
  - **POS Ratios** - Noun/verb/adjective/adverb ratios
158
196
  - **Lexical Density** - Content vs function words
@@ -174,11 +212,17 @@ result = compute_yule(text)
174
212
  - stylometry-ttr
175
213
 
176
214
  **Optional:**
177
- - `readability`: pronouncing (for syllable counting)
178
- - `syntactic`: spacy>=3.8.0
215
+ - `readability`: pronouncing (syllable counting), spacy>=3.8.0 (NLP-enhanced Gunning Fog)
216
+ - `syntactic`: spacy>=3.8.0 (POS tagging and syntactic analysis)
179
217
  - `authorship`: None (pure Python + stdlib)
180
218
  - `ngrams`: None (pure Python + stdlib)
181
219
 
220
+ **Note:** spaCy is shared between `readability` and `syntactic` groups. For enhanced Gunning Fog accuracy, download a language model:
221
+ ```bash
222
+ python -m spacy download en_core_web_sm # Small model (13MB)
223
+ python -m spacy download en_core_web_md # Medium model (better accuracy)
224
+ ```
225
+
182
226
  ## Development
183
227
 
184
228
  ```bash
@@ -209,7 +253,6 @@ make format
209
253
  - [ ] Tests
210
254
  - [ ] v0.1.0 release
211
255
 
212
- See [pystylometry-plan.md](.claude/context/pystylometry-plan.md) for the full roadmap.
213
256
 
214
257
  ## Why pystylometry?
215
258
 
@@ -220,9 +263,6 @@ See [pystylometry-plan.md](.claude/context/pystylometry-plan.md) for the full ro
220
263
  - **Type-Safe**: Full type hints for IDE support
221
264
  - **Tested**: Comprehensive test suite
222
265
 
223
- ## References
224
-
225
- See [stylometry-metrics.md](.claude/context/stylometry-metrics.md) for the complete metrics reference table with formulas.
226
266
 
227
267
  ## License
228
268
 
@@ -0,0 +1,63 @@
1
+ pystylometry/__init__.py,sha256=UQGe2EJUdMh1rE1zmIGNqrMgbipAhPDDU5Cvp_w--64,8594
2
+ pystylometry/_normalize.py,sha256=7tdfgAKg5CI2d4eoDypmFqOVByoxpwgUUZD6vyBH86A,8679
3
+ pystylometry/_types.py,sha256=OOKJ0Y_2OtaiQn_Y0EVHTOkPrNlWDhdu5Jl-4quuNZw,74257
4
+ pystylometry/_utils.py,sha256=CXTx4KDJ_6iiHcc2OXqOYs-izhLf_ZEmJFKdHyd7q34,5282
5
+ pystylometry/authorship/__init__.py,sha256=QJMZ9xx5mf3u9X-HAdZsgqzZGhi4G6Pgj7wjNYGholE,1343
6
+ pystylometry/authorship/additional_methods.py,sha256=ZCYwM_OEq3fCZGkCL0wsOUBiMSvrF1paVON4xueJDW4,2583
7
+ pystylometry/authorship/burrows_delta.py,sha256=6XC8I7EcBTLbn9BNKZsOtL0otL4vKFX10aHBlU4Bki4,5677
8
+ pystylometry/authorship/kilgarriff.py,sha256=Hqv5Ww7s_Tn4KSpcDAE_dTVESv4X3pglkQt0bYjQGW0,13097
9
+ pystylometry/authorship/zeta.py,sha256=oOi9Y6ZPq15ILLVl6So9O9ERvzig26en6_dpQJWeoOc,4338
10
+ pystylometry/character/__init__.py,sha256=CiiKJmZ10UJE8qAecavpOKyw-vGonsOew_mFH34ZOC0,371
11
+ pystylometry/character/character_metrics.py,sha256=OCIGP_ivtwtzcifcxcbmp2R5SIKh2tKyvKcHAv64S8g,14029
12
+ pystylometry/cli.py,sha256=z0yx2O_E05tHT9_BHgSaQ2zq5_fBERXfhbYHcuQ2y-A,15477
13
+ pystylometry/consistency/__init__.py,sha256=l7nzpS7M4yHDBbM2LGAtW0XGT2n7YjSey_1xKf45224,2181
14
+ pystylometry/consistency/_thresholds.py,sha256=5fZwdJ_cnDy0ED7CCYs6V_zP6kIAR1p0h0NYkbZ0HRg,6381
15
+ pystylometry/consistency/drift.py,sha256=ZqK7YJXic8ceIfQLkH9ZtXFJCFyOuto5Mktz4qLG9ps,20682
16
+ pystylometry/dialect/__init__.py,sha256=6S4OKymniuDXPm3ZMqWyy9179RlWoLJoDzkCP4P7Jss,2486
17
+ pystylometry/dialect/_data/dialect_markers.json,sha256=DthluOA6q0rG_8IrCrFIYWh_EMvINqYv7W664sEjNN4,51799
18
+ pystylometry/dialect/_loader.py,sha256=M2ATp-5754v_yX9EWvBP0r5qgNf8xlL8XadVsVb_Hco,12989
19
+ pystylometry/dialect/detector.py,sha256=9x0ZuIfTIjsmdNSx0Ezy5AC0SAFtC4kVw11iOSBd9gQ,20147
20
+ pystylometry/lexical/__init__.py,sha256=HTncnGVZgpktZqpf-r4_HI_9Jq42WkZZKXn8nho3y3s,751
21
+ pystylometry/lexical/advanced_diversity.py,sha256=rL1hlNqTnaEFcA2v4oBJlojHZMTqdvvm4jYXTFGVpYE,25664
22
+ pystylometry/lexical/function_words.py,sha256=eel9bq_qWgWlvG0NtDiouilMt9kaFqz2rh3add2UC4U,17832
23
+ pystylometry/lexical/hapax.py,sha256=djTqZyZIYXa3GRiPoy6TTGHPm0wCRNJ9U0Rwnf5NoDk,12173
24
+ pystylometry/lexical/mtld.py,sha256=XpeCF8sOXZhWbaazHGuqm08mrOf_DYfkfGGAltWnyy4,7101
25
+ pystylometry/lexical/ttr.py,sha256=iEsXkoSPyZEyiiFwKatKA8KhLRukD7RDRvyRkRQOTsk,5848
26
+ pystylometry/lexical/word_frequency_sophistication.py,sha256=OHOS0fBvd1Bz8zsJk-pJbWLTgImmBd-aewQnp_kq8BY,38828
27
+ pystylometry/lexical/yule.py,sha256=NXggha8jmQCu4i-qKZpISwyJBqNpuPHyVR86BLDLgio,5192
28
+ pystylometry/ngrams/__init__.py,sha256=eyITmSG4QP1NtVSagPsvc4j6W_E8TdB9wvBvXQHUnwo,379
29
+ pystylometry/ngrams/entropy.py,sha256=i2RzYXrcTTIv6QaUCNQjAahL5LFOctG3ZE1OJ_tY4II,7246
30
+ pystylometry/ngrams/extended_ngrams.py,sha256=OsBHTaaK73ZOhpS_yG2aWip1yWY2Fitdte0qx3wIshc,9475
31
+ pystylometry/prosody/__init__.py,sha256=9tiD-U4sqEtUV8n9X339oF_C5tBNingjL-shGBXOrnY,265
32
+ pystylometry/prosody/rhythm_prosody.py,sha256=V9OoxV5d4AZRZAb2HDY7-iEK1ijE7gtHhvFRD2DJvdA,1960
33
+ pystylometry/readability/__init__.py,sha256=bJenjlGpNx7FF5AfOb6VA-wODdIa7Hc9iqoba1DLlh0,637
34
+ pystylometry/readability/additional_formulas.py,sha256=nlVegnn_RRh6TP0BoLWlLBNnAgtFqLqyDsxFN_fUrAg,44993
35
+ pystylometry/readability/ari.py,sha256=_wPl0FjEReLRHN0v4JQbRaU_kbikIxkr9mLO6hmNVyI,6833
36
+ pystylometry/readability/coleman_liau.py,sha256=NcEQFGEJxCubCP3dnWnPmlHAIhkDYXd5hIq3xSTHULk,6319
37
+ pystylometry/readability/complex_words.py,sha256=QyD4m-DeArLPoJzT85oRgj5Ry72eQNVwWpQkxz3IKMo,20717
38
+ pystylometry/readability/flesch.py,sha256=7kMeqpYnm-oqQGsDw7yJBhFecXB5ZRU9C8P4UKjWYD4,7985
39
+ pystylometry/readability/gunning_fog.py,sha256=ntV90NUfqSm_84H1jBa2Fhr5DhlkderHLq8_z3khb48,8375
40
+ pystylometry/readability/smog.py,sha256=8hdQQHUR9UBP-02AyZK3TbNhyyE1LQuZmlnVrs5Yvrk,5742
41
+ pystylometry/readability/syllables.py,sha256=U_tO1fmdOh2xyIJVkFooGMhmZs1hqlFPBa9wBjEwLw8,4272
42
+ pystylometry/stylistic/__init__.py,sha256=nMykFZUCUKj-ZTk5H0OSKn24w6CSVEVIWieNG2B2hhc,581
43
+ pystylometry/stylistic/cohesion_coherence.py,sha256=M_Pqfj0ZfCLDZBKFQCPx7rX9k6mxWFOjIsm1gsLdFyg,1618
44
+ pystylometry/stylistic/genre_register.py,sha256=R32csC0M3eRcnACJNqMsyN-1ucMwdK8Twm5Tsa0Dd4k,1664
45
+ pystylometry/stylistic/markers.py,sha256=s0ybwUZ6_wE064NXL9kQeTLKVeSHScFgZip7zkKYi2U,5134
46
+ pystylometry/stylistic/vocabulary_overlap.py,sha256=TD8Rn32htB6MPHjc9xkr0LepJ6Q9k7f6uJvZt9_5aXA,1717
47
+ pystylometry/syntactic/__init__.py,sha256=B9qe0R7w9t5x2s2dXygSuvciuEHrScgD3CkxvPWKMPE,391
48
+ pystylometry/syntactic/advanced_syntactic.py,sha256=ygbm7y1hrNJCaIxRCfZsafvt6BInh2iCTY1eWk2PdaE,19195
49
+ pystylometry/syntactic/pos_ratios.py,sha256=lcvtx6tshVG6MpTWivyWnqFsjFXIHK3LCqyg2AL2AjY,7444
50
+ pystylometry/syntactic/sentence_stats.py,sha256=SJg6TYCiT3gs2bXHYuEMSRgzFnxqOCH5q6WyhjXKgH4,4947
51
+ pystylometry/syntactic/sentence_types.py,sha256=xEQPieGqTInCz9BinvItBX5Z_ofQ-BbFwTFNgY0jWx0,18730
52
+ pystylometry/tokenizer.py,sha256=03FEF4kKp72v-ypbtMg8u0WyVJGk3YJx6Nw3SGzyAnA,18166
53
+ pystylometry/viz/__init__.py,sha256=3kHMAcJJi8oPhTqUZIRdyf311cdyPOHWaJIUv-w0V04,2219
54
+ pystylometry/viz/drift.py,sha256=r98gQ4s_IlrEuaouxDMyue3cTjGqj10i4IeKC01IuCo,18956
55
+ pystylometry/viz/jsx/__init__.py,sha256=ZCgbpMPhG5PiJ92IkJRrZwrb7RodZB9MyauO0MGgbRM,1107
56
+ pystylometry/viz/jsx/_base.py,sha256=nd7kEc13fUcRMom3A5jqjGyTy-djIeydq2k3oPHZIHY,3708
57
+ pystylometry/viz/jsx/report.py,sha256=DbbHnnNAEi5tmVg4PmiHb17vkBBXujyE4x1CfVBiOBw,25857
58
+ pystylometry/viz/jsx/timeline.py,sha256=hor-xnBa6oVkSqN0AEZUCQFBOB-iTfHSFZHiEfeakPA,30716
59
+ pystylometry/viz/jsx/viewer.py,sha256=3LO49d_2bRf_P-P-2oSKpKx4N8Ugo4oCLb3DtvyNxXI,43716
60
+ pystylometry-1.1.0.dist-info/METADATA,sha256=QEXVX6buqxGwilLuOIvjFT2ZxoPNazUWX1iyhaM8vI8,8348
61
+ pystylometry-1.1.0.dist-info/WHEEL,sha256=3ny-bZhpXrU6vSQ1UPG34FoxZBp3lVcvK0LkgUz6VLk,88
62
+ pystylometry-1.1.0.dist-info/entry_points.txt,sha256=iHOaFXlyiwcQM1LlID2gWGmN4DBLdTSpKGjttU8tgm8,113
63
+ pystylometry-1.1.0.dist-info/RECORD,,
@@ -0,0 +1,4 @@
1
+ [console_scripts]
2
+ pystylometry-drift=pystylometry.cli:drift_cli
3
+ pystylometry-viewer=pystylometry.cli:viewer_cli
4
+
@@ -1,26 +0,0 @@
1
- pystylometry/__init__.py,sha256=gCsVT2Eu9sP20Wmq8KQgIf0fEPdZhs-Dlp1IWWfmC5Y,7454
2
- pystylometry/_types.py,sha256=lldXONgNhTVH5ZGHUVx7BKez7szR8Svi05BSg0M3VsY,3503
3
- pystylometry/_utils.py,sha256=UN1hBe0WDIov33dG4di7Br9xIIFUwka6SoeOeJ_aGpg,5116
4
- pystylometry/authorship/__init__.py,sha256=iXkH94lGd5kCDtk1UOuz3gUfOsAJb4DDcv2evTWSCAA,233
5
- pystylometry/authorship/burrows_delta.py,sha256=6XC8I7EcBTLbn9BNKZsOtL0otL4vKFX10aHBlU4Bki4,5677
6
- pystylometry/authorship/zeta.py,sha256=oOi9Y6ZPq15ILLVl6So9O9ERvzig26en6_dpQJWeoOc,4338
7
- pystylometry/lexical/__init__.py,sha256=eHAEzZytevXnR7f1KY3ADrczdmH3YZ2LZCrUx0vXJJw,416
8
- pystylometry/lexical/hapax.py,sha256=JVwbd7rWe0iy-KGwAGK-PFN7mLhB6xwa4WFvoqGmfMA,2365
9
- pystylometry/lexical/mtld.py,sha256=tNtvpHKyf_i4E7wTDYZkG6BIkAVbaCOPZpZDApPLtxE,1850
10
- pystylometry/lexical/yule.py,sha256=XOdGth-E_rCXVp_Y6ZdTXMW2QATw0NoDbNPuXIZFjas,1898
11
- pystylometry/ngrams/__init__.py,sha256=pJadMr_VAMOENr-CteCqlgokuCP2QIPku7blMj-9ToI,295
12
- pystylometry/ngrams/entropy.py,sha256=8WT1YaZHRh_0GOEycBzQOzObHZFme5oMf6_lBaEo4ZU,3876
13
- pystylometry/readability/__init__.py,sha256=kwVGQyxk1e7W7NnZTjwSJ-0pXmyFYeeoNRSt7bpzjoA,346
14
- pystylometry/readability/ari.py,sha256=Br1ZJAxtoDoT2fFeKRhQuiwyWpobS9E8_wRyizh5w3c,2257
15
- pystylometry/readability/coleman_liau.py,sha256=weH4w9HSdLxhUiYEub3WgNjKsbSXKMkq-zEZtaqjyU4,2058
16
- pystylometry/readability/flesch.py,sha256=6YuoS8Qo6KP6enJKMEZ731mMAOKdz2AnVvzZYNVxZHM,2700
17
- pystylometry/readability/gunning_fog.py,sha256=5x8pntoYMV2pQAnI3-LBm_Od1LJaTcIxnOJ9ESBNRB8,1984
18
- pystylometry/readability/smog.py,sha256=5Z-PNmJtnsCQTUfv_vnaQdaUAoK0EatCQJW2ypqav6c,2171
19
- pystylometry/readability/syllables.py,sha256=BuNm9A9ZSzE7kG3qGzhzw47vzui5DAG1nMis6gbwC4k,1373
20
- pystylometry/syntactic/__init__.py,sha256=8iJRXTu3VTXnoqIIwyLTWlLvxMweq_stG3FkynpoGVM,217
21
- pystylometry/syntactic/pos_ratios.py,sha256=tzM4y6vqkZp1Jx2L4JzdWtLBegrlqOUgZrohnwjB3H8,1876
22
- pystylometry/syntactic/sentence_stats.py,sha256=iMOeXhV6VwDt9lKy66pq8i-zQ4JsmdFdNGAsFR5_c48,1825
23
- pystylometry/tokenizer.py,sha256=03FEF4kKp72v-ypbtMg8u0WyVJGk3YJx6Nw3SGzyAnA,18166
24
- pystylometry-0.1.0.dist-info/METADATA,sha256=u8t8BmHbeaoDDzTOFicH0YMW5tt3ljStkIai1iwTBK8,6802
25
- pystylometry-0.1.0.dist-info/WHEEL,sha256=3ny-bZhpXrU6vSQ1UPG34FoxZBp3lVcvK0LkgUz6VLk,88
26
- pystylometry-0.1.0.dist-info/RECORD,,