epstein-files 1.0.14__py3-none-any.whl → 1.0.16__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.
@@ -15,7 +15,7 @@ from epstein_files.util.data import extract_last_name, listify, without_falsey
15
15
  CIVIL_ATTORNEY = 'civil attorney'
16
16
  CRIMINAL_DEFENSE_ATTORNEY = 'criminal defense attorney'
17
17
  CRIMINAL_DEFENSE_2008 = f"{CRIMINAL_DEFENSE_ATTORNEY} on 2008 case"
18
- EPSTEIN_LAWYER = 'epstein_lawyer'
18
+ EPSTEIN_LAWYER = 'Epstein lawyer'
19
19
  EPSTEIN_V_ROTHSTEIN_EDWARDS_ATTORNEY = f"{CIVIL_ATTORNEY} working on {EPSTEIN_V_ROTHSTEIN_EDWARDS}"
20
20
  ESTATE_EXECUTOR = 'estate executor'
21
21
  EPSTEIN_ESTATE_EXECUTOR = f"Epstein {ESTATE_EXECUTOR}"
@@ -103,7 +103,7 @@ class HighlightedNames(HighlightedText):
103
103
  def get_info(self, name: str) -> str | None:
104
104
  """Label and additional info for 'name' if 'name' is in self.emailers."""
105
105
  info_pieces = [
106
- None if len(self.emailers) == 1 else (self.category or self.label.title()),
106
+ None if len(self.emailers) == 1 else (self.category or self.label.replace('_', ' ')),
107
107
  self.emailers.get(name),
108
108
  ]
109
109
 
@@ -111,7 +111,7 @@ class HighlightedNames(HighlightedText):
111
111
  return ', '.join(info_pieces) if info_pieces else None
112
112
 
113
113
  def _emailer_pattern(self, name: str) -> str:
114
- """Pattern matching 'name'. Extends value in EMAILER_ID_REGEXES with last name if it exists."""
114
+ """Pattern matching 'name'. Extends value in EMAILER_ID_REGEXES with first/last name if it exists."""
115
115
  name = remove_question_marks(name)
116
116
  last_name = extract_last_name(name)
117
117
  first_name = name.removesuffix(f" {last_name}")
@@ -141,7 +141,7 @@ class HighlightedNames(HighlightedText):
141
141
 
142
142
  HIGHLIGHTED_NAMES = [
143
143
  HighlightedNames(
144
- label='africa',
144
+ label='Africa',
145
145
  style='light_pink4',
146
146
  pattern=r'Econet(\s*Wireless)|Ghana(ian)?|Johannesburg|Kenya|Nigerian?|Senegal(ese)?|Serengeti|(South\s*)?African?|(Strive\s*)?Masiyiwa|Tanzania|Ugandan?|Zimbabwe(an)?',
147
147
  emailers={
@@ -183,12 +183,15 @@ HIGHLIGHTED_NAMES = [
183
183
  pattern=r"CBD|cannabis|marijuana|THC|WEED(guide|maps)?[^s]?",
184
184
  ),
185
185
  HighlightedNames(
186
- label='china',
186
+ label='China',
187
187
  style='bright_red',
188
- pattern=r"Ali.?baba|Beijing|CCP|Chin(a|e?se)(?! Daily)|DPRK|Gino\s+Yu|Global Times|Guo|Hong|Huaw[ae]i|Kim\s*Jong\s*Un|Kong|Jack\s+Ma|Kwok|Ministry\sof\sState\sSecurity|Mongolian?|MSS|North\s*Korea|Peking|PRC|SCMP|Tai(pei|wan)|Xi(aomi)?|Jinping",
188
+ pattern=r"Ali.?baba|Beijing|CCP|Chin(a|e?se)(?! Daily)|DPRK|Global Times|Guo|Hong|Huaw[ae]i|Kim\s*Jong\s*Un|Kong|Jack\s+Ma|Kwok|Ministry\sof\sState\sSecurity|Mongolian?|MSS|North\s*Korea|Peking|PRC|SCMP|Tai(pei|wan)|Xi(aomi)?|Jinping",
189
+ emailers={
190
+ 'Gino Yu': 'professor / game designer in Hong Kong',
191
+ }
189
192
  ),
190
193
  HighlightedNames(
191
- label='deepak_chopra',
194
+ label='Deepak Chopra',
192
195
  style='dark_sea_green4',
193
196
  emailers = {
194
197
  'Carolyn Rangel': 'assistant',
@@ -196,7 +199,7 @@ HIGHLIGHTED_NAMES = [
196
199
  }
197
200
  ),
198
201
  HighlightedNames(
199
- label='democrats',
202
+ label='Democrats',
200
203
  style='sky_blue1',
201
204
  pattern=r'(Al\s*)?Franken|((Bill|Hillart?y)\s*)?Clinton|((Chuck|Charles)\s*)?S(ch|hc)umer|(Diana\s*)?DeGette|DNC|Elena\s*Kagan|(Eliott?\s*)?Spitzer(, Eliot)?|George\s*Mitchell|(George\s*)?Soros|Hill?ary|Dem(ocrat(ic)?)?|(Jo(e|seph)\s*)?Biden|(John\s*)?Kerry|Lisa Monaco|(Matteo\s*)?Salvini|Maxine\s*Waters|(Barac?k )?Obama|(Nancy )?Pelosi|Ron\s*Dellums|Schumer|(Tim\s*)?Geithner|Vernon\s*Jordan',
202
205
  ),
@@ -271,7 +274,7 @@ HIGHLIGHTED_NAMES = [
271
274
  HighlightedNames(
272
275
  label=ESTATE_EXECUTOR,
273
276
  style='purple3 bold',
274
- category='epstein lawyer',
277
+ category='Epstein lawyer',
275
278
  emailers = {
276
279
  DARREN_INDYKE: EPSTEIN_ESTATE_EXECUTOR,
277
280
  RICHARD_KAHN: EPSTEIN_ESTATE_EXECUTOR,
@@ -280,7 +283,7 @@ HIGHLIGHTED_NAMES = [
280
283
  HighlightedNames(
281
284
  label='europe',
282
285
  style='light_sky_blue3',
283
- pattern=r'(Angela )?Merk(el|le)|Austria|(Benjamin\s*)?Harnwell|Berlin|Borge|Boris\s*Johnson|Brexit(eers?)?|Brit(ain|ish)|Brussels|Cannes|(Caroline|Jack)?\s*Lang(, Caroline)?|Cypr(iot|us)|Davos|ECB|England|EU|Europe(an)?(\s*Union)?|Fr(ance|ench)|Geneva|Germany?|Gillard|Gree(ce|k)|Ital(ian|y)|Jacques|(Kevin\s*)?Rudd|Le\s*Pen|London|Macron|Melusine|Munich|(Natalia\s*)?Veselnitskaya|(Nicholas\s*)?Sarkozy|Nigel(\s*Farage)?|Norw(ay|egian)|Oslo|Paris|Polish|(Sebastian )?Kurz|(Vi(c|k)tor\s+)?Orbah?n|Edward Rod Larsen|Strasbourg|Strauss[- ]?Kahn|Swed(en|ish)(?![-\s]+America)|Switzerland|(Tony\s)?Blair|U\.?K\.?|Ukrain(e|ian)|Vienna|(Vitaly\s*)?Churkin|Zug',
286
+ pattern=r'(Angela )?Merk(el|le)|Austria|(Benjamin\s*)?Harnwell|Berlin|Borge|Boris\s*Johnson|Brexit(eers?)?|Brit(ain|ish)|Brussels|Cannes|(Caroline|Jack)?\s*Lang(, Caroline)?|Cypr(iot|us)|Davos|ECB|England|EU|Europe(an)?(\s*Union)?|Fr(ance|ench)|Geneva|Germany?|Gillard|Gree(ce|k)|Ital(ian|y)|Jacques|(Kevin\s*)?Rudd|Le\s*Pen|London|Macron|Melusine|Munich|(Natalia\s*)?Veselnitskaya|(Nicholas\s*)?Sarkozy|Nigel(\s*Farage)?|Norw(ay|egian)|Oslo|Paris|Polish|pope|(Sebastian )?Kurz|(Vi(c|k)tor\s+)?Orbah?n|Edward Rod Larsen|Strasbourg|Strauss[- ]?Kahn|Swed(en|ish)(?![-\s]+America)|Switzerland|(Tony\s)?Blair|U\.?K\.?|Ukrain(e|ian)|Vienna|(Vitaly\s*)?Churkin|Zug',
284
287
  emailers = {
285
288
  ANDRZEJ_DUDA: 'former president of Poland',
286
289
  MIROSLAV_LAJCAK: 'Russia-friendly Slovakian politician, friend of Steve Bannon',
@@ -290,9 +293,8 @@ HIGHLIGHTED_NAMES = [
290
293
  }
291
294
  ),
292
295
  HighlightedNames(
293
- label='famous_lawyer',
296
+ label='famous lawyer',
294
297
  style='medium_purple3',
295
- category='famous_lawyer',
296
298
  pattern=r'(David\s*)?Bo[il]es|dersh|(Gloria\s*)?Allred|(Mi(chael|ke)\s*)?Avenatti',
297
299
  emailers = {
298
300
  ALAN_DERSHOWITZ: 'Harvard Law School professor and all around (in)famous American lawyer',
@@ -302,7 +304,7 @@ HIGHLIGHTED_NAMES = [
302
304
  HighlightedNames(
303
305
  label=FINANCE,
304
306
  style='green',
305
- pattern=r'Apollo|Ari\s*Glass|Bank|(Bernie\s*)?Madoff|Black(rock|stone)|B\s*of\s*A|Boothbay(\sFund\sManagement)?|Chase\s*Bank|Credit\s*Suisse|DB|Deutsche\s*(Asset|Bank)|Electron\s*Capital\s*(Partners)?|Fenner|FRBNY|Goldman(\s*Sachs)|HSBC|Invesco|(Janet\s*)?Yellen|(Jerome\s*)?Powell(?!M\. Cabot)|(Jimmy\s*)?Cayne|JPMC?|j\.?p\.?\s*morgan(\.?com|\s*Chase)?|Madoff|Merrill(\s*Lynch)?|(Michael\s*)?(Cembalest|Milken)|Mizrahi\s*Bank|MLPF&S|((anti.?)?money\s+)?launder(s?|ers?|ing)?(\s+money)?|Morgan Stanley|(Peter L. )?Scher|(Ray\s*)?Dalio|(Richard\s*)?LeFrak|Schwartz?man|Serageldin|UBS|us.gio@jpmorgan.com',
307
+ pattern=r'Apollo|Ari\s*Glass|Bank|(Bernie\s*)?Madoff|Black(rock|stone)|B\s*of\s*A|Boothbay(\sFund\sManagement)?|Chase\s*Bank|Credit\s*Suisse|DB|Deutsche?\s*(Asset|Bank)|Electron\s*Capital\s*(Partners)?|Fenner|FRBNY|Goldman(\s*Sachs)|HSBC|Invesco|(Janet\s*)?Yellen|(Jerome\s*)?Powell(?!M\. Cabot)|(Jimmy\s*)?Cayne|JPMC?|j\.?p\.?\s*morgan(\.?com|\s*Chase)?|Madoff|Merrill(\s*Lynch)?|(Michael\s*)?(Cembalest|Milken)|Mizrahi\s*Bank|MLPF&S|((anti.?)?money\s+)?launder(s?|ers?|ing)?(\s+money)?|Morgan Stanley|(Peter L. )?Scher|(Ray\s*)?Dalio|(Richard\s*)?LeFrak|Schwartz?man|Serageldin|UBS|us.gio@jpmorgan.com',
306
308
  emailers={
307
309
  AMANDA_ENS: 'Citigroup',
308
310
  BRAD_WECHSLER: f"head of {LEON_BLACK}'s personal investment vehicle according to FT",
@@ -316,7 +318,8 @@ HIGHLIGHTED_NAMES = [
316
318
  MELANIE_SPINELLA: f'representative of {LEON_BLACK}',
317
319
  MORTIMER_ZUCKERMAN: 'business partner of Epstein',
318
320
  PAUL_BARRETT: None,
319
- PAUL_MORRIS: 'Deutsche Bank',
321
+ PAUL_MORRIS: DEUTSCHE_BANK,
322
+ 'Steven Elkman': DEUTSCHE_BANK,
320
323
  }
321
324
  ),
322
325
  HighlightedNames(
@@ -334,7 +337,7 @@ HIGHLIGHTED_NAMES = [
334
337
  },
335
338
  ),
336
339
  HighlightedNames(
337
- label=HARVARD.lower(),
340
+ label=HARVARD,
338
341
  style='light_goldenrod3',
339
342
  pattern=r'Cambridge|(Derek\s*)?Bok|Elisa(\s*New)?|Harvard(\s*(Business|Law|University)(\s*School)?)?|(Jonathan\s*)?Zittrain|(Stephen\s*)?Kosslyn',
340
343
  emailers = {
@@ -349,7 +352,7 @@ HIGHLIGHTED_NAMES = [
349
352
  }
350
353
  ),
351
354
  HighlightedNames(
352
- label='india',
355
+ label='India',
353
356
  style='bright_green',
354
357
  pattern=r'Abraaj|Anna\s*Hazare|(Arif\s*)?Naqvi|(Arvind\s*)?Kejriwal|Hardeep( Pur[ei]e)?|Indian?|InsightsPod|Modi|Mumbai|Tranchulas',
355
358
  emailers = {
@@ -359,7 +362,7 @@ HIGHLIGHTED_NAMES = [
359
362
  }
360
363
  ),
361
364
  HighlightedNames(
362
- label='israel',
365
+ label='Israel',
363
366
  style='dodger_blue2',
364
367
  pattern=r"AIPAC|Bibi|(eh|(Ehud|Nili Priell) )?barak|Ehud\s*Barack|Israeli?|Jerusalem|J\s*Street|Mossad|Netanyahu|(Sheldon\s*)?Adelson|Tel\s*Aviv|(The\s*)?Shimon\s*Post|Yitzhak|Rabin|YIVO|zionist",
365
368
  emailers={
@@ -369,7 +372,7 @@ HIGHLIGHTED_NAMES = [
369
372
  }
370
373
  ),
371
374
  HighlightedNames(
372
- label='japan',
375
+ label='Japan',
373
376
  style='color(168)',
374
377
  pattern=r'BOJ|(Bank\s+of\s+)?Japan(ese)?|jpy?(?! Morgan)|SG|Singapore|Toky[op]',
375
378
  ),
@@ -389,14 +392,14 @@ HIGHLIGHTED_NAMES = [
389
392
  }
390
393
  ),
391
394
  HighlightedNames(
392
- label='latin america',
395
+ label='Latin America',
393
396
  style='yellow',
394
397
  pattern=r'Argentin(a|ian)|Bolsonar[aio]|Bra[sz]il(ian)?|Bukele|Caracas|Castro|Colombian?|Cuban?|El\s*Salvador|((Enrique )?Pena )?Nieto|LatAm|Lula|Mexic(an|o)|(Nicolas\s+)?Maduro|Panama( Papers)?|Peru|Venezuelan?|Zambrano',
395
398
  ),
396
399
  HighlightedNames(
397
400
  label='law enforcement',
398
401
  style='color(24) bold',
399
- pattern=r'ag|(Alicia\s*)?Valle|AML|(Andrew\s*)?McCabe|attorney|((Bob|Robert)\s*)?Mueller|(Byung\s)?Pak|CFTC?|CIA|CIS|CVRA|Dep(artmen)?t\.?\s*of\s*(the\s*)?(Justice|Treasury)|DHS|DOJ|FBI|FCPA|FDIC|Federal\s*Bureau\s*of\s*Investigation|FinCEN|FINRA|FOIA|FTC|IRS|(James\s*)?Comey|(Jennifer\s*Shasky\s*)?Calvery|((Judge|Mark)\s*)?(Carney|Filip)|(Kirk )?Blouin|KYC|NIH|NS(A|C)|OCC|OFAC|(Lann?a\s*)?Belohlavek|lawyer|(Michael\s*)?Reiter|OGE|Office\s*of\s*Government\s*Ethics|Police Code Enforcement|(Preet\s*)?Bharara|SCOTUS|SD(FL|NY)|SEC|Secret\s*Service|Securities\s*and\s*Exchange\s*Commission|Southern\s*District\s*of\s*(Florida|New\s*York)|State\s*Dep(artmen)?t|Strzok|Supreme\s*Court|Treasury\s*(Dep(artmen)?t|Secretary)|TSA|USAID|(William\s*J\.?\s*)?Zloch',
402
+ pattern=r'ag|(Alicia\s*)?Valle|AML|(Andrew\s*)?McCabe|((Bob|Robert)\s*)?Mueller|(Byung\s)?Pak|CFTC?|CIA|CIS|CVRA|Dep(artmen)?t\.?\s*of\s*(the\s*)?(Justice|Treasury)|DHS|DOJ|FBI|FCPA|FDIC|Federal\s*Bureau\s*of\s*Investigation|FinCEN|FINRA|FOIA|FTC|IRS|(James\s*)?Comey|(Jennifer\s*Shasky\s*)?Calvery|((Judge|Mark)\s*)?(Carney|Filip)|(Kirk )?Blouin|KYC|NIH|NS(A|C)|OCC|OFAC|(Lann?a\s*)?Belohlavek|(Michael\s*)?Reiter|OGE|Office\s*of\s*Government\s*Ethics|Police Code Enforcement|(Preet\s*)?Bharara|SCOTUS|SD(FL|NY)|SEC|Secret\s*Service|Securities\s*and\s*Exchange\s*Commission|Southern\s*District\s*of\s*(Florida|New\s*York)|State\s*Dep(artmen)?t|Strzok|Supreme\s*Court|Treasury\s*(Dep(artmen)?t|Secretary)|TSA|USAID|(William\s*J\.?\s*)?Zloch',
400
403
  emailers = {
401
404
  ANN_MARIE_VILLAFANA: 'southern district of Florida U.S. Attorney',
402
405
  DANNY_FROST: 'Director of Communications at Manhattan DA',
@@ -419,8 +422,8 @@ HIGHLIGHTED_NAMES = [
419
422
  HighlightedNames(
420
423
  label='mideast',
421
424
  style='dark_sea_green4',
422
- # this won't match ever because of word boundary: [-\s]9/11[\s.]
423
- pattern=r"Abdulmalik Al-Makhlafi|Abdullah|Abu\s+Dhabi|Afghanistan|Al[-\s]?Qa[ei]da|Ahmadinejad|Arab|Aramco|Assad|Bahrain|Basiji?|Benghazi|Cairo|Chagoury|Dj[iu]bo?uti|Doha|Dubai|Egypt(ian)?|Emir(at(es?|i))?|Erdogan|Fashi|Gaddafi|(Hamid\s*)?Karzai|Hamad\s*bin\s*Jassim|HBJ|Houthi|Imran\s+Khan|Iran(ian)?|Isi[ls]|Islam(abad|ic|ist)?|Istanbul|Kh?ashoggi|(Kairat\s*)?Kelimbetov|kasshohgi|Kaz(akh|ich)stan|Kazakh?|Kh[ao]menei|Khalid\s*Sheikh\s*Mohammed|KSA|Leban(ese|on)|Libyan?|Mahmoud|Marra[hk]e[cs]h|MB(N|S|Z)|Mohammed\s+bin\s+Salman|Morocco|Mubarak|Muslim|Nayaf|Pakistani?|Omar|(Osama\s*)?Bin\s*Laden|Osama(?! al)|Palestin(e|ian)|Persian?|Riya(dh|nd)|Saddam|Salman|Saudi(\s+Arabian?)?|Shariah?|SHC|sheikh|shia|(Sultan\s*)?Yacoub|Syrian?|(Tarek\s*)?El\s*Sayed|Tehran|Tunisian?|Turk(ey|ish)|UAE|((Iraq|Iran|Kuwait|Qatar|Yemen)i?)",
425
+ # something like this won't match ever because of word boundary: [-\s]9/11[\s.]
426
+ pattern=r"Abdulmalik Al-Makhlafi|Abdullah|Abu\s+Dhabi|Afghanistan|Al[-\s]?Qa[ei]da|Ahmadinejad|Arab|Aramco|Assad|Bahrain|Basiji?|Benghazi|Cairo|Chagoury|Dj[iu]bo?uti|Doha|Dubai|Egypt(ian)?|Emir(at(es?|i))?|Erdogan|Fashi|Gaddafi|(Hamid\s*)?Karzai|Hamad\s*bin\s*Jassim|HBJ|Houthi|Imran\s+Khan|Iran(ian)?|Isi[ls]|Islam(abad|ic|ist)?|Istanbul|Kh?ashoggi|(Kairat\s*)?Kelimbetov|kasshohgi|Kaz(akh|ich)stan|Kazakh?|Kh[ao]menei|Khalid\s*Sheikh\s*Mohammed|KSA|Leban(ese|on)|Libyan?|Mahmoud|Marra[hk]e[cs]h|MB(N|S|Z)|Mid(dle)?\s*East|Mohammed\s+bin\s+Salman|Morocco|Mubarak|Muslim|Nayaf|Pakistani?|Omar|(Osama\s*)?Bin\s*Laden|Osama(?! al)|Palestin(e|ian)|Persian?|Riya(dh|nd)|Saddam|Salman|Saudi(\s+Arabian?)?|Shariah?|SHC|sheikh|shia|(Sultan\s*)?Yacoub|Syrian?|(Tarek\s*)?El\s*Sayed|Tehran|Tunisian?|Turk(ey|ish)|UAE|((Iraq|Iran|Kuwait|Qatar|Yemen)i?)",
424
427
  emailers = {
425
428
  ANAS_ALRASHEED: f'former information minister of Kuwait {QUESTION_MARKS}',
426
429
  AZIZA_ALAHMADI: 'Abu Dhabi Department of Culture & Tourism',
@@ -463,7 +466,7 @@ HIGHLIGHTED_NAMES = [
463
466
  }
464
467
  ),
465
468
  HighlightedNames(
466
- label='republicans',
469
+ label='Republicans',
467
470
  style='bold dark_red',
468
471
  pattern=r'Alberto\sGonzale[sz]|(Alex\s*)?Acosta|(Bill\s*)?Barr|Bill\s*Shine|(Bob\s*)?Corker|(John\s*(R.?\s*)?)Bolton|Broidy|(Chris\s)?Christie|Devin\s*Nunes|(Don\s*)?McGa[hn]n|McMaster|(George\s*)?Nader|GOP|(Brett\s*)?Kavanaugh|Kissinger|Kobach|Koch\s*Brothers|Kolfage|Kudlow|Lewandowski|(Marco\s)?Rubio|(Mark\s*)Meadows|Mattis|McCain|(?<!Merwin Dela )Cruz|(Michael\s)?Hayden|((General|Mike)\s*)?(Flynn|Pence)|(Mitt\s*)?Romney|Mnuchin|Nikki|Haley|(Paul\s+)?(Manafort|Volcker)|(Peter\s)?Navarro|Pompeo|Reagan|Reince|Priebus|Republican|(Rex\s*)?Tillerson|(?<!Cynthia )(Richard\s*)?Nixon|Sasse|Tea\s*Party',
469
472
  # There's no emails from these people, they're just here to automate the regex creation for both first + last names
@@ -481,7 +484,7 @@ HIGHLIGHTED_NAMES = [
481
484
  },
482
485
  ),
483
486
  HighlightedNames(
484
- label='russia',
487
+ label='Russia',
485
488
  style='red bold',
486
489
  pattern=r'Alfa\s*Bank|Anya\s*Rasulova|Chernobyl|Day\s+One\s+Ventures|(Dmitry\s)?(Kiselyov|(Lana\s*)?Pozhidaeva|Medvedev|Rybolo(o?l?ev|vlev))|Dmitry|FSB|GRU|KGB|Kislyak|Kremlin|Kuznetsova|Lavrov|Lukoil|Moscow|(Oleg\s*)?Deripaska|Oleksandr Vilkul|Rosneft|RT|St.?\s*?Petersburg|Russian?|Sberbank|Soviet(\s*Union)?|USSR|Vladimir|(Vladimir\s*)?(Putin|Yudashkin)|Women\s*Empowerment|Xitrans',
487
490
  emailers = {
@@ -511,7 +514,7 @@ HIGHLIGHTED_NAMES = [
511
514
  },
512
515
  ),
513
516
  HighlightedNames(
514
- label='southeast_asia',
517
+ label='southeast Asia',
515
518
  style='light_salmon3 bold',
516
519
  pattern=r'Bangkok|Burm(a|ese)|Cambodian?|Laos|Malaysian?|Myan?mar|Thai(land)?|Vietnam(ese)?',
517
520
  ),
@@ -541,7 +544,7 @@ HIGHLIGHTED_NAMES = [
541
544
  pattern=r'BVI|(Jane|Tiffany)\s*Doe|Katie\s*Johnson|(Virginia\s+((L\.?|Roberts)\s+)?)?Giuffre|Virginia\s+Roberts',
542
545
  ),
543
546
  HighlightedNames(
544
- label='victim_lawyer',
547
+ label='victim lawyer',
545
548
  style='dark_magenta bold',
546
549
  pattern=r'(Alan(\s*P.)?|MINTZ)\s*FRAADE|Paul\s*(G.\s*)?Cassell|Rothstein\s*Rosenfeldt\s*Adler|(Scott\s*)?Rothstein|(J\.?\s*)?(Stan(ley)?\s*)?Pottinger',
547
550
  emailers = {
@@ -554,7 +557,7 @@ HIGHLIGHTED_NAMES = [
554
557
  style='sea_green1',
555
558
  pattern=r'Antigua|Bahamas|Caribb?ean|Dominican\s*Republic|(Great|Little)\s*St.?\s*James|Haiti(an)?|(John\s*)deJongh(\s*Jr\.?)|(Kenneth E\. )?Mapp|Palm\s*Beach(?!\s*Post)|PBI|S(ain)?t.?\s*Thomas|USVI|(?<!Epstein )VI|(The\s*)?Virgin\s*Islands(\s*Daily\s*News)?', # TODO: VI Daily News should be yellow but it's hard bc Daily News xists
556
559
  emailers = {
557
- CECILE_DE_JONGH: f'First lady 2007-2015',
560
+ CECILE_DE_JONGH: f'first lady 2007-2015',
558
561
  STACEY_PLASKETT: 'non-voting member of Congress',
559
562
  KENNETH_E_MAPP: 'Governor',
560
563
  },
@@ -573,6 +576,9 @@ HIGHLIGHTED_NAMES = [
573
576
  label=STEVE_BANNON,
574
577
  style='color(58)',
575
578
  pattern=r'((Steve|Sean)\s*)?Bannon?|(American\s*)?Dharma',
579
+ emailers = {
580
+ STEVE_BANNON: 'Trump campaign manager, memecoin grifter, convicted criminal',
581
+ }
576
582
  ),
577
583
  HighlightedNames(
578
584
  emailers={STEVEN_HOFFENBERG: HEADER_ABBREVIATIONS['Hoffenberg']},
@@ -646,7 +652,7 @@ ALL_HIGHLIGHTS = HIGHLIGHTED_NAMES + HIGHLIGHTED_TEXTS
646
652
 
647
653
 
648
654
  class EpsteinHighlighter(RegexHighlighter):
649
- """rich.highlighter that finds and colors interesting keywords based on the above config."""
655
+ """Finds and colors interesting keywords based on the above config."""
650
656
  base_style = f"{REGEX_STYLE_PREFIX}."
651
657
  highlights = [highlight_group.regex for highlight_group in ALL_HIGHLIGHTS]
652
658
 
@@ -666,10 +672,8 @@ def get_style_for_category(category: str) -> str | None:
666
672
  elif category == SOCIAL:
667
673
  return get_style_for_category(PUBLICIST)
668
674
 
669
- category = CATEGORY_STYLE_MAPPING.get(category, category)
670
-
671
675
  for highlight_group in HIGHLIGHTED_NAMES:
672
- if highlight_group.label == category:
676
+ if highlight_group.label == CATEGORY_STYLE_MAPPING.get(category, category):
673
677
  return highlight_group.style
674
678
 
675
679
 
@@ -4,13 +4,14 @@ from rich.padding import Padding
4
4
 
5
5
  from epstein_files.documents.email import Email
6
6
  from epstein_files.documents.messenger_log import MessengerLog
7
+ from epstein_files.documents.other_file import FIRST_FEW_LINES, OtherFile
7
8
  from epstein_files.epstein_files import EpsteinFiles, count_by_month
8
9
  from epstein_files.util.constant import output_files
9
10
  from epstein_files.util.constant.html import *
10
11
  from epstein_files.util.constant.names import *
11
12
  from epstein_files.util.constant.output_files import JSON_FILES_JSON_PATH, JSON_METADATA_PATH
12
13
  from epstein_files.util.data import dict_sets_to_lists
13
- from epstein_files.util.env import args, specified_names
14
+ from epstein_files.util.env import args
14
15
  from epstein_files.util.file_helper import log_file_write
15
16
  from epstein_files.util.logging import logger
16
17
  from epstein_files.util.rich import *
@@ -20,34 +21,33 @@ PRINT_COLOR_KEY_EVERY_N_EMAILS = 150
20
21
  # Order matters. Default names to print emails for.
21
22
  DEFAULT_EMAILERS = [
22
23
  JEREMY_RUBIN,
23
- AL_SECKEL,
24
24
  JOI_ITO,
25
25
  JABOR_Y,
26
26
  STEVEN_SINOFSKY,
27
+ AL_SECKEL,
27
28
  DANIEL_SIAD,
28
29
  JEAN_LUC_BRUNEL,
29
30
  STEVEN_HOFFENBERG,
31
+ RENATA_BOLOTOVA,
32
+ MASHA_DROKOVA,
30
33
  EHUD_BARAK,
31
34
  MARTIN_NOWAK,
32
- MASHA_DROKOVA,
33
- RENATA_BOLOTOVA,
34
35
  STEVE_BANNON,
35
- PRINCE_ANDREW,
36
36
  JIDE_ZEITLIN,
37
37
  DAVID_STERN,
38
38
  MOHAMED_WAHEED_HASSAN,
39
39
  JENNIFER_JACQUET,
40
40
  TYLER_SHEARS,
41
41
  CHRISTINA_GALBRAITH,
42
+ ZUBAIR_KHAN,
42
43
  None,
43
44
  ]
44
45
 
45
46
  # Order matters. Default names to print tables w/email subject, timestamp, etc for. # TODO: get rid of this ?
46
47
  DEFAULT_EMAILER_TABLES: list[str | None] = [
47
48
  GHISLAINE_MAXWELL,
48
- LEON_BLACK,
49
+ PRINCE_ANDREW,
49
50
  SULTAN_BIN_SULAYEM,
50
- DEEPAK_CHOPRA,
51
51
  ARIANE_DE_ROTHSCHILD,
52
52
  ]
53
53
 
@@ -55,17 +55,17 @@ if len(set(DEFAULT_EMAILERS).intersection(set(DEFAULT_EMAILER_TABLES))) > 0:
55
55
  raise RuntimeError(f"Some names appear in both DEFAULT_EMAILERS and DEFAULT_EMAILER_TABLES")
56
56
 
57
57
 
58
- def print_emails(epstein_files: EpsteinFiles) -> int:
59
- """Returns number of emails printed."""
58
+ def print_emails_section(epstein_files: EpsteinFiles) -> list[Email]:
59
+ """Returns emails that were printed (may contain dupes if printed for both author and recipient)."""
60
60
  print_section_header(('Selections from ' if not args.all_emails else '') + 'His Emails')
61
- print_all_files_page_link(epstein_files)
61
+ print_other_page_link(epstein_files)
62
62
  emailers_to_print: list[str | None]
63
63
  emailer_tables: list[str | None] = []
64
64
  already_printed_emails: list[Email] = []
65
65
  num_emails_printed_since_last_color_key = 0
66
66
 
67
- if specified_names:
68
- emailers_to_print = specified_names
67
+ if args.names:
68
+ emailers_to_print = args.names
69
69
  else:
70
70
  print_centered(Padding(epstein_files.table_of_emailers(), (2, 0)))
71
71
 
@@ -97,7 +97,7 @@ def print_emails(epstein_files: EpsteinFiles) -> int:
97
97
  for name in DEFAULT_EMAILER_TABLES:
98
98
  epstein_files.print_emails_table_for(name)
99
99
 
100
- if not specified_names:
100
+ if not args.names:
101
101
  epstein_files.print_email_device_info()
102
102
 
103
103
  if args.all_emails:
@@ -106,7 +106,7 @@ def print_emails(epstein_files: EpsteinFiles) -> int:
106
106
  fwded_articles = [e for e in already_printed_emails if e.config and e.is_fwded_article()]
107
107
  log_msg = f"Rewrote {len(Email.rewritten_header_ids)} of {len(already_printed_emails)} email headers"
108
108
  logger.warning(f"{log_msg}, {len(fwded_articles)} of the emails were forwarded articles.")
109
- return len(already_printed_emails)
109
+ return already_printed_emails
110
110
 
111
111
 
112
112
  def print_json_files(epstein_files: EpsteinFiles):
@@ -136,6 +136,39 @@ def print_json_stats(epstein_files: EpsteinFiles) -> None:
136
136
  print_json("count_by_month", count_by_month(epstein_files.all_documents()))
137
137
 
138
138
 
139
+ def print_other_files_section(files: list[OtherFile], epstein_files: EpsteinFiles) -> None:
140
+ """Returns the OtherFile objects that were interesting enough to print."""
141
+ category_table = OtherFile.count_by_category_table(files)
142
+ other_files_preview_table = OtherFile.files_preview_table(files)
143
+ header_pfx = '' if args.all_other_files else 'Selected '
144
+ print_section_header(f"{FIRST_FEW_LINES} of {len(files)} {header_pfx}Files That Are Neither Emails Nor Text Messages")
145
+
146
+ if args.all_other_files:
147
+ console.line(1)
148
+ else:
149
+ print_other_page_link(epstein_files)
150
+ console.line(2)
151
+
152
+ for table in [category_table, other_files_preview_table]:
153
+ table.title = f"{header_pfx}{table.title}"
154
+
155
+ print_centered(category_table)
156
+ console.line(2)
157
+ console.print(other_files_preview_table)
158
+
159
+
160
+ def print_text_messages_section(epstein_files: EpsteinFiles) -> None:
161
+ """Print summary table and stats for text messages."""
162
+ print_section_header('All of His Text Messages')
163
+ print_centered("(conversations are sorted chronologically based on timestamp of first message)\n", style='gray30')
164
+
165
+ for log_file in epstein_files.imessage_logs:
166
+ console.print(Padding(log_file))
167
+ console.line(2)
168
+
169
+ print_centered(MessengerLog.summary_table(epstein_files.imessage_logs))
170
+
171
+
139
172
  def write_json_metadata(epstein_files: EpsteinFiles) -> None:
140
173
  json_str = epstein_files.json_metadata()
141
174
 
@@ -143,13 +143,6 @@ def parenthesize(msg: str | Text, style: str = '') -> Text:
143
143
  return Text('(', style=style).append(txt).append(')')
144
144
 
145
145
 
146
- def print_all_files_page_link(epstein_files: 'EpsteinFiles') -> None:
147
- markup_msg = link_markup(SITE_URLS[EMAIL], 'the other page', style='light_slate_grey bold')
148
- txt = Text.from_markup(markup_msg).append(f' is uncurated and has all {len(epstein_files.other_files)}')
149
- txt.append(f" unclassifiable files and {len(epstein_files.emails):,} emails")
150
- print_centered(parenthesize(txt), style='dim')
151
-
152
-
153
146
  def print_author_header(msg: str, color: str | None, footer: str | None = None) -> None:
154
147
  txt = Text(msg, justify='center')
155
148
  color = color or 'white'
@@ -195,14 +188,12 @@ def print_header(epstein_files: 'EpsteinFiles') -> None:
195
188
 
196
189
  console.print(f"{not_optimized_msg}.\n", style='dim')
197
190
  print_page_title(width=TITLE_WIDTH)
198
- site_type: SiteType = EMAIL if args.all_emails else TEXT_MESSAGE
191
+ site_type = EMAIL if args.all_emails else TEXT_MESSAGE
199
192
  print_starred_header(f"This is the Epstein {site_type.title()}s site", num_spaces=4, num_stars=14)
200
- other_site_type: SiteType = TEXT_MESSAGE if site_type == EMAIL else EMAIL
201
- other_site_msg = "another site with" + (' all of' if other_site_type == EMAIL else '')
193
+ other_site_msg = "another site with" + (' all of' if other_site_type() == EMAIL else '')
202
194
  other_site_msg += f" Epstein's {other_site_type}s also generated by this code"
203
-
204
- markup_msg = link_markup(SITE_URLS[other_site_type], other_site_msg, OTHER_SITE_LINK_STYLE)
205
- print_centered(parenthesize(Text.from_markup(markup_msg)), style='bold')
195
+ other_site_link_markup = link_markup(other_site_url(), other_site_msg, OTHER_SITE_LINK_STYLE)
196
+ print_centered(parenthesize(Text.from_markup(other_site_link_markup)), style='bold')
206
197
  word_count_link = link_text_obj(WORD_COUNT_URL, 'most frequently used words in the emails and texts', AUX_SITE_LINK_STYLE)
207
198
  print_centered(parenthesize(word_count_link))
208
199
  metadata_link = link_text_obj(JSON_METADATA_URL, 'author attribution explanations', AUX_SITE_LINK_STYLE)
@@ -272,6 +263,19 @@ def print_numbered_list_of_emailers(_list: list[str | None], epstein_files = Non
272
263
  console.line()
273
264
 
274
265
 
266
+ def print_other_page_link(epstein_files: 'EpsteinFiles') -> None:
267
+ markup_msg = link_markup(other_site_url(), 'the other page', style='light_slate_grey bold')
268
+
269
+ if other_site_type() == EMAIL:
270
+ txt = Text.from_markup(markup_msg).append(f' is uncurated and has all {len(epstein_files.other_files)}')
271
+ txt.append(f" unclassifiable files and {len(epstein_files.emails):,} emails")
272
+ else:
273
+ txt = Text.from_markup(markup_msg).append(f' displays only a small collection of emails and')
274
+ txt.append(" unclassifiable files of particular interest")
275
+
276
+ print_centered(parenthesize(txt), style='dim')
277
+
278
+
275
279
  def print_page_title(expand: bool = True, width: int | None = None) -> None:
276
280
  title_panel = Panel(Text(PAGE_TITLE, justify='center'), expand=expand, style=TITLE_STYLE, width=width)
277
281
  console.print(Align.center(vertically_pad(title_panel)))
@@ -14,7 +14,7 @@ from epstein_files.util.constant.common_words import COMMON_WORDS_LIST, COMMON_W
14
14
  from epstein_files.util.constant.names import OTHER_NAMES
15
15
  from epstein_files.util.constant.output_files import WORD_COUNT_HTML_PATH
16
16
  from epstein_files.util.data import ALL_NAMES, flatten, sort_dict
17
- from epstein_files.util.env import args, specified_names
17
+ from epstein_files.util.env import args
18
18
  from epstein_files.util.logging import logger
19
19
  from epstein_files.util.rich import (console, highlighter, print_centered, print_color_key, print_page_title,
20
20
  print_panel, print_starred_header, write_html)
@@ -201,7 +201,7 @@ def write_word_counts_html() -> None:
201
201
  emails = [e for e in epstein_files.non_duplicate_emails() if not (e.is_junk_mail() or e.is_fwded_article())]
202
202
 
203
203
  for email in emails:
204
- if specified_names and email.author not in specified_names:
204
+ if args.names and email.author not in args.names:
205
205
  continue
206
206
 
207
207
  logger.info(f"Counting words in {email}\n [SUBJECT] {email.subject()}")
@@ -218,14 +218,12 @@ def write_word_counts_html() -> None:
218
218
  for word in line.split():
219
219
  word_count.tally_word(word, SearchResult(email, [MatchedLine(line, i)]))
220
220
 
221
- # Add in iMessage conversation words
222
- imessage_logs = epstein_files.imessage_logs_for(specified_names) if specified_names else epstein_files.imessage_logs
223
-
224
- for imessage_log in imessage_logs:
221
+ # Add in iMessage conversations
222
+ for imessage_log in epstein_files.imessage_logs:
225
223
  logger.info(f"Counting words in {imessage_log}")
226
224
 
227
225
  for i, msg in enumerate(imessage_log.messages):
228
- if specified_names and msg.author not in specified_names:
226
+ if args.names and msg.author not in args.names:
229
227
  continue
230
228
  elif HTML_REGEX.search(line):
231
229
  continue
@@ -234,7 +232,7 @@ def write_word_counts_html() -> None:
234
232
  word_count.tally_word(word, SearchResult(imessage_log, [MatchedLine(msg.text, i)]))
235
233
 
236
234
  print_page_title(expand=False)
237
- print_starred_header(f"Most Common Words in {len(emails):,} Emails and {len(imessage_logs)} iMessage Logs")
235
+ print_starred_header(f"Most Common Words in {len(emails):,} Emails and {len(epstein_files.imessage_logs)} iMessage Logs")
238
236
  print_centered(f"(excluding {len(COMMON_WORDS_LIST)} particularly common words at bottom)", style='dim')
239
237
  console.line()
240
238
  print_color_key()
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: epstein-files
3
- Version: 1.0.14
3
+ Version: 1.0.16
4
4
  Summary: Tools for working with the Jeffrey Epstein documents released in November 2025.
5
5
  Home-page: https://michelcrypt4d4mus.github.io/epstein_text_messages/
6
6
  License: GPL-3.0-or-later
@@ -0,0 +1,33 @@
1
+ epstein_files/__init__.py,sha256=nOJ26LghS0sCdQ4qGwklVm18kbuFRn6Uu1-JDE8jwd4,5050
2
+ epstein_files/documents/communication.py,sha256=oqNsSDWe-N0jSmchIHxpihihzIWha-foFqMwKZlxyng,2057
3
+ epstein_files/documents/document.py,sha256=5GdM8grhaaefmXeV26XwYRZvMNqFETFnE7mFpVGGNik,17249
4
+ epstein_files/documents/email.py,sha256=fp8hwXoBvc0xMXoddOBFQZLjzUNwKxHdnRnk0htsQ-g,41186
5
+ epstein_files/documents/emails/email_header.py,sha256=wkPfSLbmzkAeQwvhf0bAeFDLPbQT-EeG0v8vNNLYktM,7502
6
+ epstein_files/documents/imessage/text_message.py,sha256=icIiKRRuZapkV9r_PID_7hEfy7YvPrIm9Emc4QiYxbw,2806
7
+ epstein_files/documents/json_file.py,sha256=WcZW5NNqA67rHTdopbOGtup00muNaLlvrNgKb-K4zO8,1504
8
+ epstein_files/documents/messenger_log.py,sha256=zRVVe82cNmNmg50kqScH38yGGoSx8NjCWfLwFGUb0rs,6501
9
+ epstein_files/documents/other_file.py,sha256=CCwOYsipYTWZj8pSTl0kgUy_LRu7Z5ZuWygQEYhilNA,9778
10
+ epstein_files/epstein_files.py,sha256=LHApXzJBKauK4Z8Bn00FPr4A83VTdITnGqLn0W_vpnQ,17883
11
+ epstein_files/util/constant/common_words.py,sha256=aR0UjoWmxyR49XS-DtHECQ1CiA_bK8hNP6CQ1TS9yZA,3696
12
+ epstein_files/util/constant/html.py,sha256=9U098TGzlghGg4WfxLYHyub5JGR17Dv7VP5i2MSu8Kk,1415
13
+ epstein_files/util/constant/names.py,sha256=M9sPZwjK1G4Jii4HJpWpUa5Y6lZ7CSJAMqRdpg5YdQg,10505
14
+ epstein_files/util/constant/output_files.py,sha256=BkV4_gmdj46RfGy5SFYp6dgTty3FtlBth5YGmaGutls,1700
15
+ epstein_files/util/constant/strings.py,sha256=rOKmYrGIZFPQbhCgd8z7mUF0CbQQBO4ij8kXvGTDkoE,1857
16
+ epstein_files/util/constant/urls.py,sha256=-cylNL7xJi18a6fawVTF8MO3oEdjMvo9Hg1MwC-7ydI,5098
17
+ epstein_files/util/constants.py,sha256=4WABkEBshduSV4cZkxv0MwgJci9g6MxjhtJfPjersEo,112495
18
+ epstein_files/util/data.py,sha256=JccGFZGiCGm7XtwpQTocIjGYOr6hTUpEPwHhjyW9Xnc,3164
19
+ epstein_files/util/doc_cfg.py,sha256=aBIm0hyxf-aeMsb8ZUNiQFVsPFimjVUIkrVdDrg1iQU,9105
20
+ epstein_files/util/env.py,sha256=aSUC_TwdtKB8z6PCDaLeu3k5qZE3AgcsP9jU2p9eaP0,5640
21
+ epstein_files/util/file_helper.py,sha256=uJzNHihuAi2-XMNbUdjdovgppcIt-fVIIrXHXVShA6Q,2904
22
+ epstein_files/util/highlighted_group.py,sha256=Tm4Fy7oZv3PLWW1yCaRCY2NDfr2RM8zB9sudvqw11lw,36746
23
+ epstein_files/util/logging.py,sha256=fuREq06xUUI3DfCV2JE-8QM-sQKxpLDj0_AYFO6qR1M,1983
24
+ epstein_files/util/output.py,sha256=hnWK0YHEGC5GSlcQA80ZpxUnXV42S0ytKDARl1qk-0E,9012
25
+ epstein_files/util/rich.py,sha256=13sPSve9UEqo51t_5hf86Z492ju4OCHWMxrz6r1PnNQ,15338
26
+ epstein_files/util/search_result.py,sha256=1fxe0KPBQXBk4dLfu6m0QXIzYfZCzvaSkWqvghJGzxY,567
27
+ epstein_files/util/timer.py,sha256=8hxW4Y1JcTUfnBrHh7sL2pM9xu1sL4HFQM4CmmzTarU,837
28
+ epstein_files/util/word_count.py,sha256=o_-HnfzHdPDPR8oA_dv6fjy1dbsHee8p_aoe62PEQHw,9213
29
+ epstein_files-1.0.16.dist-info/LICENSE,sha256=OXLcl0T2SZ8Pmy2_dmlvKuetivmyPd5m1q-Gyd-zaYY,35149
30
+ epstein_files-1.0.16.dist-info/METADATA,sha256=_tOJD6MZxx4QAja1cVCNOn61_5675M6DTtvFoXQx9UI,5867
31
+ epstein_files-1.0.16.dist-info/WHEEL,sha256=d2fvjOD7sXsVzChCqf0Ty0JbHKBaLYwDbGQDwQTnJ50,88
32
+ epstein_files-1.0.16.dist-info/entry_points.txt,sha256=5qYgwAXpxegeAicD_rzda_trDRnUC51F5UVDpcZ7j6Q,240
33
+ epstein_files-1.0.16.dist-info/RECORD,,
@@ -1,33 +0,0 @@
1
- epstein_files/__init__.py,sha256=9mClHe3YkTWHulLOZIO2uaxYcff-krpEsc0vphYlwps,4975
2
- epstein_files/documents/communication.py,sha256=oqNsSDWe-N0jSmchIHxpihihzIWha-foFqMwKZlxyng,2057
3
- epstein_files/documents/document.py,sha256=1qL1V5VrrtI7uuuLvOw-JU83khRzzEURduuoh_pfghI,17114
4
- epstein_files/documents/email.py,sha256=eKfDGwbP1nYVfhozM0bSVf-5T-_l_k-0D_HVrQldm38,40904
5
- epstein_files/documents/emails/email_header.py,sha256=wkPfSLbmzkAeQwvhf0bAeFDLPbQT-EeG0v8vNNLYktM,7502
6
- epstein_files/documents/imessage/text_message.py,sha256=JPHlO-5Xgt5V5E9fDsgCEr3XOp7FyzlhIHmZhFNZcmg,2806
7
- epstein_files/documents/json_file.py,sha256=WcZW5NNqA67rHTdopbOGtup00muNaLlvrNgKb-K4zO8,1504
8
- epstein_files/documents/messenger_log.py,sha256=le-cj_ZBDUb_jnxP_F05KlnPjh0nDbgpPSWl4-HL-J4,6502
9
- epstein_files/documents/other_file.py,sha256=tJmEH3cGeEcRIZW5F-RuSJprYM_2r1jEbsF_kjSsA3E,9788
10
- epstein_files/epstein_files.py,sha256=aO2vntbA7DonSk96xB5us5VaDSpp79Mpu8eYJ_g_8Qo,20025
11
- epstein_files/util/constant/common_words.py,sha256=aR0UjoWmxyR49XS-DtHECQ1CiA_bK8hNP6CQ1TS9yZA,3696
12
- epstein_files/util/constant/html.py,sha256=9U098TGzlghGg4WfxLYHyub5JGR17Dv7VP5i2MSu8Kk,1415
13
- epstein_files/util/constant/names.py,sha256=smC9xsR9E9WECXi_ygK_6lrcEPZWZINLZrp_-BthUtA,10377
14
- epstein_files/util/constant/output_files.py,sha256=BkV4_gmdj46RfGy5SFYp6dgTty3FtlBth5YGmaGutls,1700
15
- epstein_files/util/constant/strings.py,sha256=etCmLZPuriVYDap4iG_0Nfd92P1cvRpK2R7ZpVAGDrw,1942
16
- epstein_files/util/constant/urls.py,sha256=EKzpL1np3cdyYvUlgv1zl9IJU8Vrg8jXpAu6YpM0_Bk,5283
17
- epstein_files/util/constants.py,sha256=W-4ibPdv8I62uNyoBUR7sWWiqUWWr2n414WnZNA_Who,112605
18
- epstein_files/util/data.py,sha256=JccGFZGiCGm7XtwpQTocIjGYOr6hTUpEPwHhjyW9Xnc,3164
19
- epstein_files/util/doc_cfg.py,sha256=uVUgZF7p5QMhbPEVauQWlRWQRhP0Imr5XaNQtMk0E7c,9053
20
- epstein_files/util/env.py,sha256=zg-TJ8ea6nTa0PyYgY97Zksre8au1ELv2i8vOizZt7Y,5645
21
- epstein_files/util/file_helper.py,sha256=tacTe1GcAnckPFvjMgxRRSLnFgr2aVIYsgfDR_C9uXk,2780
22
- epstein_files/util/highlighted_group.py,sha256=mNcdML0h88e2voEiUJxpgAVXHh3jQ8f0XV8qVdZMkBM,36550
23
- epstein_files/util/logging.py,sha256=fuREq06xUUI3DfCV2JE-8QM-sQKxpLDj0_AYFO6qR1M,1983
24
- epstein_files/util/output.py,sha256=bb_-jRoFNNMHXPSaptEXdkbqNDJYOpNSs6dkJKvi_HQ,7581
25
- epstein_files/util/rich.py,sha256=bQPlOEZ6qTpVF4yPnwmlBk4K11zH5RJjwbWeBIOUUGE,15191
26
- epstein_files/util/search_result.py,sha256=1fxe0KPBQXBk4dLfu6m0QXIzYfZCzvaSkWqvghJGzxY,567
27
- epstein_files/util/timer.py,sha256=8hxW4Y1JcTUfnBrHh7sL2pM9xu1sL4HFQM4CmmzTarU,837
28
- epstein_files/util/word_count.py,sha256=dTBNqX98sj7W46O0uit76I4hYBhm0bsY1Q7RHwWehiU,9349
29
- epstein_files-1.0.14.dist-info/LICENSE,sha256=OXLcl0T2SZ8Pmy2_dmlvKuetivmyPd5m1q-Gyd-zaYY,35149
30
- epstein_files-1.0.14.dist-info/METADATA,sha256=AUw8p6SQuvkJONsHErig0L--FyAU2y892DYpdpimqtg,5867
31
- epstein_files-1.0.14.dist-info/WHEEL,sha256=d2fvjOD7sXsVzChCqf0Ty0JbHKBaLYwDbGQDwQTnJ50,88
32
- epstein_files-1.0.14.dist-info/entry_points.txt,sha256=5qYgwAXpxegeAicD_rzda_trDRnUC51F5UVDpcZ7j6Q,240
33
- epstein_files-1.0.14.dist-info/RECORD,,