epstein-files 1.2.0__py3-none-any.whl → 1.2.5__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.
- epstein_files/__init__.py +42 -30
- epstein_files/documents/communication.py +0 -3
- epstein_files/documents/document.py +66 -19
- epstein_files/documents/email.py +203 -208
- epstein_files/documents/emails/email_header.py +10 -2
- epstein_files/documents/imessage/text_message.py +3 -2
- epstein_files/documents/other_file.py +16 -34
- epstein_files/epstein_files.py +24 -35
- epstein_files/person.py +67 -73
- epstein_files/util/constant/names.py +21 -12
- epstein_files/util/constant/output_files.py +8 -5
- epstein_files/util/constant/strings.py +2 -2
- epstein_files/util/constant/urls.py +14 -2
- epstein_files/util/constants.py +38 -12
- epstein_files/util/data.py +2 -1
- epstein_files/util/doc_cfg.py +3 -3
- epstein_files/util/env.py +10 -7
- epstein_files/util/highlighted_group.py +366 -202
- epstein_files/util/logging.py +1 -1
- epstein_files/util/output.py +54 -21
- epstein_files/util/rich.py +21 -16
- epstein_files/util/timer.py +14 -0
- epstein_files/util/word_count.py +1 -1
- {epstein_files-1.2.0.dist-info → epstein_files-1.2.5.dist-info}/METADATA +5 -2
- epstein_files-1.2.5.dist-info/RECORD +34 -0
- epstein_files-1.2.0.dist-info/RECORD +0 -34
- {epstein_files-1.2.0.dist-info → epstein_files-1.2.5.dist-info}/LICENSE +0 -0
- {epstein_files-1.2.0.dist-info → epstein_files-1.2.5.dist-info}/WHEEL +0 -0
- {epstein_files-1.2.0.dist-info → epstein_files-1.2.5.dist-info}/entry_points.txt +0 -0
epstein_files/util/logging.py
CHANGED
|
@@ -33,7 +33,7 @@ LOG_LEVEL_ENV_VAR = 'LOG_LEVEL'
|
|
|
33
33
|
# Augment the standard log highlighter with 'epstein_filename' matcher
|
|
34
34
|
class LogHighlighter(ReprHighlighter):
|
|
35
35
|
highlights = ReprHighlighter.highlights + [
|
|
36
|
-
*[fr"(?P<{doc_type}>{doc_type}(Cfg)?)" for doc_type in DOC_TYPE_STYLES.keys()],
|
|
36
|
+
*[fr"(?P<{doc_type}>{doc_type}(Cfg|s)?)" for doc_type in DOC_TYPE_STYLES.keys()],
|
|
37
37
|
"(?P<epstein_filename>" + FILE_NAME_REGEX.pattern + ')',
|
|
38
38
|
]
|
|
39
39
|
|
epstein_files/util/output.py
CHANGED
|
@@ -5,7 +5,7 @@ from typing import cast
|
|
|
5
5
|
from rich.padding import Padding
|
|
6
6
|
|
|
7
7
|
from epstein_files.documents.document import Document
|
|
8
|
-
from epstein_files.documents.email import Email
|
|
8
|
+
from epstein_files.documents.email import INTERESTING_TRUNCATION_LENGTHS, Email
|
|
9
9
|
from epstein_files.documents.messenger_log import MessengerLog
|
|
10
10
|
from epstein_files.documents.other_file import FIRST_FEW_LINES, OtherFile
|
|
11
11
|
from epstein_files.epstein_files import EpsteinFiles, count_by_month
|
|
@@ -18,7 +18,7 @@ from epstein_files.util.constant.strings import AUTHOR, TIMESTAMP_STYLE
|
|
|
18
18
|
from epstein_files.util.data import dict_sets_to_lists, uniquify
|
|
19
19
|
from epstein_files.util.env import args
|
|
20
20
|
from epstein_files.util.file_helper import log_file_write
|
|
21
|
-
from epstein_files.util.logging import logger
|
|
21
|
+
from epstein_files.util.logging import logger, exit_with_error
|
|
22
22
|
from epstein_files.util.rich import *
|
|
23
23
|
|
|
24
24
|
DEVICE_SIGNATURE_SUBTITLE = f"Email [italic]Sent from \\[DEVICE][/italic] Signature Breakdown"
|
|
@@ -40,15 +40,15 @@ DEFAULT_EMAILERS = [
|
|
|
40
40
|
STEVEN_HOFFENBERG,
|
|
41
41
|
MASHA_DROKOVA,
|
|
42
42
|
EHUD_BARAK,
|
|
43
|
-
MARTIN_NOWAK,
|
|
44
43
|
STEVE_BANNON,
|
|
45
44
|
TYLER_SHEARS,
|
|
46
45
|
JIDE_ZEITLIN,
|
|
47
46
|
CHRISTINA_GALBRAITH,
|
|
48
|
-
DAVID_STERN,
|
|
49
47
|
MOHAMED_WAHEED_HASSAN,
|
|
50
48
|
JENNIFER_JACQUET,
|
|
51
49
|
ZUBAIR_KHAN,
|
|
50
|
+
ROSS_GOW,
|
|
51
|
+
DAVID_BLAINE,
|
|
52
52
|
None,
|
|
53
53
|
JEFFREY_EPSTEIN,
|
|
54
54
|
]
|
|
@@ -56,17 +56,31 @@ DEFAULT_EMAILERS = [
|
|
|
56
56
|
INTERESTING_EMAIL_IDS = [
|
|
57
57
|
'032229', # Michael Wolff on strategy
|
|
58
58
|
'028784', # seminars: Money / Power
|
|
59
|
-
'029342', # Hakeem Jeffries
|
|
60
|
-
'023454', # Email invitation sent to tech CEOs + Epstein
|
|
61
59
|
'030630', # 'What happens with zubair's project?'
|
|
62
60
|
'033178', # 'How is it going with Zubair?'
|
|
63
61
|
'022396', # Ukraine friend
|
|
64
62
|
'026505', # I know how dirty trump is
|
|
65
63
|
'029679', # Trump's driver was the bag man
|
|
66
|
-
'
|
|
67
|
-
'023627', # Michael Wolff article w/Brock
|
|
64
|
+
'026258', '026260', # Bannon cripto coin issues
|
|
68
65
|
'032359', # Jabor e-currency
|
|
69
|
-
|
|
66
|
+
'031451', '031596', # "would you like photso of donald and girls in bikinis in my kitchen."
|
|
67
|
+
'031601', # Old gf i gave to donald
|
|
68
|
+
'030727', # David Stern "Death of chinese shareholder quite an issue. What can we do with Qataris here?"
|
|
69
|
+
'030725', # David Stern in Moscow
|
|
70
|
+
'029098', # Nowak, "her Skype contact is in moscow."
|
|
71
|
+
'030714', # Bannon, Russian Dugan shout out
|
|
72
|
+
'031659', # "i have met some very bad people „ none as bad as trump"
|
|
73
|
+
]
|
|
74
|
+
|
|
75
|
+
for id in INTERESTING_TRUNCATION_LENGTHS:
|
|
76
|
+
if id not in INTERESTING_EMAIL_IDS:
|
|
77
|
+
logger.debug(f"Adding INTERESTING_TRUNCATION_LENGTHS ID {id} to INTERESTING_EMAIL_IDS")
|
|
78
|
+
INTERESTING_EMAIL_IDS.append(id)
|
|
79
|
+
|
|
80
|
+
|
|
81
|
+
INTERESTING_TEXT_IDS = [
|
|
82
|
+
'027275', # "Crypto- Kerry- Qatar -sessions"
|
|
83
|
+
'027165', # melaniee walker crypto health
|
|
70
84
|
]
|
|
71
85
|
|
|
72
86
|
|
|
@@ -83,11 +97,17 @@ def print_email_timeline(epstein_files: EpsteinFiles) -> None:
|
|
|
83
97
|
console.print(email)
|
|
84
98
|
|
|
85
99
|
|
|
86
|
-
def
|
|
100
|
+
def print_emailers_info(epstein_files: EpsteinFiles) -> None:
|
|
101
|
+
"""Print tbe summary table of everyone in the files to an image."""
|
|
87
102
|
print_color_key()
|
|
88
103
|
console.line()
|
|
89
104
|
all_emailers = sorted(epstein_files.emailers(), key=lambda person: person.sort_key())
|
|
90
|
-
console.print(Person.emailer_info_table(all_emailers))
|
|
105
|
+
console.print(Person.emailer_info_table(all_emailers, show_epstein_total=True))
|
|
106
|
+
|
|
107
|
+
if not args.build:
|
|
108
|
+
logger.warning(f"Not writing .png file because --build is not set")
|
|
109
|
+
return
|
|
110
|
+
|
|
91
111
|
svg_path = f"{EMAILERS_TABLE_PNG_PATH}.svg"
|
|
92
112
|
console.save_svg(svg_path, theme=HTML_TERMINAL_THEME, title="Epstein Emailers")
|
|
93
113
|
log_file_write(svg_path)
|
|
@@ -106,7 +126,10 @@ def print_emails_section(epstein_files: EpsteinFiles) -> list[Email]:
|
|
|
106
126
|
people_to_print: list[Person]
|
|
107
127
|
|
|
108
128
|
if args.names:
|
|
109
|
-
|
|
129
|
+
try:
|
|
130
|
+
people_to_print = epstein_files.person_objs(args.names)
|
|
131
|
+
except Exception as e:
|
|
132
|
+
exit_with_error(str(e))
|
|
110
133
|
else:
|
|
111
134
|
if args.all_emails:
|
|
112
135
|
people_to_print = all_emailers
|
|
@@ -140,17 +163,17 @@ def print_emails_section(epstein_files: EpsteinFiles) -> list[Email]:
|
|
|
140
163
|
print_subtitle_panel(OTHER_INTERESTING_EMAILS_SUBTITLE)
|
|
141
164
|
console.line()
|
|
142
165
|
|
|
143
|
-
for other_email in extra_emails:
|
|
166
|
+
for other_email in Document.sort_by_timestamp(extra_emails):
|
|
144
167
|
console.print(other_email)
|
|
145
168
|
printed_emails.append(cast(Email, other_email))
|
|
146
169
|
|
|
147
170
|
if args.all_emails:
|
|
148
171
|
_verify_all_emails_were_printed(epstein_files, printed_emails)
|
|
149
172
|
|
|
150
|
-
|
|
173
|
+
_print_email_device_signature_info(epstein_files)
|
|
151
174
|
fwded_articles = [e for e in printed_emails if e.config and e.is_fwded_article()]
|
|
152
175
|
log_msg = f"Rewrote {len(Email.rewritten_header_ids)} of {len(printed_emails)} email headers"
|
|
153
|
-
logger.warning(f"{log_msg}, {len(fwded_articles)} of the
|
|
176
|
+
logger.warning(f" -> {log_msg}, {len(fwded_articles)} of the Emails printed were forwarded articles.")
|
|
154
177
|
return printed_emails
|
|
155
178
|
|
|
156
179
|
|
|
@@ -193,22 +216,30 @@ def print_json_stats(epstein_files: EpsteinFiles) -> None:
|
|
|
193
216
|
print_json("count_by_month", count_by_month(epstein_files.all_documents()))
|
|
194
217
|
|
|
195
218
|
|
|
196
|
-
def print_other_files_section(
|
|
219
|
+
def print_other_files_section(epstein_files: EpsteinFiles) -> list[OtherFile]:
|
|
197
220
|
"""Returns the OtherFile objects that were interesting enough to print."""
|
|
221
|
+
if args.uninteresting:
|
|
222
|
+
files = [f for f in epstein_files.other_files if not f.is_interesting()]
|
|
223
|
+
else:
|
|
224
|
+
files = [f for f in epstein_files.other_files if args.all_other_files or f.is_interesting()]
|
|
225
|
+
|
|
198
226
|
title_pfx = '' if args.all_other_files else 'Selected '
|
|
199
|
-
category_table = OtherFile.
|
|
227
|
+
category_table = OtherFile.summary_table(files, title_pfx=title_pfx)
|
|
200
228
|
other_files_preview_table = OtherFile.files_preview_table(files, title_pfx=title_pfx)
|
|
201
229
|
print_section_header(f"{FIRST_FEW_LINES} of {len(files)} {title_pfx}Files That Are Neither Emails Nor Text Messages")
|
|
202
230
|
print_other_page_link(epstein_files)
|
|
203
231
|
print_centered(Padding(category_table, (2, 0)))
|
|
204
232
|
console.print(other_files_preview_table)
|
|
233
|
+
return files
|
|
205
234
|
|
|
206
235
|
|
|
207
|
-
def print_text_messages_section(
|
|
236
|
+
def print_text_messages_section(epstein_files: EpsteinFiles) -> list[MessengerLog]:
|
|
208
237
|
"""Print summary table and stats for text messages."""
|
|
238
|
+
imessage_logs = [log for log in epstein_files.imessage_logs if not args.names or log.author in args.names]
|
|
239
|
+
|
|
209
240
|
if not imessage_logs:
|
|
210
|
-
logger.warning(f"No
|
|
211
|
-
return
|
|
241
|
+
logger.warning(f"No MessengerLogs found for {args.names}")
|
|
242
|
+
return imessage_logs
|
|
212
243
|
|
|
213
244
|
print_section_header('All of His Text Messages')
|
|
214
245
|
print_centered("(conversations are sorted chronologically based on timestamp of first message in the log file)", style='dim')
|
|
@@ -222,6 +253,8 @@ def print_text_messages_section(imessage_logs: list[MessengerLog]) -> None:
|
|
|
222
253
|
console.print(Padding(log_file))
|
|
223
254
|
console.line(2)
|
|
224
255
|
|
|
256
|
+
return imessage_logs
|
|
257
|
+
|
|
225
258
|
|
|
226
259
|
def write_urls() -> None:
|
|
227
260
|
"""Write _URL style constant variables to URLS_ENV file so bash scripts can load as env vars."""
|
|
@@ -245,7 +278,7 @@ def write_urls() -> None:
|
|
|
245
278
|
logger.warning(f"Wrote {len(url_vars)} URL variables to '{URLS_ENV}'\n")
|
|
246
279
|
|
|
247
280
|
|
|
248
|
-
def
|
|
281
|
+
def _print_email_device_signature_info(epstein_files: EpsteinFiles) -> None:
|
|
249
282
|
print_subtitle_panel(DEVICE_SIGNATURE_SUBTITLE)
|
|
250
283
|
console.print(_signature_table(epstein_files.email_device_signatures_to_authors(), (DEVICE_SIGNATURE, AUTHOR), ', '))
|
|
251
284
|
console.print(_signature_table(epstein_files.email_authors_to_device_signatures(), (AUTHOR, DEVICE_SIGNATURE)))
|
epstein_files/util/rich.py
CHANGED
|
@@ -70,7 +70,7 @@ CONSOLE_ARGS = {
|
|
|
70
70
|
'color_system': '256',
|
|
71
71
|
'highlighter': EpsteinHighlighter(),
|
|
72
72
|
'record': args.build,
|
|
73
|
-
'safe_box':
|
|
73
|
+
'safe_box': True,
|
|
74
74
|
'theme': Theme(THEME_STYLES),
|
|
75
75
|
'width': args.width,
|
|
76
76
|
}
|
|
@@ -83,21 +83,21 @@ console = Console(**CONSOLE_ARGS)
|
|
|
83
83
|
highlighter = CONSOLE_ARGS['highlighter']
|
|
84
84
|
|
|
85
85
|
|
|
86
|
-
def add_cols_to_table(table: Table,
|
|
86
|
+
def add_cols_to_table(table: Table, cols: list[str | dict], justify: str = 'center') -> None:
|
|
87
87
|
"""Left most col will be left justified, rest are center justified."""
|
|
88
|
-
for i, col in enumerate(
|
|
89
|
-
|
|
88
|
+
for i, col in enumerate(cols):
|
|
89
|
+
col_justify = 'left' if i == 0 else justify
|
|
90
90
|
|
|
91
91
|
if isinstance(col, dict):
|
|
92
92
|
col_name = col['name']
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
del
|
|
93
|
+
col_kwargs = deepcopy(col)
|
|
94
|
+
col_kwargs['justify'] = col_kwargs.get('justify', col_justify)
|
|
95
|
+
del col_kwargs['name']
|
|
96
96
|
else:
|
|
97
97
|
col_name = col
|
|
98
|
-
|
|
98
|
+
col_kwargs = {'justify': col_justify}
|
|
99
99
|
|
|
100
|
-
table.add_column(col_name, **
|
|
100
|
+
table.add_column(col_name, **col_kwargs)
|
|
101
101
|
|
|
102
102
|
|
|
103
103
|
def build_highlighter(pattern: str) -> EpsteinHighlighter:
|
|
@@ -187,7 +187,7 @@ def print_title_page_header() -> None:
|
|
|
187
187
|
Text.from_markup(link_markup(other_site_url(), other_site_msg, f"{OTHER_SITE_LINK_STYLE} bold")),
|
|
188
188
|
link_text_obj(WORD_COUNT_URL, 'most frequently used words in the emails and texts', AUX_SITE_LINK_STYLE),
|
|
189
189
|
link_text_obj(JSON_METADATA_URL, 'author attribution explanations', AUX_SITE_LINK_STYLE),
|
|
190
|
-
link_text_obj(
|
|
190
|
+
link_text_obj(JSON_FILES_URL, "epstein's json files", AUX_SITE_LINK_STYLE),
|
|
191
191
|
]
|
|
192
192
|
|
|
193
193
|
for link in links:
|
|
@@ -199,7 +199,8 @@ def print_title_page_tables(epstein_files: 'EpsteinFiles') -> None:
|
|
|
199
199
|
_print_external_links()
|
|
200
200
|
console.line()
|
|
201
201
|
_print_abbreviations_table()
|
|
202
|
-
epstein_files.
|
|
202
|
+
print_centered(epstein_files.overview_table())
|
|
203
|
+
console.line()
|
|
203
204
|
print_color_key()
|
|
204
205
|
print_centered(f"if you think there's an attribution error or can deanonymize an {UNKNOWN} contact {CRYPTADAMUS_TWITTER}", 'grey46')
|
|
205
206
|
print_centered('note this site is based on the OCR text provided by Congress which is not always the greatest', 'grey23')
|
|
@@ -252,7 +253,7 @@ def print_subtitle_panel(msg: str, style: str = 'black on white') -> None:
|
|
|
252
253
|
def print_section_header(msg: str, style: str = SECTION_HEADER_STYLE, is_centered: bool = False) -> None:
|
|
253
254
|
panel = Panel(Text(msg, justify='center'), expand=True, padding=(1, 1), style=style)
|
|
254
255
|
panel = Align.center(panel) if is_centered else panel
|
|
255
|
-
console.print(Padding(panel, (3,
|
|
256
|
+
console.print(Padding(panel, (3, 5, 1, 5)))
|
|
256
257
|
|
|
257
258
|
|
|
258
259
|
def print_starred_header(msg: str, num_stars: int = 7, num_spaces: int = 2, style: str = TITLE_STYLE) -> None:
|
|
@@ -289,9 +290,14 @@ def write_html(output_path: Path | None) -> None:
|
|
|
289
290
|
logger.warning(f"Not writing HTML because args.build={args.build}.")
|
|
290
291
|
return
|
|
291
292
|
|
|
292
|
-
console.save_html(str(output_path), code_format=CONSOLE_HTML_FORMAT, theme=HTML_TERMINAL_THEME)
|
|
293
|
+
console.save_html(str(output_path), clear=False, code_format=CONSOLE_HTML_FORMAT, theme=HTML_TERMINAL_THEME)
|
|
293
294
|
log_file_write(output_path)
|
|
294
295
|
|
|
296
|
+
if args.write_txt:
|
|
297
|
+
txt_path = f"{output_path}.txt"
|
|
298
|
+
console.save_text(txt_path)
|
|
299
|
+
log_file_write(txt_path)
|
|
300
|
+
|
|
295
301
|
|
|
296
302
|
def _print_abbreviations_table() -> None:
|
|
297
303
|
table = build_table(title="Abbreviations Used Frequently In These Conversations", show_header=False)
|
|
@@ -311,8 +317,7 @@ def _print_external_links() -> None:
|
|
|
311
317
|
raw_docs_link = join_texts([link_text_obj(RAW_OVERSIGHT_DOCS_GOOGLE_DRIVE_URL, 'raw files', style=f"{ARCHIVE_LINK_COLOR} dim")], encloser='()')
|
|
312
318
|
print_centered(join_texts([presser_link, raw_docs_link]))
|
|
313
319
|
print_centered(link_markup(JMAIL_URL, JMAIL) + " (read His Emails via Gmail interface)")
|
|
314
|
-
print_centered(link_markup(
|
|
315
|
-
print_centered(link_markup(COURIER_NEWSROOM_ARCHIVE_URL, 'Searchable Archive') + " (Courier Newsroom)")
|
|
320
|
+
print_centered(link_markup(EPSTEIN_DOCS_URL) + " (searchable archive)")
|
|
316
321
|
print_centered(link_markup(EPSTEINIFY_URL) + " (raw document images)")
|
|
317
322
|
print_centered(link_markup(EPSTEIN_WEB_URL) + " (character summaries)")
|
|
318
323
|
print_centered(link_markup(EPSTEIN_MEDIA_URL) + " (raw document images)")
|
|
@@ -331,7 +336,7 @@ def _print_social_media_links() -> None:
|
|
|
331
336
|
link_text_obj('https://universeodon.com/@cryptadamist/115572634993386057', '@mastodon', style=SOCIAL_MEDIA_LINK_STYLE),
|
|
332
337
|
link_text_obj(SUBSTACK_URL, '@substack', style=SOCIAL_MEDIA_LINK_STYLE),
|
|
333
338
|
link_text_obj('https://x.com/Cryptadamist/status/1990866804630036988', '@twitter', style=SOCIAL_MEDIA_LINK_STYLE),
|
|
334
|
-
link_text_obj(
|
|
339
|
+
link_text_obj(GH_PROJECT_URL, '@github', style=SOCIAL_MEDIA_LINK_STYLE)
|
|
335
340
|
]
|
|
336
341
|
|
|
337
342
|
print_centered(join_texts(social_links, join=' / '))#, encloser='()'))#, encloser='‹›'))
|
epstein_files/util/timer.py
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import time
|
|
2
2
|
from dataclasses import dataclass, field
|
|
3
|
+
from typing import Type
|
|
3
4
|
|
|
4
5
|
from epstein_files.util.logging import logger
|
|
5
6
|
|
|
@@ -10,6 +11,19 @@ class Timer:
|
|
|
10
11
|
checkpoint_at: float = field(default_factory=lambda: time.perf_counter())
|
|
11
12
|
decimals: int = 2
|
|
12
13
|
|
|
14
|
+
def log_section_complete(self, label: str, all_docs: list, printed_docs: list) -> None:
|
|
15
|
+
num_skipped = len(all_docs) - len(printed_docs)
|
|
16
|
+
prefix = suffix = ''
|
|
17
|
+
|
|
18
|
+
if num_skipped == 0:
|
|
19
|
+
prefix = 'all '
|
|
20
|
+
elif num_skipped < 0:
|
|
21
|
+
suffix = f"(at least {num_skipped} {label}s printed more than once)"
|
|
22
|
+
else:
|
|
23
|
+
suffix = f"(skipped {num_skipped})"
|
|
24
|
+
|
|
25
|
+
self.print_at_checkpoint(f"Printed {prefix}{len(printed_docs)} {label}s {suffix}".strip())
|
|
26
|
+
|
|
13
27
|
def print_at_checkpoint(self, msg: str) -> None:
|
|
14
28
|
logger.warning(f"{msg} in {self.seconds_since_checkpoint_str()}...")
|
|
15
29
|
self.checkpoint_at = time.perf_counter()
|
epstein_files/util/word_count.py
CHANGED
|
@@ -239,7 +239,7 @@ def write_word_counts_html() -> None:
|
|
|
239
239
|
console.print(word_count)
|
|
240
240
|
print_subtitle_panel(f"{len(COMMON_WORDS_LIST):,} Excluded Words")
|
|
241
241
|
console.print(', '.join(COMMON_WORDS_LIST), highlight=False)
|
|
242
|
-
write_html(WORD_COUNT_HTML_PATH)
|
|
242
|
+
write_html(WORD_COUNT_HTML_PATH if args.build else None)
|
|
243
243
|
timer.print_at_checkpoint(f"Finished counting words")
|
|
244
244
|
|
|
245
245
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: epstein-files
|
|
3
|
-
Version: 1.2.
|
|
3
|
+
Version: 1.2.5
|
|
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
|
|
@@ -32,7 +32,7 @@ Project-URL: TextMessages, https://michelcrypt4d4mus.github.io/epstein_text_mess
|
|
|
32
32
|
Project-URL: WordCounts, https://michelcrypt4d4mus.github.io/epstein_text_messages/communication_word_count_epstein_files_nov_2025.html
|
|
33
33
|
Description-Content-Type: text/markdown
|
|
34
34
|
|
|
35
|
-
#
|
|
35
|
+
# Color Highlighted Epstein Emails and Text Messages
|
|
36
36
|
|
|
37
37
|

|
|
38
38
|
|
|
@@ -120,3 +120,6 @@ for file in epstein_files.other_files:
|
|
|
120
120
|
do_stuff(file)
|
|
121
121
|
```
|
|
122
122
|
|
|
123
|
+
# Everyone Who Sent or Received an Email in the November Document Dump
|
|
124
|
+

|
|
125
|
+
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
epstein_files/__init__.py,sha256=_7YTeRPEpqnY7XBBGvjLpk-G287D1NrYjldTinsKeoI,5899
|
|
2
|
+
epstein_files/documents/communication.py,sha256=QiCZ35R2ttlqcdovm5LBdGqgoj4xCcpl9ANqwlA9XGU,1752
|
|
3
|
+
epstein_files/documents/document.py,sha256=cJxL0UF8mtUvkUx1YGa62J24336DULVKLv1j6_d39Gg,19668
|
|
4
|
+
epstein_files/documents/email.py,sha256=ZylzikpeuiwhZsWVnfaYlO8llMjIfvAS2hQuuQELl6g,42343
|
|
5
|
+
epstein_files/documents/emails/email_header.py,sha256=3UD2pXMS9bRsFP4L5RSP2tSjI8OR6lq6gPKKao0DYLY,7739
|
|
6
|
+
epstein_files/documents/imessage/text_message.py,sha256=IexwwVeF14FZqD7IuK47bIHYam07ZcD3rxheVNULNkc,3394
|
|
7
|
+
epstein_files/documents/json_file.py,sha256=WcZW5NNqA67rHTdopbOGtup00muNaLlvrNgKb-K4zO8,1504
|
|
8
|
+
epstein_files/documents/messenger_log.py,sha256=1bv62WoQMKR3gYDrK9W3Xm7cqLbKrkRBV7NTFL2cexE,7349
|
|
9
|
+
epstein_files/documents/other_file.py,sha256=xZSILlnYlX2QIYCQCm6WNHvNqhF5do6AmxT7qxw-yog,9417
|
|
10
|
+
epstein_files/epstein_files.py,sha256=fHa50Xdxgc2Vw7YgcgS3vAjTqDp1L5yPWOWQ3sb4RlM,14021
|
|
11
|
+
epstein_files/person.py,sha256=lrBPCg1LFfd8koytEL0AOb8CcFKmJjLV9kAFqzGHHdU,14700
|
|
12
|
+
epstein_files/util/constant/common_words.py,sha256=C1JERPnOGHV2UMC71aEue1i9QTQog-RfT3IzdcYQOYQ,3702
|
|
13
|
+
epstein_files/util/constant/html.py,sha256=MFooFV8KfFBCm9hL1u6A3hi_u37i7lL6UKAYoKQj3PI,1505
|
|
14
|
+
epstein_files/util/constant/names.py,sha256=exsR_dtwVEANYFJSU1wk50hiqzAtfc8zQbaKKwgX42A,11408
|
|
15
|
+
epstein_files/util/constant/output_files.py,sha256=vxof85L-1GqSwss8XvLS3HZGguyWSzJkoJm1PrYYJ7g,2123
|
|
16
|
+
epstein_files/util/constant/strings.py,sha256=jh_ou1VoA-6T1ej9l7CFfETEOCuSCectqqK7ppBQz2I,2030
|
|
17
|
+
epstein_files/util/constant/urls.py,sha256=rFVU7824M1gAsmWLnAr-BBVOstlVwIsgyOlUWd1cdDk,6181
|
|
18
|
+
epstein_files/util/constants.py,sha256=ANm_qMYK-dpgg02W9i9PUYiOI2fqr_5aoa50AHOOKIo,123568
|
|
19
|
+
epstein_files/util/data.py,sha256=oZSrjzQSnXHtOlqxisodpH65cTGe57TfA3sZyQQzT7Q,3051
|
|
20
|
+
epstein_files/util/doc_cfg.py,sha256=gIBAoeheQYqqrCtVRU2ytYu799LyCiPxPyHDgWUad3c,9471
|
|
21
|
+
epstein_files/util/env.py,sha256=506dRXdetaKAHZ8vIacxA5x2Cv-IGBNYS8A0NQfMdUM,6961
|
|
22
|
+
epstein_files/util/file_helper.py,sha256=MpG1hI7DGs05fV9KSVb_ltc98DC8tv1E_TTo5X_E7Js,3010
|
|
23
|
+
epstein_files/util/highlighted_group.py,sha256=6EwCRVysWRzQOYu12ZKvVapKHTveSmnF-5bCZTsJtHk,62411
|
|
24
|
+
epstein_files/util/logging.py,sha256=pSLHGrUnPQGFMGYNIOTbZbCyy5dDOCbNrbNz22wIcZI,2099
|
|
25
|
+
epstein_files/util/output.py,sha256=ZNkx6iSJhaaeE3WkG3SDjgATL6pGkJpqzOCov7hZQW8,13221
|
|
26
|
+
epstein_files/util/rich.py,sha256=pp_rIfy8rrxDONvpcizQ6r-x3oeJXEqgCgaA3FNDIHI,13739
|
|
27
|
+
epstein_files/util/search_result.py,sha256=1fxe0KPBQXBk4dLfu6m0QXIzYfZCzvaSkWqvghJGzxY,567
|
|
28
|
+
epstein_files/util/timer.py,sha256=GZHefXiPA-prK-1szC1cebl44Y-i4Wd3K8zedFpcggg,1373
|
|
29
|
+
epstein_files/util/word_count.py,sha256=Ab0KSBv5oaee40h9MpGIlMNWRH4nAWDcMAq4A1TdpvA,9226
|
|
30
|
+
epstein_files-1.2.5.dist-info/LICENSE,sha256=OXLcl0T2SZ8Pmy2_dmlvKuetivmyPd5m1q-Gyd-zaYY,35149
|
|
31
|
+
epstein_files-1.2.5.dist-info/METADATA,sha256=9cKpM9bg6-9MbKQ-EcX_S4oPBfS1a01FADl_2LbRvec,6222
|
|
32
|
+
epstein_files-1.2.5.dist-info/WHEEL,sha256=d2fvjOD7sXsVzChCqf0Ty0JbHKBaLYwDbGQDwQTnJ50,88
|
|
33
|
+
epstein_files-1.2.5.dist-info/entry_points.txt,sha256=5qYgwAXpxegeAicD_rzda_trDRnUC51F5UVDpcZ7j6Q,240
|
|
34
|
+
epstein_files-1.2.5.dist-info/RECORD,,
|
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
epstein_files/__init__.py,sha256=HfNEIZ8I8h44GdWTaS0UTA2NjIGZYoqcdTFGV9OnACM,5403
|
|
2
|
-
epstein_files/documents/communication.py,sha256=NzcZ3vQBjVAovasnxpUyII4weycMaJ2T3fc_8d4eg-U,1875
|
|
3
|
-
epstein_files/documents/document.py,sha256=eDPN06KztjWcb6LCmNxqud0fcckfr6ZySHO1TxbjaCY,17643
|
|
4
|
-
epstein_files/documents/email.py,sha256=7zLkvyHdv2fSTKGrT6eW2b6VqaTXpBWPzCKXqOQwl6s,42083
|
|
5
|
-
epstein_files/documents/emails/email_header.py,sha256=P2dZno30W49oqf9MixiAZbtxX1ooe-yJ6VVa_R24ySw,7588
|
|
6
|
-
epstein_files/documents/imessage/text_message.py,sha256=Tx81FVz8LwQwC_ZhMa5XI-qlF2jPNxbAnC2KN1d0fdk,3353
|
|
7
|
-
epstein_files/documents/json_file.py,sha256=WcZW5NNqA67rHTdopbOGtup00muNaLlvrNgKb-K4zO8,1504
|
|
8
|
-
epstein_files/documents/messenger_log.py,sha256=1bv62WoQMKR3gYDrK9W3Xm7cqLbKrkRBV7NTFL2cexE,7349
|
|
9
|
-
epstein_files/documents/other_file.py,sha256=TeEzsfGN_mTFZPhfyt9ihxK9oTCYwI8sRLplTsgpOMY,9893
|
|
10
|
-
epstein_files/epstein_files.py,sha256=7xEgs9rKQen6mNPCk2drWc7VsXg9OylDnmzFk8U4UEM,14500
|
|
11
|
-
epstein_files/person.py,sha256=ZzU2WNEdUXJpwA8M3y99AhfK1oQVlnOy-SNP2b8JkjI,14700
|
|
12
|
-
epstein_files/util/constant/common_words.py,sha256=C1JERPnOGHV2UMC71aEue1i9QTQog-RfT3IzdcYQOYQ,3702
|
|
13
|
-
epstein_files/util/constant/html.py,sha256=MFooFV8KfFBCm9hL1u6A3hi_u37i7lL6UKAYoKQj3PI,1505
|
|
14
|
-
epstein_files/util/constant/names.py,sha256=iaF4vJnbqatC1evCBwFagqCQtQr15OUJC_jYbHgoEfs,11058
|
|
15
|
-
epstein_files/util/constant/output_files.py,sha256=gUZJ4mNoeJy3qTYWr_jhSmQI-_uV_jdLR0YCiaQd_Qg,1982
|
|
16
|
-
epstein_files/util/constant/strings.py,sha256=YgrUSf3fANRw2jr1r8HrmbZpzET7KY7gn-MrrZ4-bQI,2017
|
|
17
|
-
epstein_files/util/constant/urls.py,sha256=6cJVEGFWwQ5CCq5oy-Ukj2-xZvbclMWySVxykaFW-W4,5599
|
|
18
|
-
epstein_files/util/constants.py,sha256=HJK7c9T2y6CxQS1CtB8qObCL6hQ6M92xlH5deJZbc8M,121602
|
|
19
|
-
epstein_files/util/data.py,sha256=CXvQBWZuAnkxOuOv2KtwIZe7jtHtfqAOd6ELIhNeJzI,2983
|
|
20
|
-
epstein_files/util/doc_cfg.py,sha256=RjKRX6BGTJf0J4vAWdEH6kMtfG75Psu3ntNx4MYnMzY,9509
|
|
21
|
-
epstein_files/util/env.py,sha256=6DvDCDdG_2AwXR2sOO5kL3GHtZFQxHs8HT87VjVt9NE,6718
|
|
22
|
-
epstein_files/util/file_helper.py,sha256=MpG1hI7DGs05fV9KSVb_ltc98DC8tv1E_TTo5X_E7Js,3010
|
|
23
|
-
epstein_files/util/highlighted_group.py,sha256=c7p7_P-DfbSqrxIh8Es4A3aFxQFrsv9WBodzqMrVcAQ,55708
|
|
24
|
-
epstein_files/util/logging.py,sha256=F45YqEKAiIb0rDZnOB7XuaY-dOkOKrsfSzO1VVqY508,2097
|
|
25
|
-
epstein_files/util/output.py,sha256=8Hqt-CV_02-GyETrcqm4AM6dWO0OTV9nddOQNJ7eW8k,11836
|
|
26
|
-
epstein_files/util/rich.py,sha256=J4b6TLaJ3HQFQdo5Iib60lRwrjzlHRW2zWEaobkrSEc,13698
|
|
27
|
-
epstein_files/util/search_result.py,sha256=1fxe0KPBQXBk4dLfu6m0QXIzYfZCzvaSkWqvghJGzxY,567
|
|
28
|
-
epstein_files/util/timer.py,sha256=QqqXAQofKPWkDngNwG0mOqRn7nHcAR-BGQjqAwZfXoE,840
|
|
29
|
-
epstein_files/util/word_count.py,sha256=rs-bsSMnGG1BnYUmxYuBLZ8X0-3-jJdaB03v1jOIq4g,9202
|
|
30
|
-
epstein_files-1.2.0.dist-info/LICENSE,sha256=OXLcl0T2SZ8Pmy2_dmlvKuetivmyPd5m1q-Gyd-zaYY,35149
|
|
31
|
-
epstein_files-1.2.0.dist-info/METADATA,sha256=ttXba8M6jt-gbb94ouqD95zOMdTosW8HSUfFJiDLFlI,6032
|
|
32
|
-
epstein_files-1.2.0.dist-info/WHEEL,sha256=d2fvjOD7sXsVzChCqf0Ty0JbHKBaLYwDbGQDwQTnJ50,88
|
|
33
|
-
epstein_files-1.2.0.dist-info/entry_points.txt,sha256=5qYgwAXpxegeAicD_rzda_trDRnUC51F5UVDpcZ7j6Q,240
|
|
34
|
-
epstein_files-1.2.0.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|