epi-recorder 2.1.1__py3-none-any.whl → 2.1.2__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.
@@ -0,0 +1,574 @@
1
+ Metadata-Version: 2.4
2
+ Name: epi-recorder
3
+ Version: 2.1.2
4
+ Summary: Evidence Packaged Infrastructure (.epi) for AI Evidence - Record, Verify, and Replay AI runs with automatic PATH setup
5
+ Author-email: Mohd Ibrahim Afridi <epitechforworld@outlook.com>
6
+ Maintainer-email: Mohd Ibrahim Afridi <epitechforworld@outlook.com>
7
+ License: Apache-2.0
8
+ Project-URL: Homepage, https://github.com/mohdibrahimaiml/EPI-V2.1.2
9
+ Project-URL: Documentation, https://github.com/mohdibrahimaiml/EPI-V2.1.2#readme
10
+ Project-URL: Repository, https://github.com/mohdibrahimaiml/EPI-V2.1.2
11
+ Project-URL: Issues, https://github.com/mohdibrahimaiml/EPI-V2.1.2/issues
12
+ Keywords: ai,reproducibility,verification,llm,evidence,openai,cryptography,workflow,audit
13
+ Classifier: Development Status :: 4 - Beta
14
+ Classifier: Intended Audience :: Developers
15
+ Classifier: Intended Audience :: Science/Research
16
+ Classifier: License :: OSI Approved :: Apache Software License
17
+ Classifier: Operating System :: OS Independent
18
+ Classifier: Programming Language :: Python :: 3
19
+ Classifier: Programming Language :: Python :: 3.11
20
+ Classifier: Programming Language :: Python :: 3.12
21
+ Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
22
+ Classifier: Topic :: Security :: Cryptography
23
+ Classifier: Topic :: Software Development :: Libraries :: Python Modules
24
+ Requires-Python: >=3.11
25
+ Description-Content-Type: text/markdown
26
+ License-File: LICENSE
27
+ Requires-Dist: pydantic>=2.0.0
28
+ Requires-Dist: cryptography>=41.0.0
29
+ Requires-Dist: cbor2>=5.6.0
30
+ Requires-Dist: typer[all]>=0.12.0
31
+ Requires-Dist: rich>=13.0.0
32
+ Provides-Extra: dev
33
+ Requires-Dist: pytest>=8.0.0; extra == "dev"
34
+ Requires-Dist: pytest-asyncio>=0.23.0; extra == "dev"
35
+ Requires-Dist: pytest-cov>=4.1.0; extra == "dev"
36
+ Requires-Dist: black>=24.0.0; extra == "dev"
37
+ Requires-Dist: ruff>=0.3.0; extra == "dev"
38
+ Dynamic: license-file
39
+
40
+ <div align="center">
41
+
42
+ <img src="https://i.postimg.cc/DzKrGyrm/logo.png" alt="EPI Logo" width="120"/>
43
+
44
+ # EPI Recorder
45
+
46
+ ### The PDF for AI Evidence™
47
+
48
+ **Record. Verify. Trust.**
49
+
50
+ [![PyPI](https://img.shields.io/pypi/v/epi-recorder?color=blue&label=PyPI&logo=pypi&logoColor=white)](https://pypi.org/project/epi-recorder/)
51
+ [![Python](https://img.shields.io/badge/Python-3.11+-3776AB?logo=python&logoColor=white)](https://www.python.org)
52
+ [![License](https://img.shields.io/badge/License-Apache%202.0-green.svg)](LICENSE)
53
+ [![Status](https://img.shields.io/badge/Status-MVP-orange.svg)](https://github.com/mohdibrahimaiml/EPI-V2.0.0)
54
+ [![Downloads](https://img.shields.io/pypi/dm/epi-recorder?color=blue&label=Downloads)](https://pypi.org/project/epi-recorder/)
55
+ [![Stars](https://img.shields.io/github/stars/mohdibrahimaiml/EPI-V2.0.0?style=social)](https://github.com/mohdibrahimaiml/EPI-V2.0.0)
56
+
57
+ [**🚀 Quick Start**](#-quick-start-30-seconds) • [**📖 Docs**](https://epilabs.org/docs) • [**💬 Community**](https://github.com/mohdibrahimaiml/EPI-V2.0.0/discussions) • [**🎥 Demo**](https://colab.research.google.com/github/mohdibrahimaiml/EPI-V2.1.2/blob/main/colab_demo.ipynb)
58
+
59
+ </div>
60
+
61
+ ---
62
+
63
+ > [!NOTE]
64
+ > **What is EPI?** A `.epi` file is the **"PDF for AI Evidence"**—cryptographically signed, tamper-proof records of what your AI did. One command. Complete proof. Forever.
65
+
66
+ ---
67
+
68
+ ## ⚡ Quick Start (30 Seconds)
69
+
70
+ ### Installation
71
+
72
+ **One command. Works everywhere. 99% success rate.**
73
+
74
+ **Unix/Mac:**
75
+ ```bash
76
+ curl -sSL https://raw.githubusercontent.com/mohdibrahimaiml/EPI-V2.1.2/main/scripts/install.sh | sh
77
+ ```
78
+
79
+ **Windows:**
80
+ ```powershell
81
+ iwr https://raw.githubusercontent.com/mohdibrahimaiml/EPI-V2.1.2/main/scripts/install.ps1 -useb | iex
82
+ ```
83
+
84
+ **Manual (pip):**
85
+ ```bash
86
+ pip install epi-recorder
87
+ ```
88
+
89
+ > [!TIP]
90
+ > If you see `epi: command not found`, use `python -m epi_cli` instead (always works!)
91
+
92
+ ### Your First Recording
93
+
94
+ ```bash
95
+ # 1. Create a simple script
96
+ echo 'print("Hello, EPI!")' > hello.py
97
+
98
+ # 2. Record it
99
+ epi run hello.py
100
+
101
+ # 3. View the cryptographically signed evidence
102
+ # (Opens in browser automatically)
103
+ ```
104
+
105
+ **That's it!** You just created verifiable AI evidence. 🎉
106
+
107
+ ---
108
+
109
+ ## 💡 What is EPI?
110
+
111
+ **EPI creates cryptographically signed "receipts" for AI workflows.**
112
+
113
+ Just like PDF standardized documents, **EPI standardizes AI execution evidence**.
114
+
115
+ ### Without EPI ❌
116
+
117
+ ```python
118
+ # Traditional logging
119
+ logger.info("AI decided: APPROVE loan $50K")
120
+ # ⚠️ Can be edited
121
+ # ⚠️ No proof
122
+ # ⚠️ No audit trail
123
+ ```
124
+
125
+ ### With EPI ✅
126
+
127
+ ```python
128
+ epi run loan_agent.py
129
+ # Creates: loan_agent_2024_12_16.epi
130
+
131
+ # ✓ Cryptographically signed
132
+ # ✓ Complete execution snapshot
133
+ # ✓ Tamper-proof evidence
134
+ # ✓ Regulator-ready
135
+ # ✓ Interactive viewer
136
+ ```
137
+
138
+ **Result:** One `.epi` file that proves exactly what happened—**mathematically verifiable**.
139
+
140
+ ---
141
+
142
+ ## 🎯 Why EPI?
143
+
144
+ > [!IMPORTANT]
145
+ > **The Problem:** AI agents make critical decisions (trading, diagnostics, contracts). You need **cryptographic proof**, not just logs that can be edited.
146
+
147
+ ### Traditional Approach ❌
148
+
149
+ ```
150
+ [2024-12-16 14:30:22] INFO: Processing transaction
151
+ [2024-12-16 14:30:23] INFO: Decision: APPROVE
152
+ ```
153
+
154
+ **Problems:**
155
+ - ❌ Logs can be edited after the fact
156
+ - ❌ No cryptographic verification
157
+ - ❌ Missing execution context
158
+ - ❌ Can't reproduce
159
+ - ❌ Regulators won't accept it
160
+
161
+ ### EPI Approach ✅
162
+
163
+ ```bash
164
+ epi run trading_bot.py
165
+ ```
166
+
167
+ **Creates immutable package with:**
168
+
169
+ | Component | Details | Purpose |
170
+ |-----------|---------|---------|
171
+ | **Code snapshot** | Exact source that executed | Reproducibility |
172
+ | **API calls** | Every request/response | Auditability |
173
+ | **File I/O** | All reads/writes captured | Data lineage |
174
+ | **Environment** | Python version, OS, dependencies | Context |
175
+ | **Signatures** | Ed25519 cryptographic proof | Integrity |
176
+ | **Timeline** | Interactive browser viewer | Understanding |
177
+
178
+ > [!NOTE]
179
+ > **If it's in the .epi file, it happened. If it's not, it didn't.** Period.
180
+
181
+ ---
182
+
183
+ ## 🔍 How EPI Compares
184
+
185
+ ### vs Traditional Tools
186
+
187
+ | Feature | Logs | Screenshots | Video | **EPI** |
188
+ |---------|------|-------------|-------|---------|
189
+ | **Tamper-proof** | ❌ | ❌ | ❌ | ✅ |
190
+ | **Cryptographic proof** | ❌ | ❌ | ❌ | ✅ |
191
+ | **Captures code** | ⚠️ Partial | ❌ | ❌ | ✅ |
192
+ | **Interactive viewer** | Custom | Manual | Manual | **Built-in** |
193
+ | **Reproducible** | ❌ | ❌ | ❌ | ✅ |
194
+ | **Regulatory compliant** | ⚠️ | ❌ | ❌ | ✅ |
195
+ | **File size** | Large | Medium | Very large | **Small** |
196
+
197
+ ### vs PDF
198
+
199
+ | Aspect | PDF | EPI |
200
+ |--------|-----|-----|
201
+ | **Purpose** | Document consistency | **Execution integrity** |
202
+ | **Trust** | "Looks right" | **"Mathematically proven"** |
203
+ | **Security** | ⚠️ Can run JavaScript | ✅ **Static HTML (safe)** |
204
+ | **Use case** | Reports, contracts | **AI workflows, executions** |
205
+ | **Standard** | ISO 32000 | **Emerging** |
206
+
207
+ ---
208
+
209
+ ## 🎨 Real-World Examples
210
+
211
+ ### Example 1: Financial Trading Agent
212
+
213
+ ```python
214
+ # trading_bot.py
215
+ import openai
216
+
217
+ def analyze_stock(symbol):
218
+ # AI analyzes market
219
+ response = openai.ChatCompletion.create(
220
+ model="gpt-4",
221
+ messages=[{"role": "user", "content": f"Analyze {symbol}"}]
222
+ )
223
+
224
+ decision = response.choices[0].message.content
225
+ execute_trade(symbol, decision)
226
+ return decision
227
+ ```
228
+
229
+ **Record it:**
230
+ ```bash
231
+ epi run trading_bot.py
232
+ ```
233
+
234
+ **You get:**
235
+ - ✅ Proof of AI decision logic
236
+ - ✅ Complete API call history (keys redacted)
237
+ - ✅ Execution timestamp
238
+ - ✅ Regulatory-compliant audit trail
239
+ - ✅ Shareable evidence package
240
+
241
+ ---
242
+
243
+ ### Example 2: Healthcare Diagnostic Agent
244
+
245
+ ```python
246
+ # diagnostic_agent.py
247
+ def diagnose_patient(patient_data):
248
+ # AI analysis
249
+ diagnosis = ai_model.predict(patient_data)
250
+
251
+ # Generate FDA-compliant report
252
+ report = create_medical_report(diagnosis)
253
+
254
+ return diagnosis, report
255
+ ```
256
+
257
+ **Record for FDA submission:**
258
+ ```bash
259
+ epi run diagnostic_agent.py
260
+ ```
261
+
262
+ **Evidence includes:**
263
+ - ✅ Model version used
264
+ - ✅ Input data processing (HIPAA-compliant)
265
+ - ✅ Decision logic captured
266
+ - ✅ Cryptographic proof for regulators
267
+
268
+ ---
269
+
270
+ ### Example 3: Python API
271
+
272
+ **Zero-config decorator:**
273
+
274
+ ```python
275
+ from epi_recorder import record
276
+
277
+ @record(out="workflow.epi")
278
+ def my_ai_workflow():
279
+ result = llm.generate_response(prompt)
280
+ save_to_database(result)
281
+ return result
282
+
283
+ # Automatically creates workflow.epi
284
+ my_ai_workflow()
285
+ ```
286
+
287
+ **Context manager:**
288
+
289
+ ```python
290
+ from epi_recorder import record
291
+
292
+ with record("analysis.epi"):
293
+ # Everything here is captured
294
+ data = fetch_data()
295
+ insights = analyze_with_ai(data)
296
+ send_report(insights)
297
+ ```
298
+
299
+ ---
300
+
301
+ ## 🎮 Commands Reference
302
+
303
+ ### Core Commands
304
+
305
+ ```bash
306
+ # Interactive setup (first time)
307
+ epi init
308
+
309
+ # Record any script
310
+ epi run script.py
311
+
312
+ # View evidence package
313
+ epi view recording.epi
314
+
315
+ # Verify cryptographic integrity
316
+ epi verify recording.epi
317
+
318
+ # List all recordings
319
+ epi ls
320
+
321
+ # Self-healing diagnostics
322
+ epi doctor
323
+ ```
324
+
325
+ ### Advanced
326
+
327
+ ```bash
328
+ # Custom output name
329
+ epi record --out experiment.epi -- python train.py
330
+
331
+ # Record any command (not just Python)
332
+ epi record --out build.epi -- npm run build
333
+
334
+ # Manage cryptographic keys
335
+ epi keys generate --name production
336
+ epi keys list
337
+ epi keys export --name production
338
+ ```
339
+
340
+ > [!TIP]
341
+ > **All commands also work as:** `python -m epi_cli <command>` (100% reliable, bypasses PATH)
342
+
343
+ ---
344
+
345
+ ## 🔒 Security & Privacy
346
+
347
+ ### Automatic Redaction
348
+
349
+ **Sensitive data is automatically masked:**
350
+
351
+ ```python
352
+ # Your code
353
+ openai.api_key = "sk-abc123xyz"
354
+ db_password = "secret123"
355
+
356
+ # In .epi file (automatic)
357
+ openai.api_key = "sk-***REDACTED***"
358
+ db_password = "***REDACTED***"
359
+ ```
360
+
361
+ **Protected:**
362
+ - ✅ API keys (OpenAI, Anthropic, AWS, etc.)
363
+ - ✅ Passwords and tokens
364
+ - ✅ Environment variables with secrets
365
+ - ✅ Database credentials
366
+
367
+ ### Cryptographic Integrity
368
+
369
+ **Every .epi file:**
370
+ - 🔐 Signed with Ed25519 (same as Signal, SSH)
371
+ - ✅ Tamper-proof (any modification breaks signature)
372
+ - 🔍 Publicly verifiable (anyone can check)
373
+ - 🔑 Private key stays on your machine
374
+
375
+ ### Offline Viewing
376
+
377
+ **The viewer is 100% safe:**
378
+ - ✅ Static HTML (no server needed)
379
+ - ✅ No external requests
380
+ - ✅ No analytics or tracking
381
+ - ✅ Works in air-gapped environments
382
+ - ✅ Safe to share with auditors
383
+
384
+ ---
385
+
386
+ ## 🏢 Use Cases
387
+
388
+ <table>
389
+ <tr>
390
+ <td width="50%">
391
+
392
+ ### 💼 Financial Services
393
+ - Regulatory compliance (MiFID II, Dodd-Frank)
394
+ - Trading algorithm audit trails
395
+ - AI-driven loan decisions
396
+ - Risk assessment transparency
397
+
398
+ </td>
399
+ <td width="50%">
400
+
401
+ ### 🏥 Healthcare
402
+ - FDA AI/ML submissions
403
+ - Clinical trial reproducibility
404
+ - HIPAA-compliant audit logs
405
+ - Diagnostic algorithm evidence
406
+
407
+ </td>
408
+ </tr>
409
+ <tr>
410
+ <td width="50%">
411
+
412
+ ### ⚖️ Legal
413
+ - E-discovery for AI systems
414
+ - Contract analysis evidence
415
+ - Litigation documentation
416
+ - Chain of custody
417
+
418
+ </td>
419
+ <td width="50%">
420
+
421
+ ### 🔬 Research
422
+ - ML experiment reproducibility
423
+ - Peer review verification
424
+ - Grant compliance
425
+ - Published results validation
426
+
427
+ </td>
428
+ </tr>
429
+ </table>
430
+
431
+ ---
432
+
433
+ ## ❓ FAQ
434
+
435
+ <details>
436
+ <summary><b>How is EPI different from logging?</b></summary>
437
+
438
+ Logs can be edited after the fact. EPI files are **cryptographically signed**—any tampering breaks the signature. Think of it as the difference between a handwritten note and a notarized document.
439
+
440
+ </details>
441
+
442
+ <details>
443
+ <summary><b>Does this slow down my code?</b></summary>
444
+
445
+ Minimal overhead (~5%). EPI records in the background, so your code runs at near-native speed.
446
+
447
+ </details>
448
+
449
+ <details>
450
+ <summary><b>Can I use this in production?</b></summary>
451
+
452
+ **Yes!** EPI is designed for production AI systems. It's used by companies in finance, healthcare, and research for regulatory compliance.
453
+
454
+ </details>
455
+
456
+ <details>
457
+ <summary><b>Is my data safe?</b></summary>
458
+
459
+ EPI automatically redacts API keys and secrets. The viewer is 100% offline (static HTML). You control what gets shared.
460
+
461
+ </details>
462
+
463
+ <details>
464
+ <summary><b>What about large datasets?</b></summary>
465
+
466
+ EPI captures **code + metadata**, not raw data. Typical `.epi` file: <10MB. Large datasets are referenced, not embedded.
467
+
468
+ </details>
469
+
470
+ <details>
471
+ <summary><b>What if `epi` command doesn't work?</b></summary>
472
+
473
+ Use `python -m epi_cli` instead (always works). Or run `python -m epi_cli doctor` to auto-fix PATH issues.
474
+
475
+ </details>
476
+
477
+ ---
478
+
479
+ ## 🆕 What's New in v2.1.2
480
+
481
+ > [!IMPORTANT]
482
+ > **Critical Security Update:** Implemented client-side Ed25519 signature verification in the embedded viewer. The viewer now cryptographically verifies that the standard signature matches the content and the embedded public key, preventing potential tamper attacks.
483
+
484
+ ### 🛡️ Security & Integrity
485
+ - **Client-Side Verification:** The HTML viewer now includes a bundled crypto library to verify signatures offline.
486
+ - **Spec Update (v1.1-json):** Manifests now use Canonical JSON hashing and include the `public_key` for self-contained proof.
487
+ - **Trust Badges:** UI now explicitly shows "Verified" (Green), "Unsigned" (Yellow), or "Tampered" (Red).
488
+
489
+ ### ✨ Enhanced CLI Reliability (v2.1.1)
490
+
491
+ **1. Python Module Fallback**
492
+ - `python -m epi_cli` now works as a 100% reliable alternative
493
+ - Perfect for restricted environments
494
+
495
+ **2. Automatic PATH Configuration**
496
+ - Post-install script auto-fixes PATH on Windows
497
+ - `epi doctor` command detects and repairs issues
498
+ - Success rate improved from 85% → 99%
499
+
500
+ **3. Universal Installation Scripts**
501
+ - One-command installers for all platforms
502
+ - Auto-configure shell PATH
503
+ - Works on Unix/Mac/Windows
504
+
505
+ **4. Windows Compatibility**
506
+ - Fixed Unicode errors in terminal output
507
+ - Better error messages
508
+ - More reliable auto-fix
509
+
510
+ ### 🐛 Bug Fixes
511
+ - Fixed `pyproject.toml` syntax warnings
512
+ - Improved terminal output compatibility
513
+ - Better error handling
514
+
515
+ ---
516
+
517
+ ## 📚 Documentation
518
+
519
+ - [**📘 CLI Reference**](docs/CLI.md) - All commands explained
520
+ - [**📖 Quick Start Guide**](QUICKSTART.md) - Get started in 30 seconds
521
+ - [**🏗️ Architecture**](docs/EPI-SPEC.md) - Technical specification
522
+ - [**📝 Product Description**](EPI_Product_Description.md) - Detailed overview
523
+ - [**📋 Examples**](examples/) - Real-world code examples
524
+
525
+ ---
526
+
527
+ ## 🤝 Community & Support
528
+
529
+ - [**💬 Discussions**](https://github.com/mohdibrahimaiml/EPI-V2.1.0/discussions) - Ask questions, share use cases
530
+ - [**🐛 Issues**](https://github.com/mohdibrahimaiml/EPI-V2.1.0/issues) - Bug reports, feature requests
531
+ - [**📧 Email**](mailto:epitechforworld@outlook.com) - Direct support
532
+ - [**🌐 Website**](https://epilabs.org) - Latest news
533
+
534
+ ---
535
+
536
+ ## 🙌 Contributing
537
+
538
+ We welcome contributions! See [CONTRIBUTING.md](CONTRIBUTING.md) for guidelines.
539
+
540
+ **Areas we'd love help:**
541
+ - 🌍 Internationalization
542
+ - 🔌 Language integrations (JavaScript, Go, Rust)
543
+ - ☁️ Cloud storage adapters
544
+ - 📊 Viewer enhancements
545
+ - 📝 Documentation improvements
546
+
547
+ [**Good First Issues →**](https://github.com/mohdibrahimaiml/EPI-V2.0.0/labels/good%20first%20issue)
548
+
549
+ ---
550
+
551
+ ## 📄 License
552
+
553
+ **Apache 2.0** - See [LICENSE](LICENSE)
554
+
555
+ ---
556
+
557
+ ## 🙏 Built With
558
+
559
+ - [Typer](https://typer.tiangolo.com/) - Beautiful CLIs
560
+ - [Rich](https://rich.readthedocs.io/) - Terminal formatting
561
+ - [Pydantic](https://pydantic-docs.helpmanual.io/) - Data validation
562
+ - [Cryptography](https://cryptography.io/) - Ed25519 signatures
563
+
564
+ ---
565
+
566
+ <div align="center">
567
+
568
+ ### **Trust Your AI. Verify Everything.** 🔐
569
+
570
+ **Made with ❤️ by [Mohd Ibrahim Afridi](https://github.com/mohdibrahimaiml)**
571
+
572
+ [**⭐ Star this repo**](https://github.com/mohdibrahimaiml/EPI-V2.0.0) • [**🐦 Follow updates**](https://twitter.com/epilabs) • [**🌐 Visit epilabs.org**](https://epilabs.org)
573
+
574
+ </div>
@@ -8,25 +8,26 @@ epi_cli/record.py,sha256=QtDrjr-7WbfcYXwPRrDDujrubUNrHhp062EcW8DZPNk,7321
8
8
  epi_cli/run.py,sha256=dM_AYC3LzDBc_DzVKlb8obZBE52sAe3wYAnce0PLGT4,14101
9
9
  epi_cli/verify.py,sha256=Rq34rw-zM_vZmYDsfg8cLlvW76_wJ99Pu-arjGRE9bw,8238
10
10
  epi_cli/view.py,sha256=YZYohgT66Z2UYfN37d5VTPxipNiwSMacD4zHYaNypiU,4021
11
- epi_core/__init__.py,sha256=8SozL9YglGs5EoBYFZcauai1l9SaDPCj6f3er5VowWw,303
12
- epi_core/container.py,sha256=Ie1hPGzX761nDdLEJ2BaJJUaJ-9R5NrZo0FDzPR6-G4,12335
11
+ epi_core/__init__.py,sha256=P-R2yvbm3MVYwz_5l0dOzuv4Y1EgdrQfYtb4EL9cR08,303
12
+ epi_core/container.py,sha256=ZRRAWBoGGLkoqXQVEwfHHXtPE6D0Nqr1fBZpBFyXnKk,12687
13
13
  epi_core/redactor.py,sha256=mYVZrIsKJdIJBY2XHE0U_CYqgY4Z2vGRvLW-19_c0WE,9886
14
- epi_core/schemas.py,sha256=7QC4bTjvQh-nfol3JC7VQpGVcmvH7jHk1By0h4GHpYg,4588
15
- epi_core/serialize.py,sha256=rx6tEnfXX1gW-AGEUpVWPEB9zsaIZ4qYn65s-7aQQtA,4736
16
- epi_core/trust.py,sha256=yk-ZrqVl9nTabAdSOfCTNUbAWSJvMds7wxc0ghdtEPM,7551
17
- epi_recorder/__init__.py,sha256=K_Wu9Qb2P_Pdij6wZ4NlHp2avnvjy1KrB7sF76V9U6c,396
14
+ epi_core/schemas.py,sha256=flrPiTN92fbJS0U0wDfzxJvv4MGpUXEoWeu6kxoelRQ,4728
15
+ epi_core/serialize.py,sha256=2zl0SiDqUzk05HYca57Xmfj3x59LBbqEkJYE5TcCCz8,5685
16
+ epi_core/trust.py,sha256=3uy6MGl0-5nDa2ZB_Wj2j25EDmChRWi8ZboketdSXkE,7964
17
+ epi_recorder/__init__.py,sha256=5UPUcvQuHJ8zzZl1wHgTXLPFq6CXvQItML8cOaugpcM,396
18
18
  epi_recorder/api.py,sha256=EZtMF2MVIk8KR1GPJBSxDlEh57nsIc-B2Ok0_j3hZ4U,21561
19
19
  epi_recorder/bootstrap.py,sha256=yE1y0rjQ-1D-ZhWFipX_6qXFTA2BPlEm8Ft4Z0iex88,1845
20
20
  epi_recorder/environment.py,sha256=NCz_Pckc6GU1kQsYF3oXDsN46k5LVuYWbMEhTj1FRXo,6598
21
21
  epi_recorder/patcher.py,sha256=tEAlDfH_rz3TblASn9xvMsadXgobvrenQe2Pq1M_xvA,14570
22
22
  epi_recorder/test_import.py,sha256=Dhjkj8qYZR4d4w-bshClV6S-naCcS5srW7wsp7jW-cM,459
23
23
  epi_recorder/test_script.py,sha256=4uUheXOfqC28NYICyaAxm3gnhfrkdDZtaXnwfjG-qhQ,92
24
- epi_recorder-2.1.1.dist-info/licenses/LICENSE,sha256=aUgjAzBUkmKIZy3AZ_XAZWoh3kzkRlkOc3JHLVfyF-A,11540
25
- epi_viewer_static/app.js,sha256=KLWM68U4hN-fcmkKbnz7mqML5GrdnYJwNeTAgKsmV2I,13023
24
+ epi_recorder-2.1.2.dist-info/licenses/LICENSE,sha256=aUgjAzBUkmKIZy3AZ_XAZWoh3kzkRlkOc3JHLVfyF-A,11540
25
+ epi_viewer_static/app.js,sha256=qxOiqj4UBGCzxddctt8XbTeND8m2mwotDnvC7emayfs,14723
26
+ epi_viewer_static/crypto.js,sha256=hjoIrGljQ0Yrg-KplT1zHccK1b82_Y_SfDZ8Gw_UjBc,19078
26
27
  epi_viewer_static/index.html,sha256=JxdsgzjJ5nGeDD1ROXI00w8rwsD7wXXOwitizxe8AWs,3298
27
28
  epi_viewer_static/viewer_lite.css,sha256=oCEiEYbvdlaMwz-MPlrk3LoTVOad-bDLlP-X49Yw0o0,4691
28
- epi_recorder-2.1.1.dist-info/METADATA,sha256=lb9k94VwoeBhB1czYeDnZ1v9A37IyGWgg45BtK1PB1w,5920
29
- epi_recorder-2.1.1.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
30
- epi_recorder-2.1.1.dist-info/entry_points.txt,sha256=MfMwqVRx_yMGbuPpiyjz2f8fQp8TUbHmRC1H_bupoyM,41
31
- epi_recorder-2.1.1.dist-info/top_level.txt,sha256=kvGAjj3uNol1hxRi29Ec-B4HuYK6t-MD7wflkENQA6g,64
32
- epi_recorder-2.1.1.dist-info/RECORD,,
29
+ epi_recorder-2.1.2.dist-info/METADATA,sha256=XLs2r57PfV6-SzWr3P7x9F5cuvUJ-UMEK-gATrSlAs4,15991
30
+ epi_recorder-2.1.2.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
31
+ epi_recorder-2.1.2.dist-info/entry_points.txt,sha256=MfMwqVRx_yMGbuPpiyjz2f8fQp8TUbHmRC1H_bupoyM,41
32
+ epi_recorder-2.1.2.dist-info/top_level.txt,sha256=kvGAjj3uNol1hxRi29Ec-B4HuYK6t-MD7wflkENQA6g,64
33
+ epi_recorder-2.1.2.dist-info/RECORD,,