Skip to main content

PyDepGuard (Next): A gatekeeper dependency validator for Python scripts. Beta branch for new features

Project description

PyDepGuard: Python's first secure runtime attestation framework

New to current version:

  • ea8081f - latest - Added Temporal Timeboxing wrapper to all functions. This can reject calls if they fall outside accepted window, and will be controllable through PYDEP_SEC_TIMING
  • 2e718c7 - Signed functions with signature in .sigstore + GPG Signed package

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

  1. Python 3.11+ officially supported (built on 3.12). May work on 3.10 and earlier, but not guaranteed.
  2. 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 (done)
  • ✅ Interpreter and venv hashes checked at runtime
  • ✅ Public key embedded for function signature validation (done)
  • ✅ Audit log written for each detection: pydepguard_audit.log and pydepguard.log
  • ✅ No 3rd party runtime deps. All functionality from Python's stdlib.

🔐 GPG Signing

Releases are signed with the following GPG key:

You can verify downloaded artifacts using:

gpg --recv-keys CEC368E9E8F669B8
gpg --verify pydepguardnext-<version>.tar.gz.asc pydepguardnext-<version>.tar.gz

tip: Even the function signature database is verifiable as a .sigstore.asc is included at the root of the package.

Current Capabilities

Currently, PyDepGuard can:

  • Analyze and install missing dependencies on a script, EVEN if you don't have requirements.txt or other package management files.
    • No requirements.txt? No problem. This isn't metadata guessing, PyDepGuard reads your script with deep AST introspection and tells you exactly what’s needed.
  • Parse a Python script using ast static 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 ast introspection, 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:

  1. The host interpreter has been compromised (or replaced)
  2. You burn a zero-day in CPython itself
  3. You have pre-execution root access
  4. 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/24/2025

Below is a real test output of PyDepGuard's init process:

Running pytest with args: ['-p', 'vscode_pytest', '--rootdir=c:\\Users\\Ikari\\pylock\\pylock-dependency-lockfile', '--capture=no', 'c:\\Users\\Ikari\\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\Ikari\pylock\pylock-dependency-lockfile
configfile: pytest.ini
plugins: anyio-4.9.0, cov-6.2.1
collected 1 item

tests\test_pydepguard_init.py [0.0] [INIT] [pydepguard] Integrity Check UUID: 20537c11-a5df-43d0-b9df-847383fe427f
[0.04114079475402832] [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: Ikari
  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\Ikari\pylock\pylock-dependency-lockfile\.venv\Scripts\python.exe
  python_interpreter_hash: 864530d708039551a2c672ddd65e5900fbc08b0981479679723a5b468f8082bc
  executable: c:\Users\Ikari\pylock\pylock-dependency-lockfile\.venv\Scripts\python.exe
  cwd: c:\Users\Ikari\pylock\pylock-dependency-lockfile
  pydepguard_package: pydepguardnext
  pydepguard_version: 2.0.3
[0.04114079475402832] [INIT] Fingerprint hash: 288537ac19bd48b159bd63b1c02a95b2833ac4c28eebf72f670c8b076fec39c6
[0.04114079475402832] [INIT] [pydepguard] Bullshit Detection System activating.
[0.04220938682556152] [INTEGRITY] [api.runtime.integrity] [20537c11-a5df-43d0-b9df-847383fe427f] Absolute last moment of system not sealed at global time:  0.0422 seconds.
[0.04220938682556152] [INTEGRITY] [api.runtime.integrity] [20537c11-a5df-43d0-b9df-847383fe427f] Runtime sealed in 0.001069 seconds.
[0.044380903244018555] [INTEGRITY] [api.runtime.integrity] [20537c11-a5df-43d0-b9df-847383fe427f] Background integrity patrol started at 2025-06-24T15:12:54.661716+00:00 (Global time: 0.0444 seconds). Timedelta from JIT lock to watchdog activation: 0.002172 seconds.
[0.044380903244018555] [INTEGRITY] [api.runtime.integrity] [20537c11-a5df-43d0-b9df-847383fe427f] WATCHDOG PROVISIONED: {'_background_integrity_patrol', '_background_rpng_check'}
[0.044380903244018555] [INTEGRITY] [api.runtime.integrity] [20537c11-a5df-43d0-b9df-847383fe427f] WATCHDOG THREADS: [<Thread(IntegrityPatrolThread0570f5d453467a0594a9401cf2807e2e, started daemon 36776)>, <Thread(IntegrityPatrolThreada98998a47640b2d2bdb97cb1633817f0, started daemon 16864)>, <Thread(IntegrityPatrolThreadf964bd75b14b4eb333ca4b94911f55da, started daemon 14324)>, <Thread(IntegrityPatrolThread25fa0526e43a89ba40eb78ddc46b11fa, started daemon 45328)>]
[0.044380903244018555] [INIT] [pydepguard] [20537c11-a5df-43d0-b9df-847383fe427f] Background integrity patrol started.
[0.044380903244018555] [INIT] [pydepguard] [20537c11-a5df-43d0-b9df-847383fe427f] First check: 0.044909 seconds. JIT Integrity Check Snapshot: {'importer._patched_import': 2802425433280, 'importer._patched_importlib_import_module': 2802425433600, 'importer.AutoInstallFinder': 2802411317152, 'logit.logit': 2802425432320, 'airjail.maximum_security': 2802425436480, 'airjail.disable_socket_access': 2802425436000, 'airjail.disable_file_write': 2802425435680, 'airjail.disable_network_access': 2802425435520, 'airjail.disable_urllib_requests': 2802425435840, 'airjail.block_ctypes': 2802424850976, 'airjail.enable_sandbox_open': 2802425380704, 'airjail.patch_environment_to_venv': 2802425436320, 'airjail.prepare_fakeroot': 2802425436640, 'api.runtime.integrity.run_integrity_check': 2802425431520, 'api.runtime.integrity.jit_check': 2802425430720, 'api.runtime.integrity.get_rpng_check': 2802425430880, 'api.runtime.integrity._background_integrity_patrol': 2802425431200, 'api.runtime.integrity._background_rpng_check': 2802425431040, 'api.runtime.integrity.start_patrol': 2802425431360, 'global_.jit_check_uuid': '20537c11-a5df-43d0-b9df-847383fe427f'}
[0.044909000396728516] [INIT] [pydepguard] [20537c11-a5df-43d0-b9df-847383fe427f] JIT Integrity Check complete. Starting SIGVERIFY Stage 2.
[0.1723766326904297] [INIT] [pydepguard] [20537c11-a5df-43d0-b9df-847383fe427f] SIGVERIFY Stage 2 complete. 55 of 55 functions verified.
[0.1723766326904297] [INIT] [pydepguard] [20537c11-a5df-43d0-b9df-847383fe427f] SIGVERIFY frozen in 0.125869 seconds.
[0.36044979095458984] [INIT] [pydepguard] [20537c11-a5df-43d0-b9df-847383fe427f]  Using override hash: last 10: dd6e5037e8... (dev mode only)
[0.3614521026611328] [INIT] [pydepguard] [20537c11-a5df-43d0-b9df-847383fe427f] Self-integrity check passed. Init complete. Total time: 0.361452 seconds.
.

============================== 1 passed in 0.45s ==============================

Yes, its that fast.

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:

  1. I can see who stars my repo. It makes me feel special 💟
  2. I can see aggregated results of who clicks on my repo and clones / reads contents therein
  3. I am able to monitor download stats by pypistats
  4. 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__.install blocks (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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pydepguardnext-2.0.4.tar.gz (74.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

pydepguardnext-2.0.4-py3-none-any.whl (51.7 kB view details)

Uploaded Python 3

File details

Details for the file pydepguardnext-2.0.4.tar.gz.

File metadata

  • Download URL: pydepguardnext-2.0.4.tar.gz
  • Upload date:
  • Size: 74.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.12.3

File hashes

Hashes for pydepguardnext-2.0.4.tar.gz
Algorithm Hash digest
SHA256 fbce2826195855ace137e86646e27a6933002b0318ac652f8959f4f024ade80a
MD5 001f1a2bad42ef1e72d5a8c3329f353f
BLAKE2b-256 e617c8d2777e5cd6ff9812080dd509ebd437e02f3c7d3da320ece45f21e3be43

See more details on using hashes here.

File details

Details for the file pydepguardnext-2.0.4-py3-none-any.whl.

File metadata

  • Download URL: pydepguardnext-2.0.4-py3-none-any.whl
  • Upload date:
  • Size: 51.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.12.3

File hashes

Hashes for pydepguardnext-2.0.4-py3-none-any.whl
Algorithm Hash digest
SHA256 f54f892131ffacca0c657e40592abcd2a732638cc600f109853751b351748310
MD5 3aef708cb65169ec34361f2ffb5f8855
BLAKE2b-256 66013b6abbf0deaa5c18e42b309eb2d90fafe343204e10d85a999bbb08f88e93

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page