PyDepGuard (Next): A gatekeeper dependency validator for Python scripts. Beta branch for new features
Project description
PyDepGuard: Python's first secure runtime attestation framework
Introduction
PyDepGuardNext is the beta package for PyDepGuard. PyDepGuardNext is a secure-by-default, stdlib-only runtime enforcement layer for Python scripts and modules. It performs:
- Runtime attestation
- Self-integrity validation
- Just-In-Time dependency resolution
- Environment hardening
- Tamper detection with kill-switches
- Full system fingerprinting
All before your code is allowed to run.
This is a runtime EDR when it needs to be and a developer godsend when used in a dev workflow.
Why should I use this?
Python is flexible. But flexibility invites abuse:
- Monkeypatching
- Supply chain injection
- Interpreter-level compromise
- CI/CD drift and environment hell
PyDepGuardNext neutralizes this.
It is:
- Immutable via MappingProxyType
- Self-aware: every module, function, and runtime behavior is tracked
- Forensic-ready: raises PyDepBullshitDetectionError with trace-free tamper logs, while giving you as the host deep introspection of what happened.
- Developer-friendly: turns off guard rails in dev mode
- Container-alternative: runs lighter and faster than Python-only Docker setups
How To Get It
pip install pydepguardnext
Once out of beta, this will be migrated over to
pydepguard
Requirements
- Python 3.11+ officially supported (built on 3.12). May work on 3.10 and earlier, but not guaranteed.
- Requires pip to be available in path (used for installation & validation).
That's it. No other dependencies.
Hardened Protections
PyDepGuardNext ships with several levels of protections. Many of these can be conditionally bypassed through environmental flags or in the terminal through options.
When PYDEP_HARDENED=1:
| Protection | Enabled |
|---|---|
| Function ID freeze | ✅ |
| Import hook sealing | ✅ |
| Socket/IO/Network blocking | ✅ |
ctypes blocking |
✅ |
| Venv fingerprinting | ✅ |
| Interpreter SHA-256 hash | ✅ |
| Background watchdog checks | ✅ |
| Trace debugger detection | ✅ |
| Mutable globals prevention | ✅ |
| Audit logging with UUIDs | ✅ |
| No traceback on detection | ✅ |
Tampering results in:
💀 PyDepBullshitDetectionError: Self-integrity check failed.
Incident ID: <uuid>
Linked traceback omitted intentionally.
Upcoming Features
- --daemon mode with HTTP API
- --prewarm to reduce first-run overhead
- Named pyproject.toml / --build support
- SBOM + --emit-sbom
- --mount and environmental monitoring
- Venv metadata server for ephemeral secrets
- Optional --seal-functions for child script lock-down
- CI/CD optimized strict exit codes
Trust and Verification
- All releases GPG signed (WIP)
- Interpreter and venv hashes checked at runtime
- Public key embedded for function signature validation (WIP)
- Audit log written for each detection: pydepguard_audit.log
- No 3rd party runtime deps. All functionality from Python's stdlib.
Current Capabilities
Currently, PyDepGuard can:
- Analyze and install missing dependencies on a script, EVEN if you don't have
requirements.txtor other package management files.- No requirements.txt? No problem. This isn't metadata guessing,
PyDepGuardreads your script with deep AST introspection and tells you exactly what’s needed.
- No requirements.txt? No problem. This isn't metadata guessing,
- Parse a Python script using
aststatic analysis and identify its direct dependencies, and transitive dependencies (and best effort on runtime dependencies). - Check if the dependencies are installed and if their installed versions match the versions specified in package management systems.
- Generate a lockfile that lists the script's dependencies along with a proto-SBOM, and file:line to know exactly when and where the imports came from.
- Automatically download missing dependencies based off of
astintrospection, catching as many import methods as I am capable of identifying. - Catches unbound symbol usage and informs the user of them as well as the file:line of the instance.
- Validate if all dependencies are present before running a script, failing with a non-zero exit code (CI Ready!)
- Execute the script only if all the dependencies are met.
New For PyDepGuardNext
| Control | Description |
|---|---|
block_ctypes() |
Disables ctypes.CDLL, windll, and similar memory-level accessors |
enable_sandbox_open() |
Replaces open() with a read-only, path-flattened wrapper |
disable_file_write() |
Disables open(..., 'w'), write(), truncate(), and more |
disable_network_access() |
Nukes socket.socket() by default |
disable_urllib_requests() |
Kills urllib.request.urlopen and related access |
disable_socket_access() |
Erases the socket module’s core methods |
patch_environment_to_venv() |
Clears PATH, flattens env, rewrites to use venv’s binary root |
prepare_fakeroot() |
Ensures process believes it’s sandboxed, mimicking minimal FS exposure |
MappingProxyType + _maximum_security_enabled |
Locks these states in-place permanently for that session |
Airjail
AirJail is PyDepGuard’s virtual cage. Its a userland-only execution sandbox that applies maximum environment lockdown, enforced entirely via Python's standard library.
It’s not a container. It’s not a VM. It’s not even a new process.
It’s the runtime you’re already in, weaponized against intrusion.
What makes it different?
| Feature | Airjail | Docker | Firejail | psandbox |
|---|---|---|---|---|
| Works in pure Python | ✅ | ❌ | ❌ | ❌ |
| No system privileges needed | ✅ | ❌ | ⚠️ | ❌ |
| Zero third-party deps | ✅ | ❌ | ❌ | ❌ |
| Tamper detection built-in | ✅ | ⚠️ | ❌ | ❌ |
| Full self-healing if tampered | ✅ | ❌ | ❌ | ❌ |
Immutable config via MappingProxyType |
✅ | ❌ | ❌ | ❌ |
Future iterations will include conditional blacklists and whitelists for socket, net, dep resolution, and file control, user-controlled alias maps, and more.
Can You Escape?
Only if:
- The host interpreter has been compromised (or replaced)
- You burn a zero-day in CPython itself
- You have pre-execution root access
- You defeat:
- Function ID verification
- Module fingerprinting
- Environment patching
- SHA-256 integrity chain
- Watchdog thread
- Process fingerprint validation
- And still somehow bypass MappingProxyType locks which are immutable
And even then? PyDepBullshitDetectionError fires and kills the interpreter with forensic zipping of venv for audit.
Safe from time=0
Updated 06/23/2025
Below is a real test output of PyDepGuard's init process:
Running pytest with args: ['-p', 'vscode_pytest', '--rootdir=c:\\Users\\[REDACTED]\\pylock\\pylock-dependency-lockfile', '--capture=no', 'c:\\Users\\[REDACTED]\\pylock\\pylock-dependency-lockfile\\tests\\test_pydepguard_init.py::test_init_validate_self']
============================= test session starts =============================
platform win32 -- Python 3.12.3, pytest-8.4.1, pluggy-1.6.0
rootdir: c:\Users\[REDACTED]\pylock\pylock-dependency-lockfile
configfile: pytest.ini
plugins: anyio-4.9.0, cov-6.2.1
collected 1 item
tests\test_pydepguard_init.py [INIT] [pydepguard] Integrity Check UUID: 6dcf6938-be91-47ca-8909-44aae63427b5
[INIT] [pydepguard] System fingerprint:
hostname: [REDACTED]
os: Windows
os_release: 11
os_version: 10.0.26100
arch: AMD64
platform: Windows-11-10.0.26100-SP0
user: [REDACTED]
python_version: 3.12.3
python_build: ('tags/v3.12.3:f6650f9', 'Apr 9 2024 14:05:25')
python_compiler: MSC v.1938 64 bit (AMD64)
python_abs_path: C:\Users\[REDACTED]\pylock\pylock-dependency-lockfile\.venv\Scripts\python.exe
python_interpreter_hash: 864530d708039551a2c672ddd65e5900fbc08b0981479679723a5b468f8082bc
executable: c:\Users\[REDACTED]\pylock\pylock-dependency-lockfile\.venv\Scripts\python.exe
cwd: c:\Users\[REDACTED]\pylock\pylock-dependency-lockfile
pydepguard_package: pydepguardnext
pydepguard_version: 2.0.1
[INIT] Fingerprint hash: d85fd8244a0f1811488ee0f7cbd9d21f1f3e6eab2659cd25076891fbeeb30dcf
[INIT] [pydepguard] Bullshit Detection System activating.
[INTEGRITY] [api.runtime.integrity] [6dcf6938-be91-47ca-8909-44aae63427b5] Absolute last moment of system not sealed at global time: 0.0409 seconds.
[INTEGRITY] [api.runtime.integrity] [6dcf6938-be91-47ca-8909-44aae63427b5] Runtime sealed in 0.000999 seconds.
[INTEGRITY] [api.runtime.integrity] [6dcf6938-be91-47ca-8909-44aae63427b5] Background integrity patrol started at 2025-06-24T01:01:33.507363+00:00 (Global time: 0.0419 seconds). Timedelta from JIT lock to watchdog activation: 0.001002 seconds.
[INTEGRITY] [api.runtime.integrity] [6dcf6938-be91-47ca-8909-44aae63427b5] WATCHDOG PROVISIONED: {'_background_integrity_patrol', '_background_rpng_check'}
[INTEGRITY] [api.runtime.integrity] [6dcf6938-be91-47ca-8909-44aae63427b5] WATCHDOG THREADS: [<Thread(IntegrityPatrolThread440d7b7c47c0a1472ae11cd9ea02fb1c, started daemon 7848)>, <Thread(IntegrityPatrolThreadaedb31b35c95184ee25084f554925d8d, initial daemon)>, <Thread(IntegrityPatrolThread09997b541d645a547a5fea93f05fb43e, initial daemon)>, <Thread(IntegrityPatrolThreadaf0dcd7866f8a3c779cbb66044e5cd7e, initial daemon)>]
[INIT] [pydepguard] [6dcf6938-be91-47ca-8909-44aae63427b5] Background integrity patrol started.
[INIT] [pydepguard] [6dcf6938-be91-47ca-8909-44aae63427b5] First check: 0.041911 seconds. JIT Integrity Check Snapshot: {'importer._patched_import': 2997836876512, 'importer._patched_importlib_import_module': 2997836876832, 'importer.AutoInstallFinder': 2997823404336, 'logit.logit': 2997836875552, 'airjail.maximum_security': 2997836879712, 'airjail.disable_socket_access': 2997836879232, 'airjail.disable_file_write': 2997836878912, 'airjail.disable_network_access': 2997836878752, 'airjail.disable_urllib_requests': 2997836879072, 'airjail.block_ctypes': 2997836294528, 'airjail.enable_sandbox_open': 2997836824256, 'airjail.patch_environment_to_venv': 2997836879552, 'airjail.prepare_fakeroot': 2997836879872, 'api.runtime.integrity.run_integrity_check': 2997836874752, 'api.runtime.integrity.jit_check': 2997836873952, 'api.runtime.integrity.get_rpng_check': 2997836874112, 'api.runtime.integrity._background_integrity_patrol': 2997836874432, 'api.runtime.integrity._background_rpng_check': 2997836874272, 'api.runtime.integrity.start_patrol': 2997836874592, 'global_.jit_check_uuid': '6dcf6938-be91-47ca-8909-44aae63427b5'}
[INIT] [pydepguard] [6dcf6938-be91-47ca-8909-44aae63427b5] ⚠ Using override hash: last 10: 0f932fddc8... (dev mode only)
[INIT] [pydepguard] [6dcf6938-be91-47ca-8909-44aae63427b5] Self-integrity check passed. Init complete. Total time: 0.235150 seconds.
.
============================== 1 passed in 0.32s ==============================
Unless you're able to get around all of my __init__ checks in <0.040s, you will be unable to take over runtime. By 0.035s, the PyDepGuard's already locked its id()s and function maps.
You have +/- 3ms between runtime temporal attestation and first integrity check. It'd probably be even faster if I didn't have all the print statements.
And if you've run something like pydepguardnext --run --hardened --script=evil.py, the script doesn't even get touched until PyDepGuard's init is done. You're already in my context, and PyDepGuard owns execution.
Why This Matters
Most security tools inspect from the outside in. PyDepGuard inspects from the inside out and locks the door behind itself. This is like SELinux or AppArmor, except:
- It’s thread-safe
- It’s drop-in
- It needs no kernel mods
- And it’s entirely built from the standard library
- Its FAST.
In a 1:1 test of running a persisted venv with full JIT resolution for dependencies, cold start with only 80 seconds for new_script.py in the repo, while warm start was sub 2s.
This is, if you account for the time to push, zip, wait for packaging, and then invocation, faster than AWS Lambda on cold start (3-5 minutes vs 80 seconds), and on par with AWS lambda for warm start (sub 2s). Proof at the bottom of the page.
I've brought you serverless workloads in local space.
I've gone as far as I absolutely can in userland. This is secure runtime execution all the way to the interpreter.
Anything you can do, I can do better
Most Python-only Docker containers exist just to manage deps. PyDepGuardNext makes them obsolete for secure, local, or CI/CD Python workloads. You can go from main.py to isolated, sandboxed execution without Docker, Dockerfile, or volume mapping.
| Feature / Tool | pydepguardnext |
Docker (Alpine) | AWS Lambda | PyOxidizer | firejail | PySec / Sandbox libs |
|---|---|---|---|---|---|---|
| Python stdlib-only | ✅ | ❌ | ❌ | ❌ | ❌ | ⚠️ (some) |
Blocks ctypes, sockets, urllib |
✅ | ❌ (needs config) | ❌ | ✅ (if compiled) | ✅ | ⚠️ (fragile) |
| Tamper detection | ✅ | ❌ | ❌ | ❌ | ❌ | ⚠️ (manual) |
| Integrity hash of environment | ✅ | ❌ | ❌ | ✅ (build-time) | ❌ | ❌ |
| JIT dependency resolution | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ |
| Blocks file read/write (opt-in) | ✅ | ⚠️ | ❌ | ✅ | ✅ | ⚠️ |
| No container / no daemon | ✅ | ❌ | ❌ | ✅ | ❌ | ✅ |
Immutable runtime state (MappingProxyType) |
✅ | ❌ | ❌ | ✅ (compiled) | ❌ | ❌ |
| Fast cold start after warm cache | ✅ (~2s) | ❌ (5–20s+) | ⚠️ (1–3s) | ✅ | ⚠️ | ✅ |
| Runtime self-healing | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ |
| Background watchdog | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ |
| Runtime attestation to interpreter | ✅ | ❌ | ❌ | ✅ (build only) | ❌ | ❌ |
| ☁Daemon / server mode (planned) | ✅ | ❌ | ✅ | ❌ | ❌ | ❌ |
| Audit log on tamper / hash fail | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ |
| SBOM emission + forensic snapshot | ✅ (WIP) | ❌ | ❌ | ❌ | ❌ | ❌ |
| Can run fully offline (if deps provided) | ✅ | ✅ | ❌ | ✅ | ✅ | ✅ |
| Dev-friendly by default | ✅ | ⚠️ | ❌ | ❌ | ❌ | ❌ |
| Sealed runtime available (WIP) | ✅ | ❌ | ❌ | ✅ | ❌ | ❌ |
| Onboarding Time | ✅✅✅✅✅ | ⚠️ | ⚠️ | ❌ | ⚠️ | ❌ |
| Zero Trust Runtime | ✅ (Nobody else does this) | ❌ | ❌ | ❌ | ❌ | ❌ |
| Trusted Computing Base w/ Temporal Attestation | ✅ (Nobody else does this) | ❌ | ❌ | ❌ | ❌ | ❌ |
PyOxidizer requires compilation, loses introspection, and lacks runtime tamper detection.
AWS Lambda is cloud-only and can't self-patch.
This is no different than invoking python <script.py>, just in a secure venv.
What PyDepGuardNext Does That Nothing Else Does:
- ✅ Pure stdlib tamper detection & enforcement
- ✅ Runtime attestation in mutable language (Python!)
- ✅ Dev-friendly fallback behavior unless hardened
- ✅ Self-fingerprinting of interpreter and env
- ✅ Immutable global checkmaps via MappingProxyType
- ✅ Built-in audit log with minimal overhead
- ✅ Inline runtime sandboxing. No system calls, no root
- ✅ Watchdog patrols with randomized trigger intervals
- ✅ Zero-stacktrace exception design for hard-fails
- ✅ Detection-resistant runtime trapdoor closures
- ✅ Can serve as a serverless drop-in or mini-EDR
- ✅ Easier than Docker for pure Python workloads
- ✅ Full TCB from the interpreter with temporal attestation and blockage against time-travel attacks.
Let me just repeat that: This is Zero Trust Runtime Attestation, in an interpreted, mutable language.
Future Plans
- Emit pyproject.toml snippets for updated dependency mapping
- Metadata server for timeboxed secret storage
- Syslog and HTTP handlers for audit streaming
- Daemon server for development (POST to /run, get back stdout, stderr, deps_found, updated_map)
Dependency Management Hell?
| Feature / Tool | pydepguardnext |
pip | poetry | pipenv | pdm | conda |
|---|---|---|---|---|---|---|
| Installs Python deps | ✅ (JIT + secure) | ✅ | ✅ | ✅ | ✅ | ✅ |
| Lockfile support | ✅ (planned .pydeplock) | ❌ | ✅ | ✅ | ✅ | ✅ |
| Runtime dep resolution (not install-time only) | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ |
| Runtime tamper detection | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ |
| Self-integrity attestation | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ |
| Blocks ctypes/network/file primitives | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ |
| Secure runtime context | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ |
| Environment forensics (venv hashmap & zip) | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ |
| SBOM output (planned and in active development) | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ |
| Cold start optimizations | ✅ (prewarm, AST) | ❌ | ❌ | ❌ | ❌ | ❌ |
| Python stdlib-only | ✅ | ✅ | ❌ | ❌ | ❌ | ❌ |
| Zero third-party dependency | ✅ | ✅ | ❌ | ❌ | ❌ | ❌ |
| Daemon / service runner (planned) | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ |
| Lambda-style ephemeral execution of scripts | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ |
| Blocks untrusted package execution | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ |
| Capable of LIVE-PATCHING deps in without restarting script context | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ |
To my knowledge (and I have looked) is no package manager or runtime I have ever seen in Python that can heal and inject imports without losing script context. In all honesty, I haven't seen one that does JIT dependency retrieval.
Mine can.
I catch import related errors before they blow the stack, live retrieving them from pip. This includes RUNTIME dependencies (such as pandas -> openpyxl).
No other tool that I've seen in Python can make that claim. If it exists, please provide a link or create an issue so I can benchmark against a worthy opponent.
Troubleshooting
If something breaks or doesn’t behave as expected, please file an issue with:
- Script snippet
- Your environment info
- Any lockfiles you generated
I'll do my best to fix it or help you debug.
Support Statement
Please respect the fact that I am one developer and do not have an SLA. All fixes I provide are best effort and provided as-is. If you like what I do, support me so I can make more.
Telemetry
PyDepGuard does not emit telemetry to me, ever. I have a very strong view on privacy and want to give my users the respect they deserve.
For full transparency, here's what I have access to as a dev:
- I can see who stars my repo. It makes me feel special 💟
- I can see aggregated results of who clicks on my repo and clones / reads contents therein
- I am able to monitor download stats by pypistats
- If I ever setup a bucket for improved resolution of aliased dependencies, I would be able to get aggregated access statistics.
This telemetry is setup by the provider (GitHub / Cloud Vendors) and is not configurable by me.
Thank You
Thank you for checking my project out. What began as a fist-shaking dev dealing with ImportErrors has led to a project I have a real passion in and that I am proud to do. If you like what I'm working on and believe in my project, please sponsor and/or star the repo. Share it with others, if you think it would help them.
Future Goodies
Roadmap Features (Coming in v4)
- Comment-parsable headers (
# __pydepguard__.install) for embedded safe bootstrap - --install + --autofix to self-resolve and restart scripts
- venv environment autobuild (done)
- --teardown to remove any temp-installed packages or nuke the venv (done)
- --no-net to sandbox script execution without sockets (done)
- --freeze / --emit to auto-generate requirements.txt, pyproject.toml, and
__pydepguard__.installblocks (WIP) - build tools for package maintainers who want one-click dep protection on their projects. (WIP)
Feedback and Feature Requests
I am always open to feedback and suggestions. If you have ideas for new features or improvements, feel free to share them. However, please note that the decision to implement any proposed changes will be made at my discretion.
Stay tuned for updates as PyLock continues to evolve and improve!
Timing Proof
With full checks in play, this is the speed at which pydepguard works. For clarity, I've marked the end of the first run with ---END RUN 1---, as this is from the default audit log.
[INFO] [api.runtime.airjail] [41868929-d9f1-4e4f-b0c8-7095d8783e6e] Prepared fakeroot at C:\Users\[redacted]\AppData\Local\Temp\tmpsyjt5by5\fakeroot_run_persist
[INFO] [api.runtime.pydep_lambda.create_lambda_venv] [41868929-d9f1-4e4f-b0c8-7095d8783e6e] Creating venv at C:\Users\[redacted]\AppData\Local\Temp\tmpsyjt5by5\fakeroot_run_persist\venv
[INFO] [api.runtime.pydep_lambda.create_lambda_venv] [41868929-d9f1-4e4f-b0c8-7095d8783e6e] Installing pydepguard into venv
[INFO] [api.runtime.pydep_lambda.create_lambda_venv] [41868929-d9f1-4e4f-b0c8-7095d8783e6e] Installed pydepguard in 7.10 seconds
[INFO] [api.runtime.pydep_lambda.launch_lambda_runtime] [41868929-d9f1-4e4f-b0c8-7095d8783e6e] Launching script at C:\Users\[redacted]\AppData\Local\Temp\tmpsyjt5by5\fakeroot_run_persist\app\main.py
[INFO] [__main__.main] [43b1f731-c936-459d-ac86-4faf14b335cb] Preparing to run script
[INFO] [__main__.main] [43b1f731-c936-459d-ac86-4faf14b335cb] Running with repair logic enabled
[INFO] [api.runtime.guard.run_with_repair] [43b1f731-c936-459d-ac86-4faf14b335cb] PyDepGuard self-healing guard started at 2025-06-22 17:38:15
[INFO] [api.runtime.guard.run_with_repair] [43b1f731-c936-459d-ac86-4faf14b335cb] Running script with self-healing logic: C:\Users\[redacted]\AppData\Local\Temp\tmpsyjt5by5\fakeroot_run_persist\app\main.py
[INFO] [api.runtime.guard.run_with_repair] [43b1f731-c936-459d-ac86-4faf14b335cb] Execution attempt 1/5
[WARNING] [api.runtime.importer._patched_import] [43b1f731-c936-459d-ac86-4faf14b335cb] [patched_import] Caught ImportError for requests, attempting auto-install at 0.011511564254760742 seconds
[INFO] [api.runtime.importer._package_exists] [43b1f731-c936-459d-ac86-4faf14b335cb] Time taken to check package requests: 0.13 seconds
[INFO] [api.runtime.importer._patched_import] [43b1f731-c936-459d-ac86-4faf14b335cb] __import__ fallback: attempting to install requests
[INFO] [api.runtime.importer._patched_import] [43b1f731-c936-459d-ac86-4faf14b335cb] Installing requests ...
[INFO] [api.runtime.importer._patched_import] [43b1f731-c936-459d-ac86-4faf14b335cb] Installed requests successfully in 2.53 seconds
[WARNING] [api.runtime.importer._patched_import] [43b1f731-c936-459d-ac86-4faf14b335cb] [patched_import] Caught ImportError for brotlicffi, attempting auto-install at 2.7020657062530518 seconds
[INFO] [api.runtime.importer._package_exists] [43b1f731-c936-459d-ac86-4faf14b335cb] Time taken to check package brotlicffi: 0.11 seconds
[INFO] [api.runtime.importer._patched_import] [43b1f731-c936-459d-ac86-4faf14b335cb] __import__ fallback: attempting to install brotlicffi
[INFO] [api.runtime.importer._patched_import] [43b1f731-c936-459d-ac86-4faf14b335cb] Installing brotlicffi ...
[INFO] [api.runtime.importer._patched_import] [43b1f731-c936-459d-ac86-4faf14b335cb] Installed brotlicffi successfully in 1.84 seconds
[WARNING] [api.runtime.importer._patched_import] [43b1f731-c936-459d-ac86-4faf14b335cb] [patched_import] Caught ImportError for compression, attempting auto-install at 4.70540714263916 seconds
[WARNING] [api.runtime.importer._patched_import] [43b1f731-c936-459d-ac86-4faf14b335cb] [patched_import] Caught ImportError for zstandard, attempting auto-install at 4.706412315368652 seconds
[INFO] [api.runtime.importer._package_exists] [43b1f731-c936-459d-ac86-4faf14b335cb] Time taken to check package zstandard: 0.10 seconds
[INFO] [api.runtime.importer._patched_import] [43b1f731-c936-459d-ac86-4faf14b335cb] __import__ fallback: attempting to install zstandard
[INFO] [api.runtime.importer._patched_import] [43b1f731-c936-459d-ac86-4faf14b335cb] Installing zstandard ...
[INFO] [api.runtime.importer._patched_import] [43b1f731-c936-459d-ac86-4faf14b335cb] Installed zstandard successfully in 1.23 seconds
[WARNING] [api.runtime.importer._patched_import] [43b1f731-c936-459d-ac86-4faf14b335cb] [patched_import] Caught ImportError for compression, attempting auto-install at 6.089024066925049 seconds
[INFO] [api.runtime.importer._patched_importlib_import_module] [43b1f731-c936-459d-ac86-4faf14b335cb] [patched_import_module] Caught ImportError for chardet, attempting auto-install at 6.092024087905884 seconds
[INFO] [api.runtime.importer._package_exists] [43b1f731-c936-459d-ac86-4faf14b335cb] Time taken to check package chardet: 0.11 seconds
[INFO] [api.runtime.importer._patched_importlib_import_module] [43b1f731-c936-459d-ac86-4faf14b335cb] Auto-installing missing dependency: chardet
[INFO] [api.runtime.importer._patched_importlib_import_module] [43b1f731-c936-459d-ac86-4faf14b335cb] Installing chardet ...
[INFO] [api.runtime.importer._patched_importlib_import_module] [43b1f731-c936-459d-ac86-4faf14b335cb] Installed chardet in 1.60 seconds
[WARNING] [api.runtime.importer._patched_import] [43b1f731-c936-459d-ac86-4faf14b335cb] [patched_import] Caught ImportError for simplejson, attempting auto-install at 7.824568271636963 seconds
[INFO] [api.runtime.importer._package_exists] [43b1f731-c936-459d-ac86-4faf14b335cb] Time taken to check package simplejson: 0.11 seconds
[INFO] [api.runtime.importer._patched_import] [43b1f731-c936-459d-ac86-4faf14b335cb] __import__ fallback: attempting to install simplejson
[INFO] [api.runtime.importer._patched_import] [43b1f731-c936-459d-ac86-4faf14b335cb] Installing simplejson ...
[INFO] [api.runtime.importer._patched_import] [43b1f731-c936-459d-ac86-4faf14b335cb] Installed simplejson successfully in 1.50 seconds
[WARNING] [api.runtime.importer._patched_import] [43b1f731-c936-459d-ac86-4faf14b335cb] [patched_import] Caught ImportError for socks, attempting auto-install at 9.5393967628479 seconds
[INFO] [api.runtime.importer._package_exists] [43b1f731-c936-459d-ac86-4faf14b335cb] Time taken to check package socks: 0.10 seconds
[INFO] [api.runtime.importer._patched_import] [43b1f731-c936-459d-ac86-4faf14b335cb] __import__ fallback: attempting to install socks
[INFO] [api.runtime.importer._patched_import] [43b1f731-c936-459d-ac86-4faf14b335cb] Installing socks ...
[INFO] [api.runtime.importer._patched_import] [43b1f731-c936-459d-ac86-4faf14b335cb] Installed socks successfully in 1.05 seconds
[WARNING] [api.runtime.importer._patched_import] [43b1f731-c936-459d-ac86-4faf14b335cb] [patched_import] Caught ImportError for urllib3.contrib.socks, attempting auto-install at 10.724560737609863 seconds
[INFO] [api.runtime.importer._package_exists] [43b1f731-c936-459d-ac86-4faf14b335cb] Time taken to check package urllib3: 0.11 seconds
[INFO] [api.runtime.importer._patched_import] [43b1f731-c936-459d-ac86-4faf14b335cb] __import__ fallback: attempting to install urllib3
[INFO] [api.runtime.importer._patched_import] [43b1f731-c936-459d-ac86-4faf14b335cb] Installing urllib3 ...
[INFO] [api.runtime.importer._patched_import] [43b1f731-c936-459d-ac86-4faf14b335cb] Installed urllib3 successfully in 0.62 seconds
[WARNING] [api.runtime.importer._patched_import] [43b1f731-c936-459d-ac86-4faf14b335cb] [patched_import] Caught ImportError for socks, attempting auto-install at 11.474017858505249 seconds
[INFO] [api.runtime.importer._package_exists] [43b1f731-c936-459d-ac86-4faf14b335cb] Time taken to check package socks: 0.12 seconds
[INFO] [api.runtime.importer._patched_import] [43b1f731-c936-459d-ac86-4faf14b335cb] __import__ fallback: attempting to install socks
[INFO] [api.runtime.importer._patched_import] [43b1f731-c936-459d-ac86-4faf14b335cb] Installing socks ...
[INFO] [api.runtime.importer._patched_import] [43b1f731-c936-459d-ac86-4faf14b335cb] Installed socks successfully in 0.61 seconds
[WARNING] [api.runtime.importer._patched_import] [43b1f731-c936-459d-ac86-4faf14b335cb] [patched_import] Caught ImportError for pandas, attempting auto-install at 12.46324110031128 seconds
[INFO] [api.runtime.importer._package_exists] [43b1f731-c936-459d-ac86-4faf14b335cb] Time taken to check package pandas: 0.15 seconds
[INFO] [api.runtime.importer._patched_import] [43b1f731-c936-459d-ac86-4faf14b335cb] __import__ fallback: attempting to install pandas
[INFO] [api.runtime.importer._patched_import] [43b1f731-c936-459d-ac86-4faf14b335cb] Installing pandas ...
[INFO] [api.runtime.importer._patched_import] [43b1f731-c936-459d-ac86-4faf14b335cb] Installed pandas successfully in 22.68 seconds
[WARNING] [api.runtime.importer._patched_import] [43b1f731-c936-459d-ac86-4faf14b335cb] [patched_import] Caught ImportError for pyarrow, attempting auto-install at 35.6969096660614 seconds
[INFO] [api.runtime.importer._package_exists] [43b1f731-c936-459d-ac86-4faf14b335cb] Time taken to check package pyarrow: 0.15 seconds
[INFO] [api.runtime.importer._patched_import] [43b1f731-c936-459d-ac86-4faf14b335cb] __import__ fallback: attempting to install pyarrow
[INFO] [api.runtime.importer._patched_import] [43b1f731-c936-459d-ac86-4faf14b335cb] Installing pyarrow ...
[INFO] [api.runtime.importer._patched_import] [43b1f731-c936-459d-ac86-4faf14b335cb] Installed pyarrow successfully in 3.42 seconds
[WARNING] [api.runtime.importer._patched_import] [43b1f731-c936-459d-ac86-4faf14b335cb] [patched_import] Caught ImportError for backports_abc, attempting auto-install at 39.58685755729675 seconds
[INFO] [api.runtime.importer._package_exists] [43b1f731-c936-459d-ac86-4faf14b335cb] Time taken to check package backports_abc: 0.12 seconds
[INFO] [api.runtime.importer._patched_import] [43b1f731-c936-459d-ac86-4faf14b335cb] __import__ fallback: attempting to install backports_abc
[INFO] [api.runtime.importer._patched_import] [43b1f731-c936-459d-ac86-4faf14b335cb] Installing backports_abc ...
[INFO] [api.runtime.importer._patched_import] [43b1f731-c936-459d-ac86-4faf14b335cb] Installed backports_abc successfully in 1.18 seconds
[INFO] [api.runtime.importer._patched_importlib_import_module] [43b1f731-c936-459d-ac86-4faf14b335cb] [patched_import_module] Caught ImportError for numexpr, attempting auto-install at 41.68541622161865 seconds
[INFO] [api.runtime.importer._package_exists] [43b1f731-c936-459d-ac86-4faf14b335cb] Time taken to check package numexpr: 0.11 seconds
[INFO] [api.runtime.importer._patched_importlib_import_module] [43b1f731-c936-459d-ac86-4faf14b335cb] Auto-installing missing dependency: numexpr
[INFO] [api.runtime.importer._patched_importlib_import_module] [43b1f731-c936-459d-ac86-4faf14b335cb] Installing numexpr ...
[INFO] [api.runtime.importer._patched_importlib_import_module] [43b1f731-c936-459d-ac86-4faf14b335cb] Installed numexpr in 1.34 seconds
[INFO] [api.runtime.importer._patched_importlib_import_module] [43b1f731-c936-459d-ac86-4faf14b335cb] [patched_import_module] Caught ImportError for bottleneck, attempting auto-install at 43.178868532180786 seconds
[INFO] [api.runtime.importer._package_exists] [43b1f731-c936-459d-ac86-4faf14b335cb] Time taken to check package bottleneck: 0.11 seconds
[INFO] [api.runtime.importer._patched_importlib_import_module] [43b1f731-c936-459d-ac86-4faf14b335cb] Auto-installing missing dependency: bottleneck
[INFO] [api.runtime.importer._patched_importlib_import_module] [43b1f731-c936-459d-ac86-4faf14b335cb] Installing bottleneck ...
[INFO] [api.runtime.importer._patched_importlib_import_module] [43b1f731-c936-459d-ac86-4faf14b335cb] Installed bottleneck in 1.43 seconds
[WARNING] [api.runtime.importer._patched_import] [43b1f731-c936-459d-ac86-4faf14b335cb] [patched_import] Caught ImportError for pwd, attempting auto-install at 45.04818153381348 seconds
[WARNING] [api.runtime.importer._patched_import] [43b1f731-c936-459d-ac86-4faf14b335cb] [patched_import] Caught ImportError for grp, attempting auto-install at 45.04818153381348 seconds
[WARNING] [api.runtime.importer._patched_import] [43b1f731-c936-459d-ac86-4faf14b335cb] [patched_import] Caught ImportError for sqlalchemy, attempting auto-install at 45.27102851867676 seconds
[INFO] [api.runtime.importer._package_exists] [43b1f731-c936-459d-ac86-4faf14b335cb] Time taken to check package sqlalchemy: 0.12 seconds
[INFO] [api.runtime.importer._patched_import] [43b1f731-c936-459d-ac86-4faf14b335cb] __import__ fallback: attempting to install sqlalchemy
[INFO] [api.runtime.importer._patched_import] [43b1f731-c936-459d-ac86-4faf14b335cb] Installing sqlalchemy ...
[INFO] [api.runtime.importer._patched_import] [43b1f731-c936-459d-ac86-4faf14b335cb] Installed sqlalchemy successfully in 5.73 seconds
[WARNING] [api.runtime.importer._patched_import] [43b1f731-c936-459d-ac86-4faf14b335cb] [patched_import] Caught ImportError for yaml, attempting auto-install at 51.44385361671448 seconds
[INFO] [api.runtime.importer._package_exists] [43b1f731-c936-459d-ac86-4faf14b335cb] Time taken to check package pyyaml: 0.10 seconds
[INFO] [api.runtime.importer._patched_import] [43b1f731-c936-459d-ac86-4faf14b335cb] __import__ fallback: attempting to install pyyaml
[INFO] [api.runtime.importer._patched_import] [43b1f731-c936-459d-ac86-4faf14b335cb] Installing pyyaml ...
[INFO] [api.runtime.importer._patched_import] [43b1f731-c936-459d-ac86-4faf14b335cb] Installed pyyaml successfully in 1.41 seconds
[WARNING] [api.runtime.importer._patched_import] [43b1f731-c936-459d-ac86-4faf14b335cb] [patched_import] Caught ImportError for fastapi, attempting auto-install at 53.01959681510925 seconds
[INFO] [api.runtime.importer._package_exists] [43b1f731-c936-459d-ac86-4faf14b335cb] Time taken to check package fastapi: 0.11 seconds
[INFO] [api.runtime.importer._patched_import] [43b1f731-c936-459d-ac86-4faf14b335cb] __import__ fallback: attempting to install fastapi
[INFO] [api.runtime.importer._patched_import] [43b1f731-c936-459d-ac86-4faf14b335cb] Installing fastapi ...
[INFO] [api.runtime.importer._patched_import] [43b1f731-c936-459d-ac86-4faf14b335cb] Installed fastapi successfully in 5.49 seconds
[WARNING] [api.runtime.importer._patched_import] [43b1f731-c936-459d-ac86-4faf14b335cb] [patched_import] Caught ImportError for email_validator, attempting auto-install at 58.95998167991638 seconds
[INFO] [api.runtime.importer._package_exists] [43b1f731-c936-459d-ac86-4faf14b335cb] Time taken to check package email_validator: 0.11 seconds
[INFO] [api.runtime.importer._patched_import] [43b1f731-c936-459d-ac86-4faf14b335cb] __import__ fallback: attempting to install email_validator
[INFO] [api.runtime.importer._patched_import] [43b1f731-c936-459d-ac86-4faf14b335cb] Installing email_validator ...
[INFO] [api.runtime.importer._patched_import] [43b1f731-c936-459d-ac86-4faf14b335cb] Installed email_validator successfully in 2.63 seconds
[WARNING] [api.runtime.importer._patched_import] [43b1f731-c936-459d-ac86-4faf14b335cb] [patched_import] Caught ImportError for python_multipart, attempting auto-install at 61.8818633556366 seconds
[INFO] [api.runtime.importer._package_exists] [43b1f731-c936-459d-ac86-4faf14b335cb] Time taken to check package python_multipart: 0.11 seconds
[INFO] [api.runtime.importer._patched_import] [43b1f731-c936-459d-ac86-4faf14b335cb] __import__ fallback: attempting to install python_multipart
[INFO] [api.runtime.importer._patched_import] [43b1f731-c936-459d-ac86-4faf14b335cb] Installing python_multipart ...
[INFO] [api.runtime.importer._patched_import] [43b1f731-c936-459d-ac86-4faf14b335cb] Installed python_multipart successfully in 1.34 seconds
[WARNING] [api.runtime.importer._patched_import] [43b1f731-c936-459d-ac86-4faf14b335cb] [patched_import] Caught ImportError for ujson, attempting auto-install at 63.40676712989807 seconds
[INFO] [api.runtime.importer._package_exists] [43b1f731-c936-459d-ac86-4faf14b335cb] Time taken to check package ujson: 0.10 seconds
[INFO] [api.runtime.importer._patched_import] [43b1f731-c936-459d-ac86-4faf14b335cb] __import__ fallback: attempting to install ujson
[INFO] [api.runtime.importer._patched_import] [43b1f731-c936-459d-ac86-4faf14b335cb] Installing ujson ...
[INFO] [api.runtime.importer._patched_import] [43b1f731-c936-459d-ac86-4faf14b335cb] Installed ujson successfully in 1.37 seconds
[WARNING] [api.runtime.importer._patched_import] [43b1f731-c936-459d-ac86-4faf14b335cb] [patched_import] Caught ImportError for orjson, attempting auto-install at 64.93431234359741 seconds
[INFO] [api.runtime.importer._package_exists] [43b1f731-c936-459d-ac86-4faf14b335cb] Time taken to check package orjson: 0.11 seconds
[INFO] [api.runtime.importer._patched_import] [43b1f731-c936-459d-ac86-4faf14b335cb] __import__ fallback: attempting to install orjson
[INFO] [api.runtime.importer._patched_import] [43b1f731-c936-459d-ac86-4faf14b335cb] Installing orjson ...
[INFO] [api.runtime.importer._patched_import] [43b1f731-c936-459d-ac86-4faf14b335cb] Installed orjson successfully in 1.64 seconds
[INFO] [api.runtime.importer._patched_importlib_import_module] [43b1f731-c936-459d-ac86-4faf14b335cb] [patched_import_module] Caught ImportError for xlsxwriter, attempting auto-install at 66.75502562522888 seconds
[INFO] [api.runtime.importer._package_exists] [43b1f731-c936-459d-ac86-4faf14b335cb] Time taken to check package xlsxwriter: 0.13 seconds
[INFO] [api.runtime.importer._patched_importlib_import_module] [43b1f731-c936-459d-ac86-4faf14b335cb] Auto-installing missing dependency: xlsxwriter
[INFO] [api.runtime.importer._patched_importlib_import_module] [43b1f731-c936-459d-ac86-4faf14b335cb] Installing xlsxwriter ...
[INFO] [api.runtime.importer._patched_importlib_import_module] [43b1f731-c936-459d-ac86-4faf14b335cb] Installed xlsxwriter in 1.77 seconds
[INFO] [api.runtime.importer._patched_importlib_import_module] [43b1f731-c936-459d-ac86-4faf14b335cb] [patched_import_module] Caught ImportError for xlrd, attempting auto-install at 68.73273539543152 seconds
[INFO] [api.runtime.importer._package_exists] [43b1f731-c936-459d-ac86-4faf14b335cb] Time taken to check package xlrd: 0.14 seconds
[INFO] [api.runtime.importer._patched_importlib_import_module] [43b1f731-c936-459d-ac86-4faf14b335cb] Auto-installing missing dependency: xlrd
[INFO] [api.runtime.importer._patched_importlib_import_module] [43b1f731-c936-459d-ac86-4faf14b335cb] Installing xlrd ...
[INFO] [api.runtime.importer._patched_importlib_import_module] [43b1f731-c936-459d-ac86-4faf14b335cb] Installed xlrd in 1.58 seconds
[INFO] [api.runtime.importer._patched_importlib_import_module] [43b1f731-c936-459d-ac86-4faf14b335cb] [patched_import_module] Caught ImportError for openpyxl, attempting auto-install at 70.47107744216919 seconds
[INFO] [api.runtime.importer._package_exists] [43b1f731-c936-459d-ac86-4faf14b335cb] Time taken to check package openpyxl: 0.11 seconds
[INFO] [api.runtime.importer._patched_importlib_import_module] [43b1f731-c936-459d-ac86-4faf14b335cb] Auto-installing missing dependency: openpyxl
[INFO] [api.runtime.importer._patched_importlib_import_module] [43b1f731-c936-459d-ac86-4faf14b335cb] Installing openpyxl ...
[INFO] [api.runtime.importer._patched_importlib_import_module] [43b1f731-c936-459d-ac86-4faf14b335cb] Installed openpyxl in 2.64 seconds
[WARNING] [api.runtime.importer._patched_import] [43b1f731-c936-459d-ac86-4faf14b335cb] [patched_import] Caught ImportError for lxml.etree, attempting auto-install at 73.22483611106873 seconds
[INFO] [api.runtime.importer._package_exists] [43b1f731-c936-459d-ac86-4faf14b335cb] Time taken to check package lxml: 0.11 seconds
[INFO] [api.runtime.importer._patched_import] [43b1f731-c936-459d-ac86-4faf14b335cb] __import__ fallback: attempting to install lxml
[INFO] [api.runtime.importer._patched_import] [43b1f731-c936-459d-ac86-4faf14b335cb] Installing lxml ...
[INFO] [api.runtime.importer._patched_import] [43b1f731-c936-459d-ac86-4faf14b335cb] Installed lxml successfully in 1.92 seconds
[WARNING] [api.runtime.importer._patched_import] [43b1f731-c936-459d-ac86-4faf14b335cb] [patched_import] Caught ImportError for defusedxml, attempting auto-install at 75.34023261070251 seconds
[INFO] [api.runtime.importer._package_exists] [43b1f731-c936-459d-ac86-4faf14b335cb] Time taken to check package defusedxml: 0.11 seconds
[INFO] [api.runtime.importer._patched_import] [43b1f731-c936-459d-ac86-4faf14b335cb] __import__ fallback: attempting to install defusedxml
[INFO] [api.runtime.importer._patched_import] [43b1f731-c936-459d-ac86-4faf14b335cb] Installing defusedxml ...
[INFO] [api.runtime.importer._patched_import] [43b1f731-c936-459d-ac86-4faf14b335cb] Installed defusedxml successfully in 1.41 seconds
[WARNING] [api.runtime.importer._patched_import] [43b1f731-c936-459d-ac86-4faf14b335cb] [patched_import] Caught ImportError for _elementtree, attempting auto-install at 76.89493060112 seconds
[WARNING] [api.runtime.importer._patched_import] [43b1f731-c936-459d-ac86-4faf14b335cb] [patched_import] Caught ImportError for PIL, attempting auto-install at 76.9384617805481 seconds
[INFO] [api.runtime.importer._package_exists] [43b1f731-c936-459d-ac86-4faf14b335cb] Time taken to check package Pillow: 0.11 seconds
[INFO] [api.runtime.importer._patched_import] [43b1f731-c936-459d-ac86-4faf14b335cb] __import__ fallback: attempting to install Pillow
[INFO] [api.runtime.importer._patched_import] [43b1f731-c936-459d-ac86-4faf14b335cb] Installing Pillow ...
[INFO] [api.runtime.importer._patched_import] [43b1f731-c936-459d-ac86-4faf14b335cb] Installed Pillow successfully in 2.60 seconds
[WARNING] [api.runtime.importer._patched_import] [43b1f731-c936-459d-ac86-4faf14b335cb] [patched_import] Caught ImportError for tests, attempting auto-install at 79.80876636505127 seconds
[INFO] [api.runtime.guard.run_with_repair] [43b1f731-c936-459d-ac86-4faf14b335cb] Cache saved for C:\Users\[redacted]\AppData\Local\Temp\tmpsyjt5by5\fakeroot_run_persist\app\main.py with SHA ff1ca5524290914633402b5d64129301eaf6759236fac483a514cc69fd8cf61d
[INFO] [api.runtime.pydep_lambda.launch_lambda_runtime] [41868929-d9f1-4e4f-b0c8-7095d8783e6e] PyDepGuard lambda reported execution time in 80.54 seconds
[INFO] [api.runtime.pydep_lambda.create_lambda_venv] [41868929-d9f1-4e4f-b0c8-7095d8783e6e] Creating venv at C:\Users\[redacted]\AppData\Local\Temp\tmpsyjt5by5\fakeroot_run_persist\venv
[INFO] [api.runtime.pydep_lambda.create_lambda_venv] [41868929-d9f1-4e4f-b0c8-7095d8783e6e] Installing pydepguard into venv
[INFO] [api.runtime.pydep_lambda.create_lambda_venv] [41868929-d9f1-4e4f-b0c8-7095d8783e6e] pydepguardnext is already installed in the venv, skipping installation
[INFO] [api.runtime.pydep_lambda.launch_lambda_runtime] [41868929-d9f1-4e4f-b0c8-7095d8783e6e] Launching script at C:\Users\[redacted]\AppData\Local\Temp\tmpsyjt5by5\fakeroot_run_persist\app\main.py
---END RUN 1---
[INFO] [__main__.main] [a4c95bf7-8514-41e9-9894-dd4a1bbfb57a] Preparing to run script
[INFO] [__main__.main] [a4c95bf7-8514-41e9-9894-dd4a1bbfb57a] Running with repair logic enabled
[INFO] [api.runtime.guard.run_with_repair] [a4c95bf7-8514-41e9-9894-dd4a1bbfb57a] PyDepGuard self-healing guard started at 2025-06-22 17:39:38
[INFO] [api.runtime.guard.run_with_repair] [a4c95bf7-8514-41e9-9894-dd4a1bbfb57a] Running script with self-healing logic: C:\Users\[redacted]\AppData\Local\Temp\tmpsyjt5by5\fakeroot_run_persist\app\main.py
[INFO] [api.runtime.guard.run_with_repair] [a4c95bf7-8514-41e9-9894-dd4a1bbfb57a] Execution attempt 1/5
[INFO] [api.runtime.guard.load_cached_result] [a4c95bf7-8514-41e9-9894-dd4a1bbfb57a] Lockfile SHA256 matches, using cached result.
[INFO] [api.runtime.guard.load_cached_result] [a4c95bf7-8514-41e9-9894-dd4a1bbfb57a] JIT resolution not needed, using cached deps.
[INFO] [api.runtime.guard.run_with_repair] [a4c95bf7-8514-41e9-9894-dd4a1bbfb57a] Using cached result for C:\Users\[redacted]\AppData\Local\Temp\tmpsyjt5by5\fakeroot_run_persist\app\main.py
[INFO] [api.runtime.guard.run_with_repair] [a4c95bf7-8514-41e9-9894-dd4a1bbfb57a] Using cached lock data for C:\Users\[redacted]\AppData\Local\Temp\tmpsyjt5by5\fakeroot_run_persist\app\main.py
[INFO] [api.runtime.pydep_lambda.launch_lambda_runtime] [41868929-d9f1-4e4f-b0c8-7095d8783e6e] PyDepGuard lambda reported execution time in 2.06 seconds
back-to-top
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file pydepguardnext-2.0.2.tar.gz.
File metadata
- Download URL: pydepguardnext-2.0.2.tar.gz
- Upload date:
- Size: 63.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
3fbafd44e90a6e6dcafe07a3db0a9e42a6ad7721ef50003c58fa9add7b2b0d7e
|
|
| MD5 |
f85ba292f8485c66e0ffbe6c9b739630
|
|
| BLAKE2b-256 |
687802578dc22eafe433847a626e68b2334e470ed49ef00d5692484b4f31cb9f
|
File details
Details for the file pydepguardnext-2.0.2-py3-none-any.whl.
File metadata
- Download URL: pydepguardnext-2.0.2-py3-none-any.whl
- Upload date:
- Size: 41.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
638d0899af417ccb273613715bdf06a460492bbad45da10090032334b1fee2cb
|
|
| MD5 |
f15f83fa16d77556c3c8cec820e1b9ba
|
|
| BLAKE2b-256 |
5cb15e4d21988b5f674aba423e7ab99ad453df8863b1792ab24eccbba90fee0e
|